diff --git a/.clang-format b/.clang-format index 61781842..4fc42bd4 100644 --- a/.clang-format +++ b/.clang-format @@ -4,7 +4,7 @@ AlignConsecutiveMacros: true AlignTrailingComments: true AllowAllParametersOfDeclarationOnNextLine: true AllowShortBlocksOnASingleLine: true -AllowShortCaseLabelsOnASingleLine: true +AllowShortCaseLabelsOnASingleLine: false AllowShortFunctionsOnASingleLine: All AllowShortIfStatementsOnASingleLine: true AlwaysBreakTemplateDeclarations: true @@ -23,9 +23,9 @@ DisableFormat: false IndentFunctionDeclarationAfterType: false IndentWidth: 2 KeepEmptyLinesAtTheStartOfBlocks: false -MaxEmptyLinesToKeep: 2 +MaxEmptyLinesToKeep: 1 NamespaceIndentation: All -PointerAlignment: Right +PointerAlignment: Left SpaceBeforeAssignmentOperators: true SpaceBeforeParens: ControlStatements SpaceInEmptyParentheses: false diff --git a/.rustfmt.toml b/.rustfmt.toml new file mode 100644 index 00000000..ad1465e4 --- /dev/null +++ b/.rustfmt.toml @@ -0,0 +1,10 @@ +# https://github.com/rust-lang/rustfmt/blob/master/Configurations.md + +# Stable Configs +chain_width = 0 +max_width = 120 +merge_derives = true +use_field_init_shorthand = true +use_try_shorthand = true + +# Unstable Configs diff --git a/benches/msm.rs b/benches/msm.rs index 24607398..c93ba208 100644 --- a/benches/msm.rs +++ b/benches/msm.rs @@ -34,16 +34,20 @@ fn bench_msm(c: &mut Criterion) { #[cfg(feature = "g2")] let mut d_g2_points = DeviceBuffer::from_slice(&g2_batch_points[..]).unwrap(); - group.sample_size(30).bench_function( - &format!("MSM of size 2^{} in batch {}", log_msm_size, batch_size), - |b| b.iter(|| commit_batch_bls12_381(&mut d_points, &mut d_scalars, batch_size)), - ); + group + .sample_size(30) + .bench_function( + &format!("MSM of size 2^{} in batch {}", log_msm_size, batch_size), + |b| b.iter(|| commit_batch_bls12_381(&mut d_points, &mut d_scalars, batch_size)), + ); #[cfg(feature = "g2")] - group.sample_size(10).bench_function( - &format!("G2 MSM of size 2^{} in batch {}", log_msm_size, batch_size), - |b| b.iter(|| commit_batch_g2(&mut d_g2_points, &mut d_scalars, batch_size)) - ); + group + .sample_size(10) + .bench_function( + &format!("G2 MSM of size 2^{} in batch {}", log_msm_size, batch_size), + |b| b.iter(|| commit_batch_g2(&mut d_g2_points, &mut d_scalars, batch_size)), + ); } } } diff --git a/benches/ntt.rs b/benches/ntt.rs index 70de5b14..7086e5e3 100644 --- a/benches/ntt.rs +++ b/benches/ntt.rs @@ -21,46 +21,59 @@ fn bench_ntt(c: &mut Criterion) { let (_, mut d_evals, mut d_domain) = set_up_scalars_bls12_381(ntt_size * batch_size, log_ntt_size, true); - group.sample_size(scalar_samples).bench_function( - &format!("Scalar NTT of size 2^{} in batch {}", log_ntt_size, batch_size), - |b| b.iter(|| evaluate_scalars_batch_bls12_381(&mut d_evals, &mut d_domain, batch_size)) - ); - - group.sample_size(scalar_samples).bench_function( - &format!("Scalar iNTT of size 2^{} in batch {}", log_ntt_size, batch_size), - |b| b.iter(|| interpolate_scalars_batch_bls12_381(&mut d_evals, &mut d_domain, batch_size)) - ); + group + .sample_size(scalar_samples) + .bench_function( + &format!("Scalar NTT of size 2^{} in batch {}", log_ntt_size, batch_size), + |b| b.iter(|| evaluate_scalars_batch_bls12_381(&mut d_evals, &mut d_domain, batch_size)), + ); - group.sample_size(scalar_samples).bench_function( - &format!("Scalar inplace NTT of size 2^{} in batch {}", log_ntt_size, batch_size), - |b| b.iter(|| ntt_inplace_batch_bls12_381(&mut d_evals, &mut d_domain, batch_size, false, 0)) - ); - - group.sample_size(scalar_samples).bench_function( - &format!("Scalar inplace iNTT of size 2^{} in batch {}", log_ntt_size, batch_size), - |b| b.iter(|| ntt_inplace_batch_bls12_381(&mut d_evals, &mut d_domain, batch_size, true, 0)) - ); + group + .sample_size(scalar_samples) + .bench_function( + &format!("Scalar iNTT of size 2^{} in batch {}", log_ntt_size, batch_size), + |b| b.iter(|| interpolate_scalars_batch_bls12_381(&mut d_evals, &mut d_domain, batch_size)), + ); + + group + .sample_size(scalar_samples) + .bench_function( + &format!("Scalar inplace NTT of size 2^{} in batch {}", log_ntt_size, batch_size), + |b| b.iter(|| ntt_inplace_batch_bls12_381(&mut d_evals, &mut d_domain, batch_size, false, 0)), + ); + + group + .sample_size(scalar_samples) + .bench_function( + &format!("Scalar inplace iNTT of size 2^{} in batch {}", log_ntt_size, batch_size), + |b| b.iter(|| ntt_inplace_batch_bls12_381(&mut d_evals, &mut d_domain, batch_size, true, 0)), + ); drop(d_evals); drop(d_domain); - if ntt_size * batch_size > 1 << 18{ + if ntt_size * batch_size > 1 << 18 { continue; } let point_samples = 10; - let (_, mut d_points_evals, mut d_domain) = set_up_points_bls12_381(ntt_size * batch_size, log_ntt_size, true); - - group.sample_size(point_samples).bench_function( - &format!("EC NTT of size 2^{} in batch {}", log_ntt_size, batch_size), - |b| b.iter(|| interpolate_points_batch_bls12_381(&mut d_points_evals, &mut d_domain, batch_size)) - ); + let (_, mut d_points_evals, mut d_domain) = + set_up_points_bls12_381(ntt_size * batch_size, log_ntt_size, true); - group.sample_size(point_samples).bench_function( - &format!("EC iNTT of size 2^{} in batch {}", log_ntt_size, batch_size), - |b| b.iter(|| evaluate_points_batch_bls12_381(&mut d_points_evals, &mut d_domain, batch_size)) - ); + group + .sample_size(point_samples) + .bench_function( + &format!("EC NTT of size 2^{} in batch {}", log_ntt_size, batch_size), + |b| b.iter(|| interpolate_points_batch_bls12_381(&mut d_points_evals, &mut d_domain, batch_size)), + ); + + group + .sample_size(point_samples) + .bench_function( + &format!("EC iNTT of size 2^{} in batch {}", log_ntt_size, batch_size), + |b| b.iter(|| evaluate_points_batch_bls12_381(&mut d_points_evals, &mut d_domain, batch_size)), + ); drop(d_points_evals); drop(d_domain); @@ -70,4 +83,3 @@ fn bench_ntt(c: &mut Criterion) { criterion_group!(ntt_benches, bench_ntt); criterion_main!(ntt_benches); - diff --git a/build.rs b/build.rs index 0a40fbd4..51973dce 100644 --- a/build.rs +++ b/build.rs @@ -26,8 +26,6 @@ fn main() { nvcc.debug(false); nvcc.flag(&arch); nvcc.flag(&stream); - nvcc.files([ - "./icicle/curves/index.cu", - ]); + nvcc.files(["./icicle/curves/index.cu"]); nvcc.compile("ingo_icicle"); //TODO: extension?? } diff --git a/curve_parameters/new_curve_script.py b/curve_parameters/new_curve_script.py index 923caf2a..2dd4e80a 100644 --- a/curve_parameters/new_curve_script.py +++ b/curve_parameters/new_curve_script.py @@ -204,14 +204,14 @@ newpath = f'./icicle/curves/{curve_name_lower}' if not os.path.exists(newpath): os.makedirs(newpath) -with open("./icicle/curves/curve_template/params.cuh", "r") as params_file: +with open("./icicle/curves/curve_template/params.cuh.tmpl", "r") as params_file: params_file_template = Template(params_file.read()) params = get_params(config) params_content = params_file_template.safe_substitute(params) with open(f'./icicle/curves/{curve_name_lower}/params.cuh', 'w') as f: f.write(params_content) -with open("./icicle/curves/curve_template/lde.cu", "r") as lde_file: +with open("./icicle/curves/curve_template/lde.cu.tmpl", "r") as lde_file: template_content = Template(lde_file.read()) lde_content = template_content.safe_substitute( CURVE_NAME_U=curve_name_upper, @@ -220,7 +220,7 @@ with open("./icicle/curves/curve_template/lde.cu", "r") as lde_file: with open(f'./icicle/curves/{curve_name_lower}/lde.cu', 'w') as f: f.write(lde_content) -with open("./icicle/curves/curve_template/msm.cu", "r") as msm_file: +with open("./icicle/curves/curve_template/msm.cu.tmpl", "r") as msm_file: template_content = Template(msm_file.read()) msm_content = template_content.safe_substitute( CURVE_NAME_U=curve_name_upper, @@ -229,7 +229,7 @@ with open("./icicle/curves/curve_template/msm.cu", "r") as msm_file: with open(f'./icicle/curves/{curve_name_lower}/msm.cu', 'w') as f: f.write(msm_content) -with open("./icicle/curves/curve_template/ve_mod_mult.cu", "r") as ve_mod_mult_file: +with open("./icicle/curves/curve_template/ve_mod_mult.cu.tmpl", "r") as ve_mod_mult_file: template_content = Template(ve_mod_mult_file.read()) ve_mod_mult_content = template_content.safe_substitute( CURVE_NAME_U=curve_name_upper, @@ -239,7 +239,7 @@ with open("./icicle/curves/curve_template/ve_mod_mult.cu", "r") as ve_mod_mult_f f.write(ve_mod_mult_content) -with open(f'./icicle/curves/curve_template/curve_config.cuh', 'r') as cc: +with open(f'./icicle/curves/curve_template/curve_config.cuh.tmpl', 'r') as cc: template_content = Template(cc.read()) cc_content = template_content.safe_substitute( CURVE_NAME_U=curve_name_upper, @@ -248,7 +248,7 @@ with open(f'./icicle/curves/curve_template/curve_config.cuh', 'r') as cc: f.write(cc_content) -with open(f'./icicle/curves/curve_template/projective.cu', 'r') as proj: +with open(f'./icicle/curves/curve_template/projective.cu.tmpl', 'r') as proj: template_content = Template(proj.read()) proj_content = template_content.safe_substitute( CURVE_NAME_U=curve_name_upper, @@ -258,7 +258,7 @@ with open(f'./icicle/curves/curve_template/projective.cu', 'r') as proj: f.write(proj_content) -with open(f'./icicle/curves/curve_template/supported_operations.cu', 'r') as supp_ops: +with open(f'./icicle/curves/curve_template/supported_operations.cu.tmpl', 'r') as supp_ops: template_content = Template(supp_ops.read()) supp_ops_content = template_content.safe_substitute() with open(f'./icicle/curves/{curve_name_lower}/supported_operations.cu', 'w') as f: diff --git a/examples/ntt/main.rs b/examples/ntt/main.rs index 4cde938f..50d6b05f 100644 --- a/examples/ntt/main.rs +++ b/examples/ntt/main.rs @@ -1,9 +1,6 @@ use std::time::Instant; -use icicle_utils::{ - curves::bls12_381::{Point_BLS12_381, ScalarField_BLS12_381}, - test_bls12_381::*, -}; +use icicle_utils::{curves::bls12_381::ScalarField_BLS12_381, test_bls12_381::*}; use rustacuda::prelude::DeviceBuffer; const LOG_NTT_SIZES: [usize; 3] = [20, 10, 9]; @@ -22,13 +19,7 @@ fn bench_lde() { d_twiddles: &mut DeviceBuffer, batch_size: usize, ) -> i32 { - ntt_inplace_batch_bls12_381( - d_inout, - d_twiddles, - batch_size, - false, - 0, - ); + ntt_inplace_batch_bls12_381(d_inout, d_twiddles, batch_size, false, 0); 0 } @@ -37,13 +28,7 @@ fn bench_lde() { d_twiddles: &mut DeviceBuffer, batch_size: usize, ) -> i32 { - ntt_inplace_batch_bls12_381( - d_inout, - d_twiddles, - batch_size, - true, - 0, - ); + ntt_inplace_batch_bls12_381(d_inout, d_twiddles, batch_size, true, 0); 0 } @@ -129,16 +114,8 @@ fn bench_ntt_template( ntt_size: usize, batch_size: usize, log_ntt_size: usize, - set_data: fn( - test_size: usize, - log_domain_size: usize, - inverse: bool, - ) -> (Vec, DeviceBuffer, DeviceBuffer), - bench_fn: fn( - d_evaluations: &mut DeviceBuffer, - d_domain: &mut DeviceBuffer, - batch_size: usize, - ) -> R, + set_data: fn(test_size: usize, log_domain_size: usize, inverse: bool) -> (Vec, DeviceBuffer, DeviceBuffer), + bench_fn: fn(d_evaluations: &mut DeviceBuffer, d_domain: &mut DeviceBuffer, batch_size: usize) -> R, id: &str, inverse: bool, samples: usize, @@ -159,7 +136,7 @@ fn bench_ntt_template( let first = bench_fn(&mut d_evals, &mut d_domain, batch_size); let start = Instant::now(); - for i in 0..samples { + for _ in 0..samples { bench_fn(&mut d_evals, &mut d_domain, batch_size); } let elapsed = start.elapsed(); diff --git a/goicicle/curves/bls12377/include/msm.h b/goicicle/curves/bls12377/include/msm.h index c9ab6e20..b9de09a8 100644 --- a/goicicle/curves/bls12377/include/msm.h +++ b/goicicle/curves/bls12377/include/msm.h @@ -1,23 +1,23 @@ - // Copyright 2023 Ingonyama - // - // 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. - +// Copyright 2023 Ingonyama +// +// 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. + // Code generated by Ingonyama DO NOT EDIT -#include #include #include +#include // msm.h #ifndef _BLS12_377_MSM_H @@ -35,24 +35,61 @@ typedef struct BLS12_377_g2_affine_t BLS12_377_g2_affine_t; typedef struct BLS12_377_scalar_t BLS12_377_scalar_t; typedef cudaStream_t CudaStream_t; -int msm_cuda_bls12_377(BLS12_377_projective_t* out, BLS12_377_affine_t* points, - BLS12_377_scalar_t* scalars, size_t count, size_t device_id); +int msm_cuda_bls12_377( + BLS12_377_projective_t* out, BLS12_377_affine_t* points, BLS12_377_scalar_t* scalars, size_t count, size_t device_id); -int msm_batch_cuda_bls12_377(BLS12_377_projective_t* out, BLS12_377_affine_t* points, - BLS12_377_scalar_t* scalars, size_t batch_size, - size_t msm_size, size_t device_id); +int msm_batch_cuda_bls12_377( + BLS12_377_projective_t* out, + BLS12_377_affine_t* points, + BLS12_377_scalar_t* scalars, + size_t batch_size, + size_t msm_size, + size_t device_id); -int commit_cuda_bls12_377(BLS12_377_projective_t* d_out, BLS12_377_scalar_t* d_scalars, - BLS12_377_affine_t* d_points, size_t count, unsigned large_bucket_factor, size_t device_id); +int commit_cuda_bls12_377( + BLS12_377_projective_t* d_out, + BLS12_377_scalar_t* d_scalars, + BLS12_377_affine_t* d_points, + size_t count, + unsigned large_bucket_factor, + size_t device_id); -int commit_batch_cuda_bls12_377(BLS12_377_projective_t* d_out, BLS12_377_scalar_t* d_scalars, - BLS12_377_affine_t* d_points, size_t count, - size_t batch_size, size_t device_id); +int commit_batch_cuda_bls12_377( + BLS12_377_projective_t* d_out, + BLS12_377_scalar_t* d_scalars, + BLS12_377_affine_t* d_points, + size_t count, + size_t batch_size, + size_t device_id); -int msm_g2_cuda_bls12_377(BLS12_377_g2_projective_t *out, BLS12_377_g2_affine_t* points, BLS12_377_scalar_t* scalars, size_t count, size_t device_id); -int msm_batch_g2_cuda_bls12_377(BLS12_377_g2_projective_t* out, BLS12_377_g2_affine_t* points, BLS12_377_scalar_t* scalars, size_t batch_size, size_t msm_size, size_t device_id); -int commit_g2_cuda_bls12_377(BLS12_377_g2_projective_t* d_out, BLS12_377_scalar_t* d_scalars, BLS12_377_g2_affine_t* d_points, size_t count, unsigned large_bucket_factor, size_t device_id); -int commit_batch_g2_cuda_bls12_377(BLS12_377_g2_projective_t* d_out, BLS12_377_scalar_t* d_scalars, BLS12_377_g2_affine_t* d_points, size_t count, size_t batch_size, size_t device_id, cudaStream_t stream); +int msm_g2_cuda_bls12_377( + BLS12_377_g2_projective_t* out, + BLS12_377_g2_affine_t* points, + BLS12_377_scalar_t* scalars, + size_t count, + size_t device_id); +int msm_batch_g2_cuda_bls12_377( + BLS12_377_g2_projective_t* out, + BLS12_377_g2_affine_t* points, + BLS12_377_scalar_t* scalars, + size_t batch_size, + size_t msm_size, + size_t device_id); +int commit_g2_cuda_bls12_377( + BLS12_377_g2_projective_t* d_out, + BLS12_377_scalar_t* d_scalars, + BLS12_377_g2_affine_t* d_points, + size_t count, + unsigned large_bucket_factor, + size_t device_id); +int commit_batch_g2_cuda_bls12_377( + BLS12_377_g2_projective_t* d_out, + BLS12_377_scalar_t* d_scalars, + BLS12_377_g2_affine_t* d_points, + size_t count, + size_t batch_size, + size_t device_id, + cudaStream_t stream); #ifdef __cplusplus } diff --git a/goicicle/curves/bls12377/include/ntt.h b/goicicle/curves/bls12377/include/ntt.h index ba9fa43d..14f85953 100644 --- a/goicicle/curves/bls12377/include/ntt.h +++ b/goicicle/curves/bls12377/include/ntt.h @@ -1,22 +1,22 @@ - // Copyright 2023 Ingonyama - // - // 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. - +// Copyright 2023 Ingonyama +// +// 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. + // Code generated by Ingonyama DO NOT EDIT -#include #include +#include // ntt.h #ifndef _BLS12_377_NTT_H @@ -34,34 +34,145 @@ typedef struct BLS12_377_scalar_t BLS12_377_scalar_t; typedef struct BLS12_377_g2_projective_t BLS12_377_g2_projective_t; typedef struct BLS12_377_g2_affine_t BLS12_377_g2_affine_t; -int ntt_cuda_bls12_377(BLS12_377_scalar_t *arr, uint32_t n, bool inverse, size_t decimation, size_t device_id); -int ntt_batch_cuda_bls12_377(BLS12_377_scalar_t *arr, uint32_t arr_size, uint32_t batch_size, bool inverse, size_t device_id); +int ntt_cuda_bls12_377(BLS12_377_scalar_t* arr, uint32_t n, bool inverse, size_t decimation, size_t device_id); +int ntt_batch_cuda_bls12_377( + BLS12_377_scalar_t* arr, uint32_t arr_size, uint32_t batch_size, bool inverse, size_t device_id); -int ecntt_cuda_bls12_377(BLS12_377_projective_t *arr, uint32_t n, bool inverse, size_t device_id); -int ecntt_batch_cuda_bls12_377(BLS12_377_projective_t *arr, uint32_t arr_size, uint32_t batch_size, bool inverse, size_t device_id); +int ecntt_cuda_bls12_377(BLS12_377_projective_t* arr, uint32_t n, bool inverse, size_t device_id); +int ecntt_batch_cuda_bls12_377( + BLS12_377_projective_t* arr, uint32_t arr_size, uint32_t batch_size, bool inverse, size_t device_id); - -BLS12_377_scalar_t* build_domain_cuda_bls12_377(uint32_t domain_size, uint32_t logn, bool inverse, size_t device_id, size_t stream); -int interpolate_scalars_cuda_bls12_377(BLS12_377_scalar_t* d_out, BLS12_377_scalar_t *d_evaluations, BLS12_377_scalar_t *d_domain, unsigned n, unsigned device_id, size_t stream); -int interpolate_scalars_batch_cuda_bls12_377(BLS12_377_scalar_t* d_out, BLS12_377_scalar_t* d_evaluations, BLS12_377_scalar_t* d_domain, unsigned n, unsigned batch_size, size_t device_id, size_t stream); -int interpolate_points_cuda_bls12_377(BLS12_377_projective_t* d_out, BLS12_377_projective_t *d_evaluations, BLS12_377_scalar_t *d_domain, unsigned n, size_t device_id, size_t stream); -int interpolate_points_batch_cuda_bls12_377(BLS12_377_projective_t* d_out, BLS12_377_projective_t* d_evaluations, BLS12_377_scalar_t* d_domain,unsigned n, unsigned batch_size, size_t device_id, size_t stream); -int interpolate_scalars_on_coset_cuda_bls12_377(BLS12_377_scalar_t* d_out, BLS12_377_scalar_t* d_evaluations, BLS12_377_scalar_t* d_domain, unsigned n, BLS12_377_scalar_t* coset_powers, size_t device_id, size_t stream); -int interpolate_scalars_batch_on_coset_cuda_bls12_377(BLS12_377_scalar_t* d_out, BLS12_377_scalar_t* d_evaluations, BLS12_377_scalar_t* d_domain, unsigned n, unsigned batch_size, BLS12_377_scalar_t* coset_powers, size_t device_id, size_t stream); -int evaluate_scalars_cuda_bls12_377(BLS12_377_scalar_t* d_out, BLS12_377_scalar_t *d_coefficients, BLS12_377_scalar_t *d_domain, unsigned domain_size, unsigned n, unsigned device_id, size_t stream); -int evaluate_scalars_batch_cuda_bls12_377(BLS12_377_scalar_t* d_out, BLS12_377_scalar_t* d_coefficients, BLS12_377_scalar_t* d_domain, unsigned domain_size,unsigned n, unsigned batch_size, size_t device_id, size_t stream); -int evaluate_points_cuda_bls12_377(BLS12_377_projective_t* d_out, BLS12_377_projective_t *d_coefficients, BLS12_377_scalar_t *d_domain, unsigned domain_size, unsigned n, size_t device_id, size_t stream); -int evaluate_points_batch_cuda_bls12_377(BLS12_377_projective_t* d_out, BLS12_377_projective_t* d_coefficients, BLS12_377_scalar_t* d_domain, unsigned domain_size,unsigned n, unsigned batch_size, size_t device_id, size_t stream); -int evaluate_scalars_on_coset_cuda_bls12_377(BLS12_377_scalar_t* d_out, BLS12_377_scalar_t *d_coefficients, BLS12_377_scalar_t *d_domain, unsigned domain_size,unsigned n, BLS12_377_scalar_t *coset_powers, unsigned device_id, size_t stream); -int evaluate_scalars_on_coset_batch_cuda_bls12_377(BLS12_377_scalar_t* d_out, BLS12_377_scalar_t* d_coefficients, BLS12_377_scalar_t* d_domain, unsigned domain_size, unsigned n, unsigned batch_size, BLS12_377_scalar_t *coset_powers, size_t device_id, size_t stream); -int evaluate_points_on_coset_cuda_bls12_377(BLS12_377_projective_t* d_out, BLS12_377_projective_t *d_coefficients, BLS12_377_scalar_t *d_domain, unsigned domain_size,unsigned n, BLS12_377_scalar_t *coset_powers, size_t device_id, size_t stream); -int evaluate_points_on_coset_batch_cuda_bls12_377(BLS12_377_projective_t* d_out, BLS12_377_projective_t* d_coefficients, BLS12_377_scalar_t* d_domain, unsigned domain_size, unsigned n, unsigned batch_size, BLS12_377_scalar_t *coset_powers, size_t device_id, size_t stream); +BLS12_377_scalar_t* +build_domain_cuda_bls12_377(uint32_t domain_size, uint32_t logn, bool inverse, size_t device_id, size_t stream); +int interpolate_scalars_cuda_bls12_377( + BLS12_377_scalar_t* d_out, + BLS12_377_scalar_t* d_evaluations, + BLS12_377_scalar_t* d_domain, + unsigned n, + unsigned device_id, + size_t stream); +int interpolate_scalars_batch_cuda_bls12_377( + BLS12_377_scalar_t* d_out, + BLS12_377_scalar_t* d_evaluations, + BLS12_377_scalar_t* d_domain, + unsigned n, + unsigned batch_size, + size_t device_id, + size_t stream); +int interpolate_points_cuda_bls12_377( + BLS12_377_projective_t* d_out, + BLS12_377_projective_t* d_evaluations, + BLS12_377_scalar_t* d_domain, + unsigned n, + size_t device_id, + size_t stream); +int interpolate_points_batch_cuda_bls12_377( + BLS12_377_projective_t* d_out, + BLS12_377_projective_t* d_evaluations, + BLS12_377_scalar_t* d_domain, + unsigned n, + unsigned batch_size, + size_t device_id, + size_t stream); +int interpolate_scalars_on_coset_cuda_bls12_377( + BLS12_377_scalar_t* d_out, + BLS12_377_scalar_t* d_evaluations, + BLS12_377_scalar_t* d_domain, + unsigned n, + BLS12_377_scalar_t* coset_powers, + size_t device_id, + size_t stream); +int interpolate_scalars_batch_on_coset_cuda_bls12_377( + BLS12_377_scalar_t* d_out, + BLS12_377_scalar_t* d_evaluations, + BLS12_377_scalar_t* d_domain, + unsigned n, + unsigned batch_size, + BLS12_377_scalar_t* coset_powers, + size_t device_id, + size_t stream); +int evaluate_scalars_cuda_bls12_377( + BLS12_377_scalar_t* d_out, + BLS12_377_scalar_t* d_coefficients, + BLS12_377_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned device_id, + size_t stream); +int evaluate_scalars_batch_cuda_bls12_377( + BLS12_377_scalar_t* d_out, + BLS12_377_scalar_t* d_coefficients, + BLS12_377_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + size_t device_id, + size_t stream); +int evaluate_points_cuda_bls12_377( + BLS12_377_projective_t* d_out, + BLS12_377_projective_t* d_coefficients, + BLS12_377_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + size_t device_id, + size_t stream); +int evaluate_points_batch_cuda_bls12_377( + BLS12_377_projective_t* d_out, + BLS12_377_projective_t* d_coefficients, + BLS12_377_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + size_t device_id, + size_t stream); +int evaluate_scalars_on_coset_cuda_bls12_377( + BLS12_377_scalar_t* d_out, + BLS12_377_scalar_t* d_coefficients, + BLS12_377_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + BLS12_377_scalar_t* coset_powers, + unsigned device_id, + size_t stream); +int evaluate_scalars_on_coset_batch_cuda_bls12_377( + BLS12_377_scalar_t* d_out, + BLS12_377_scalar_t* d_coefficients, + BLS12_377_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + BLS12_377_scalar_t* coset_powers, + size_t device_id, + size_t stream); +int evaluate_points_on_coset_cuda_bls12_377( + BLS12_377_projective_t* d_out, + BLS12_377_projective_t* d_coefficients, + BLS12_377_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + BLS12_377_scalar_t* coset_powers, + size_t device_id, + size_t stream); +int evaluate_points_on_coset_batch_cuda_bls12_377( + BLS12_377_projective_t* d_out, + BLS12_377_projective_t* d_coefficients, + BLS12_377_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + BLS12_377_scalar_t* coset_powers, + size_t device_id, + size_t stream); int reverse_order_scalars_cuda_bls12_377(BLS12_377_scalar_t* arr, int n, size_t device_id, size_t stream); -int reverse_order_scalars_batch_cuda_bls12_377(BLS12_377_scalar_t* arr, int n, int batch_size, size_t device_id, size_t stream); +int reverse_order_scalars_batch_cuda_bls12_377( + BLS12_377_scalar_t* arr, int n, int batch_size, size_t device_id, size_t stream); int reverse_order_points_cuda_bls12_377(BLS12_377_projective_t* arr, int n, size_t device_id, size_t stream); -int reverse_order_points_batch_cuda_bls12_377(BLS12_377_projective_t* arr, int n, int batch_size, size_t device_id, size_t stream); -int add_scalars_cuda_bls12_377(BLS12_377_scalar_t* d_out, BLS12_377_scalar_t* d_in1, BLS12_377_scalar_t* d_in2, unsigned n, size_t stream); -int sub_scalars_cuda_bls12_377(BLS12_377_scalar_t* d_out, BLS12_377_scalar_t* d_in1, BLS12_377_scalar_t* d_in2, unsigned n, size_t stream); +int reverse_order_points_batch_cuda_bls12_377( + BLS12_377_projective_t* arr, int n, int batch_size, size_t device_id, size_t stream); +int add_scalars_cuda_bls12_377( + BLS12_377_scalar_t* d_out, BLS12_377_scalar_t* d_in1, BLS12_377_scalar_t* d_in2, unsigned n, size_t stream); +int sub_scalars_cuda_bls12_377( + BLS12_377_scalar_t* d_out, BLS12_377_scalar_t* d_in1, BLS12_377_scalar_t* d_in2, unsigned n, size_t stream); int to_montgomery_scalars_cuda_bls12_377(BLS12_377_scalar_t* d_inout, unsigned n, size_t stream); int from_montgomery_scalars_cuda_bls12_377(BLS12_377_scalar_t* d_inout, unsigned n, size_t stream); diff --git a/goicicle/curves/bls12377/include/projective.h b/goicicle/curves/bls12377/include/projective.h index be15f233..c2024c9e 100644 --- a/goicicle/curves/bls12377/include/projective.h +++ b/goicicle/curves/bls12377/include/projective.h @@ -1,22 +1,22 @@ - // Copyright 2023 Ingonyama - // - // 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. - +// Copyright 2023 Ingonyama +// +// 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. + // Code generated by Ingonyama DO NOT EDIT -#include #include +#include // projective.h #ifdef __cplusplus @@ -24,25 +24,25 @@ extern "C" { #endif typedef struct BLS12_377_projective_t BLS12_377_projective_t; -typedef struct BLS12_377_g2_projective_t BLS12_377_g2_projective_t; +typedef struct BLS12_377_g2_projective_t BLS12_377_g2_projective_t; typedef struct BLS12_377_affine_t BLS12_377_affine_t; typedef struct BLS12_377_scalar_t BLS12_377_scalar_t; -bool projective_is_on_curve_bls12_377(BLS12_377_projective_t *point1); +bool projective_is_on_curve_bls12_377(BLS12_377_projective_t* point1); BLS12_377_scalar_t* random_scalar_bls12_377(); BLS12_377_projective_t* random_projective_bls12_377(); BLS12_377_projective_t* projective_zero_bls12_377(); -BLS12_377_affine_t* projective_to_affine_bls12_377(BLS12_377_projective_t *point1); -BLS12_377_projective_t* projective_from_affine_bls12_377(BLS12_377_affine_t *point1); +BLS12_377_affine_t* projective_to_affine_bls12_377(BLS12_377_projective_t* point1); +BLS12_377_projective_t* projective_from_affine_bls12_377(BLS12_377_affine_t* point1); BLS12_377_g2_projective_t* random_g2_projective_bls12_377(); -BLS12_377_affine_t* g2_projective_to_affine_bls12_377(BLS12_377_g2_projective_t *point1); -BLS12_377_g2_projective_t* g2_projective_from_affine_bls12_377(BLS12_377_affine_t *point1); -bool g2_projective_is_on_curve_bls12_377(BLS12_377_g2_projective_t *point1); +BLS12_377_affine_t* g2_projective_to_affine_bls12_377(BLS12_377_g2_projective_t* point1); +BLS12_377_g2_projective_t* g2_projective_from_affine_bls12_377(BLS12_377_affine_t* point1); +bool g2_projective_is_on_curve_bls12_377(BLS12_377_g2_projective_t* point1); -bool eq_bls12_377(BLS12_377_projective_t *point1, BLS12_377_projective_t *point2); -bool eq_g2_bls12_377(BLS12_377_g2_projective_t *point1, BLS12_377_g2_projective_t *point2); +bool eq_bls12_377(BLS12_377_projective_t* point1, BLS12_377_projective_t* point2); +bool eq_g2_bls12_377(BLS12_377_g2_projective_t* point1, BLS12_377_g2_projective_t* point2); #ifdef __cplusplus } diff --git a/goicicle/curves/bls12377/include/ve_mod_mult.h b/goicicle/curves/bls12377/include/ve_mod_mult.h index e1c5c5e8..b1cccf89 100644 --- a/goicicle/curves/bls12377/include/ve_mod_mult.h +++ b/goicicle/curves/bls12377/include/ve_mod_mult.h @@ -1,22 +1,22 @@ - // Copyright 2023 Ingonyama - // - // 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. - +// Copyright 2023 Ingonyama +// +// 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. + // Code generated by Ingonyama DO NOT EDIT -#include #include +#include // ve_mod_mult.h #ifndef _BLS12_377_VEC_MULT_H @@ -29,11 +29,18 @@ extern "C" { typedef struct BLS12_377_projective_t BLS12_377_projective_t; typedef struct BLS12_377_scalar_t BLS12_377_scalar_t; -int32_t vec_mod_mult_point_bls12_377(BLS12_377_projective_t *inout, BLS12_377_scalar_t *scalar_vec, size_t n_elments, size_t device_id); -int32_t vec_mod_mult_scalar_bls12_377(BLS12_377_scalar_t *inout, BLS12_377_scalar_t *scalar_vec, size_t n_elments, size_t device_id); -int32_t vec_mod_mult_device_scalar_bls12_377(BLS12_377_scalar_t *inout, BLS12_377_scalar_t *scalar_vec, size_t n_elements, size_t device_id); -int32_t matrix_vec_mod_mult_bls12_377(BLS12_377_scalar_t *matrix_flattened, BLS12_377_scalar_t *input, BLS12_377_scalar_t *output, size_t n_elments, size_t device_id); - +int32_t vec_mod_mult_point_bls12_377( + BLS12_377_projective_t* inout, BLS12_377_scalar_t* scalar_vec, size_t n_elments, size_t device_id); +int32_t vec_mod_mult_scalar_bls12_377( + BLS12_377_scalar_t* inout, BLS12_377_scalar_t* scalar_vec, size_t n_elments, size_t device_id); +int32_t vec_mod_mult_device_scalar_bls12_377( + BLS12_377_scalar_t* inout, BLS12_377_scalar_t* scalar_vec, size_t n_elements, size_t device_id); +int32_t matrix_vec_mod_mult_bls12_377( + BLS12_377_scalar_t* matrix_flattened, + BLS12_377_scalar_t* input, + BLS12_377_scalar_t* output, + size_t n_elments, + size_t device_id); #ifdef __cplusplus } diff --git a/goicicle/curves/bls12381/include/msm.h b/goicicle/curves/bls12381/include/msm.h index 379f5a4a..fe161275 100644 --- a/goicicle/curves/bls12381/include/msm.h +++ b/goicicle/curves/bls12381/include/msm.h @@ -1,23 +1,23 @@ - // Copyright 2023 Ingonyama - // - // 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. - +// Copyright 2023 Ingonyama +// +// 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. + // Code generated by Ingonyama DO NOT EDIT -#include #include #include +#include // msm.h #ifndef _BLS12_381_MSM_H @@ -35,24 +35,61 @@ typedef struct BLS12_381_g2_affine_t BLS12_381_g2_affine_t; typedef struct BLS12_381_scalar_t BLS12_381_scalar_t; typedef cudaStream_t CudaStream_t; -int msm_cuda_bls12_381(BLS12_381_projective_t* out, BLS12_381_affine_t* points, - BLS12_381_scalar_t* scalars, size_t count, size_t device_id); +int msm_cuda_bls12_381( + BLS12_381_projective_t* out, BLS12_381_affine_t* points, BLS12_381_scalar_t* scalars, size_t count, size_t device_id); -int msm_batch_cuda_bls12_381(BLS12_381_projective_t* out, BLS12_381_affine_t* points, - BLS12_381_scalar_t* scalars, size_t batch_size, - size_t msm_size, size_t device_id); +int msm_batch_cuda_bls12_381( + BLS12_381_projective_t* out, + BLS12_381_affine_t* points, + BLS12_381_scalar_t* scalars, + size_t batch_size, + size_t msm_size, + size_t device_id); -int commit_cuda_bls12_381(BLS12_381_projective_t* d_out, BLS12_381_scalar_t* d_scalars, - BLS12_381_affine_t* d_points, size_t count, unsigned large_bucket_factor, size_t device_id); +int commit_cuda_bls12_381( + BLS12_381_projective_t* d_out, + BLS12_381_scalar_t* d_scalars, + BLS12_381_affine_t* d_points, + size_t count, + unsigned large_bucket_factor, + size_t device_id); -int commit_batch_cuda_bls12_381(BLS12_381_projective_t* d_out, BLS12_381_scalar_t* d_scalars, - BLS12_381_affine_t* d_points, size_t count, - size_t batch_size, size_t device_id); +int commit_batch_cuda_bls12_381( + BLS12_381_projective_t* d_out, + BLS12_381_scalar_t* d_scalars, + BLS12_381_affine_t* d_points, + size_t count, + size_t batch_size, + size_t device_id); -int msm_g2_cuda_bls12_381(BLS12_381_g2_projective_t *out, BLS12_381_g2_affine_t* points, BLS12_381_scalar_t* scalars, size_t count, size_t device_id); -int msm_batch_g2_cuda_bls12_381(BLS12_381_g2_projective_t* out, BLS12_381_g2_affine_t* points, BLS12_381_scalar_t* scalars, size_t batch_size, size_t msm_size, size_t device_id); -int commit_g2_cuda_bls12_381(BLS12_381_g2_projective_t* d_out, BLS12_381_scalar_t* d_scalars, BLS12_381_g2_affine_t* d_points, size_t count, unsigned large_bucket_factor, size_t device_id); -int commit_batch_g2_cuda_bls12_381(BLS12_381_g2_projective_t* d_out, BLS12_381_scalar_t* d_scalars, BLS12_381_g2_affine_t* d_points, size_t count, size_t batch_size, size_t device_id, cudaStream_t stream); +int msm_g2_cuda_bls12_381( + BLS12_381_g2_projective_t* out, + BLS12_381_g2_affine_t* points, + BLS12_381_scalar_t* scalars, + size_t count, + size_t device_id); +int msm_batch_g2_cuda_bls12_381( + BLS12_381_g2_projective_t* out, + BLS12_381_g2_affine_t* points, + BLS12_381_scalar_t* scalars, + size_t batch_size, + size_t msm_size, + size_t device_id); +int commit_g2_cuda_bls12_381( + BLS12_381_g2_projective_t* d_out, + BLS12_381_scalar_t* d_scalars, + BLS12_381_g2_affine_t* d_points, + size_t count, + unsigned large_bucket_factor, + size_t device_id); +int commit_batch_g2_cuda_bls12_381( + BLS12_381_g2_projective_t* d_out, + BLS12_381_scalar_t* d_scalars, + BLS12_381_g2_affine_t* d_points, + size_t count, + size_t batch_size, + size_t device_id, + cudaStream_t stream); #ifdef __cplusplus } diff --git a/goicicle/curves/bls12381/include/ntt.h b/goicicle/curves/bls12381/include/ntt.h index cab0da73..f394a587 100644 --- a/goicicle/curves/bls12381/include/ntt.h +++ b/goicicle/curves/bls12381/include/ntt.h @@ -1,22 +1,22 @@ - // Copyright 2023 Ingonyama - // - // 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. - +// Copyright 2023 Ingonyama +// +// 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. + // Code generated by Ingonyama DO NOT EDIT -#include #include +#include // ntt.h #ifndef _BLS12_381_NTT_H @@ -34,34 +34,145 @@ typedef struct BLS12_381_scalar_t BLS12_381_scalar_t; typedef struct BLS12_381_g2_projective_t BLS12_381_g2_projective_t; typedef struct BLS12_381_g2_affine_t BLS12_381_g2_affine_t; -int ntt_cuda_bls12_381(BLS12_381_scalar_t *arr, uint32_t n, bool inverse, size_t decimation, size_t device_id); -int ntt_batch_cuda_bls12_381(BLS12_381_scalar_t *arr, uint32_t arr_size, uint32_t batch_size, bool inverse, size_t device_id); +int ntt_cuda_bls12_381(BLS12_381_scalar_t* arr, uint32_t n, bool inverse, size_t decimation, size_t device_id); +int ntt_batch_cuda_bls12_381( + BLS12_381_scalar_t* arr, uint32_t arr_size, uint32_t batch_size, bool inverse, size_t device_id); -int ecntt_cuda_bls12_381(BLS12_381_projective_t *arr, uint32_t n, bool inverse, size_t device_id); -int ecntt_batch_cuda_bls12_381(BLS12_381_projective_t *arr, uint32_t arr_size, uint32_t batch_size, bool inverse, size_t device_id); +int ecntt_cuda_bls12_381(BLS12_381_projective_t* arr, uint32_t n, bool inverse, size_t device_id); +int ecntt_batch_cuda_bls12_381( + BLS12_381_projective_t* arr, uint32_t arr_size, uint32_t batch_size, bool inverse, size_t device_id); - -BLS12_381_scalar_t* build_domain_cuda_bls12_381(uint32_t domain_size, uint32_t logn, bool inverse, size_t device_id, size_t stream); -int interpolate_scalars_cuda_bls12_381(BLS12_381_scalar_t* d_out, BLS12_381_scalar_t *d_evaluations, BLS12_381_scalar_t *d_domain, unsigned n, unsigned device_id, size_t stream); -int interpolate_scalars_batch_cuda_bls12_381(BLS12_381_scalar_t* d_out, BLS12_381_scalar_t* d_evaluations, BLS12_381_scalar_t* d_domain, unsigned n, unsigned batch_size, size_t device_id, size_t stream); -int interpolate_points_cuda_bls12_381(BLS12_381_projective_t* d_out, BLS12_381_projective_t *d_evaluations, BLS12_381_scalar_t *d_domain, unsigned n, size_t device_id, size_t stream); -int interpolate_points_batch_cuda_bls12_381(BLS12_381_projective_t* d_out, BLS12_381_projective_t* d_evaluations, BLS12_381_scalar_t* d_domain,unsigned n, unsigned batch_size, size_t device_id, size_t stream); -int interpolate_scalars_on_coset_cuda_bls12_381(BLS12_381_scalar_t* d_out, BLS12_381_scalar_t* d_evaluations, BLS12_381_scalar_t* d_domain, unsigned n, BLS12_381_scalar_t* coset_powers, size_t device_id, size_t stream); -int interpolate_scalars_batch_on_coset_cuda_bls12_381(BLS12_381_scalar_t* d_out, BLS12_381_scalar_t* d_evaluations, BLS12_381_scalar_t* d_domain, unsigned n, unsigned batch_size, BLS12_381_scalar_t* coset_powers, size_t device_id, size_t stream); -int evaluate_scalars_cuda_bls12_381(BLS12_381_scalar_t* d_out, BLS12_381_scalar_t *d_coefficients, BLS12_381_scalar_t *d_domain, unsigned domain_size, unsigned n, unsigned device_id, size_t stream); -int evaluate_scalars_batch_cuda_bls12_381(BLS12_381_scalar_t* d_out, BLS12_381_scalar_t* d_coefficients, BLS12_381_scalar_t* d_domain, unsigned domain_size,unsigned n, unsigned batch_size, size_t device_id, size_t stream); -int evaluate_points_cuda_bls12_381(BLS12_381_projective_t* d_out, BLS12_381_projective_t *d_coefficients, BLS12_381_scalar_t *d_domain, unsigned domain_size, unsigned n, size_t device_id, size_t stream); -int evaluate_points_batch_cuda_bls12_381(BLS12_381_projective_t* d_out, BLS12_381_projective_t* d_coefficients, BLS12_381_scalar_t* d_domain, unsigned domain_size,unsigned n, unsigned batch_size, size_t device_id, size_t stream); -int evaluate_scalars_on_coset_cuda_bls12_381(BLS12_381_scalar_t* d_out, BLS12_381_scalar_t *d_coefficients, BLS12_381_scalar_t *d_domain, unsigned domain_size,unsigned n, BLS12_381_scalar_t *coset_powers, unsigned device_id, size_t stream); -int evaluate_scalars_on_coset_batch_cuda_bls12_381(BLS12_381_scalar_t* d_out, BLS12_381_scalar_t* d_coefficients, BLS12_381_scalar_t* d_domain, unsigned domain_size, unsigned n, unsigned batch_size, BLS12_381_scalar_t *coset_powers, size_t device_id, size_t stream); -int evaluate_points_on_coset_cuda_bls12_381(BLS12_381_projective_t* d_out, BLS12_381_projective_t *d_coefficients, BLS12_381_scalar_t *d_domain, unsigned domain_size,unsigned n, BLS12_381_scalar_t *coset_powers, size_t device_id, size_t stream); -int evaluate_points_on_coset_batch_cuda_bls12_381(BLS12_381_projective_t* d_out, BLS12_381_projective_t* d_coefficients, BLS12_381_scalar_t* d_domain, unsigned domain_size, unsigned n, unsigned batch_size, BLS12_381_scalar_t *coset_powers, size_t device_id, size_t stream); +BLS12_381_scalar_t* +build_domain_cuda_bls12_381(uint32_t domain_size, uint32_t logn, bool inverse, size_t device_id, size_t stream); +int interpolate_scalars_cuda_bls12_381( + BLS12_381_scalar_t* d_out, + BLS12_381_scalar_t* d_evaluations, + BLS12_381_scalar_t* d_domain, + unsigned n, + unsigned device_id, + size_t stream); +int interpolate_scalars_batch_cuda_bls12_381( + BLS12_381_scalar_t* d_out, + BLS12_381_scalar_t* d_evaluations, + BLS12_381_scalar_t* d_domain, + unsigned n, + unsigned batch_size, + size_t device_id, + size_t stream); +int interpolate_points_cuda_bls12_381( + BLS12_381_projective_t* d_out, + BLS12_381_projective_t* d_evaluations, + BLS12_381_scalar_t* d_domain, + unsigned n, + size_t device_id, + size_t stream); +int interpolate_points_batch_cuda_bls12_381( + BLS12_381_projective_t* d_out, + BLS12_381_projective_t* d_evaluations, + BLS12_381_scalar_t* d_domain, + unsigned n, + unsigned batch_size, + size_t device_id, + size_t stream); +int interpolate_scalars_on_coset_cuda_bls12_381( + BLS12_381_scalar_t* d_out, + BLS12_381_scalar_t* d_evaluations, + BLS12_381_scalar_t* d_domain, + unsigned n, + BLS12_381_scalar_t* coset_powers, + size_t device_id, + size_t stream); +int interpolate_scalars_batch_on_coset_cuda_bls12_381( + BLS12_381_scalar_t* d_out, + BLS12_381_scalar_t* d_evaluations, + BLS12_381_scalar_t* d_domain, + unsigned n, + unsigned batch_size, + BLS12_381_scalar_t* coset_powers, + size_t device_id, + size_t stream); +int evaluate_scalars_cuda_bls12_381( + BLS12_381_scalar_t* d_out, + BLS12_381_scalar_t* d_coefficients, + BLS12_381_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned device_id, + size_t stream); +int evaluate_scalars_batch_cuda_bls12_381( + BLS12_381_scalar_t* d_out, + BLS12_381_scalar_t* d_coefficients, + BLS12_381_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + size_t device_id, + size_t stream); +int evaluate_points_cuda_bls12_381( + BLS12_381_projective_t* d_out, + BLS12_381_projective_t* d_coefficients, + BLS12_381_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + size_t device_id, + size_t stream); +int evaluate_points_batch_cuda_bls12_381( + BLS12_381_projective_t* d_out, + BLS12_381_projective_t* d_coefficients, + BLS12_381_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + size_t device_id, + size_t stream); +int evaluate_scalars_on_coset_cuda_bls12_381( + BLS12_381_scalar_t* d_out, + BLS12_381_scalar_t* d_coefficients, + BLS12_381_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + BLS12_381_scalar_t* coset_powers, + unsigned device_id, + size_t stream); +int evaluate_scalars_on_coset_batch_cuda_bls12_381( + BLS12_381_scalar_t* d_out, + BLS12_381_scalar_t* d_coefficients, + BLS12_381_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + BLS12_381_scalar_t* coset_powers, + size_t device_id, + size_t stream); +int evaluate_points_on_coset_cuda_bls12_381( + BLS12_381_projective_t* d_out, + BLS12_381_projective_t* d_coefficients, + BLS12_381_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + BLS12_381_scalar_t* coset_powers, + size_t device_id, + size_t stream); +int evaluate_points_on_coset_batch_cuda_bls12_381( + BLS12_381_projective_t* d_out, + BLS12_381_projective_t* d_coefficients, + BLS12_381_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + BLS12_381_scalar_t* coset_powers, + size_t device_id, + size_t stream); int reverse_order_scalars_cuda_bls12_381(BLS12_381_scalar_t* arr, int n, size_t device_id, size_t stream); -int reverse_order_scalars_batch_cuda_bls12_381(BLS12_381_scalar_t* arr, int n, int batch_size, size_t device_id, size_t stream); +int reverse_order_scalars_batch_cuda_bls12_381( + BLS12_381_scalar_t* arr, int n, int batch_size, size_t device_id, size_t stream); int reverse_order_points_cuda_bls12_381(BLS12_381_projective_t* arr, int n, size_t device_id, size_t stream); -int reverse_order_points_batch_cuda_bls12_381(BLS12_381_projective_t* arr, int n, int batch_size, size_t device_id, size_t stream); -int add_scalars_cuda_bls12_381(BLS12_381_scalar_t* d_out, BLS12_381_scalar_t* d_in1, BLS12_381_scalar_t* d_in2, unsigned n, size_t stream); -int sub_scalars_cuda_bls12_381(BLS12_381_scalar_t* d_out, BLS12_381_scalar_t* d_in1, BLS12_381_scalar_t* d_in2, unsigned n, size_t stream); +int reverse_order_points_batch_cuda_bls12_381( + BLS12_381_projective_t* arr, int n, int batch_size, size_t device_id, size_t stream); +int add_scalars_cuda_bls12_381( + BLS12_381_scalar_t* d_out, BLS12_381_scalar_t* d_in1, BLS12_381_scalar_t* d_in2, unsigned n, size_t stream); +int sub_scalars_cuda_bls12_381( + BLS12_381_scalar_t* d_out, BLS12_381_scalar_t* d_in1, BLS12_381_scalar_t* d_in2, unsigned n, size_t stream); int to_montgomery_scalars_cuda_bls12_381(BLS12_381_scalar_t* d_inout, unsigned n, size_t stream); int from_montgomery_scalars_cuda_bls12_381(BLS12_381_scalar_t* d_inout, unsigned n, size_t stream); diff --git a/goicicle/curves/bls12381/include/projective.h b/goicicle/curves/bls12381/include/projective.h index 1a9cee20..fcd07ec7 100644 --- a/goicicle/curves/bls12381/include/projective.h +++ b/goicicle/curves/bls12381/include/projective.h @@ -1,22 +1,22 @@ - // Copyright 2023 Ingonyama - // - // 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. - +// Copyright 2023 Ingonyama +// +// 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. + // Code generated by Ingonyama DO NOT EDIT -#include #include +#include // projective.h #ifdef __cplusplus @@ -24,25 +24,25 @@ extern "C" { #endif typedef struct BLS12_381_projective_t BLS12_381_projective_t; -typedef struct BLS12_381_g2_projective_t BLS12_381_g2_projective_t; +typedef struct BLS12_381_g2_projective_t BLS12_381_g2_projective_t; typedef struct BLS12_381_affine_t BLS12_381_affine_t; typedef struct BLS12_381_scalar_t BLS12_381_scalar_t; -bool projective_is_on_curve_bls12_381(BLS12_381_projective_t *point1); +bool projective_is_on_curve_bls12_381(BLS12_381_projective_t* point1); BLS12_381_scalar_t* random_scalar_bls12_381(); BLS12_381_projective_t* random_projective_bls12_381(); BLS12_381_projective_t* projective_zero_bls12_381(); -BLS12_381_affine_t* projective_to_affine_bls12_381(BLS12_381_projective_t *point1); -BLS12_381_projective_t* projective_from_affine_bls12_381(BLS12_381_affine_t *point1); +BLS12_381_affine_t* projective_to_affine_bls12_381(BLS12_381_projective_t* point1); +BLS12_381_projective_t* projective_from_affine_bls12_381(BLS12_381_affine_t* point1); BLS12_381_g2_projective_t* random_g2_projective_bls12_381(); -BLS12_381_affine_t* g2_projective_to_affine_bls12_381(BLS12_381_g2_projective_t *point1); -BLS12_381_g2_projective_t* g2_projective_from_affine_bls12_381(BLS12_381_affine_t *point1); -bool g2_projective_is_on_curve_bls12_381(BLS12_381_g2_projective_t *point1); +BLS12_381_affine_t* g2_projective_to_affine_bls12_381(BLS12_381_g2_projective_t* point1); +BLS12_381_g2_projective_t* g2_projective_from_affine_bls12_381(BLS12_381_affine_t* point1); +bool g2_projective_is_on_curve_bls12_381(BLS12_381_g2_projective_t* point1); -bool eq_bls12_381(BLS12_381_projective_t *point1, BLS12_381_projective_t *point2); -bool eq_g2_bls12_381(BLS12_381_g2_projective_t *point1, BLS12_381_g2_projective_t *point2); +bool eq_bls12_381(BLS12_381_projective_t* point1, BLS12_381_projective_t* point2); +bool eq_g2_bls12_381(BLS12_381_g2_projective_t* point1, BLS12_381_g2_projective_t* point2); #ifdef __cplusplus } diff --git a/goicicle/curves/bls12381/include/ve_mod_mult.h b/goicicle/curves/bls12381/include/ve_mod_mult.h index 4b050578..20eb5ad1 100644 --- a/goicicle/curves/bls12381/include/ve_mod_mult.h +++ b/goicicle/curves/bls12381/include/ve_mod_mult.h @@ -1,22 +1,22 @@ - // Copyright 2023 Ingonyama - // - // 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. - +// Copyright 2023 Ingonyama +// +// 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. + // Code generated by Ingonyama DO NOT EDIT -#include #include +#include // ve_mod_mult.h #ifndef _BLS12_381_VEC_MULT_H @@ -29,11 +29,18 @@ extern "C" { typedef struct BLS12_381_projective_t BLS12_381_projective_t; typedef struct BLS12_381_scalar_t BLS12_381_scalar_t; -int32_t vec_mod_mult_point_bls12_381(BLS12_381_projective_t *inout, BLS12_381_scalar_t *scalar_vec, size_t n_elments, size_t device_id); -int32_t vec_mod_mult_scalar_bls12_381(BLS12_381_scalar_t *inout, BLS12_381_scalar_t *scalar_vec, size_t n_elments, size_t device_id); -int32_t vec_mod_mult_device_scalar_bls12_381(BLS12_381_scalar_t *inout, BLS12_381_scalar_t *scalar_vec, size_t n_elements, size_t device_id); -int32_t matrix_vec_mod_mult_bls12_381(BLS12_381_scalar_t *matrix_flattened, BLS12_381_scalar_t *input, BLS12_381_scalar_t *output, size_t n_elments, size_t device_id); - +int32_t vec_mod_mult_point_bls12_381( + BLS12_381_projective_t* inout, BLS12_381_scalar_t* scalar_vec, size_t n_elments, size_t device_id); +int32_t vec_mod_mult_scalar_bls12_381( + BLS12_381_scalar_t* inout, BLS12_381_scalar_t* scalar_vec, size_t n_elments, size_t device_id); +int32_t vec_mod_mult_device_scalar_bls12_381( + BLS12_381_scalar_t* inout, BLS12_381_scalar_t* scalar_vec, size_t n_elements, size_t device_id); +int32_t matrix_vec_mod_mult_bls12_381( + BLS12_381_scalar_t* matrix_flattened, + BLS12_381_scalar_t* input, + BLS12_381_scalar_t* output, + size_t n_elments, + size_t device_id); #ifdef __cplusplus } diff --git a/goicicle/curves/bn254/include/msm.h b/goicicle/curves/bn254/include/msm.h index aeaf4c06..88c4bf34 100644 --- a/goicicle/curves/bn254/include/msm.h +++ b/goicicle/curves/bn254/include/msm.h @@ -1,23 +1,23 @@ - // Copyright 2023 Ingonyama - // - // 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. - +// Copyright 2023 Ingonyama +// +// 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. + // Code generated by Ingonyama DO NOT EDIT -#include #include #include +#include // msm.h #ifndef _BN254_MSM_H @@ -35,24 +35,57 @@ typedef struct BN254_g2_affine_t BN254_g2_affine_t; typedef struct BN254_scalar_t BN254_scalar_t; typedef cudaStream_t CudaStream_t; -int msm_cuda_bn254(BN254_projective_t* out, BN254_affine_t* points, - BN254_scalar_t* scalars, size_t count, size_t device_id); +int msm_cuda_bn254( + BN254_projective_t* out, BN254_affine_t* points, BN254_scalar_t* scalars, size_t count, size_t device_id); -int msm_batch_cuda_bn254(BN254_projective_t* out, BN254_affine_t* points, - BN254_scalar_t* scalars, size_t batch_size, - size_t msm_size, size_t device_id); +int msm_batch_cuda_bn254( + BN254_projective_t* out, + BN254_affine_t* points, + BN254_scalar_t* scalars, + size_t batch_size, + size_t msm_size, + size_t device_id); -int commit_cuda_bn254(BN254_projective_t* d_out, BN254_scalar_t* d_scalars, - BN254_affine_t* d_points, size_t count, unsigned large_bucket_factor, size_t device_id); +int commit_cuda_bn254( + BN254_projective_t* d_out, + BN254_scalar_t* d_scalars, + BN254_affine_t* d_points, + size_t count, + unsigned large_bucket_factor, + size_t device_id); -int commit_batch_cuda_bn254(BN254_projective_t* d_out, BN254_scalar_t* d_scalars, - BN254_affine_t* d_points, size_t count, - size_t batch_size, size_t device_id); +int commit_batch_cuda_bn254( + BN254_projective_t* d_out, + BN254_scalar_t* d_scalars, + BN254_affine_t* d_points, + size_t count, + size_t batch_size, + size_t device_id); -int msm_g2_cuda_bn254(BN254_g2_projective_t *out, BN254_g2_affine_t* points, BN254_scalar_t* scalars, size_t count, size_t device_id); -int msm_batch_g2_cuda_bn254(BN254_g2_projective_t* out, BN254_g2_affine_t* points, BN254_scalar_t* scalars, size_t batch_size, size_t msm_size, size_t device_id); -int commit_g2_cuda_bn254(BN254_g2_projective_t* d_out, BN254_scalar_t* d_scalars, BN254_g2_affine_t* d_points, size_t count, unsigned large_bucket_factor, size_t device_id); -int commit_batch_g2_cuda_bn254(BN254_g2_projective_t* d_out, BN254_scalar_t* d_scalars, BN254_g2_affine_t* d_points, size_t count, size_t batch_size, size_t device_id, cudaStream_t stream); +int msm_g2_cuda_bn254( + BN254_g2_projective_t* out, BN254_g2_affine_t* points, BN254_scalar_t* scalars, size_t count, size_t device_id); +int msm_batch_g2_cuda_bn254( + BN254_g2_projective_t* out, + BN254_g2_affine_t* points, + BN254_scalar_t* scalars, + size_t batch_size, + size_t msm_size, + size_t device_id); +int commit_g2_cuda_bn254( + BN254_g2_projective_t* d_out, + BN254_scalar_t* d_scalars, + BN254_g2_affine_t* d_points, + size_t count, + unsigned large_bucket_factor, + size_t device_id); +int commit_batch_g2_cuda_bn254( + BN254_g2_projective_t* d_out, + BN254_scalar_t* d_scalars, + BN254_g2_affine_t* d_points, + size_t count, + size_t batch_size, + size_t device_id, + cudaStream_t stream); #ifdef __cplusplus } diff --git a/goicicle/curves/bn254/include/ntt.h b/goicicle/curves/bn254/include/ntt.h index 52aaf351..f0081e69 100644 --- a/goicicle/curves/bn254/include/ntt.h +++ b/goicicle/curves/bn254/include/ntt.h @@ -1,22 +1,22 @@ - // Copyright 2023 Ingonyama - // - // 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. - +// Copyright 2023 Ingonyama +// +// 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. + // Code generated by Ingonyama DO NOT EDIT -#include #include +#include // ntt.h #ifndef _BN254_NTT_H @@ -34,34 +34,143 @@ typedef struct BN254_scalar_t BN254_scalar_t; typedef struct BN254_g2_projective_t BN254_g2_projective_t; typedef struct BN254_g2_affine_t BN254_g2_affine_t; -int ntt_cuda_bn254(BN254_scalar_t *arr, uint32_t n, bool inverse, size_t decimation, size_t device_id); -int ntt_batch_cuda_bn254(BN254_scalar_t *arr, uint32_t arr_size, uint32_t batch_size, bool inverse, size_t device_id); +int ntt_cuda_bn254(BN254_scalar_t* arr, uint32_t n, bool inverse, size_t decimation, size_t device_id); +int ntt_batch_cuda_bn254(BN254_scalar_t* arr, uint32_t arr_size, uint32_t batch_size, bool inverse, size_t device_id); -int ecntt_cuda_bn254(BN254_projective_t *arr, uint32_t n, bool inverse, size_t device_id); -int ecntt_batch_cuda_bn254(BN254_projective_t *arr, uint32_t arr_size, uint32_t batch_size, bool inverse, size_t device_id); +int ecntt_cuda_bn254(BN254_projective_t* arr, uint32_t n, bool inverse, size_t device_id); +int ecntt_batch_cuda_bn254( + BN254_projective_t* arr, uint32_t arr_size, uint32_t batch_size, bool inverse, size_t device_id); - -BN254_scalar_t* build_domain_cuda_bn254(uint32_t domain_size, uint32_t logn, bool inverse, size_t device_id, size_t stream); -int interpolate_scalars_cuda_bn254(BN254_scalar_t* d_out, BN254_scalar_t *d_evaluations, BN254_scalar_t *d_domain, unsigned n, unsigned device_id, size_t stream); -int interpolate_scalars_batch_cuda_bn254(BN254_scalar_t* d_out, BN254_scalar_t* d_evaluations, BN254_scalar_t* d_domain, unsigned n, unsigned batch_size, size_t device_id, size_t stream); -int interpolate_points_cuda_bn254(BN254_projective_t* d_out, BN254_projective_t *d_evaluations, BN254_scalar_t *d_domain, unsigned n, size_t device_id, size_t stream); -int interpolate_points_batch_cuda_bn254(BN254_projective_t* d_out, BN254_projective_t* d_evaluations, BN254_scalar_t* d_domain,unsigned n, unsigned batch_size, size_t device_id, size_t stream); -int interpolate_scalars_on_coset_cuda_bn254(BN254_scalar_t* d_out, BN254_scalar_t* d_evaluations, BN254_scalar_t* d_domain, unsigned n, BN254_scalar_t* coset_powers, size_t device_id, size_t stream); -int interpolate_scalars_batch_on_coset_cuda_bn254(BN254_scalar_t* d_out, BN254_scalar_t* d_evaluations, BN254_scalar_t* d_domain, unsigned n, unsigned batch_size, BN254_scalar_t* coset_powers, size_t device_id, size_t stream); -int evaluate_scalars_cuda_bn254(BN254_scalar_t* d_out, BN254_scalar_t *d_coefficients, BN254_scalar_t *d_domain, unsigned domain_size, unsigned n, unsigned device_id, size_t stream); -int evaluate_scalars_batch_cuda_bn254(BN254_scalar_t* d_out, BN254_scalar_t* d_coefficients, BN254_scalar_t* d_domain, unsigned domain_size,unsigned n, unsigned batch_size, size_t device_id, size_t stream); -int evaluate_points_cuda_bn254(BN254_projective_t* d_out, BN254_projective_t *d_coefficients, BN254_scalar_t *d_domain, unsigned domain_size, unsigned n, size_t device_id, size_t stream); -int evaluate_points_batch_cuda_bn254(BN254_projective_t* d_out, BN254_projective_t* d_coefficients, BN254_scalar_t* d_domain, unsigned domain_size,unsigned n, unsigned batch_size, size_t device_id, size_t stream); -int evaluate_scalars_on_coset_cuda_bn254(BN254_scalar_t* d_out, BN254_scalar_t *d_coefficients, BN254_scalar_t *d_domain, unsigned domain_size,unsigned n, BN254_scalar_t *coset_powers, unsigned device_id, size_t stream); -int evaluate_scalars_on_coset_batch_cuda_bn254(BN254_scalar_t* d_out, BN254_scalar_t* d_coefficients, BN254_scalar_t* d_domain, unsigned domain_size, unsigned n, unsigned batch_size, BN254_scalar_t *coset_powers, size_t device_id, size_t stream); -int evaluate_points_on_coset_cuda_bn254(BN254_projective_t* d_out, BN254_projective_t *d_coefficients, BN254_scalar_t *d_domain, unsigned domain_size,unsigned n, BN254_scalar_t *coset_powers, size_t device_id, size_t stream); -int evaluate_points_on_coset_batch_cuda_bn254(BN254_projective_t* d_out, BN254_projective_t* d_coefficients, BN254_scalar_t* d_domain, unsigned domain_size, unsigned n, unsigned batch_size, BN254_scalar_t *coset_powers, size_t device_id, size_t stream); +BN254_scalar_t* +build_domain_cuda_bn254(uint32_t domain_size, uint32_t logn, bool inverse, size_t device_id, size_t stream); +int interpolate_scalars_cuda_bn254( + BN254_scalar_t* d_out, + BN254_scalar_t* d_evaluations, + BN254_scalar_t* d_domain, + unsigned n, + unsigned device_id, + size_t stream); +int interpolate_scalars_batch_cuda_bn254( + BN254_scalar_t* d_out, + BN254_scalar_t* d_evaluations, + BN254_scalar_t* d_domain, + unsigned n, + unsigned batch_size, + size_t device_id, + size_t stream); +int interpolate_points_cuda_bn254( + BN254_projective_t* d_out, + BN254_projective_t* d_evaluations, + BN254_scalar_t* d_domain, + unsigned n, + size_t device_id, + size_t stream); +int interpolate_points_batch_cuda_bn254( + BN254_projective_t* d_out, + BN254_projective_t* d_evaluations, + BN254_scalar_t* d_domain, + unsigned n, + unsigned batch_size, + size_t device_id, + size_t stream); +int interpolate_scalars_on_coset_cuda_bn254( + BN254_scalar_t* d_out, + BN254_scalar_t* d_evaluations, + BN254_scalar_t* d_domain, + unsigned n, + BN254_scalar_t* coset_powers, + size_t device_id, + size_t stream); +int interpolate_scalars_batch_on_coset_cuda_bn254( + BN254_scalar_t* d_out, + BN254_scalar_t* d_evaluations, + BN254_scalar_t* d_domain, + unsigned n, + unsigned batch_size, + BN254_scalar_t* coset_powers, + size_t device_id, + size_t stream); +int evaluate_scalars_cuda_bn254( + BN254_scalar_t* d_out, + BN254_scalar_t* d_coefficients, + BN254_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned device_id, + size_t stream); +int evaluate_scalars_batch_cuda_bn254( + BN254_scalar_t* d_out, + BN254_scalar_t* d_coefficients, + BN254_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + size_t device_id, + size_t stream); +int evaluate_points_cuda_bn254( + BN254_projective_t* d_out, + BN254_projective_t* d_coefficients, + BN254_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + size_t device_id, + size_t stream); +int evaluate_points_batch_cuda_bn254( + BN254_projective_t* d_out, + BN254_projective_t* d_coefficients, + BN254_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + size_t device_id, + size_t stream); +int evaluate_scalars_on_coset_cuda_bn254( + BN254_scalar_t* d_out, + BN254_scalar_t* d_coefficients, + BN254_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + BN254_scalar_t* coset_powers, + unsigned device_id, + size_t stream); +int evaluate_scalars_on_coset_batch_cuda_bn254( + BN254_scalar_t* d_out, + BN254_scalar_t* d_coefficients, + BN254_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + BN254_scalar_t* coset_powers, + size_t device_id, + size_t stream); +int evaluate_points_on_coset_cuda_bn254( + BN254_projective_t* d_out, + BN254_projective_t* d_coefficients, + BN254_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + BN254_scalar_t* coset_powers, + size_t device_id, + size_t stream); +int evaluate_points_on_coset_batch_cuda_bn254( + BN254_projective_t* d_out, + BN254_projective_t* d_coefficients, + BN254_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + BN254_scalar_t* coset_powers, + size_t device_id, + size_t stream); int reverse_order_scalars_cuda_bn254(BN254_scalar_t* arr, int n, size_t device_id, size_t stream); int reverse_order_scalars_batch_cuda_bn254(BN254_scalar_t* arr, int n, int batch_size, size_t device_id, size_t stream); int reverse_order_points_cuda_bn254(BN254_projective_t* arr, int n, size_t device_id, size_t stream); -int reverse_order_points_batch_cuda_bn254(BN254_projective_t* arr, int n, int batch_size, size_t device_id, size_t stream); -int add_scalars_cuda_bn254(BN254_scalar_t* d_out, BN254_scalar_t* d_in1, BN254_scalar_t* d_in2, unsigned n, size_t stream); -int sub_scalars_cuda_bn254(BN254_scalar_t* d_out, BN254_scalar_t* d_in1, BN254_scalar_t* d_in2, unsigned n, size_t stream); +int reverse_order_points_batch_cuda_bn254( + BN254_projective_t* arr, int n, int batch_size, size_t device_id, size_t stream); +int add_scalars_cuda_bn254( + BN254_scalar_t* d_out, BN254_scalar_t* d_in1, BN254_scalar_t* d_in2, unsigned n, size_t stream); +int sub_scalars_cuda_bn254( + BN254_scalar_t* d_out, BN254_scalar_t* d_in1, BN254_scalar_t* d_in2, unsigned n, size_t stream); int to_montgomery_scalars_cuda_bn254(BN254_scalar_t* d_inout, unsigned n, size_t stream); int from_montgomery_scalars_cuda_bn254(BN254_scalar_t* d_inout, unsigned n, size_t stream); diff --git a/goicicle/curves/bn254/include/projective.h b/goicicle/curves/bn254/include/projective.h index 3583f1c0..ad033e43 100644 --- a/goicicle/curves/bn254/include/projective.h +++ b/goicicle/curves/bn254/include/projective.h @@ -1,22 +1,22 @@ - // Copyright 2023 Ingonyama - // - // 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. - +// Copyright 2023 Ingonyama +// +// 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. + // Code generated by Ingonyama DO NOT EDIT -#include #include +#include // projective.h #ifdef __cplusplus @@ -24,25 +24,25 @@ extern "C" { #endif typedef struct BN254_projective_t BN254_projective_t; -typedef struct BN254_g2_projective_t BN254_g2_projective_t; +typedef struct BN254_g2_projective_t BN254_g2_projective_t; typedef struct BN254_affine_t BN254_affine_t; typedef struct BN254_scalar_t BN254_scalar_t; -bool projective_is_on_curve_bn254(BN254_projective_t *point1); +bool projective_is_on_curve_bn254(BN254_projective_t* point1); BN254_scalar_t* random_scalar_bn254(); BN254_projective_t* random_projective_bn254(); BN254_projective_t* projective_zero_bn254(); -BN254_affine_t* projective_to_affine_bn254(BN254_projective_t *point1); -BN254_projective_t* projective_from_affine_bn254(BN254_affine_t *point1); +BN254_affine_t* projective_to_affine_bn254(BN254_projective_t* point1); +BN254_projective_t* projective_from_affine_bn254(BN254_affine_t* point1); BN254_g2_projective_t* random_g2_projective_bn254(); -BN254_affine_t* g2_projective_to_affine_bn254(BN254_g2_projective_t *point1); -BN254_g2_projective_t* g2_projective_from_affine_bn254(BN254_affine_t *point1); -bool g2_projective_is_on_curve_bn254(BN254_g2_projective_t *point1); +BN254_affine_t* g2_projective_to_affine_bn254(BN254_g2_projective_t* point1); +BN254_g2_projective_t* g2_projective_from_affine_bn254(BN254_affine_t* point1); +bool g2_projective_is_on_curve_bn254(BN254_g2_projective_t* point1); -bool eq_bn254(BN254_projective_t *point1, BN254_projective_t *point2); -bool eq_g2_bn254(BN254_g2_projective_t *point1, BN254_g2_projective_t *point2); +bool eq_bn254(BN254_projective_t* point1, BN254_projective_t* point2); +bool eq_g2_bn254(BN254_g2_projective_t* point1, BN254_g2_projective_t* point2); #ifdef __cplusplus } diff --git a/goicicle/curves/bn254/include/ve_mod_mult.h b/goicicle/curves/bn254/include/ve_mod_mult.h index 9bcb0392..fcd5753c 100644 --- a/goicicle/curves/bn254/include/ve_mod_mult.h +++ b/goicicle/curves/bn254/include/ve_mod_mult.h @@ -1,22 +1,22 @@ - // Copyright 2023 Ingonyama - // - // 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. - +// Copyright 2023 Ingonyama +// +// 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. + // Code generated by Ingonyama DO NOT EDIT -#include #include +#include // ve_mod_mult.h #ifndef _BN254_VEC_MULT_H @@ -29,11 +29,14 @@ extern "C" { typedef struct BN254_projective_t BN254_projective_t; typedef struct BN254_scalar_t BN254_scalar_t; -int32_t vec_mod_mult_point_bn254(BN254_projective_t *inout, BN254_scalar_t *scalar_vec, size_t n_elments, size_t device_id); -int32_t vec_mod_mult_scalar_bn254(BN254_scalar_t *inout, BN254_scalar_t *scalar_vec, size_t n_elments, size_t device_id); -int32_t vec_mod_mult_device_scalar_bn254(BN254_scalar_t *inout, BN254_scalar_t *scalar_vec, size_t n_elements, size_t device_id); -int32_t matrix_vec_mod_mult_bn254(BN254_scalar_t *matrix_flattened, BN254_scalar_t *input, BN254_scalar_t *output, size_t n_elments, size_t device_id); - +int32_t +vec_mod_mult_point_bn254(BN254_projective_t* inout, BN254_scalar_t* scalar_vec, size_t n_elments, size_t device_id); +int32_t +vec_mod_mult_scalar_bn254(BN254_scalar_t* inout, BN254_scalar_t* scalar_vec, size_t n_elments, size_t device_id); +int32_t vec_mod_mult_device_scalar_bn254( + BN254_scalar_t* inout, BN254_scalar_t* scalar_vec, size_t n_elements, size_t device_id); +int32_t matrix_vec_mod_mult_bn254( + BN254_scalar_t* matrix_flattened, BN254_scalar_t* input, BN254_scalar_t* output, size_t n_elments, size_t device_id); #ifdef __cplusplus } diff --git a/goicicle/templates/hfiles/msm.h.tmpl b/goicicle/templates/hfiles/msm.h.tmpl index fc26985b..3ab9de11 100644 --- a/goicicle/templates/hfiles/msm.h.tmpl +++ b/goicicle/templates/hfiles/msm.h.tmpl @@ -1,6 +1,6 @@ -#include #include #include +#include // msm.h #ifndef _{{.CurveNameUpperCase}}_MSM_H @@ -18,24 +18,64 @@ typedef struct {{.CurveNameUpperCase}}_g2_affine_t {{.CurveNameUpperCase}}_g2_af typedef struct {{.CurveNameUpperCase}}_scalar_t {{.CurveNameUpperCase}}_scalar_t; typedef cudaStream_t CudaStream_t; -int msm_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_projective_t* out, {{.CurveNameUpperCase}}_affine_t* points, - {{.CurveNameUpperCase}}_scalar_t* scalars, size_t count, size_t device_id); +int msm_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_projective_t* out, {{.CurveNameUpperCase}}_affine_t* points, {{.CurveNameUpperCase}}_scalar_t* scalars, size_t count, size_t device_id); -int msm_batch_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_projective_t* out, {{.CurveNameUpperCase}}_affine_t* points, - {{.CurveNameUpperCase}}_scalar_t* scalars, size_t batch_size, - size_t msm_size, size_t device_id); +int msm_batch_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_projective_t* out, + {{.CurveNameUpperCase}}_affine_t* points, + {{.CurveNameUpperCase}}_scalar_t* scalars, + size_t batch_size, + size_t msm_size, + size_t device_id); -int commit_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_projective_t* d_out, {{.CurveNameUpperCase}}_scalar_t* d_scalars, - {{.CurveNameUpperCase}}_affine_t* d_points, size_t count, unsigned large_bucket_factor, size_t device_id); +int commit_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_projective_t* d_out, + {{.CurveNameUpperCase}}_scalar_t* d_scalars, + {{.CurveNameUpperCase}}_affine_t* d_points, + size_t count, + unsigned large_bucket_factor, + size_t device_id); -int commit_batch_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_projective_t* d_out, {{.CurveNameUpperCase}}_scalar_t* d_scalars, - {{.CurveNameUpperCase}}_affine_t* d_points, size_t count, - size_t batch_size, size_t device_id); +int commit_batch_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_projective_t* d_out, + {{.CurveNameUpperCase}}_scalar_t* d_scalars, + {{.CurveNameUpperCase}}_affine_t* d_points, + size_t count, + size_t batch_size, + size_t device_id); -int msm_g2_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_g2_projective_t *out, {{.CurveNameUpperCase}}_g2_affine_t* points, {{.CurveNameUpperCase}}_scalar_t* scalars, size_t count, size_t device_id); -int msm_batch_g2_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_g2_projective_t* out, {{.CurveNameUpperCase}}_g2_affine_t* points, {{.CurveNameUpperCase}}_scalar_t* scalars, size_t batch_size, size_t msm_size, size_t device_id); -int commit_g2_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_g2_projective_t* d_out, {{.CurveNameUpperCase}}_scalar_t* d_scalars, {{.CurveNameUpperCase}}_g2_affine_t* d_points, size_t count, unsigned large_bucket_factor, size_t device_id); -int commit_batch_g2_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_g2_projective_t* d_out, {{.CurveNameUpperCase}}_scalar_t* d_scalars, {{.CurveNameUpperCase}}_g2_affine_t* d_points, size_t count, size_t batch_size, size_t device_id, cudaStream_t stream); +int msm_g2_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_g2_projective_t* out, + {{.CurveNameUpperCase}}_g2_affine_t* points, + {{.CurveNameUpperCase}}_scalar_t* scalars, + size_t count, + size_t device_id); + +int msm_batch_g2_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_g2_projective_t* out, + {{.CurveNameUpperCase}}_g2_affine_t* points, + {{.CurveNameUpperCase}}_scalar_t* scalars, + size_t batch_size, + size_t msm_size, + size_t device_id); + +int commit_g2_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_g2_projective_t* d_out, + {{.CurveNameUpperCase}}_scalar_t* d_scalars, + {{.CurveNameUpperCase}}_g2_affine_t* d_points, + size_t count, + unsigned large_bucket_factor, + size_t device_id); + +int commit_batch_g2_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_g2_projective_t* d_out, + {{.CurveNameUpperCase}}_scalar_t* d_scalars, + {{.CurveNameUpperCase}}_g2_affine_t* d_points, + size_t count, + size_t batch_size, + size_t device_id, + cudaStream_t stream); #ifdef __cplusplus } diff --git a/goicicle/templates/hfiles/ntt.h.tmpl b/goicicle/templates/hfiles/ntt.h.tmpl index d7b4c4d7..f71daf55 100644 --- a/goicicle/templates/hfiles/ntt.h.tmpl +++ b/goicicle/templates/hfiles/ntt.h.tmpl @@ -1,5 +1,5 @@ -#include #include +#include // ntt.h #ifndef _{{.CurveNameUpperCase}}_NTT_H @@ -17,34 +17,148 @@ typedef struct {{.CurveNameUpperCase}}_scalar_t {{.CurveNameUpperCase}}_scalar_t typedef struct {{.CurveNameUpperCase}}_g2_projective_t {{.CurveNameUpperCase}}_g2_projective_t; typedef struct {{.CurveNameUpperCase}}_g2_affine_t {{.CurveNameUpperCase}}_g2_affine_t; -int ntt_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_scalar_t *arr, uint32_t n, bool inverse, size_t decimation, size_t device_id); -int ntt_batch_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_scalar_t *arr, uint32_t arr_size, uint32_t batch_size, bool inverse, size_t device_id); +int ntt_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_scalar_t* arr, uint32_t n, bool inverse, size_t decimation, size_t device_id); +int ntt_batch_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_scalar_t* arr, uint32_t arr_size, uint32_t batch_size, bool inverse, size_t device_id); -int ecntt_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_projective_t *arr, uint32_t n, bool inverse, size_t device_id); -int ecntt_batch_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_projective_t *arr, uint32_t arr_size, uint32_t batch_size, bool inverse, size_t device_id); +int ecntt_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_projective_t* arr, uint32_t n, bool inverse, size_t device_id); +int ecntt_batch_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_projective_t* arr, uint32_t arr_size, uint32_t batch_size, bool inverse, size_t device_id); +{{.CurveNameUpperCase}}_scalar_t* +build_domain_cuda_{{.CurveNameLowerCase}}(uint32_t domain_size, uint32_t logn, bool inverse, size_t device_id, size_t stream); + +int interpolate_scalars_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_scalar_t* d_out, + {{.CurveNameUpperCase}}_scalar_t* d_evaluations, + {{.CurveNameUpperCase}}_scalar_t* d_domain, + unsigned n, + unsigned device_id, + size_t stream); +int interpolate_scalars_batch_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_scalar_t* d_out, + {{.CurveNameUpperCase}}_scalar_t* d_evaluations, + {{.CurveNameUpperCase}}_scalar_t* d_domain, + unsigned n, + unsigned batch_size, + size_t device_id, + size_t stream); +int interpolate_points_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_projective_t* d_out, + {{.CurveNameUpperCase}}_projective_t* d_evaluations, + {{.CurveNameUpperCase}}_scalar_t* d_domain, + unsigned n, + size_t device_id, + size_t stream); +int interpolate_points_batch_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_projective_t* d_out, + {{.CurveNameUpperCase}}_projective_t* d_evaluations, + {{.CurveNameUpperCase}}_scalar_t* d_domain, + unsigned n, + unsigned batch_size, + size_t device_id, + size_t stream); +int interpolate_scalars_on_coset_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_scalar_t* d_out, + {{.CurveNameUpperCase}}_scalar_t* d_evaluations, + {{.CurveNameUpperCase}}_scalar_t* d_domain, + unsigned n, + {{.CurveNameUpperCase}}_scalar_t* coset_powers, + size_t device_id, + size_t stream); +int interpolate_scalars_batch_on_coset_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_scalar_t* d_out, + {{.CurveNameUpperCase}}_scalar_t* d_evaluations, + {{.CurveNameUpperCase}}_scalar_t* d_domain, + unsigned n, + unsigned batch_size, + {{.CurveNameUpperCase}}_scalar_t* coset_powers, + size_t device_id, + size_t stream); + +int evaluate_scalars_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_scalar_t* d_out, + {{.CurveNameUpperCase}}_scalar_t* d_coefficients, + {{.CurveNameUpperCase}}_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned device_id, + size_t stream); +int evaluate_scalars_batch_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_scalar_t* d_out, + {{.CurveNameUpperCase}}_scalar_t* d_coefficients, + {{.CurveNameUpperCase}}_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + size_t device_id, + size_t stream); +int evaluate_points_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_projective_t* d_out, + {{.CurveNameUpperCase}}_projective_t* d_coefficients, + {{.CurveNameUpperCase}}_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + size_t device_id, + size_t stream); +int evaluate_points_batch_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_projective_t* d_out, + {{.CurveNameUpperCase}}_projective_t* d_coefficients, + {{.CurveNameUpperCase}}_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + size_t device_id, + size_t stream); +int evaluate_scalars_on_coset_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_scalar_t* d_out, + {{.CurveNameUpperCase}}_scalar_t* d_coefficients, + {{.CurveNameUpperCase}}_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + {{.CurveNameUpperCase}}_scalar_t* coset_powers, + unsigned device_id, + size_t stream); +int evaluate_scalars_on_coset_batch_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_scalar_t* d_out, + {{.CurveNameUpperCase}}_scalar_t* d_coefficients, + {{.CurveNameUpperCase}}_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + {{.CurveNameUpperCase}}_scalar_t* coset_powers, + size_t device_id, + size_t stream); +int evaluate_points_on_coset_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_projective_t* d_out, + {{.CurveNameUpperCase}}_projective_t* d_coefficients, + {{.CurveNameUpperCase}}_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + {{.CurveNameUpperCase}}_scalar_t* coset_powers, + size_t device_id, + size_t stream); +int evaluate_points_on_coset_batch_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_projective_t* d_out, + {{.CurveNameUpperCase}}_projective_t* d_coefficients, + {{.CurveNameUpperCase}}_scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + {{.CurveNameUpperCase}}_scalar_t* coset_powers, + size_t device_id, + size_t stream); -{{.CurveNameUpperCase}}_scalar_t* build_domain_cuda_{{.CurveNameLowerCase}}(uint32_t domain_size, uint32_t logn, bool inverse, size_t device_id, size_t stream); -int interpolate_scalars_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_scalar_t* d_out, {{.CurveNameUpperCase}}_scalar_t *d_evaluations, {{.CurveNameUpperCase}}_scalar_t *d_domain, unsigned n, unsigned device_id, size_t stream); -int interpolate_scalars_batch_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_scalar_t* d_out, {{.CurveNameUpperCase}}_scalar_t* d_evaluations, {{.CurveNameUpperCase}}_scalar_t* d_domain, unsigned n, unsigned batch_size, size_t device_id, size_t stream); -int interpolate_points_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_projective_t* d_out, {{.CurveNameUpperCase}}_projective_t *d_evaluations, {{.CurveNameUpperCase}}_scalar_t *d_domain, unsigned n, size_t device_id, size_t stream); -int interpolate_points_batch_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_projective_t* d_out, {{.CurveNameUpperCase}}_projective_t* d_evaluations, {{.CurveNameUpperCase}}_scalar_t* d_domain,unsigned n, unsigned batch_size, size_t device_id, size_t stream); -int interpolate_scalars_on_coset_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_scalar_t* d_out, {{.CurveNameUpperCase}}_scalar_t* d_evaluations, {{.CurveNameUpperCase}}_scalar_t* d_domain, unsigned n, {{.CurveNameUpperCase}}_scalar_t* coset_powers, size_t device_id, size_t stream); -int interpolate_scalars_batch_on_coset_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_scalar_t* d_out, {{.CurveNameUpperCase}}_scalar_t* d_evaluations, {{.CurveNameUpperCase}}_scalar_t* d_domain, unsigned n, unsigned batch_size, {{.CurveNameUpperCase}}_scalar_t* coset_powers, size_t device_id, size_t stream); -int evaluate_scalars_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_scalar_t* d_out, {{.CurveNameUpperCase}}_scalar_t *d_coefficients, {{.CurveNameUpperCase}}_scalar_t *d_domain, unsigned domain_size, unsigned n, unsigned device_id, size_t stream); -int evaluate_scalars_batch_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_scalar_t* d_out, {{.CurveNameUpperCase}}_scalar_t* d_coefficients, {{.CurveNameUpperCase}}_scalar_t* d_domain, unsigned domain_size,unsigned n, unsigned batch_size, size_t device_id, size_t stream); -int evaluate_points_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_projective_t* d_out, {{.CurveNameUpperCase}}_projective_t *d_coefficients, {{.CurveNameUpperCase}}_scalar_t *d_domain, unsigned domain_size, unsigned n, size_t device_id, size_t stream); -int evaluate_points_batch_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_projective_t* d_out, {{.CurveNameUpperCase}}_projective_t* d_coefficients, {{.CurveNameUpperCase}}_scalar_t* d_domain, unsigned domain_size,unsigned n, unsigned batch_size, size_t device_id, size_t stream); -int evaluate_scalars_on_coset_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_scalar_t* d_out, {{.CurveNameUpperCase}}_scalar_t *d_coefficients, {{.CurveNameUpperCase}}_scalar_t *d_domain, unsigned domain_size,unsigned n, {{.CurveNameUpperCase}}_scalar_t *coset_powers, unsigned device_id, size_t stream); -int evaluate_scalars_on_coset_batch_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_scalar_t* d_out, {{.CurveNameUpperCase}}_scalar_t* d_coefficients, {{.CurveNameUpperCase}}_scalar_t* d_domain, unsigned domain_size, unsigned n, unsigned batch_size, {{.CurveNameUpperCase}}_scalar_t *coset_powers, size_t device_id, size_t stream); -int evaluate_points_on_coset_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_projective_t* d_out, {{.CurveNameUpperCase}}_projective_t *d_coefficients, {{.CurveNameUpperCase}}_scalar_t *d_domain, unsigned domain_size,unsigned n, {{.CurveNameUpperCase}}_scalar_t *coset_powers, size_t device_id, size_t stream); -int evaluate_points_on_coset_batch_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_projective_t* d_out, {{.CurveNameUpperCase}}_projective_t* d_coefficients, {{.CurveNameUpperCase}}_scalar_t* d_domain, unsigned domain_size, unsigned n, unsigned batch_size, {{.CurveNameUpperCase}}_scalar_t *coset_powers, size_t device_id, size_t stream); int reverse_order_scalars_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_scalar_t* arr, int n, size_t device_id, size_t stream); -int reverse_order_scalars_batch_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_scalar_t* arr, int n, int batch_size, size_t device_id, size_t stream); +int reverse_order_scalars_batch_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_scalar_t* arr, int n, int batch_size, size_t device_id, size_t stream); int reverse_order_points_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_projective_t* arr, int n, size_t device_id, size_t stream); -int reverse_order_points_batch_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_projective_t* arr, int n, int batch_size, size_t device_id, size_t stream); -int add_scalars_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_scalar_t* d_out, {{.CurveNameUpperCase}}_scalar_t* d_in1, {{.CurveNameUpperCase}}_scalar_t* d_in2, unsigned n, size_t stream); -int sub_scalars_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_scalar_t* d_out, {{.CurveNameUpperCase}}_scalar_t* d_in1, {{.CurveNameUpperCase}}_scalar_t* d_in2, unsigned n, size_t stream); +int reverse_order_points_batch_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_projective_t* arr, int n, int batch_size, size_t device_id, size_t stream); +int add_scalars_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_scalar_t* d_out, {{.CurveNameUpperCase}}_scalar_t* d_in1, {{.CurveNameUpperCase}}_scalar_t* d_in2, unsigned n, size_t stream); +int sub_scalars_cuda_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_scalar_t* d_out, {{.CurveNameUpperCase}}_scalar_t* d_in1, {{.CurveNameUpperCase}}_scalar_t* d_in2, unsigned n, size_t stream); int to_montgomery_scalars_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_scalar_t* d_inout, unsigned n, size_t stream); int from_montgomery_scalars_cuda_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_scalar_t* d_inout, unsigned n, size_t stream); diff --git a/goicicle/templates/hfiles/projective.h.tmpl b/goicicle/templates/hfiles/projective.h.tmpl index 8b672964..21a92055 100644 --- a/goicicle/templates/hfiles/projective.h.tmpl +++ b/goicicle/templates/hfiles/projective.h.tmpl @@ -1,5 +1,5 @@ -#include #include +#include // projective.h #ifdef __cplusplus @@ -7,25 +7,25 @@ extern "C" { #endif typedef struct {{.CurveNameUpperCase}}_projective_t {{.CurveNameUpperCase}}_projective_t; -typedef struct {{.CurveNameUpperCase}}_g2_projective_t {{.CurveNameUpperCase}}_g2_projective_t; +typedef struct {{.CurveNameUpperCase}}_g2_projective_t {{.CurveNameUpperCase}}_g2_projective_t; typedef struct {{.CurveNameUpperCase}}_affine_t {{.CurveNameUpperCase}}_affine_t; typedef struct {{.CurveNameUpperCase}}_scalar_t {{.CurveNameUpperCase}}_scalar_t; -bool projective_is_on_curve_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_projective_t *point1); +bool projective_is_on_curve_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_projective_t* point1); {{.CurveNameUpperCase}}_scalar_t* random_scalar_{{.CurveNameLowerCase}}(); {{.CurveNameUpperCase}}_projective_t* random_projective_{{.CurveNameLowerCase}}(); {{.CurveNameUpperCase}}_projective_t* projective_zero_{{.CurveNameLowerCase}}(); -{{.CurveNameUpperCase}}_affine_t* projective_to_affine_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_projective_t *point1); -{{.CurveNameUpperCase}}_projective_t* projective_from_affine_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_affine_t *point1); +{{.CurveNameUpperCase}}_affine_t* projective_to_affine_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_projective_t* point1); +{{.CurveNameUpperCase}}_projective_t* projective_from_affine_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_affine_t* point1); {{.CurveNameUpperCase}}_g2_projective_t* random_g2_projective_{{.CurveNameLowerCase}}(); -{{.CurveNameUpperCase}}_affine_t* g2_projective_to_affine_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_g2_projective_t *point1); -{{.CurveNameUpperCase}}_g2_projective_t* g2_projective_from_affine_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_affine_t *point1); -bool g2_projective_is_on_curve_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_g2_projective_t *point1); +{{.CurveNameUpperCase}}_affine_t* g2_projective_to_affine_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_g2_projective_t* point1); +{{.CurveNameUpperCase}}_g2_projective_t* g2_projective_from_affine_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_affine_t* point1); +bool g2_projective_is_on_curve_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_g2_projective_t* point1); -bool eq_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_projective_t *point1, {{.CurveNameUpperCase}}_projective_t *point2); -bool eq_g2_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_g2_projective_t *point1, {{.CurveNameUpperCase}}_g2_projective_t *point2); +bool eq_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_projective_t* point1, {{.CurveNameUpperCase}}_projective_t* point2); +bool eq_g2_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_g2_projective_t* point1, {{.CurveNameUpperCase}}_g2_projective_t* point2); #ifdef __cplusplus } diff --git a/goicicle/templates/hfiles/ve_mod_mult.h.tmpl b/goicicle/templates/hfiles/ve_mod_mult.h.tmpl index 9bd5467f..8339416f 100644 --- a/goicicle/templates/hfiles/ve_mod_mult.h.tmpl +++ b/goicicle/templates/hfiles/ve_mod_mult.h.tmpl @@ -12,11 +12,18 @@ extern "C" { typedef struct {{.CurveNameUpperCase}}_projective_t {{.CurveNameUpperCase}}_projective_t; typedef struct {{.CurveNameUpperCase}}_scalar_t {{.CurveNameUpperCase}}_scalar_t; -int32_t vec_mod_mult_point_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_projective_t *inout, {{.CurveNameUpperCase}}_scalar_t *scalar_vec, size_t n_elments, size_t device_id); -int32_t vec_mod_mult_scalar_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_scalar_t *inout, {{.CurveNameUpperCase}}_scalar_t *scalar_vec, size_t n_elments, size_t device_id); -int32_t vec_mod_mult_device_scalar_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_scalar_t *inout, {{.CurveNameUpperCase}}_scalar_t *scalar_vec, size_t n_elements, size_t device_id); -int32_t matrix_vec_mod_mult_{{.CurveNameLowerCase}}({{.CurveNameUpperCase}}_scalar_t *matrix_flattened, {{.CurveNameUpperCase}}_scalar_t *input, {{.CurveNameUpperCase}}_scalar_t *output, size_t n_elments, size_t device_id); - +int32_t vec_mod_mult_point_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_projective_t* inout, {{.CurveNameUpperCase}}_scalar_t* scalar_vec, size_t n_elments, size_t device_id); +int32_t vec_mod_mult_scalar_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_scalar_t* inout, {{.CurveNameUpperCase}}_scalar_t* scalar_vec, size_t n_elments, size_t device_id); +int32_t vec_mod_mult_device_scalar_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_scalar_t* inout, {{.CurveNameUpperCase}}_scalar_t* scalar_vec, size_t n_elements, size_t device_id); +int32_t matrix_vec_mod_mult_{{.CurveNameLowerCase}}( + {{.CurveNameUpperCase}}_scalar_t* matrix_flattened, + {{.CurveNameUpperCase}}_scalar_t* input, + {{.CurveNameUpperCase}}_scalar_t* output, + size_t n_elments, + size_t device_id); #ifdef __cplusplus } diff --git a/icicle/appUtils/msm/msm.cu b/icicle/appUtils/msm/msm.cu index c23d5e3a..04e0543b 100644 --- a/icicle/appUtils/msm/msm.cu +++ b/icicle/appUtils/msm/msm.cu @@ -1,19 +1,19 @@ #ifndef MSM #define MSM #pragma once -#include -#include -#include #include "../../primitives/affine.cuh" -#include -#include +#include "../../primitives/field.cuh" +#include "../../primitives/projective.cuh" +#include "../../utils/cuda_utils.cuh" +#include "msm.cuh" +#include #include #include #include -#include "../../utils/cuda_utils.cuh" -#include "../../primitives/projective.cuh" -#include "../../primitives/field.cuh" -#include "msm.cuh" +#include +#include +#include +#include #define MAX_TH 256 @@ -22,57 +22,72 @@ // #define SSM_SUM //WIP template -__global__ void single_stage_multi_reduction_kernel(P *v, P *v_r, unsigned block_size, unsigned write_stride, unsigned write_phase, unsigned padding) { +__global__ void single_stage_multi_reduction_kernel( + P* v, P* v_r, unsigned block_size, unsigned write_stride, unsigned write_phase, unsigned padding) +{ int tid = blockIdx.x * blockDim.x + threadIdx.x; - int tid_p = padding? (tid/(2*padding))*padding + tid%padding: tid; - int jump =block_size/2; - int block_id = tid_p/jump; - int block_tid = tid_p%jump; - unsigned read_ind = block_size*block_id + block_tid; + int tid_p = padding ? (tid / (2 * padding)) * padding + tid % padding : tid; + int jump = block_size / 2; + int block_id = tid_p / jump; + int block_tid = tid_p % jump; + unsigned read_ind = block_size * block_id + block_tid; unsigned write_ind = tid; - v_r[write_stride? ((write_ind/write_stride)*2 + write_phase)*write_stride + write_ind%write_stride : write_ind] = padding? (tid%(2*padding) -__global__ void ssm_kernel(S *scalars, P *points, P *results, unsigned N) { +__global__ void ssm_kernel(S* scalars, P* points, P* results, unsigned N) +{ unsigned tid = (blockIdx.x * blockDim.x) + threadIdx.x; - if (tid < N) results[tid] = scalars[tid]*points[tid]; + if (tid < N) results[tid] = scalars[tid] * points[tid]; } -//this kernel sums all the elements in a given vector using multiple threads +// this kernel sums all the elements in a given vector using multiple threads template -__global__ void sum_reduction_kernel(P *v, P* v_r) { - unsigned tid = blockIdx.x * blockDim.x + threadIdx.x; +__global__ void sum_reduction_kernel(P* v, P* v_r) +{ + unsigned tid = blockIdx.x * blockDim.x + threadIdx.x; - // Start at 1/2 block stride and divide by two each iteration - for (unsigned s = blockDim.x / 2; s > 0; s >>= 1) { - // Each thread does work unless it is further than the stride - if (threadIdx.x < s) { - v[tid] = v[tid] + v[tid + s]; - } - __syncthreads(); - } + // Start at 1/2 block stride and divide by two each iteration + for (unsigned s = blockDim.x / 2; s > 0; s >>= 1) { + // Each thread does work unless it is further than the stride + if (threadIdx.x < s) { v[tid] = v[tid] + v[tid + s]; } + __syncthreads(); + } - // Let the thread 0 for this block write the final result - if (threadIdx.x == 0) { - v_r[blockIdx.x] = v[tid]; - } + // Let the thread 0 for this block write the final result + if (threadIdx.x == 0) { v_r[blockIdx.x] = v[tid]; } } -//this kernel initializes the buckets with zero points -//each thread initializes a different bucket +// this kernel initializes the buckets with zero points +// each thread initializes a different bucket template -__global__ void initialize_buckets_kernel(P *buckets, unsigned N) { +__global__ void initialize_buckets_kernel(P* buckets, unsigned N) +{ unsigned tid = (blockIdx.x * blockDim.x) + threadIdx.x; - if (tid < N) buckets[tid] = P::zero(); //zero point + if (tid < N) buckets[tid] = P::zero(); // zero point } -//this kernel splits the scalars into digits of size c -//each thread splits a single scalar into nof_bms digits +// this kernel splits the scalars into digits of size c +// each thread splits a single scalar into nof_bms digits template -__global__ void split_scalars_kernel(unsigned *buckets_indices, unsigned *point_indices, S *scalars, unsigned total_size, unsigned msm_log_size, unsigned nof_bms, unsigned bm_bitsize, unsigned c, unsigned top_bm_nof_missing_bits) { +__global__ void split_scalars_kernel( + unsigned* buckets_indices, + unsigned* point_indices, + S* scalars, + unsigned total_size, + unsigned msm_log_size, + unsigned nof_bms, + unsigned bm_bitsize, + unsigned c, + unsigned top_bm_nof_missing_bits) +{ constexpr unsigned sign_mask = 0x80000000; // constexpr unsigned trash_bucket = 0x80000000; unsigned tid = (blockIdx.x * blockDim.x) + threadIdx.x; @@ -85,65 +100,68 @@ __global__ void split_scalars_kernel(unsigned *buckets_indices, unsigned *point_ S scalar = scalars[tid]; for (unsigned bm = 0; bm < nof_bms; bm++) { bucket_index = scalar.get_scalar_digit(bm, c); - #ifdef SIGNED_DIG +#ifdef SIGNED_DIG bucket_index += borrow; borrow = 0; unsigned sign = 0; - if (bucket_index > (1<<(c-1))) { + if (bucket_index > (1 << (c - 1))) { bucket_index = (1 << c) - bucket_index; borrow = 1; sign = sign_mask; } - #endif +#endif current_index = bm * total_size + tid; - #ifdef SIGNED_DIG - point_indices[current_index] = sign | tid; //the point index is saved for later - #else - buckets_indices[current_index] = (msm_index<<(c+bm_bitsize)) | (bm< -__global__ void add_ones_kernel(A *points, S* scalars, P* results, const unsigned msm_size, const unsigned run_length) { +__global__ void add_ones_kernel(A* points, S* scalars, P* results, const unsigned msm_size, const unsigned run_length) +{ unsigned tid = (blockIdx.x * blockDim.x) + threadIdx.x; - const unsigned nof_threads = (msm_size + run_length - 1)/run_length; //129256 - if (tid>=nof_threads) { + const unsigned nof_threads = (msm_size + run_length - 1) / run_length; // 129256 + if (tid >= nof_threads) { results[tid] = P::zero(); return; } - const unsigned start_index = tid*run_length; + const unsigned start_index = tid * run_length; P sum = P::zero(); - for (int i=start_index;i=nof_threads) { - return; - } - const unsigned start_index = tid*run_length; - for (int i=start_index;i cutoff && v[i+1] <= cutoff) { - result[0] = i+1; + const unsigned nof_threads = (size + run_length - 1) / run_length; + if (tid >= nof_threads) { return; } + const unsigned start_index = tid * run_length; + for (int i = start_index; i < min(start_index + run_length, size - 1); i++) { + if (v[i] > cutoff && v[i + 1] <= cutoff) { + result[0] = i + 1; return; } } - if (tid == 0 && v[size - 1] > cutoff) { - result[0] = size; - } + if (tid == 0 && v[size - 1] > cutoff) { result[0] = size; } } -__global__ void find_max_size(unsigned *bucket_sizes,unsigned *single_bucket_indices,unsigned c, unsigned *largest_bucket_size) { - for (int i=0;;i++){ - if (single_bucket_indices[i]&((1< -__global__ void accumulate_buckets_kernel(P *__restrict__ buckets, unsigned *__restrict__ bucket_offsets, unsigned *__restrict__ bucket_sizes, unsigned *__restrict__ single_bucket_indices, const unsigned *__restrict__ point_indices, A *__restrict__ points, const unsigned nof_buckets, const unsigned nof_buckets_to_compute, const unsigned msm_idx_shift, const unsigned c){ - +__global__ void accumulate_buckets_kernel( + P* __restrict__ buckets, + unsigned* __restrict__ bucket_offsets, + unsigned* __restrict__ bucket_sizes, + unsigned* __restrict__ single_bucket_indices, + const unsigned* __restrict__ point_indices, + A* __restrict__ points, + const unsigned nof_buckets, + const unsigned nof_buckets_to_compute, + const unsigned msm_idx_shift, + const unsigned c) +{ constexpr unsigned sign_mask = 0x80000000; unsigned tid = (blockIdx.x * blockDim.x) + threadIdx.x; - if (tid>=nof_buckets_to_compute) { - return; + if (tid >= nof_buckets_to_compute) { return; } + if ((single_bucket_indices[tid] & ((1 << c) - 1)) == 0) { + return; // skip zero buckets } - if ((single_bucket_indices[tid]&((1<>msm_idx_shift; - const unsigned bm_index = (single_bucket_indices[tid]&((1<>c; - const unsigned bucket_index = msm_index * nof_buckets + bm_index * ((1<<(c-1))+1) + (single_bucket_indices[tid]&((1<>msm_idx_shift; - unsigned bucket_index = msm_index * nof_buckets + (single_bucket_indices[tid]&((1<> msm_idx_shift; + const unsigned bm_index = (single_bucket_indices[tid] & ((1 << msm_idx_shift) - 1)) >> c; + const unsigned bucket_index = + msm_index * nof_buckets + bm_index * ((1 << (c - 1)) + 1) + (single_bucket_indices[tid] & ((1 << c) - 1)); +#else + unsigned msm_index = single_bucket_indices[tid] >> msm_idx_shift; + unsigned bucket_index = msm_index * nof_buckets + (single_bucket_indices[tid] & ((1 << msm_idx_shift) - 1)); +#endif const unsigned bucket_offset = bucket_offsets[tid]; const unsigned bucket_size = bucket_sizes[tid]; - P bucket; //get rid of init buckets? no.. because what about buckets with no points - for (unsigned i = 0; i < bucket_size; i++) { //add the relevant points starting from the relevant offset up to the bucket size - unsigned point_ind = point_indices[bucket_offset+i]; - #ifdef SIGNED_DIG + P bucket; // get rid of init buckets? no.. because what about buckets with no points + for (unsigned i = 0; i < bucket_size; + i++) { // add the relevant points starting from the relevant offset up to the bucket size + unsigned point_ind = point_indices[bucket_offset + i]; +#ifdef SIGNED_DIG unsigned sign = point_ind & sign_mask; point_ind &= ~sign_mask; A point = points[point_ind]; if (sign) point = A::neg(point); - #else +#else A point = points[point_ind]; - #endif - bucket = i? bucket + point : P::from_affine(point); +#endif + bucket = i ? bucket + point : P::from_affine(point); } buckets[bucket_index] = bucket; } template -__global__ void accumulate_large_buckets_kernel(P *__restrict__ buckets, unsigned *__restrict__ bucket_offsets, unsigned *__restrict__ bucket_sizes, unsigned *__restrict__ single_bucket_indices, const unsigned *__restrict__ point_indices, A *__restrict__ points, const unsigned nof_buckets, const unsigned nof_buckets_to_compute, const unsigned msm_idx_shift, const unsigned c, const unsigned threads_per_bucket, const unsigned max_run_length){ - +__global__ void accumulate_large_buckets_kernel( + P* __restrict__ buckets, + unsigned* __restrict__ bucket_offsets, + unsigned* __restrict__ bucket_sizes, + unsigned* __restrict__ single_bucket_indices, + const unsigned* __restrict__ point_indices, + A* __restrict__ points, + const unsigned nof_buckets, + const unsigned nof_buckets_to_compute, + const unsigned msm_idx_shift, + const unsigned c, + const unsigned threads_per_bucket, + const unsigned max_run_length) +{ unsigned tid = (blockIdx.x * blockDim.x) + threadIdx.x; - unsigned large_bucket_index = tid/threads_per_bucket; - unsigned bucket_segment_index = tid%threads_per_bucket; - if (tid>=nof_buckets_to_compute*threads_per_bucket) { - return; + unsigned large_bucket_index = tid / threads_per_bucket; + unsigned bucket_segment_index = tid % threads_per_bucket; + if (tid >= nof_buckets_to_compute * threads_per_bucket) { return; } + if ((single_bucket_indices[large_bucket_index] & ((1 << c) - 1)) == 0) { // dont need + return; // skip zero buckets } - if ((single_bucket_indices[large_bucket_index]&((1< bucket_segment_index*max_run_length? bucket_sizes[large_bucket_index] - bucket_segment_index*max_run_length :0; - P bucket; - unsigned run_length = min(bucket_size,max_run_length); - for (unsigned i = 0; i < run_length; i++) { //add the relevant points starting from the relevant offset up to the bucket size - unsigned point_ind = point_indices[bucket_offset+i]; + const unsigned bucket_offset = bucket_offsets[large_bucket_index] + bucket_segment_index * max_run_length; + const unsigned bucket_size = bucket_sizes[large_bucket_index] > bucket_segment_index * max_run_length + ? bucket_sizes[large_bucket_index] - bucket_segment_index * max_run_length + : 0; + P bucket; + unsigned run_length = min(bucket_size, max_run_length); + for (unsigned i = 0; i < run_length; + i++) { // add the relevant points starting from the relevant offset up to the bucket size + unsigned point_ind = point_indices[bucket_offset + i]; A point = points[point_ind]; - bucket = i? bucket + point : P::from_affine(point); //init empty buckets + bucket = i ? bucket + point : P::from_affine(point); // init empty buckets } - buckets[write_bucket_index] = run_length? bucket : P::zero(); + buckets[write_bucket_index] = run_length ? bucket : P::zero(); } template -__global__ void distribute_large_buckets_kernel(P* large_buckets, P* buckets, unsigned *single_bucket_indices, unsigned size){ - +__global__ void +distribute_large_buckets_kernel(P* large_buckets, P* buckets, unsigned* single_bucket_indices, unsigned size) +{ unsigned tid = (blockIdx.x * blockDim.x) + threadIdx.x; - if (tid>=size){ - return; - } + if (tid >= size) { return; } buckets[single_bucket_indices[tid]] = large_buckets[tid]; } -//this kernel sums the entire bucket module -//each thread deals with a single bucket module +// this kernel sums the entire bucket module +// each thread deals with a single bucket module template -__global__ void big_triangle_sum_kernel(P* buckets, P* final_sums, unsigned nof_bms, unsigned c){ - +__global__ void big_triangle_sum_kernel(P* buckets, P* final_sums, unsigned nof_bms, unsigned c) +{ unsigned tid = (blockIdx.x * blockDim.x) + threadIdx.x; - if (tid>=nof_bms) return; - #ifdef SIGNED_DIG - unsigned buckets_in_bm = (1<= nof_bms) return; +#ifdef SIGNED_DIG + unsigned buckets_in_bm = (1 << c) + 1; +#else + unsigned buckets_in_bm = (1 << c); +#endif + P line_sum = buckets[(tid + 1) * buckets_in_bm - 1]; final_sums[tid] = line_sum; - for (unsigned i = buckets_in_bm-2; i >0; i--) { - line_sum = line_sum + buckets[tid*buckets_in_bm + i]; //using the running sum method + for (unsigned i = buckets_in_bm - 2; i > 0; i--) { + line_sum = line_sum + buckets[tid * buckets_in_bm + i]; // using the running sum method final_sums[tid] = final_sums[tid] + line_sum; } } -//this kernel uses single scalar multiplication to multiply each bucket by its index -//each thread deals with a single bucket +// this kernel uses single scalar multiplication to multiply each bucket by its index +// each thread deals with a single bucket template -__global__ void ssm_buckets_kernel(P* buckets, unsigned* single_bucket_indices, unsigned nof_buckets, unsigned c){ +__global__ void ssm_buckets_kernel(P* buckets, unsigned* single_bucket_indices, unsigned nof_buckets, unsigned c) +{ unsigned tid = (blockIdx.x * blockDim.x) + threadIdx.x; - if (tid>nof_buckets) return; + if (tid > nof_buckets) return; unsigned bucket_index = single_bucket_indices[tid]; S scalar_bucket_multiplier; - scalar_bucket_multiplier = {bucket_index&((1< -__global__ void last_pass_kernel(P*final_buckets, P*final_sums, unsigned num_sums){ +__global__ void last_pass_kernel(P* final_buckets, P* final_sums, unsigned num_sums) +{ unsigned tid = (blockIdx.x * blockDim.x) + threadIdx.x; - if (tid>num_sums) return; - final_sums[tid] = final_buckets[2*tid+1]; + if (tid > num_sums) return; + final_sums[tid] = final_buckets[2 * tid + 1]; } -//this kernel computes the final result using the double and add algorithm -//it is done by a single thread +// this kernel computes the final result using the double and add algorithm +// it is done by a single thread template -__global__ void final_accumulation_kernel(P* final_sums, P* ones_result, P* final_results, unsigned nof_msms, unsigned nof_bms, unsigned c){ - +__global__ void final_accumulation_kernel( + P* final_sums, P* ones_result, P* final_results, unsigned nof_msms, unsigned nof_bms, unsigned c) +{ unsigned tid = (blockIdx.x * blockDim.x) + threadIdx.x; - if (tid>nof_msms) return; + if (tid > nof_msms) return; P final_result = P::zero(); - for (unsigned i = nof_bms; i >1; i--) - { - final_result = final_result + final_sums[i-1 + tid*nof_bms]; //add - for (unsigned j=0; j 1; i--) { + final_result = final_result + final_sums[i - 1 + tid * nof_bms]; // add + for (unsigned j = 0; j < c; j++) // double { final_result = final_result + final_result; } } - final_results[tid] = final_result + final_sums[tid*nof_bms] + ones_result[0]; - + final_results[tid] = final_result + final_sums[tid * nof_bms] + ones_result[0]; } -//this function computes msm using the bucket method +// this function computes msm using the bucket method template -void bucket_method_msm(unsigned bitsize, unsigned c, S *scalars, A *points, unsigned size, P* final_result, bool on_device, bool big_triangle, unsigned large_bucket_factor, cudaStream_t stream) { - S *d_scalars; - A *d_points; +void bucket_method_msm( + unsigned bitsize, + unsigned c, + S* scalars, + A* points, + unsigned size, + P* final_result, + bool on_device, + bool big_triangle, + unsigned large_bucket_factor, + cudaStream_t stream) +{ + S* d_scalars; + A* d_points; if (!on_device) { - //copy scalars and points to gpu + // copy scalars and points to gpu cudaMallocAsync(&d_scalars, sizeof(S) * size, stream); cudaMallocAsync(&d_points, sizeof(A) * size, stream); cudaMemcpyAsync(d_scalars, scalars, sizeof(S) * size, cudaMemcpyHostToDevice, stream); cudaMemcpyAsync(d_points, points, sizeof(A) * size, cudaMemcpyHostToDevice, stream); - } - else { + } else { d_scalars = scalars; d_points = points; } - P *buckets; - //compute number of bucket modules and number of buckets in each module - unsigned nof_bms = bitsize/c; + P* buckets; + // compute number of bucket modules and number of buckets in each module + unsigned nof_bms = bitsize / c; unsigned msm_log_size = ceil(log2(size)); unsigned bm_bitsize = ceil(log2(nof_bms)); - if (bitsize%c) { - nof_bms++; - } - unsigned top_bm_nof_missing_bits = c*nof_bms - bitsize; - #ifdef SIGNED_DIG - unsigned nof_buckets = nof_bms*((1<<(c-1))+1); //signed digits - #else - unsigned nof_buckets = nof_bms<>>(buckets, nof_buckets); - //accumulate ones - P *ones_results; //fix whole division, in last run in kernel too - const unsigned nof_runs = msm_log_size > 10? (1<<(msm_log_size-6)) : 16; - const unsigned run_length = (size + nof_runs -1)/nof_runs; + // accumulate ones + P* ones_results; // fix whole division, in last run in kernel too + const unsigned nof_runs = msm_log_size > 10 ? (1 << (msm_log_size - 6)) : 16; + const unsigned run_length = (size + nof_runs - 1) / nof_runs; cudaMallocAsync(&ones_results, sizeof(P) * nof_runs, stream); - NUM_THREADS = min(1 << 8,nof_runs); + NUM_THREADS = min(1 << 8, nof_runs); NUM_BLOCKS = (nof_runs + NUM_THREADS - 1) / NUM_THREADS; add_ones_kernel<<>>(d_points, d_scalars, ones_results, size, run_length); - - for (int s=nof_runs>>1;s>0;s>>=1) { - NUM_THREADS = min(MAX_TH,s); + + for (int s = nof_runs >> 1; s > 0; s >>= 1) { + NUM_THREADS = min(MAX_TH, s); NUM_BLOCKS = (s + NUM_THREADS - 1) / NUM_THREADS; - single_stage_multi_reduction_kernel<<>>(ones_results,ones_results,s*2,0,0,0); + single_stage_multi_reduction_kernel<<>>( + ones_results, ones_results, s * 2, 0, 0, 0); } - unsigned *bucket_indices; - unsigned *point_indices; - cudaMallocAsync(&bucket_indices, sizeof(unsigned) * size * (nof_bms+1), stream); - cudaMallocAsync(&point_indices, sizeof(unsigned) * size * (nof_bms+1), stream); + unsigned* bucket_indices; + unsigned* point_indices; + cudaMallocAsync(&bucket_indices, sizeof(unsigned) * size * (nof_bms + 1), stream); + cudaMallocAsync(&point_indices, sizeof(unsigned) * size * (nof_bms + 1), stream); - //split scalars into digits + // split scalars into digits NUM_THREADS = 1 << 10; - NUM_BLOCKS = (size * (nof_bms+1) + NUM_THREADS - 1) / NUM_THREADS; - split_scalars_kernel<<>>(bucket_indices + size, point_indices + size, d_scalars, size, msm_log_size, - nof_bms, bm_bitsize, c, top_bm_nof_missing_bits); //+size - leaving the first bm free for the out of place sort later + NUM_BLOCKS = (size * (nof_bms + 1) + NUM_THREADS - 1) / NUM_THREADS; + split_scalars_kernel<<>>( + bucket_indices + size, point_indices + size, d_scalars, size, msm_log_size, nof_bms, bm_bitsize, c, + top_bm_nof_missing_bits); //+size - leaving the first bm free for the out of place sort later - //sort indices - the indices are sorted from smallest to largest in order to group together the points that belong to each bucket - unsigned *sort_indices_temp_storage{}; + // sort indices - the indices are sorted from smallest to largest in order to group together the points that belong to + // each bucket + unsigned* sort_indices_temp_storage{}; size_t sort_indices_temp_storage_bytes; // The second to last parameter is the default value supplied explicitly to allow passing the stream - // See https://nvlabs.github.io/cub/structcub_1_1_device_radix_sort.html#a65e82152de448c6373ed9563aaf8af7e for more info - cub::DeviceRadixSort::SortPairs(sort_indices_temp_storage, sort_indices_temp_storage_bytes, bucket_indices + size, bucket_indices, - point_indices + size, point_indices, size, 0, sizeof(unsigned) * 8, stream); + // See https://nvlabs.github.io/cub/structcub_1_1_device_radix_sort.html#a65e82152de448c6373ed9563aaf8af7e for more + // info + cub::DeviceRadixSort::SortPairs( + sort_indices_temp_storage, sort_indices_temp_storage_bytes, bucket_indices + size, bucket_indices, + point_indices + size, point_indices, size, 0, sizeof(unsigned) * 8, stream); cudaMallocAsync(&sort_indices_temp_storage, sort_indices_temp_storage_bytes, stream); for (unsigned i = 0; i < nof_bms; i++) { unsigned offset_out = i * size; unsigned offset_in = offset_out + size; // The second to last parameter is the default value supplied explicitly to allow passing the stream - // See https://nvlabs.github.io/cub/structcub_1_1_device_radix_sort.html#a65e82152de448c6373ed9563aaf8af7e for more info - cub::DeviceRadixSort::SortPairs(sort_indices_temp_storage, sort_indices_temp_storage_bytes, bucket_indices + offset_in, bucket_indices + offset_out, - point_indices + offset_in, point_indices + offset_out, size, 0, sizeof(unsigned) * 8, stream); + // See https://nvlabs.github.io/cub/structcub_1_1_device_radix_sort.html#a65e82152de448c6373ed9563aaf8af7e for more + // info + cub::DeviceRadixSort::SortPairs( + sort_indices_temp_storage, sort_indices_temp_storage_bytes, bucket_indices + offset_in, + bucket_indices + offset_out, point_indices + offset_in, point_indices + offset_out, size, 0, sizeof(unsigned) * 8, + stream); } cudaFreeAsync(sort_indices_temp_storage, stream); - //find bucket_sizes - unsigned *single_bucket_indices; - unsigned *bucket_sizes; - unsigned *nof_buckets_to_compute; - cudaMallocAsync(&single_bucket_indices, sizeof(unsigned)*nof_buckets, stream); - cudaMallocAsync(&bucket_sizes, sizeof(unsigned)*nof_buckets, stream); + // find bucket_sizes + unsigned* single_bucket_indices; + unsigned* bucket_sizes; + unsigned* nof_buckets_to_compute; + cudaMallocAsync(&single_bucket_indices, sizeof(unsigned) * nof_buckets, stream); + cudaMallocAsync(&bucket_sizes, sizeof(unsigned) * nof_buckets, stream); cudaMallocAsync(&nof_buckets_to_compute, sizeof(unsigned), stream); - unsigned *encode_temp_storage{}; + unsigned* encode_temp_storage{}; size_t encode_temp_storage_bytes = 0; - cub::DeviceRunLengthEncode::Encode(encode_temp_storage, encode_temp_storage_bytes, bucket_indices, single_bucket_indices, bucket_sizes, - nof_buckets_to_compute, nof_bms*size, stream); + cub::DeviceRunLengthEncode::Encode( + encode_temp_storage, encode_temp_storage_bytes, bucket_indices, single_bucket_indices, bucket_sizes, + nof_buckets_to_compute, nof_bms * size, stream); cudaMallocAsync(&encode_temp_storage, encode_temp_storage_bytes, stream); - cub::DeviceRunLengthEncode::Encode(encode_temp_storage, encode_temp_storage_bytes, bucket_indices, single_bucket_indices, bucket_sizes, - nof_buckets_to_compute, nof_bms*size, stream); + cub::DeviceRunLengthEncode::Encode( + encode_temp_storage, encode_temp_storage_bytes, bucket_indices, single_bucket_indices, bucket_sizes, + nof_buckets_to_compute, nof_bms * size, stream); cudaFreeAsync(encode_temp_storage, stream); - //get offsets - where does each new bucket begin + // get offsets - where does each new bucket begin unsigned* bucket_offsets; - cudaMallocAsync(&bucket_offsets, sizeof(unsigned)*nof_buckets, stream); + cudaMallocAsync(&bucket_offsets, sizeof(unsigned) * nof_buckets, stream); unsigned* offsets_temp_storage{}; size_t offsets_temp_storage_bytes = 0; - cub::DeviceScan::ExclusiveSum(offsets_temp_storage, offsets_temp_storage_bytes, bucket_sizes, bucket_offsets, nof_buckets, stream); + cub::DeviceScan::ExclusiveSum( + offsets_temp_storage, offsets_temp_storage_bytes, bucket_sizes, bucket_offsets, nof_buckets, stream); cudaMallocAsync(&offsets_temp_storage, offsets_temp_storage_bytes, stream); - cub::DeviceScan::ExclusiveSum(offsets_temp_storage, offsets_temp_storage_bytes, bucket_sizes, bucket_offsets, nof_buckets, stream); + cub::DeviceScan::ExclusiveSum( + offsets_temp_storage, offsets_temp_storage_bytes, bucket_sizes, bucket_offsets, nof_buckets, stream); cudaFreeAsync(offsets_temp_storage, stream); - //sort by bucket sizes + // sort by bucket sizes unsigned h_nof_buckets_to_compute; cudaMemcpyAsync(&h_nof_buckets_to_compute, nof_buckets_to_compute, sizeof(unsigned), cudaMemcpyDeviceToHost, stream); - + // if all points are 0 just return point 0 if (h_nof_buckets_to_compute == 0) { if (!on_device) @@ -412,158 +475,174 @@ void bucket_method_msm(unsigned bitsize, unsigned c, S *scalars, A *points, unsi } unsigned* sorted_bucket_sizes; - cudaMallocAsync(&sorted_bucket_sizes, sizeof(unsigned)*h_nof_buckets_to_compute, stream); + cudaMallocAsync(&sorted_bucket_sizes, sizeof(unsigned) * h_nof_buckets_to_compute, stream); unsigned* sorted_bucket_offsets; - cudaMallocAsync(&sorted_bucket_offsets, sizeof(unsigned)*h_nof_buckets_to_compute, stream); + cudaMallocAsync(&sorted_bucket_offsets, sizeof(unsigned) * h_nof_buckets_to_compute, stream); unsigned* sort_offsets_temp_storage{}; size_t sort_offsets_temp_storage_bytes = 0; - cub::DeviceRadixSort::SortPairsDescending(sort_offsets_temp_storage, sort_offsets_temp_storage_bytes, bucket_sizes, - sorted_bucket_sizes, bucket_offsets, sorted_bucket_offsets, h_nof_buckets_to_compute, 0, sizeof(unsigned) * 8, stream); + cub::DeviceRadixSort::SortPairsDescending( + sort_offsets_temp_storage, sort_offsets_temp_storage_bytes, bucket_sizes, sorted_bucket_sizes, bucket_offsets, + sorted_bucket_offsets, h_nof_buckets_to_compute, 0, sizeof(unsigned) * 8, stream); cudaMallocAsync(&sort_offsets_temp_storage, sort_offsets_temp_storage_bytes, stream); - cub::DeviceRadixSort::SortPairsDescending(sort_offsets_temp_storage, sort_offsets_temp_storage_bytes, bucket_sizes, - sorted_bucket_sizes, bucket_offsets, sorted_bucket_offsets, h_nof_buckets_to_compute, 0, sizeof(unsigned) * 8, stream); + cub::DeviceRadixSort::SortPairsDescending( + sort_offsets_temp_storage, sort_offsets_temp_storage_bytes, bucket_sizes, sorted_bucket_sizes, bucket_offsets, + sorted_bucket_offsets, h_nof_buckets_to_compute, 0, sizeof(unsigned) * 8, stream); cudaFreeAsync(sort_offsets_temp_storage, stream); - + unsigned* sorted_single_bucket_indices; - cudaMallocAsync(&sorted_single_bucket_indices, sizeof(unsigned)*h_nof_buckets_to_compute, stream); + cudaMallocAsync(&sorted_single_bucket_indices, sizeof(unsigned) * h_nof_buckets_to_compute, stream); unsigned* sort_single_temp_storage{}; size_t sort_single_temp_storage_bytes = 0; - cub::DeviceRadixSort::SortPairsDescending(sort_single_temp_storage, sort_single_temp_storage_bytes, bucket_sizes, - sorted_bucket_sizes, single_bucket_indices, sorted_single_bucket_indices, h_nof_buckets_to_compute, 0, sizeof(unsigned) * 8, stream); + cub::DeviceRadixSort::SortPairsDescending( + sort_single_temp_storage, sort_single_temp_storage_bytes, bucket_sizes, sorted_bucket_sizes, single_bucket_indices, + sorted_single_bucket_indices, h_nof_buckets_to_compute, 0, sizeof(unsigned) * 8, stream); cudaMallocAsync(&sort_single_temp_storage, sort_single_temp_storage_bytes, stream); - cub::DeviceRadixSort::SortPairsDescending(sort_single_temp_storage, sort_single_temp_storage_bytes, bucket_sizes, - sorted_bucket_sizes, single_bucket_indices, sorted_single_bucket_indices, h_nof_buckets_to_compute, 0, sizeof(unsigned) * 8, stream); + cub::DeviceRadixSort::SortPairsDescending( + sort_single_temp_storage, sort_single_temp_storage_bytes, bucket_sizes, sorted_bucket_sizes, single_bucket_indices, + sorted_single_bucket_indices, h_nof_buckets_to_compute, 0, sizeof(unsigned) * 8, stream); cudaFreeAsync(sort_single_temp_storage, stream); - //find large buckets - unsigned avarage_size = size/(1<>>(sorted_bucket_sizes,h_nof_buckets_to_compute,bucket_th,cutoff_run_length,nof_large_buckets); + find_cutoff_kernel<<>>( + sorted_bucket_sizes, h_nof_buckets_to_compute, bucket_th, cutoff_run_length, nof_large_buckets); unsigned h_nof_large_buckets; cudaMemcpyAsync(&h_nof_large_buckets, nof_large_buckets, sizeof(unsigned), cudaMemcpyDeviceToHost, stream); - unsigned *max_res; - cudaMallocAsync(&max_res, sizeof(unsigned)*2, stream); - find_max_size<<<1,1,0,stream>>>(sorted_bucket_sizes,sorted_single_bucket_indices,c,max_res); - + unsigned* max_res; + cudaMallocAsync(&max_res, sizeof(unsigned) * 2, stream); + find_max_size<<<1, 1, 0, stream>>>(sorted_bucket_sizes, sorted_single_bucket_indices, c, max_res); + unsigned h_max_res[2]; - cudaMemcpyAsync(h_max_res, max_res, sizeof(unsigned)*2, cudaMemcpyDeviceToHost, stream); + cudaMemcpyAsync(h_max_res, max_res, sizeof(unsigned) * 2, cudaMemcpyDeviceToHost, stream); unsigned h_largest_bucket_size = h_max_res[0]; unsigned h_nof_zero_large_buckets = h_max_res[1]; - unsigned large_buckets_to_compute = h_nof_large_buckets>h_nof_zero_large_buckets? h_nof_large_buckets-h_nof_zero_large_buckets : 0; + unsigned large_buckets_to_compute = + h_nof_large_buckets > h_nof_zero_large_buckets ? h_nof_large_buckets - h_nof_zero_large_buckets : 0; cudaStream_t stream2; cudaStreamCreate(&stream2); P* large_buckets; - if (large_buckets_to_compute>0 && bucket_th>0) { - unsigned threads_per_bucket = 1<<(unsigned)ceil(log2((h_largest_bucket_size + bucket_th - 1) / bucket_th)); //global param + if (large_buckets_to_compute > 0 && bucket_th > 0) { + unsigned threads_per_bucket = + 1 << (unsigned)ceil(log2((h_largest_bucket_size + bucket_th - 1) / bucket_th)); // global param unsigned max_bucket_size_run_length = (h_largest_bucket_size + threads_per_bucket - 1) / threads_per_bucket; - unsigned total_large_buckets_size = large_buckets_to_compute*threads_per_bucket; - cudaMallocAsync(&large_buckets, sizeof(P)*total_large_buckets_size, stream); + unsigned total_large_buckets_size = large_buckets_to_compute * threads_per_bucket; + cudaMallocAsync(&large_buckets, sizeof(P) * total_large_buckets_size, stream); - NUM_THREADS = min(1 << 8,total_large_buckets_size); + NUM_THREADS = min(1 << 8, total_large_buckets_size); NUM_BLOCKS = (total_large_buckets_size + NUM_THREADS - 1) / NUM_THREADS; - accumulate_large_buckets_kernel<<>>(large_buckets, sorted_bucket_offsets+h_nof_zero_large_buckets, sorted_bucket_sizes+h_nof_zero_large_buckets, sorted_single_bucket_indices+h_nof_zero_large_buckets, point_indices, - d_points, nof_buckets, large_buckets_to_compute, c+bm_bitsize, c, threads_per_bucket, max_bucket_size_run_length); - - //reduce - for (int s=total_large_buckets_size>>1;s>large_buckets_to_compute-1;s>>=1) { - NUM_THREADS = min(MAX_TH,s); + accumulate_large_buckets_kernel<<>>( + large_buckets, sorted_bucket_offsets + h_nof_zero_large_buckets, sorted_bucket_sizes + h_nof_zero_large_buckets, + sorted_single_bucket_indices + h_nof_zero_large_buckets, point_indices, d_points, nof_buckets, + large_buckets_to_compute, c + bm_bitsize, c, threads_per_bucket, max_bucket_size_run_length); + + // reduce + for (int s = total_large_buckets_size >> 1; s > large_buckets_to_compute - 1; s >>= 1) { + NUM_THREADS = min(MAX_TH, s); NUM_BLOCKS = (s + NUM_THREADS - 1) / NUM_THREADS; - single_stage_multi_reduction_kernel<<>>(large_buckets,large_buckets,s*2,0,0,0); + single_stage_multi_reduction_kernel<<>>( + large_buckets, large_buckets, s * 2, 0, 0, 0); } - - //distribute - NUM_THREADS = min(MAX_TH,large_buckets_to_compute); + + // distribute + NUM_THREADS = min(MAX_TH, large_buckets_to_compute); NUM_BLOCKS = (large_buckets_to_compute + NUM_THREADS - 1) / NUM_THREADS; - distribute_large_buckets_kernel<<>>(large_buckets,buckets,sorted_single_bucket_indices+h_nof_zero_large_buckets,large_buckets_to_compute); - } - else { + distribute_large_buckets_kernel<<>>( + large_buckets, buckets, sorted_single_bucket_indices + h_nof_zero_large_buckets, large_buckets_to_compute); + } else { h_nof_large_buckets = 0; } - - //launch the accumulation kernel with maximum threads + + // launch the accumulation kernel with maximum threads if (h_nof_buckets_to_compute > h_nof_large_buckets) { NUM_THREADS = 1 << 8; - NUM_BLOCKS = (h_nof_buckets_to_compute-h_nof_large_buckets + NUM_THREADS - 1) / NUM_THREADS; - accumulate_buckets_kernel<<>>(buckets, sorted_bucket_offsets+h_nof_large_buckets, sorted_bucket_sizes+h_nof_large_buckets, sorted_single_bucket_indices+h_nof_large_buckets, point_indices, - d_points, nof_buckets, h_nof_buckets_to_compute-h_nof_large_buckets, c+bm_bitsize, c); + NUM_BLOCKS = (h_nof_buckets_to_compute - h_nof_large_buckets + NUM_THREADS - 1) / NUM_THREADS; + accumulate_buckets_kernel<<>>( + buckets, sorted_bucket_offsets + h_nof_large_buckets, sorted_bucket_sizes + h_nof_large_buckets, + sorted_single_bucket_indices + h_nof_large_buckets, point_indices, d_points, nof_buckets, + h_nof_buckets_to_compute - h_nof_large_buckets, c + bm_bitsize, c); } // all the large buckets need to be accumulated before the final summation cudaStreamSynchronize(stream2); cudaStreamDestroy(stream2); - #ifdef SSM_SUM - //sum each bucket - NUM_THREADS = 1 << 10; - NUM_BLOCKS = (nof_buckets + NUM_THREADS - 1) / NUM_THREADS; - ssm_buckets_kernel<<>>(buckets, single_bucket_indices, nof_buckets, c); - - //sum each bucket module - P* final_results; - cudaMallocAsync(&final_results, sizeof(P) * nof_bms, stream); - NUM_THREADS = 1<>>(buckets, final_results); - #endif +#ifdef SSM_SUM + // sum each bucket + NUM_THREADS = 1 << 10; + NUM_BLOCKS = (nof_buckets + NUM_THREADS - 1) / NUM_THREADS; + ssm_buckets_kernel + <<>>(buckets, single_bucket_indices, nof_buckets, c); + + // sum each bucket module + P* final_results; + cudaMallocAsync(&final_results, sizeof(P) * nof_bms, stream); + NUM_THREADS = 1 << c; + NUM_BLOCKS = nof_bms; + sum_reduction_kernel<<>>(buckets, final_results); +#endif P* d_final_result; - if (!on_device) - cudaMallocAsync(&d_final_result, sizeof(P), stream); + if (!on_device) cudaMallocAsync(&d_final_result, sizeof(P), stream); P* final_results; - if (big_triangle){ + if (big_triangle) { cudaMallocAsync(&final_results, sizeof(P) * nof_bms, stream); - //launch the bucket module sum kernel - a thread for each bucket module + // launch the bucket module sum kernel - a thread for each bucket module NUM_THREADS = nof_bms; NUM_BLOCKS = 1; - #ifdef SIGNED_DIG - big_triangle_sum_kernel<<>>(buckets, final_results, nof_bms, c-1); //sighed digits - #else - big_triangle_sum_kernel<<>>(buckets, final_results, nof_bms, c); - #endif - } - else { +#ifdef SIGNED_DIG + big_triangle_sum_kernel<<>>( + buckets, final_results, nof_bms, c - 1); // sighed digits +#else + big_triangle_sum_kernel<<>>(buckets, final_results, nof_bms, c); +#endif + } else { unsigned source_bits_count = c; - bool odd_source_c = source_bits_count%2; + bool odd_source_c = source_bits_count % 2; unsigned source_windows_count = nof_bms; unsigned source_buckets_count = nof_buckets; - P *source_buckets = buckets; + P* source_buckets = buckets; buckets = nullptr; - P *target_buckets; - P *temp_buckets1; - P *temp_buckets2; + P* target_buckets; + P* temp_buckets1; + P* temp_buckets2; for (unsigned i = 0;; i++) { - const unsigned target_bits_count = (source_bits_count + 1) >> 1; //c/2=8 - const unsigned target_windows_count = source_windows_count << 1; //nof bms*2 = 32 + const unsigned target_bits_count = (source_bits_count + 1) >> 1; // c/2=8 + const unsigned target_windows_count = source_windows_count << 1; // nof bms*2 = 32 const unsigned target_buckets_count = target_windows_count << target_bits_count; // bms*2^c = 32*2^8 - cudaMallocAsync(&target_buckets, sizeof(P) * target_buckets_count,stream); //32*2^8*2^7 buckets - cudaMallocAsync(&temp_buckets1, sizeof(P) * source_buckets_count/2,stream); //32*2^8*2^7 buckets - cudaMallocAsync(&temp_buckets2, sizeof(P) * source_buckets_count/2,stream); //32*2^8*2^7 buckets - - if (source_bits_count>0) { - for(unsigned j=0;j>(1+j))); - NUM_BLOCKS = ((source_buckets_count>>(1+j)) + NUM_THREADS - 1) / NUM_THREADS; - single_stage_multi_reduction_kernel<<>>(j==0?source_buckets:temp_buckets1,j==target_bits_count-1? target_buckets: temp_buckets1,1<<(source_bits_count-j),j==target_bits_count-1? 1<>(1+j)); - NUM_THREADS = min(MAX_TH,nof_threads); + cudaMallocAsync(&target_buckets, sizeof(P) * target_buckets_count, stream); // 32*2^8*2^7 buckets + cudaMallocAsync(&temp_buckets1, sizeof(P) * source_buckets_count / 2, stream); // 32*2^8*2^7 buckets + cudaMallocAsync(&temp_buckets2, sizeof(P) * source_buckets_count / 2, stream); // 32*2^8*2^7 buckets + + if (source_bits_count > 0) { + for (unsigned j = 0; j < target_bits_count; j++) { + unsigned last_j = target_bits_count - 1; + NUM_THREADS = min(MAX_TH, (source_buckets_count >> (1 + j))); + NUM_BLOCKS = ((source_buckets_count >> (1 + j)) + NUM_THREADS - 1) / NUM_THREADS; + single_stage_multi_reduction_kernel<<>>( + j == 0 ? source_buckets : temp_buckets1, j == target_bits_count - 1 ? target_buckets : temp_buckets1, + 1 << (source_bits_count - j), j == target_bits_count - 1 ? 1 << target_bits_count : 0, 0, 0); + + unsigned nof_threads = (source_buckets_count >> (1 + j)); + NUM_THREADS = min(MAX_TH, nof_threads); NUM_BLOCKS = (nof_threads + NUM_THREADS - 1) / NUM_THREADS; - single_stage_multi_reduction_kernel<<>>(j==0?source_buckets:temp_buckets2,j==target_bits_count-1? target_buckets: temp_buckets2,1<<(target_bits_count-j),j==target_bits_count-1? 1<>>( + j == 0 ? source_buckets : temp_buckets2, j == target_bits_count - 1 ? target_buckets : temp_buckets2, + 1 << (target_bits_count - j), j == target_bits_count - 1 ? 1 << target_bits_count : 0, 1, 0); } } if (target_bits_count == 1) { @@ -571,166 +650,184 @@ void bucket_method_msm(unsigned bitsize, unsigned c, S *scalars, A *points, unsi cudaMallocAsync(&final_results, sizeof(P) * nof_bms, stream); NUM_THREADS = 32; NUM_BLOCKS = (nof_bms + NUM_THREADS - 1) / NUM_THREADS; - last_pass_kernel<<>>(target_buckets,final_results,nof_bms); + last_pass_kernel<<>>(target_buckets, final_results, nof_bms); c = 1; - cudaFreeAsync(source_buckets,stream); - cudaFreeAsync(target_buckets,stream); - cudaFreeAsync(temp_buckets1,stream); - cudaFreeAsync(temp_buckets2,stream); + cudaFreeAsync(source_buckets, stream); + cudaFreeAsync(target_buckets, stream); + cudaFreeAsync(temp_buckets1, stream); + cudaFreeAsync(temp_buckets2, stream); break; } - cudaFreeAsync(source_buckets,stream); - cudaFreeAsync(temp_buckets1,stream); - cudaFreeAsync(temp_buckets2,stream); + cudaFreeAsync(source_buckets, stream); + cudaFreeAsync(temp_buckets1, stream); + cudaFreeAsync(temp_buckets2, stream); source_buckets = target_buckets; target_buckets = nullptr; temp_buckets1 = nullptr; temp_buckets2 = nullptr; source_bits_count = target_bits_count; - odd_source_c = source_bits_count%2; + odd_source_c = source_bits_count % 2; source_windows_count = target_windows_count; source_buckets_count = target_buckets_count; } } - //launch the double and add kernel, a single thread - final_accumulation_kernel<<<1,1,0,stream>>>(final_results, ones_results, on_device ? final_result : d_final_result, 1, nof_bms, c); + // launch the double and add kernel, a single thread + final_accumulation_kernel + <<<1, 1, 0, stream>>>(final_results, ones_results, on_device ? final_result : d_final_result, 1, nof_bms, c); cudaFreeAsync(final_results, stream); cudaStreamSynchronize(stream); - if (!on_device) - cudaMemcpyAsync(final_result, d_final_result, sizeof(P), cudaMemcpyDeviceToHost, stream); + if (!on_device) cudaMemcpyAsync(final_result, d_final_result, sizeof(P), cudaMemcpyDeviceToHost, stream); - //free memory + // free memory if (!on_device) { cudaFreeAsync(d_points, stream); cudaFreeAsync(d_scalars, stream); cudaFreeAsync(d_final_result, stream); } cudaFreeAsync(buckets, stream); - #ifndef PHASE1_TEST +#ifndef PHASE1_TEST cudaFreeAsync(bucket_indices, stream); cudaFreeAsync(point_indices, stream); cudaFreeAsync(single_bucket_indices, stream); cudaFreeAsync(bucket_sizes, stream); cudaFreeAsync(nof_buckets_to_compute, stream); cudaFreeAsync(bucket_offsets, stream); - #endif - cudaFreeAsync(sorted_bucket_sizes,stream); - cudaFreeAsync(sorted_bucket_offsets,stream); - cudaFreeAsync(sorted_single_bucket_indices,stream); - cudaFreeAsync(nof_large_buckets,stream); - cudaFreeAsync(max_res,stream); - if (large_buckets_to_compute>0 && bucket_th>0) cudaFreeAsync(large_buckets,stream); +#endif + cudaFreeAsync(sorted_bucket_sizes, stream); + cudaFreeAsync(sorted_bucket_offsets, stream); + cudaFreeAsync(sorted_single_bucket_indices, stream); + cudaFreeAsync(nof_large_buckets, stream); + cudaFreeAsync(max_res, stream); + if (large_buckets_to_compute > 0 && bucket_th > 0) cudaFreeAsync(large_buckets, stream); cudaFreeAsync(ones_results, stream); cudaStreamSynchronize(stream); } -//this function computes multiple msms using the bucket method - currently isn't working on this branch +// this function computes multiple msms using the bucket method - currently isn't working on this branch template -void batched_bucket_method_msm(unsigned bitsize, unsigned c, S *scalars, A *points, unsigned batch_size, unsigned msm_size, P* final_results, bool on_device, cudaStream_t stream){ - +void batched_bucket_method_msm( + unsigned bitsize, + unsigned c, + S* scalars, + A* points, + unsigned batch_size, + unsigned msm_size, + P* final_results, + bool on_device, + cudaStream_t stream) +{ unsigned total_size = batch_size * msm_size; - S *d_scalars; - A *d_points; + S* d_scalars; + A* d_points; if (!on_device) { - //copy scalars and point to gpu + // copy scalars and point to gpu cudaMallocAsync(&d_scalars, sizeof(S) * total_size, stream); cudaMallocAsync(&d_points, sizeof(A) * total_size, stream); cudaMemcpyAsync(d_scalars, scalars, sizeof(S) * total_size, cudaMemcpyHostToDevice, stream); cudaMemcpyAsync(d_points, points, sizeof(A) * total_size, cudaMemcpyHostToDevice, stream); - } - else { + } else { d_scalars = scalars; d_points = points; } - P *buckets; - //compute number of bucket modules and number of buckets in each module - unsigned nof_bms = bitsize/c; - if (bitsize%c){ - nof_bms++; - } + P* buckets; + // compute number of bucket modules and number of buckets in each module + unsigned nof_bms = bitsize / c; + if (bitsize % c) { nof_bms++; } unsigned msm_log_size = ceil(log2(msm_size)); unsigned bm_bitsize = ceil(log2(nof_bms)); - unsigned nof_buckets = (nof_bms<>>(buckets, total_nof_buckets); + initialize_buckets_kernel<<>>(buckets, total_nof_buckets); - unsigned *bucket_indices; - unsigned *point_indices; + unsigned* bucket_indices; + unsigned* point_indices; cudaMallocAsync(&bucket_indices, sizeof(unsigned) * (total_size * nof_bms + msm_size), stream); cudaMallocAsync(&point_indices, sizeof(unsigned) * (total_size * nof_bms + msm_size), stream); - //split scalars into digits + // split scalars into digits NUM_THREADS = 1 << 8; NUM_BLOCKS = (total_size * nof_bms + msm_size + NUM_THREADS - 1) / NUM_THREADS; - split_scalars_kernel<<>>(bucket_indices + msm_size, point_indices + msm_size, d_scalars, total_size, - msm_log_size, nof_bms, bm_bitsize, c,0); //+size - leaving the first bm free for the out of place sort later + split_scalars_kernel<<>>( + bucket_indices + msm_size, point_indices + msm_size, d_scalars, total_size, msm_log_size, nof_bms, bm_bitsize, c, + 0); //+size - leaving the first bm free for the out of place sort later - //sort indices - the indices are sorted from smallest to largest in order to group together the points that belong to each bucket - unsigned *sorted_bucket_indices; - unsigned *sorted_point_indices; + // sort indices - the indices are sorted from smallest to largest in order to group together the points that belong to + // each bucket + unsigned* sorted_bucket_indices; + unsigned* sorted_point_indices; cudaMallocAsync(&sorted_bucket_indices, sizeof(unsigned) * (total_size * nof_bms), stream); cudaMallocAsync(&sorted_point_indices, sizeof(unsigned) * (total_size * nof_bms), stream); - unsigned *sort_indices_temp_storage{}; + unsigned* sort_indices_temp_storage{}; size_t sort_indices_temp_storage_bytes; // The second to last parameter is the default value supplied explicitly to allow passing the stream - // See https://nvlabs.github.io/cub/structcub_1_1_device_radix_sort.html#a65e82152de448c6373ed9563aaf8af7e for more info - cub::DeviceRadixSort::SortPairs(sort_indices_temp_storage, sort_indices_temp_storage_bytes, bucket_indices + msm_size, sorted_bucket_indices, - point_indices + msm_size, sorted_point_indices, total_size * nof_bms, 0, sizeof(unsigned)*8, stream); + // See https://nvlabs.github.io/cub/structcub_1_1_device_radix_sort.html#a65e82152de448c6373ed9563aaf8af7e for more + // info + cub::DeviceRadixSort::SortPairs( + sort_indices_temp_storage, sort_indices_temp_storage_bytes, bucket_indices + msm_size, sorted_bucket_indices, + point_indices + msm_size, sorted_point_indices, total_size * nof_bms, 0, sizeof(unsigned) * 8, stream); cudaMallocAsync(&sort_indices_temp_storage, sort_indices_temp_storage_bytes, stream); // The second to last parameter is the default value supplied explicitly to allow passing the stream - // See https://nvlabs.github.io/cub/structcub_1_1_device_radix_sort.html#a65e82152de448c6373ed9563aaf8af7e for more info - cub::DeviceRadixSort::SortPairs(sort_indices_temp_storage, sort_indices_temp_storage_bytes, bucket_indices + msm_size, sorted_bucket_indices, - point_indices + msm_size, sorted_point_indices, total_size * nof_bms, 0, sizeof(unsigned)*8, stream); + // See https://nvlabs.github.io/cub/structcub_1_1_device_radix_sort.html#a65e82152de448c6373ed9563aaf8af7e for more + // info + cub::DeviceRadixSort::SortPairs( + sort_indices_temp_storage, sort_indices_temp_storage_bytes, bucket_indices + msm_size, sorted_bucket_indices, + point_indices + msm_size, sorted_point_indices, total_size * nof_bms, 0, sizeof(unsigned) * 8, stream); cudaFreeAsync(sort_indices_temp_storage, stream); - //find bucket_sizes - unsigned *single_bucket_indices; - unsigned *bucket_sizes; - unsigned *total_nof_buckets_to_compute; - cudaMallocAsync(&single_bucket_indices, sizeof(unsigned)*total_nof_buckets, stream); - cudaMallocAsync(&bucket_sizes, sizeof(unsigned)*total_nof_buckets, stream); + // find bucket_sizes + unsigned* single_bucket_indices; + unsigned* bucket_sizes; + unsigned* total_nof_buckets_to_compute; + cudaMallocAsync(&single_bucket_indices, sizeof(unsigned) * total_nof_buckets, stream); + cudaMallocAsync(&bucket_sizes, sizeof(unsigned) * total_nof_buckets, stream); cudaMallocAsync(&total_nof_buckets_to_compute, sizeof(unsigned), stream); - unsigned *encode_temp_storage{}; + unsigned* encode_temp_storage{}; size_t encode_temp_storage_bytes = 0; - cub::DeviceRunLengthEncode::Encode(encode_temp_storage, encode_temp_storage_bytes, sorted_bucket_indices, single_bucket_indices, bucket_sizes, - total_nof_buckets_to_compute, nof_bms*total_size, stream); + cub::DeviceRunLengthEncode::Encode( + encode_temp_storage, encode_temp_storage_bytes, sorted_bucket_indices, single_bucket_indices, bucket_sizes, + total_nof_buckets_to_compute, nof_bms * total_size, stream); cudaMallocAsync(&encode_temp_storage, encode_temp_storage_bytes, stream); - cub::DeviceRunLengthEncode::Encode(encode_temp_storage, encode_temp_storage_bytes, sorted_bucket_indices, single_bucket_indices, bucket_sizes, - total_nof_buckets_to_compute, nof_bms*total_size, stream); + cub::DeviceRunLengthEncode::Encode( + encode_temp_storage, encode_temp_storage_bytes, sorted_bucket_indices, single_bucket_indices, bucket_sizes, + total_nof_buckets_to_compute, nof_bms * total_size, stream); cudaFreeAsync(encode_temp_storage, stream); - //get offsets - where does each new bucket begin + // get offsets - where does each new bucket begin unsigned* bucket_offsets; - cudaMallocAsync(&bucket_offsets, sizeof(unsigned)*total_nof_buckets, stream); + cudaMallocAsync(&bucket_offsets, sizeof(unsigned) * total_nof_buckets, stream); unsigned* offsets_temp_storage{}; size_t offsets_temp_storage_bytes = 0; - cub::DeviceScan::ExclusiveSum(offsets_temp_storage, offsets_temp_storage_bytes, bucket_sizes, bucket_offsets, total_nof_buckets, stream); + cub::DeviceScan::ExclusiveSum( + offsets_temp_storage, offsets_temp_storage_bytes, bucket_sizes, bucket_offsets, total_nof_buckets, stream); cudaMallocAsync(&offsets_temp_storage, offsets_temp_storage_bytes, stream); - cub::DeviceScan::ExclusiveSum(offsets_temp_storage, offsets_temp_storage_bytes, bucket_sizes, bucket_offsets, total_nof_buckets, stream); + cub::DeviceScan::ExclusiveSum( + offsets_temp_storage, offsets_temp_storage_bytes, bucket_sizes, bucket_offsets, total_nof_buckets, stream); cudaFreeAsync(offsets_temp_storage, stream); - //launch the accumulation kernel with maximum threads - // NUM_THREADS = 1 << 8; - // NUM_BLOCKS = (total_nof_buckets + NUM_THREADS - 1) / NUM_THREADS; - // accumulate_buckets_kernel<<>>(buckets, bucket_offsets, bucket_sizes, single_bucket_indices, sorted_point_indices, - // d_points, nof_buckets, total_nof_buckets_to_compute, c+bm_bitsize,c); + // launch the accumulation kernel with maximum threads + // NUM_THREADS = 1 << 8; + // NUM_BLOCKS = (total_nof_buckets + NUM_THREADS - 1) / NUM_THREADS; + // accumulate_buckets_kernel<<>>(buckets, bucket_offsets, bucket_sizes, + // single_bucket_indices, sorted_point_indices, + // d_points, nof_buckets, total_nof_buckets_to_compute, + // c+bm_bitsize,c); // #ifdef SSM_SUM // //sum each bucket // NUM_THREADS = 1 << 10; // NUM_BLOCKS = (nof_buckets + NUM_THREADS - 1) / NUM_THREADS; // ssm_buckets_kernel<<>>(buckets, single_bucket_indices, nof_buckets, c); - + // //sum each bucket module // P* final_results; // cudaMalloc(&final_results, sizeof(P) * nof_bms); @@ -740,30 +837,31 @@ void batched_bucket_method_msm(unsigned bitsize, unsigned c, S *scalars, A *poin // #endif // #ifdef BIG_TRIANGLE - P* bm_sums; - cudaMallocAsync(&bm_sums, sizeof(P) * nof_bms * batch_size, stream); - //launch the bucket module sum kernel - a thread for each bucket module - NUM_THREADS = 1<<8; - NUM_BLOCKS = (nof_bms*batch_size + NUM_THREADS - 1) / NUM_THREADS; - big_triangle_sum_kernel<<>>(buckets, bm_sums, nof_bms*batch_size, c); + P* bm_sums; + cudaMallocAsync(&bm_sums, sizeof(P) * nof_bms * batch_size, stream); + // launch the bucket module sum kernel - a thread for each bucket module + NUM_THREADS = 1 << 8; + NUM_BLOCKS = (nof_bms * batch_size + NUM_THREADS - 1) / NUM_THREADS; + big_triangle_sum_kernel<<>>(buckets, bm_sums, nof_bms * batch_size, c); // #endif P* d_final_results; - if (!on_device) - cudaMallocAsync(&d_final_results, sizeof(P)*batch_size, stream); + if (!on_device) cudaMallocAsync(&d_final_results, sizeof(P) * batch_size, stream); - //launch the double and add kernel, a single thread for each msm - NUM_THREADS = 1<<8; + // launch the double and add kernel, a single thread for each msm + NUM_THREADS = 1 << 8; NUM_BLOCKS = (batch_size + NUM_THREADS - 1) / NUM_THREADS; - final_accumulation_kernel<<>>(bm_sums,bm_sums, on_device ? final_results : d_final_results, batch_size, nof_bms, c); - - final_accumulation_kernel<<>>(bm_sums,bm_sums, on_device ? final_results : d_final_results, batch_size, nof_bms, c); + final_accumulation_kernel<<>>( + bm_sums, bm_sums, on_device ? final_results : d_final_results, batch_size, nof_bms, c); - //copy final result to host + final_accumulation_kernel<<>>( + bm_sums, bm_sums, on_device ? final_results : d_final_results, batch_size, nof_bms, c); + + // copy final result to host if (!on_device) - cudaMemcpyAsync(final_results, d_final_results, sizeof(P)*batch_size, cudaMemcpyDeviceToHost, stream); + cudaMemcpyAsync(final_results, d_final_results, sizeof(P) * batch_size, cudaMemcpyDeviceToHost, stream); - //free memory + // free memory if (!on_device) { cudaFreeAsync(d_points, stream); cudaFreeAsync(d_scalars, stream); @@ -783,92 +881,97 @@ void batched_bucket_method_msm(unsigned bitsize, unsigned c, S *scalars, A *poin cudaStreamSynchronize(stream); } - -//this kernel converts affine points to projective points -//each thread deals with a single point +// this kernel converts affine points to projective points +// each thread deals with a single point template -__global__ void to_proj_kernel(A* affine_points, P* proj_points, unsigned N){ - +__global__ void to_proj_kernel(A* affine_points, P* proj_points, unsigned N) +{ unsigned tid = (blockIdx.x * blockDim.x) + threadIdx.x; if (tid < N) proj_points[tid] = P::from_affine(affine_points[tid]); } -//the function computes msm using ssm +// the function computes msm using ssm template -void short_msm(S *h_scalars, A *h_points, unsigned size, P* h_final_result, cudaStream_t stream){ //works up to 2^8 - S *scalars; - A *a_points; - P *p_points; - P *results; +void short_msm(S* h_scalars, A* h_points, unsigned size, P* h_final_result, cudaStream_t stream) +{ // works up to 2^8 + S* scalars; + A* a_points; + P* p_points; + P* results; cudaMallocAsync(&scalars, sizeof(S) * size, stream); cudaMallocAsync(&a_points, sizeof(A) * size, stream); cudaMallocAsync(&p_points, sizeof(P) * size, stream); cudaMallocAsync(&results, sizeof(P) * size, stream); - //copy inputs to device + // copy inputs to device cudaMemcpyAsync(scalars, h_scalars, sizeof(S) * size, cudaMemcpyHostToDevice, stream); cudaMemcpyAsync(a_points, h_points, sizeof(A) * size, cudaMemcpyHostToDevice, stream); - //convert to projective representation and multiply each point by its scalar using single scalar multiplication + // convert to projective representation and multiply each point by its scalar using single scalar multiplication unsigned NUM_THREADS = size; - to_proj_kernel<<<1,NUM_THREADS, 0, stream>>>(a_points, p_points, size); - ssm_kernel<<<1,NUM_THREADS, 0, stream>>>(scalars, p_points, results, size); + to_proj_kernel<<<1, NUM_THREADS, 0, stream>>>(a_points, p_points, size); + ssm_kernel<<<1, NUM_THREADS, 0, stream>>>(scalars, p_points, results, size); - P *final_result; + P* final_result; cudaMallocAsync(&final_result, sizeof(P), stream); - //assuming msm size is a power of 2 - //sum all the ssm results + // assuming msm size is a power of 2 + // sum all the ssm results NUM_THREADS = size; - sum_reduction_kernel<<<1,NUM_THREADS, 0, stream>>>(results, final_result); + sum_reduction_kernel<<<1, NUM_THREADS, 0, stream>>>(results, final_result); - //copy result to host + // copy result to host cudaStreamSynchronize(stream); cudaMemcpyAsync(h_final_result, final_result, sizeof(P), cudaMemcpyDeviceToHost, stream); - //free memory + // free memory cudaFreeAsync(scalars, stream); cudaFreeAsync(a_points, stream); cudaFreeAsync(p_points, stream); cudaFreeAsync(results, stream); cudaFreeAsync(final_result, stream); - } -//the function computes msm on the host using the naive method +// the function computes msm on the host using the naive method template -void reference_msm(S* scalars, A* a_points, unsigned size){ - - P *points = new P[size]; +void reference_msm(S* scalars, A* a_points, unsigned size) +{ + P* points = new P[size]; // P points[size]; - for (unsigned i = 0; i < size ; i++) - { + for (unsigned i = 0; i < size; i++) { points[i] = P::from_affine(a_points[i]); } P res = P::zero(); - - for (unsigned i = 0; i < size; i++) - { - res = res + scalars[i]*points[i]; + + for (unsigned i = 0; i < size; i++) { + res = res + scalars[i] * points[i]; } - std::cout<<"reference results"< -void large_msm(S* scalars, A* points, unsigned size, P* result, bool on_device, bool big_triangle, unsigned large_bucket_factor, cudaStream_t stream){ +void large_msm( + S* scalars, + A* points, + unsigned size, + P* result, + bool on_device, + bool big_triangle, + unsigned large_bucket_factor, + cudaStream_t stream) +{ unsigned c = 16; unsigned bitsize = S::NBITS; bucket_method_msm(bitsize, c, scalars, points, size, result, on_device, big_triangle, large_bucket_factor, stream); @@ -876,7 +979,9 @@ void large_msm(S* scalars, A* points, unsigned size, P* result, bool on_device, // this function is used to compute a batches of msms of size larger than 256 - currently isn't working on this branch template -void batched_large_msm(S* scalars, A* points, unsigned batch_size, unsigned msm_size, P* result, bool on_device, cudaStream_t stream){ +void batched_large_msm( + S* scalars, A* points, unsigned batch_size, unsigned msm_size, P* result, bool on_device, cudaStream_t stream) +{ unsigned c = get_optimal_c(msm_size); unsigned bitsize = 255; batched_bucket_method_msm(bitsize, c, scalars, points, batch_size, msm_size, result, on_device, stream); diff --git a/icicle/appUtils/msm/msm.cuh b/icicle/appUtils/msm/msm.cuh index 35cf59b1..d66aa580 100644 --- a/icicle/appUtils/msm/msm.cuh +++ b/icicle/appUtils/msm/msm.cuh @@ -3,19 +3,46 @@ #pragma once template -void bucket_method_msm(unsigned bitsize, unsigned c, S *scalars, A *points, unsigned size, P* final_result, bool on_device, bool big_triangle, cudaStream_t stream); +void bucket_method_msm( + unsigned bitsize, + unsigned c, + S* scalars, + A* points, + unsigned size, + P* final_result, + bool on_device, + bool big_triangle, + cudaStream_t stream); template -void batched_bucket_method_msm(unsigned bitsize, unsigned c, S *scalars, A *points, unsigned batch_size, unsigned msm_size, P* final_results, bool on_device, cudaStream_t stream); +void batched_bucket_method_msm( + unsigned bitsize, + unsigned c, + S* scalars, + A* points, + unsigned batch_size, + unsigned msm_size, + P* final_results, + bool on_device, + cudaStream_t stream); template -void batched_large_msm(S* scalars, A* points, unsigned batch_size, unsigned msm_size, P* result, bool on_device, cudaStream_t stream); +void batched_large_msm( + S* scalars, A* points, unsigned batch_size, unsigned msm_size, P* result, bool on_device, cudaStream_t stream); template -void large_msm(S* scalars, A* points, unsigned size, P* result, bool on_device, bool big_triangle, unsigned large_bucket_factor, cudaStream_t stream); +void large_msm( + S* scalars, + A* points, + unsigned size, + P* result, + bool on_device, + bool big_triangle, + unsigned large_bucket_factor, + cudaStream_t stream); template -void short_msm(S *h_scalars, A *h_points, unsigned size, P* h_final_result, cudaStream_t stream); +void short_msm(S* h_scalars, A* h_points, unsigned size, P* h_final_result, cudaStream_t stream); template void reference_msm(S* scalars, A* a_points, unsigned size); diff --git a/icicle/appUtils/msm/tests/msm_test.cu b/icicle/appUtils/msm/tests/msm_test.cu index e12d221d..962c88bb 100644 --- a/icicle/appUtils/msm/tests/msm_test.cu +++ b/icicle/appUtils/msm/tests/msm_test.cu @@ -1,131 +1,115 @@ -#include -#include -#include -#include "msm.cu" -#include "../../utils/cuda_utils.cuh" -#include "../../primitives/projective.cuh" #include "../../primitives/field.cuh" +#include "../../primitives/projective.cuh" +#include "../../utils/cuda_utils.cuh" +#include "msm.cu" +#include +#include +#include // #include "../../curves/bls12_377/curve_config.cuh" #include "../../curves/bn254/curve_config.cuh" // using namespace BLS12_377; using namespace BN254; -class Dummy_Scalar { - public: - static constexpr unsigned NBITS = 32; +class Dummy_Scalar +{ +public: + static constexpr unsigned NBITS = 32; - unsigned x; - unsigned p = 10; - // unsigned p = 1<<30; + unsigned x; + unsigned p = 10; + // unsigned p = 1<<30; - static HOST_DEVICE_INLINE Dummy_Scalar zero() { - return {0}; - } + static HOST_DEVICE_INLINE Dummy_Scalar zero() { return {0}; } - static HOST_DEVICE_INLINE Dummy_Scalar one() { - return {1}; - } + static HOST_DEVICE_INLINE Dummy_Scalar one() { return {1}; } - friend HOST_INLINE std::ostream& operator<<(std::ostream& os, const Dummy_Scalar& scalar) { - os << scalar.x; - return os; - } + friend HOST_INLINE std::ostream& operator<<(std::ostream& os, const Dummy_Scalar& scalar) + { + os << scalar.x; + return os; + } - HOST_DEVICE_INLINE unsigned get_scalar_digit(unsigned digit_num, unsigned digit_width) { - return (x>>(digit_num*digit_width))&((1<> (digit_num * digit_width)) & ((1 << digit_width) - 1); + } - friend HOST_DEVICE_INLINE Dummy_Scalar operator+(Dummy_Scalar p1, const Dummy_Scalar& p2) { - return {(p1.x+p2.x)%p1.p}; - } + friend HOST_DEVICE_INLINE Dummy_Scalar operator+(Dummy_Scalar p1, const Dummy_Scalar& p2) + { + return {(p1.x + p2.x) % p1.p}; + } - friend HOST_DEVICE_INLINE bool operator==(const Dummy_Scalar& p1, const Dummy_Scalar& p2) { - return (p1.x == p2.x); - } + friend HOST_DEVICE_INLINE bool operator==(const Dummy_Scalar& p1, const Dummy_Scalar& p2) { return (p1.x == p2.x); } - friend HOST_DEVICE_INLINE bool operator==(const Dummy_Scalar& p1, const unsigned p2) { - return (p1.x == p2); - } + friend HOST_DEVICE_INLINE bool operator==(const Dummy_Scalar& p1, const unsigned p2) { return (p1.x == p2); } - static HOST_DEVICE_INLINE Dummy_Scalar neg(const Dummy_Scalar &scalar) { - return {scalar.p-scalar.x}; - } - static HOST_INLINE Dummy_Scalar rand_host() { - return {(unsigned)rand()%10}; - // return {(unsigned)rand()}; - } + static HOST_DEVICE_INLINE Dummy_Scalar neg(const Dummy_Scalar& scalar) { return {scalar.p - scalar.x}; } + static HOST_INLINE Dummy_Scalar rand_host() + { + return {(unsigned)rand() % 10}; + // return {(unsigned)rand()}; + } }; -class Dummy_Projective { +class Dummy_Projective +{ +public: + Dummy_Scalar x; - public: - Dummy_Scalar x; + static HOST_DEVICE_INLINE Dummy_Projective zero() { return {0}; } - static HOST_DEVICE_INLINE Dummy_Projective zero() { - return {0}; + static HOST_DEVICE_INLINE Dummy_Projective one() { return {1}; } + + static HOST_DEVICE_INLINE Dummy_Projective to_affine(const Dummy_Projective& point) { return {point.x}; } + + static HOST_DEVICE_INLINE Dummy_Projective from_affine(const Dummy_Projective& point) { return {point.x}; } + + static HOST_DEVICE_INLINE Dummy_Projective neg(const Dummy_Projective& point) { return {Dummy_Scalar::neg(point.x)}; } + + friend HOST_DEVICE_INLINE Dummy_Projective operator+(Dummy_Projective p1, const Dummy_Projective& p2) + { + return {p1.x + p2.x}; + } + + // friend HOST_DEVICE_INLINE Dummy_Projective operator-(Dummy_Projective p1, const Dummy_Projective& p2) { + // return p1 + neg(p2); + // } + + friend HOST_INLINE std::ostream& operator<<(std::ostream& os, const Dummy_Projective& point) + { + os << point.x; + return os; + } + + friend HOST_DEVICE_INLINE Dummy_Projective operator*(Dummy_Scalar scalar, const Dummy_Projective& point) + { + Dummy_Projective res = zero(); +#ifdef CUDA_ARCH +#pragma unroll +#endif + for (int i = 0; i < Dummy_Scalar::NBITS; i++) { + if (i > 0) { res = res + res; } + if (scalar.get_scalar_digit(Dummy_Scalar::NBITS - i - 1, 1)) { res = res + point; } } + return res; + } - static HOST_DEVICE_INLINE Dummy_Projective one() { - return {1}; - } + friend HOST_DEVICE_INLINE bool operator==(const Dummy_Projective& p1, const Dummy_Projective& p2) + { + return (p1.x == p2.x); + } - static HOST_DEVICE_INLINE Dummy_Projective to_affine(const Dummy_Projective &point) { - return {point.x}; - } + static HOST_DEVICE_INLINE bool is_zero(const Dummy_Projective& point) { return point.x == 0; } - static HOST_DEVICE_INLINE Dummy_Projective from_affine(const Dummy_Projective &point) { - return {point.x}; - } - - static HOST_DEVICE_INLINE Dummy_Projective neg(const Dummy_Projective &point) { - return {Dummy_Scalar::neg(point.x)}; - } - - friend HOST_DEVICE_INLINE Dummy_Projective operator+(Dummy_Projective p1, const Dummy_Projective& p2) { - return {p1.x+p2.x}; - } - - // friend HOST_DEVICE_INLINE Dummy_Projective operator-(Dummy_Projective p1, const Dummy_Projective& p2) { - // return p1 + neg(p2); - // } - - friend HOST_INLINE std::ostream& operator<<(std::ostream& os, const Dummy_Projective& point) { - os << point.x; - return os; - } - - friend HOST_DEVICE_INLINE Dummy_Projective operator*(Dummy_Scalar scalar, const Dummy_Projective& point) { - Dummy_Projective res = zero(); - #ifdef CUDA_ARCH - #pragma unroll - #endif - for (int i = 0; i < Dummy_Scalar::NBITS; i++) { - if (i > 0) { - res = res + res; - } - if (scalar.get_scalar_digit(Dummy_Scalar::NBITS - i - 1, 1)) { - res = res + point; - } - } - return res; - } - - friend HOST_DEVICE_INLINE bool operator==(const Dummy_Projective& p1, const Dummy_Projective& p2) { - return (p1.x == p2.x); - } - - static HOST_DEVICE_INLINE bool is_zero(const Dummy_Projective &point) { - return point.x == 0; - } - - static HOST_INLINE Dummy_Projective rand_host() { - return {(unsigned)rand()%10}; - // return {(unsigned)rand()}; - } + static HOST_INLINE Dummy_Projective rand_host() + { + return {(unsigned)rand() % 10}; + // return {(unsigned)rand()}; + } }; -//switch between dummy and real: +// switch between dummy and real: typedef scalar_t test_scalar; typedef projective_t test_projective; @@ -138,62 +122,62 @@ typedef affine_t test_affine; int main() { unsigned batch_size = 1; -// unsigned msm_size = 1<<21; + // unsigned msm_size = 1<<21; unsigned msm_size = 12180757; - unsigned N = batch_size*msm_size; + unsigned N = batch_size * msm_size; - test_scalar *scalars = new test_scalar[N]; - test_affine *points = new test_affine[N]; - - for (unsigned i=0;i(scalars, points, N, short_res); // for (unsigned i=0;i(scalars+msm_size*i, points+msm_size*i, msm_size, large_res+i, false); - // std::cout<<"final result large"<(scalars+msm_size*i, points+msm_size*i, msm_size, large_res+i, + // false); std::cout<<"final result large"<(scalars, points, batch_size, msm_size, batched_large_res, false); + std::cout << "finished copying" << std::endl; + + // batched_large_msm(scalars, points, batch_size, msm_size, + // batched_large_res, false); cudaStream_t stream1; cudaStream_t stream2; cudaStreamCreate(&stream1); cudaStreamCreate(&stream2); auto begin1 = std::chrono::high_resolution_clock::now(); - large_msm(scalars, points, msm_size, large_res, false, true,stream1); + large_msm(scalars, points, msm_size, large_res, false, true, stream1); auto end1 = std::chrono::high_resolution_clock::now(); auto elapsed1 = std::chrono::duration_cast(end1 - begin1); printf("Big Triangle : %.3f seconds.\n", elapsed1.count() * 1e-9); // std::cout<(scalars_d, points_d, msm_size, large_res_d, true, false,stream2); + large_msm( + scalars_d, points_d, msm_size, large_res_d, true, false, stream2); // test_reduce_triangle(scalars); // test_reduce_rectangle(scalars); // test_reduce_single(scalars); @@ -201,17 +185,17 @@ int main() auto end = std::chrono::high_resolution_clock::now(); auto elapsed = std::chrono::duration_cast(end - begin); printf("On Device No Big Triangle: %.3f seconds.\n", elapsed.count() * 1e-9); - cudaStreamSynchronize(stream1); - cudaStreamSynchronize(stream2); - cudaStreamDestroy(stream1); - cudaStreamDestroy(stream2); + cudaStreamSynchronize(stream1); + cudaStreamSynchronize(stream2); + cudaStreamDestroy(stream1); + cudaStreamDestroy(stream2); - std::cout<(scalars, points, msm_size); + // reference_msm(scalars, points, msm_size); // std::cout<<"final results batched large"< -#include "ntt.cuh" -#include "lde.cuh" #include "../vector_manipulation/ve_mod_mult.cuh" +#include "lde.cuh" +#include "ntt.cuh" +#include + +template +__global__ void add_sub_array(E* res, E* in1, E* in2, uint32_t n) +{ + int tid = (blockIdx.x * blockDim.x) + threadIdx.x; + if (tid < n) { res[tid] = SUB ? in1[tid] - in2[tid] : in1[tid] + in2[tid]; } +} + +template +int sub_polys(E* d_out, E* d_in1, E* d_in2, unsigned n, cudaStream_t stream) +{ + uint32_t NUM_THREADS = MAX_THREADS_BATCH; + uint32_t NUM_BLOCKS = (n + NUM_THREADS - 1) / NUM_THREADS; + + add_sub_array<<>>(d_out, d_in1, d_in2, n); + + return 0; +} + +template +int add_polys(E* d_out, E* d_in1, E* d_in2, unsigned n, cudaStream_t stream) +{ + uint32_t NUM_THREADS = MAX_THREADS_BATCH; + uint32_t NUM_BLOCKS = (n + NUM_THREADS - 1) / NUM_THREADS; + + add_sub_array<<>>(d_out, d_in1, d_in2, n); + + return 0; +} -template < typename E, bool SUB > __global__ void add_sub_array(E* res, E* in1, E* in2, uint32_t n) { - int tid = (blockIdx.x * blockDim.x) + threadIdx.x; - if (tid < n) { - res[tid] = SUB ? in1[tid] - in2[tid] : in1[tid] + in2[tid]; - } - } - - template - int sub_polys(E* d_out, E* d_in1, E* d_in2, unsigned n, cudaStream_t stream) { - uint32_t NUM_THREADS = MAX_THREADS_BATCH; - uint32_t NUM_BLOCKS = (n + NUM_THREADS - 1) / NUM_THREADS; - - add_sub_array <<>>(d_out, d_in1, d_in2, n); - - return 0; - } - - template - int add_polys(E* d_out, E* d_in1, E* d_in2, unsigned n, cudaStream_t stream) { - uint32_t NUM_THREADS = MAX_THREADS_BATCH; - uint32_t NUM_BLOCKS = (n + NUM_THREADS - 1) / NUM_THREADS; - - add_sub_array <<>>(d_out, d_in1, d_in2, n); - - return 0; - } - /** * Interpolate a batch of polynomials from their evaluations on the same subgroup. * Note: this function does not preform any bit-reverse permutations on its inputs or outputs. - * @param d_out The variable to write coefficients of the resulting polynomials into (the coefficients are in bit-reversed order if the evaluations weren't bit-reversed and vice-versa). + * @param d_out The variable to write coefficients of the resulting polynomials into (the coefficients are in + * bit-reversed order if the evaluations weren't bit-reversed and vice-versa). * @param d_evaluations Input array of evaluations of all polynomials of type E (elements). * @param d_domain Domain on which the polynomials are evaluated. Must be a subgroup. * @param n Length of `d_domain` array, also equal to the number of evaluations of each polynomial. * @param batch_size The size of the batch; the length of `d_evaluations` is `n` * `batch_size`. */ -template int interpolate_batch(E * d_out, E * d_evaluations, S * d_domain, unsigned n, unsigned batch_size, bool coset, S * coset_powers, cudaStream_t stream) { +template +int interpolate_batch( + E* d_out, + E* d_evaluations, + S* d_domain, + unsigned n, + unsigned batch_size, + bool coset, + S* coset_powers, + cudaStream_t stream) +{ cudaMemcpyAsync(d_out, d_evaluations, sizeof(E) * n * batch_size, cudaMemcpyDeviceToDevice, stream); ntt_inplace_batch_template(d_out, d_domain, n, batch_size, true, coset, coset_powers, stream, true); return 0; @@ -50,47 +63,63 @@ template int interpolate_batch(E * d_out, E * d_evaluat /** * Interpolate a polynomial from its evaluations on a subgroup. * Note: this function does not preform any bit-reverse permutations on its inputs or outputs. - * @param d_out The variable to write coefficients of the resulting polynomial into (the coefficients are in bit-reversed order if the evaluations weren't bit-reversed and vice-versa). + * @param d_out The variable to write coefficients of the resulting polynomial into (the coefficients are in + * bit-reversed order if the evaluations weren't bit-reversed and vice-versa). * @param d_evaluations Input array of evaluations that have type E (elements). * @param d_domain Domain on which the polynomial is evaluated. Must be a subgroup. * @param n Length of `d_evaluations` and the size `d_domain` arrays (they should have equal length). */ -template int interpolate(E * d_out, E * d_evaluations, S * d_domain, unsigned n, bool coset, S * coset_powers, cudaStream_t stream) { - return interpolate_batch (d_out, d_evaluations, d_domain, n, 1, coset, coset_powers, stream); +template +int interpolate(E* d_out, E* d_evaluations, S* d_domain, unsigned n, bool coset, S* coset_powers, cudaStream_t stream) +{ + return interpolate_batch(d_out, d_evaluations, d_domain, n, 1, coset, coset_powers, stream); } -template < typename E > __global__ void fill_array(E * arr, E val, uint32_t n) { +template +__global__ void fill_array(E* arr, E val, uint32_t n) +{ int tid = (blockIdx.x * blockDim.x) + threadIdx.x; - if (tid < n) { - arr[tid] = val; - } + if (tid < n) { arr[tid] = val; } } /** * Evaluate a batch of polynomials on the same coset. * @param d_out The evaluations of the polynomials on coset `u` * `d_domain`. - * @param d_coefficients Input array of coefficients of all polynomials of type E (elements) to be evaluated in-place on a coset. + * @param d_coefficients Input array of coefficients of all polynomials of type E (elements) to be evaluated in-place on + * a coset. * @param d_domain Domain on which the polynomials are evaluated (see `coset` flag). Must be a subgroup. * @param domain_size Length of `d_domain` array, on which the polynomial is computed. * @param n The number of coefficients, which might be different from `domain_size`. * @param batch_size The size of the batch; the length of `d_coefficients` is `n` * `batch_size`. * @param coset The flag that indicates whether to evaluate on a coset. If false, evaluate on a subgroup `d_domain`. - * @param coset_powers If `coset` is true, a list of powers `[1, u, u^2, ..., u^{n-1}]` where `u` is the generator of the coset. + * @param coset_powers If `coset` is true, a list of powers `[1, u, u^2, ..., u^{n-1}]` where `u` is the generator of + * the coset. */ template -int evaluate_batch(E * d_out, E * d_coefficients, S * d_domain, unsigned domain_size, unsigned n, unsigned batch_size, bool coset, S * coset_powers, cudaStream_t stream) { +int evaluate_batch( + E* d_out, + E* d_coefficients, + S* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + bool coset, + S* coset_powers, + cudaStream_t stream) +{ uint32_t logn = uint32_t(log(domain_size) / log(2)); if (domain_size > n) { // allocate and initialize an array of stream handles to parallelize data copying across batches - cudaStream_t *memcpy_streams = (cudaStream_t *) malloc(batch_size * sizeof(cudaStream_t)); - for (unsigned i = 0; i < batch_size; i++) - { + cudaStream_t* memcpy_streams = (cudaStream_t*)malloc(batch_size * sizeof(cudaStream_t)); + for (unsigned i = 0; i < batch_size; i++) { cudaStreamCreate(&(memcpy_streams[i])); - cudaMemcpyAsync(&d_out[i * domain_size], &d_coefficients[i * n], n * sizeof(E), cudaMemcpyDeviceToDevice, memcpy_streams[i]); + cudaMemcpyAsync( + &d_out[i * domain_size], &d_coefficients[i * n], n * sizeof(E), cudaMemcpyDeviceToDevice, memcpy_streams[i]); uint32_t NUM_THREADS = MAX_THREADS_BATCH; uint32_t NUM_BLOCKS = (domain_size - n + NUM_THREADS - 1) / NUM_THREADS; - fill_array <<>> (&d_out[i * domain_size + n], E::zero(), domain_size - n); + fill_array + <<>>(&d_out[i * domain_size + n], E::zero(), domain_size - n); cudaStreamSynchronize(memcpy_streams[i]); cudaStreamDestroy(memcpy_streams[i]); @@ -98,9 +127,8 @@ int evaluate_batch(E * d_out, E * d_coefficients, S * d_domain, unsigned domain_ } else cudaMemcpyAsync(d_out, d_coefficients, sizeof(E) * domain_size * batch_size, cudaMemcpyDeviceToDevice, stream); - if (coset) - batch_vector_mult(coset_powers, d_out, domain_size, batch_size, stream); - + if (coset) batch_vector_mult(coset_powers, d_out, domain_size, batch_size, stream); + S* _null = nullptr; ntt_inplace_batch_template(d_out, d_domain, domain_size, batch_size, false, false, _null, stream, true); return 0; @@ -108,102 +136,144 @@ int evaluate_batch(E * d_out, E * d_coefficients, S * d_domain, unsigned domain_ /** * Evaluate a polynomial on a coset. - * Note: this function does not preform any bit-reverse permutations on its inputs or outputs, so the order of outputs is bit-reversed. + * Note: this function does not preform any bit-reverse permutations on its inputs or outputs, so the order of outputs + * is bit-reversed. * @param d_out The evaluations of the polynomial on coset `u` * `d_domain`. * @param d_coefficients Input array of coefficients of a polynomial of type E (elements). * @param d_domain Domain on which the polynomial is evaluated (see `coset` flag). Must be a subgroup. * @param domain_size Length of `d_domain` array, on which the polynomial is computed. * @param n The number of coefficients, which might be different from `domain_size`. * @param coset The flag that indicates whether to evaluate on a coset. If false, evaluate on a subgroup `d_domain`. - * @param coset_powers If `coset` is true, a list of powers `[1, u, u^2, ..., u^{n-1}]` where `u` is the generator of the coset. + * @param coset_powers If `coset` is true, a list of powers `[1, u, u^2, ..., u^{n-1}]` where `u` is the generator of + * the coset. */ -template -int evaluate(E * d_out, E * d_coefficients, S * d_domain, unsigned domain_size, unsigned n, bool coset, S * coset_powers, cudaStream_t stream) { - return evaluate_batch (d_out, d_coefficients, d_domain, domain_size, n, 1, coset, coset_powers, stream); +template +int evaluate( + E* d_out, + E* d_coefficients, + S* d_domain, + unsigned domain_size, + unsigned n, + bool coset, + S* coset_powers, + cudaStream_t stream) +{ + return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, 1, coset, coset_powers, stream); } -template -int interpolate_scalars(S* d_out, S* d_evaluations, S* d_domain, unsigned n, cudaStream_t stream) { +template +int interpolate_scalars(S* d_out, S* d_evaluations, S* d_domain, unsigned n, cudaStream_t stream) +{ S* _null = nullptr; return interpolate(d_out, d_evaluations, d_domain, n, false, _null, stream); } -template -int interpolate_scalars_batch(S* d_out, S* d_evaluations, S* d_domain, unsigned n, unsigned batch_size, cudaStream_t stream) { +template +int interpolate_scalars_batch( + S* d_out, S* d_evaluations, S* d_domain, unsigned n, unsigned batch_size, cudaStream_t stream) +{ S* _null = nullptr; return interpolate_batch(d_out, d_evaluations, d_domain, n, batch_size, false, _null, stream); } -template -int interpolate_points(E* d_out, E* d_evaluations, S* d_domain, unsigned n, cudaStream_t stream) { +template +int interpolate_points(E* d_out, E* d_evaluations, S* d_domain, unsigned n, cudaStream_t stream) +{ S* _null = nullptr; return interpolate(d_out, d_evaluations, d_domain, n, false, _null, stream); } -template -int interpolate_points_batch(E* d_out, E* d_evaluations, S* d_domain, unsigned n, unsigned batch_size, cudaStream_t stream) { +template +int interpolate_points_batch( + E* d_out, E* d_evaluations, S* d_domain, unsigned n, unsigned batch_size, cudaStream_t stream) +{ S* _null = nullptr; return interpolate_batch(d_out, d_evaluations, d_domain, n, batch_size, false, _null, stream); } -template -int evaluate_scalars(S* d_out, S* d_coefficients, S* d_domain, unsigned domain_size, unsigned n, cudaStream_t stream) { +template +int evaluate_scalars(S* d_out, S* d_coefficients, S* d_domain, unsigned domain_size, unsigned n, cudaStream_t stream) +{ S* _null = nullptr; return evaluate(d_out, d_coefficients, d_domain, domain_size, n, false, _null, stream); } -template -int evaluate_scalars_batch(S* d_out, S* d_coefficients, S* d_domain, unsigned domain_size, unsigned n, unsigned batch_size, cudaStream_t stream) { +template +int evaluate_scalars_batch( + S* d_out, S* d_coefficients, S* d_domain, unsigned domain_size, unsigned n, unsigned batch_size, cudaStream_t stream) +{ S* _null = nullptr; return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, false, _null, stream); } -template -int evaluate_points(E* d_out, E* d_coefficients, S* d_domain, unsigned domain_size, unsigned n, cudaStream_t stream) { +template +int evaluate_points(E* d_out, E* d_coefficients, S* d_domain, unsigned domain_size, unsigned n, cudaStream_t stream) +{ S* _null = nullptr; return evaluate(d_out, d_coefficients, d_domain, domain_size, n, false, _null, stream); } -template -int evaluate_points_batch(E* d_out, E* d_coefficients, S* d_domain, - unsigned domain_size, unsigned n, unsigned batch_size, cudaStream_t stream) { +template +int evaluate_points_batch( + E* d_out, E* d_coefficients, S* d_domain, unsigned domain_size, unsigned n, unsigned batch_size, cudaStream_t stream) +{ S* _null = nullptr; return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, false, _null, stream); } -template -int interpolate_scalars_on_coset(S* d_out, S* d_evaluations, S* d_domain, - unsigned n, S* coset_powers, cudaStream_t stream) { +template +int interpolate_scalars_on_coset( + S* d_out, S* d_evaluations, S* d_domain, unsigned n, S* coset_powers, cudaStream_t stream) +{ return interpolate(d_out, d_evaluations, d_domain, n, true, coset_powers, stream); } -template -int interpolate_scalars_on_coset_batch(S* d_out, S* d_evaluations, S* d_domain, - unsigned n, unsigned batch_size, S* coset_powers, cudaStream_t stream) { +template +int interpolate_scalars_on_coset_batch( + S* d_out, S* d_evaluations, S* d_domain, unsigned n, unsigned batch_size, S* coset_powers, cudaStream_t stream) +{ return interpolate_batch(d_out, d_evaluations, d_domain, n, batch_size, true, coset_powers, stream); } -template -int evaluate_scalars_on_coset(S* d_out, S* d_coefficients, S* d_domain, - unsigned domain_size, unsigned n, S* coset_powers, cudaStream_t stream) { +template +int evaluate_scalars_on_coset( + S* d_out, S* d_coefficients, S* d_domain, unsigned domain_size, unsigned n, S* coset_powers, cudaStream_t stream) +{ return evaluate(d_out, d_coefficients, d_domain, domain_size, n, true, coset_powers, stream); } -template -int evaluate_scalars_on_coset_batch(S* d_out, S* d_coefficients, S* d_domain, unsigned domain_size, - unsigned n, unsigned batch_size, S* coset_powers, cudaStream_t stream) { +template +int evaluate_scalars_on_coset_batch( + S* d_out, + S* d_coefficients, + S* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + S* coset_powers, + cudaStream_t stream) +{ return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, true, coset_powers, stream); } -template -int evaluate_points_on_coset(E* d_out, E* d_coefficients, S* d_domain, - unsigned domain_size, unsigned n, S* coset_powers, cudaStream_t stream) { +template +int evaluate_points_on_coset( + E* d_out, E* d_coefficients, S* d_domain, unsigned domain_size, unsigned n, S* coset_powers, cudaStream_t stream) +{ return evaluate(d_out, d_coefficients, d_domain, domain_size, n, true, coset_powers, stream); } -template -int evaluate_points_on_coset_batch(E* d_out, E* d_coefficients, S* d_domain, unsigned domain_size, - unsigned n, unsigned batch_size, S* coset_powers, cudaStream_t stream) { +template +int evaluate_points_on_coset_batch( + E* d_out, + E* d_coefficients, + S* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + S* coset_powers, + cudaStream_t stream) +{ return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, true, coset_powers, stream); } #endif \ No newline at end of file diff --git a/icicle/appUtils/ntt/lde.cuh b/icicle/appUtils/ntt/lde.cuh index 76091771..84ef26c8 100644 --- a/icicle/appUtils/ntt/lde.cuh +++ b/icicle/appUtils/ntt/lde.cuh @@ -2,45 +2,62 @@ #define LDE_H #pragma once -template +template int interpolate_scalars(S* d_out, S* d_evaluations, S* d_domain, unsigned n, cudaStream_t stream); -template -int interpolate_scalars_batch(S* d_out, S* d_evaluations, S* d_domain, unsigned n, unsigned batch_size, cudaStream_t stream); +template +int interpolate_scalars_batch( + S* d_out, S* d_evaluations, S* d_domain, unsigned n, unsigned batch_size, cudaStream_t stream); -template +template int interpolate_points(E* d_out, E* d_evaluations, S* d_domain, unsigned n, cudaStream_t stream); -template -int interpolate_points_batch(E* d_out, E* d_evaluations, S* d_domain, unsigned n, unsigned batch_size, cudaStream_t stream); +template +int interpolate_points_batch( + E* d_out, E* d_evaluations, S* d_domain, unsigned n, unsigned batch_size, cudaStream_t stream); -template +template int evaluate_scalars(S* d_out, S* d_coefficients, S* d_domain, unsigned domain_size, unsigned n, cudaStream_t stream); -template -int evaluate_scalars_batch(S* d_out, S* d_coefficients, S* d_domain, unsigned domain_size, unsigned n, unsigned batch_size, cudaStream_t stream); +template +int evaluate_scalars_batch( + S* d_out, S* d_coefficients, S* d_domain, unsigned domain_size, unsigned n, unsigned batch_size, cudaStream_t stream); -template +template int evaluate_points(E* d_out, E* d_coefficients, S* d_domain, unsigned domain_size, unsigned n, cudaStream_t stream); -template -int evaluate_points_batch(E* d_out, E* d_coefficients, S* d_domain, - unsigned domain_size, unsigned n, unsigned batch_size, cudaStream_t stream); +template +int evaluate_points_batch( + E* d_out, E* d_coefficients, S* d_domain, unsigned domain_size, unsigned n, unsigned batch_size, cudaStream_t stream); -template -int evaluate_scalars_on_coset(S* d_out, S* d_coefficients, S* d_domain, - unsigned domain_size, unsigned n, S* coset_powers, cudaStream_t stream); +template +int evaluate_scalars_on_coset( + S* d_out, S* d_coefficients, S* d_domain, unsigned domain_size, unsigned n, S* coset_powers, cudaStream_t stream); -template -int evaluate_scalars_on_coset_batch(S* d_out, S* d_coefficients, S* d_domain, unsigned domain_size, - unsigned n, unsigned batch_size, S* coset_powers, cudaStream_t stream); +template +int evaluate_scalars_on_coset_batch( + S* d_out, + S* d_coefficients, + S* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + S* coset_powers, + cudaStream_t stream); -template -int evaluate_points_on_coset(E* d_out, E* d_coefficients, S* d_domain, - unsigned domain_size, unsigned n, S* coset_powers, cudaStream_t stream); +template +int evaluate_points_on_coset( + E* d_out, E* d_coefficients, S* d_domain, unsigned domain_size, unsigned n, S* coset_powers, cudaStream_t stream); -template -int evaluate_points_on_coset_batch(E* d_out, E* d_coefficients, S* d_domain, unsigned domain_size, - unsigned n, unsigned batch_size, S* coset_powers, cudaStream_t stream); +template +int evaluate_points_on_coset_batch( + E* d_out, + E* d_coefficients, + S* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + S* coset_powers, + cudaStream_t stream); #endif \ No newline at end of file diff --git a/icicle/appUtils/ntt/ntt.cuh b/icicle/appUtils/ntt/ntt.cuh index 5456911d..1e1c0e23 100644 --- a/icicle/appUtils/ntt/ntt.cuh +++ b/icicle/appUtils/ntt/ntt.cuh @@ -6,18 +6,20 @@ #include "../vector_manipulation/ve_mod_mult.cuh" const uint32_t MAX_NUM_THREADS = 1024; -const uint32_t MAX_THREADS_BATCH = 512; //TODO: allows 100% occupancy for scalar NTT for sm_86..sm_89 -const uint32_t MAX_SHARED_MEM_ELEMENT_SIZE = 32; //TODO: occupancy calculator, hardcoded for sm_86..sm_89 -const uint32_t MAX_SHARED_MEM = MAX_SHARED_MEM_ELEMENT_SIZE * 1024; +const uint32_t MAX_THREADS_BATCH = 512; // TODO: allows 100% occupancy for scalar NTT for sm_86..sm_89 +const uint32_t MAX_SHARED_MEM_ELEMENT_SIZE = 32; // TODO: occupancy calculator, hardcoded for sm_86..sm_89 +const uint32_t MAX_SHARED_MEM = MAX_SHARED_MEM_ELEMENT_SIZE * 1024; /** - * Computes the twiddle factors. + * Computes the twiddle factors. * Outputs: d_twiddles[i] = omega^i. - * @param d_twiddles input empty array. - * @param n_twiddles number of twiddle factors. - * @param omega multiplying factor. + * @param d_twiddles input empty array. + * @param n_twiddles number of twiddle factors. + * @param omega multiplying factor. */ - template < typename S > __global__ void twiddle_factors_kernel(S * d_twiddles, uint32_t n_twiddles, S omega) { +template +__global__ void twiddle_factors_kernel(S* d_twiddles, uint32_t n_twiddles, S omega) +{ for (uint32_t i = 0; i < n_twiddles; i++) { d_twiddles[i] = S::zero(); } @@ -28,21 +30,25 @@ const uint32_t MAX_SHARED_MEM = MAX_SHARED_MEM_ELEMENT_SIZE * 1024; } /** - * Fills twiddles array with twiddle factors. - * @param twiddles input empty array. - * @param n_twiddles number of twiddle factors. - * @param omega multiplying factor. + * Fills twiddles array with twiddle factors. + * @param twiddles input empty array. + * @param n_twiddles number of twiddle factors. + * @param omega multiplying factor. */ - template < typename S > S * fill_twiddle_factors_array(uint32_t n_twiddles, S omega, cudaStream_t stream) { +template +S* fill_twiddle_factors_array(uint32_t n_twiddles, S omega, cudaStream_t stream) +{ size_t size_twiddles = n_twiddles * sizeof(S); - S * d_twiddles; - cudaMallocAsync(& d_twiddles, size_twiddles, stream); - twiddle_factors_kernel <<< 1, 1, 0, stream>>> (d_twiddles, n_twiddles, omega); + S* d_twiddles; + cudaMallocAsync(&d_twiddles, size_twiddles, stream); + twiddle_factors_kernel<<<1, 1, 0, stream>>>(d_twiddles, n_twiddles, omega); cudaStreamSynchronize(stream); return d_twiddles; } -template < typename T > __global__ void reverse_order_kernel(T* arr, T* arr_reversed, uint32_t n, uint32_t logn, uint32_t batch_size) { +template +__global__ void reverse_order_kernel(T* arr, T* arr_reversed, uint32_t n, uint32_t logn, uint32_t batch_size) +{ int threadId = (blockIdx.x * blockDim.x) + threadIdx.x; if (threadId < n * batch_size) { int idx = threadId % n; @@ -61,12 +67,14 @@ template < typename T > __global__ void reverse_order_kernel(T* arr, T* arr_reve * @param logn log(n). * @param batch_size the size of the batch. */ -template < typename T > void reverse_order_batch(T* arr, uint32_t n, uint32_t logn, uint32_t batch_size, cudaStream_t stream) { +template +void reverse_order_batch(T* arr, uint32_t n, uint32_t logn, uint32_t batch_size, cudaStream_t stream) +{ T* arr_reversed; cudaMallocAsync(&arr_reversed, n * batch_size * sizeof(T), stream); int number_of_threads = MAX_THREADS_BATCH; int number_of_blocks = (n * batch_size + number_of_threads - 1) / number_of_threads; - reverse_order_kernel <<>> (arr, arr_reversed, n, logn, batch_size); + reverse_order_kernel<<>>(arr, arr_reversed, n, logn, batch_size); cudaMemcpyAsync(arr, arr_reversed, n * batch_size * sizeof(T), cudaMemcpyDeviceToDevice, stream); cudaFreeAsync(arr_reversed, stream); } @@ -79,11 +87,12 @@ template < typename T > void reverse_order_batch(T* arr, uint32_t n, uint32_t lo * @param n length of `arr`. * @param logn log(n). */ -template < typename T > void reverse_order(T* arr, uint32_t n, uint32_t logn, cudaStream_t stream) { +template +void reverse_order(T* arr, uint32_t n, uint32_t logn, cudaStream_t stream) +{ reverse_order_batch(arr, n, logn, 1, stream); } - enum Decimation { NONE = 0, DIF = 1, @@ -101,25 +110,29 @@ enum Decimation { * @param s log2(n) loop index. */ template -__global__ void ntt_template_kernel_shared_rev(E *__restrict__ arr_g, uint32_t n, const S *__restrict__ r_twiddles, uint32_t n_twiddles, uint32_t max_task, uint32_t ss, uint32_t logn) +__global__ void ntt_template_kernel_shared_rev( + E* __restrict__ arr_g, + uint32_t n, + const S* __restrict__ r_twiddles, + uint32_t n_twiddles, + uint32_t max_task, + uint32_t ss, + uint32_t logn) { SharedMemory smem; - E *arr = smem.getPointer(); + E* arr = smem.getPointer(); uint32_t task = blockIdx.x; uint32_t loop_limit = blockDim.x; uint32_t chunks = n / (loop_limit * 2); uint32_t offset = (task / chunks) * n; - if (task < max_task) - { + if (task < max_task) { // flattened loop allows parallel processing uint32_t l = threadIdx.x; - if (l < loop_limit) - { + if (l < loop_limit) { #pragma unroll - for (; ss < logn; ss++) - { + for (; ss < logn; ss++) { int s = logn - ss - 1; bool is_beginning = ss == 0; bool is_end = ss == (logn - 1); @@ -142,15 +155,12 @@ __global__ void ntt_template_kernel_shared_rev(E *__restrict__ arr_g, uint32_t n E u = is_beginning ? arr_g[offset + oij] : arr[oij]; E v = is_beginning ? arr_g[offset + k] : arr[k]; - if (is_end) - { + if (is_end) { arr_g[offset + oij] = u + v; arr_g[offset + k] = tw * (u - v); - } - else - { + } else { arr[oij] = u + v; - arr[k] = tw *(u - v); + arr[k] = tw * (u - v); } __syncthreads(); @@ -170,22 +180,27 @@ __global__ void ntt_template_kernel_shared_rev(E *__restrict__ arr_g, uint32_t n * @param s log2(n) loop index. */ template -__global__ void ntt_template_kernel_shared(E *__restrict__ arr_g, uint32_t n, const S *__restrict__ r_twiddles, uint32_t n_twiddles, uint32_t max_task, uint32_t s, uint32_t logn) +__global__ void ntt_template_kernel_shared( + E* __restrict__ arr_g, + uint32_t n, + const S* __restrict__ r_twiddles, + uint32_t n_twiddles, + uint32_t max_task, + uint32_t s, + uint32_t logn) { SharedMemory smem; - E *arr = smem.getPointer(); + E* arr = smem.getPointer(); uint32_t task = blockIdx.x; uint32_t loop_limit = blockDim.x; uint32_t chunks = n / (loop_limit * 2); uint32_t offset = (task / chunks) * n; - if (task < max_task) - { + if (task < max_task) { // flattened loop allows parallel processing uint32_t l = threadIdx.x; - if (l < loop_limit) - { + if (l < loop_limit) { #pragma unroll for (; s < logn; s++) // TODO: this loop also can be unrolled { @@ -204,17 +219,13 @@ __global__ void ntt_template_kernel_shared(E *__restrict__ arr_g, uint32_t n, co uint32_t k = oij + shift_s; S tw = r_twiddles[j * n_twiddles_div]; - E u = s == 0 ? arr_g[offset + oij] : arr[oij]; E v = s == 0 ? arr_g[offset + k] : arr[k]; v = tw * v; - if (s == (logn - 1)) - { + if (s == (logn - 1)) { arr_g[offset + oij] = u + v; arr_g[offset + k] = u - v; - } - else - { + } else { arr[oij] = u + v; arr[k] = u - v; } @@ -226,9 +237,9 @@ __global__ void ntt_template_kernel_shared(E *__restrict__ arr_g, uint32_t n, co } /** - * Cooley-Tukey NTT. + * Cooley-Tukey NTT. * NOTE! this function assumes that d_twiddles are located in the device memory. - * @param arr input array of type E (elements). + * @param arr input array of type E (elements). * @param n length of d_arr. * @param twiddles twiddle factors of type S (scalars) array allocated on the device memory (must be a power of 2). * @param n_twiddles length of twiddles. @@ -236,26 +247,25 @@ __global__ void ntt_template_kernel_shared(E *__restrict__ arr_g, uint32_t n, co * @param s log2(n) loop index. */ template -__global__ void ntt_template_kernel(E *arr, uint32_t n, S *twiddles, uint32_t n_twiddles, uint32_t max_task, uint32_t s, bool rev) +__global__ void +ntt_template_kernel(E* arr, uint32_t n, S* twiddles, uint32_t n_twiddles, uint32_t max_task, uint32_t s, bool rev) { int task = blockIdx.x; int chunks = n / (blockDim.x * 2); - if (task < max_task) - { + if (task < max_task) { // flattened loop allows parallel processing uint32_t l = threadIdx.x; uint32_t loop_limit = blockDim.x; - if (l < loop_limit) - { + if (l < loop_limit) { uint32_t ntw_i = task % chunks; uint32_t shift_s = 1 << s; uint32_t shift2_s = 1 << (s + 1); uint32_t n_twiddles_div = n_twiddles >> (s + 1); - l = ntw_i * blockDim.x + l; //to l from chunks to full + l = ntw_i * blockDim.x + l; // to l from chunks to full uint32_t j = l & (shift_s - 1); // Equivalent to: l % (1 << s) uint32_t i = ((l >> s) * shift2_s) & (n - 1); // (..) % n (assuming n is power of 2) @@ -278,18 +288,26 @@ __global__ void ntt_template_kernel(E *arr, uint32_t n, S *twiddles, uint32_t n_ * NTT/INTT inplace batch * Note: this function does not preform any bit-reverse permutations on its inputs or outputs. * @param d_inout Array for inplace processing - * @param d_twiddles + * @param d_twiddles * @param n Length of `d_twiddles` array * @param batch_size The size of the batch; the length of `d_inout` is `n` * `batch_size`. * @param inverse true for iNTT * @param is_coset true for multiplication by coset * @param coset should be array of lenght n - or in case of lesser than n, right-padded with zeroes - * @param stream CUDA stream + * @param stream CUDA stream * @param is_sync_needed do perform sync of the supplied CUDA stream at the end of processing */ -template void ntt_inplace_batch_template( - E * d_inout, S * d_twiddles, unsigned n, unsigned batch_size, bool inverse, - bool is_coset, S * coset, cudaStream_t stream, bool is_sync_needed) +template +void ntt_inplace_batch_template( + E* d_inout, + S* d_twiddles, + unsigned n, + unsigned batch_size, + bool inverse, + bool is_coset, + S* coset, + cudaStream_t stream, + bool is_sync_needed) { const int logn = int(log(n) / log(2)); bool is_shared_mem_enabled = sizeof(E) <= MAX_SHARED_MEM_ELEMENT_SIZE; @@ -298,36 +316,41 @@ template void ntt_inplace_batch_template( const int chunks = max(int((n / 2) / num_threads), 1); const int total_tasks = batch_size * chunks; int num_blocks = total_tasks; - const int shared_mem = 2 * num_threads * sizeof(E); // TODO: calculator, as shared mem size may be more efficient less then max to allow more concurrent blocks on SM - const int logn_shmem = is_shared_mem_enabled ? int(log(2 * num_threads) / log(2)) : 0; //TODO: shared memory support only for types <= 32 bytes + const int shared_mem = 2 * num_threads * sizeof(E); // TODO: calculator, as shared mem size may be more efficient less + // then max to allow more concurrent blocks on SM + const int logn_shmem = is_shared_mem_enabled ? int(log(2 * num_threads) / log(2)) + : 0; // TODO: shared memory support only for types <= 32 bytes - if (inverse) - { - if (is_shared_mem_enabled) ntt_template_kernel_shared<<>>(d_inout, 1 << logn_shmem, d_twiddles, n, total_tasks, 0, logn_shmem); + if (inverse) { + if (is_shared_mem_enabled) + ntt_template_kernel_shared<<>>( + d_inout, 1 << logn_shmem, d_twiddles, n, total_tasks, 0, logn_shmem); for (int s = logn_shmem; s < logn; s++) // TODO: this loop also can be unrolled - { - ntt_template_kernel <<>>(d_inout, n, d_twiddles, n, total_tasks, s, false); + { + ntt_template_kernel + <<>>(d_inout, n, d_twiddles, n, total_tasks, s, false); } if (is_coset) batch_vector_mult(coset, d_inout, n, batch_size, stream); num_threads = min(n / 2, MAX_NUM_THREADS); num_blocks = (n * batch_size + num_threads - 1) / num_threads; - template_normalize_kernel <<>> (d_inout, n * batch_size, S::inv_log_size(logn)); - } - else - { + template_normalize_kernel + <<>>(d_inout, n * batch_size, S::inv_log_size(logn)); + } else { if (is_coset) batch_vector_mult(coset, d_inout, n, batch_size, stream); for (int s = logn - 1; s >= logn_shmem; s--) // TODO: this loop also can be unrolled { ntt_template_kernel<<>>(d_inout, n, d_twiddles, n, total_tasks, s, true); } - - if (is_shared_mem_enabled) ntt_template_kernel_shared_rev<<>>(d_inout, 1 << logn_shmem, d_twiddles, n, total_tasks, 0, logn_shmem); + + if (is_shared_mem_enabled) + ntt_template_kernel_shared_rev<<>>( + d_inout, 1 << logn_shmem, d_twiddles, n, total_tasks, 0, logn_shmem); } - + if (!is_sync_needed) return; cudaStreamSynchronize(stream); @@ -335,30 +358,32 @@ template void ntt_inplace_batch_template( /** * Cooley-Tukey (scalar) NTT. - * This is a bached version - meaning it assumes than the input array + * This is a bached version - meaning it assumes than the input array * consists of N arrays of size n. The function performs n-size NTT on each small array. - * @param arr input array of type BLS12_381::scalar_t. - * @param arr_size number of total elements = n * N. + * @param arr input array of type BLS12_381::scalar_t. + * @param arr_size number of total elements = n * N. * @param n size of batch. - * @param inverse indicate if the result array should be normalized by n^(-1). + * @param inverse indicate if the result array should be normalized by n^(-1). */ - template uint32_t ntt_end2end_batch_template(E * arr, uint32_t arr_size, uint32_t n, bool inverse, cudaStream_t stream) { +template +uint32_t ntt_end2end_batch_template(E* arr, uint32_t arr_size, uint32_t n, bool inverse, cudaStream_t stream) +{ int batches = int(arr_size / n); uint32_t logn = uint32_t(log(n) / log(2)); - uint32_t n_twiddles = n; // n_twiddles is set to 4096 as BLS12_381::scalar_t::omega() is of that order. + uint32_t n_twiddles = n; // n_twiddles is set to 4096 as BLS12_381::scalar_t::omega() is of that order. size_t size_E = arr_size * sizeof(E); - S * d_twiddles; - if (inverse){ + S* d_twiddles; + if (inverse) { d_twiddles = fill_twiddle_factors_array(n_twiddles, S::omega_inv(logn), stream); - } else{ + } else { d_twiddles = fill_twiddle_factors_array(n_twiddles, S::omega(logn), stream); } - E * d_arr; - cudaMallocAsync( & d_arr, size_E, stream); + E* d_arr; + cudaMallocAsync(&d_arr, size_E, stream); cudaMemcpyAsync(d_arr, arr, size_E, cudaMemcpyHostToDevice, stream); int NUM_THREADS = MAX_THREADS_BATCH; int NUM_BLOCKS = (batches + NUM_THREADS - 1) / NUM_THREADS; - + S* _null = nullptr; ntt_inplace_batch_template(d_arr, d_twiddles, n, batches, inverse, false, _null, stream, false); @@ -366,17 +391,19 @@ template void ntt_inplace_batch_template( cudaFreeAsync(d_arr, stream); cudaFreeAsync(d_twiddles, stream); cudaStreamSynchronize(stream); - return 0; + return 0; } /** - * Cooley-Tukey (scalar) NTT. - * @param arr input array of type E (element). + * Cooley-Tukey (scalar) NTT. + * @param arr input array of type E (element). * @param n length of d_arr. - * @param inverse indicate if the result array should be normalized by n^(-1). + * @param inverse indicate if the result array should be normalized by n^(-1). */ - template uint32_t ntt_end2end_template(E * arr, uint32_t n, bool inverse, cudaStream_t stream) { - return ntt_end2end_batch_template (arr, n, n, inverse, stream); +template +uint32_t ntt_end2end_template(E* arr, uint32_t n, bool inverse, cudaStream_t stream) +{ + return ntt_end2end_batch_template(arr, n, n, inverse, stream); } #endif \ No newline at end of file diff --git a/icicle/appUtils/poseidon/constants.cuh b/icicle/appUtils/poseidon/constants.cuh index f8586435..21741252 100644 --- a/icicle/appUtils/poseidon/constants.cuh +++ b/icicle/appUtils/poseidon/constants.cuh @@ -1,27 +1,27 @@ #pragma once -#include -#include -#include - +#include "constants/constants_11.h" #include "constants/constants_2.h" #include "constants/constants_4.h" #include "constants/constants_8.h" -#include "constants/constants_11.h" +#include +#include +#include -uint32_t partial_rounds_number_from_arity(const uint32_t arity) { - switch (arity) { - case 2: - return 55; - case 4: - return 56; - case 8: - return 57; - case 11: - return 57; - default: - throw std::invalid_argument( "unsupported arity" ); - } +uint32_t partial_rounds_number_from_arity(const uint32_t arity) +{ + switch (arity) { + case 2: + return 55; + case 4: + return 56; + case 8: + return 57; + case 11: + return 57; + default: + throw std::invalid_argument("unsupported arity"); + } }; // TO-DO: change to mapping @@ -29,23 +29,24 @@ const uint32_t FULL_ROUNDS_DEFAULT = 4; // TO-DO: for now, the constants are only generated in bls12_381 template -S * load_constants(const uint32_t arity) { - unsigned char * constants; - switch (arity) { - case 2: - constants = constants_2; - break; - case 4: - constants = constants_4; - break; - case 8: - constants = constants_8; - break; - case 11: - constants = constants_11; - break; - default: - throw std::invalid_argument( "unsupported arity" ); - } - return reinterpret_cast< S * >(constants); +S* load_constants(const uint32_t arity) +{ + unsigned char* constants; + switch (arity) { + case 2: + constants = constants_2; + break; + case 4: + constants = constants_4; + break; + case 8: + constants = constants_8; + break; + case 11: + constants = constants_11; + break; + default: + throw std::invalid_argument("unsupported arity"); + } + return reinterpret_cast(constants); } \ No newline at end of file diff --git a/icicle/appUtils/poseidon/constants/constants_11.h b/icicle/appUtils/poseidon/constants/constants_11.h index fc903cd3..6ab58619 100644 --- a/icicle/appUtils/poseidon/constants/constants_11.h +++ b/icicle/appUtils/poseidon/constants/constants_11.h @@ -1,4675 +1,2953 @@ unsigned char constants_11[] = { - 0xe4, 0xbc, 0x89, 0xd0, 0x6b, 0x09, 0xde, 0xe6, 0x7d, 0xb7, 0x3a, 0x0f, - 0x8e, 0xf1, 0x06, 0xd5, 0xe0, 0x02, 0x89, 0xf3, 0xc5, 0xbf, 0x99, 0x73, - 0x04, 0xb5, 0x48, 0xe6, 0x76, 0x95, 0x6c, 0x1f, 0xa9, 0x8c, 0xf0, 0xc8, - 0x24, 0xe9, 0x8b, 0x25, 0xb2, 0xe8, 0xed, 0xb7, 0x4d, 0xf0, 0xfd, 0x68, - 0x47, 0xa7, 0xa5, 0x43, 0xe2, 0x93, 0x19, 0xd7, 0xeb, 0x3d, 0xdf, 0x28, - 0x70, 0xba, 0xde, 0x06, 0x09, 0xac, 0x02, 0xfb, 0x5d, 0x5e, 0x6c, 0xcc, - 0x50, 0xe4, 0x01, 0xf9, 0xd1, 0x8f, 0xc5, 0x33, 0xa0, 0x5a, 0x9a, 0xc2, - 0x8d, 0xc6, 0xd9, 0x85, 0xfa, 0xcd, 0x91, 0x32, 0xc1, 0xd6, 0x0c, 0x59, - 0x6b, 0x96, 0x3f, 0x39, 0x41, 0xed, 0xdb, 0xcf, 0xc2, 0x8c, 0x7b, 0xeb, - 0xb2, 0x8d, 0x39, 0x00, 0x7d, 0x0a, 0x29, 0x52, 0x66, 0x7a, 0x25, 0x45, - 0xd5, 0x0a, 0x65, 0x29, 0xfb, 0x46, 0x9e, 0x61, 0x29, 0x3c, 0x59, 0x5b, - 0x7b, 0x5f, 0xa2, 0xfa, 0x14, 0xc2, 0xa1, 0x1b, 0x16, 0x9b, 0x46, 0xef, - 0x8c, 0xa1, 0x69, 0xbd, 0xd9, 0x55, 0x8d, 0x85, 0x98, 0x0f, 0x1e, 0xa9, - 0x55, 0x76, 0xbc, 0x3e, 0xbd, 0x03, 0xa9, 0x49, 0xa5, 0x16, 0x6f, 0x58, - 0xa3, 0x98, 0x49, 0x56, 0x5c, 0xaf, 0x4c, 0x5b, 0x80, 0x56, 0x83, 0x27, - 0xf8, 0x92, 0xbc, 0x63, 0xa3, 0x6c, 0x73, 0x01, 0x96, 0x64, 0x78, 0x45, - 0xd3, 0x2e, 0xfb, 0x45, 0x47, 0x1a, 0x83, 0x6f, 0x23, 0x42, 0x81, 0x88, - 0xa6, 0xdf, 0x49, 0xc1, 0xfb, 0x1c, 0x2c, 0x38, 0x76, 0xaf, 0xcc, 0x1e, - 0x19, 0x1f, 0x49, 0xba, 0xb8, 0xc6, 0xfb, 0x39, 0x75, 0xf5, 0x9c, 0x2c, - 0x4c, 0x78, 0x75, 0xb4, 0x61, 0x94, 0xeb, 0xaa, 0x06, 0x8a, 0xbc, 0xea, - 0xae, 0xd7, 0xba, 0x16, 0x12, 0x21, 0xbb, 0xfa, 0x5c, 0xfe, 0xf4, 0x96, - 0xb3, 0x8c, 0x93, 0x40, 0x5a, 0x03, 0xc1, 0x44, 0x7d, 0xd2, 0x7b, 0x88, - 0x8a, 0x35, 0xa3, 0x94, 0xe8, 0x80, 0x72, 0x42, 0x2a, 0x08, 0x3f, 0x03, - 0xc6, 0x83, 0x45, 0x91, 0xc1, 0x65, 0xda, 0x8d, 0x56, 0xff, 0xf5, 0x29, - 0xcf, 0x13, 0xc3, 0x54, 0x65, 0xee, 0xd3, 0xe8, 0x39, 0xe9, 0x31, 0x4a, - 0x96, 0xf9, 0x7d, 0xab, 0x40, 0x62, 0x60, 0x72, 0x56, 0x4e, 0x57, 0xb3, - 0x04, 0x20, 0x2a, 0x48, 0x9e, 0x76, 0x26, 0x07, 0xc4, 0x2a, 0xbb, 0x69, - 0x15, 0xe4, 0xdd, 0x05, 0xf8, 0x7d, 0x1d, 0x28, 0xb7, 0xa0, 0xa2, 0xf2, - 0xd2, 0x7b, 0xce, 0x66, 0x71, 0xa0, 0x07, 0x98, 0xe0, 0x56, 0x11, 0xb1, - 0xf5, 0xd6, 0x62, 0x53, 0x2d, 0xa6, 0xf9, 0x45, 0x60, 0xb3, 0x67, 0xb7, - 0x81, 0x53, 0x70, 0xed, 0x9d, 0x8d, 0x77, 0x06, 0x64, 0xaa, 0xd3, 0xf0, - 0x7e, 0x94, 0xab, 0x2a, 0xc2, 0x01, 0x98, 0xa1, 0x07, 0xc2, 0x91, 0x57, - 0x06, 0x79, 0xaa, 0x94, 0x4a, 0x93, 0xac, 0x16, 0xe1, 0x9a, 0x27, 0xe6, - 0x19, 0xd4, 0x9d, 0xe6, 0x28, 0xb3, 0x94, 0x96, 0x5a, 0x5f, 0xb9, 0xdb, - 0xd3, 0x18, 0x1d, 0xbd, 0x20, 0xae, 0xc6, 0x70, 0xe5, 0xb3, 0x7e, 0x96, - 0x0f, 0x9f, 0xbf, 0xca, 0xde, 0x25, 0xe4, 0x3e, 0x88, 0xb5, 0xd7, 0x0c, - 0xc8, 0x79, 0xce, 0x97, 0x37, 0x35, 0x4a, 0x62, 0x01, 0x63, 0x10, 0xb4, - 0x6e, 0xef, 0xa6, 0x69, 0xbb, 0xf4, 0xb9, 0xf9, 0x49, 0xb6, 0x23, 0x41, - 0x5b, 0xd4, 0x59, 0x55, 0x7b, 0xa1, 0x01, 0xe7, 0x42, 0xcd, 0x35, 0xed, - 0x6f, 0xe8, 0x2d, 0xb5, 0xe1, 0x44, 0x6c, 0x7d, 0x93, 0xac, 0x9c, 0x22, - 0x9b, 0x00, 0xc7, 0xd3, 0xca, 0xb0, 0xfe, 0xb4, 0x29, 0x00, 0x33, 0x62, - 0xdb, 0x78, 0x88, 0xc6, 0x96, 0x70, 0x90, 0xb0, 0x5e, 0x90, 0x13, 0xdd, - 0xf6, 0xa7, 0xab, 0x68, 0xcd, 0xc8, 0xbb, 0x3a, 0x8e, 0x05, 0x69, 0xb3, - 0x00, 0x5a, 0x78, 0x66, 0xb6, 0x42, 0xd9, 0xf3, 0xa7, 0x35, 0x91, 0x7b, - 0x79, 0x03, 0x3f, 0xa1, 0xe7, 0x01, 0x0c, 0x5c, 0x02, 0x10, 0x35, 0x2c, - 0x38, 0x4f, 0x28, 0x04, 0x1a, 0xbe, 0xa4, 0xda, 0xe0, 0x43, 0xbe, 0xbd, - 0xd3, 0x9c, 0xb0, 0x83, 0xf0, 0xbd, 0x2a, 0x77, 0x0f, 0x1c, 0xaf, 0xd7, - 0x05, 0xbc, 0xab, 0x1d, 0xb3, 0xb9, 0x01, 0xc2, 0x1a, 0xed, 0x34, 0x0e, - 0xc8, 0x9a, 0x3c, 0x93, 0x55, 0x31, 0x2a, 0x8e, 0xc5, 0x8c, 0x12, 0xca, - 0xfd, 0xec, 0xdf, 0xf8, 0x7f, 0xe8, 0xaf, 0xf1, 0xda, 0x51, 0x16, 0x4d, - 0x74, 0xa8, 0xfe, 0xb0, 0xee, 0xbf, 0x65, 0x35, 0xcd, 0x23, 0x5f, 0x58, - 0xf2, 0xce, 0x2a, 0x36, 0xbe, 0x86, 0x8c, 0x46, 0xe9, 0x72, 0x71, 0x7b, - 0x3f, 0xc0, 0x38, 0x93, 0xfc, 0xeb, 0xa2, 0xa1, 0x80, 0xbd, 0xf8, 0x25, - 0x6b, 0x8c, 0x7a, 0x65, 0x73, 0xd0, 0x27, 0xab, 0x63, 0xed, 0x1d, 0x75, - 0xfe, 0xc4, 0xb1, 0xaa, 0x06, 0x72, 0xb7, 0xee, 0xfb, 0x3b, 0xd9, 0x51, - 0xe7, 0xd9, 0x71, 0xe6, 0xd2, 0x32, 0xd9, 0x85, 0xd6, 0x9d, 0x00, 0x6d, - 0x15, 0xc4, 0x3f, 0x94, 0x0b, 0x67, 0xd0, 0xb5, 0x2a, 0xd3, 0xf2, 0x50, - 0x22, 0x06, 0x4e, 0xe0, 0xc8, 0x72, 0x1a, 0x60, 0x95, 0x60, 0x31, 0xb0, - 0xe5, 0x29, 0xcb, 0x02, 0x52, 0x86, 0x19, 0x0d, 0x71, 0x23, 0x35, 0x3d, - 0x04, 0x48, 0xb2, 0xa4, 0xc2, 0xd4, 0xf2, 0x0a, 0xc0, 0xcb, 0xab, 0xaf, - 0x47, 0xd2, 0x01, 0x8e, 0xde, 0xc2, 0xe4, 0xb1, 0xcb, 0x8a, 0x55, 0xe6, - 0xa8, 0x5e, 0xbf, 0x70, 0x08, 0xab, 0xca, 0x1a, 0xab, 0xf5, 0x1a, 0x8f, - 0xcb, 0x9d, 0x8b, 0xa6, 0x8d, 0x20, 0xd6, 0xf1, 0xce, 0x4c, 0xc7, 0x1d, - 0x7d, 0x5b, 0xd9, 0xe6, 0xb5, 0x08, 0xd6, 0x3a, 0x7d, 0x10, 0x73, 0x25, - 0x7b, 0x5b, 0xde, 0x31, 0x9e, 0x30, 0x91, 0x8e, 0x54, 0x54, 0x0d, 0x46, - 0x8b, 0x69, 0x5a, 0x0c, 0x6c, 0xec, 0x25, 0x98, 0x9e, 0xbf, 0xc5, 0x1f, - 0x0f, 0x6b, 0xe8, 0xdc, 0x69, 0x7e, 0xb1, 0x06, 0x13, 0x13, 0x15, 0x97, - 0xa0, 0x24, 0x2b, 0xb6, 0x7a, 0xf0, 0xe6, 0xb1, 0x9f, 0x1a, 0xf4, 0xea, - 0xdf, 0x36, 0xb0, 0x8d, 0x7f, 0xec, 0xcf, 0x4a, 0x50, 0x03, 0x0e, 0xab, - 0x8a, 0x64, 0x6d, 0x05, 0xad, 0xf0, 0x8c, 0xfe, 0x34, 0x9f, 0x8b, 0x0c, - 0x28, 0xc8, 0x36, 0x76, 0xde, 0x8c, 0x16, 0x8b, 0xc0, 0x54, 0x6a, 0xc8, - 0xa6, 0x52, 0x89, 0x3a, 0x28, 0xae, 0x2d, 0x1d, 0x67, 0x7b, 0xc9, 0x50, - 0x4c, 0xd3, 0x7a, 0x39, 0xd4, 0xd8, 0x94, 0xfb, 0xda, 0x7f, 0x12, 0x93, - 0x76, 0x50, 0xe7, 0x9e, 0xe7, 0x36, 0xfa, 0xa0, 0xe4, 0xb6, 0xb2, 0x62, - 0xd5, 0xb1, 0x37, 0x3d, 0x6b, 0x4f, 0x0f, 0x27, 0xd3, 0xb1, 0x2d, 0xb6, - 0x99, 0x5e, 0x29, 0x38, 0x34, 0xbc, 0x0e, 0x32, 0xcb, 0x50, 0xfb, 0x6f, - 0xd1, 0xf4, 0x03, 0x40, 0xa4, 0xfd, 0xec, 0x1d, 0x34, 0x44, 0x1f, 0x24, - 0x89, 0xa8, 0xc3, 0x1e, 0x14, 0x24, 0x76, 0x15, 0x95, 0xd3, 0x8c, 0xdf, - 0xa7, 0x57, 0x2b, 0xd8, 0x9e, 0x68, 0x94, 0xa4, 0x51, 0x3e, 0x9e, 0x7e, - 0xff, 0x61, 0x0b, 0xd0, 0x11, 0x49, 0x91, 0x8e, 0x8b, 0x42, 0x9d, 0x0f, - 0x18, 0x0d, 0xec, 0xd2, 0xa9, 0x2a, 0xe4, 0x62, 0x5b, 0x6e, 0x4c, 0x83, - 0x7f, 0x2b, 0xe4, 0xd6, 0x45, 0x48, 0x4b, 0x6c, 0xfc, 0x57, 0x45, 0x88, - 0x4a, 0x2e, 0x63, 0x10, 0x3b, 0xa8, 0x30, 0x04, 0x00, 0x58, 0x9e, 0xbf, - 0x8f, 0x73, 0x91, 0xaf, 0xcc, 0x97, 0xd7, 0x85, 0x05, 0x14, 0x7f, 0xbf, - 0xfa, 0x62, 0x0b, 0x24, 0x7c, 0xf3, 0x6d, 0x10, 0x9a, 0xea, 0x46, 0x22, - 0xcc, 0x32, 0xfe, 0x29, 0x11, 0xbd, 0x98, 0xab, 0x63, 0x70, 0xe4, 0x5a, - 0x6d, 0x35, 0x3a, 0x31, 0xd2, 0x22, 0xae, 0x9f, 0xc9, 0x7c, 0x33, 0xcc, - 0x5f, 0xb8, 0xf9, 0xa5, 0xae, 0x71, 0xe4, 0xb1, 0x0d, 0x99, 0x92, 0x19, - 0x05, 0xf4, 0x2f, 0x37, 0xbd, 0x7e, 0xc4, 0xbf, 0x5d, 0x3b, 0xf9, 0x12, - 0xa1, 0x83, 0x4b, 0xfa, 0x53, 0x25, 0x92, 0x1f, 0x34, 0x6c, 0x1b, 0xb7, - 0xb7, 0xe9, 0x54, 0xff, 0xb6, 0x05, 0xaa, 0x71, 0x5a, 0x95, 0x11, 0xac, - 0x8f, 0x4f, 0x83, 0xa7, 0xac, 0xe5, 0x33, 0x0b, 0xb8, 0x68, 0x35, 0xd1, - 0x8c, 0x66, 0x2a, 0x41, 0xcb, 0x76, 0x5d, 0x56, 0x7e, 0x5d, 0x00, 0x60, - 0x58, 0x94, 0xf5, 0x72, 0xeb, 0x57, 0xc5, 0xe2, 0x05, 0xe5, 0x34, 0x9e, - 0xd7, 0xda, 0x02, 0x70, 0xee, 0x8c, 0x1d, 0x33, 0xb2, 0x6a, 0x68, 0x0d, - 0x55, 0x78, 0xb8, 0xd5, 0xe0, 0x3b, 0x52, 0x31, 0x64, 0x6a, 0xf4, 0x3b, - 0xb0, 0x21, 0x39, 0x5f, 0x85, 0x94, 0xfe, 0xba, 0xc3, 0x86, 0xb6, 0x6e, - 0xb5, 0x89, 0x74, 0xf5, 0x14, 0x99, 0xf4, 0x6f, 0x3f, 0x88, 0x3d, 0x75, - 0x3e, 0xc0, 0xe8, 0x04, 0x8e, 0x9d, 0x54, 0x59, 0x99, 0x48, 0x06, 0x78, - 0x71, 0xe2, 0xc5, 0xfd, 0xe7, 0xdd, 0x17, 0xdf, 0xa6, 0x52, 0xc5, 0x7c, - 0x5c, 0x35, 0xa8, 0xf4, 0x65, 0x65, 0xe7, 0x13, 0x38, 0xaa, 0x6c, 0xf2, - 0x51, 0x49, 0x70, 0x55, 0x19, 0x30, 0x6d, 0x54, 0x9c, 0xdb, 0xe2, 0x27, - 0xb1, 0x45, 0x47, 0xd6, 0xb5, 0x89, 0xd2, 0x8f, 0x91, 0x05, 0x09, 0xc1, - 0x05, 0xa3, 0xb0, 0x62, 0x93, 0x6e, 0xae, 0xb7, 0x82, 0xb9, 0xf1, 0x38, - 0x33, 0x28, 0xd5, 0x6c, 0x5c, 0x8b, 0x07, 0xa9, 0xc5, 0x4b, 0x6f, 0x0b, - 0x40, 0x23, 0x7e, 0xcb, 0x70, 0x3f, 0x5a, 0x51, 0x34, 0x0d, 0xdf, 0x24, - 0x67, 0x7c, 0x97, 0xe5, 0x4a, 0x77, 0x6f, 0x42, 0xc8, 0x9b, 0xb0, 0x15, - 0x36, 0xc5, 0xde, 0x68, 0x9c, 0x8d, 0x4c, 0x3c, 0x2e, 0xe2, 0xe1, 0x9a, - 0xd2, 0x9e, 0x12, 0xc2, 0x88, 0x18, 0xdb, 0xae, 0xdb, 0x0a, 0x4f, 0x5b, - 0x0c, 0x21, 0x0e, 0x12, 0xce, 0x0b, 0xc1, 0x1f, 0x0e, 0xd2, 0xeb, 0x4b, - 0x13, 0x96, 0xdc, 0x55, 0xb8, 0x4b, 0x01, 0x3b, 0xd2, 0xbf, 0xb2, 0xfc, - 0xb1, 0x10, 0x65, 0xdf, 0xec, 0x51, 0x24, 0xa0, 0x2b, 0xd4, 0xf3, 0x56, - 0xd5, 0x89, 0x54, 0x4a, 0x3b, 0x2f, 0x23, 0x2d, 0x6c, 0x8f, 0xdb, 0x03, - 0x4e, 0x43, 0x64, 0x21, 0xee, 0x65, 0x31, 0x34, 0xd7, 0xe0, 0x8b, 0xb2, - 0x14, 0x3d, 0xdf, 0x50, 0xd9, 0x6b, 0x5c, 0x29, 0xfd, 0x78, 0xe4, 0x19, - 0x4b, 0x79, 0xc5, 0xce, 0x47, 0x72, 0x78, 0x64, 0xf7, 0xc9, 0x50, 0x78, - 0xf6, 0x9e, 0x19, 0xd7, 0x4e, 0xa3, 0x2c, 0xe9, 0x7b, 0x9e, 0x82, 0x54, - 0x80, 0x67, 0x94, 0x42, 0x68, 0xe4, 0x98, 0xd5, 0x6c, 0x9e, 0x93, 0x53, - 0x66, 0x84, 0x73, 0x3b, 0x07, 0x70, 0xd2, 0x89, 0x5c, 0xe9, 0x4a, 0xd2, - 0x79, 0x22, 0x29, 0x02, 0x2f, 0x18, 0x6d, 0xd4, 0x77, 0xd5, 0xdd, 0x4c, - 0xab, 0x6a, 0x4b, 0x4c, 0x74, 0x63, 0x56, 0x68, 0x04, 0xdf, 0x55, 0xb6, - 0x90, 0x02, 0x3e, 0x52, 0x3a, 0x04, 0xa5, 0xd1, 0x41, 0xd7, 0x17, 0xb5, - 0x25, 0x15, 0xbe, 0xc6, 0xa5, 0x46, 0x40, 0x65, 0x2d, 0x8b, 0xda, 0xb2, - 0xd0, 0x4b, 0x23, 0x45, 0x69, 0x18, 0xed, 0x3e, 0x31, 0x51, 0x7d, 0xcd, - 0xd4, 0xba, 0xd4, 0xf8, 0x55, 0xa2, 0x7b, 0xbd, 0xc2, 0xa9, 0xc4, 0x83, - 0x49, 0xca, 0x34, 0x6e, 0x81, 0xad, 0x3a, 0x66, 0x40, 0x96, 0xb7, 0x0a, - 0x8a, 0x6d, 0x81, 0x7c, 0x8c, 0x04, 0x5e, 0x40, 0x4a, 0x61, 0x23, 0xa2, - 0xf6, 0x40, 0xf1, 0x84, 0x94, 0xa8, 0xfa, 0x79, 0xc2, 0xf2, 0x6a, 0x2f, - 0x1a, 0x61, 0x46, 0x3c, 0xe7, 0x52, 0x8a, 0xe6, 0xda, 0xed, 0xc2, 0xe3, - 0x12, 0xc0, 0x73, 0xf2, 0x8b, 0x8a, 0x17, 0x69, 0x9a, 0xe3, 0x12, 0xa1, - 0xf1, 0xf3, 0xc6, 0xcd, 0x12, 0xd5, 0xc8, 0x32, 0x3f, 0xbd, 0x7c, 0x2d, - 0xdb, 0x8f, 0xba, 0x80, 0x89, 0x70, 0xbc, 0x30, 0xe1, 0xb9, 0x6b, 0x08, - 0x0a, 0x61, 0x8c, 0xeb, 0x06, 0x84, 0x22, 0xd5, 0x40, 0xb9, 0x59, 0x79, - 0xce, 0xc0, 0x24, 0x51, 0xfe, 0xcd, 0x07, 0x25, 0xe4, 0x06, 0xff, 0x67, - 0x39, 0xec, 0xb8, 0x95, 0x95, 0xb9, 0xbd, 0x28, 0xec, 0x1a, 0x27, 0x24, - 0x17, 0xaa, 0x1b, 0xfb, 0x10, 0xfe, 0x9f, 0xb3, 0x33, 0x00, 0xa6, 0x26, - 0x20, 0x9f, 0xed, 0xb9, 0x79, 0xc8, 0xef, 0x65, 0x69, 0xca, 0x54, 0xde, - 0x28, 0xe1, 0x2d, 0x5c, 0x1f, 0xed, 0xc6, 0xfe, 0xab, 0x57, 0x1a, 0xb8, - 0x63, 0xf7, 0xc1, 0xd0, 0xa8, 0xf2, 0xba, 0x61, 0xe7, 0x4b, 0xb3, 0xdb, - 0xcd, 0x28, 0x56, 0x2f, 0x8d, 0x5a, 0x75, 0x4b, 0xf9, 0x9c, 0xf2, 0x75, - 0x99, 0xa2, 0x71, 0xf5, 0x9d, 0xaf, 0xdb, 0x51, 0xed, 0xed, 0x27, 0x6d, - 0xec, 0xed, 0x8e, 0x44, 0x49, 0x5f, 0xb4, 0x14, 0x9a, 0xaa, 0x9f, 0xdf, - 0x1f, 0x40, 0x5c, 0xa1, 0xf2, 0x8f, 0xff, 0x3c, 0xca, 0x72, 0x6f, 0x89, - 0xcf, 0xf4, 0x90, 0x19, 0x78, 0xb9, 0x8c, 0x1b, 0xe2, 0xe8, 0x1e, 0x10, - 0x42, 0xa1, 0x9a, 0x64, 0xb2, 0x53, 0x5c, 0x6d, 0x97, 0xef, 0x4a, 0x38, - 0xa7, 0x94, 0xec, 0xf2, 0x6d, 0xb0, 0x37, 0xa1, 0x7a, 0xb7, 0x6f, 0x3f, - 0x93, 0x81, 0x71, 0x28, 0x92, 0x91, 0xea, 0x07, 0x06, 0xde, 0xda, 0x8b, - 0x53, 0x94, 0x3e, 0xde, 0x21, 0xb3, 0x0a, 0xbe, 0x8d, 0x69, 0xbe, 0x71, - 0x1c, 0x21, 0xd5, 0xa7, 0xe2, 0xa6, 0x6a, 0xf5, 0x37, 0x62, 0x44, 0x25, - 0x1e, 0x5f, 0xdb, 0x01, 0x71, 0x48, 0xa6, 0xcd, 0x58, 0x7e, 0x91, 0x72, - 0xe9, 0x48, 0x7e, 0x23, 0x46, 0x6e, 0xd3, 0xd9, 0xfd, 0xdb, 0xf3, 0x6e, - 0x0b, 0x62, 0x33, 0x22, 0x87, 0x3f, 0xee, 0x10, 0xfc, 0x72, 0x81, 0x2c, - 0x12, 0xb3, 0x2d, 0x21, 0xc2, 0x4a, 0x2b, 0x73, 0xe5, 0xb3, 0x6a, 0x27, - 0xd0, 0x0d, 0x28, 0x55, 0x40, 0x97, 0x67, 0xe5, 0x5f, 0xff, 0x62, 0x11, - 0x7e, 0x13, 0x3a, 0x07, 0x65, 0x5a, 0xa4, 0x3a, 0x22, 0xb4, 0xf9, 0x80, - 0xb7, 0x41, 0x8e, 0xec, 0x45, 0x5f, 0xe0, 0x10, 0xdb, 0x85, 0x7d, 0x33, - 0xdf, 0x40, 0x26, 0xec, 0x7f, 0xeb, 0xbf, 0x2f, 0xb6, 0x9f, 0xfe, 0xe7, - 0xcf, 0xe0, 0x28, 0x0d, 0x47, 0x21, 0x64, 0x2a, 0x98, 0x6c, 0x62, 0x0e, - 0x56, 0x78, 0xdf, 0x20, 0xaa, 0x8f, 0xf9, 0x11, 0xad, 0x38, 0x20, 0x19, - 0xfe, 0x6a, 0xd4, 0xc0, 0x43, 0x8b, 0x22, 0x28, 0xc5, 0xac, 0xe2, 0x56, - 0x01, 0x2d, 0xe7, 0x0f, 0xb3, 0xb1, 0xe1, 0xc4, 0x42, 0xb6, 0xac, 0x71, - 0xc2, 0x7a, 0x62, 0x86, 0x0b, 0x50, 0xbb, 0x58, 0x4d, 0xc4, 0xf5, 0x4d, - 0x7a, 0x2b, 0x1c, 0xf1, 0x7e, 0x1b, 0x7f, 0x10, 0x66, 0x4e, 0xfe, 0x29, - 0x14, 0x95, 0xdd, 0xcd, 0xef, 0x18, 0x3c, 0xcd, 0x02, 0x66, 0x0e, 0x07, - 0xe3, 0xc2, 0x1f, 0x38, 0xd7, 0xb5, 0xb8, 0x47, 0xb8, 0xbe, 0x6b, 0xcf, - 0x62, 0xd5, 0x1d, 0x70, 0xc9, 0x5a, 0x5b, 0x11, 0xd3, 0xb2, 0x10, 0x6a, - 0x04, 0xd2, 0x5e, 0x6f, 0x48, 0x50, 0x64, 0xcd, 0x7f, 0xa3, 0xf0, 0x37, - 0x29, 0xc1, 0xf3, 0x6b, 0x8e, 0xb5, 0xcc, 0x30, 0x47, 0x44, 0x12, 0x6e, - 0xb4, 0x1e, 0x87, 0x2f, 0x36, 0x56, 0x16, 0x38, 0xb9, 0x09, 0x2e, 0x16, - 0x52, 0x46, 0xc5, 0x88, 0x41, 0x94, 0xc2, 0x64, 0xac, 0x87, 0x08, 0xae, - 0x3c, 0x41, 0x0e, 0x56, 0xd7, 0xea, 0x4f, 0x69, 0xe2, 0x6d, 0xdc, 0x7e, - 0x68, 0x61, 0xe9, 0x7e, 0x41, 0x5b, 0xca, 0x58, 0x2c, 0xc8, 0x4b, 0xa1, - 0x13, 0x48, 0x07, 0xf6, 0xc9, 0x9f, 0x70, 0x5a, 0x96, 0x04, 0x74, 0xd3, - 0x59, 0x44, 0xd8, 0x25, 0x26, 0x01, 0x86, 0xa4, 0x3b, 0x1c, 0x8d, 0xbc, - 0x7b, 0x6a, 0x46, 0x97, 0x26, 0x7d, 0x50, 0x3a, 0xb1, 0xaf, 0xfa, 0x19, - 0xd8, 0x5a, 0xcb, 0x29, 0x17, 0x73, 0x04, 0x80, 0xf3, 0x0a, 0x57, 0x43, - 0xfa, 0x4a, 0x1d, 0x0f, 0x91, 0x7f, 0x44, 0x8d, 0xbf, 0x28, 0xe2, 0x7e, - 0x34, 0xd0, 0xb7, 0xe3, 0x39, 0xa1, 0x05, 0x60, 0x47, 0xd9, 0x88, 0x0f, - 0x6a, 0x8e, 0xbe, 0xd2, 0x55, 0x25, 0x78, 0x69, 0x0e, 0x5a, 0xca, 0x1c, - 0x0d, 0x7f, 0xca, 0x8d, 0xce, 0x38, 0x32, 0x0d, 0xe0, 0x0e, 0xc6, 0x74, - 0x93, 0x72, 0x4d, 0xa7, 0xf6, 0xcd, 0x0f, 0xc5, 0x5f, 0x93, 0x5e, 0xe9, - 0x8d, 0x9e, 0x0b, 0x50, 0x3c, 0x14, 0x90, 0x5d, 0xed, 0x3c, 0x98, 0x81, - 0x40, 0x19, 0xc1, 0xa8, 0x47, 0x62, 0x4e, 0x0a, 0xbb, 0xe1, 0x18, 0x87, - 0xea, 0x28, 0x91, 0xf0, 0xd1, 0x04, 0xa4, 0x94, 0x80, 0x3d, 0x75, 0x21, - 0x43, 0x19, 0xfe, 0x16, 0x8c, 0x8c, 0xc1, 0xa7, 0xc3, 0x11, 0xf2, 0x6e, - 0x88, 0x98, 0x1e, 0x2d, 0x11, 0x84, 0x1d, 0x25, 0xb2, 0xf2, 0x4d, 0x32, - 0x00, 0xfb, 0x31, 0xe5, 0x5f, 0x4d, 0xfb, 0x70, 0x28, 0x15, 0x31, 0x89, - 0x73, 0xa4, 0x56, 0xc2, 0x3c, 0x69, 0x66, 0x4c, 0x9a, 0x8d, 0xb2, 0x9d, - 0x04, 0x08, 0xeb, 0x61, 0xf5, 0x63, 0x0d, 0x6a, 0x8b, 0x8a, 0x39, 0xb5, - 0x71, 0xcf, 0x9a, 0x71, 0x55, 0xd7, 0x3d, 0xf0, 0xa2, 0xeb, 0xc7, 0x39, - 0x1b, 0x5c, 0xc0, 0xee, 0x89, 0x2a, 0xc6, 0xe3, 0x1c, 0x2c, 0x3b, 0xf7, - 0x32, 0xc1, 0xd6, 0xea, 0xa4, 0x37, 0x55, 0x6b, 0xba, 0xcd, 0xdf, 0x4c, - 0x53, 0x15, 0x53, 0x2f, 0x19, 0x31, 0xdb, 0x4d, 0xce, 0x59, 0x8d, 0xb0, - 0x41, 0x36, 0xd4, 0xfc, 0x05, 0x67, 0xc6, 0xba, 0x9c, 0x49, 0xee, 0x89, - 0xa4, 0xdb, 0xb2, 0xe2, 0x67, 0xb5, 0x7d, 0x10, 0x69, 0x17, 0x04, 0x0a, - 0x25, 0x87, 0xf2, 0x42, 0x38, 0xa6, 0xf0, 0x49, 0x43, 0xb8, 0x36, 0x2c, - 0xc3, 0x60, 0xbf, 0x17, 0x07, 0x26, 0xbe, 0xc7, 0xcb, 0x2e, 0xd5, 0x66, - 0xf3, 0x11, 0xe3, 0x3d, 0x73, 0xbd, 0x58, 0xcf, 0x1a, 0x76, 0x98, 0x75, - 0x99, 0x3a, 0xa6, 0x1e, 0xad, 0xc8, 0xa8, 0xc9, 0xba, 0xf0, 0x99, 0xc4, - 0xbd, 0x00, 0x55, 0x65, 0x36, 0xc2, 0x51, 0xe4, 0x36, 0xef, 0xc1, 0x55, - 0x5d, 0xdb, 0xb3, 0x0a, 0x8e, 0x59, 0x8e, 0x53, 0x0e, 0x11, 0xf4, 0xed, - 0xe6, 0x0a, 0xa1, 0xd8, 0x4e, 0xd4, 0x1c, 0x3a, 0x7b, 0x8c, 0x14, 0x39, - 0x3f, 0x39, 0xbc, 0x03, 0xa0, 0xd6, 0xb6, 0x24, 0x4d, 0xb4, 0x20, 0x56, - 0x62, 0x34, 0x19, 0x2c, 0x99, 0x9b, 0xb1, 0xf8, 0x5d, 0x2f, 0xcc, 0x5d, - 0x41, 0xa4, 0x87, 0x2a, 0xc9, 0x34, 0x84, 0x81, 0xb8, 0x3e, 0x3a, 0xed, - 0x48, 0xa1, 0x50, 0x65, 0xd1, 0x08, 0x29, 0x0a, 0xd4, 0x58, 0xfc, 0x29, - 0x34, 0x3f, 0xf2, 0xf2, 0x76, 0x40, 0xd2, 0x3e, 0xd2, 0x2f, 0x7c, 0x9a, - 0x34, 0x95, 0x61, 0xb2, 0xcd, 0xa3, 0x5a, 0xa9, 0x02, 0x91, 0x45, 0x1f, - 0x73, 0x5e, 0x52, 0xd2, 0xe2, 0x27, 0xbb, 0x43, 0xdb, 0x5c, 0x08, 0x8b, - 0x70, 0x8a, 0x02, 0x77, 0x92, 0x12, 0x2e, 0xe2, 0x8c, 0x50, 0x35, 0x3f, - 0x89, 0x22, 0x96, 0x6d, 0xb1, 0x03, 0xc8, 0x3f, 0x35, 0x97, 0x5e, 0x0d, - 0xf7, 0x40, 0x38, 0xe6, 0x8c, 0xe0, 0x1a, 0xdf, 0xe2, 0x28, 0x0a, 0x01, - 0x81, 0x72, 0x07, 0xf5, 0x88, 0x1a, 0xf0, 0xf4, 0x72, 0x57, 0x5d, 0xce, - 0x02, 0xef, 0x6c, 0x5e, 0x95, 0xcc, 0x49, 0x40, 0x26, 0xd9, 0x1e, 0x79, - 0xc9, 0x0f, 0x1d, 0xaf, 0xfa, 0xd8, 0xe6, 0xf8, 0x70, 0x15, 0xc0, 0xa8, - 0xc3, 0x2e, 0x7b, 0xfa, 0x2c, 0xde, 0xb0, 0x7c, 0x31, 0x5f, 0x30, 0x2d, - 0x0c, 0xab, 0x97, 0xd2, 0x51, 0xc9, 0x99, 0xdb, 0x6a, 0x34, 0x44, 0x79, - 0xe1, 0x0d, 0x84, 0x1e, 0xc3, 0x1b, 0x44, 0x2e, 0xef, 0x17, 0xdc, 0x4c, - 0xb7, 0xb6, 0xc2, 0x58, 0x2d, 0x17, 0xc2, 0x4d, 0x8a, 0x16, 0x1a, 0xd0, - 0x8f, 0x17, 0xce, 0x2c, 0x86, 0x9c, 0xef, 0x52, 0x73, 0x40, 0x8f, 0x28, - 0x1d, 0x87, 0x99, 0x2a, 0xde, 0xf2, 0x70, 0x5e, 0xdb, 0x58, 0x28, 0x5c, - 0xfb, 0xdd, 0x73, 0x35, 0xdb, 0xb2, 0x33, 0xbb, 0x28, 0xa5, 0xe6, 0xee, - 0xe7, 0x45, 0x26, 0x23, 0x60, 0x8e, 0x15, 0xa3, 0x23, 0x56, 0x8c, 0xd0, - 0xb1, 0xde, 0xbc, 0x56, 0xdf, 0x06, 0xe2, 0x42, 0x73, 0x2c, 0x34, 0x30, - 0x7d, 0x95, 0x28, 0x57, 0x14, 0xcb, 0x15, 0xa2, 0x20, 0x2c, 0x4a, 0xb2, - 0x12, 0x56, 0x35, 0x71, 0xdf, 0x01, 0x41, 0x27, 0x24, 0x6e, 0x64, 0xfe, - 0x5a, 0xac, 0xf0, 0x87, 0xd5, 0x43, 0x25, 0x37, 0x78, 0x67, 0xd8, 0xe9, - 0xbe, 0xb1, 0x0c, 0x9a, 0x40, 0xcf, 0x6a, 0x51, 0x9a, 0xfa, 0xde, 0x88, - 0xb4, 0x0f, 0x57, 0x37, 0x00, 0x19, 0xf9, 0x25, 0xb9, 0xd0, 0x19, 0x61, - 0xb4, 0xc4, 0xc8, 0x1b, 0x16, 0x32, 0xd9, 0x2e, 0xd0, 0x54, 0x9f, 0x4c, - 0xe7, 0x05, 0x1c, 0x77, 0x98, 0x95, 0x35, 0x1e, 0x9f, 0xf3, 0x18, 0xb9, - 0x84, 0x25, 0xc2, 0xf5, 0xa6, 0xbd, 0x46, 0xef, 0xc7, 0x13, 0x88, 0x17, - 0xf2, 0xaf, 0xfa, 0xa0, 0x78, 0x01, 0x1e, 0x5f, 0xeb, 0x10, 0xfa, 0x05, - 0xe7, 0x36, 0x87, 0xb2, 0x42, 0x67, 0xdb, 0xe5, 0xe9, 0x5a, 0x9b, 0xe4, - 0xf7, 0xe3, 0x8a, 0xe1, 0x54, 0x6c, 0x0f, 0x01, 0x69, 0x71, 0x1b, 0xc1, - 0xaf, 0x10, 0xae, 0x10, 0xca, 0xe0, 0xc9, 0xb7, 0x20, 0xe3, 0x39, 0x1f, - 0x34, 0xc3, 0xcd, 0x08, 0x51, 0xd0, 0x96, 0x17, 0xeb, 0x03, 0x83, 0x41, - 0x9c, 0x2c, 0xbc, 0x1b, 0x13, 0xcb, 0x90, 0x16, 0x8a, 0xf9, 0x39, 0x31, - 0xa8, 0x05, 0xad, 0x43, 0x41, 0xb2, 0x8a, 0xcc, 0x7f, 0x63, 0x15, 0x29, - 0xfd, 0xb7, 0xeb, 0x6d, 0xf0, 0x2e, 0xdc, 0x39, 0xd5, 0x8f, 0x94, 0x32, - 0x72, 0x0d, 0xa8, 0xad, 0xa3, 0xa6, 0xe4, 0xf0, 0x51, 0x9e, 0x39, 0x53, - 0xb0, 0x03, 0x11, 0x83, 0xbb, 0xbe, 0x8e, 0x3c, 0x6c, 0x99, 0xc0, 0xf9, - 0x79, 0x4b, 0x53, 0x0d, 0x9a, 0x17, 0x62, 0x52, 0x26, 0x69, 0x86, 0x56, - 0x8e, 0x93, 0xe1, 0x4a, 0x3c, 0x35, 0xa0, 0xa7, 0xe7, 0xf6, 0xac, 0xef, - 0x08, 0x4c, 0x6e, 0x6d, 0xcb, 0x66, 0x09, 0x87, 0x2c, 0x2c, 0x72, 0xfd, - 0x77, 0x94, 0xdf, 0x68, 0x08, 0xf4, 0xf4, 0xb3, 0x9a, 0x42, 0x21, 0x58, - 0x4a, 0x73, 0x95, 0xff, 0xef, 0xb7, 0x4e, 0x3f, 0x97, 0x5e, 0x48, 0x24, - 0xed, 0x6f, 0x99, 0x46, 0xde, 0x21, 0x4d, 0x85, 0x12, 0xa2, 0x6d, 0x13, - 0x29, 0x66, 0x51, 0x2f, 0x37, 0x39, 0xad, 0x04, 0xd9, 0x4a, 0xbd, 0x63, - 0xcc, 0x02, 0x25, 0x1f, 0x5b, 0xe3, 0x5c, 0x28, 0x97, 0xf5, 0xc3, 0x06, - 0xe5, 0x31, 0xeb, 0xa7, 0x07, 0xe6, 0x07, 0x55, 0xa2, 0x4f, 0xa7, 0x1d, - 0x70, 0x83, 0x8e, 0xc4, 0xfb, 0x82, 0xab, 0x6c, 0x97, 0xdf, 0xe2, 0x8e, - 0x3f, 0x4d, 0x57, 0x01, 0xdd, 0x5c, 0x91, 0x86, 0xeb, 0xf7, 0x21, 0x45, - 0xa9, 0xf4, 0x25, 0x1f, 0x94, 0xeb, 0x82, 0x90, 0x89, 0xd6, 0x09, 0x25, - 0x5c, 0x55, 0x06, 0x61, 0x53, 0x7e, 0x1a, 0x9e, 0xda, 0x99, 0xe1, 0x7d, - 0x52, 0x73, 0x80, 0x58, 0xd2, 0xdb, 0xb7, 0x02, 0x14, 0xe7, 0xd3, 0x64, - 0x61, 0x00, 0xf1, 0x77, 0xa1, 0xfe, 0x94, 0x8e, 0x70, 0xa1, 0xd1, 0xa0, - 0x1b, 0x32, 0x48, 0xcc, 0x93, 0xdc, 0x5a, 0xe0, 0x07, 0xb5, 0x62, 0x76, - 0x38, 0x07, 0x02, 0x0c, 0xaf, 0x18, 0x59, 0x25, 0xea, 0x6f, 0x49, 0xec, - 0x43, 0xbb, 0xb9, 0xf3, 0x5a, 0x79, 0x8a, 0x15, 0x22, 0xae, 0x8f, 0x15, - 0xb2, 0xe1, 0x10, 0xa6, 0x7f, 0x9d, 0x8e, 0xa9, 0x33, 0x46, 0xb0, 0x5c, - 0xff, 0x5d, 0xc0, 0x3c, 0x3e, 0x43, 0x1d, 0x82, 0x4b, 0x75, 0xc4, 0x58, - 0x67, 0x31, 0x0c, 0xd5, 0x3e, 0x08, 0x0b, 0x0d, 0x81, 0xf8, 0xd3, 0x12, - 0xea, 0x31, 0xeb, 0x7d, 0x5b, 0x80, 0xd4, 0x17, 0xe1, 0x05, 0x9d, 0x40, - 0x54, 0x52, 0xe7, 0xe2, 0x20, 0x9a, 0x8d, 0xcb, 0x51, 0xc8, 0x64, 0x07, - 0x5f, 0x88, 0x20, 0xa2, 0xcc, 0x58, 0x61, 0x28, 0x45, 0xd3, 0x31, 0x99, - 0xb0, 0xcf, 0xca, 0xba, 0x79, 0xdd, 0xd6, 0x51, 0x41, 0x67, 0x5b, 0x0a, - 0x8b, 0x05, 0x21, 0x39, 0x50, 0xfe, 0x8b, 0x6a, 0x3d, 0xe2, 0x8d, 0x70, - 0xcd, 0x3f, 0x84, 0xff, 0x44, 0xff, 0xa9, 0xed, 0xb6, 0x3c, 0x48, 0x90, - 0xae, 0xea, 0x34, 0x2a, 0x08, 0x99, 0x0b, 0xb8, 0xd5, 0x30, 0x7f, 0x93, - 0x1b, 0x6d, 0x4e, 0x75, 0x18, 0xd7, 0xb2, 0xdd, 0x0d, 0xf8, 0xce, 0xb6, - 0xe2, 0xc8, 0x38, 0x9d, 0x86, 0x1f, 0x71, 0xaf, 0xd5, 0x01, 0x15, 0x02, - 0x89, 0xf8, 0xed, 0x7b, 0xa6, 0x41, 0xad, 0x2a, 0x03, 0xf1, 0xc1, 0xad, - 0x8e, 0xb7, 0xe8, 0xb3, 0x59, 0xb8, 0x3c, 0x3e, 0xb1, 0x0c, 0x36, 0x92, - 0x0e, 0xb4, 0xd9, 0x6a, 0xb1, 0x5c, 0x59, 0x24, 0xd0, 0xd8, 0x5e, 0xd0, - 0xb6, 0xa3, 0xfe, 0x04, 0xe7, 0xe0, 0x5a, 0xf3, 0x33, 0x70, 0xf9, 0xd6, - 0x36, 0xc5, 0x17, 0x0c, 0xc2, 0x6f, 0x11, 0x81, 0xca, 0xab, 0x8f, 0x5f, - 0x1f, 0x83, 0x61, 0x54, 0x1c, 0x4c, 0x76, 0x40, 0xc3, 0x98, 0x23, 0xe7, - 0x13, 0xa0, 0xc7, 0x49, 0x0d, 0xd5, 0x09, 0xfc, 0x1c, 0x05, 0xf9, 0x41, - 0xdc, 0xf2, 0x5c, 0x83, 0xd8, 0xeb, 0x6a, 0xd9, 0x67, 0xcd, 0xa5, 0x0f, - 0x3f, 0x25, 0x1c, 0xaf, 0x35, 0xe4, 0x16, 0x48, 0x79, 0x67, 0x6c, 0x25, - 0x83, 0xc4, 0xf0, 0xe4, 0x5e, 0x04, 0x17, 0x0b, 0x25, 0x35, 0x27, 0xbc, - 0xf0, 0x22, 0x1d, 0x35, 0x97, 0x7c, 0x18, 0x2c, 0xb8, 0x41, 0x12, 0x5d, - 0x0a, 0xcb, 0xd7, 0x04, 0x03, 0xd7, 0xff, 0x70, 0x04, 0x6a, 0xeb, 0x34, - 0x81, 0xb5, 0x61, 0x33, 0xeb, 0x83, 0xf3, 0x3e, 0xdd, 0x7a, 0xd3, 0x6d, - 0xe6, 0x9f, 0x0d, 0x17, 0x0a, 0x60, 0xeb, 0x9f, 0xa7, 0x8f, 0xd4, 0x78, - 0xf3, 0x15, 0x89, 0x7e, 0x93, 0x9d, 0x02, 0xeb, 0x41, 0x2f, 0x27, 0x81, - 0xa0, 0x10, 0x78, 0x26, 0x72, 0xec, 0x55, 0xd4, 0x35, 0x1a, 0x20, 0x34, - 0xc2, 0x4c, 0x89, 0x5b, 0x70, 0xa9, 0xf4, 0xea, 0xd5, 0x49, 0x18, 0xc6, - 0x5a, 0x2c, 0x15, 0xe0, 0x43, 0x80, 0x43, 0xc3, 0xde, 0xfa, 0x9c, 0xf1, - 0xe9, 0x6b, 0x70, 0x63, 0xfe, 0xc2, 0x53, 0x31, 0x6d, 0xfa, 0xff, 0xcd, - 0x94, 0x7c, 0xcc, 0xf1, 0x7b, 0x89, 0x8e, 0xca, 0xbc, 0x6e, 0x5c, 0x31, - 0x92, 0x12, 0xca, 0x2e, 0x24, 0xe3, 0x2f, 0xa0, 0x17, 0xad, 0x9b, 0x26, - 0x5a, 0x6b, 0x93, 0x18, 0x70, 0x75, 0x22, 0xfe, 0x9a, 0x94, 0xf6, 0x3d, - 0xa3, 0x91, 0x6d, 0x96, 0x47, 0x61, 0xb6, 0xc0, 0x2b, 0x2a, 0x22, 0xae, - 0x02, 0xf1, 0xcc, 0xb8, 0x9c, 0x5f, 0xfc, 0xba, 0x1c, 0x9c, 0x2e, 0x70, - 0x96, 0x70, 0x93, 0x87, 0x92, 0xff, 0x6a, 0x89, 0x3e, 0x5d, 0x02, 0xfb, - 0x2a, 0x26, 0xcb, 0x88, 0xaf, 0xf3, 0x3f, 0x0f, 0x47, 0xe4, 0xfe, 0xb1, - 0x0b, 0xd3, 0x61, 0xa4, 0xf7, 0x40, 0x59, 0x4b, 0xc1, 0xa3, 0xbb, 0xe6, - 0x56, 0xe0, 0x14, 0xe1, 0x47, 0x51, 0xd4, 0x7e, 0xb0, 0x04, 0x81, 0xf5, - 0xea, 0x30, 0xdc, 0xab, 0xe2, 0xa5, 0x34, 0xaa, 0xad, 0x81, 0xab, 0x02, - 0xaf, 0x42, 0x41, 0x35, 0x73, 0xfa, 0x01, 0xbd, 0x2c, 0xb3, 0xab, 0xcd, - 0xeb, 0x78, 0xb5, 0xf7, 0x9d, 0x36, 0xd7, 0x99, 0xa8, 0x7d, 0x8f, 0xfc, - 0x0d, 0x19, 0x31, 0x26, 0x46, 0xf8, 0x37, 0x4d, 0x81, 0x9e, 0x17, 0x68, - 0x5c, 0xce, 0xa1, 0x12, 0x78, 0x8e, 0x24, 0xd5, 0x98, 0xfc, 0x46, 0x5e, - 0x2d, 0x40, 0x6a, 0x67, 0xdf, 0xfe, 0x17, 0x81, 0xeb, 0xc5, 0xe3, 0xbe, - 0x05, 0xa4, 0x39, 0x44, 0xab, 0x3f, 0x5f, 0x45, 0xae, 0xc6, 0xbf, 0x5c, - 0xb8, 0x54, 0x1a, 0x19, 0x13, 0xd1, 0xee, 0xbc, 0x68, 0x89, 0xbf, 0x3a, - 0xbd, 0xa9, 0x39, 0x1c, 0xf6, 0x94, 0x96, 0x8e, 0xf4, 0x6d, 0xe8, 0xc0, - 0x8d, 0xbf, 0xa4, 0x5c, 0x0f, 0xcf, 0x8c, 0x6c, 0xce, 0xc2, 0x4b, 0xdf, - 0xec, 0x5d, 0x59, 0x3a, 0xa2, 0x4e, 0x49, 0xd8, 0xc6, 0xd7, 0xe5, 0x50, - 0x28, 0x16, 0x93, 0x6f, 0x6c, 0x80, 0x1e, 0xb6, 0x9e, 0x25, 0x04, 0x70, - 0x49, 0xc1, 0xe4, 0x3b, 0x2c, 0xb8, 0xa2, 0xdc, 0x7a, 0x27, 0xe6, 0x9d, - 0xcd, 0xfd, 0xda, 0x75, 0x16, 0x48, 0xe8, 0x51, 0x1d, 0x02, 0x7e, 0x93, - 0x5b, 0xb0, 0x13, 0x2c, 0xcd, 0xc9, 0xe6, 0x08, 0x71, 0x41, 0x51, 0xb5, - 0x87, 0x4d, 0xc8, 0x60, 0xcf, 0x8d, 0x18, 0xa5, 0x48, 0x44, 0x84, 0x5b, - 0x5c, 0x75, 0x1a, 0x40, 0x1e, 0x8a, 0x8f, 0x9d, 0xed, 0xc1, 0xd1, 0x60, - 0x8c, 0x23, 0xa6, 0x6a, 0x36, 0xd1, 0x81, 0x44, 0x98, 0x0b, 0xf7, 0x98, - 0x75, 0x8f, 0x3b, 0x44, 0xc9, 0xc0, 0xff, 0xa1, 0xd6, 0xd9, 0x7a, 0x03, - 0xac, 0x0d, 0xcb, 0x6f, 0x1f, 0x77, 0x52, 0xb8, 0x37, 0x54, 0x71, 0x6d, - 0xef, 0x00, 0x1c, 0x72, 0x8d, 0xec, 0x90, 0x67, 0x4d, 0xce, 0xf9, 0x28, - 0x33, 0x00, 0x4b, 0x98, 0x5c, 0xf4, 0x66, 0xbb, 0x7e, 0x30, 0x1b, 0x42, - 0x88, 0x3e, 0x43, 0xd7, 0x06, 0xd5, 0x0f, 0x11, 0x80, 0xf7, 0xb1, 0xfc, - 0xec, 0xbf, 0x21, 0x7e, 0x1b, 0x89, 0xe5, 0xfa, 0x9b, 0xa4, 0x09, 0xf3, - 0x69, 0x32, 0xd1, 0xc6, 0x05, 0x54, 0xa2, 0xde, 0x56, 0xbf, 0x21, 0xc1, - 0xe1, 0x1d, 0xbf, 0x27, 0xb6, 0x15, 0x3c, 0xe8, 0x40, 0xb8, 0xb7, 0xa4, - 0xa4, 0x8b, 0x6d, 0xe2, 0xee, 0x0f, 0x1c, 0xdc, 0x90, 0x0a, 0xf2, 0x6e, - 0x17, 0x9f, 0xdd, 0x7b, 0xa6, 0x19, 0x4a, 0x89, 0xbc, 0x6e, 0x31, 0x55, - 0x2e, 0xc5, 0xd6, 0xdf, 0x5b, 0xb5, 0x59, 0xee, 0x36, 0x8c, 0xa0, 0x31, - 0xb2, 0x50, 0xf0, 0x1a, 0x91, 0x42, 0x20, 0xe1, 0x1d, 0x4b, 0x85, 0x84, - 0x61, 0x54, 0x5a, 0x80, 0x9a, 0xe2, 0x8d, 0x2e, 0x6b, 0x5a, 0xf6, 0xea, - 0x9b, 0x42, 0x68, 0x41, 0xfa, 0xf6, 0xc8, 0x5f, 0x5b, 0x3e, 0xfd, 0x6a, - 0x46, 0xd2, 0x29, 0xa9, 0xc4, 0xb1, 0xec, 0xd9, 0xcd, 0x21, 0x12, 0xb9, - 0x21, 0x95, 0x90, 0x4f, 0x44, 0x72, 0xa2, 0x8d, 0x0c, 0x70, 0x35, 0x1e, - 0x72, 0xf1, 0x3c, 0xde, 0xac, 0x2b, 0x42, 0x98, 0x58, 0x6d, 0xeb, 0x7f, - 0xe8, 0x2c, 0xb2, 0x11, 0x8b, 0x6f, 0x85, 0x76, 0x84, 0x9e, 0x9b, 0x44, - 0x95, 0xf2, 0xe4, 0x84, 0xff, 0x54, 0x93, 0x64, 0xae, 0x06, 0x6d, 0x9e, - 0xc0, 0x7d, 0xc9, 0xd4, 0x50, 0x35, 0x8a, 0xcd, 0xae, 0xd5, 0x07, 0xaa, - 0x59, 0x0b, 0x32, 0xbe, 0xf0, 0xee, 0xcc, 0x12, 0x07, 0xe7, 0x5b, 0x46, - 0x1a, 0x1f, 0x76, 0x96, 0x58, 0x73, 0xf2, 0xbc, 0x30, 0x35, 0x58, 0x80, - 0x98, 0x2d, 0x24, 0x79, 0x69, 0x72, 0x87, 0x7c, 0x0b, 0xd0, 0xde, 0x8a, - 0x5a, 0x24, 0x2f, 0x16, 0x07, 0x70, 0x4a, 0x94, 0xc8, 0x7d, 0xa8, 0xe7, - 0x8f, 0xec, 0x5f, 0x08, 0x4b, 0xe5, 0x71, 0x88, 0x5f, 0x25, 0x1d, 0x09, - 0xe6, 0xa8, 0x1c, 0x83, 0xff, 0xcd, 0xcb, 0x34, 0xed, 0xdb, 0x39, 0x6f, - 0xab, 0x4a, 0x8d, 0xf1, 0x7f, 0x6b, 0x9d, 0xaf, 0x88, 0xad, 0x9a, 0xb8, - 0x7e, 0xcf, 0x15, 0x83, 0x96, 0xd0, 0x94, 0xeb, 0xf4, 0x0c, 0x27, 0xba, - 0xb7, 0xe2, 0xcf, 0x9c, 0xcb, 0x5c, 0xec, 0x5a, 0x1d, 0x60, 0x41, 0x12, - 0xb1, 0xa3, 0x13, 0xbf, 0x05, 0xfe, 0xe9, 0xc8, 0x04, 0xd2, 0xbd, 0xdb, - 0x1f, 0xab, 0x55, 0xe0, 0x2f, 0xd3, 0x5e, 0xa3, 0x22, 0x78, 0xbc, 0x10, - 0x4d, 0x96, 0x94, 0x69, 0xbb, 0xd6, 0x1e, 0x93, 0xc4, 0xbe, 0x55, 0x83, - 0x77, 0x2e, 0xf9, 0x3d, 0x08, 0x6d, 0xb4, 0xce, 0xa6, 0x47, 0x3f, 0x45, - 0xf3, 0xb3, 0x48, 0xc2, 0x46, 0xe9, 0x5c, 0x1d, 0xdd, 0x60, 0x7d, 0x26, - 0x51, 0xc1, 0x56, 0xfc, 0xcc, 0x09, 0x8d, 0xb1, 0x63, 0x79, 0x78, 0x83, - 0xe2, 0x21, 0x9c, 0x00, 0xbb, 0x9f, 0x72, 0xa9, 0x79, 0xc0, 0x9e, 0x3a, - 0x42, 0xe4, 0x09, 0x1d, 0xc1, 0x6b, 0x48, 0x6f, 0xf8, 0x6e, 0x46, 0x85, - 0x91, 0x93, 0xf4, 0xab, 0x3e, 0x99, 0x92, 0x5f, 0x4f, 0x83, 0xd5, 0x88, - 0xca, 0x47, 0x2e, 0xd6, 0x76, 0x22, 0x69, 0x64, 0x4b, 0x71, 0x83, 0xee, - 0x33, 0xb5, 0xdc, 0x6f, 0x01, 0x03, 0x02, 0x8b, 0xdc, 0xec, 0x2a, 0x76, - 0xb0, 0x2f, 0x88, 0xac, 0x9e, 0xff, 0x8e, 0x5b, 0x75, 0xb1, 0xf0, 0x1a, - 0xf8, 0x40, 0x5f, 0xf4, 0x5d, 0x9c, 0x53, 0x36, 0x9b, 0x9a, 0xc3, 0x09, - 0xbc, 0x38, 0x24, 0xd2, 0xb6, 0x8b, 0x09, 0xcb, 0xb8, 0x40, 0x12, 0x65, - 0x3d, 0x82, 0x80, 0x89, 0x54, 0xce, 0xf0, 0x4f, 0x94, 0xf8, 0x8a, 0x4c, - 0x38, 0x67, 0x9c, 0x43, 0xca, 0xe4, 0x26, 0x6d, 0x93, 0x48, 0x47, 0xc7, - 0xb0, 0xc1, 0x22, 0xae, 0x59, 0x0b, 0x2a, 0x8b, 0x72, 0x87, 0x0b, 0xef, - 0x93, 0x15, 0x44, 0xc9, 0x37, 0xb1, 0x35, 0x1e, 0x51, 0x66, 0x9d, 0x4e, - 0x42, 0xd5, 0x4e, 0x53, 0xec, 0x2d, 0xed, 0xc0, 0xc1, 0x86, 0x96, 0x3a, - 0x7c, 0x56, 0xf4, 0xf7, 0x63, 0xa3, 0x70, 0xa4, 0x6d, 0xec, 0xbd, 0x8b, - 0xca, 0x14, 0x5d, 0x14, 0x0a, 0x94, 0x66, 0x6f, 0xb4, 0x98, 0x7f, 0x5b, - 0xd9, 0x3d, 0x1f, 0x9b, 0x37, 0x5c, 0xd3, 0xff, 0xe4, 0x3d, 0x13, 0xb7, - 0x75, 0x3d, 0x33, 0xb9, 0x08, 0x4b, 0xad, 0xff, 0x37, 0xc4, 0x03, 0xbc, - 0xcf, 0x67, 0x4e, 0xcb, 0x23, 0x55, 0x85, 0x2a, 0xf8, 0x2b, 0x45, 0xce, - 0x10, 0x3d, 0x74, 0x07, 0x1a, 0xa2, 0xd4, 0x1f, 0xaf, 0x07, 0xfb, 0xfa, - 0xac, 0x0f, 0x2f, 0xfc, 0x43, 0xc1, 0x96, 0xe1, 0x2a, 0x78, 0x00, 0xdb, - 0x53, 0xec, 0xd5, 0x14, 0x42, 0x39, 0xf9, 0x09, 0xb7, 0x1a, 0xc5, 0x72, - 0x52, 0xa0, 0x37, 0xa4, 0x23, 0xae, 0x05, 0x3e, 0x7f, 0x2c, 0xdc, 0xcd, - 0x4c, 0x01, 0x7f, 0x65, 0x08, 0xf2, 0x8b, 0x80, 0x6a, 0x30, 0x2b, 0x30, - 0xe3, 0x98, 0x96, 0x01, 0xed, 0xe0, 0xdf, 0xd6, 0xce, 0x5b, 0x1b, 0x48, - 0x11, 0xec, 0x6f, 0x52, 0x74, 0xa3, 0xcf, 0xe9, 0x84, 0x1d, 0xb3, 0x1d, - 0x94, 0x7e, 0x4f, 0xe5, 0x78, 0x51, 0x7e, 0x39, 0x53, 0x6b, 0x3e, 0x58, - 0x2d, 0x0e, 0x5f, 0x63, 0x2c, 0x93, 0x8f, 0x5b, 0x55, 0x3d, 0x35, 0x3b, - 0x3b, 0xde, 0x37, 0x25, 0x58, 0x11, 0xc6, 0x4b, 0x17, 0x71, 0xc4, 0xfa, - 0x6e, 0xff, 0x45, 0x2d, 0x59, 0xc1, 0x2a, 0x7e, 0x9a, 0x70, 0x2c, 0x9b, - 0x76, 0x2b, 0xa6, 0xf8, 0x1f, 0xa0, 0xb5, 0xa2, 0x03, 0x40, 0xd1, 0x02, - 0xd0, 0xf2, 0xf7, 0xb0, 0x73, 0xb9, 0x2a, 0xcd, 0x94, 0x94, 0x89, 0x49, - 0xa5, 0x91, 0x51, 0xe2, 0x95, 0x34, 0xce, 0x4e, 0x6f, 0x44, 0x39, 0xe7, - 0xa3, 0x23, 0xf8, 0x2c, 0xc7, 0x02, 0x45, 0x23, 0xf8, 0x11, 0x32, 0x3c, - 0x30, 0x05, 0x72, 0xfe, 0xb7, 0xd6, 0xa3, 0x0c, 0x2c, 0x24, 0x76, 0x4c, - 0x80, 0x74, 0x08, 0x9b, 0xe7, 0xc2, 0xf5, 0x76, 0x10, 0xa5, 0x5d, 0x48, - 0x72, 0xb8, 0x4c, 0xc3, 0xf5, 0x82, 0x02, 0xcb, 0xba, 0xf7, 0x0a, 0x2e, - 0x98, 0xc5, 0x11, 0x5d, 0xd7, 0xeb, 0xfa, 0xa9, 0x70, 0xdf, 0xff, 0xf3, - 0xef, 0x3e, 0x0b, 0xf5, 0x9e, 0x3d, 0x33, 0x56, 0xb8, 0x56, 0xc0, 0xc8, - 0x2d, 0x3f, 0xaa, 0xdf, 0x31, 0x30, 0xb6, 0x0e, 0x89, 0xc2, 0x3a, 0x5b, - 0x4d, 0x8d, 0x58, 0xba, 0xf9, 0xf8, 0xde, 0x8f, 0x75, 0xec, 0x60, 0xec, - 0xae, 0x2f, 0xb3, 0x9e, 0xe9, 0x99, 0xa5, 0x7d, 0x04, 0x27, 0x41, 0xf2, - 0x99, 0xd3, 0x1e, 0xf9, 0x2c, 0xd6, 0xd0, 0x41, 0xaf, 0xda, 0x48, 0x0d, - 0x9b, 0x5e, 0xad, 0x62, 0x29, 0x57, 0x1c, 0x02, 0x0e, 0xc4, 0x78, 0xec, - 0x2d, 0xc0, 0x03, 0xa7, 0x36, 0x8f, 0xb8, 0x33, 0x79, 0xf5, 0x6a, 0xe2, - 0x43, 0x09, 0x8e, 0x2d, 0x6b, 0x05, 0x64, 0xf8, 0x17, 0xcb, 0xab, 0x7b, - 0x41, 0x1c, 0xd2, 0x89, 0x5f, 0x06, 0xca, 0x7a, 0x6a, 0x6b, 0x46, 0x05, - 0xb4, 0x76, 0x50, 0xb5, 0x99, 0x82, 0xe0, 0xd0, 0xf4, 0xda, 0x1f, 0x18, - 0xf1, 0x25, 0xb7, 0xc2, 0x36, 0xb9, 0xe3, 0x2a, 0xe3, 0x99, 0xd5, 0x04, - 0x9d, 0x92, 0x7a, 0x75, 0x46, 0x8c, 0x7f, 0x76, 0xec, 0xc2, 0x7c, 0xfc, - 0xc6, 0x6d, 0x2f, 0x0d, 0xbb, 0xfb, 0x4a, 0x3f, 0x2c, 0x55, 0x74, 0xb7, - 0x71, 0x85, 0x1e, 0xa0, 0x33, 0x16, 0xc3, 0x48, 0xba, 0x2a, 0xd4, 0xca, - 0x4b, 0x91, 0x8c, 0xca, 0x8c, 0x99, 0xa4, 0xb7, 0xe7, 0xc4, 0x4f, 0xb7, - 0x9c, 0xb1, 0x5c, 0x4b, 0xa1, 0x4c, 0x0e, 0x6b, 0xbf, 0x73, 0x7c, 0x2f, - 0x90, 0x7b, 0x14, 0x5f, 0x91, 0x85, 0x49, 0x2b, 0x7e, 0x97, 0x6a, 0xbe, - 0xd4, 0xcd, 0xac, 0x7e, 0xfb, 0xcb, 0x52, 0x31, 0xbe, 0x1c, 0xbb, 0x09, - 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, - 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, - 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x3c, 0xb1, 0x13, 0x3b, - 0x3a, 0xb1, 0x13, 0x3b, 0x3a, 0x75, 0x88, 0x9d, 0x3d, 0xed, 0x02, 0xbd, - 0xb5, 0x7b, 0x26, 0x08, 0xb8, 0x7b, 0xce, 0x8d, 0x9f, 0x42, 0x85, 0x0f, - 0x5a, 0xdc, 0x17, 0x62, 0x93, 0x24, 0x49, 0x12, 0x6d, 0xdb, 0xb6, 0xed, - 0x23, 0x3b, 0x91, 0xa4, 0x6f, 0xe9, 0xf9, 0xfe, 0x27, 0x9d, 0x0c, 0xbd, - 0x29, 0x9d, 0x80, 0x45, 0x65, 0x87, 0x77, 0x08, 0xda, 0x7d, 0x86, 0x4a, - 0x67, 0x66, 0x66, 0x66, 0xee, 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, - 0xdf, 0xbd, 0xfe, 0x81, 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, 0x0d, 0xd7, - 0x7b, 0xed, 0x42, 0x27, 0xf9, 0x14, 0xd4, 0x3d, 0x01, 0x00, 0x00, 0x10, - 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, 0xcf, 0xc2, 0xc9, 0x81, 0xfe, - 0x84, 0xba, 0x07, 0x89, 0x87, 0x3a, 0x06, 0xb0, 0x73, 0xa5, 0x03, 0xf7, - 0xdd, 0xcc, 0xae, 0x6c, 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, - 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, - 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, - 0x56, 0x55, 0x55, 0xd5, 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, - 0x3a, 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, 0x76, 0x20, 0x15, 0x91, - 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, 0xd8, 0x46, 0x01, 0x00, 0x00, 0x00, - 0x1a, 0xca, 0x6b, 0x28, 0xc9, 0x13, 0xbb, 0x86, 0xa4, 0x14, 0xdc, 0x41, - 0x99, 0xe7, 0x70, 0x67, 0x73, 0x38, 0x5f, 0x81, 0x0e, 0xba, 0x87, 0xf1, - 0xfd, 0xab, 0xd3, 0x6d, 0xcd, 0xcc, 0xcc, 0x0c, 0x33, 0x33, 0x33, 0x73, - 0x99, 0x5a, 0x99, 0xd9, 0x66, 0xa5, 0x8f, 0xcc, 0x00, 0x7a, 0x0b, 0x9b, - 0x67, 0xe0, 0x7b, 0xd4, 0xca, 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, - 0xb7, 0x6d, 0xdb, 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, 0x08, 0x0c, 0xc3, - 0x9e, 0x0f, 0x12, 0x8e, 0xc3, 0x20, 0x7d, 0x25, 0x19, 0x76, 0x42, 0x1d, - 0xd6, 0x85, 0x70, 0xa2, 0x75, 0x71, 0x0a, 0x0b, 0x01, 0x00, 0x00, 0x80, - 0xd0, 0x45, 0x17, 0xdd, 0x44, 0x29, 0xe7, 0x22, 0x1a, 0x4b, 0x4c, 0x44, - 0xbf, 0x7c, 0x1a, 0xac, 0x07, 0x94, 0x2b, 0x48, 0x39, 0x83, 0xd0, 0x04, - 0x5b, 0xab, 0xa8, 0x6e, 0xb3, 0x90, 0x85, 0x2c, 0x58, 0xc8, 0x42, 0x16, - 0xa6, 0x87, 0xa5, 0x37, 0xe1, 0xa4, 0x8e, 0x32, 0x8a, 0x4c, 0x12, 0x99, - 0xe5, 0x14, 0x75, 0x7a, 0xcf, 0x61, 0x03, 0xc0, 0xc2, 0xa7, 0xce, 0x64, - 0x3c, 0xb1, 0x13, 0x3b, 0x3a, 0xb1, 0x13, 0x3b, 0x3a, 0x75, 0x88, 0x9d, - 0x3d, 0xed, 0x02, 0xbd, 0xb5, 0x7b, 0x26, 0x08, 0xb8, 0x7b, 0xce, 0x8d, - 0x9f, 0x42, 0x85, 0x0f, 0x5a, 0xdc, 0x17, 0x62, 0x93, 0x24, 0x49, 0x12, - 0x6d, 0xdb, 0xb6, 0xed, 0x23, 0x3b, 0x91, 0xa4, 0x6f, 0xe9, 0xf9, 0xfe, - 0x27, 0x9d, 0x0c, 0xbd, 0x29, 0x9d, 0x80, 0x45, 0x65, 0x87, 0x77, 0x08, - 0xda, 0x7d, 0x86, 0x4a, 0x67, 0x66, 0x66, 0x66, 0xee, 0xee, 0xee, 0xee, - 0x76, 0x97, 0x76, 0x77, 0xdf, 0xbd, 0xfe, 0x81, 0xad, 0xea, 0xef, 0xd1, - 0x8c, 0xc8, 0x0d, 0xd7, 0x7b, 0xed, 0x42, 0x27, 0xf9, 0x14, 0xd4, 0x3d, - 0x01, 0x00, 0x00, 0x10, 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, 0xcf, - 0xc2, 0xc9, 0x81, 0xfe, 0x84, 0xba, 0x07, 0x89, 0x87, 0x3a, 0x06, 0xb0, - 0x73, 0xa5, 0x03, 0xf7, 0xdd, 0xcc, 0xae, 0x6c, 0xb5, 0xb4, 0xb4, 0xb4, - 0xf0, 0xf0, 0xf0, 0xf0, 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, - 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, 0xaf, - 0x31, 0xfa, 0x46, 0x1b, 0x56, 0x55, 0x55, 0xd5, 0x1b, 0xc7, 0x71, 0x9c, - 0x8d, 0x8d, 0xe2, 0xb8, 0x3a, 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, - 0x76, 0x20, 0x15, 0x91, 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, 0xd8, 0x46, - 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca, 0x6b, 0x28, 0xc9, 0x13, 0xbb, 0x86, - 0xa4, 0x14, 0xdc, 0x41, 0x99, 0xe7, 0x70, 0x67, 0x73, 0x38, 0x5f, 0x81, - 0x0e, 0xba, 0x87, 0xf1, 0xfd, 0xab, 0xd3, 0x6d, 0xcd, 0xcc, 0xcc, 0x0c, - 0x33, 0x33, 0x33, 0x73, 0x99, 0x5a, 0x99, 0xd9, 0x66, 0xa5, 0x8f, 0xcc, - 0x00, 0x7a, 0x0b, 0x9b, 0x67, 0xe0, 0x7b, 0xd4, 0xca, 0xd2, 0x0a, 0x13, - 0xe6, 0xa5, 0x63, 0x11, 0xb7, 0x6d, 0xdb, 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, - 0xc2, 0x08, 0x0c, 0xc3, 0x9e, 0x0f, 0x12, 0x8e, 0xc3, 0x20, 0x7d, 0x25, - 0x19, 0x76, 0x42, 0x1d, 0xd6, 0x85, 0x70, 0xa2, 0x75, 0x71, 0x0a, 0x0b, - 0x01, 0x00, 0x00, 0x80, 0xd0, 0x45, 0x17, 0xdd, 0x44, 0x29, 0xe7, 0x22, - 0x1a, 0x4b, 0x4c, 0x44, 0xbf, 0x7c, 0x1a, 0xac, 0x07, 0x94, 0x2b, 0x48, - 0x39, 0x83, 0xd0, 0x04, 0x5b, 0xab, 0xa8, 0x6e, 0xb3, 0x90, 0x85, 0x2c, - 0x58, 0xc8, 0x42, 0x16, 0xa6, 0x87, 0xa5, 0x37, 0xe1, 0xa4, 0x8e, 0x32, - 0x8a, 0x4c, 0x12, 0x99, 0xe5, 0x14, 0x75, 0x7a, 0xcf, 0x61, 0x03, 0xc0, - 0xc2, 0xa7, 0xce, 0x64, 0x01, 0x00, 0x00, 0x60, 0x54, 0x55, 0x55, 0xb5, - 0x29, 0x18, 0xa9, 0x8a, 0x2d, 0xbd, 0x95, 0xc5, 0xaf, 0x19, 0x3b, 0x09, - 0x5d, 0xc4, 0x6c, 0x86, 0xba, 0x42, 0x8c, 0xb2, 0xaf, 0x15, 0x19, 0x6f, - 0x93, 0x24, 0x49, 0x12, 0x6d, 0xdb, 0xb6, 0xed, 0x23, 0x3b, 0x91, 0xa4, - 0x6f, 0xe9, 0xf9, 0xfe, 0x27, 0x9d, 0x0c, 0xbd, 0x29, 0x9d, 0x80, 0x45, - 0x65, 0x87, 0x77, 0x08, 0xda, 0x7d, 0x86, 0x4a, 0x67, 0x66, 0x66, 0x66, - 0xee, 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, 0xdf, 0xbd, 0xfe, 0x81, - 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, 0x0d, 0xd7, 0x7b, 0xed, 0x42, 0x27, - 0xf9, 0x14, 0xd4, 0x3d, 0x01, 0x00, 0x00, 0x10, 0xff, 0xff, 0xff, 0x0f, - 0x3f, 0x76, 0xfe, 0xcf, 0xc2, 0xc9, 0x81, 0xfe, 0x84, 0xba, 0x07, 0x89, - 0x87, 0x3a, 0x06, 0xb0, 0x73, 0xa5, 0x03, 0xf7, 0xdd, 0xcc, 0xae, 0x6c, - 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, 0x2c, 0x9d, 0xff, 0xff, - 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, - 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, 0x56, 0x55, 0x55, 0xd5, - 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, 0x3a, 0xe4, 0xf3, 0x24, - 0x3c, 0x92, 0x8d, 0xb0, 0x76, 0x20, 0x15, 0x91, 0xc8, 0x5a, 0xa7, 0x27, - 0x08, 0x58, 0xd8, 0x46, 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca, 0x6b, 0x28, - 0xc9, 0x13, 0xbb, 0x86, 0xa4, 0x14, 0xdc, 0x41, 0x99, 0xe7, 0x70, 0x67, - 0x73, 0x38, 0x5f, 0x81, 0x0e, 0xba, 0x87, 0xf1, 0xfd, 0xab, 0xd3, 0x6d, - 0xcd, 0xcc, 0xcc, 0x0c, 0x33, 0x33, 0x33, 0x73, 0x99, 0x5a, 0x99, 0xd9, - 0x66, 0xa5, 0x8f, 0xcc, 0x00, 0x7a, 0x0b, 0x9b, 0x67, 0xe0, 0x7b, 0xd4, - 0xca, 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, 0xb7, 0x6d, 0xdb, 0xb6, - 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, 0x08, 0x0c, 0xc3, 0x9e, 0x0f, 0x12, 0x8e, - 0xc3, 0x20, 0x7d, 0x25, 0x19, 0x76, 0x42, 0x1d, 0xd6, 0x85, 0x70, 0xa2, - 0x75, 0x71, 0x0a, 0x0b, 0x01, 0x00, 0x00, 0x80, 0xd0, 0x45, 0x17, 0xdd, - 0x44, 0x29, 0xe7, 0x22, 0x1a, 0x4b, 0x4c, 0x44, 0xbf, 0x7c, 0x1a, 0xac, - 0x07, 0x94, 0x2b, 0x48, 0x39, 0x83, 0xd0, 0x04, 0x5b, 0xab, 0xa8, 0x6e, - 0xb3, 0x90, 0x85, 0x2c, 0x58, 0xc8, 0x42, 0x16, 0xa6, 0x87, 0xa5, 0x37, - 0xe1, 0xa4, 0x8e, 0x32, 0x8a, 0x4c, 0x12, 0x99, 0xe5, 0x14, 0x75, 0x7a, - 0xcf, 0x61, 0x03, 0xc0, 0xc2, 0xa7, 0xce, 0x64, 0x01, 0x00, 0x00, 0x60, - 0x54, 0x55, 0x55, 0xb5, 0x29, 0x18, 0xa9, 0x8a, 0x2d, 0xbd, 0x95, 0xc5, - 0xaf, 0x19, 0x3b, 0x09, 0x5d, 0xc4, 0x6c, 0x86, 0xba, 0x42, 0x8c, 0xb2, - 0xaf, 0x15, 0x19, 0x6f, 0xd8, 0xa3, 0x70, 0x3d, 0x5b, 0x8f, 0xc2, 0xf5, - 0x79, 0xf8, 0x12, 0xae, 0x54, 0xd4, 0x3d, 0x80, 0x9e, 0x41, 0x24, 0xea, - 0xf2, 0xf9, 0x2a, 0x06, 0xdc, 0x0c, 0xed, 0x96, 0xfa, 0x70, 0xa7, 0x6a, - 0x67, 0x66, 0x66, 0x66, 0xee, 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, - 0xdf, 0xbd, 0xfe, 0x81, 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, 0x0d, 0xd7, - 0x7b, 0xed, 0x42, 0x27, 0xf9, 0x14, 0xd4, 0x3d, 0x01, 0x00, 0x00, 0x10, - 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, 0xcf, 0xc2, 0xc9, 0x81, 0xfe, - 0x84, 0xba, 0x07, 0x89, 0x87, 0x3a, 0x06, 0xb0, 0x73, 0xa5, 0x03, 0xf7, - 0xdd, 0xcc, 0xae, 0x6c, 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, - 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, - 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, - 0x56, 0x55, 0x55, 0xd5, 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, - 0x3a, 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, 0x76, 0x20, 0x15, 0x91, - 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, 0xd8, 0x46, 0x01, 0x00, 0x00, 0x00, - 0x1a, 0xca, 0x6b, 0x28, 0xc9, 0x13, 0xbb, 0x86, 0xa4, 0x14, 0xdc, 0x41, - 0x99, 0xe7, 0x70, 0x67, 0x73, 0x38, 0x5f, 0x81, 0x0e, 0xba, 0x87, 0xf1, - 0xfd, 0xab, 0xd3, 0x6d, 0xcd, 0xcc, 0xcc, 0x0c, 0x33, 0x33, 0x33, 0x73, - 0x99, 0x5a, 0x99, 0xd9, 0x66, 0xa5, 0x8f, 0xcc, 0x00, 0x7a, 0x0b, 0x9b, - 0x67, 0xe0, 0x7b, 0xd4, 0xca, 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, - 0xb7, 0x6d, 0xdb, 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, 0x08, 0x0c, 0xc3, - 0x9e, 0x0f, 0x12, 0x8e, 0xc3, 0x20, 0x7d, 0x25, 0x19, 0x76, 0x42, 0x1d, - 0xd6, 0x85, 0x70, 0xa2, 0x75, 0x71, 0x0a, 0x0b, 0x01, 0x00, 0x00, 0x80, - 0xd0, 0x45, 0x17, 0xdd, 0x44, 0x29, 0xe7, 0x22, 0x1a, 0x4b, 0x4c, 0x44, - 0xbf, 0x7c, 0x1a, 0xac, 0x07, 0x94, 0x2b, 0x48, 0x39, 0x83, 0xd0, 0x04, - 0x5b, 0xab, 0xa8, 0x6e, 0xb3, 0x90, 0x85, 0x2c, 0x58, 0xc8, 0x42, 0x16, - 0xa6, 0x87, 0xa5, 0x37, 0xe1, 0xa4, 0x8e, 0x32, 0x8a, 0x4c, 0x12, 0x99, - 0xe5, 0x14, 0x75, 0x7a, 0xcf, 0x61, 0x03, 0xc0, 0xc2, 0xa7, 0xce, 0x64, - 0x01, 0x00, 0x00, 0x60, 0x54, 0x55, 0x55, 0xb5, 0x29, 0x18, 0xa9, 0x8a, - 0x2d, 0xbd, 0x95, 0xc5, 0xaf, 0x19, 0x3b, 0x09, 0x5d, 0xc4, 0x6c, 0x86, - 0xba, 0x42, 0x8c, 0xb2, 0xaf, 0x15, 0x19, 0x6f, 0xd8, 0xa3, 0x70, 0x3d, - 0x5b, 0x8f, 0xc2, 0xf5, 0x79, 0xf8, 0x12, 0xae, 0x54, 0xd4, 0x3d, 0x80, - 0x9e, 0x41, 0x24, 0xea, 0xf2, 0xf9, 0x2a, 0x06, 0xdc, 0x0c, 0xed, 0x96, - 0xfa, 0x70, 0xa7, 0x6a, 0x9e, 0xd8, 0x89, 0x1d, 0x9d, 0xd8, 0x89, 0x1d, - 0x9d, 0x3a, 0xc4, 0xce, 0x9e, 0x76, 0x81, 0xde, 0xda, 0x3d, 0x13, 0x04, - 0xdc, 0x3d, 0xe7, 0xc6, 0x4f, 0xa1, 0xc2, 0x07, 0x2d, 0xee, 0x0b, 0x31, - 0x01, 0x00, 0x00, 0x10, 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, 0xcf, - 0xc2, 0xc9, 0x81, 0xfe, 0x84, 0xba, 0x07, 0x89, 0x87, 0x3a, 0x06, 0xb0, - 0x73, 0xa5, 0x03, 0xf7, 0xdd, 0xcc, 0xae, 0x6c, 0xb5, 0xb4, 0xb4, 0xb4, - 0xf0, 0xf0, 0xf0, 0xf0, 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, - 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, 0xaf, - 0x31, 0xfa, 0x46, 0x1b, 0x56, 0x55, 0x55, 0xd5, 0x1b, 0xc7, 0x71, 0x9c, - 0x8d, 0x8d, 0xe2, 0xb8, 0x3a, 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, - 0x76, 0x20, 0x15, 0x91, 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, 0xd8, 0x46, - 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca, 0x6b, 0x28, 0xc9, 0x13, 0xbb, 0x86, - 0xa4, 0x14, 0xdc, 0x41, 0x99, 0xe7, 0x70, 0x67, 0x73, 0x38, 0x5f, 0x81, - 0x0e, 0xba, 0x87, 0xf1, 0xfd, 0xab, 0xd3, 0x6d, 0xcd, 0xcc, 0xcc, 0x0c, - 0x33, 0x33, 0x33, 0x73, 0x99, 0x5a, 0x99, 0xd9, 0x66, 0xa5, 0x8f, 0xcc, - 0x00, 0x7a, 0x0b, 0x9b, 0x67, 0xe0, 0x7b, 0xd4, 0xca, 0xd2, 0x0a, 0x13, - 0xe6, 0xa5, 0x63, 0x11, 0xb7, 0x6d, 0xdb, 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, - 0xc2, 0x08, 0x0c, 0xc3, 0x9e, 0x0f, 0x12, 0x8e, 0xc3, 0x20, 0x7d, 0x25, - 0x19, 0x76, 0x42, 0x1d, 0xd6, 0x85, 0x70, 0xa2, 0x75, 0x71, 0x0a, 0x0b, - 0x01, 0x00, 0x00, 0x80, 0xd0, 0x45, 0x17, 0xdd, 0x44, 0x29, 0xe7, 0x22, - 0x1a, 0x4b, 0x4c, 0x44, 0xbf, 0x7c, 0x1a, 0xac, 0x07, 0x94, 0x2b, 0x48, - 0x39, 0x83, 0xd0, 0x04, 0x5b, 0xab, 0xa8, 0x6e, 0xb3, 0x90, 0x85, 0x2c, - 0x58, 0xc8, 0x42, 0x16, 0xa6, 0x87, 0xa5, 0x37, 0xe1, 0xa4, 0x8e, 0x32, - 0x8a, 0x4c, 0x12, 0x99, 0xe5, 0x14, 0x75, 0x7a, 0xcf, 0x61, 0x03, 0xc0, - 0xc2, 0xa7, 0xce, 0x64, 0x01, 0x00, 0x00, 0x60, 0x54, 0x55, 0x55, 0xb5, - 0x29, 0x18, 0xa9, 0x8a, 0x2d, 0xbd, 0x95, 0xc5, 0xaf, 0x19, 0x3b, 0x09, - 0x5d, 0xc4, 0x6c, 0x86, 0xba, 0x42, 0x8c, 0xb2, 0xaf, 0x15, 0x19, 0x6f, - 0xd8, 0xa3, 0x70, 0x3d, 0x5b, 0x8f, 0xc2, 0xf5, 0x79, 0xf8, 0x12, 0xae, - 0x54, 0xd4, 0x3d, 0x80, 0x9e, 0x41, 0x24, 0xea, 0xf2, 0xf9, 0x2a, 0x06, - 0xdc, 0x0c, 0xed, 0x96, 0xfa, 0x70, 0xa7, 0x6a, 0x9e, 0xd8, 0x89, 0x1d, - 0x9d, 0xd8, 0x89, 0x1d, 0x9d, 0x3a, 0xc4, 0xce, 0x9e, 0x76, 0x81, 0xde, - 0xda, 0x3d, 0x13, 0x04, 0xdc, 0x3d, 0xe7, 0xc6, 0x4f, 0xa1, 0xc2, 0x07, - 0x2d, 0xee, 0x0b, 0x31, 0x39, 0x8e, 0xe3, 0x38, 0x68, 0x2f, 0xa1, 0xbd, - 0x5e, 0xea, 0xec, 0x25, 0x26, 0x0c, 0x0e, 0x52, 0x26, 0xc4, 0x7d, 0x72, - 0x4c, 0x78, 0xa5, 0x4f, 0x18, 0x68, 0x90, 0x0c, 0x3f, 0x58, 0x96, 0x08, - 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, 0x2c, 0x9d, 0xff, 0xff, - 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, - 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, 0x56, 0x55, 0x55, 0xd5, - 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, 0x3a, 0xe4, 0xf3, 0x24, - 0x3c, 0x92, 0x8d, 0xb0, 0x76, 0x20, 0x15, 0x91, 0xc8, 0x5a, 0xa7, 0x27, - 0x08, 0x58, 0xd8, 0x46, 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca, 0x6b, 0x28, - 0xc9, 0x13, 0xbb, 0x86, 0xa4, 0x14, 0xdc, 0x41, 0x99, 0xe7, 0x70, 0x67, - 0x73, 0x38, 0x5f, 0x81, 0x0e, 0xba, 0x87, 0xf1, 0xfd, 0xab, 0xd3, 0x6d, - 0xcd, 0xcc, 0xcc, 0x0c, 0x33, 0x33, 0x33, 0x73, 0x99, 0x5a, 0x99, 0xd9, - 0x66, 0xa5, 0x8f, 0xcc, 0x00, 0x7a, 0x0b, 0x9b, 0x67, 0xe0, 0x7b, 0xd4, - 0xca, 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, 0xb7, 0x6d, 0xdb, 0xb6, - 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, 0x08, 0x0c, 0xc3, 0x9e, 0x0f, 0x12, 0x8e, - 0xc3, 0x20, 0x7d, 0x25, 0x19, 0x76, 0x42, 0x1d, 0xd6, 0x85, 0x70, 0xa2, - 0x75, 0x71, 0x0a, 0x0b, 0x01, 0x00, 0x00, 0x80, 0xd0, 0x45, 0x17, 0xdd, - 0x44, 0x29, 0xe7, 0x22, 0x1a, 0x4b, 0x4c, 0x44, 0xbf, 0x7c, 0x1a, 0xac, - 0x07, 0x94, 0x2b, 0x48, 0x39, 0x83, 0xd0, 0x04, 0x5b, 0xab, 0xa8, 0x6e, - 0xb3, 0x90, 0x85, 0x2c, 0x58, 0xc8, 0x42, 0x16, 0xa6, 0x87, 0xa5, 0x37, - 0xe1, 0xa4, 0x8e, 0x32, 0x8a, 0x4c, 0x12, 0x99, 0xe5, 0x14, 0x75, 0x7a, - 0xcf, 0x61, 0x03, 0xc0, 0xc2, 0xa7, 0xce, 0x64, 0x01, 0x00, 0x00, 0x60, - 0x54, 0x55, 0x55, 0xb5, 0x29, 0x18, 0xa9, 0x8a, 0x2d, 0xbd, 0x95, 0xc5, - 0xaf, 0x19, 0x3b, 0x09, 0x5d, 0xc4, 0x6c, 0x86, 0xba, 0x42, 0x8c, 0xb2, - 0xaf, 0x15, 0x19, 0x6f, 0xd8, 0xa3, 0x70, 0x3d, 0x5b, 0x8f, 0xc2, 0xf5, - 0x79, 0xf8, 0x12, 0xae, 0x54, 0xd4, 0x3d, 0x80, 0x9e, 0x41, 0x24, 0xea, - 0xf2, 0xf9, 0x2a, 0x06, 0xdc, 0x0c, 0xed, 0x96, 0xfa, 0x70, 0xa7, 0x6a, - 0x9e, 0xd8, 0x89, 0x1d, 0x9d, 0xd8, 0x89, 0x1d, 0x9d, 0x3a, 0xc4, 0xce, - 0x9e, 0x76, 0x81, 0xde, 0xda, 0x3d, 0x13, 0x04, 0xdc, 0x3d, 0xe7, 0xc6, - 0x4f, 0xa1, 0xc2, 0x07, 0x2d, 0xee, 0x0b, 0x31, 0x39, 0x8e, 0xe3, 0x38, - 0x68, 0x2f, 0xa1, 0xbd, 0x5e, 0xea, 0xec, 0x25, 0x26, 0x0c, 0x0e, 0x52, - 0x26, 0xc4, 0x7d, 0x72, 0x4c, 0x78, 0xa5, 0x4f, 0x18, 0x68, 0x90, 0x0c, - 0x3f, 0x58, 0x96, 0x08, 0x4a, 0x92, 0x24, 0x09, 0xb6, 0x6d, 0xdb, 0x76, - 0x91, 0xcb, 0x47, 0x52, 0xb9, 0xc6, 0x5b, 0xa9, 0x96, 0x3a, 0x57, 0xe3, - 0x98, 0x3a, 0x5d, 0xbc, 0x56, 0x82, 0x0a, 0x99, 0x96, 0x12, 0x3a, 0x5f, - 0x56, 0x55, 0x55, 0xd5, 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, - 0x3a, 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, 0x76, 0x20, 0x15, 0x91, - 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, 0xd8, 0x46, 0x01, 0x00, 0x00, 0x00, - 0x1a, 0xca, 0x6b, 0x28, 0xc9, 0x13, 0xbb, 0x86, 0xa4, 0x14, 0xdc, 0x41, - 0x99, 0xe7, 0x70, 0x67, 0x73, 0x38, 0x5f, 0x81, 0x0e, 0xba, 0x87, 0xf1, - 0xfd, 0xab, 0xd3, 0x6d, 0xcd, 0xcc, 0xcc, 0x0c, 0x33, 0x33, 0x33, 0x73, - 0x99, 0x5a, 0x99, 0xd9, 0x66, 0xa5, 0x8f, 0xcc, 0x00, 0x7a, 0x0b, 0x9b, - 0x67, 0xe0, 0x7b, 0xd4, 0xca, 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, - 0xb7, 0x6d, 0xdb, 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, 0x08, 0x0c, 0xc3, - 0x9e, 0x0f, 0x12, 0x8e, 0xc3, 0x20, 0x7d, 0x25, 0x19, 0x76, 0x42, 0x1d, - 0xd6, 0x85, 0x70, 0xa2, 0x75, 0x71, 0x0a, 0x0b, 0x01, 0x00, 0x00, 0x80, - 0xd0, 0x45, 0x17, 0xdd, 0x44, 0x29, 0xe7, 0x22, 0x1a, 0x4b, 0x4c, 0x44, - 0xbf, 0x7c, 0x1a, 0xac, 0x07, 0x94, 0x2b, 0x48, 0x39, 0x83, 0xd0, 0x04, - 0x5b, 0xab, 0xa8, 0x6e, 0xb3, 0x90, 0x85, 0x2c, 0x58, 0xc8, 0x42, 0x16, - 0xa6, 0x87, 0xa5, 0x37, 0xe1, 0xa4, 0x8e, 0x32, 0x8a, 0x4c, 0x12, 0x99, - 0xe5, 0x14, 0x75, 0x7a, 0xcf, 0x61, 0x03, 0xc0, 0xc2, 0xa7, 0xce, 0x64, - 0x01, 0x00, 0x00, 0x60, 0x54, 0x55, 0x55, 0xb5, 0x29, 0x18, 0xa9, 0x8a, - 0x2d, 0xbd, 0x95, 0xc5, 0xaf, 0x19, 0x3b, 0x09, 0x5d, 0xc4, 0x6c, 0x86, - 0xba, 0x42, 0x8c, 0xb2, 0xaf, 0x15, 0x19, 0x6f, 0xd8, 0xa3, 0x70, 0x3d, - 0x5b, 0x8f, 0xc2, 0xf5, 0x79, 0xf8, 0x12, 0xae, 0x54, 0xd4, 0x3d, 0x80, - 0x9e, 0x41, 0x24, 0xea, 0xf2, 0xf9, 0x2a, 0x06, 0xdc, 0x0c, 0xed, 0x96, - 0xfa, 0x70, 0xa7, 0x6a, 0x9e, 0xd8, 0x89, 0x1d, 0x9d, 0xd8, 0x89, 0x1d, - 0x9d, 0x3a, 0xc4, 0xce, 0x9e, 0x76, 0x81, 0xde, 0xda, 0x3d, 0x13, 0x04, - 0xdc, 0x3d, 0xe7, 0xc6, 0x4f, 0xa1, 0xc2, 0x07, 0x2d, 0xee, 0x0b, 0x31, - 0x39, 0x8e, 0xe3, 0x38, 0x68, 0x2f, 0xa1, 0xbd, 0x5e, 0xea, 0xec, 0x25, - 0x26, 0x0c, 0x0e, 0x52, 0x26, 0xc4, 0x7d, 0x72, 0x4c, 0x78, 0xa5, 0x4f, - 0x18, 0x68, 0x90, 0x0c, 0x3f, 0x58, 0x96, 0x08, 0x4a, 0x92, 0x24, 0x09, - 0xb6, 0x6d, 0xdb, 0x76, 0x91, 0xcb, 0x47, 0x52, 0xb9, 0xc6, 0x5b, 0xa9, - 0x96, 0x3a, 0x57, 0xe3, 0x98, 0x3a, 0x5d, 0xbc, 0x56, 0x82, 0x0a, 0x99, - 0x96, 0x12, 0x3a, 0x5f, 0xcc, 0x3d, 0x8d, 0xb0, 0x45, 0x58, 0xee, 0x69, - 0xed, 0xad, 0xc0, 0x72, 0x14, 0x52, 0x23, 0x45, 0x28, 0x94, 0x35, 0x96, - 0x68, 0x21, 0x8e, 0x03, 0x81, 0x48, 0xa4, 0xc5, 0x3b, 0xeb, 0xee, 0x6b, - 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca, 0x6b, 0x28, 0xc9, 0x13, 0xbb, 0x86, - 0xa4, 0x14, 0xdc, 0x41, 0x99, 0xe7, 0x70, 0x67, 0x73, 0x38, 0x5f, 0x81, - 0x0e, 0xba, 0x87, 0xf1, 0xfd, 0xab, 0xd3, 0x6d, 0xcd, 0xcc, 0xcc, 0x0c, - 0x33, 0x33, 0x33, 0x73, 0x99, 0x5a, 0x99, 0xd9, 0x66, 0xa5, 0x8f, 0xcc, - 0x00, 0x7a, 0x0b, 0x9b, 0x67, 0xe0, 0x7b, 0xd4, 0xca, 0xd2, 0x0a, 0x13, - 0xe6, 0xa5, 0x63, 0x11, 0xb7, 0x6d, 0xdb, 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, - 0xc2, 0x08, 0x0c, 0xc3, 0x9e, 0x0f, 0x12, 0x8e, 0xc3, 0x20, 0x7d, 0x25, - 0x19, 0x76, 0x42, 0x1d, 0xd6, 0x85, 0x70, 0xa2, 0x75, 0x71, 0x0a, 0x0b, - 0x01, 0x00, 0x00, 0x80, 0xd0, 0x45, 0x17, 0xdd, 0x44, 0x29, 0xe7, 0x22, - 0x1a, 0x4b, 0x4c, 0x44, 0xbf, 0x7c, 0x1a, 0xac, 0x07, 0x94, 0x2b, 0x48, - 0x39, 0x83, 0xd0, 0x04, 0x5b, 0xab, 0xa8, 0x6e, 0xb3, 0x90, 0x85, 0x2c, - 0x58, 0xc8, 0x42, 0x16, 0xa6, 0x87, 0xa5, 0x37, 0xe1, 0xa4, 0x8e, 0x32, - 0x8a, 0x4c, 0x12, 0x99, 0xe5, 0x14, 0x75, 0x7a, 0xcf, 0x61, 0x03, 0xc0, - 0xc2, 0xa7, 0xce, 0x64, 0x01, 0x00, 0x00, 0x60, 0x54, 0x55, 0x55, 0xb5, - 0x29, 0x18, 0xa9, 0x8a, 0x2d, 0xbd, 0x95, 0xc5, 0xaf, 0x19, 0x3b, 0x09, - 0x5d, 0xc4, 0x6c, 0x86, 0xba, 0x42, 0x8c, 0xb2, 0xaf, 0x15, 0x19, 0x6f, - 0xd8, 0xa3, 0x70, 0x3d, 0x5b, 0x8f, 0xc2, 0xf5, 0x79, 0xf8, 0x12, 0xae, - 0x54, 0xd4, 0x3d, 0x80, 0x9e, 0x41, 0x24, 0xea, 0xf2, 0xf9, 0x2a, 0x06, - 0xdc, 0x0c, 0xed, 0x96, 0xfa, 0x70, 0xa7, 0x6a, 0x9e, 0xd8, 0x89, 0x1d, - 0x9d, 0xd8, 0x89, 0x1d, 0x9d, 0x3a, 0xc4, 0xce, 0x9e, 0x76, 0x81, 0xde, - 0xda, 0x3d, 0x13, 0x04, 0xdc, 0x3d, 0xe7, 0xc6, 0x4f, 0xa1, 0xc2, 0x07, - 0x2d, 0xee, 0x0b, 0x31, 0x39, 0x8e, 0xe3, 0x38, 0x68, 0x2f, 0xa1, 0xbd, - 0x5e, 0xea, 0xec, 0x25, 0x26, 0x0c, 0x0e, 0x52, 0x26, 0xc4, 0x7d, 0x72, - 0x4c, 0x78, 0xa5, 0x4f, 0x18, 0x68, 0x90, 0x0c, 0x3f, 0x58, 0x96, 0x08, - 0x4a, 0x92, 0x24, 0x09, 0xb6, 0x6d, 0xdb, 0x76, 0x91, 0xcb, 0x47, 0x52, - 0xb9, 0xc6, 0x5b, 0xa9, 0x96, 0x3a, 0x57, 0xe3, 0x98, 0x3a, 0x5d, 0xbc, - 0x56, 0x82, 0x0a, 0x99, 0x96, 0x12, 0x3a, 0x5f, 0xcc, 0x3d, 0x8d, 0xb0, - 0x45, 0x58, 0xee, 0x69, 0xed, 0xad, 0xc0, 0x72, 0x14, 0x52, 0x23, 0x45, - 0x28, 0x94, 0x35, 0x96, 0x68, 0x21, 0x8e, 0x03, 0x81, 0x48, 0xa4, 0xc5, - 0x3b, 0xeb, 0xee, 0x6b, 0x34, 0x33, 0x33, 0xb3, 0x76, 0x77, 0x77, 0xf7, - 0xba, 0x79, 0xba, 0x3b, 0xf1, 0x30, 0xde, 0x6a, 0x59, 0xe1, 0xc8, 0x6d, - 0x4a, 0xd0, 0x23, 0x05, 0x62, 0x35, 0x70, 0x28, 0x26, 0xde, 0xe0, 0x58, - 0xcd, 0xcc, 0xcc, 0x0c, 0x33, 0x33, 0x33, 0x73, 0x99, 0x5a, 0x99, 0xd9, - 0x66, 0xa5, 0x8f, 0xcc, 0x00, 0x7a, 0x0b, 0x9b, 0x67, 0xe0, 0x7b, 0xd4, - 0xca, 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, 0xb7, 0x6d, 0xdb, 0xb6, - 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, 0x08, 0x0c, 0xc3, 0x9e, 0x0f, 0x12, 0x8e, - 0xc3, 0x20, 0x7d, 0x25, 0x19, 0x76, 0x42, 0x1d, 0xd6, 0x85, 0x70, 0xa2, - 0x75, 0x71, 0x0a, 0x0b, 0x01, 0x00, 0x00, 0x80, 0xd0, 0x45, 0x17, 0xdd, - 0x44, 0x29, 0xe7, 0x22, 0x1a, 0x4b, 0x4c, 0x44, 0xbf, 0x7c, 0x1a, 0xac, - 0x07, 0x94, 0x2b, 0x48, 0x39, 0x83, 0xd0, 0x04, 0x5b, 0xab, 0xa8, 0x6e, - 0xb3, 0x90, 0x85, 0x2c, 0x58, 0xc8, 0x42, 0x16, 0xa6, 0x87, 0xa5, 0x37, - 0xe1, 0xa4, 0x8e, 0x32, 0x8a, 0x4c, 0x12, 0x99, 0xe5, 0x14, 0x75, 0x7a, - 0xcf, 0x61, 0x03, 0xc0, 0xc2, 0xa7, 0xce, 0x64, 0x01, 0x00, 0x00, 0x60, - 0x54, 0x55, 0x55, 0xb5, 0x29, 0x18, 0xa9, 0x8a, 0x2d, 0xbd, 0x95, 0xc5, - 0xaf, 0x19, 0x3b, 0x09, 0x5d, 0xc4, 0x6c, 0x86, 0xba, 0x42, 0x8c, 0xb2, - 0xaf, 0x15, 0x19, 0x6f, 0xd8, 0xa3, 0x70, 0x3d, 0x5b, 0x8f, 0xc2, 0xf5, - 0x79, 0xf8, 0x12, 0xae, 0x54, 0xd4, 0x3d, 0x80, 0x9e, 0x41, 0x24, 0xea, - 0xf2, 0xf9, 0x2a, 0x06, 0xdc, 0x0c, 0xed, 0x96, 0xfa, 0x70, 0xa7, 0x6a, - 0x9e, 0xd8, 0x89, 0x1d, 0x9d, 0xd8, 0x89, 0x1d, 0x9d, 0x3a, 0xc4, 0xce, - 0x9e, 0x76, 0x81, 0xde, 0xda, 0x3d, 0x13, 0x04, 0xdc, 0x3d, 0xe7, 0xc6, - 0x4f, 0xa1, 0xc2, 0x07, 0x2d, 0xee, 0x0b, 0x31, 0x39, 0x8e, 0xe3, 0x38, - 0x68, 0x2f, 0xa1, 0xbd, 0x5e, 0xea, 0xec, 0x25, 0x26, 0x0c, 0x0e, 0x52, - 0x26, 0xc4, 0x7d, 0x72, 0x4c, 0x78, 0xa5, 0x4f, 0x18, 0x68, 0x90, 0x0c, - 0x3f, 0x58, 0x96, 0x08, 0x4a, 0x92, 0x24, 0x09, 0xb6, 0x6d, 0xdb, 0x76, - 0x91, 0xcb, 0x47, 0x52, 0xb9, 0xc6, 0x5b, 0xa9, 0x96, 0x3a, 0x57, 0xe3, - 0x98, 0x3a, 0x5d, 0xbc, 0x56, 0x82, 0x0a, 0x99, 0x96, 0x12, 0x3a, 0x5f, - 0xcc, 0x3d, 0x8d, 0xb0, 0x45, 0x58, 0xee, 0x69, 0xed, 0xad, 0xc0, 0x72, - 0x14, 0x52, 0x23, 0x45, 0x28, 0x94, 0x35, 0x96, 0x68, 0x21, 0x8e, 0x03, - 0x81, 0x48, 0xa4, 0xc5, 0x3b, 0xeb, 0xee, 0x6b, 0x34, 0x33, 0x33, 0xb3, - 0x76, 0x77, 0x77, 0xf7, 0xba, 0x79, 0xba, 0x3b, 0xf1, 0x30, 0xde, 0x6a, - 0x59, 0xe1, 0xc8, 0x6d, 0x4a, 0xd0, 0x23, 0x05, 0x62, 0x35, 0x70, 0x28, - 0x26, 0xde, 0xe0, 0x58, 0xb6, 0xd6, 0x5a, 0x6b, 0xd6, 0x5a, 0x6b, 0xad, - 0xde, 0xbf, 0xe6, 0x9c, 0xf8, 0x9a, 0x68, 0x7b, 0xbf, 0x5f, 0xbb, 0xc0, - 0xaf, 0x1d, 0x5b, 0xfe, 0x35, 0x7f, 0x46, 0xd2, 0xcd, 0x17, 0xa8, 0x21, - 0xb7, 0x6d, 0xdb, 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, 0x08, 0x0c, 0xc3, - 0x9e, 0x0f, 0x12, 0x8e, 0xc3, 0x20, 0x7d, 0x25, 0x19, 0x76, 0x42, 0x1d, - 0xd6, 0x85, 0x70, 0xa2, 0x75, 0x71, 0x0a, 0x0b, 0x01, 0x00, 0x00, 0x80, - 0xd0, 0x45, 0x17, 0xdd, 0x44, 0x29, 0xe7, 0x22, 0x1a, 0x4b, 0x4c, 0x44, - 0xbf, 0x7c, 0x1a, 0xac, 0x07, 0x94, 0x2b, 0x48, 0x39, 0x83, 0xd0, 0x04, - 0x5b, 0xab, 0xa8, 0x6e, 0xb3, 0x90, 0x85, 0x2c, 0x58, 0xc8, 0x42, 0x16, - 0xa6, 0x87, 0xa5, 0x37, 0xe1, 0xa4, 0x8e, 0x32, 0x8a, 0x4c, 0x12, 0x99, - 0xe5, 0x14, 0x75, 0x7a, 0xcf, 0x61, 0x03, 0xc0, 0xc2, 0xa7, 0xce, 0x64, - 0x01, 0x00, 0x00, 0x60, 0x54, 0x55, 0x55, 0xb5, 0x29, 0x18, 0xa9, 0x8a, - 0x2d, 0xbd, 0x95, 0xc5, 0xaf, 0x19, 0x3b, 0x09, 0x5d, 0xc4, 0x6c, 0x86, - 0xba, 0x42, 0x8c, 0xb2, 0xaf, 0x15, 0x19, 0x6f, 0xd8, 0xa3, 0x70, 0x3d, - 0x5b, 0x8f, 0xc2, 0xf5, 0x79, 0xf8, 0x12, 0xae, 0x54, 0xd4, 0x3d, 0x80, - 0x9e, 0x41, 0x24, 0xea, 0xf2, 0xf9, 0x2a, 0x06, 0xdc, 0x0c, 0xed, 0x96, - 0xfa, 0x70, 0xa7, 0x6a, 0x9e, 0xd8, 0x89, 0x1d, 0x9d, 0xd8, 0x89, 0x1d, - 0x9d, 0x3a, 0xc4, 0xce, 0x9e, 0x76, 0x81, 0xde, 0xda, 0x3d, 0x13, 0x04, - 0xdc, 0x3d, 0xe7, 0xc6, 0x4f, 0xa1, 0xc2, 0x07, 0x2d, 0xee, 0x0b, 0x31, - 0x39, 0x8e, 0xe3, 0x38, 0x68, 0x2f, 0xa1, 0xbd, 0x5e, 0xea, 0xec, 0x25, - 0x26, 0x0c, 0x0e, 0x52, 0x26, 0xc4, 0x7d, 0x72, 0x4c, 0x78, 0xa5, 0x4f, - 0x18, 0x68, 0x90, 0x0c, 0x3f, 0x58, 0x96, 0x08, 0x4a, 0x92, 0x24, 0x09, - 0xb6, 0x6d, 0xdb, 0x76, 0x91, 0xcb, 0x47, 0x52, 0xb9, 0xc6, 0x5b, 0xa9, - 0x96, 0x3a, 0x57, 0xe3, 0x98, 0x3a, 0x5d, 0xbc, 0x56, 0x82, 0x0a, 0x99, - 0x96, 0x12, 0x3a, 0x5f, 0xcc, 0x3d, 0x8d, 0xb0, 0x45, 0x58, 0xee, 0x69, - 0xed, 0xad, 0xc0, 0x72, 0x14, 0x52, 0x23, 0x45, 0x28, 0x94, 0x35, 0x96, - 0x68, 0x21, 0x8e, 0x03, 0x81, 0x48, 0xa4, 0xc5, 0x3b, 0xeb, 0xee, 0x6b, - 0x34, 0x33, 0x33, 0xb3, 0x76, 0x77, 0x77, 0xf7, 0xba, 0x79, 0xba, 0x3b, - 0xf1, 0x30, 0xde, 0x6a, 0x59, 0xe1, 0xc8, 0x6d, 0x4a, 0xd0, 0x23, 0x05, - 0x62, 0x35, 0x70, 0x28, 0x26, 0xde, 0xe0, 0x58, 0xb6, 0xd6, 0x5a, 0x6b, - 0xd6, 0x5a, 0x6b, 0xad, 0xde, 0xbf, 0xe6, 0x9c, 0xf8, 0x9a, 0x68, 0x7b, - 0xbf, 0x5f, 0xbb, 0xc0, 0xaf, 0x1d, 0x5b, 0xfe, 0x35, 0x7f, 0x46, 0xd2, - 0xcd, 0x17, 0xa8, 0x21, 0x01, 0x00, 0x00, 0x08, 0xff, 0xff, 0xff, 0x07, - 0x1f, 0x69, 0xfe, 0xe7, 0xe2, 0xb6, 0x1f, 0x29, 0x45, 0xc9, 0x54, 0xc9, - 0x47, 0x09, 0xa0, 0xf1, 0x5d, 0x91, 0x50, 0x90, 0x18, 0x3a, 0x4e, 0x70, - 0x01, 0x00, 0x00, 0x80, 0xd0, 0x45, 0x17, 0xdd, 0x44, 0x29, 0xe7, 0x22, - 0x1a, 0x4b, 0x4c, 0x44, 0xbf, 0x7c, 0x1a, 0xac, 0x07, 0x94, 0x2b, 0x48, - 0x39, 0x83, 0xd0, 0x04, 0x5b, 0xab, 0xa8, 0x6e, 0xb3, 0x90, 0x85, 0x2c, - 0x58, 0xc8, 0x42, 0x16, 0xa6, 0x87, 0xa5, 0x37, 0xe1, 0xa4, 0x8e, 0x32, - 0x8a, 0x4c, 0x12, 0x99, 0xe5, 0x14, 0x75, 0x7a, 0xcf, 0x61, 0x03, 0xc0, - 0xc2, 0xa7, 0xce, 0x64, 0x01, 0x00, 0x00, 0x60, 0x54, 0x55, 0x55, 0xb5, - 0x29, 0x18, 0xa9, 0x8a, 0x2d, 0xbd, 0x95, 0xc5, 0xaf, 0x19, 0x3b, 0x09, - 0x5d, 0xc4, 0x6c, 0x86, 0xba, 0x42, 0x8c, 0xb2, 0xaf, 0x15, 0x19, 0x6f, - 0xd8, 0xa3, 0x70, 0x3d, 0x5b, 0x8f, 0xc2, 0xf5, 0x79, 0xf8, 0x12, 0xae, - 0x54, 0xd4, 0x3d, 0x80, 0x9e, 0x41, 0x24, 0xea, 0xf2, 0xf9, 0x2a, 0x06, - 0xdc, 0x0c, 0xed, 0x96, 0xfa, 0x70, 0xa7, 0x6a, 0x9e, 0xd8, 0x89, 0x1d, - 0x9d, 0xd8, 0x89, 0x1d, 0x9d, 0x3a, 0xc4, 0xce, 0x9e, 0x76, 0x81, 0xde, - 0xda, 0x3d, 0x13, 0x04, 0xdc, 0x3d, 0xe7, 0xc6, 0x4f, 0xa1, 0xc2, 0x07, - 0x2d, 0xee, 0x0b, 0x31, 0x39, 0x8e, 0xe3, 0x38, 0x68, 0x2f, 0xa1, 0xbd, - 0x5e, 0xea, 0xec, 0x25, 0x26, 0x0c, 0x0e, 0x52, 0x26, 0xc4, 0x7d, 0x72, - 0x4c, 0x78, 0xa5, 0x4f, 0x18, 0x68, 0x90, 0x0c, 0x3f, 0x58, 0x96, 0x08, - 0x4a, 0x92, 0x24, 0x09, 0xb6, 0x6d, 0xdb, 0x76, 0x91, 0xcb, 0x47, 0x52, - 0xb9, 0xc6, 0x5b, 0xa9, 0x96, 0x3a, 0x57, 0xe3, 0x98, 0x3a, 0x5d, 0xbc, - 0x56, 0x82, 0x0a, 0x99, 0x96, 0x12, 0x3a, 0x5f, 0xcc, 0x3d, 0x8d, 0xb0, - 0x45, 0x58, 0xee, 0x69, 0xed, 0xad, 0xc0, 0x72, 0x14, 0x52, 0x23, 0x45, - 0x28, 0x94, 0x35, 0x96, 0x68, 0x21, 0x8e, 0x03, 0x81, 0x48, 0xa4, 0xc5, - 0x3b, 0xeb, 0xee, 0x6b, 0x34, 0x33, 0x33, 0xb3, 0x76, 0x77, 0x77, 0xf7, - 0xba, 0x79, 0xba, 0x3b, 0xf1, 0x30, 0xde, 0x6a, 0x59, 0xe1, 0xc8, 0x6d, - 0x4a, 0xd0, 0x23, 0x05, 0x62, 0x35, 0x70, 0x28, 0x26, 0xde, 0xe0, 0x58, - 0xb6, 0xd6, 0x5a, 0x6b, 0xd6, 0x5a, 0x6b, 0xad, 0xde, 0xbf, 0xe6, 0x9c, - 0xf8, 0x9a, 0x68, 0x7b, 0xbf, 0x5f, 0xbb, 0xc0, 0xaf, 0x1d, 0x5b, 0xfe, - 0x35, 0x7f, 0x46, 0xd2, 0xcd, 0x17, 0xa8, 0x21, 0x01, 0x00, 0x00, 0x08, - 0xff, 0xff, 0xff, 0x07, 0x1f, 0x69, 0xfe, 0xe7, 0xe2, 0xb6, 0x1f, 0x29, - 0x45, 0xc9, 0x54, 0xc9, 0x47, 0x09, 0xa0, 0xf1, 0x5d, 0x91, 0x50, 0x90, - 0x18, 0x3a, 0x4e, 0x70, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x83, 0x0f, 0x3e, - 0xd8, 0xe4, 0xee, 0xc1, 0x67, 0x13, 0x72, 0x49, 0x81, 0xf0, 0x9c, 0x20, - 0x5d, 0x55, 0x30, 0x41, 0x3e, 0x81, 0xbf, 0xbb, 0xad, 0x54, 0x6a, 0x70, - 0xb3, 0x90, 0x85, 0x2c, 0x58, 0xc8, 0x42, 0x16, 0xa6, 0x87, 0xa5, 0x37, - 0xe1, 0xa4, 0x8e, 0x32, 0x8a, 0x4c, 0x12, 0x99, 0xe5, 0x14, 0x75, 0x7a, - 0xcf, 0x61, 0x03, 0xc0, 0xc2, 0xa7, 0xce, 0x64, 0x01, 0x00, 0x00, 0x60, - 0x54, 0x55, 0x55, 0xb5, 0x29, 0x18, 0xa9, 0x8a, 0x2d, 0xbd, 0x95, 0xc5, - 0xaf, 0x19, 0x3b, 0x09, 0x5d, 0xc4, 0x6c, 0x86, 0xba, 0x42, 0x8c, 0xb2, - 0xaf, 0x15, 0x19, 0x6f, 0xd8, 0xa3, 0x70, 0x3d, 0x5b, 0x8f, 0xc2, 0xf5, - 0x79, 0xf8, 0x12, 0xae, 0x54, 0xd4, 0x3d, 0x80, 0x9e, 0x41, 0x24, 0xea, - 0xf2, 0xf9, 0x2a, 0x06, 0xdc, 0x0c, 0xed, 0x96, 0xfa, 0x70, 0xa7, 0x6a, - 0x9e, 0xd8, 0x89, 0x1d, 0x9d, 0xd8, 0x89, 0x1d, 0x9d, 0x3a, 0xc4, 0xce, - 0x9e, 0x76, 0x81, 0xde, 0xda, 0x3d, 0x13, 0x04, 0xdc, 0x3d, 0xe7, 0xc6, - 0x4f, 0xa1, 0xc2, 0x07, 0x2d, 0xee, 0x0b, 0x31, 0x39, 0x8e, 0xe3, 0x38, - 0x68, 0x2f, 0xa1, 0xbd, 0x5e, 0xea, 0xec, 0x25, 0x26, 0x0c, 0x0e, 0x52, - 0x26, 0xc4, 0x7d, 0x72, 0x4c, 0x78, 0xa5, 0x4f, 0x18, 0x68, 0x90, 0x0c, - 0x3f, 0x58, 0x96, 0x08, 0x4a, 0x92, 0x24, 0x09, 0xb6, 0x6d, 0xdb, 0x76, - 0x91, 0xcb, 0x47, 0x52, 0xb9, 0xc6, 0x5b, 0xa9, 0x96, 0x3a, 0x57, 0xe3, - 0x98, 0x3a, 0x5d, 0xbc, 0x56, 0x82, 0x0a, 0x99, 0x96, 0x12, 0x3a, 0x5f, - 0xcc, 0x3d, 0x8d, 0xb0, 0x45, 0x58, 0xee, 0x69, 0xed, 0xad, 0xc0, 0x72, - 0x14, 0x52, 0x23, 0x45, 0x28, 0x94, 0x35, 0x96, 0x68, 0x21, 0x8e, 0x03, - 0x81, 0x48, 0xa4, 0xc5, 0x3b, 0xeb, 0xee, 0x6b, 0x34, 0x33, 0x33, 0xb3, - 0x76, 0x77, 0x77, 0xf7, 0xba, 0x79, 0xba, 0x3b, 0xf1, 0x30, 0xde, 0x6a, - 0x59, 0xe1, 0xc8, 0x6d, 0x4a, 0xd0, 0x23, 0x05, 0x62, 0x35, 0x70, 0x28, - 0x26, 0xde, 0xe0, 0x58, 0xb6, 0xd6, 0x5a, 0x6b, 0xd6, 0x5a, 0x6b, 0xad, - 0xde, 0xbf, 0xe6, 0x9c, 0xf8, 0x9a, 0x68, 0x7b, 0xbf, 0x5f, 0xbb, 0xc0, - 0xaf, 0x1d, 0x5b, 0xfe, 0x35, 0x7f, 0x46, 0xd2, 0xcd, 0x17, 0xa8, 0x21, - 0x01, 0x00, 0x00, 0x08, 0xff, 0xff, 0xff, 0x07, 0x1f, 0x69, 0xfe, 0xe7, - 0xe2, 0xb6, 0x1f, 0x29, 0x45, 0xc9, 0x54, 0xc9, 0x47, 0x09, 0xa0, 0xf1, - 0x5d, 0x91, 0x50, 0x90, 0x18, 0x3a, 0x4e, 0x70, 0x01, 0x00, 0x00, 0x00, - 0xe0, 0x83, 0x0f, 0x3e, 0xd8, 0xe4, 0xee, 0xc1, 0x67, 0x13, 0x72, 0x49, - 0x81, 0xf0, 0x9c, 0x20, 0x5d, 0x55, 0x30, 0x41, 0x3e, 0x81, 0xbf, 0xbb, - 0xad, 0x54, 0x6a, 0x70, 0x5b, 0x5a, 0x5a, 0xda, 0x77, 0x78, 0x78, 0xf8, - 0x95, 0xfc, 0xfe, 0x7f, 0xa7, 0x3f, 0x13, 0x0e, 0xc7, 0x5f, 0x4d, 0x60, - 0x6e, 0x05, 0xef, 0x6a, 0x7f, 0xeb, 0x86, 0x6c, 0xc2, 0x50, 0x9a, 0x47, - 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, - 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, - 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xa7, 0x02, 0x57, 0xea, - 0xf3, 0x97, 0xe0, 0x48, 0x84, 0x3e, 0xfe, 0xf0, 0x68, 0x1d, 0x79, 0x42, - 0xe0, 0xf3, 0x1c, 0x92, 0xf6, 0xf3, 0x44, 0xde, 0x6c, 0xc3, 0xe6, 0x8c, - 0x74, 0xa7, 0xa7, 0x26, 0xf1, 0x87, 0xc3, 0x69, 0xde, 0x94, 0xaa, 0x44, - 0xc3, 0x5b, 0xae, 0xf5, 0x4b, 0x46, 0xe3, 0x8a, 0x66, 0x5e, 0x62, 0x88, - 0xb2, 0x1b, 0xd8, 0x0e, 0x1c, 0xe6, 0xb7, 0x06, 0x1a, 0x5b, 0x39, 0x24, - 0xcc, 0xa7, 0xc6, 0x79, 0xcb, 0x1f, 0x10, 0xb1, 0x56, 0x63, 0x8a, 0xac, - 0xe0, 0xe2, 0xb0, 0x6a, 0xa1, 0xcd, 0x0d, 0x74, 0x22, 0x3d, 0x1f, 0x28, - 0xe3, 0x98, 0xc5, 0x00, 0xbc, 0xdf, 0xf3, 0x70, 0x25, 0xc1, 0x87, 0x98, - 0xd6, 0x95, 0x3c, 0xbe, 0xec, 0x6d, 0x3b, 0x71, 0x17, 0x8b, 0xb7, 0x58, - 0xac, 0x4c, 0x71, 0x69, 0x8e, 0x4d, 0x81, 0xfd, 0x62, 0xe5, 0xaa, 0x38, - 0xea, 0x7b, 0xcc, 0x25, 0x5f, 0x09, 0x88, 0xa0, 0x8b, 0x48, 0x48, 0xdc, - 0x3d, 0xe9, 0x06, 0x42, 0xb4, 0xcb, 0xe4, 0x2c, 0xf1, 0x8d, 0x46, 0x24, - 0xb0, 0x20, 0xa5, 0x21, 0xc9, 0x84, 0x9d, 0x70, 0x9f, 0xc9, 0x18, 0x59, - 0x30, 0x70, 0x83, 0x73, 0x92, 0x9a, 0xcf, 0xd8, 0x59, 0xe7, 0xd5, 0x85, - 0x0b, 0x10, 0xc9, 0xfa, 0x07, 0x4d, 0x4f, 0x01, 0xdb, 0x8c, 0xff, 0x29, - 0x00, 0x51, 0xb1, 0xab, 0x09, 0x80, 0x99, 0x4f, 0x2c, 0x56, 0xe2, 0xf3, - 0x03, 0x76, 0x42, 0x66, 0x9f, 0x20, 0xd3, 0xed, 0x95, 0xc9, 0xde, 0xf6, - 0xd0, 0x1d, 0xb7, 0x9b, 0xe7, 0x64, 0x59, 0x03, 0xdc, 0x84, 0xab, 0x21, - 0x75, 0x2f, 0x44, 0x57, 0x63, 0xbe, 0xd2, 0xe3, 0x06, 0xe8, 0x87, 0x78, - 0x35, 0x61, 0x04, 0x0b, 0x1f, 0xca, 0x33, 0xc7, 0xf4, 0x04, 0x59, 0x81, - 0x86, 0x44, 0x03, 0x8e, 0xf6, 0xe6, 0x99, 0x3d, 0xbe, 0x31, 0xfa, 0x57, - 0x5d, 0x16, 0xc8, 0x3d, 0x23, 0x89, 0xaf, 0x3b, 0xcd, 0xd9, 0x24, 0x50, - 0xf5, 0xbb, 0x7c, 0x27, 0x4d, 0xea, 0xd5, 0x19, 0xf3, 0x55, 0xc0, 0x5d, - 0x1c, 0x0a, 0x90, 0x4b, 0xe2, 0x04, 0xaa, 0x35, 0x33, 0x0e, 0xbc, 0x5c, - 0x62, 0x0a, 0x26, 0x24, 0x8c, 0x80, 0x09, 0xb5, 0xf7, 0xec, 0xf0, 0xd3, - 0xed, 0xe3, 0x81, 0x5c, 0x9c, 0x07, 0xc0, 0x11, 0x14, 0x10, 0xa4, 0x98, - 0xcb, 0x13, 0xe3, 0x21, 0xf0, 0x5e, 0x5c, 0xa3, 0xcf, 0xc2, 0xdd, 0x26, - 0x3b, 0x04, 0xd1, 0xe9, 0xa7, 0x4d, 0x39, 0x43, 0xbe, 0x39, 0x57, 0xe4, - 0x32, 0x7c, 0x26, 0xdf, 0x48, 0x68, 0x55, 0x57, 0x01, 0x93, 0x0b, 0x53, - 0x3c, 0xb1, 0x13, 0x3b, 0x3a, 0xb1, 0x13, 0x3b, 0x3a, 0x75, 0x88, 0x9d, - 0x3d, 0xed, 0x02, 0xbd, 0xb5, 0x7b, 0x26, 0x08, 0xb8, 0x7b, 0xce, 0x8d, - 0x9f, 0x42, 0x85, 0x0f, 0x5a, 0xdc, 0x17, 0x62, 0x29, 0x47, 0x19, 0x36, - 0x19, 0xe9, 0x12, 0x33, 0x6b, 0xbc, 0x4c, 0xeb, 0x6f, 0x18, 0x02, 0x54, - 0x1b, 0x1c, 0x24, 0x54, 0x13, 0xd6, 0x60, 0xf4, 0xeb, 0x2a, 0x71, 0xa1, - 0x9a, 0x83, 0xea, 0x6e, 0x9d, 0xfc, 0x65, 0x63, 0x3a, 0x1e, 0x81, 0x5a, - 0xbe, 0xba, 0xd1, 0xe2, 0x9d, 0x52, 0xee, 0x61, 0x9c, 0xfa, 0xfd, 0xc8, - 0xd4, 0x18, 0x8a, 0x1f, 0x5f, 0x46, 0x3e, 0xfa, 0x5b, 0x13, 0xd3, 0x6d, - 0xe4, 0x07, 0x95, 0x19, 0xa4, 0xc3, 0x6b, 0x13, 0x36, 0x8f, 0x4d, 0xae, - 0xb1, 0x73, 0xb7, 0xf6, 0x50, 0x10, 0x27, 0xc0, 0x6a, 0x20, 0xff, 0xae, - 0xdb, 0x5a, 0x75, 0x56, 0x26, 0xe1, 0xaf, 0x51, 0xb9, 0x9b, 0xa3, 0xf5, - 0x5c, 0x3e, 0x7a, 0x2e, 0xe1, 0x3c, 0xc3, 0x20, 0x5e, 0x8e, 0xd2, 0x95, - 0xe5, 0xe5, 0xc4, 0x60, 0x31, 0x85, 0xbe, 0xb7, 0x9d, 0xc6, 0x04, 0x4b, - 0x4f, 0xc0, 0xdf, 0x6f, 0xaf, 0x5a, 0x2e, 0x85, 0x9b, 0x93, 0xd2, 0x30, - 0x48, 0x22, 0x00, 0x1a, 0x1a, 0xe2, 0xa3, 0x3f, 0xa1, 0xa2, 0x30, 0x3c, - 0x64, 0x25, 0x68, 0x2e, 0x61, 0x5d, 0x1c, 0x9e, 0xc1, 0xac, 0xb6, 0x71, - 0x37, 0xbd, 0xa9, 0xe9, 0xa5, 0x78, 0xb5, 0x04, 0x1f, 0xd5, 0x06, 0x01, - 0x86, 0x91, 0x78, 0x54, 0x07, 0xce, 0x9c, 0x4d, 0xfd, 0x53, 0x3f, 0x8f, - 0xaf, 0x03, 0x55, 0xa8, 0xd2, 0x53, 0x02, 0x44, 0xf2, 0x3b, 0x51, 0x13, - 0x52, 0x0d, 0x7d, 0xbf, 0xf8, 0x8d, 0x1c, 0xa8, 0x1f, 0x8f, 0x28, 0xe8, - 0xa2, 0x66, 0x26, 0x40, 0x3b, 0xf6, 0x2f, 0x0a, 0xa3, 0xc6, 0x72, 0xa5, - 0xeb, 0x4d, 0x9b, 0x44, 0xf1, 0x98, 0x00, 0xbe, 0x97, 0x3c, 0xd3, 0x7a, - 0x3c, 0x9b, 0x15, 0x33, 0x6d, 0xf0, 0x49, 0x3d, 0x89, 0x98, 0xd7, 0x3a, - 0x65, 0x11, 0xe8, 0xf1, 0x77, 0x77, 0xb6, 0x81, 0xfe, 0x08, 0x7b, 0x48, - 0x94, 0x1c, 0x12, 0xbf, 0x42, 0x5e, 0xe4, 0x27, 0xdb, 0x3c, 0xe1, 0xf5, - 0xaf, 0x46, 0x1e, 0x9d, 0x8e, 0x12, 0x00, 0x76, 0x04, 0xe9, 0x91, 0xc2, - 0x87, 0xb3, 0xa0, 0x48, 0xdd, 0xc0, 0x7d, 0x56, 0x2b, 0x36, 0x7d, 0x46, - 0xa8, 0xb6, 0x31, 0xdd, 0xca, 0xd5, 0x7f, 0x35, 0x97, 0x0e, 0x0c, 0x19, - 0xd8, 0xba, 0xd1, 0xa0, 0x43, 0xcc, 0x56, 0x7a, 0xba, 0x61, 0x29, 0x9d, - 0x30, 0xa7, 0xc5, 0x70, 0xbe, 0x27, 0xc2, 0xdb, 0x5f, 0x39, 0xca, 0x66, - 0xdd, 0xff, 0x94, 0x6a, 0x77, 0x98, 0xb8, 0x36, 0x31, 0x8a, 0x9a, 0x1c, - 0x61, 0x2a, 0xf0, 0xdf, 0xe3, 0x2c, 0x9e, 0x76, 0x2b, 0x9a, 0x99, 0x3d, - 0x93, 0x24, 0x49, 0x12, 0x6d, 0xdb, 0xb6, 0xed, 0x23, 0x3b, 0x91, 0xa4, - 0x6f, 0xe9, 0xf9, 0xfe, 0x27, 0x9d, 0x0c, 0xbd, 0x29, 0x9d, 0x80, 0x45, - 0x65, 0x87, 0x77, 0x08, 0xda, 0x7d, 0x86, 0x4a, 0x9d, 0xfc, 0x65, 0x63, - 0x3a, 0x1e, 0x81, 0x5a, 0xbe, 0xba, 0xd1, 0xe2, 0x9d, 0x52, 0xee, 0x61, - 0x9c, 0xfa, 0xfd, 0xc8, 0xd4, 0x18, 0x8a, 0x1f, 0x5f, 0x46, 0x3e, 0xfa, - 0x5b, 0x13, 0xd3, 0x6d, 0xa5, 0x50, 0x08, 0xc5, 0x88, 0xb7, 0xc9, 0xbe, - 0x08, 0xfb, 0x07, 0xe2, 0x7e, 0x09, 0x95, 0xc0, 0xeb, 0x82, 0xb3, 0xb1, - 0x1d, 0xed, 0xde, 0x69, 0xcd, 0xc3, 0xdb, 0x92, 0xec, 0x36, 0xd7, 0x6e, - 0x83, 0x16, 0x51, 0xe3, 0x15, 0xd2, 0xde, 0x19, 0x6e, 0xe9, 0x22, 0x57, - 0x39, 0xeb, 0xba, 0x2a, 0x3f, 0x10, 0x6e, 0x3a, 0xea, 0x92, 0x30, 0x33, - 0xbb, 0xaa, 0xa1, 0x2c, 0x10, 0xd8, 0x5e, 0x32, 0xcd, 0x4d, 0xec, 0x47, - 0x86, 0x8b, 0xac, 0x80, 0xf1, 0x86, 0x30, 0xb5, 0x1c, 0x1e, 0xd1, 0x0d, - 0x5e, 0x1a, 0x9b, 0x94, 0x83, 0xeb, 0x99, 0x79, 0x3b, 0xff, 0x48, 0xe6, - 0xf3, 0xc5, 0x83, 0x1c, 0x91, 0x72, 0xd6, 0xbd, 0x83, 0x0a, 0xc7, 0x59, - 0x99, 0x81, 0x85, 0x31, 0x72, 0xdc, 0xf5, 0x75, 0xa7, 0x5e, 0x1e, 0x5d, - 0xb1, 0x05, 0x57, 0xb2, 0x99, 0xcf, 0x8c, 0x77, 0x57, 0x84, 0x6c, 0x67, - 0x27, 0x24, 0xa7, 0x7a, 0x91, 0xf3, 0x5e, 0xf8, 0x75, 0xce, 0x78, 0x4b, - 0x1c, 0x1b, 0x8e, 0x6c, 0x73, 0x4c, 0xcf, 0x2e, 0x13, 0x6e, 0x0e, 0x77, - 0x13, 0x81, 0x1c, 0xfe, 0x57, 0xda, 0xc9, 0x69, 0xcb, 0xb2, 0xf2, 0xad, - 0x8d, 0xa8, 0x1d, 0x48, 0xc7, 0x88, 0x9d, 0x56, 0xe5, 0xae, 0x9c, 0xdc, - 0x1e, 0x7c, 0xb2, 0x17, 0x19, 0x5f, 0xba, 0x46, 0x22, 0x82, 0x56, 0xd7, - 0xcb, 0x3b, 0x9a, 0x10, 0x4d, 0xc3, 0x78, 0x93, 0x81, 0x4b, 0x73, 0xdd, - 0x82, 0x22, 0x1a, 0xd4, 0x95, 0x93, 0x05, 0xea, 0x6b, 0xe5, 0xbb, 0x33, - 0x38, 0xca, 0x7c, 0xfc, 0xc0, 0x9b, 0x0a, 0xb3, 0xf0, 0x23, 0x06, 0x19, - 0x95, 0x78, 0x00, 0xf1, 0xf6, 0x6a, 0xd7, 0xcd, 0xf5, 0x0a, 0xcb, 0x24, - 0x7e, 0xa5, 0x47, 0xa6, 0xea, 0x8f, 0x03, 0x39, 0xd1, 0x17, 0x1b, 0x29, - 0x6d, 0xcb, 0x08, 0x22, 0x69, 0x78, 0x31, 0x5f, 0xa2, 0xd7, 0xd3, 0x94, - 0x26, 0xc8, 0x0f, 0x99, 0x83, 0x6b, 0x49, 0x1c, 0x18, 0x63, 0x67, 0xcc, - 0x80, 0x7a, 0xca, 0x48, 0xf5, 0xfc, 0x59, 0xb1, 0x72, 0x2d, 0x12, 0x26, - 0x16, 0x46, 0x20, 0x29, 0x3d, 0x61, 0xea, 0xed, 0xb3, 0x79, 0x8b, 0x06, - 0xf3, 0x14, 0x49, 0x86, 0x7b, 0xc6, 0x8a, 0x9a, 0x88, 0x80, 0x87, 0x71, - 0x06, 0x4b, 0x9b, 0x20, 0x73, 0xd0, 0x71, 0x68, 0x18, 0x4b, 0x12, 0x17, - 0x67, 0x66, 0x66, 0x66, 0xee, 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, - 0xdf, 0xbd, 0xfe, 0x81, 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, 0x0d, 0xd7, - 0x7b, 0xed, 0x42, 0x27, 0xf9, 0x14, 0xd4, 0x3d, 0xe4, 0x07, 0x95, 0x19, - 0xa4, 0xc3, 0x6b, 0x13, 0x36, 0x8f, 0x4d, 0xae, 0xb1, 0x73, 0xb7, 0xf6, - 0x50, 0x10, 0x27, 0xc0, 0x6a, 0x20, 0xff, 0xae, 0xdb, 0x5a, 0x75, 0x56, - 0x26, 0xe1, 0xaf, 0x51, 0x83, 0x16, 0x51, 0xe3, 0x15, 0xd2, 0xde, 0x19, - 0x6e, 0xe9, 0x22, 0x57, 0x39, 0xeb, 0xba, 0x2a, 0x3f, 0x10, 0x6e, 0x3a, - 0xea, 0x92, 0x30, 0x33, 0xbb, 0xaa, 0xa1, 0x2c, 0x10, 0xd8, 0x5e, 0x32, - 0xf4, 0x01, 0xc8, 0xa6, 0xc1, 0x07, 0x0e, 0x59, 0x0d, 0xb6, 0x13, 0x8e, - 0xcf, 0x4d, 0x85, 0x62, 0x46, 0x20, 0x79, 0x1d, 0xc0, 0x07, 0x31, 0x39, - 0x06, 0xe1, 0x74, 0x5e, 0x30, 0x91, 0x69, 0x53, 0x4a, 0x05, 0x25, 0x81, - 0x10, 0xa4, 0x3d, 0x28, 0xcd, 0x7c, 0xce, 0x36, 0x24, 0xda, 0xc1, 0x82, - 0xc1, 0xc7, 0x29, 0x3e, 0x87, 0xb0, 0x4a, 0xe5, 0x17, 0x42, 0xa0, 0x1f, - 0xc5, 0xf9, 0xab, 0x3e, 0xb9, 0xd2, 0x6a, 0x3f, 0x86, 0xfd, 0x23, 0xba, - 0x12, 0x5e, 0x77, 0xce, 0x42, 0xa2, 0xe8, 0xe4, 0xc2, 0x75, 0x7c, 0xc9, - 0xc6, 0x2e, 0x23, 0x5b, 0xad, 0x3f, 0x16, 0xd2, 0x70, 0x94, 0x3f, 0x5f, - 0x96, 0x21, 0x59, 0x38, 0xb6, 0xf8, 0xd5, 0x4a, 0x65, 0x48, 0x8c, 0x49, - 0x7b, 0x7b, 0xcd, 0x9f, 0xc8, 0xc1, 0x7b, 0x2a, 0xf6, 0x8e, 0x1c, 0xf2, - 0x32, 0xf0, 0x28, 0xb4, 0x54, 0x0c, 0xd0, 0x66, 0xb2, 0x35, 0xe4, 0x7e, - 0x80, 0x54, 0x29, 0x87, 0x4f, 0x47, 0x8d, 0x3e, 0x38, 0x71, 0x33, 0xaf, - 0x5a, 0x45, 0xf9, 0x5a, 0x59, 0x5a, 0xcd, 0x5d, 0xff, 0x03, 0xaf, 0x6a, - 0x45, 0x74, 0x21, 0x73, 0xa6, 0xf8, 0xb8, 0xee, 0xad, 0x04, 0x93, 0x10, - 0x66, 0x2b, 0x7c, 0x76, 0xa3, 0x81, 0xa9, 0x3a, 0x55, 0xef, 0x95, 0x8a, - 0xc1, 0x23, 0xed, 0xd1, 0xc4, 0x8b, 0x3a, 0xd5, 0x72, 0xc0, 0xfc, 0x0c, - 0xba, 0xc1, 0xf8, 0x2d, 0x36, 0x70, 0xd2, 0x0c, 0x41, 0x3e, 0xa5, 0xb7, - 0xec, 0x12, 0xa4, 0x44, 0x8a, 0x6f, 0x5c, 0x6f, 0xc1, 0xe3, 0xdf, 0x4e, - 0x6d, 0x04, 0x03, 0x1c, 0xf6, 0xcb, 0x19, 0x5a, 0x70, 0xba, 0x9b, 0x5c, - 0xb2, 0x24, 0xe0, 0x10, 0x47, 0x78, 0x12, 0xb6, 0x3a, 0x50, 0x95, 0xe6, - 0xbb, 0x74, 0x04, 0x31, 0x24, 0xd2, 0xc2, 0x27, 0x6c, 0x1a, 0x71, 0xae, - 0xb7, 0x91, 0x8e, 0x28, 0x9b, 0x0b, 0xdb, 0xe9, 0x13, 0xe6, 0x33, 0x64, - 0x82, 0x8b, 0xd1, 0xa5, 0x2a, 0x05, 0x65, 0xf1, 0xc3, 0x4e, 0xd9, 0xbc, - 0x94, 0x90, 0x1d, 0x8b, 0xea, 0xfc, 0x50, 0x02, 0xc8, 0xd9, 0xce, 0x4e, - 0x01, 0x00, 0x00, 0x10, 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, 0xcf, - 0xc2, 0xc9, 0x81, 0xfe, 0x84, 0xba, 0x07, 0x89, 0x87, 0x3a, 0x06, 0xb0, - 0x73, 0xa5, 0x03, 0xf7, 0xdd, 0xcc, 0xae, 0x6c, 0xb9, 0x9b, 0xa3, 0xf5, - 0x5c, 0x3e, 0x7a, 0x2e, 0xe1, 0x3c, 0xc3, 0x20, 0x5e, 0x8e, 0xd2, 0x95, - 0xe5, 0xe5, 0xc4, 0x60, 0x31, 0x85, 0xbe, 0xb7, 0x9d, 0xc6, 0x04, 0x4b, - 0x4f, 0xc0, 0xdf, 0x6f, 0xcd, 0x4d, 0xec, 0x47, 0x86, 0x8b, 0xac, 0x80, - 0xf1, 0x86, 0x30, 0xb5, 0x1c, 0x1e, 0xd1, 0x0d, 0x5e, 0x1a, 0x9b, 0x94, - 0x83, 0xeb, 0x99, 0x79, 0x3b, 0xff, 0x48, 0xe6, 0xf3, 0xc5, 0x83, 0x1c, - 0x4a, 0x05, 0x25, 0x81, 0x10, 0xa4, 0x3d, 0x28, 0xcd, 0x7c, 0xce, 0x36, - 0x24, 0xda, 0xc1, 0x82, 0xc1, 0xc7, 0x29, 0x3e, 0x87, 0xb0, 0x4a, 0xe5, - 0x17, 0x42, 0xa0, 0x1f, 0xc5, 0xf9, 0xab, 0x3e, 0x0e, 0x3a, 0xa2, 0x22, - 0x90, 0x87, 0x82, 0x82, 0x2f, 0xa4, 0x17, 0x59, 0x1e, 0x54, 0xb4, 0xe9, - 0xe8, 0x07, 0x1e, 0x8b, 0xe2, 0x84, 0xb3, 0x71, 0xed, 0x74, 0xc6, 0x1c, - 0x9e, 0x68, 0xf8, 0x58, 0x30, 0x15, 0x84, 0x35, 0x67, 0x88, 0xb9, 0x2a, - 0xdd, 0xca, 0xfb, 0x4d, 0xe1, 0x8e, 0x18, 0x22, 0x2a, 0xe7, 0xa5, 0x61, - 0x7d, 0xed, 0x9d, 0xdc, 0xb2, 0xab, 0x0b, 0x38, 0x51, 0x74, 0x71, 0x69, - 0x61, 0x8e, 0x59, 0x15, 0x2a, 0x81, 0xd1, 0x35, 0xe0, 0x1c, 0x6c, 0x16, - 0x7a, 0x49, 0x1c, 0x52, 0x68, 0xe6, 0x2e, 0x6b, 0x21, 0xa6, 0xc1, 0xa5, - 0xac, 0x52, 0xed, 0xf2, 0x26, 0xd2, 0x34, 0x67, 0x97, 0x59, 0xd0, 0xd0, - 0x19, 0xe6, 0x98, 0x15, 0x75, 0x5b, 0xd9, 0x4f, 0x01, 0xfd, 0x0c, 0xad, - 0xf2, 0xe8, 0x6a, 0x91, 0x09, 0x05, 0xa8, 0x26, 0xcf, 0xc3, 0x92, 0xac, - 0x2e, 0x3f, 0x8e, 0x12, 0x4c, 0x32, 0x89, 0xa3, 0x6e, 0xc7, 0xca, 0x4f, - 0xd7, 0xf6, 0x9c, 0x16, 0xe7, 0x48, 0xfe, 0x3a, 0x4a, 0x0d, 0x26, 0xac, - 0x31, 0x75, 0x80, 0x14, 0xff, 0x01, 0x14, 0xcb, 0x66, 0xa6, 0x1d, 0x03, - 0x58, 0xd0, 0x5e, 0x3e, 0x14, 0xbb, 0xb8, 0x4c, 0x11, 0xee, 0x66, 0x68, - 0x18, 0xfa, 0xf4, 0xa3, 0x3d, 0xf6, 0x7b, 0x5c, 0x27, 0x10, 0x83, 0xeb, - 0xfd, 0xc9, 0xcb, 0x3b, 0x9f, 0xd2, 0x98, 0x24, 0x01, 0x41, 0x38, 0x87, - 0x15, 0x71, 0xdc, 0x87, 0xf6, 0xe6, 0xaa, 0xf6, 0xa1, 0x79, 0x1e, 0x83, - 0x0d, 0x4a, 0x40, 0xdf, 0x0a, 0xb4, 0xc0, 0x6f, 0x7f, 0x61, 0xa5, 0x6d, - 0xb8, 0x80, 0x5d, 0x42, 0x8e, 0xb2, 0xc1, 0x55, 0x2f, 0xab, 0xc5, 0xa6, - 0x69, 0x98, 0x97, 0x2f, 0x7e, 0x3e, 0x92, 0x20, 0xe6, 0x2e, 0xf8, 0x84, - 0x4d, 0xc1, 0x02, 0x2a, 0x6e, 0x1b, 0x1f, 0xe0, 0x61, 0x9f, 0x44, 0x2a, - 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, 0x2c, 0x9d, 0xff, 0xff, - 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, - 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, 0xaf, 0x5a, 0x2e, 0x85, - 0x9b, 0x93, 0xd2, 0x30, 0x48, 0x22, 0x00, 0x1a, 0x1a, 0xe2, 0xa3, 0x3f, - 0xa1, 0xa2, 0x30, 0x3c, 0x64, 0x25, 0x68, 0x2e, 0x61, 0x5d, 0x1c, 0x9e, - 0xc1, 0xac, 0xb6, 0x71, 0x91, 0x72, 0xd6, 0xbd, 0x83, 0x0a, 0xc7, 0x59, - 0x99, 0x81, 0x85, 0x31, 0x72, 0xdc, 0xf5, 0x75, 0xa7, 0x5e, 0x1e, 0x5d, - 0xb1, 0x05, 0x57, 0xb2, 0x99, 0xcf, 0x8c, 0x77, 0x57, 0x84, 0x6c, 0x67, - 0xb9, 0xd2, 0x6a, 0x3f, 0x86, 0xfd, 0x23, 0xba, 0x12, 0x5e, 0x77, 0xce, - 0x42, 0xa2, 0xe8, 0xe4, 0xc2, 0x75, 0x7c, 0xc9, 0xc6, 0x2e, 0x23, 0x5b, - 0xad, 0x3f, 0x16, 0xd2, 0x70, 0x94, 0x3f, 0x5f, 0x30, 0x15, 0x84, 0x35, - 0x67, 0x88, 0xb9, 0x2a, 0xdd, 0xca, 0xfb, 0x4d, 0xe1, 0x8e, 0x18, 0x22, - 0x2a, 0xe7, 0xa5, 0x61, 0x7d, 0xed, 0x9d, 0xdc, 0xb2, 0xab, 0x0b, 0x38, - 0x51, 0x74, 0x71, 0x69, 0x38, 0x4e, 0xff, 0x7c, 0x5e, 0xc0, 0x90, 0xa8, - 0x45, 0x29, 0x82, 0x2e, 0xd8, 0x43, 0xd5, 0x25, 0x74, 0xf5, 0x56, 0x2c, - 0xc6, 0x42, 0x12, 0x67, 0xed, 0xcd, 0x14, 0x88, 0xf7, 0xa8, 0x5f, 0x39, - 0x83, 0x7b, 0x05, 0xf5, 0xf5, 0x16, 0xe4, 0xef, 0x31, 0x90, 0x7b, 0x25, - 0x1a, 0x6a, 0xc7, 0xd9, 0x34, 0xba, 0x53, 0x9b, 0x5c, 0x38, 0x59, 0x66, - 0x67, 0x19, 0x7f, 0xfc, 0x21, 0xd8, 0x70, 0x71, 0x38, 0x7f, 0x09, 0x25, - 0xed, 0x62, 0x9e, 0x3d, 0x3e, 0xbb, 0x28, 0x91, 0x44, 0x08, 0x2c, 0xd2, - 0x24, 0xa1, 0xb7, 0xd3, 0x50, 0x13, 0xee, 0xce, 0xc5, 0xc6, 0xd6, 0x87, - 0x52, 0x20, 0x64, 0x31, 0xca, 0x02, 0xf7, 0x12, 0xb0, 0xe7, 0x0c, 0x04, - 0x62, 0xe0, 0x75, 0x37, 0xa8, 0xf2, 0xbd, 0xeb, 0xf5, 0x79, 0x10, 0x9d, - 0x94, 0x18, 0x51, 0x1e, 0xe6, 0x85, 0x08, 0x1f, 0x4e, 0xa1, 0x69, 0x64, - 0x5e, 0x28, 0x68, 0x96, 0x74, 0x66, 0xb2, 0x96, 0x32, 0xde, 0x7f, 0x35, - 0x55, 0x15, 0xab, 0x2b, 0x6d, 0xe7, 0x7c, 0x0f, 0xbf, 0xff, 0x78, 0xc4, - 0xce, 0x8f, 0x4f, 0x51, 0x24, 0xc7, 0xb6, 0x5a, 0x93, 0xeb, 0x26, 0xf4, - 0x24, 0x7e, 0xdf, 0x68, 0xcf, 0x74, 0x5a, 0x40, 0x9c, 0xfd, 0x84, 0x51, - 0xbb, 0x80, 0xc7, 0x11, 0x27, 0x35, 0xf4, 0xf6, 0xa9, 0x8c, 0x74, 0x7b, - 0x2a, 0x3b, 0xb7, 0x00, 0x0b, 0x0f, 0x04, 0x83, 0xd0, 0xf3, 0x50, 0x9b, - 0xf4, 0x8e, 0x5d, 0x57, 0x2f, 0xf4, 0x79, 0x7f, 0xe0, 0x5e, 0xdb, 0x9c, - 0xc0, 0xba, 0xd8, 0x45, 0x16, 0x3b, 0xc5, 0x7d, 0xfb, 0xdf, 0xc3, 0x18, - 0x56, 0x55, 0x55, 0xd5, 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, - 0x3a, 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, 0x76, 0x20, 0x15, 0x91, - 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, 0xd8, 0x46, 0x37, 0xbd, 0xa9, 0xe9, - 0xa5, 0x78, 0xb5, 0x04, 0x1f, 0xd5, 0x06, 0x01, 0x86, 0x91, 0x78, 0x54, - 0x07, 0xce, 0x9c, 0x4d, 0xfd, 0x53, 0x3f, 0x8f, 0xaf, 0x03, 0x55, 0xa8, - 0xd2, 0x53, 0x02, 0x44, 0x27, 0x24, 0xa7, 0x7a, 0x91, 0xf3, 0x5e, 0xf8, - 0x75, 0xce, 0x78, 0x4b, 0x1c, 0x1b, 0x8e, 0x6c, 0x73, 0x4c, 0xcf, 0x2e, - 0x13, 0x6e, 0x0e, 0x77, 0x13, 0x81, 0x1c, 0xfe, 0x57, 0xda, 0xc9, 0x69, - 0x96, 0x21, 0x59, 0x38, 0xb6, 0xf8, 0xd5, 0x4a, 0x65, 0x48, 0x8c, 0x49, - 0x7b, 0x7b, 0xcd, 0x9f, 0xc8, 0xc1, 0x7b, 0x2a, 0xf6, 0x8e, 0x1c, 0xf2, - 0x32, 0xf0, 0x28, 0xb4, 0x54, 0x0c, 0xd0, 0x66, 0x61, 0x8e, 0x59, 0x15, - 0x2a, 0x81, 0xd1, 0x35, 0xe0, 0x1c, 0x6c, 0x16, 0x7a, 0x49, 0x1c, 0x52, - 0x68, 0xe6, 0x2e, 0x6b, 0x21, 0xa6, 0xc1, 0xa5, 0xac, 0x52, 0xed, 0xf2, - 0x26, 0xd2, 0x34, 0x67, 0x83, 0x7b, 0x05, 0xf5, 0xf5, 0x16, 0xe4, 0xef, - 0x31, 0x90, 0x7b, 0x25, 0x1a, 0x6a, 0xc7, 0xd9, 0x34, 0xba, 0x53, 0x9b, - 0x5c, 0x38, 0x59, 0x66, 0x67, 0x19, 0x7f, 0xfc, 0x21, 0xd8, 0x70, 0x71, - 0x88, 0x49, 0xc6, 0xf5, 0xa7, 0x30, 0x6d, 0x9b, 0xe2, 0xc2, 0xad, 0xf5, - 0x30, 0x0a, 0xb9, 0x47, 0x4e, 0x90, 0xd6, 0xed, 0xcd, 0x38, 0xce, 0x14, - 0x18, 0x99, 0x8e, 0x14, 0x2d, 0xbf, 0xd8, 0x2e, 0x90, 0x94, 0x25, 0x9c, - 0x76, 0x38, 0xb5, 0x4a, 0x88, 0x1e, 0xb8, 0xf8, 0x9b, 0x28, 0x57, 0xc4, - 0x91, 0x34, 0x89, 0xdc, 0x76, 0xe5, 0xf2, 0x89, 0x20, 0xd0, 0x15, 0x9a, - 0x87, 0xc5, 0xa9, 0x66, 0xca, 0x6c, 0x54, 0x9a, 0xa9, 0x25, 0x47, 0xe1, - 0x1c, 0xb0, 0xee, 0xfd, 0x9d, 0x14, 0xf8, 0xc2, 0x70, 0x9a, 0xe9, 0xe5, - 0x49, 0xb6, 0x95, 0xb0, 0x6d, 0x1b, 0xa2, 0xd5, 0x8f, 0xa1, 0x1e, 0x4c, - 0xeb, 0xf6, 0x74, 0x1a, 0x0f, 0xdc, 0x72, 0xba, 0x14, 0x55, 0x81, 0x57, - 0xb4, 0xed, 0xc7, 0xdb, 0x5a, 0x32, 0x9e, 0xb2, 0x2c, 0x44, 0x15, 0x25, - 0xce, 0x8a, 0x3b, 0x1d, 0x56, 0xa2, 0xea, 0x10, 0xf7, 0xea, 0xb7, 0x8a, - 0xde, 0x7c, 0xf3, 0x2a, 0xd7, 0xb7, 0xff, 0x95, 0x44, 0x63, 0x8c, 0xb3, - 0x6d, 0xd0, 0x7c, 0xe3, 0x98, 0x57, 0xe3, 0xdf, 0x09, 0x7b, 0xd4, 0x89, - 0x53, 0x72, 0xd3, 0x56, 0xfe, 0x55, 0xb0, 0x3e, 0x52, 0x38, 0x91, 0xd8, - 0xc2, 0x97, 0xd5, 0xfb, 0xe7, 0x66, 0xd8, 0x45, 0x67, 0x21, 0xbf, 0x97, - 0xec, 0xa1, 0x33, 0x81, 0x16, 0x22, 0x3f, 0xf6, 0x1d, 0x8d, 0xe5, 0x3b, - 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca, 0x6b, 0x28, 0xc9, 0x13, 0xbb, 0x86, - 0xa4, 0x14, 0xdc, 0x41, 0x99, 0xe7, 0x70, 0x67, 0x73, 0x38, 0x5f, 0x81, - 0x0e, 0xba, 0x87, 0xf1, 0xfd, 0xab, 0xd3, 0x6d, 0xf2, 0x3b, 0x51, 0x13, - 0x52, 0x0d, 0x7d, 0xbf, 0xf8, 0x8d, 0x1c, 0xa8, 0x1f, 0x8f, 0x28, 0xe8, - 0xa2, 0x66, 0x26, 0x40, 0x3b, 0xf6, 0x2f, 0x0a, 0xa3, 0xc6, 0x72, 0xa5, - 0xeb, 0x4d, 0x9b, 0x44, 0xcb, 0xb2, 0xf2, 0xad, 0x8d, 0xa8, 0x1d, 0x48, - 0xc7, 0x88, 0x9d, 0x56, 0xe5, 0xae, 0x9c, 0xdc, 0x1e, 0x7c, 0xb2, 0x17, - 0x19, 0x5f, 0xba, 0x46, 0x22, 0x82, 0x56, 0xd7, 0xcb, 0x3b, 0x9a, 0x10, - 0xb2, 0x35, 0xe4, 0x7e, 0x80, 0x54, 0x29, 0x87, 0x4f, 0x47, 0x8d, 0x3e, - 0x38, 0x71, 0x33, 0xaf, 0x5a, 0x45, 0xf9, 0x5a, 0x59, 0x5a, 0xcd, 0x5d, - 0xff, 0x03, 0xaf, 0x6a, 0x45, 0x74, 0x21, 0x73, 0x97, 0x59, 0xd0, 0xd0, - 0x19, 0xe6, 0x98, 0x15, 0x75, 0x5b, 0xd9, 0x4f, 0x01, 0xfd, 0x0c, 0xad, - 0xf2, 0xe8, 0x6a, 0x91, 0x09, 0x05, 0xa8, 0x26, 0xcf, 0xc3, 0x92, 0xac, - 0x2e, 0x3f, 0x8e, 0x12, 0x38, 0x7f, 0x09, 0x25, 0xed, 0x62, 0x9e, 0x3d, - 0x3e, 0xbb, 0x28, 0x91, 0x44, 0x08, 0x2c, 0xd2, 0x24, 0xa1, 0xb7, 0xd3, - 0x50, 0x13, 0xee, 0xce, 0xc5, 0xc6, 0xd6, 0x87, 0x52, 0x20, 0x64, 0x31, - 0x90, 0x94, 0x25, 0x9c, 0x76, 0x38, 0xb5, 0x4a, 0x88, 0x1e, 0xb8, 0xf8, - 0x9b, 0x28, 0x57, 0xc4, 0x91, 0x34, 0x89, 0xdc, 0x76, 0xe5, 0xf2, 0x89, - 0x20, 0xd0, 0x15, 0x9a, 0x87, 0xc5, 0xa9, 0x66, 0x79, 0xaf, 0xfe, 0x4a, - 0x9b, 0x49, 0xbe, 0x45, 0xa3, 0x0a, 0xac, 0x46, 0xd9, 0x78, 0x58, 0x0c, - 0x7f, 0xa4, 0xf3, 0xc6, 0x62, 0x76, 0xae, 0x81, 0x29, 0xa7, 0x80, 0x76, - 0x04, 0x08, 0x2f, 0x10, 0x8a, 0xb5, 0x5c, 0x7d, 0xed, 0x61, 0x4a, 0xac, - 0x0d, 0xc6, 0xa4, 0x23, 0x3b, 0xa1, 0x62, 0xc8, 0x95, 0x09, 0xda, 0xc6, - 0xc7, 0xc3, 0x94, 0xdc, 0x44, 0x1f, 0xe5, 0x31, 0x8f, 0xa4, 0xe2, 0x6d, - 0x76, 0xc0, 0x3c, 0xc5, 0xd5, 0xb0, 0x9a, 0x05, 0x41, 0x69, 0x08, 0xde, - 0x68, 0xad, 0xf5, 0x74, 0xf4, 0xc9, 0xf1, 0xd0, 0x92, 0x77, 0x33, 0x74, - 0x03, 0x58, 0x54, 0x31, 0x25, 0xe2, 0x8c, 0x07, 0x99, 0x82, 0x51, 0xa9, - 0xa5, 0x6e, 0x02, 0xb4, 0x7c, 0x53, 0x17, 0x0f, 0x22, 0x59, 0x2f, 0xf7, - 0xe0, 0x8a, 0xf7, 0x21, 0xe2, 0xcc, 0xf5, 0xa8, 0x18, 0x0a, 0xc8, 0xb8, - 0x4c, 0x91, 0xd6, 0x4b, 0x60, 0xc4, 0xbc, 0x19, 0x47, 0x6f, 0x32, 0x54, - 0x97, 0x03, 0x74, 0x65, 0x77, 0xfe, 0x0a, 0x45, 0xe4, 0x69, 0xf6, 0x99, - 0x3b, 0xd7, 0xba, 0xe4, 0x13, 0x0b, 0x92, 0xf0, 0xc3, 0xda, 0x51, 0x38, - 0xcd, 0xcc, 0xcc, 0x0c, 0x33, 0x33, 0x33, 0x73, 0x99, 0x5a, 0x99, 0xd9, - 0x66, 0xa5, 0x8f, 0xcc, 0x00, 0x7a, 0x0b, 0x9b, 0x67, 0xe0, 0x7b, 0xd4, - 0xca, 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, 0xf1, 0x98, 0x00, 0xbe, - 0x97, 0x3c, 0xd3, 0x7a, 0x3c, 0x9b, 0x15, 0x33, 0x6d, 0xf0, 0x49, 0x3d, - 0x89, 0x98, 0xd7, 0x3a, 0x65, 0x11, 0xe8, 0xf1, 0x77, 0x77, 0xb6, 0x81, - 0xfe, 0x08, 0x7b, 0x48, 0x4d, 0xc3, 0x78, 0x93, 0x81, 0x4b, 0x73, 0xdd, - 0x82, 0x22, 0x1a, 0xd4, 0x95, 0x93, 0x05, 0xea, 0x6b, 0xe5, 0xbb, 0x33, - 0x38, 0xca, 0x7c, 0xfc, 0xc0, 0x9b, 0x0a, 0xb3, 0xf0, 0x23, 0x06, 0x19, - 0xa6, 0xf8, 0xb8, 0xee, 0xad, 0x04, 0x93, 0x10, 0x66, 0x2b, 0x7c, 0x76, - 0xa3, 0x81, 0xa9, 0x3a, 0x55, 0xef, 0x95, 0x8a, 0xc1, 0x23, 0xed, 0xd1, - 0xc4, 0x8b, 0x3a, 0xd5, 0x72, 0xc0, 0xfc, 0x0c, 0x4c, 0x32, 0x89, 0xa3, - 0x6e, 0xc7, 0xca, 0x4f, 0xd7, 0xf6, 0x9c, 0x16, 0xe7, 0x48, 0xfe, 0x3a, - 0x4a, 0x0d, 0x26, 0xac, 0x31, 0x75, 0x80, 0x14, 0xff, 0x01, 0x14, 0xcb, - 0x66, 0xa6, 0x1d, 0x03, 0xca, 0x02, 0xf7, 0x12, 0xb0, 0xe7, 0x0c, 0x04, - 0x62, 0xe0, 0x75, 0x37, 0xa8, 0xf2, 0xbd, 0xeb, 0xf5, 0x79, 0x10, 0x9d, - 0x94, 0x18, 0x51, 0x1e, 0xe6, 0x85, 0x08, 0x1f, 0x4e, 0xa1, 0x69, 0x64, - 0xca, 0x6c, 0x54, 0x9a, 0xa9, 0x25, 0x47, 0xe1, 0x1c, 0xb0, 0xee, 0xfd, - 0x9d, 0x14, 0xf8, 0xc2, 0x70, 0x9a, 0xe9, 0xe5, 0x49, 0xb6, 0x95, 0xb0, - 0x6d, 0x1b, 0xa2, 0xd5, 0x8f, 0xa1, 0x1e, 0x4c, 0x8a, 0xb5, 0x5c, 0x7d, - 0xed, 0x61, 0x4a, 0xac, 0x0d, 0xc6, 0xa4, 0x23, 0x3b, 0xa1, 0x62, 0xc8, - 0x95, 0x09, 0xda, 0xc6, 0xc7, 0xc3, 0x94, 0xdc, 0x44, 0x1f, 0xe5, 0x31, - 0x8f, 0xa4, 0xe2, 0x6d, 0x2a, 0xb8, 0xfd, 0x5a, 0xa0, 0xe6, 0x72, 0x15, - 0x62, 0xb8, 0x46, 0xf8, 0xde, 0x0e, 0x84, 0x91, 0x55, 0x63, 0x08, 0x83, - 0xd6, 0xb4, 0x9c, 0x19, 0xd3, 0xda, 0xff, 0xe6, 0x94, 0x89, 0x4f, 0x0a, - 0xb5, 0x99, 0x1d, 0x19, 0xfd, 0x1e, 0x5b, 0x77, 0x05, 0x1e, 0xed, 0x91, - 0xda, 0x58, 0xae, 0xf1, 0x64, 0xcc, 0x3d, 0x65, 0x28, 0x3d, 0x83, 0xd8, - 0x7c, 0x4c, 0x92, 0x24, 0xbe, 0xf5, 0xdf, 0x2a, 0x24, 0x81, 0x40, 0x3b, - 0xd1, 0xd3, 0x95, 0xe9, 0x2f, 0xd1, 0x19, 0xf3, 0xa5, 0x75, 0xa9, 0x3b, - 0x8f, 0x27, 0xbc, 0x73, 0xa3, 0xc0, 0xeb, 0x24, 0x64, 0xd6, 0x81, 0xc2, - 0xee, 0xb9, 0xb5, 0x42, 0x8a, 0x80, 0xec, 0x54, 0xa2, 0x49, 0xc2, 0xd5, - 0x68, 0x07, 0x0e, 0xe1, 0x89, 0xd9, 0x46, 0x6b, 0x83, 0x1f, 0x99, 0xb1, - 0x32, 0x1b, 0xd3, 0x05, 0x15, 0x7c, 0x2d, 0x27, 0xe4, 0xe5, 0x5f, 0x4f, - 0xb7, 0x6d, 0xdb, 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, 0x08, 0x0c, 0xc3, - 0x9e, 0x0f, 0x12, 0x8e, 0xc3, 0x20, 0x7d, 0x25, 0x19, 0x76, 0x42, 0x1d, - 0xd6, 0x85, 0x70, 0xa2, 0x75, 0x71, 0x0a, 0x0b, 0x94, 0x1c, 0x12, 0xbf, - 0x42, 0x5e, 0xe4, 0x27, 0xdb, 0x3c, 0xe1, 0xf5, 0xaf, 0x46, 0x1e, 0x9d, - 0x8e, 0x12, 0x00, 0x76, 0x04, 0xe9, 0x91, 0xc2, 0x87, 0xb3, 0xa0, 0x48, - 0xdd, 0xc0, 0x7d, 0x56, 0x95, 0x78, 0x00, 0xf1, 0xf6, 0x6a, 0xd7, 0xcd, - 0xf5, 0x0a, 0xcb, 0x24, 0x7e, 0xa5, 0x47, 0xa6, 0xea, 0x8f, 0x03, 0x39, - 0xd1, 0x17, 0x1b, 0x29, 0x6d, 0xcb, 0x08, 0x22, 0x69, 0x78, 0x31, 0x5f, - 0xba, 0xc1, 0xf8, 0x2d, 0x36, 0x70, 0xd2, 0x0c, 0x41, 0x3e, 0xa5, 0xb7, - 0xec, 0x12, 0xa4, 0x44, 0x8a, 0x6f, 0x5c, 0x6f, 0xc1, 0xe3, 0xdf, 0x4e, - 0x6d, 0x04, 0x03, 0x1c, 0xf6, 0xcb, 0x19, 0x5a, 0x58, 0xd0, 0x5e, 0x3e, - 0x14, 0xbb, 0xb8, 0x4c, 0x11, 0xee, 0x66, 0x68, 0x18, 0xfa, 0xf4, 0xa3, - 0x3d, 0xf6, 0x7b, 0x5c, 0x27, 0x10, 0x83, 0xeb, 0xfd, 0xc9, 0xcb, 0x3b, - 0x9f, 0xd2, 0x98, 0x24, 0x5e, 0x28, 0x68, 0x96, 0x74, 0x66, 0xb2, 0x96, - 0x32, 0xde, 0x7f, 0x35, 0x55, 0x15, 0xab, 0x2b, 0x6d, 0xe7, 0x7c, 0x0f, - 0xbf, 0xff, 0x78, 0xc4, 0xce, 0x8f, 0x4f, 0x51, 0x24, 0xc7, 0xb6, 0x5a, - 0xeb, 0xf6, 0x74, 0x1a, 0x0f, 0xdc, 0x72, 0xba, 0x14, 0x55, 0x81, 0x57, - 0xb4, 0xed, 0xc7, 0xdb, 0x5a, 0x32, 0x9e, 0xb2, 0x2c, 0x44, 0x15, 0x25, - 0xce, 0x8a, 0x3b, 0x1d, 0x56, 0xa2, 0xea, 0x10, 0x76, 0xc0, 0x3c, 0xc5, - 0xd5, 0xb0, 0x9a, 0x05, 0x41, 0x69, 0x08, 0xde, 0x68, 0xad, 0xf5, 0x74, - 0xf4, 0xc9, 0xf1, 0xd0, 0x92, 0x77, 0x33, 0x74, 0x03, 0x58, 0x54, 0x31, - 0x25, 0xe2, 0x8c, 0x07, 0xb5, 0x99, 0x1d, 0x19, 0xfd, 0x1e, 0x5b, 0x77, - 0x05, 0x1e, 0xed, 0x91, 0xda, 0x58, 0xae, 0xf1, 0x64, 0xcc, 0x3d, 0x65, - 0x28, 0x3d, 0x83, 0xd8, 0x7c, 0x4c, 0x92, 0x24, 0xbe, 0xf5, 0xdf, 0x2a, - 0x98, 0xbe, 0x62, 0xc3, 0xa6, 0x18, 0xf4, 0x6f, 0xc8, 0x59, 0xe7, 0x2f, - 0xde, 0xdf, 0x76, 0x04, 0xef, 0x5b, 0x69, 0xf9, 0x6d, 0x75, 0x85, 0x34, - 0x3c, 0xf0, 0xf8, 0xa5, 0xaf, 0x68, 0x81, 0x23, 0x9b, 0x0e, 0xe7, 0x5e, - 0x4d, 0xd9, 0x68, 0x7f, 0x09, 0x46, 0x68, 0x02, 0x54, 0x5e, 0x55, 0xfc, - 0x6f, 0x07, 0x0c, 0x3c, 0x88, 0xb6, 0x06, 0xdf, 0xd2, 0x16, 0x5e, 0xad, - 0x58, 0xd5, 0x79, 0x19, 0x91, 0x8d, 0x40, 0x46, 0x20, 0xaa, 0x1c, 0x30, - 0x92, 0x7b, 0x39, 0x40, 0x6a, 0x18, 0x01, 0x01, 0x28, 0x21, 0x34, 0x42, - 0x7f, 0x3f, 0x9e, 0x65, 0xb7, 0xc9, 0xde, 0xcf, 0x5a, 0x06, 0x96, 0x20, - 0x01, 0x00, 0x00, 0x80, 0xd0, 0x45, 0x17, 0xdd, 0x44, 0x29, 0xe7, 0x22, - 0x1a, 0x4b, 0x4c, 0x44, 0xbf, 0x7c, 0x1a, 0xac, 0x07, 0x94, 0x2b, 0x48, - 0x39, 0x83, 0xd0, 0x04, 0x5b, 0xab, 0xa8, 0x6e, 0x2b, 0x36, 0x7d, 0x46, - 0xa8, 0xb6, 0x31, 0xdd, 0xca, 0xd5, 0x7f, 0x35, 0x97, 0x0e, 0x0c, 0x19, - 0xd8, 0xba, 0xd1, 0xa0, 0x43, 0xcc, 0x56, 0x7a, 0xba, 0x61, 0x29, 0x9d, - 0x30, 0xa7, 0xc5, 0x70, 0xa2, 0xd7, 0xd3, 0x94, 0x26, 0xc8, 0x0f, 0x99, - 0x83, 0x6b, 0x49, 0x1c, 0x18, 0x63, 0x67, 0xcc, 0x80, 0x7a, 0xca, 0x48, - 0xf5, 0xfc, 0x59, 0xb1, 0x72, 0x2d, 0x12, 0x26, 0x16, 0x46, 0x20, 0x29, - 0x70, 0xba, 0x9b, 0x5c, 0xb2, 0x24, 0xe0, 0x10, 0x47, 0x78, 0x12, 0xb6, - 0x3a, 0x50, 0x95, 0xe6, 0xbb, 0x74, 0x04, 0x31, 0x24, 0xd2, 0xc2, 0x27, - 0x6c, 0x1a, 0x71, 0xae, 0xb7, 0x91, 0x8e, 0x28, 0x01, 0x41, 0x38, 0x87, - 0x15, 0x71, 0xdc, 0x87, 0xf6, 0xe6, 0xaa, 0xf6, 0xa1, 0x79, 0x1e, 0x83, - 0x0d, 0x4a, 0x40, 0xdf, 0x0a, 0xb4, 0xc0, 0x6f, 0x7f, 0x61, 0xa5, 0x6d, - 0xb8, 0x80, 0x5d, 0x42, 0x93, 0xeb, 0x26, 0xf4, 0x24, 0x7e, 0xdf, 0x68, - 0xcf, 0x74, 0x5a, 0x40, 0x9c, 0xfd, 0x84, 0x51, 0xbb, 0x80, 0xc7, 0x11, - 0x27, 0x35, 0xf4, 0xf6, 0xa9, 0x8c, 0x74, 0x7b, 0x2a, 0x3b, 0xb7, 0x00, - 0xf7, 0xea, 0xb7, 0x8a, 0xde, 0x7c, 0xf3, 0x2a, 0xd7, 0xb7, 0xff, 0x95, - 0x44, 0x63, 0x8c, 0xb3, 0x6d, 0xd0, 0x7c, 0xe3, 0x98, 0x57, 0xe3, 0xdf, - 0x09, 0x7b, 0xd4, 0x89, 0x53, 0x72, 0xd3, 0x56, 0x99, 0x82, 0x51, 0xa9, - 0xa5, 0x6e, 0x02, 0xb4, 0x7c, 0x53, 0x17, 0x0f, 0x22, 0x59, 0x2f, 0xf7, - 0xe0, 0x8a, 0xf7, 0x21, 0xe2, 0xcc, 0xf5, 0xa8, 0x18, 0x0a, 0xc8, 0xb8, - 0x4c, 0x91, 0xd6, 0x4b, 0x24, 0x81, 0x40, 0x3b, 0xd1, 0xd3, 0x95, 0xe9, - 0x2f, 0xd1, 0x19, 0xf3, 0xa5, 0x75, 0xa9, 0x3b, 0x8f, 0x27, 0xbc, 0x73, - 0xa3, 0xc0, 0xeb, 0x24, 0x64, 0xd6, 0x81, 0xc2, 0xee, 0xb9, 0xb5, 0x42, - 0x9b, 0x0e, 0xe7, 0x5e, 0x4d, 0xd9, 0x68, 0x7f, 0x09, 0x46, 0x68, 0x02, - 0x54, 0x5e, 0x55, 0xfc, 0x6f, 0x07, 0x0c, 0x3c, 0x88, 0xb6, 0x06, 0xdf, - 0xd2, 0x16, 0x5e, 0xad, 0x58, 0xd5, 0x79, 0x19, 0x4d, 0xd3, 0x03, 0xd7, - 0xfd, 0x37, 0xff, 0xbb, 0xd0, 0x0e, 0xbf, 0x70, 0xe6, 0x7f, 0x0b, 0xb3, - 0xd8, 0x06, 0x13, 0xaa, 0x84, 0x33, 0x28, 0x1d, 0xb5, 0x61, 0x89, 0x8f, - 0x7f, 0x13, 0x39, 0x01, 0xaf, 0xa0, 0x71, 0x81, 0xac, 0xa7, 0xde, 0x41, - 0x21, 0x34, 0xea, 0xcf, 0x0b, 0x29, 0xf1, 0xfb, 0xfd, 0xcf, 0x98, 0x84, - 0x9a, 0x7c, 0x7b, 0x2a, 0x93, 0x7b, 0x85, 0x0d, 0x9a, 0x7b, 0x8a, 0x52, - 0xb3, 0x90, 0x85, 0x2c, 0x58, 0xc8, 0x42, 0x16, 0xa6, 0x87, 0xa5, 0x37, - 0xe1, 0xa4, 0x8e, 0x32, 0x8a, 0x4c, 0x12, 0x99, 0xe5, 0x14, 0x75, 0x7a, - 0xcf, 0x61, 0x03, 0xc0, 0xc2, 0xa7, 0xce, 0x64, 0xbe, 0x27, 0xc2, 0xdb, - 0x5f, 0x39, 0xca, 0x66, 0xdd, 0xff, 0x94, 0x6a, 0x77, 0x98, 0xb8, 0x36, - 0x31, 0x8a, 0x9a, 0x1c, 0x61, 0x2a, 0xf0, 0xdf, 0xe3, 0x2c, 0x9e, 0x76, - 0x2b, 0x9a, 0x99, 0x3d, 0x3d, 0x61, 0xea, 0xed, 0xb3, 0x79, 0x8b, 0x06, - 0xf3, 0x14, 0x49, 0x86, 0x7b, 0xc6, 0x8a, 0x9a, 0x88, 0x80, 0x87, 0x71, - 0x06, 0x4b, 0x9b, 0x20, 0x73, 0xd0, 0x71, 0x68, 0x18, 0x4b, 0x12, 0x17, - 0x9b, 0x0b, 0xdb, 0xe9, 0x13, 0xe6, 0x33, 0x64, 0x82, 0x8b, 0xd1, 0xa5, - 0x2a, 0x05, 0x65, 0xf1, 0xc3, 0x4e, 0xd9, 0xbc, 0x94, 0x90, 0x1d, 0x8b, - 0xea, 0xfc, 0x50, 0x02, 0xc8, 0xd9, 0xce, 0x4e, 0x8e, 0xb2, 0xc1, 0x55, - 0x2f, 0xab, 0xc5, 0xa6, 0x69, 0x98, 0x97, 0x2f, 0x7e, 0x3e, 0x92, 0x20, - 0xe6, 0x2e, 0xf8, 0x84, 0x4d, 0xc1, 0x02, 0x2a, 0x6e, 0x1b, 0x1f, 0xe0, - 0x61, 0x9f, 0x44, 0x2a, 0x0b, 0x0f, 0x04, 0x83, 0xd0, 0xf3, 0x50, 0x9b, - 0xf4, 0x8e, 0x5d, 0x57, 0x2f, 0xf4, 0x79, 0x7f, 0xe0, 0x5e, 0xdb, 0x9c, - 0xc0, 0xba, 0xd8, 0x45, 0x16, 0x3b, 0xc5, 0x7d, 0xfb, 0xdf, 0xc3, 0x18, - 0xfe, 0x55, 0xb0, 0x3e, 0x52, 0x38, 0x91, 0xd8, 0xc2, 0x97, 0xd5, 0xfb, - 0xe7, 0x66, 0xd8, 0x45, 0x67, 0x21, 0xbf, 0x97, 0xec, 0xa1, 0x33, 0x81, - 0x16, 0x22, 0x3f, 0xf6, 0x1d, 0x8d, 0xe5, 0x3b, 0x60, 0xc4, 0xbc, 0x19, - 0x47, 0x6f, 0x32, 0x54, 0x97, 0x03, 0x74, 0x65, 0x77, 0xfe, 0x0a, 0x45, - 0xe4, 0x69, 0xf6, 0x99, 0x3b, 0xd7, 0xba, 0xe4, 0x13, 0x0b, 0x92, 0xf0, - 0xc3, 0xda, 0x51, 0x38, 0x8a, 0x80, 0xec, 0x54, 0xa2, 0x49, 0xc2, 0xd5, - 0x68, 0x07, 0x0e, 0xe1, 0x89, 0xd9, 0x46, 0x6b, 0x83, 0x1f, 0x99, 0xb1, - 0x32, 0x1b, 0xd3, 0x05, 0x15, 0x7c, 0x2d, 0x27, 0xe4, 0xe5, 0x5f, 0x4f, - 0x91, 0x8d, 0x40, 0x46, 0x20, 0xaa, 0x1c, 0x30, 0x92, 0x7b, 0x39, 0x40, - 0x6a, 0x18, 0x01, 0x01, 0x28, 0x21, 0x34, 0x42, 0x7f, 0x3f, 0x9e, 0x65, - 0xb7, 0xc9, 0xde, 0xcf, 0x5a, 0x06, 0x96, 0x20, 0xaf, 0xa0, 0x71, 0x81, - 0xac, 0xa7, 0xde, 0x41, 0x21, 0x34, 0xea, 0xcf, 0x0b, 0x29, 0xf1, 0xfb, - 0xfd, 0xcf, 0x98, 0x84, 0x9a, 0x7c, 0x7b, 0x2a, 0x93, 0x7b, 0x85, 0x0d, - 0x9a, 0x7b, 0x8a, 0x52, 0x10, 0x02, 0xa9, 0xa1, 0xbb, 0xe2, 0xc6, 0x55, - 0x3b, 0x4c, 0x6c, 0x60, 0x94, 0x5a, 0xa4, 0x86, 0x68, 0xa4, 0x57, 0xbd, - 0x6e, 0x74, 0x8d, 0x26, 0xb8, 0x51, 0x42, 0xe5, 0x0b, 0xd1, 0x91, 0x3e, - 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, - 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, - 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xe2, 0x1c, 0xbc, 0x07, - 0xf4, 0xe0, 0x78, 0x31, 0x45, 0xfa, 0x02, 0xdd, 0x6a, 0xfa, 0xad, 0xce, - 0xbd, 0x8c, 0x45, 0x71, 0x1a, 0x95, 0x02, 0x4f, 0x65, 0x3b, 0xa7, 0x6f, - 0x77, 0x9f, 0xa6, 0x1f, 0x32, 0xcb, 0x96, 0xcd, 0x93, 0xe6, 0x5f, 0x5f, - 0x1b, 0x2a, 0x55, 0xe9, 0xa1, 0x76, 0x33, 0x5e, 0x79, 0x47, 0x34, 0xa8, - 0x20, 0xac, 0x87, 0xab, 0xcc, 0xd7, 0xd5, 0x58, 0xb8, 0xf4, 0x28, 0x4a, - 0x3a, 0xd0, 0x99, 0x67, 0x0b, 0x67, 0x9b, 0x54, 0x6c, 0xd3, 0x90, 0xf3, - 0xa8, 0x88, 0xc0, 0x07, 0xa0, 0x3d, 0x08, 0x45, 0xa9, 0x3b, 0xa0, 0xee, - 0x1b, 0x4d, 0xe8, 0x14, 0x18, 0xec, 0xaf, 0x4c, 0x95, 0x1a, 0x65, 0x19, - 0xbc, 0x79, 0xd1, 0x05, 0x19, 0x2e, 0xe5, 0xff, 0x8b, 0x04, 0xbb, 0x6c, - 0x1a, 0x03, 0x66, 0xad, 0x1b, 0xc9, 0x60, 0x09, 0xdb, 0x37, 0x1c, 0xe3, - 0xf6, 0x39, 0x26, 0x13, 0x3f, 0xe7, 0x88, 0x55, 0x80, 0x96, 0x9c, 0xe1, - 0x2b, 0xfe, 0xbb, 0xe2, 0x60, 0xd4, 0xe3, 0x0b, 0x49, 0x52, 0x66, 0x8b, - 0x60, 0xc4, 0x88, 0xd2, 0xc6, 0x35, 0x76, 0xfb, 0x4e, 0x5c, 0x4c, 0x0e, - 0xf0, 0x91, 0xfa, 0x3f, 0xa5, 0xee, 0x25, 0x6d, 0xac, 0xe2, 0x41, 0xaa, - 0x35, 0xfc, 0xeb, 0x51, 0xef, 0x4e, 0x8d, 0xdb, 0xe9, 0xb1, 0x6d, 0xd3, - 0x53, 0xee, 0x0d, 0x18, 0xb0, 0x8a, 0xa2, 0x22, 0x71, 0x4e, 0xad, 0xbf, - 0x02, 0x85, 0xb8, 0xa4, 0x34, 0xed, 0x04, 0x3a, 0xbe, 0x03, 0x7d, 0x7b, - 0xee, 0x20, 0xf8, 0xca, 0xab, 0x98, 0x32, 0xb2, 0x52, 0xb2, 0xc3, 0x82, - 0x54, 0x63, 0xe6, 0x64, 0xfb, 0xce, 0xf0, 0x15, 0x22, 0x73, 0xb7, 0xf0, - 0xfd, 0xae, 0xe3, 0x9b, 0x5f, 0xc2, 0x5c, 0xa3, 0xaf, 0x14, 0xf5, 0xd3, - 0x7d, 0xe3, 0x40, 0xef, 0x61, 0xf2, 0x1d, 0x13, 0x9c, 0x5b, 0xdd, 0x6f, - 0x6f, 0x9c, 0x81, 0xa0, 0x1b, 0x36, 0x49, 0xf4, 0xe9, 0x7c, 0x63, 0x46, - 0x64, 0x68, 0xfc, 0x2a, 0x4c, 0x19, 0x27, 0x93, 0x5a, 0xee, 0xca, 0x72, - 0x75, 0x48, 0x6b, 0x96, 0x76, 0xd5, 0xb9, 0x66, 0x94, 0x89, 0x2d, 0xa4, - 0x86, 0x6e, 0x6e, 0x60, 0x6a, 0x47, 0xb0, 0xd0, 0xe7, 0xae, 0x4f, 0x8a, - 0xf2, 0x09, 0xe4, 0x95, 0x9c, 0xa4, 0x0c, 0x10, 0xa0, 0xcc, 0xb3, 0x8f, - 0xcf, 0xad, 0x5f, 0x1e, 0x35, 0x00, 0x08, 0xd7, 0xc9, 0x11, 0x0a, 0xac, - 0x2c, 0x1d, 0xdd, 0x87, 0x98, 0x52, 0x46, 0xee, 0x61, 0xb6, 0x9a, 0xa9, - 0x3e, 0x86, 0x0b, 0xbb, 0xae, 0x44, 0x47, 0x87, 0xc3, 0xd1, 0xaf, 0x5f, - 0x68, 0x98, 0xe4, 0x04, 0x11, 0x57, 0xfb, 0x8c, 0x15, 0x88, 0xab, 0x3b, - 0x73, 0x1b, 0x85, 0x0c, 0x02, 0x36, 0x2a, 0x11, 0x63, 0x85, 0x26, 0xa7, - 0xee, 0x43, 0x69, 0xdf, 0xdd, 0xeb, 0x66, 0x2d, 0x6f, 0x61, 0x7c, 0xe0, - 0x43, 0xba, 0xfa, 0x61, 0xbd, 0x51, 0x2e, 0x0f, 0x01, 0x44, 0xe2, 0x61, - 0xa0, 0xde, 0x13, 0x96, 0x66, 0xf6, 0x73, 0x4a, 0xe4, 0x9b, 0xa8, 0xc4, - 0x56, 0x30, 0x44, 0x45, 0x70, 0x52, 0x11, 0x06, 0xe3, 0x9f, 0x6c, 0x50, - 0x28, 0x62, 0x58, 0xa1, 0xc4, 0x97, 0x27, 0x16, 0xf8, 0x0d, 0xa9, 0x56, - 0x9d, 0xfe, 0x1a, 0x00, 0xa7, 0x06, 0xa6, 0x68, 0xd0, 0xd0, 0x49, 0x46, - 0xa9, 0xf1, 0x52, 0x77, 0x79, 0x25, 0x08, 0x24, 0xa2, 0xb3, 0x4f, 0xcb, - 0xb1, 0xf3, 0x9d, 0x81, 0x3d, 0xad, 0x6f, 0xf2, 0x24, 0x85, 0x44, 0x2d, - 0x17, 0x13, 0xde, 0x3b, 0xcb, 0x78, 0x00, 0x3b, 0xad, 0x51, 0xb7, 0x63, - 0x50, 0x20, 0x50, 0xd5, 0x62, 0x80, 0xec, 0x8f, 0x51, 0x06, 0x9e, 0xb3, - 0xbf, 0xf6, 0xcb, 0x47, 0x6d, 0xf0, 0xbe, 0xb2, 0x75, 0xe7, 0xfc, 0x96, - 0x73, 0x2b, 0xa4, 0x05, 0x02, 0x72, 0x0a, 0x44, 0x7d, 0x0b, 0x93, 0x62, - 0xb7, 0xe0, 0x79, 0x11, 0xed, 0xe3, 0x73, 0xe7, 0x59, 0xcc, 0xb2, 0x17, - 0xfd, 0x3d, 0x19, 0xaa, 0xb6, 0x81, 0xbe, 0xb7, 0x5e, 0x1c, 0x70, 0x1c, - 0x17, 0x68, 0x4c, 0x60, 0xf9, 0xd9, 0x18, 0x0f, 0x90, 0xf4, 0x11, 0x86, - 0x73, 0x9d, 0xc6, 0xb9, 0x93, 0x03, 0x80, 0x8a, 0x65, 0x10, 0x09, 0x0a, - 0x01, 0x9e, 0xb9, 0xc0, 0xc4, 0x53, 0x42, 0x0c, 0xc5, 0x30, 0x05, 0x20, - 0x13, 0x9d, 0x40, 0xeb, 0xf9, 0xa1, 0xb5, 0xe1, 0x01, 0xda, 0x2e, 0x9a, - 0xba, 0xd2, 0xb4, 0x17, 0x97, 0x18, 0xf4, 0x31, 0x82, 0xdd, 0x78, 0xae, - 0xce, 0x02, 0x22, 0x43, 0x9c, 0x8d, 0xdc, 0xa7, 0x1c, 0xe1, 0x03, 0x4b, - 0x65, 0x64, 0xe6, 0x0b, 0xc8, 0xb2, 0xec, 0x04, 0x8d, 0x72, 0x13, 0x49, - 0x32, 0xeb, 0x48, 0x3a, 0x1f, 0x3b, 0xa2, 0x43, 0x34, 0xf2, 0x63, 0x12, - 0x52, 0xbb, 0xde, 0x32, 0x2c, 0xde, 0x79, 0x7a, 0x53, 0xa4, 0xcf, 0xbc, - 0x40, 0x31, 0x04, 0x2d, 0xa4, 0x81, 0xe1, 0xd6, 0xda, 0xff, 0x7f, 0xed, - 0x75, 0xb8, 0xa6, 0xa3, 0x97, 0x5b, 0x14, 0x30, 0x8c, 0x40, 0xae, 0xfd, - 0x6f, 0x78, 0x32, 0x99, 0x49, 0xa9, 0xc7, 0x0d, 0x3a, 0x81, 0x83, 0x2e, - 0x69, 0x93, 0x51, 0x8d, 0xf5, 0x5d, 0xe7, 0xa9, 0x62, 0x19, 0x8a, 0x98, - 0xa0, 0x21, 0x4e, 0x60, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, - 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, - 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, - 0x78, 0xcc, 0xa3, 0x1f, 0x09, 0x1d, 0x82, 0x62, 0xf4, 0x8b, 0xb2, 0x6c, - 0x8e, 0x4d, 0x74, 0xe0, 0xba, 0xcb, 0xf7, 0x88, 0x31, 0xe3, 0x32, 0x32, - 0xd9, 0x7d, 0xa8, 0x64, 0xb6, 0x1e, 0x12, 0x15, 0x50, 0xa3, 0x04, 0xfb, - 0xf9, 0x6e, 0xb5, 0x6b, 0xb8, 0x81, 0x9e, 0x9f, 0x9e, 0xf7, 0xac, 0x09, - 0x55, 0xd9, 0x2c, 0x62, 0xd2, 0x1d, 0x0c, 0x2f, 0x46, 0xf3, 0x4f, 0xdb, - 0x4d, 0x5c, 0x18, 0x01, 0x26, 0x34, 0x39, 0xc8, 0x3b, 0x3e, 0x29, 0xe2, - 0x24, 0xa4, 0xe7, 0x89, 0xdc, 0xc0, 0x05, 0x03, 0xd8, 0x9f, 0xf6, 0xe9, - 0x17, 0x83, 0x52, 0xef, 0x56, 0x19, 0x05, 0x34, 0x88, 0xd8, 0xd0, 0x4f, - 0x12, 0xcc, 0x2f, 0xca, 0xaa, 0xee, 0xc7, 0x92, 0x3d, 0x0d, 0xc2, 0x10, - 0x17, 0xba, 0xd9, 0xd6, 0x23, 0xe5, 0xd9, 0xe2, 0xbc, 0x6d, 0xb0, 0x08, - 0x8b, 0x2c, 0x46, 0xec, 0x88, 0x11, 0xe0, 0x48, 0xab, 0xcf, 0xba, 0x7f, - 0x86, 0x5f, 0x76, 0xe4, 0x03, 0x0d, 0xd9, 0x85, 0xda, 0x37, 0x60, 0xd8, - 0x3a, 0x51, 0x3a, 0x38, 0x20, 0x14, 0x07, 0xe9, 0xc7, 0x76, 0xe8, 0x09, - 0x3b, 0x49, 0xa8, 0x3e, 0x1c, 0x37, 0xf6, 0x54, 0x43, 0x73, 0x11, 0xa4, - 0x26, 0xe3, 0x69, 0xe5, 0x7b, 0x65, 0x82, 0xa6, 0x4a, 0xc9, 0xe5, 0x89, - 0x53, 0x6e, 0x83, 0x0d, 0xdd, 0x73, 0x2f, 0x44, 0xe5, 0x25, 0x28, 0x2f, - 0x5a, 0x7b, 0xf4, 0x52, 0x4b, 0x42, 0x8d, 0x0e, 0x56, 0x16, 0x03, 0xc1, - 0xbd, 0x82, 0xab, 0xaa, 0xed, 0xd1, 0x54, 0x17, 0xe9, 0x4f, 0x89, 0xe5, - 0xe0, 0x94, 0x86, 0x41, 0xb5, 0x8b, 0xf5, 0x35, 0x1b, 0xeb, 0x53, 0x11, - 0x4d, 0xc4, 0x48, 0x24, 0x4e, 0x3d, 0x9b, 0x7b, 0x73, 0xaa, 0xdc, 0x7a, - 0x6b, 0x09, 0x72, 0xe3, 0xab, 0x4c, 0x05, 0x91, 0x97, 0x13, 0xca, 0xb8, - 0x44, 0xf9, 0x06, 0x4d, 0xd2, 0x68, 0x6f, 0x32, 0x29, 0x84, 0xe0, 0x8c, - 0x5a, 0x80, 0x37, 0x1e, 0x1d, 0x3b, 0x88, 0xf9, 0x15, 0x87, 0xcd, 0xbf, - 0x74, 0x21, 0xca, 0x50, 0x73, 0xb4, 0xe7, 0x90, 0x08, 0xf9, 0xbb, 0x25, - 0xb0, 0xf8, 0xc7, 0xc8, 0x9b, 0x59, 0xb3, 0x21, 0x08, 0xf0, 0x95, 0x9a, - 0xab, 0x4d, 0x33, 0x1d, 0xc6, 0x6a, 0xa6, 0x56, 0xeb, 0xd9, 0x2f, 0x9a, - 0x79, 0x8b, 0x7d, 0x0b, 0xfb, 0x3b, 0xef, 0x0d, 0x49, 0xe1, 0x40, 0xc2, - 0x22, 0xf3, 0x8f, 0x26, 0x6a, 0xa8, 0xb9, 0xf2, 0xf5, 0x72, 0x85, 0x7d, - 0xaf, 0xbb, 0xeb, 0xf3, 0xbb, 0xff, 0xbd, 0x78, 0x05, 0xb7, 0xaa, 0xba, - 0xb9, 0xc4, 0x3e, 0x6f, 0xb9, 0x4c, 0xe7, 0xb8, 0x62, 0x2f, 0x90, 0x04, - 0x97, 0xdf, 0x86, 0x94, 0xb0, 0xdd, 0xe0, 0xc8, 0x13, 0x9e, 0xc0, 0x3a, - 0xb7, 0xf1, 0x94, 0x52, 0xd4, 0x05, 0x61, 0x0b, 0x77, 0xf1, 0x75, 0x13, - 0xfc, 0xa9, 0xaa, 0x3b, 0x43, 0x19, 0x11, 0xf1, 0xce, 0x15, 0xd5, 0x5f, - 0xef, 0x6f, 0x5e, 0x8a, 0xb2, 0x03, 0xe4, 0x12, 0x81, 0x54, 0x1c, 0x25, - 0xb0, 0xb9, 0xfc, 0xab, 0xa9, 0xcf, 0x00, 0x3f, 0xb0, 0x13, 0xc4, 0x25, - 0x22, 0x26, 0x75, 0xde, 0x14, 0xc6, 0x82, 0xe9, 0x52, 0x9d, 0x19, 0xab, - 0x45, 0xc0, 0xa6, 0xdc, 0xb0, 0xdc, 0x3d, 0xd2, 0x4a, 0x50, 0x3f, 0xd1, - 0xda, 0x05, 0x75, 0x3d, 0x64, 0x16, 0xe9, 0xc0, 0x3b, 0xe5, 0xbd, 0xc2, - 0x92, 0x16, 0x17, 0xca, 0xb8, 0x07, 0x21, 0xcc, 0x61, 0x77, 0x48, 0x6c, - 0x19, 0x35, 0xec, 0x99, 0x2f, 0x3d, 0xcc, 0xc3, 0xbd, 0xd3, 0x92, 0x07, - 0xa6, 0x50, 0x58, 0xea, 0xa4, 0xc7, 0x90, 0x0b, 0xc1, 0xb2, 0x98, 0x1e, - 0x5c, 0xe1, 0x33, 0xf3, 0xa4, 0x0b, 0xcf, 0xfb, 0xe5, 0x45, 0xbf, 0x2b, - 0xb0, 0x4a, 0x5b, 0xa2, 0x19, 0x8c, 0xbc, 0x71, 0x1e, 0x53, 0x37, 0xbb, - 0x77, 0xd6, 0xa4, 0x38, 0x02, 0x6a, 0xa0, 0x55, 0x36, 0x9d, 0xb4, 0xcd, - 0x8d, 0xcb, 0x80, 0xc6, 0x48, 0x63, 0x37, 0x23, 0x39, 0x48, 0x26, 0xfb, - 0x59, 0x75, 0x1b, 0x3a, 0x01, 0xf0, 0x0b, 0xab, 0x56, 0x48, 0x8a, 0x4d, - 0x35, 0x15, 0x5f, 0xf3, 0xa3, 0xa2, 0x54, 0xf8, 0x51, 0xbe, 0x48, 0x40, - 0x1f, 0xa8, 0x5c, 0xb9, 0x79, 0x4a, 0xcf, 0x1c, 0xd5, 0xa6, 0xa2, 0x47, - 0xa7, 0xf1, 0x77, 0x31, 0x45, 0x40, 0x4e, 0x9e, 0xec, 0x33, 0xa1, 0x2e, - 0xc7, 0x6b, 0x73, 0x51, 0xd4, 0x70, 0x4a, 0x05, 0x05, 0x97, 0x35, 0x28, - 0x25, 0x07, 0xad, 0xa4, 0x17, 0x9f, 0x8e, 0x70, 0x37, 0xd6, 0xa3, 0x21, - 0x82, 0x8d, 0x53, 0x73, 0x6f, 0x64, 0x7a, 0xe1, 0x8b, 0xbe, 0x38, 0x25, - 0x56, 0xdf, 0x8c, 0xa5, 0x17, 0x90, 0x40, 0xa6, 0xab, 0xb7, 0x22, 0xbc, - 0x08, 0xd7, 0xeb, 0x12, 0x1b, 0x77, 0x8b, 0x1e, 0xa3, 0xc5, 0x37, 0x81, - 0x49, 0x53, 0x2e, 0x86, 0x4c, 0x33, 0xe7, 0x66, 0x6d, 0x2e, 0xa5, 0x69, - 0xd7, 0xc3, 0x69, 0x9b, 0x4a, 0xb2, 0xb9, 0x55, 0x89, 0x15, 0xdb, 0x2a, - 0x64, 0xcd, 0xef, 0x76, 0x5a, 0x0a, 0xd2, 0x3f, 0x4e, 0x52, 0xa7, 0x56, - 0x5f, 0x52, 0xb2, 0xb7, 0xff, 0x1e, 0x27, 0x84, 0xa7, 0x6b, 0xc3, 0x35, - 0x30, 0x17, 0x3a, 0x8e, 0xb4, 0x1a, 0x29, 0x73, 0x01, 0x00, 0x00, 0xc0, - 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, - 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, - 0x0c, 0x84, 0x44, 0x6a, 0x7e, 0x2b, 0x53, 0x37, 0x29, 0xb8, 0xc5, 0x37, - 0x9c, 0x05, 0x9f, 0x7b, 0xe6, 0xe5, 0x44, 0xcf, 0xdf, 0x1a, 0x22, 0x30, - 0x06, 0x5a, 0x4f, 0x4f, 0x19, 0x9f, 0x12, 0xf5, 0xb0, 0xb4, 0xd2, 0x34, - 0x1e, 0x13, 0xa3, 0x44, 0xeb, 0x17, 0x01, 0x54, 0xc4, 0x92, 0x81, 0x7d, - 0x66, 0x69, 0x58, 0x65, 0x48, 0x4b, 0x26, 0x32, 0x51, 0x1e, 0x08, 0xbe, - 0x36, 0x8d, 0x6f, 0xce, 0xa3, 0x0c, 0xd1, 0x09, 0x3e, 0xd7, 0x58, 0x58, - 0x2b, 0x5e, 0x7f, 0xdd, 0x47, 0x67, 0xf8, 0xa9, 0xd7, 0x65, 0x03, 0x38, - 0x1f, 0x61, 0xf9, 0x4f, 0x90, 0x0a, 0xf2, 0xac, 0xc8, 0x7c, 0x0b, 0x61, - 0xd7, 0x7a, 0xe5, 0x1f, 0x9d, 0x4b, 0x14, 0x6b, 0xdd, 0x09, 0x6a, 0x0b, - 0x58, 0xa4, 0x6f, 0xfe, 0xdb, 0x32, 0x78, 0x5c, 0x47, 0xc2, 0x9c, 0x1d, - 0xbd, 0xce, 0xa3, 0xc0, 0x11, 0xc0, 0xab, 0x4e, 0x37, 0xac, 0x65, 0x5d, - 0x03, 0x4c, 0x29, 0x61, 0x47, 0xab, 0x4d, 0xff, 0xff, 0x6b, 0xc9, 0x13, - 0x95, 0xcb, 0xa0, 0x0a, 0xa2, 0x86, 0x0c, 0xbe, 0xdd, 0x3f, 0xf3, 0x7d, - 0x55, 0x1c, 0xd2, 0x24, 0x23, 0xe7, 0x8b, 0x3e, 0x44, 0xe9, 0x4b, 0x74, - 0x26, 0xb2, 0xd1, 0xb2, 0x6c, 0x0f, 0x6b, 0x84, 0x21, 0x6c, 0xa1, 0x30, - 0x28, 0xd6, 0x45, 0x05, 0x18, 0xb7, 0x49, 0x30, 0xac, 0x32, 0x1c, 0x25, - 0x47, 0xcd, 0xac, 0x36, 0x70, 0x90, 0x39, 0xc7, 0x7c, 0x44, 0x35, 0x2c, - 0x80, 0x28, 0x79, 0xac, 0xea, 0x87, 0x7f, 0x66, 0x3d, 0x80, 0x0d, 0x63, - 0x48, 0x82, 0xc7, 0x86, 0xb0, 0x88, 0x90, 0xd8, 0xfd, 0xe0, 0xa9, 0x5b, - 0x74, 0x0d, 0xc0, 0x64, 0xd8, 0x04, 0xbc, 0x53, 0x45, 0x79, 0x40, 0xb8, - 0x59, 0xe7, 0x5f, 0x95, 0xa0, 0x50, 0x9b, 0xb8, 0x73, 0xe4, 0xbc, 0xa2, - 0x5f, 0x74, 0x24, 0x64, 0xba, 0x57, 0x92, 0x21, 0x6a, 0x78, 0x52, 0xc6, - 0x1e, 0x9f, 0x43, 0x4e, 0xfa, 0x53, 0x71, 0xac, 0xc8, 0x39, 0x95, 0x4a, - 0xed, 0x21, 0xe8, 0x96, 0xa7, 0xa2, 0xab, 0x9d, 0xa5, 0x7c, 0x2c, 0x85, - 0xa2, 0x7b, 0x91, 0x6d, 0x8d, 0x73, 0x4c, 0x46, 0x5a, 0x96, 0x82, 0xea, - 0x1c, 0xd7, 0x9f, 0xf7, 0x63, 0xaf, 0xbe, 0x06, 0x12, 0x1c, 0x47, 0xbd, - 0x30, 0x29, 0xbe, 0x5a, 0x9f, 0xab, 0x08, 0x4d, 0x52, 0x96, 0xc1, 0x54, - 0x5e, 0x89, 0x2b, 0x65, 0x3d, 0xc4, 0xbe, 0x63, 0x0d, 0xbd, 0x0a, 0xe3, - 0x46, 0xd7, 0x51, 0xad, 0xc9, 0x3f, 0x84, 0x1c, 0x42, 0x10, 0xc9, 0xbe, - 0x27, 0xaf, 0xd2, 0x5e, 0x79, 0xaf, 0x00, 0x09, 0x2d, 0x90, 0x08, 0x49, - 0x91, 0xa1, 0x26, 0x5a, 0xe4, 0x18, 0x4a, 0x77, 0x75, 0x41, 0xe0, 0xcf, - 0xb3, 0xa2, 0x9c, 0x8b, 0x41, 0x77, 0x15, 0xf8, 0xab, 0xb0, 0xab, 0xf5, - 0xa3, 0xc7, 0x57, 0x3b, 0x32, 0x10, 0x1f, 0xe6, 0xfa, 0x3b, 0x8d, 0x10, - 0x07, 0x43, 0xc6, 0x1c, 0x86, 0x61, 0xd6, 0xc0, 0x0b, 0xf6, 0x85, 0x5b, - 0x3f, 0xea, 0x4f, 0x4e, 0xc6, 0xfc, 0x37, 0x0a, 0x5f, 0xee, 0x63, 0x73, - 0x59, 0x0e, 0x02, 0x81, 0xb9, 0xac, 0x3e, 0x5d, 0xbe, 0x47, 0xb4, 0x15, - 0xb2, 0x58, 0x06, 0x96, 0x1a, 0x1c, 0x14, 0x4f, 0xb5, 0xec, 0x91, 0xee, - 0x3d, 0x88, 0x2f, 0x11, 0x80, 0x9a, 0x3c, 0x23, 0x4c, 0x19, 0xc3, 0xc1, - 0x46, 0xd6, 0xdd, 0xd9, 0xab, 0xdf, 0x6f, 0x50, 0x74, 0x81, 0x35, 0x81, - 0x63, 0x92, 0x9a, 0xa2, 0xf1, 0x18, 0xd4, 0x87, 0x02, 0xfc, 0x73, 0x49, - 0xe1, 0x2e, 0xfe, 0x0e, 0x68, 0x93, 0x20, 0x38, 0x75, 0xe9, 0xb7, 0x76, - 0xac, 0x6a, 0xc4, 0xf6, 0xb6, 0x4c, 0xec, 0xa7, 0x15, 0xc6, 0x3c, 0x70, - 0x63, 0xb7, 0x4e, 0x08, 0x72, 0x99, 0x72, 0xc1, 0xd1, 0x51, 0x84, 0x72, - 0xf3, 0xe7, 0x1c, 0x60, 0xe6, 0x15, 0xbc, 0xd3, 0x54, 0xc1, 0x4e, 0xe7, - 0x74, 0xda, 0x3f, 0xef, 0xde, 0x08, 0x4f, 0x8d, 0x81, 0xa4, 0x64, 0x3a, - 0xa5, 0xe2, 0xe9, 0xdc, 0x92, 0x40, 0x66, 0x47, 0x9c, 0xc3, 0x73, 0x69, - 0x70, 0x04, 0xa2, 0x99, 0x37, 0x20, 0x61, 0x71, 0xe6, 0xa5, 0x77, 0xb6, - 0x7e, 0x41, 0xe2, 0xee, 0x98, 0xd6, 0xa7, 0x8a, 0xba, 0x79, 0x0e, 0x94, - 0xd6, 0x40, 0x33, 0x1e, 0xc8, 0x26, 0x06, 0xa6, 0xa8, 0x34, 0x54, 0xa8, - 0x6d, 0xe5, 0x44, 0x41, 0x82, 0x7b, 0x40, 0x83, 0x4b, 0x3e, 0x0e, 0x17, - 0x17, 0x56, 0x48, 0xbe, 0xc4, 0x0f, 0xbd, 0xae, 0xd0, 0x85, 0xec, 0x5e, - 0x8c, 0xc4, 0x03, 0x4d, 0xf4, 0x5a, 0x6d, 0xc4, 0xa7, 0xb3, 0x0d, 0x45, - 0xf5, 0xf0, 0xbf, 0xba, 0xea, 0xab, 0xda, 0x24, 0x1b, 0xf6, 0xf1, 0x01, - 0xea, 0x70, 0xcc, 0x86, 0xd7, 0x1c, 0x48, 0x34, 0xb3, 0xa9, 0xc2, 0x13, - 0xee, 0x7d, 0xfe, 0x31, 0x5c, 0xed, 0xc8, 0xae, 0x2e, 0x2b, 0x81, 0x4b, - 0xc8, 0x19, 0x98, 0xd1, 0xe8, 0x32, 0x93, 0x76, 0xe2, 0x91, 0xe7, 0xbd, - 0xed, 0xb7, 0x8d, 0x61, 0x97, 0xa1, 0x5c, 0x9b, 0x02, 0xaa, 0x7b, 0x41, - 0xf2, 0xb6, 0x91, 0xa9, 0x53, 0xa0, 0x4c, 0xcd, 0x3d, 0x02, 0x3d, 0xd2, - 0x04, 0x34, 0xa6, 0x51, 0xb4, 0x85, 0x93, 0xfe, 0xbd, 0x0f, 0x36, 0x67, - 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, - 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, - 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xed, 0x5c, 0xac, 0x29, - 0x81, 0x6f, 0x0a, 0x1a, 0xa3, 0xad, 0x0d, 0x8b, 0x62, 0xdc, 0x9d, 0x9d, - 0x62, 0x8b, 0x2e, 0x8a, 0x66, 0xb0, 0xd6, 0xb6, 0x11, 0x03, 0x49, 0xdb, - 0xa0, 0x4c, 0xb6, 0x0f, 0x6d, 0x5a, 0x3a, 0xb2, 0xe9, 0x7a, 0x82, 0x68, - 0xcb, 0xb4, 0x74, 0x57, 0x96, 0x62, 0x0d, 0x18, 0x99, 0x4f, 0x55, 0x28, - 0x2d, 0x09, 0x55, 0x2e, 0xe1, 0xb3, 0x82, 0xd4, 0x5b, 0xe8, 0xd1, 0x4a, - 0xb4, 0x58, 0xbd, 0x13, 0xbf, 0x70, 0xe2, 0xe1, 0x14, 0x01, 0xdd, 0x77, - 0xda, 0x39, 0x58, 0x5f, 0xd7, 0xed, 0x71, 0x37, 0x84, 0x8a, 0xe8, 0x1b, - 0xd6, 0xd9, 0x21, 0x8a, 0x55, 0x7b, 0xcb, 0x1e, 0x37, 0xf8, 0x55, 0x8d, - 0x62, 0xb7, 0xcd, 0x7c, 0xb5, 0xcf, 0x7e, 0x67, 0x9d, 0xda, 0xd7, 0xdc, - 0x18, 0x1c, 0xde, 0xc4, 0x7c, 0x96, 0xec, 0x02, 0x93, 0x53, 0xf9, 0xdc, - 0x7d, 0x32, 0x00, 0x46, 0xdf, 0xe4, 0xd0, 0x7a, 0x1d, 0x24, 0x71, 0x4f, - 0xa6, 0x6a, 0x22, 0x58, 0x4b, 0xa5, 0xa5, 0x7f, 0x06, 0x67, 0xc0, 0xab, - 0x3d, 0xe3, 0xec, 0xea, 0x19, 0x10, 0x7e, 0x44, 0x27, 0xa0, 0x9e, 0x63, - 0x72, 0xb6, 0x98, 0x53, 0x40, 0xd7, 0xe2, 0x7f, 0x95, 0xb6, 0x3f, 0xb9, - 0x47, 0x71, 0xe2, 0x7d, 0xa4, 0xdd, 0xd3, 0x9f, 0x8d, 0x84, 0x46, 0x3a, - 0x81, 0x98, 0xff, 0x0d, 0xdc, 0x5e, 0x26, 0x64, 0x86, 0x0e, 0x9c, 0xd9, - 0xd0, 0x34, 0xd9, 0x94, 0xea, 0xba, 0x1d, 0x6b, 0x23, 0xf6, 0xe5, 0xbd, - 0x3e, 0xe7, 0xe1, 0x18, 0x62, 0xb1, 0xfa, 0x12, 0x0b, 0x8d, 0xf8, 0xc5, - 0xa5, 0xe3, 0xb9, 0x41, 0xf0, 0xbb, 0x24, 0xc9, 0xa4, 0x7d, 0x24, 0xd4, - 0x9c, 0xb1, 0x6b, 0x86, 0xb9, 0x5e, 0xc9, 0x1d, 0x96, 0x3e, 0x09, 0x25, - 0xbe, 0xd0, 0xb4, 0x4c, 0x3d, 0xe5, 0x4c, 0xe4, 0xa6, 0x65, 0x94, 0x21, - 0x8d, 0xd7, 0x5d, 0x07, 0x43, 0xd5, 0x3f, 0xa1, 0xdc, 0x38, 0x21, 0x4c, - 0xb2, 0xde, 0x7d, 0x57, 0xb1, 0x49, 0x36, 0xe1, 0xf4, 0x30, 0x2b, 0x25, - 0x2c, 0x6a, 0xba, 0x6e, 0x96, 0x60, 0xa1, 0x63, 0x4f, 0x60, 0x86, 0x3e, - 0x63, 0xf6, 0xa8, 0xe2, 0xbe, 0x76, 0xca, 0xc3, 0x1f, 0x53, 0xd5, 0xd5, - 0x6e, 0x15, 0x99, 0xe3, 0xab, 0xce, 0x60, 0xe0, 0x13, 0x2e, 0x23, 0x9c, - 0x84, 0x8a, 0xf6, 0x3f, 0x43, 0x07, 0x1d, 0x6e, 0x62, 0x52, 0xea, 0x61, - 0xc0, 0xf9, 0x02, 0x8c, 0x5b, 0x13, 0xaf, 0x38, 0x88, 0x4d, 0x9b, 0xf1, - 0x84, 0x7e, 0x18, 0x55, 0xdd, 0x7d, 0xc7, 0x34, 0x42, 0xf8, 0xf1, 0x0d, - 0x01, 0x99, 0x88, 0xce, 0xba, 0x39, 0x50, 0x5d, 0x22, 0xd1, 0xa0, 0x6b, - 0xad, 0x29, 0x40, 0x8f, 0xa6, 0x61, 0xec, 0xc8, 0x54, 0x6e, 0x9c, 0x2d, - 0x9e, 0xba, 0xd8, 0x00, 0xe5, 0xef, 0x24, 0x4c, 0x23, 0xbf, 0x77, 0xf3, - 0xc1, 0x98, 0xf1, 0x70, 0xde, 0xd8, 0x50, 0x6b, 0xad, 0x36, 0x70, 0x6e, - 0x71, 0x95, 0x37, 0x73, 0x26, 0x27, 0xa1, 0x35, 0x28, 0x58, 0xc4, 0xa8, - 0xe6, 0xe7, 0x31, 0x06, 0xd2, 0x81, 0x89, 0xe0, 0xf2, 0xc6, 0x4f, 0x61, - 0xeb, 0x64, 0xfd, 0x95, 0x90, 0xcf, 0x47, 0x59, 0x26, 0x85, 0xb7, 0xc8, - 0xda, 0x32, 0x47, 0xcc, 0x18, 0x3c, 0x53, 0x4f, 0xe5, 0xae, 0x9e, 0x51, - 0x86, 0x54, 0x57, 0x70, 0xa4, 0x34, 0xe7, 0xa8, 0xb0, 0x14, 0x95, 0x70, - 0xa9, 0xf3, 0x5f, 0x13, 0xce, 0x41, 0x17, 0x4b, 0x35, 0x14, 0x78, 0x49, - 0x1f, 0xc6, 0x52, 0x5d, 0x4f, 0xe2, 0xe6, 0x05, 0x79, 0x60, 0xfb, 0xfc, - 0x28, 0xfa, 0x82, 0xc0, 0xac, 0xdf, 0x5b, 0x25, 0xe3, 0x1e, 0xf6, 0x7f, - 0xa2, 0x40, 0x88, 0xc1, 0x53, 0x52, 0x35, 0xe7, 0xc4, 0x0d, 0xc5, 0xae, - 0x58, 0x2a, 0xff, 0x19, 0xe8, 0x03, 0x43, 0x07, 0x2e, 0xa6, 0x32, 0x04, - 0x17, 0x5e, 0x5a, 0x6f, 0x4c, 0xcf, 0x9b, 0x88, 0x98, 0xaf, 0x54, 0x1a, - 0x6d, 0x16, 0xa0, 0xf8, 0x3b, 0x24, 0x7b, 0x9e, 0x16, 0xe1, 0xd0, 0x54, - 0x28, 0x54, 0x5a, 0x45, 0xde, 0x8d, 0x86, 0xd3, 0x84, 0x32, 0xf3, 0x5e, - 0x5d, 0x20, 0xc7, 0xd1, 0x70, 0x78, 0x72, 0x72, 0x7a, 0x4e, 0x55, 0xb6, - 0x01, 0xa3, 0xaf, 0x74, 0xc8, 0x41, 0x37, 0x70, 0xe9, 0x99, 0xef, 0x4a, - 0xf2, 0xca, 0xc9, 0x8a, 0xb0, 0xbf, 0x44, 0x67, 0x1e, 0x01, 0x27, 0xa0, - 0x5e, 0xe5, 0xbf, 0xb8, 0x8c, 0x88, 0x0c, 0x51, 0xb7, 0x79, 0xf2, 0x58, - 0x89, 0xcb, 0xdf, 0x61, 0xb6, 0x9f, 0xd0, 0x23, 0x6f, 0x6a, 0xe0, 0x4a, - 0x23, 0xb3, 0x37, 0x41, 0x0c, 0x84, 0xba, 0x52, 0x26, 0x6e, 0xce, 0x7f, - 0xcb, 0xe7, 0x76, 0xe8, 0xa3, 0xb5, 0x8a, 0xac, 0xe7, 0x01, 0xdc, 0x49, - 0x11, 0xcf, 0xbd, 0x82, 0x2b, 0x4d, 0x52, 0x38, 0xbb, 0xa7, 0xa5, 0x8b, - 0xeb, 0x9b, 0x75, 0x16, 0xa7, 0xfc, 0xc9, 0xfe, 0x78, 0xd7, 0x0d, 0x94, - 0xc0, 0x15, 0xac, 0xa8, 0x7e, 0x20, 0x65, 0x1f, 0xba, 0x12, 0x50, 0xd5, - 0x7d, 0x62, 0xbd, 0xff, 0xdd, 0xe1, 0x11, 0x78, 0x98, 0x84, 0xf8, 0x5a, - 0xe0, 0xa1, 0xa7, 0x0a, 0xc8, 0xb3, 0xc4, 0x21, 0xe2, 0x5c, 0x8f, 0xa5, - 0x61, 0x71, 0xed, 0x22, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, - 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, - 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, - 0x87, 0xa0, 0x5e, 0x72, 0xfb, 0xd7, 0x38, 0xa3, 0x94, 0x9f, 0x44, 0x4c, - 0x32, 0x1b, 0x8a, 0xbc, 0xd0, 0xcc, 0x1e, 0xb1, 0xb1, 0x50, 0x43, 0xbf, - 0xfd, 0x79, 0x02, 0x1f, 0x40, 0x49, 0xca, 0x06, 0xe9, 0x68, 0xb1, 0xb3, - 0xb9, 0x95, 0x6b, 0xd8, 0x4b, 0xa9, 0xa4, 0xae, 0x91, 0xa5, 0xc0, 0x45, - 0xb7, 0x00, 0x8d, 0xbe, 0xf4, 0x23, 0x81, 0x1d, 0xbc, 0xbf, 0xb8, 0xb4, - 0x69, 0xb2, 0x76, 0x03, 0xb2, 0x16, 0xbd, 0x69, 0x84, 0x85, 0xfa, 0x30, - 0xa4, 0xd2, 0xc2, 0x93, 0x83, 0x96, 0xbb, 0x7f, 0x9f, 0x61, 0xc1, 0xa3, - 0xd8, 0xef, 0xdb, 0xea, 0x14, 0x4e, 0x67, 0xe1, 0x36, 0xa1, 0x9b, 0x1e, - 0x52, 0x98, 0x6f, 0x1f, 0x60, 0xaf, 0xa2, 0xac, 0x54, 0xac, 0x46, 0x45, - 0x96, 0x96, 0x02, 0x7e, 0xc7, 0xfa, 0xba, 0x97, 0x3f, 0xd5, 0xd1, 0x38, - 0x6d, 0xc2, 0x29, 0xf7, 0x09, 0x08, 0x5a, 0x1c, 0x5b, 0x48, 0x09, 0x73, - 0xf6, 0x15, 0x04, 0x93, 0x0c, 0x97, 0x08, 0x01, 0x09, 0x09, 0x9f, 0x17, - 0xb8, 0xc7, 0xaa, 0xf6, 0x2b, 0x2d, 0xda, 0xc7, 0xc4, 0xf7, 0xf2, 0xd5, - 0x5b, 0x57, 0xba, 0x55, 0x7f, 0xcf, 0x5c, 0x8f, 0x80, 0x11, 0x2f, 0xff, - 0xf9, 0x12, 0x28, 0xce, 0x28, 0xa7, 0x7d, 0xfb, 0xa3, 0xae, 0xca, 0xdd, - 0xcf, 0x10, 0x03, 0x2c, 0xdc, 0x9e, 0x3e, 0x74, 0x55, 0x4b, 0xcd, 0x3f, - 0x88, 0x68, 0x05, 0xdc, 0xa4, 0x08, 0x62, 0x1f, 0x4f, 0x34, 0x12, 0x25, - 0x16, 0xc5, 0xac, 0xa4, 0xca, 0x3f, 0xb1, 0xd1, 0x58, 0xb1, 0x9c, 0x86, - 0x2a, 0xeb, 0xdf, 0x1a, 0x46, 0x77, 0x4e, 0x1c, 0x45, 0x4c, 0x6b, 0x66, - 0x87, 0x6e, 0x86, 0xa3, 0x79, 0x1f, 0xb7, 0x3e, 0xf7, 0x5c, 0x24, 0xb5, - 0x5d, 0x74, 0x49, 0x20, 0x67, 0xb0, 0xb3, 0xcc, 0x13, 0xe1, 0x7d, 0xeb, - 0x27, 0xbe, 0x98, 0x06, 0x00, 0x9a, 0x20, 0x6e, 0x7a, 0x26, 0xd6, 0x9a, - 0x5e, 0xa8, 0xf0, 0x58, 0xe0, 0x39, 0x32, 0xdd, 0xd1, 0xd0, 0x5c, 0x7f, - 0x38, 0x74, 0xc2, 0xc3, 0x0a, 0xfc, 0xea, 0x7c, 0xc2, 0x62, 0xc0, 0x5f, - 0x75, 0x8f, 0x47, 0xe9, 0xda, 0x5d, 0xfd, 0x3e, 0x76, 0xf1, 0x78, 0xc6, - 0x8a, 0xca, 0xe2, 0x21, 0x49, 0x91, 0xb8, 0x81, 0x14, 0x97, 0x22, 0xab, - 0xaf, 0x8b, 0x44, 0xd6, 0x72, 0x5e, 0xe3, 0x5f, 0x57, 0x79, 0x94, 0x75, - 0xcc, 0x04, 0x6f, 0x81, 0xda, 0xe3, 0x2a, 0x11, 0xe8, 0xce, 0x50, 0x54, - 0xca, 0x8d, 0x0d, 0x0c, 0x51, 0x4d, 0x19, 0x30, 0x4c, 0x25, 0x63, 0x1f, - 0xc1, 0x95, 0x5d, 0x65, 0x3e, 0xda, 0x88, 0x05, 0xe8, 0xc9, 0xae, 0x1d, - 0x34, 0xfa, 0xa9, 0x49, 0x64, 0xa8, 0xae, 0x62, 0xa4, 0xf0, 0x57, 0x4b, - 0x35, 0x54, 0x6f, 0x55, 0x6f, 0xd5, 0xb5, 0x45, 0xe6, 0xb6, 0xd3, 0x61, - 0xb0, 0x6e, 0x0a, 0x10, 0x77, 0xa6, 0x0d, 0x1b, 0xc6, 0xb6, 0xbd, 0xc9, - 0xed, 0xd4, 0x22, 0x88, 0x40, 0x42, 0x23, 0x53, 0xae, 0x4e, 0xfc, 0x88, - 0xfd, 0x55, 0x31, 0x89, 0xd1, 0xe4, 0x4c, 0x38, 0x3d, 0xec, 0xde, 0x53, - 0x5d, 0xb2, 0x57, 0x6b, 0xf7, 0xaa, 0x12, 0x5b, 0xce, 0x55, 0x1f, 0x76, - 0x04, 0x36, 0xbd, 0x82, 0x5e, 0x1c, 0xce, 0x89, 0x6d, 0xb3, 0x97, 0x4f, - 0xa0, 0x13, 0xd0, 0x41, 0xfb, 0x35, 0x94, 0xc8, 0x77, 0x94, 0x1d, 0x93, - 0xfa, 0xfc, 0x53, 0x89, 0xb4, 0xf3, 0xa8, 0x3b, 0xcc, 0xa2, 0x63, 0x15, - 0x19, 0xea, 0x51, 0x1f, 0x5f, 0xa9, 0xd0, 0x6f, 0xd9, 0xef, 0xa9, 0x42, - 0x47, 0xee, 0xd4, 0x6d, 0xf4, 0x6b, 0xac, 0x33, 0x1e, 0x70, 0xe6, 0xec, - 0xd7, 0xd6, 0x73, 0x0d, 0x53, 0x38, 0x53, 0xa8, 0xca, 0x96, 0x3d, 0x46, - 0xa2, 0x23, 0x3f, 0x73, 0x3e, 0x74, 0x50, 0x2c, 0xd5, 0x69, 0x4f, 0x57, - 0x71, 0x04, 0x64, 0x89, 0xe7, 0xda, 0x7f, 0x67, 0x80, 0xfe, 0x02, 0x8f, - 0x1f, 0x8a, 0xfa, 0xef, 0x50, 0xa1, 0xb2, 0x85, 0x3b, 0x0e, 0x09, 0x59, - 0xac, 0xbd, 0x1e, 0x07, 0x3d, 0x5b, 0x6b, 0x78, 0xf6, 0xc8, 0x0f, 0x17, - 0x9b, 0xf2, 0xfd, 0xf4, 0x9a, 0x4d, 0x8c, 0x6c, 0x63, 0xfb, 0x44, 0x3a, - 0xaf, 0xf7, 0xe1, 0xfa, 0x05, 0x44, 0xa0, 0xa0, 0xea, 0x24, 0x02, 0x50, - 0xcd, 0xdf, 0xd6, 0x1a, 0xf1, 0x06, 0x6c, 0xa8, 0x5a, 0xb0, 0x9b, 0xae, - 0x30, 0xb2, 0x83, 0xf1, 0x91, 0x6a, 0x04, 0xd1, 0xc1, 0xd0, 0x21, 0xa8, - 0x91, 0xdc, 0x02, 0x61, 0xf4, 0x11, 0xb5, 0x3b, 0xa7, 0x95, 0xc0, 0xdb, - 0xd2, 0x9c, 0xbd, 0x56, 0x1a, 0x3a, 0x5c, 0xb8, 0xbc, 0x47, 0xed, 0x1e, - 0xf1, 0x20, 0x6e, 0x53, 0x26, 0xfd, 0x3f, 0xb5, 0xfe, 0xca, 0xa0, 0x4c, - 0x88, 0x33, 0x16, 0x47, 0x0b, 0x6d, 0x55, 0xd4, 0x9a, 0x61, 0x7a, 0x9d, - 0xea, 0xfc, 0xdf, 0x1c, 0x5f, 0x00, 0x6d, 0x0f, 0x9a, 0xe4, 0x7d, 0x21, - 0x44, 0xef, 0xad, 0x90, 0x17, 0xd4, 0x0d, 0x75, 0xb6, 0xc9, 0x9b, 0x56, - 0xe4, 0xaa, 0xd5, 0xd9, 0x2c, 0x11, 0x7c, 0xee, 0x22, 0xda, 0x73, 0x60, - 0xc3, 0x18, 0xee, 0x16, 0x44, 0xc2, 0x01, 0x8a, 0xab, 0xe5, 0x0e, 0x68, - 0x7d, 0xd6, 0xb9, 0xef, 0x10, 0x0d, 0x35, 0x63, 0x01, 0x00, 0x00, 0xc0, - 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, - 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, - 0x0c, 0x84, 0x44, 0x6a, 0x78, 0x4f, 0xac, 0x47, 0x19, 0xc7, 0x8d, 0xd1, - 0x0a, 0x4a, 0x93, 0xc7, 0xbf, 0xa6, 0xbc, 0x45, 0x7e, 0xff, 0xb0, 0xaf, - 0x8d, 0x2b, 0x4d, 0x96, 0x31, 0x7e, 0x04, 0xc0, 0xe6, 0x6c, 0x6a, 0x34, - 0x59, 0x84, 0xc0, 0x8a, 0x28, 0x0a, 0xdb, 0xae, 0xd9, 0xc2, 0x4e, 0x62, - 0x98, 0x9d, 0x3f, 0x4f, 0xbf, 0xe4, 0x9e, 0x0d, 0x80, 0x84, 0x19, 0xce, - 0x8e, 0xe1, 0xb8, 0xc6, 0xb6, 0x81, 0x33, 0x4d, 0xb8, 0x87, 0x4f, 0xef, - 0x40, 0xa6, 0x94, 0xf8, 0xe3, 0x90, 0xaf, 0xfc, 0x6e, 0x42, 0x6b, 0x48, - 0x6c, 0x07, 0x86, 0xa9, 0xdb, 0x5f, 0x18, 0x15, 0xb8, 0x83, 0x5e, 0x92, - 0x7a, 0x5a, 0x5e, 0x13, 0x43, 0x80, 0x23, 0xbc, 0x78, 0xda, 0xb6, 0x04, - 0x70, 0x37, 0x6c, 0x93, 0x56, 0x3d, 0x98, 0x72, 0xeb, 0xdc, 0xd2, 0x6c, - 0x1a, 0x72, 0x44, 0x4f, 0x46, 0x4f, 0xad, 0xfb, 0x8f, 0x2a, 0xa4, 0x35, - 0xa8, 0x44, 0xbf, 0x03, 0x8b, 0xd4, 0xa6, 0x0c, 0x9d, 0x6d, 0x92, 0x7d, - 0xb6, 0xec, 0x6e, 0x18, 0x6c, 0x75, 0x6b, 0x2f, 0x1d, 0x80, 0xfb, 0x31, - 0x26, 0x00, 0xff, 0x9c, 0xa4, 0x72, 0xeb, 0x3a, 0xd7, 0xae, 0x6f, 0xa0, - 0x5a, 0x38, 0xf5, 0x96, 0xea, 0x5b, 0x12, 0x7e, 0xba, 0xe3, 0x93, 0xdd, - 0x4d, 0xc3, 0x30, 0x06, 0xb1, 0x88, 0xc0, 0x8f, 0x5d, 0x18, 0xb1, 0xe9, - 0x34, 0xa0, 0x91, 0x5f, 0x2f, 0x06, 0xe3, 0x37, 0x15, 0xad, 0xec, 0x36, - 0xfc, 0xb5, 0xd9, 0x61, 0x40, 0xb6, 0x98, 0x37, 0x6e, 0x2d, 0xc0, 0x69, - 0x5c, 0x19, 0x24, 0x83, 0xcc, 0xc1, 0x83, 0xbb, 0x49, 0x8a, 0x61, 0x2c, - 0xa8, 0xe6, 0x68, 0x4d, 0x18, 0x31, 0x71, 0x85, 0xd3, 0xa2, 0x1e, 0xb6, - 0x74, 0x9c, 0xeb, 0xdb, 0x57, 0x54, 0x89, 0x35, 0x08, 0x0e, 0x09, 0x6e, - 0x10, 0x60, 0x74, 0xfa, 0xab, 0xf9, 0xfa, 0x62, 0x8d, 0x77, 0xa5, 0x04, - 0xbc, 0xc3, 0xe3, 0x57, 0x83, 0xba, 0x08, 0x5c, 0xc5, 0x9f, 0x13, 0xdc, - 0x4b, 0x9a, 0x1c, 0x79, 0x93, 0xf8, 0xc7, 0xbf, 0xed, 0x45, 0xf2, 0xbd, - 0xbd, 0x0c, 0xcb, 0x1c, 0xd6, 0xf8, 0xf2, 0xb7, 0xad, 0x6c, 0x4d, 0xc7, - 0xa6, 0xf7, 0xd7, 0x5e, 0x0d, 0x24, 0x08, 0x94, 0x90, 0x35, 0x7d, 0x14, - 0xcb, 0xdf, 0x33, 0xce, 0xcf, 0x6c, 0x90, 0x6a, 0x81, 0x00, 0x6a, 0x3c, - 0xef, 0x5c, 0x5a, 0x77, 0x3c, 0xbc, 0x2d, 0xf3, 0x49, 0xd0, 0x14, 0xbd, - 0xf7, 0xa4, 0x73, 0xeb, 0x22, 0x17, 0xcb, 0xf3, 0x70, 0x29, 0x10, 0x70, - 0xb3, 0xcb, 0xf0, 0xc7, 0xb5, 0xd3, 0xb3, 0x52, 0x23, 0x84, 0x8f, 0x20, - 0x6c, 0xd1, 0x50, 0xc9, 0x11, 0xff, 0xff, 0xc8, 0xbf, 0x2f, 0x17, 0x0e, - 0x8f, 0xfa, 0x71, 0x97, 0x1c, 0xe8, 0x09, 0xae, 0xc9, 0x52, 0x34, 0x54, - 0xe6, 0x1d, 0x62, 0x29, 0x5c, 0x20, 0x05, 0x36, 0xfa, 0x1b, 0x5f, 0x44, - 0xa2, 0x15, 0x53, 0xad, 0x92, 0xf9, 0xe2, 0x90, 0x2b, 0xa7, 0x59, 0x3c, - 0x51, 0x6c, 0xf7, 0x7a, 0x89, 0x5d, 0x46, 0xf4, 0xf4, 0x14, 0xb2, 0x31, - 0x2b, 0x7a, 0xf9, 0xc5, 0x29, 0x88, 0x89, 0xef, 0xfd, 0xa1, 0x12, 0x9f, - 0x5c, 0x0d, 0x47, 0xfe, 0x90, 0x78, 0x5b, 0xa2, 0xda, 0xaa, 0xdb, 0x88, - 0x58, 0x2b, 0x48, 0x69, 0xcb, 0xbc, 0xf8, 0x01, 0x68, 0x6b, 0x19, 0x5d, - 0x67, 0xbb, 0xb6, 0x85, 0x6c, 0x75, 0x41, 0x98, 0x41, 0xc4, 0xf7, 0xdd, - 0x53, 0x96, 0xeb, 0x29, 0xda, 0x39, 0xf5, 0x36, 0x06, 0xfb, 0xab, 0x1b, - 0xd6, 0x85, 0x0a, 0x57, 0x36, 0xe6, 0x94, 0x2a, 0xe4, 0x70, 0xc4, 0x46, - 0x0b, 0xbf, 0xf5, 0x11, 0xf8, 0x24, 0x29, 0x5a, 0xea, 0x55, 0xc1, 0xab, - 0x6b, 0xaa, 0xc5, 0xd7, 0x64, 0x9d, 0x5e, 0x59, 0x69, 0x25, 0x8d, 0x10, - 0x8e, 0xe0, 0x41, 0x1c, 0xe4, 0xba, 0xdb, 0x88, 0x5a, 0x21, 0x6e, 0xe5, - 0xc4, 0x04, 0xf6, 0xb9, 0x12, 0x00, 0x3e, 0x36, 0x75, 0xfc, 0x66, 0x78, - 0xc1, 0xf4, 0x2e, 0xb4, 0x8a, 0x3c, 0x08, 0x3e, 0x9b, 0x81, 0xf1, 0x78, - 0xcc, 0x28, 0x5b, 0xa2, 0x7d, 0xb5, 0xd8, 0xd0, 0x2d, 0x56, 0x9a, 0x40, - 0x6e, 0xad, 0xa3, 0x63, 0x4e, 0xfc, 0x84, 0xca, 0xc5, 0x9a, 0xcb, 0x52, - 0xc5, 0x8a, 0x4e, 0x26, 0xd3, 0xd6, 0xaa, 0xd0, 0x39, 0x08, 0x86, 0x26, - 0x34, 0x4d, 0x76, 0xc9, 0x0a, 0xb9, 0x55, 0x72, 0xd4, 0xfd, 0x31, 0xc6, - 0x3c, 0xb4, 0x44, 0xe9, 0xa0, 0x39, 0xe3, 0x76, 0xdb, 0xdb, 0x98, 0x48, - 0xcf, 0x8d, 0x50, 0xa8, 0x78, 0xae, 0x9e, 0xf9, 0xd0, 0xd8, 0x27, 0x5f, - 0xd2, 0x0b, 0xd4, 0x3e, 0x19, 0x47, 0x4d, 0xe8, 0xc2, 0x4c, 0x36, 0x36, - 0x08, 0x70, 0x37, 0xa6, 0xdb, 0x9a, 0x12, 0x1c, 0x3f, 0xcb, 0x82, 0x59, - 0xeb, 0x93, 0x1f, 0x99, 0xa5, 0x19, 0xf7, 0x74, 0x73, 0x8b, 0xe3, 0x83, - 0x71, 0xf8, 0x7b, 0x76, 0x25, 0x7d, 0x4c, 0x8b, 0x4e, 0xe7, 0x70, 0x6f, - 0xe1, 0xda, 0x21, 0x0f, 0xa6, 0xd1, 0xf7, 0x3a, 0xf6, 0x26, 0x3a, 0xf9, - 0x38, 0xca, 0xfb, 0x7c, 0x7e, 0xf0, 0x5e, 0x6a, 0x8e, 0x16, 0x32, 0xaa, - 0x1e, 0x20, 0xe9, 0x73, 0xba, 0x6d, 0x5a, 0xf1, 0x64, 0xe9, 0x14, 0x44, - 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, - 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, - 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xe8, 0x8f, 0x69, 0x18, - 0x8f, 0x84, 0x60, 0x31, 0x4e, 0xb2, 0x0a, 0xf8, 0x35, 0xdd, 0xf3, 0xad, - 0x8a, 0x13, 0xe4, 0xd3, 0x80, 0xb9, 0xd6, 0xcd, 0x05, 0x43, 0x9b, 0x6f, - 0x1c, 0xbe, 0xfd, 0x28, 0xf0, 0x6a, 0x32, 0xce, 0xc7, 0x35, 0x31, 0x75, - 0x43, 0x39, 0x29, 0x5b, 0xda, 0x3f, 0xce, 0x90, 0x62, 0x15, 0x33, 0x80, - 0x54, 0x45, 0x15, 0xca, 0x6d, 0xbb, 0x27, 0xbf, 0x06, 0xe2, 0xf7, 0x26, - 0xa4, 0xd7, 0x2e, 0x30, 0x94, 0x3a, 0x3b, 0x12, 0xc9, 0x6d, 0x4f, 0x24, - 0x3b, 0x60, 0x88, 0x72, 0xa2, 0x1b, 0x68, 0xfb, 0xf8, 0xb9, 0x00, 0xed, - 0x67, 0x0c, 0xaa, 0x08, 0x10, 0x79, 0xc0, 0x4b, 0x88, 0x52, 0x00, 0x57, - 0x1f, 0xf6, 0xf0, 0x1d, 0xbb, 0xb1, 0x3a, 0x5d, 0xc2, 0xfc, 0x67, 0x92, - 0x35, 0x1b, 0x81, 0x72, 0xc5, 0xac, 0x30, 0x6d, 0x82, 0x5f, 0x23, 0x23, - 0x92, 0xb8, 0xbd, 0x5a, 0x42, 0xab, 0x00, 0x0f, 0x98, 0x38, 0xf7, 0x42, - 0x5f, 0xbd, 0x47, 0x53, 0x31, 0x90, 0x98, 0x96, 0x9d, 0x93, 0x29, 0x95, - 0x41, 0xf3, 0x02, 0x59, 0xe9, 0x42, 0xac, 0x5b, 0xb3, 0x0d, 0x87, 0x18, - 0x46, 0x53, 0xec, 0x53, 0xee, 0x8a, 0xe1, 0xa5, 0x98, 0x1b, 0x73, 0x8f, - 0xd1, 0x03, 0x8a, 0xe0, 0x0b, 0xe8, 0xec, 0x8b, 0xd7, 0x4b, 0x80, 0x0f, - 0xa3, 0xa5, 0x1a, 0x79, 0x39, 0x05, 0x10, 0x29, 0x29, 0x83, 0xca, 0xe2, - 0x78, 0x34, 0x43, 0xae, 0x61, 0xf2, 0xe8, 0xf3, 0x1d, 0xf7, 0x51, 0xd8, - 0xfb, 0x87, 0xdb, 0x33, 0xc7, 0x4a, 0x31, 0x44, 0x20, 0x8f, 0xfa, 0x03, - 0xcd, 0x03, 0x83, 0x0e, 0x91, 0x9f, 0xf4, 0xae, 0x55, 0xef, 0x08, 0x4c, - 0xc4, 0xb5, 0xed, 0x3f, 0xb1, 0x68, 0x33, 0xcf, 0x00, 0x9d, 0x53, 0xeb, - 0x0d, 0x57, 0x1e, 0x59, 0x4c, 0xfd, 0x77, 0xa6, 0x0e, 0xc1, 0x83, 0x33, - 0x08, 0xbe, 0xa7, 0xee, 0x1c, 0x36, 0x64, 0xbd, 0xaa, 0x1e, 0xaa, 0x7a, - 0x50, 0x5e, 0xbd, 0x40, 0x29, 0x43, 0x57, 0x95, 0x0b, 0xba, 0x2d, 0xf2, - 0x13, 0x5e, 0xe7, 0x89, 0x09, 0x95, 0xc5, 0x54, 0x74, 0x29, 0x03, 0x53, - 0xe0, 0xd0, 0x32, 0x0d, 0x13, 0x36, 0xc8, 0x33, 0xf1, 0x58, 0x37, 0x35, - 0x4d, 0xe5, 0xd0, 0xd4, 0x28, 0x87, 0x02, 0xd4, 0x89, 0x80, 0x6d, 0x6f, - 0x48, 0x88, 0x61, 0x34, 0xd8, 0x64, 0x91, 0x1e, 0xd5, 0x76, 0xe6, 0x0d, - 0x83, 0xa4, 0xcc, 0xe3, 0xb4, 0x1a, 0x40, 0x5a, 0x37, 0x63, 0x69, 0xb6, - 0x72, 0x52, 0xa5, 0x46, 0xae, 0x24, 0xd9, 0xc1, 0xa6, 0x50, 0xf8, 0x40, - 0x22, 0x35, 0xe9, 0x41, 0x85, 0xf0, 0x56, 0xf7, 0x52, 0x68, 0x95, 0x2f, - 0xcc, 0x6a, 0x03, 0x78, 0x52, 0xc0, 0x26, 0x52, 0x77, 0xd1, 0xa0, 0x90, - 0x3b, 0x59, 0xe5, 0x23, 0xcc, 0xa2, 0xa2, 0x1d, 0x61, 0xd4, 0x5f, 0x9b, - 0x89, 0x6e, 0x81, 0xa8, 0x6c, 0xae, 0x68, 0xa7, 0x44, 0x82, 0xdf, 0x74, - 0xc7, 0xf5, 0xa9, 0x2c, 0x5c, 0x67, 0xf7, 0x2d, 0xf2, 0x96, 0xcb, 0xb1, - 0x4e, 0x4f, 0x79, 0x0d, 0x35, 0x59, 0x24, 0xb9, 0xcf, 0xb8, 0x41, 0xa2, - 0xf5, 0xed, 0x07, 0xcc, 0x71, 0x96, 0xf0, 0xde, 0xc6, 0x00, 0x91, 0x0c, - 0x39, 0x1c, 0xb7, 0xe1, 0xcf, 0x0b, 0xfd, 0x0d, 0xe5, 0xe8, 0xac, 0x24, - 0xf5, 0xc3, 0xff, 0xc7, 0x38, 0xc8, 0xc3, 0x13, 0xc5, 0x28, 0xc0, 0xd2, - 0x9c, 0xb3, 0x98, 0x65, 0x31, 0xbe, 0xe0, 0x96, 0x67, 0xc8, 0x55, 0x94, - 0x54, 0x00, 0x03, 0x01, 0x4e, 0x6f, 0xe9, 0x0a, 0x4a, 0xa2, 0x18, 0x7e, - 0x08, 0x6e, 0xae, 0x1a, 0x64, 0x90, 0xce, 0x81, 0xfd, 0x0f, 0x63, 0xa3, - 0x13, 0xcc, 0xfc, 0xba, 0x3e, 0x1e, 0x10, 0xad, 0x1a, 0xed, 0xa2, 0x71, - 0xc8, 0xd4, 0x92, 0x09, 0xe5, 0xde, 0x1b, 0x4e, 0x8c, 0x3c, 0xed, 0x31, - 0x15, 0x72, 0xbe, 0x9e, 0xf4, 0x27, 0x00, 0x09, 0x2e, 0x9c, 0x50, 0x90, - 0xa9, 0x03, 0xe8, 0x02, 0xd1, 0x8f, 0xa6, 0x23, 0x78, 0x8c, 0x78, 0x5a, - 0x10, 0x6b, 0x94, 0x69, 0x1a, 0x64, 0x1b, 0xd0, 0xee, 0xb1, 0x02, 0xee, - 0x27, 0x06, 0xac, 0xe5, 0x15, 0x41, 0x64, 0x52, 0x70, 0xc1, 0xc4, 0xd6, - 0xb6, 0x42, 0x89, 0xda, 0x35, 0xcf, 0xc0, 0x40, 0x84, 0xed, 0x5a, 0xd3, - 0x3d, 0xe5, 0x3a, 0xe5, 0x69, 0xcc, 0xdc, 0xde, 0xed, 0x0d, 0xaa, 0xd4, - 0x6a, 0xff, 0x12, 0x4f, 0x54, 0x02, 0x20, 0x80, 0xc8, 0x5b, 0xa0, 0x77, - 0x7e, 0x51, 0xcb, 0x53, 0x5b, 0x85, 0x1e, 0x0e, 0xca, 0xd1, 0x11, 0xd9, - 0x25, 0xe3, 0xac, 0x0f, 0xd4, 0x12, 0xab, 0xa9, 0x3e, 0xff, 0x60, 0x9c, - 0xed, 0xaf, 0xa2, 0x7a, 0xb6, 0x2e, 0x7f, 0x04, 0xed, 0x58, 0xb5, 0x1c, - 0x49, 0xf7, 0x77, 0xeb, 0x6a, 0x6c, 0x9c, 0x0f, 0xdd, 0x0e, 0x98, 0x89, - 0x93, 0x50, 0x9a, 0xf4, 0x38, 0xd7, 0x7d, 0x68, 0x18, 0xa0, 0xa7, 0x59, - 0xc0, 0xb9, 0xc6, 0x3c, 0xa0, 0x9e, 0xad, 0x26, 0x3d, 0x47, 0x56, 0xde, - 0xdc, 0x43, 0xdd, 0xf8, 0xb7, 0xca, 0xec, 0xc5, 0xa9, 0x67, 0xe4, 0xb6, - 0xe7, 0x2a, 0x0e, 0xec, 0xac, 0x94, 0x0e, 0x82, 0x04, 0x98, 0xfe, 0xec, - 0x05, 0x16, 0x63, 0x52, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, - 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, - 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, - 0x5b, 0xc7, 0x1c, 0xfd, 0x07, 0xe4, 0x20, 0xa6, 0x6f, 0xfc, 0xef, 0x86, - 0x78, 0x51, 0x2f, 0x27, 0xf2, 0x2f, 0x2d, 0xdd, 0x40, 0x13, 0xf2, 0x37, - 0xfe, 0xac, 0xc6, 0x4d, 0x33, 0x99, 0xd6, 0x38, 0x4e, 0xbf, 0xb7, 0xe5, - 0xbf, 0xf4, 0x2e, 0x18, 0xb8, 0x6c, 0x3d, 0xc8, 0x9f, 0xd6, 0x92, 0xec, - 0xb0, 0x7d, 0xab, 0xdc, 0x24, 0xce, 0x2d, 0x04, 0x1e, 0x00, 0x0a, 0x1c, - 0xc6, 0xf9, 0x26, 0x43, 0x4e, 0x1f, 0x28, 0x6a, 0x55, 0x1c, 0x37, 0xcf, - 0x93, 0x11, 0x28, 0x91, 0x4b, 0xc1, 0xf0, 0x8b, 0xfb, 0xbf, 0x07, 0x73, - 0x41, 0xdd, 0xf0, 0xb1, 0x5d, 0x3b, 0xfe, 0x85, 0x95, 0x49, 0x15, 0x5f, - 0x55, 0x44, 0x13, 0x93, 0x21, 0x75, 0x65, 0xee, 0xb2, 0x01, 0x5f, 0xf9, - 0x53, 0x1b, 0xbe, 0x31, 0x4f, 0xf5, 0x81, 0x31, 0x74, 0x53, 0xf5, 0xd5, - 0x36, 0x93, 0x18, 0xa9, 0x64, 0x8f, 0x15, 0x6d, 0xec, 0x2e, 0x77, 0xb3, - 0x63, 0x51, 0x62, 0xc1, 0xd9, 0x48, 0xbb, 0xab, 0x9c, 0x81, 0xa5, 0xcd, - 0x6b, 0x52, 0xaa, 0x72, 0xe8, 0x53, 0x7e, 0xff, 0x45, 0x16, 0x95, 0x70, - 0x17, 0x2f, 0x62, 0x44, 0xae, 0x21, 0xda, 0x6e, 0x93, 0x43, 0xdb, 0xa7, - 0xed, 0xc1, 0x09, 0x9d, 0xc9, 0x66, 0xf3, 0xfd, 0x04, 0x37, 0x0f, 0x16, - 0xf5, 0x71, 0x82, 0xa2, 0x19, 0x07, 0x5f, 0x05, 0x0f, 0x04, 0x09, 0x3c, - 0x46, 0x34, 0x76, 0x03, 0x51, 0x62, 0x89, 0xc1, 0x9b, 0x7a, 0x8b, 0x26, - 0x9b, 0xb2, 0x73, 0x0b, 0x53, 0x1a, 0xf3, 0xbb, 0x14, 0x4a, 0x04, 0x2b, - 0x44, 0xd4, 0x30, 0x81, 0x04, 0x21, 0xc0, 0x4d, 0xd0, 0xd4, 0x49, 0xb1, - 0xc7, 0x52, 0x29, 0xfa, 0xbc, 0x30, 0x2f, 0x58, 0x81, 0xbf, 0x25, 0xcf, - 0xbd, 0xfe, 0xaf, 0x9c, 0xe1, 0x65, 0x8b, 0x0b, 0x9e, 0x98, 0x2d, 0x1c, - 0x1e, 0xec, 0x55, 0x5c, 0x55, 0xaf, 0xb9, 0x89, 0x3a, 0xa8, 0xe4, 0xfb, - 0x85, 0x98, 0xad, 0x16, 0x3f, 0xff, 0xcc, 0xaf, 0x16, 0x07, 0xdc, 0x6e, - 0x8d, 0xed, 0x12, 0xc2, 0xa0, 0x23, 0x78, 0xec, 0x5a, 0x10, 0x4c, 0x4d, - 0x2b, 0x18, 0x14, 0xa9, 0xec, 0x22, 0x9d, 0x5c, 0x62, 0xef, 0xa5, 0x0d, - 0x7a, 0x11, 0x6e, 0x44, 0xeb, 0x29, 0x98, 0x01, 0xa1, 0xc8, 0x43, 0x53, - 0xbf, 0x41, 0x68, 0x8c, 0x20, 0x3e, 0xe3, 0x2d, 0xbc, 0x0c, 0x96, 0xb6, - 0xe9, 0x93, 0x8a, 0x69, 0x2d, 0x46, 0x35, 0x5a, 0x52, 0x09, 0x7d, 0xbf, - 0x9d, 0x88, 0x9f, 0x13, 0x65, 0x92, 0x05, 0x7c, 0xb1, 0xe4, 0xce, 0xfb, - 0xe1, 0xd8, 0xe4, 0x1e, 0x23, 0x56, 0x47, 0xd0, 0x51, 0x4e, 0xe8, 0x4d, - 0x93, 0x97, 0x24, 0xcc, 0xa5, 0xf3, 0xda, 0x28, 0x36, 0xca, 0x8a, 0x65, - 0x3b, 0x46, 0x11, 0xb5, 0x23, 0xe0, 0x4a, 0xb2, 0xd6, 0x1b, 0x76, 0x6a, - 0x63, 0xff, 0xb0, 0x2c, 0x96, 0xaa, 0x0d, 0x6f, 0xe3, 0xb2, 0x59, 0x59, - 0x38, 0x8f, 0xca, 0x62, 0x01, 0xc9, 0xc3, 0x59, 0x01, 0xf0, 0x49, 0xef, - 0xda, 0x3b, 0x47, 0x0a, 0xb7, 0x90, 0xc8, 0x40, 0xda, 0xe5, 0xe7, 0xdd, - 0xf2, 0x36, 0xfa, 0x13, 0x6f, 0x3c, 0x04, 0xcc, 0x4b, 0xed, 0xf7, 0x80, - 0xf1, 0xd1, 0x72, 0xfd, 0x72, 0x0d, 0xc1, 0x92, 0x2a, 0x46, 0xa4, 0x1c, - 0xf7, 0xcf, 0xdf, 0x06, 0xf6, 0xc7, 0xc4, 0xc3, 0xbd, 0xba, 0xb9, 0x51, - 0x02, 0xa1, 0x82, 0x2a, 0x90, 0xfd, 0x96, 0xcc, 0x64, 0x78, 0xac, 0x24, - 0xca, 0xb4, 0x95, 0x9a, 0x42, 0xba, 0x8e, 0xbc, 0xb7, 0x1b, 0xf3, 0x0a, - 0x60, 0x99, 0x93, 0xf6, 0xb3, 0x56, 0x59, 0x96, 0x53, 0x49, 0x74, 0x34, - 0xa9, 0x38, 0x35, 0x39, 0xee, 0xb2, 0xfd, 0x23, 0xec, 0x68, 0xd7, 0x53, - 0xc9, 0x45, 0xf4, 0xbd, 0x3d, 0x69, 0xe9, 0x53, 0xe5, 0x93, 0xde, 0x84, - 0xc4, 0x66, 0x29, 0x4f, 0x30, 0x01, 0xdf, 0xb3, 0xf8, 0xc7, 0x78, 0x2e, - 0xb9, 0x9b, 0xaf, 0xe4, 0xfb, 0x5e, 0xad, 0x86, 0x02, 0x33, 0x47, 0x29, - 0x15, 0x37, 0x27, 0x22, 0xf2, 0xaf, 0x34, 0x0d, 0x2e, 0x58, 0x07, 0x82, - 0xc0, 0x44, 0x17, 0x78, 0xa7, 0x43, 0x46, 0x7a, 0xad, 0x24, 0xc0, 0x12, - 0x17, 0x86, 0x43, 0xdf, 0x54, 0xf3, 0x20, 0x63, 0xaf, 0xae, 0x5a, 0x2d, - 0xf0, 0x5d, 0x75, 0x8d, 0x0d, 0x2c, 0xcd, 0x18, 0x1c, 0xc7, 0x46, 0xf3, - 0xb2, 0x39, 0x3b, 0xf9, 0xe0, 0xf8, 0x5a, 0x3d, 0x45, 0x67, 0x9a, 0x7a, - 0x02, 0x36, 0x01, 0xf8, 0xf6, 0x9e, 0xf2, 0x31, 0x5e, 0x65, 0x59, 0x6c, - 0x0f, 0x78, 0x3a, 0x0b, 0xbb, 0x62, 0x31, 0x53, 0xdf, 0x9a, 0x73, 0xe6, - 0x4e, 0xa9, 0x93, 0x19, 0x61, 0x00, 0x37, 0xe6, 0xb9, 0x44, 0xa5, 0xc0, - 0xcf, 0x4c, 0x47, 0x54, 0x12, 0xc0, 0x44, 0x9e, 0x3d, 0x57, 0x24, 0x2c, - 0x4d, 0x57, 0x7a, 0x45, 0xc2, 0xe7, 0x2a, 0x8b, 0xc2, 0x73, 0xaf, 0x80, - 0xdc, 0x49, 0xa9, 0x51, 0x0e, 0x04, 0xf7, 0xf2, 0x37, 0x2e, 0x32, 0x42, - 0x7b, 0x19, 0x9f, 0x28, 0x5b, 0xf2, 0x1b, 0xe6, 0x88, 0x62, 0x91, 0x3e, - 0xea, 0x71, 0x60, 0x76, 0x91, 0x7b, 0xaa, 0x44, 0xca, 0x03, 0xd2, 0x66, - 0x86, 0x35, 0xda, 0x9e, 0xea, 0x37, 0x41, 0x03, 0x01, 0x00, 0x00, 0xc0, - 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, - 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, - 0x0c, 0x84, 0x44, 0x6a, 0x11, 0x50, 0x6f, 0x65, 0x71, 0xe4, 0x6c, 0x54, - 0x3e, 0x97, 0x33, 0xe4, 0x99, 0x2a, 0x8e, 0x6d, 0x97, 0x7b, 0x84, 0xc3, - 0x37, 0x53, 0xf6, 0xdf, 0xa6, 0x4e, 0x5a, 0x1c, 0xca, 0x70, 0x1d, 0x2d, - 0xe9, 0x00, 0x86, 0x3c, 0x9b, 0xa0, 0x5b, 0x23, 0xf7, 0xa3, 0xc0, 0x0d, - 0x77, 0x7b, 0x1c, 0x1f, 0xd9, 0xdf, 0xad, 0x91, 0xaa, 0x63, 0xb2, 0xe5, - 0x33, 0x0a, 0x83, 0xf2, 0x4f, 0x78, 0x6e, 0x5c, 0xb0, 0x7c, 0xd3, 0x92, - 0x37, 0x54, 0xda, 0x5c, 0x6a, 0x6f, 0xc4, 0xaa, 0x9b, 0xa4, 0x01, 0xd5, - 0x75, 0x17, 0xd5, 0xb1, 0xd1, 0xd5, 0x27, 0x16, 0xd3, 0x52, 0x75, 0x56, - 0xc9, 0x44, 0x09, 0x5b, 0x10, 0xcc, 0x5e, 0xab, 0x1f, 0xbe, 0x91, 0x10, - 0x8d, 0xbf, 0xf3, 0x87, 0x5a, 0x00, 0x55, 0x5d, 0xd0, 0xb9, 0x86, 0xca, - 0xff, 0x5b, 0xe9, 0xa8, 0x3d, 0xb1, 0xcc, 0x90, 0x18, 0x52, 0x01, 0x17, - 0xab, 0x82, 0x57, 0x7a, 0xbc, 0xe4, 0x41, 0xd8, 0x37, 0x32, 0xc6, 0x16, - 0x5f, 0x57, 0xe6, 0x90, 0xf9, 0x8e, 0x2a, 0xd0, 0xe6, 0x2b, 0x8b, 0x16, - 0xd9, 0xc7, 0xd7, 0x47, 0x64, 0x4e, 0x38, 0x5d, 0xae, 0x81, 0x79, 0xd0, - 0xc2, 0x25, 0x10, 0x51, 0x76, 0x1f, 0x1c, 0x37, 0x55, 0x45, 0xc8, 0xbd, - 0xf8, 0xb7, 0xd9, 0x49, 0xea, 0xe8, 0x9f, 0x98, 0xbd, 0x6b, 0x87, 0x6c, - 0x6d, 0xcc, 0x63, 0x37, 0x3c, 0xb7, 0x50, 0x8b, 0xc2, 0x95, 0x64, 0xe8, - 0x37, 0x53, 0x84, 0x75, 0x8a, 0x7d, 0x38, 0xf5, 0x31, 0x26, 0x17, 0x81, - 0x13, 0xbb, 0xcd, 0x15, 0x40, 0x04, 0x18, 0x09, 0xf6, 0x84, 0x58, 0x0d, - 0x3e, 0x15, 0x29, 0x45, 0x88, 0x2d, 0x43, 0x30, 0xd9, 0x3f, 0x80, 0x16, - 0x08, 0x29, 0xf2, 0xc5, 0xfb, 0x31, 0x7a, 0x26, 0x4f, 0x04, 0xa4, 0xf2, - 0xeb, 0xc6, 0x2c, 0x6d, 0x4f, 0x4e, 0xe9, 0x62, 0x45, 0x8f, 0x63, 0xef, - 0xd0, 0x87, 0x42, 0xb3, 0x0d, 0x91, 0x07, 0x0f, 0x20, 0x6f, 0x33, 0xca, - 0x7b, 0x6f, 0xf2, 0x45, 0x25, 0x76, 0xcb, 0x88, 0x6c, 0xa4, 0xba, 0xf2, - 0x42, 0xf6, 0x0f, 0x20, 0xf7, 0x83, 0xab, 0x69, 0xc3, 0xa3, 0x47, 0x03, - 0x92, 0x67, 0x39, 0xd5, 0x39, 0x66, 0xaa, 0xf5, 0xb4, 0xcd, 0xf2, 0xed, - 0xab, 0x7d, 0xd6, 0x26, 0xda, 0x79, 0x71, 0x79, 0x73, 0x1b, 0x97, 0x12, - 0xc6, 0x23, 0x30, 0x0a, 0x5d, 0x19, 0x99, 0x2f, 0x92, 0x55, 0x62, 0x33, - 0x6e, 0x5f, 0x6e, 0xc8, 0x3c, 0xaa, 0x55, 0xb0, 0xec, 0xab, 0x6d, 0xc4, - 0x2a, 0xb9, 0xfd, 0x1a, 0x88, 0x62, 0x27, 0x32, 0x5c, 0x0f, 0x23, 0x4d, - 0x39, 0x7b, 0x6c, 0xec, 0x29, 0xdc, 0xee, 0x2c, 0xb6, 0xe9, 0xdd, 0x76, - 0xe9, 0xcc, 0x50, 0x15, 0xfc, 0xde, 0x4b, 0x1c, 0xcc, 0x51, 0x4a, 0x2e, - 0x9b, 0x34, 0x40, 0x0c, 0x98, 0xf4, 0xf5, 0x9d, 0xfd, 0xa4, 0x98, 0x0b, - 0xea, 0x15, 0x80, 0xb3, 0x2d, 0xd8, 0x91, 0x55, 0x8b, 0xe4, 0xe0, 0x28, - 0x31, 0x8a, 0x0a, 0x1d, 0x8e, 0x00, 0xc3, 0x8e, 0xce, 0x23, 0x78, 0x4f, - 0x2a, 0xdf, 0x80, 0x65, 0x9a, 0x39, 0x75, 0x54, 0xd4, 0x4d, 0x19, 0xd9, - 0xe7, 0x5a, 0x19, 0xd1, 0x48, 0xd0, 0xb5, 0x6a, 0xc6, 0xae, 0x82, 0xed, - 0x4d, 0x60, 0x06, 0x5d, 0x65, 0x1a, 0x6b, 0x4a, 0x4f, 0xf2, 0xe5, 0x9a, - 0x0b, 0x73, 0xe4, 0x4b, 0x31, 0xde, 0xd7, 0x63, 0x63, 0x8e, 0x1a, 0xc0, - 0x4c, 0xa0, 0x07, 0xd7, 0x19, 0xb2, 0x1a, 0x44, 0xf1, 0x37, 0xa9, 0xc4, - 0xc1, 0xe4, 0xbe, 0x10, 0xc5, 0x99, 0xa3, 0x1d, 0x46, 0x9f, 0xc1, 0x67, - 0x30, 0xec, 0xc3, 0x8e, 0x74, 0x20, 0x13, 0x2c, 0xea, 0x7f, 0xc7, 0xd5, - 0x5a, 0xb6, 0xd2, 0x3c, 0xb1, 0xf2, 0xb7, 0x7e, 0x13, 0x3f, 0xff, 0x4d, - 0x33, 0x03, 0xca, 0x49, 0x92, 0x36, 0xf1, 0xf0, 0xab, 0x2b, 0x92, 0x4b, - 0x8f, 0x5a, 0x93, 0xcd, 0x3d, 0xc8, 0x70, 0x95, 0x38, 0x17, 0x07, 0xcf, - 0x91, 0x57, 0x29, 0xf3, 0x93, 0xbd, 0xcb, 0x26, 0xff, 0x0f, 0x74, 0xfb, - 0x1f, 0x3f, 0x57, 0xb4, 0xcd, 0x8b, 0xf1, 0x4e, 0xd6, 0x3a, 0xb0, 0x41, - 0x25, 0xbe, 0xd7, 0xe2, 0x0b, 0xc5, 0xdc, 0xb0, 0x31, 0x2d, 0x04, 0x15, - 0x6b, 0x31, 0xa2, 0x3f, 0xf7, 0xce, 0xe1, 0x8b, 0xe7, 0xf0, 0x6b, 0xe1, - 0x14, 0x35, 0x49, 0xea, 0xb8, 0x5c, 0x15, 0x58, 0x09, 0x8a, 0x13, 0x6b, - 0x19, 0xab, 0x3a, 0xfb, 0xeb, 0x12, 0xb7, 0x9f, 0x15, 0xa8, 0x40, 0x3c, - 0x07, 0xa6, 0x2a, 0x19, 0xe6, 0x73, 0x75, 0x82, 0xfd, 0xdf, 0x98, 0x3f, - 0x4a, 0xb6, 0xb5, 0xa4, 0x49, 0xe4, 0x52, 0xeb, 0xf7, 0x6e, 0x9f, 0x12, - 0x64, 0x81, 0xaa, 0x32, 0x68, 0xc1, 0xfd, 0x27, 0x90, 0x4b, 0xd5, 0x8d, - 0xba, 0xdb, 0x9e, 0x61, 0xab, 0xeb, 0x72, 0x5d, 0xb0, 0x94, 0x61, 0xe1, - 0x9a, 0x19, 0xed, 0x06, 0xb6, 0xe3, 0x13, 0x80, 0xa1, 0x2d, 0x75, 0x10, - 0xba, 0xc7, 0x14, 0x21, 0x77, 0x36, 0xa4, 0xa0, 0xfe, 0x68, 0x0f, 0x07, - 0x3e, 0xf2, 0x03, 0xe0, 0x84, 0xf4, 0xa6, 0xd5, 0xe0, 0x37, 0x6a, 0xbc, - 0x5e, 0x61, 0xa8, 0xda, 0x6e, 0x78, 0x46, 0x0b, 0x5b, 0x0e, 0xe9, 0x1a, - 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, - 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, - 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x1d, 0xa7, 0x2b, 0xfc, - 0x22, 0xbf, 0x74, 0x22, 0x5d, 0x75, 0x3e, 0x06, 0x3e, 0x3f, 0x50, 0x34, - 0xd3, 0x52, 0x0e, 0xc5, 0x27, 0x28, 0xa2, 0x23, 0xb2, 0xb8, 0xed, 0x48, - 0xf9, 0x9a, 0x43, 0x2f, 0x90, 0x1d, 0x0f, 0x31, 0xf9, 0x3f, 0xed, 0x61, - 0x96, 0xc3, 0x36, 0x43, 0xb8, 0x57, 0x9b, 0xc2, 0x74, 0x13, 0x18, 0x29, - 0x98, 0xc1, 0x91, 0x90, 0xdc, 0xac, 0xc6, 0x37, 0x65, 0xf0, 0x43, 0x5d, - 0x8c, 0xc3, 0xac, 0x57, 0x80, 0xca, 0xf2, 0xb1, 0xb5, 0x06, 0x68, 0xd3, - 0xb7, 0x63, 0x94, 0x88, 0xa7, 0x61, 0x0f, 0x2a, 0x4b, 0x26, 0x64, 0x10, - 0xec, 0x9d, 0x41, 0xea, 0xa7, 0x4f, 0x40, 0x5f, 0xab, 0x24, 0x97, 0xf3, - 0xfe, 0x5f, 0x66, 0x82, 0xeb, 0x40, 0x4f, 0xc6, 0xfd, 0xf1, 0xbd, 0x35, - 0xc7, 0x6e, 0x9a, 0x59, 0x29, 0xc2, 0x31, 0x0e, 0x47, 0x39, 0x27, 0xcb, - 0x1c, 0x92, 0x66, 0x27, 0x72, 0xc9, 0xa1, 0xfd, 0x19, 0xc8, 0x23, 0x22, - 0x91, 0xd2, 0x07, 0xb0, 0xac, 0xd7, 0x97, 0xe5, 0x23, 0x9f, 0x34, 0xa8, - 0x67, 0x35, 0x9a, 0xbe, 0xe7, 0xa2, 0x2f, 0x1d, 0x41, 0x8c, 0xf2, 0x68, - 0x91, 0xed, 0x15, 0x22, 0x86, 0x6c, 0x69, 0x9c, 0x23, 0xdd, 0x6c, 0x48, - 0xcf, 0x1d, 0x3a, 0xe7, 0x6f, 0x77, 0xa5, 0x09, 0x43, 0x6f, 0xd9, 0x4a, - 0x91, 0x08, 0x08, 0xbc, 0x12, 0x24, 0x92, 0x72, 0xed, 0x60, 0x8c, 0xbd, - 0xe5, 0x27, 0x98, 0x34, 0x8d, 0x46, 0x73, 0x78, 0xf3, 0x12, 0xb8, 0xad, - 0x62, 0xdb, 0xf6, 0xca, 0x3a, 0x35, 0x01, 0xfb, 0xa7, 0x1b, 0x85, 0x55, - 0xd0, 0xfa, 0x0d, 0x26, 0xb5, 0xb6, 0x57, 0x14, 0xad, 0xa0, 0x86, 0x78, - 0x0e, 0x2d, 0x28, 0x9e, 0x3a, 0x04, 0x66, 0xc8, 0x98, 0x23, 0x4e, 0x43, - 0x7e, 0xd8, 0xc1, 0x85, 0x93, 0x6e, 0xa5, 0x2d, 0x21, 0x0c, 0x6d, 0x5b, - 0x44, 0x6f, 0x7f, 0x57, 0x62, 0x37, 0x6b, 0xce, 0x8d, 0xf7, 0x9e, 0xf7, - 0xd8, 0xd2, 0x58, 0x75, 0x45, 0x3f, 0xcf, 0x20, 0xf8, 0xa1, 0x46, 0xe0, - 0x15, 0xa0, 0x79, 0xe0, 0xaa, 0x01, 0x81, 0x72, 0xc1, 0xcd, 0xe7, 0x06, - 0xb0, 0xe3, 0x87, 0xc9, 0xd4, 0x77, 0x95, 0xb5, 0x65, 0x50, 0x29, 0xcd, - 0xb4, 0xe9, 0x9a, 0x99, 0xf5, 0x6c, 0x55, 0x34, 0xb6, 0xf8, 0xcd, 0xf7, - 0xa4, 0x0f, 0xe1, 0x4e, 0x94, 0x33, 0xdb, 0x70, 0x8e, 0xd6, 0x2c, 0x95, - 0xcb, 0x91, 0xcf, 0x86, 0x67, 0x3b, 0x47, 0x21, 0xbe, 0x15, 0x80, 0x11, - 0x94, 0xb5, 0x7d, 0x4d, 0xd4, 0xe6, 0x6c, 0xec, 0xd9, 0x6d, 0xa3, 0x50, - 0x14, 0x84, 0xa3, 0xfe, 0xef, 0x9e, 0xff, 0x89, 0xa4, 0x01, 0xe5, 0xe2, - 0xd3, 0x93, 0x79, 0x99, 0x07, 0x09, 0xae, 0xf7, 0x01, 0x0e, 0x23, 0x58, - 0x58, 0x1f, 0x9d, 0x1e, 0x59, 0x02, 0x12, 0x22, 0xb4, 0x81, 0x43, 0x15, - 0x4f, 0xb2, 0x98, 0xe0, 0xfd, 0x0d, 0x20, 0x56, 0xd2, 0x84, 0xe9, 0x65, - 0xb6, 0x30, 0x88, 0x40, 0x2f, 0x11, 0x92, 0x85, 0xf0, 0xd4, 0x54, 0x23, - 0xe1, 0x6a, 0x92, 0x16, 0x6b, 0x9a, 0xdf, 0x97, 0xbb, 0x9e, 0xc4, 0x94, - 0x90, 0xa0, 0xdb, 0x1e, 0xc1, 0x4e, 0xaf, 0xf7, 0x25, 0xae, 0x4c, 0x7e, - 0x67, 0x7c, 0xa3, 0xe0, 0x7c, 0x4b, 0x9e, 0x9a, 0xa3, 0x3f, 0x5f, 0x47, - 0x46, 0xfa, 0xaa, 0x78, 0xe2, 0x6d, 0x2c, 0xdd, 0x91, 0x42, 0x99, 0x85, - 0x35, 0xfb, 0x60, 0x3e, 0xe9, 0x85, 0xc1, 0x7f, 0x00, 0x95, 0xe9, 0xca, - 0x44, 0x3a, 0xd9, 0x5d, 0x4b, 0xb5, 0x7a, 0x10, 0x4a, 0xa1, 0x78, 0xd2, - 0x3b, 0xee, 0xe5, 0x25, 0x4c, 0x21, 0x3b, 0xa7, 0x96, 0x33, 0x6a, 0x46, - 0xa2, 0x30, 0x74, 0x6a, 0xff, 0x8e, 0xfc, 0x78, 0xb9, 0xd1, 0x7e, 0x3c, - 0x99, 0xe4, 0x7c, 0x73, 0xeb, 0x6a, 0xe7, 0xde, 0xbf, 0x35, 0x14, 0x6b, - 0xe9, 0x17, 0x42, 0xec, 0x0a, 0x6f, 0x4a, 0x5e, 0xd2, 0xc1, 0xd5, 0xd9, - 0x2c, 0xed, 0x9d, 0xef, 0xef, 0x72, 0x1e, 0xec, 0x80, 0x43, 0x81, 0x0b, - 0x75, 0x79, 0x06, 0x2d, 0x08, 0xa0, 0x2c, 0x87, 0x9c, 0x5a, 0xd0, 0x0f, - 0x0d, 0x7a, 0x71, 0x5d, 0x28, 0x26, 0xb6, 0x1b, 0xb7, 0x99, 0xf2, 0x77, - 0xbb, 0x61, 0x25, 0x41, 0x01, 0x9f, 0x35, 0x14, 0x0e, 0xde, 0x10, 0xaf, - 0xae, 0x77, 0x82, 0xc4, 0xd4, 0xa1, 0x73, 0x43, 0x89, 0xb2, 0x76, 0xd5, - 0x68, 0xda, 0xd7, 0xf4, 0x04, 0xc6, 0x8a, 0x36, 0x36, 0x76, 0x60, 0x3a, - 0x35, 0xde, 0x87, 0x5d, 0x67, 0x4d, 0xc6, 0x51, 0xd9, 0x07, 0x9b, 0x59, - 0xff, 0x0f, 0x93, 0x96, 0xd6, 0x20, 0x17, 0x5c, 0x62, 0xb3, 0xa9, 0xd2, - 0xca, 0xa9, 0xd7, 0x6a, 0x1d, 0x3b, 0x44, 0x1c, 0x3b, 0x09, 0x14, 0x13, - 0xcf, 0xa8, 0xc7, 0xb6, 0xa7, 0xf0, 0xdd, 0x43, 0x2d, 0x76, 0x6a, 0xe4, - 0x05, 0x23, 0x95, 0xe5, 0x2c, 0x57, 0x83, 0x70, 0x4b, 0xe4, 0x9f, 0x36, - 0xc1, 0x4a, 0x91, 0xc0, 0x83, 0x91, 0xba, 0x6d, 0x04, 0x84, 0xa2, 0x5b, - 0x0e, 0x41, 0x77, 0x25, 0x64, 0x05, 0x15, 0xc3, 0xa8, 0xf5, 0x1b, 0x86, - 0xb2, 0x98, 0xf3, 0x52, 0x87, 0xf7, 0x2f, 0xa5, 0x10, 0xd4, 0x35, 0xf8, - 0x43, 0x0f, 0x7d, 0x62, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, - 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, - 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, - 0x33, 0x29, 0xe3, 0xc9, 0x8f, 0x9f, 0x35, 0xc8, 0x79, 0xeb, 0xbc, 0x3c, - 0x88, 0x75, 0xe4, 0x73, 0x1e, 0xcb, 0x4d, 0x61, 0x9d, 0x62, 0x7d, 0xc6, - 0x3c, 0xb0, 0x84, 0x69, 0xdc, 0x52, 0x31, 0x58, 0xae, 0x61, 0xce, 0xc4, - 0x09, 0x1c, 0xf9, 0x96, 0x23, 0xa9, 0xfb, 0x0a, 0x51, 0x75, 0x13, 0x3a, - 0xf4, 0x8e, 0x17, 0xa2, 0xcf, 0x66, 0x3f, 0xff, 0x08, 0x7e, 0x8d, 0x8a, - 0xde, 0x8e, 0xbf, 0x35, 0x69, 0x7f, 0xaa, 0x3a, 0x98, 0xdc, 0xbc, 0x3f, - 0x21, 0x24, 0x1f, 0xe4, 0x47, 0x78, 0x2d, 0xec, 0x8b, 0xfd, 0x6d, 0x9d, - 0xf2, 0x4c, 0xbd, 0xf1, 0x10, 0xc2, 0x17, 0xd1, 0xac, 0xc9, 0xa7, 0x52, - 0x11, 0x7c, 0xab, 0x10, 0x74, 0x7a, 0xd5, 0x91, 0x72, 0xac, 0xdd, 0x11, - 0x2e, 0x8f, 0x21, 0x68, 0xf9, 0xf6, 0x64, 0x55, 0x7a, 0x87, 0xbd, 0x62, - 0xe5, 0x0d, 0xe0, 0x0a, 0xb8, 0x39, 0xd5, 0x72, 0xa7, 0xcf, 0xf9, 0x6e, - 0x2f, 0xde, 0xdb, 0x8b, 0x4f, 0x85, 0x62, 0x10, 0xca, 0x7b, 0x87, 0x4d, - 0xfd, 0x55, 0x12, 0x91, 0x4d, 0xb5, 0x12, 0x7a, 0x38, 0x2b, 0xb5, 0x9a, - 0xfd, 0x53, 0xa7, 0x08, 0x78, 0x89, 0x26, 0x31, 0x55, 0x3d, 0x66, 0xdd, - 0x1b, 0xd9, 0xcd, 0x1f, 0x64, 0x74, 0x39, 0xec, 0x6a, 0x91, 0x5c, 0x29, - 0xeb, 0x23, 0x7c, 0xc9, 0x0e, 0x0b, 0xcf, 0x4b, 0xa6, 0xb3, 0x8c, 0x4e, - 0x60, 0x5a, 0x83, 0x9f, 0x24, 0x71, 0x2f, 0xe8, 0xa8, 0x8b, 0xf4, 0x39, - 0x94, 0xd5, 0xab, 0x21, 0x1f, 0x97, 0x27, 0x97, 0xf9, 0xee, 0x03, 0x0a, - 0x90, 0x9d, 0x38, 0xa4, 0x4f, 0x12, 0x79, 0x51, 0x5e, 0x48, 0x77, 0x59, - 0xcc, 0x22, 0x17, 0x16, 0x70, 0xc1, 0x0b, 0x04, 0x12, 0x6a, 0x7c, 0xa4, - 0x5b, 0x89, 0x99, 0x66, 0xf9, 0x37, 0xc1, 0x81, 0xf7, 0x07, 0xd2, 0x58, - 0x9d, 0xf9, 0x48, 0x61, 0x74, 0x8d, 0xb2, 0x7b, 0xc4, 0x3d, 0x9b, 0x58, - 0xe3, 0x30, 0x8d, 0x23, 0x15, 0x82, 0x87, 0x7d, 0x63, 0xde, 0xf7, 0x39, - 0x47, 0x40, 0xd9, 0x9b, 0x7a, 0x4f, 0x6e, 0x5a, 0x5a, 0xba, 0x21, 0x69, - 0xfc, 0xd7, 0x25, 0x17, 0xe5, 0x13, 0xc4, 0x2d, 0xd6, 0xe4, 0x7d, 0x3c, - 0x82, 0x34, 0xc1, 0xda, 0x26, 0x61, 0x51, 0x02, 0x96, 0x6c, 0x72, 0x0d, - 0xf4, 0xdb, 0xd8, 0xf9, 0x3c, 0x4e, 0x59, 0x4b, 0xf9, 0xe8, 0x47, 0xcb, - 0x99, 0x3e, 0x89, 0x82, 0x0e, 0xfe, 0x17, 0xf2, 0x40, 0x0c, 0xa2, 0x7a, - 0x8a, 0x59, 0x44, 0x6c, 0x10, 0x84, 0x09, 0x50, 0x65, 0xab, 0xbc, 0xaa, - 0xac, 0x14, 0xf7, 0x02, 0x11, 0xba, 0xc3, 0x58, 0x52, 0x0a, 0x80, 0x74, - 0xa1, 0x8a, 0x3e, 0x4b, 0x6a, 0x66, 0xf2, 0xcb, 0xcc, 0x16, 0xf4, 0x0a, - 0xbc, 0x2c, 0xe3, 0xad, 0x17, 0xe4, 0x6d, 0x40, 0x1c, 0x2d, 0x9c, 0x2b, - 0x4c, 0x2f, 0x55, 0xbd, 0x63, 0x56, 0x45, 0x9e, 0xc7, 0x23, 0xa0, 0xc3, - 0x1a, 0x65, 0x5a, 0x84, 0xad, 0xd1, 0xd2, 0xae, 0x55, 0x1c, 0x1c, 0x9c, - 0xf2, 0xbc, 0xf2, 0x5b, 0x59, 0x04, 0x29, 0x27, 0x09, 0xf2, 0x55, 0xe1, - 0x2c, 0x01, 0x69, 0x27, 0x0d, 0xaf, 0x07, 0x7c, 0x4c, 0x0d, 0x6e, 0x7b, - 0xbf, 0xb5, 0x9b, 0xaf, 0x95, 0x99, 0x93, 0x5b, 0x68, 0xd9, 0x28, 0xc6, - 0x07, 0xc3, 0xe8, 0x69, 0x39, 0xfa, 0xba, 0xda, 0xac, 0x86, 0xfe, 0x65, - 0x74, 0x93, 0x67, 0xcd, 0x99, 0xa2, 0x50, 0xbe, 0x3c, 0xac, 0xc2, 0xf0, - 0x87, 0xc6, 0x2a, 0x7c, 0x81, 0x35, 0xc6, 0x90, 0x34, 0xb6, 0x4d, 0x48, - 0x10, 0xd3, 0x6b, 0x06, 0xcf, 0xe3, 0x01, 0x0b, 0x64, 0x8c, 0x2f, 0xc9, - 0xf3, 0xcd, 0x35, 0x7f, 0x06, 0xfe, 0x82, 0x44, 0xd3, 0xb2, 0x8e, 0xab, - 0x69, 0x57, 0xf7, 0x41, 0x4f, 0x34, 0x75, 0x29, 0xb5, 0xdb, 0x25, 0x5e, - 0x9c, 0x9f, 0x8f, 0x3f, 0x98, 0x35, 0xf7, 0x67, 0x3c, 0x31, 0x8a, 0xd0, - 0xaf, 0x2f, 0x05, 0x74, 0xbe, 0x17, 0x15, 0x66, 0xd7, 0xbd, 0xf0, 0xce, - 0x50, 0xce, 0xa0, 0x34, 0xec, 0x61, 0xf1, 0xc8, 0xe9, 0x5a, 0x63, 0xd7, - 0x70, 0x3f, 0x48, 0x82, 0x7e, 0x67, 0xeb, 0x64, 0xb9, 0xc3, 0x3e, 0x42, - 0x74, 0x4b, 0x9d, 0xde, 0x73, 0x65, 0x0c, 0x7d, 0xd6, 0xe9, 0x9f, 0x27, - 0xf5, 0x07, 0xd7, 0x89, 0xde, 0xd2, 0xa4, 0x0a, 0x19, 0x02, 0x52, 0x4c, - 0x1d, 0xaf, 0x23, 0x28, 0xfd, 0x4e, 0x2d, 0xe6, 0x75, 0x86, 0xf4, 0x64, - 0xb4, 0x43, 0x2e, 0x92, 0xc2, 0xa3, 0x75, 0x28, 0x9f, 0x1f, 0x53, 0xc3, - 0x45, 0x09, 0xf7, 0x35, 0x80, 0x8e, 0xd2, 0x3b, 0x4d, 0xfa, 0xbf, 0x54, - 0xd5, 0x37, 0x43, 0x5d, 0xf8, 0xde, 0x4d, 0x0e, 0x9e, 0xb0, 0x0c, 0xa8, - 0xd5, 0x40, 0x97, 0x3d, 0xe9, 0x88, 0xa5, 0x21, 0x7d, 0xc5, 0xc1, 0xdf, - 0xc0, 0xd3, 0xa9, 0x1d, 0x0e, 0xad, 0x3a, 0x46, 0xa3, 0xcd, 0x48, 0xb0, - 0x59, 0x3c, 0x97, 0xc8, 0x75, 0xaf, 0x76, 0x41, 0xb0, 0x1e, 0x16, 0x26, - 0x5a, 0x6e, 0xfa, 0xad, 0x2c, 0xc9, 0x44, 0x1e, 0x11, 0xfa, 0x18, 0x74, - 0xba, 0xa0, 0xa9, 0x84, 0xbd, 0x90, 0x97, 0xc8, 0x84, 0x43, 0x49, 0x04, - 0x87, 0x85, 0x21, 0xfe, 0x8a, 0x73, 0xc7, 0x0d, 0x01, 0x00, 0x00, 0xc0, - 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, - 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, - 0x0c, 0x84, 0x44, 0x6a, 0xb8, 0x79, 0xba, 0x8a, 0x11, 0xd0, 0x52, 0x61, - 0x79, 0xe4, 0x4c, 0xb3, 0x26, 0x0c, 0x7e, 0xfa, 0xb8, 0x52, 0xd0, 0xba, - 0x7f, 0x7b, 0x83, 0xd5, 0x09, 0x92, 0x87, 0x63, 0x98, 0xa1, 0xd2, 0x1f, - 0xd0, 0xeb, 0x40, 0x2d, 0x26, 0x4a, 0x64, 0x68, 0xe8, 0x9a, 0x5d, 0x5a, - 0x9c, 0x1a, 0x26, 0x8d, 0xe0, 0x59, 0x13, 0xe3, 0x61, 0xf0, 0x77, 0xd4, - 0xf7, 0x9b, 0xfd, 0x7b, 0xc8, 0xc2, 0xce, 0x35, 0x24, 0x74, 0x78, 0x4f, - 0x21, 0xdb, 0xf5, 0x53, 0x1b, 0xcb, 0x47, 0xd1, 0x2e, 0x86, 0xab, 0x6e, - 0x18, 0x3f, 0x0d, 0x55, 0xfe, 0x82, 0x35, 0x6b, 0x0a, 0xb6, 0x53, 0xa3, - 0xbf, 0xe2, 0xc5, 0x13, 0x36, 0xf5, 0x1c, 0xae, 0xea, 0x41, 0x64, 0x55, - 0xf0, 0x02, 0x3e, 0xf9, 0xa5, 0xe1, 0xe3, 0xcc, 0xf0, 0x0d, 0xbc, 0x67, - 0xc9, 0x4b, 0x28, 0xa4, 0x92, 0x66, 0xb6, 0xb3, 0xbc, 0x81, 0x12, 0x24, - 0x9d, 0x1e, 0x6f, 0x2b, 0x00, 0x64, 0xdb, 0xdf, 0xc2, 0xf5, 0x00, 0xb6, - 0x7e, 0x21, 0x3f, 0x9d, 0x00, 0xbd, 0xdd, 0x5a, 0x2d, 0x58, 0x64, 0x10, - 0x98, 0xff, 0x52, 0x6b, 0x62, 0x7c, 0xee, 0x01, 0x66, 0x32, 0x4f, 0xda, - 0xe1, 0x52, 0xc0, 0x37, 0xb7, 0xa6, 0xbd, 0xe3, 0x37, 0x93, 0xcd, 0xd3, - 0xa7, 0x4a, 0x8d, 0xf3, 0x4e, 0x71, 0xc3, 0x10, 0xfd, 0x76, 0x0d, 0xa3, - 0xce, 0xda, 0x07, 0x67, 0xde, 0x4c, 0x74, 0x00, 0xfa, 0x34, 0xa5, 0xe7, - 0x47, 0xc9, 0x12, 0x4d, 0x4d, 0xee, 0xa1, 0x2c, 0x69, 0xd4, 0x80, 0x43, - 0xf8, 0xa0, 0xa1, 0xdc, 0x47, 0x1a, 0x87, 0x94, 0xf1, 0xbb, 0x8b, 0x4f, - 0xb0, 0x92, 0xf8, 0x7f, 0xe5, 0x3e, 0x9b, 0xc6, 0xc8, 0x9c, 0x6e, 0xd8, - 0x3a, 0xe1, 0xd5, 0x64, 0x69, 0x33, 0x33, 0xbe, 0x61, 0xdd, 0xad, 0x5d, - 0xfc, 0x44, 0x7b, 0x46, 0x90, 0xad, 0x52, 0x67, 0xa3, 0x66, 0x20, 0xf0, - 0xc8, 0xa6, 0x6c, 0x9f, 0xd4, 0xbe, 0x5b, 0xb9, 0x93, 0xcc, 0x6d, 0x38, - 0x2f, 0x05, 0xac, 0x52, 0x45, 0x59, 0x84, 0x55, 0xd4, 0x88, 0xaf, 0x52, - 0xe6, 0x9b, 0xb9, 0x26, 0xaa, 0x72, 0xd4, 0x5c, 0x57, 0x8e, 0xac, 0x7a, - 0x8e, 0x71, 0x98, 0xd3, 0xe8, 0x1a, 0xbc, 0x46, 0xcd, 0x89, 0x9a, 0x72, - 0x89, 0xfd, 0x89, 0xfb, 0xfe, 0x53, 0x8a, 0x72, 0x1b, 0x92, 0xab, 0x09, - 0x92, 0x52, 0xcb, 0x0a, 0x8d, 0x3a, 0x2f, 0x8d, 0xf8, 0xe2, 0x16, 0x33, - 0x2d, 0xbb, 0x9c, 0x0e, 0x8d, 0x05, 0x7c, 0xa6, 0x27, 0xad, 0xff, 0x33, - 0xed, 0x14, 0xf3, 0xf5, 0x5d, 0xe3, 0x75, 0x3e, 0x86, 0xf3, 0xbe, 0xa0, - 0x62, 0xe7, 0x3b, 0x98, 0x9d, 0xad, 0xef, 0xfc, 0x96, 0x63, 0xc4, 0x3d, - 0xde, 0xdd, 0x0c, 0xfb, 0x33, 0x67, 0x48, 0x5b, 0x36, 0x52, 0xe5, 0x9f, - 0xff, 0x0e, 0xb3, 0x06, 0x7b, 0x9a, 0x56, 0x83, 0xe0, 0x42, 0x97, 0xe0, - 0x3f, 0x12, 0x35, 0xb6, 0xdd, 0xe8, 0x40, 0x8c, 0x48, 0x5e, 0x8b, 0xdf, - 0x59, 0x49, 0x7a, 0xcf, 0xe9, 0x59, 0xd2, 0xbd, 0xf2, 0xab, 0x00, 0x13, - 0xdc, 0xe6, 0xdb, 0xa4, 0x44, 0x6f, 0xad, 0x31, 0x8e, 0x87, 0x0a, 0x9c, - 0x17, 0xa8, 0x2d, 0xe1, 0x65, 0x7f, 0xf8, 0x86, 0x1d, 0x25, 0x45, 0x5f, - 0x8b, 0x57, 0x1c, 0x2e, 0x51, 0x60, 0xda, 0x6a, 0x64, 0xed, 0x33, 0x23, - 0x63, 0xde, 0xce, 0x79, 0x0d, 0x16, 0x21, 0x97, 0xc0, 0xea, 0xdb, 0x4a, - 0xc3, 0x77, 0xc7, 0x90, 0xc1, 0xdc, 0xc3, 0x5d, 0x9b, 0xf1, 0xc1, 0xb3, - 0x54, 0x6a, 0x13, 0x51, 0xa9, 0x1e, 0x88, 0x51, 0x3c, 0x69, 0xa9, 0x4b, - 0x5a, 0x21, 0xe4, 0x35, 0x7c, 0xbd, 0x3a, 0x3c, 0x4d, 0x76, 0x5f, 0x2d, - 0xa8, 0xb6, 0x61, 0x61, 0x64, 0xd8, 0xd1, 0x78, 0x81, 0x78, 0x52, 0x4e, - 0xfa, 0xc7, 0x0f, 0xea, 0xa5, 0xbb, 0xdb, 0xc6, 0xe6, 0xa0, 0xe0, 0x04, - 0xc6, 0xe1, 0x20, 0x27, 0x1a, 0xe1, 0xc8, 0x8f, 0xc4, 0x24, 0x3e, 0x8a, - 0x6c, 0x36, 0x15, 0x47, 0xb0, 0x03, 0x27, 0x4d, 0x1c, 0x46, 0xae, 0xc4, - 0x3e, 0x44, 0x4f, 0xd4, 0xbf, 0xd2, 0x28, 0x23, 0xcb, 0x50, 0xbb, 0x1c, - 0x31, 0x79, 0x0a, 0x5c, 0x10, 0x8b, 0x70, 0x56, 0xe8, 0xcc, 0x21, 0xda, - 0x92, 0xf9, 0x1c, 0x54, 0x80, 0xd6, 0x86, 0x9a, 0xd5, 0x9a, 0x72, 0xe5, - 0x52, 0xd2, 0x80, 0x27, 0xf3, 0xc2, 0xf4, 0xb2, 0x39, 0x0a, 0x70, 0x2e, - 0x55, 0xa2, 0x7a, 0x56, 0x6a, 0x1e, 0xca, 0xb6, 0x0f, 0x95, 0x24, 0x52, - 0x9c, 0x0c, 0x18, 0xa1, 0xa3, 0x5b, 0x2c, 0x0d, 0xbf, 0x9c, 0x60, 0x79, - 0xfc, 0xb7, 0x96, 0x4c, 0xda, 0xa2, 0x8d, 0xf1, 0xf6, 0xc4, 0xbf, 0xab, - 0x23, 0x4e, 0x4d, 0x95, 0xd0, 0x82, 0xf1, 0x6f, 0x50, 0x8c, 0x9d, 0x73, - 0x0e, 0xbe, 0x65, 0x94, 0x6e, 0x6a, 0x3b, 0xab, 0xc2, 0x7b, 0x7d, 0xd5, - 0x36, 0xf9, 0xde, 0x8b, 0x01, 0xd5, 0x01, 0x66, 0x8c, 0xe7, 0x32, 0xa5, - 0x42, 0xfc, 0xd7, 0x5d, 0xbb, 0xe0, 0x0e, 0xf7, 0xfd, 0xc1, 0xd5, 0x40, - 0x5a, 0x2e, 0xa4, 0x97, 0x16, 0x30, 0xda, 0xbb, 0x97, 0x24, 0x60, 0x7f, - 0x04, 0xd6, 0xab, 0x61, 0xcc, 0x10, 0x65, 0x3e, 0x80, 0x94, 0xc5, 0x18, - 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, - 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, - 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xe2, 0xf3, 0xbc, 0x48, - 0x67, 0x4e, 0x9d, 0xf1, 0x44, 0x6b, 0x64, 0x78, 0xc3, 0xd4, 0xb5, 0x9a, - 0xec, 0x61, 0xfc, 0x1b, 0xe5, 0x54, 0xc5, 0x2e, 0xc3, 0x6b, 0xb9, 0x9a, - 0xb9, 0xa4, 0xed, 0x2a, 0x2f, 0xd5, 0x44, 0x72, 0x1e, 0xbc, 0x5d, 0xca, - 0xdc, 0x18, 0xba, 0xae, 0xc5, 0x51, 0x00, 0xd3, 0xc2, 0x0f, 0x62, 0x22, - 0x31, 0xa7, 0x60, 0x9c, 0xda, 0xe8, 0x6f, 0x85, 0x5a, 0x53, 0xe7, 0x00, - 0xd6, 0x89, 0xfa, 0xd0, 0x0c, 0x5a, 0xcf, 0x05, 0x41, 0x17, 0x35, 0x96, - 0x3f, 0xcf, 0x42, 0xce, 0xd2, 0xea, 0xa4, 0x74, 0xdc, 0x0e, 0x11, 0x63, - 0xab, 0xad, 0x23, 0xf8, 0xba, 0x8f, 0x93, 0x69, 0xe3, 0xc0, 0xd9, 0x7e, - 0x62, 0xa5, 0xa3, 0x0e, 0x68, 0xe5, 0x06, 0x62, 0x5f, 0x80, 0xb1, 0x75, - 0x1f, 0x5b, 0x6f, 0x82, 0xa5, 0x1a, 0xa0, 0xc6, 0x88, 0x4f, 0x75, 0x63, - 0xb7, 0xa7, 0x65, 0x4a, 0x78, 0x55, 0xee, 0xbc, 0xf4, 0xea, 0x65, 0x90, - 0x5b, 0x8e, 0xe7, 0xa0, 0xd8, 0x0e, 0xc7, 0x7d, 0xa0, 0x41, 0x25, 0xd5, - 0x12, 0xc2, 0x03, 0xf9, 0x13, 0x7c, 0x07, 0x27, 0x79, 0x1f, 0x15, 0x12, - 0x25, 0xc6, 0x51, 0xe5, 0xcc, 0xcd, 0x92, 0xdc, 0xb6, 0x6f, 0x65, 0x17, - 0x31, 0x3f, 0x1b, 0x45, 0x72, 0x0c, 0x8f, 0x0d, 0xd1, 0x74, 0x0f, 0x49, - 0x83, 0x2b, 0xbc, 0x55, 0xd2, 0x95, 0x4a, 0x2a, 0x1c, 0x90, 0x97, 0x96, - 0x89, 0xb6, 0x94, 0x8c, 0x63, 0xa0, 0xdb, 0x8c, 0x91, 0x33, 0x8d, 0xdd, - 0xd3, 0x27, 0x96, 0x7a, 0x06, 0x92, 0x7c, 0xaa, 0xc3, 0x0a, 0x07, 0x9b, - 0xfe, 0x3d, 0x17, 0x54, 0x8d, 0xbc, 0xe8, 0x7f, 0x79, 0x74, 0xfe, 0x0c, - 0x9e, 0x8d, 0xf8, 0xfa, 0xf3, 0xa4, 0xde, 0xdd, 0xe4, 0x3c, 0x9c, 0x0c, - 0xb4, 0x39, 0x9b, 0x1c, 0x2c, 0x39, 0x52, 0x9d, 0x52, 0xc6, 0x37, 0x47, - 0x61, 0x5d, 0x90, 0xf9, 0x78, 0x22, 0xe0, 0xfe, 0x12, 0xc0, 0xd1, 0x93, - 0xa0, 0x00, 0x2e, 0x63, 0x28, 0x07, 0x30, 0x04, 0xaa, 0xb8, 0xaa, 0xe6, - 0x1f, 0x81, 0xe7, 0x8a, 0xeb, 0xd6, 0x8e, 0x1b, 0x14, 0xc9, 0x66, 0x2f, - 0xec, 0xb9, 0x41, 0xc0, 0x04, 0xee, 0xc2, 0x42, 0x62, 0x41, 0x5a, 0xd0, - 0xb9, 0x28, 0x7a, 0xf8, 0x9f, 0xbd, 0x39, 0x91, 0xed, 0xa5, 0x87, 0x5a, - 0x76, 0x40, 0xe5, 0x11, 0xc3, 0x6a, 0x01, 0x3d, 0x79, 0x5e, 0xe3, 0xde, - 0x1c, 0x42, 0xc0, 0x53, 0xf3, 0x49, 0x17, 0xaf, 0x14, 0x8f, 0xfd, 0xea, - 0x75, 0x18, 0xc1, 0x5d, 0x67, 0xe3, 0xfa, 0xa4, 0xb2, 0xee, 0xcb, 0x1c, - 0x47, 0xd7, 0x68, 0x84, 0x11, 0x00, 0xda, 0x56, 0xc5, 0xd2, 0x25, 0x43, - 0x2b, 0x29, 0x12, 0x2c, 0xe8, 0x33, 0x59, 0xee, 0x07, 0x55, 0x55, 0x98, - 0xf6, 0xb4, 0x2e, 0xec, 0x8c, 0xb9, 0x26, 0x04, 0xbd, 0xef, 0x27, 0x86, - 0x72, 0x2b, 0x0d, 0x82, 0x85, 0x85, 0x51, 0x36, 0x95, 0x86, 0x55, 0x22, - 0x0c, 0xe5, 0x14, 0xb9, 0x67, 0x46, 0x5d, 0xa7, 0xd3, 0x13, 0xab, 0x30, - 0x61, 0x32, 0xb2, 0x0d, 0x9c, 0x3e, 0x05, 0x4b, 0x06, 0x73, 0x83, 0x78, - 0x2e, 0x63, 0xae, 0xaf, 0x2e, 0x4a, 0xe3, 0x35, 0x39, 0x4f, 0xbb, 0x67, - 0x7b, 0xa9, 0x0c, 0x68, 0xab, 0xbb, 0x1b, 0x21, 0x30, 0x82, 0x1f, 0x72, - 0x5c, 0xfb, 0x2e, 0x45, 0xcc, 0x3c, 0xad, 0x91, 0xe2, 0xd6, 0xf1, 0xae, - 0x9a, 0x01, 0x0a, 0x31, 0x5a, 0x1e, 0x75, 0x03, 0xe5, 0xd4, 0xc3, 0x0d, - 0xda, 0x12, 0x50, 0x5c, 0x67, 0x7b, 0x42, 0x5a, 0x46, 0xd0, 0xc1, 0xb0, - 0x1c, 0x9d, 0x9a, 0xeb, 0xb9, 0x7d, 0x41, 0xa2, 0xfc, 0xdd, 0xf3, 0x3a, - 0x3a, 0x38, 0x9d, 0x62, 0xdd, 0x3a, 0xf0, 0x6b, 0xad, 0x85, 0x79, 0x73, - 0x4e, 0x3d, 0x9b, 0x1e, 0x4c, 0x02, 0x6b, 0x7e, 0x5d, 0x5c, 0xa9, 0x25, - 0xe4, 0x57, 0x92, 0xbf, 0x29, 0x27, 0x93, 0x6f, 0x16, 0x48, 0xfb, 0x37, - 0x31, 0xa7, 0x2f, 0x79, 0x95, 0x0f, 0xd6, 0x44, 0x74, 0x94, 0xbd, 0x6b, - 0xc0, 0x03, 0x78, 0xe5, 0x61, 0xf6, 0x3b, 0x21, 0xf7, 0x0f, 0x67, 0x80, - 0xc0, 0x16, 0xde, 0xc8, 0x94, 0xab, 0x2f, 0x31, 0xde, 0x2e, 0x2e, 0x0c, - 0x43, 0x15, 0x56, 0xbc, 0xf2, 0xa2, 0xf4, 0x0d, 0x5b, 0xa5, 0xd1, 0x23, - 0xe5, 0xcc, 0x64, 0xe4, 0x2e, 0x48, 0xe8, 0x43, 0x3a, 0x5f, 0x59, 0x91, - 0x63, 0xe7, 0xc8, 0x86, 0x5d, 0x2f, 0x29, 0x03, 0x8a, 0xef, 0xfc, 0xa7, - 0x53, 0xd2, 0xb0, 0x06, 0x97, 0xfd, 0x55, 0xa6, 0x3d, 0x4a, 0x98, 0x7e, - 0x6d, 0x2e, 0x24, 0x74, 0xb1, 0x65, 0x74, 0x20, 0x1a, 0x9c, 0x46, 0xcb, - 0x63, 0x07, 0x4c, 0x49, 0xdf, 0x5c, 0x2a, 0x2c, 0x14, 0xc0, 0x8a, 0x3b, - 0xe5, 0xae, 0x7c, 0x46, 0x51, 0x12, 0x94, 0x7a, 0xd6, 0x27, 0x32, 0xc6, - 0x73, 0xd4, 0xeb, 0xba, 0xf3, 0x41, 0x5f, 0xde, 0x37, 0x69, 0x4c, 0x75, - 0xee, 0xee, 0xfe, 0x06, 0x9c, 0x95, 0x0a, 0x6c, 0x0a, 0x04, 0x89, 0xd1, - 0xc2, 0x70, 0xc0, 0x66, 0xd9, 0x2a, 0x49, 0xcf, 0xbb, 0x70, 0x26, 0x43, - 0x84, 0x93, 0x07, 0xe1, 0x4d, 0x67, 0xf8, 0xfb, 0x5b, 0xe5, 0x35, 0x48, - 0xa5, 0xec, 0x0a, 0x05, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, - 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, - 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, - 0x9f, 0xa3, 0x30, 0xec, 0x75, 0xf4, 0x6c, 0xc4, 0x8c, 0xf1, 0xd4, 0xeb, - 0xc3, 0x18, 0xc4, 0x10, 0xd9, 0xc1, 0xa2, 0xcc, 0x92, 0xae, 0xdc, 0x35, - 0x43, 0x7f, 0x9c, 0x51, 0x05, 0x0c, 0x71, 0x54, 0xcd, 0xe6, 0x1c, 0x9f, - 0x71, 0xb8, 0x6a, 0x8d, 0x44, 0x1c, 0x4b, 0x04, 0xe5, 0xff, 0x57, 0xb4, - 0xb6, 0x32, 0x7b, 0x04, 0x69, 0x83, 0x6e, 0x5f, 0x6b, 0xce, 0xa5, 0xf3, - 0xa6, 0x2d, 0x1f, 0x02, 0x4e, 0xfa, 0xb9, 0x1f, 0x7c, 0x4b, 0xc5, 0x2d, - 0x4e, 0xa4, 0x44, 0xa1, 0xbd, 0x96, 0x96, 0x94, 0xf2, 0x9f, 0x01, 0x28, - 0xc3, 0x11, 0xdf, 0x34, 0xb1, 0x0e, 0x9e, 0xe3, 0x6f, 0xa7, 0xaa, 0x02, - 0xed, 0xa8, 0xc9, 0x41, 0x35, 0xd9, 0xb5, 0x4a, 0x83, 0xdd, 0x73, 0x28, - 0x60, 0xe2, 0x09, 0xb4, 0xfe, 0x1e, 0x1e, 0xb7, 0x00, 0xa3, 0x09, 0x44, - 0x3c, 0x9d, 0x1d, 0x53, 0x77, 0x73, 0xbb, 0x61, 0xca, 0xa8, 0xcc, 0xad, - 0x60, 0x1c, 0x12, 0xf9, 0x6f, 0x8d, 0x1d, 0xb5, 0xfc, 0x23, 0x1d, 0x58, - 0x29, 0x30, 0xcd, 0x9e, 0xc9, 0x82, 0xac, 0x7d, 0x39, 0x5c, 0xcf, 0xb3, - 0xd8, 0x1f, 0x73, 0x1a, 0xa9, 0xe0, 0x2b, 0x78, 0x58, 0x89, 0x66, 0x9b, - 0xbe, 0xdd, 0x9b, 0xbf, 0x6d, 0xeb, 0xd0, 0x18, 0x0b, 0xa2, 0x33, 0x31, - 0x7d, 0xfd, 0xb8, 0xc5, 0x30, 0xcf, 0x23, 0xb1, 0xc6, 0x03, 0x7b, 0x08, - 0xb9, 0x61, 0x7c, 0xee, 0xad, 0xc1, 0x33, 0xc3, 0x79, 0x2d, 0xad, 0x63, - 0x0a, 0x6d, 0xab, 0xd5, 0xa5, 0x2f, 0x42, 0x6f, 0x86, 0xaa, 0xc7, 0x95, - 0x8a, 0x78, 0x97, 0x40, 0x9d, 0x72, 0x2f, 0x52, 0x75, 0x29, 0x2e, 0xd0, - 0x42, 0x02, 0x93, 0x58, 0x81, 0xf6, 0x62, 0x9a, 0x9d, 0xc0, 0xb8, 0x35, - 0x16, 0xde, 0x20, 0xe9, 0x62, 0x65, 0x80, 0xb5, 0x1e, 0xe8, 0x1e, 0xa3, - 0x32, 0x1e, 0x3a, 0x72, 0xa1, 0x80, 0xd3, 0x68, 0xa7, 0x76, 0x6c, 0xd3, - 0x1f, 0x76, 0x44, 0x80, 0x68, 0x62, 0x6a, 0x6d, 0xad, 0xc1, 0xec, 0x8a, - 0x38, 0x3a, 0xd6, 0xc2, 0xc9, 0x74, 0x0d, 0x66, 0xd7, 0x3a, 0x99, 0x14, - 0xe6, 0xa2, 0x4c, 0xb5, 0x88, 0x16, 0x12, 0x77, 0xdb, 0xc0, 0xaa, 0x69, - 0xdc, 0xf0, 0x5e, 0x27, 0x63, 0x25, 0x07, 0x1b, 0xf5, 0x56, 0x55, 0x0e, - 0x71, 0x46, 0x5f, 0xf6, 0xc3, 0x1a, 0x17, 0x14, 0xe3, 0x76, 0xc2, 0x68, - 0x56, 0x36, 0x29, 0x4a, 0x0e, 0x58, 0x97, 0xb3, 0xe7, 0x4f, 0x7b, 0x92, - 0x21, 0x24, 0xdd, 0xe1, 0xde, 0xd3, 0x0d, 0x85, 0x09, 0x97, 0xe8, 0xeb, - 0xbd, 0xbe, 0x51, 0x1a, 0x9e, 0xb6, 0x7d, 0xd2, 0xb0, 0xf4, 0x6b, 0x60, - 0x04, 0xa3, 0xbd, 0x8c, 0x98, 0xfa, 0x8c, 0x83, 0x2f, 0x22, 0x58, 0xa5, - 0x38, 0xde, 0x23, 0xdd, 0x89, 0x42, 0x26, 0x5f, 0x25, 0x18, 0xae, 0x59, - 0x6c, 0xaf, 0xbe, 0xd1, 0xc5, 0x5f, 0xf6, 0x68, 0x76, 0xe9, 0x33, 0xed, - 0x03, 0xcb, 0x1e, 0x55, 0x2e, 0x95, 0x7f, 0xe4, 0xc8, 0xa9, 0x36, 0x2e, - 0x30, 0x02, 0xf1, 0xf2, 0x6b, 0x0b, 0x3f, 0x43, 0x1c, 0x7e, 0x2b, 0x23, - 0xfa, 0x96, 0xe9, 0xb8, 0xb1, 0x22, 0x44, 0xd9, 0xb5, 0x26, 0xd4, 0x6c, - 0x6a, 0xa2, 0x11, 0xb9, 0x3e, 0xe3, 0x11, 0xe4, 0xf6, 0x8d, 0x1b, 0x16, - 0xa6, 0x2e, 0x1a, 0x40, 0x32, 0x8c, 0x72, 0x48, 0xe4, 0x5c, 0x8e, 0x95, - 0x5c, 0x78, 0xfa, 0x3e, 0xfe, 0x64, 0x3e, 0xf8, 0x1e, 0xc8, 0x86, 0x43, - 0x76, 0xa1, 0xb7, 0xa2, 0x25, 0x60, 0xff, 0xf0, 0xcc, 0xc5, 0x13, 0x67, - 0x37, 0x67, 0x3c, 0xd7, 0x54, 0x84, 0xc4, 0x8d, 0x59, 0x8a, 0x62, 0x19, - 0x1e, 0x59, 0x94, 0x2b, 0x44, 0xb8, 0x79, 0x2d, 0x07, 0x72, 0x05, 0xe2, - 0x76, 0xba, 0x77, 0x0d, 0xec, 0xc1, 0xf0, 0x24, 0xf4, 0x27, 0xe3, 0xda, - 0x4f, 0xcd, 0xa5, 0xe8, 0x96, 0x17, 0xc9, 0x38, 0xad, 0xe0, 0x7d, 0xed, - 0x2e, 0xa5, 0xe5, 0x02, 0x6b, 0x75, 0x5d, 0x80, 0x28, 0x8c, 0x42, 0xeb, - 0x71, 0x73, 0x83, 0x5f, 0x53, 0x66, 0xe6, 0xbe, 0xfd, 0xf8, 0x42, 0xd1, - 0xce, 0x2d, 0x4a, 0x4c, 0xc2, 0xdc, 0xce, 0x0e, 0x3a, 0x95, 0x32, 0x6c, - 0x89, 0x48, 0x86, 0x97, 0xf6, 0xc7, 0x08, 0xb8, 0x0c, 0x03, 0x76, 0x6a, - 0xce, 0xd6, 0x8b, 0x9d, 0xa4, 0x63, 0xe5, 0x1f, 0x69, 0xed, 0x50, 0x57, - 0xd9, 0x38, 0x9b, 0xa2, 0x1f, 0x64, 0x0c, 0xbe, 0x0d, 0x0a, 0xe6, 0xe5, - 0x9d, 0x9b, 0x53, 0x07, 0x3f, 0xcf, 0xf9, 0x72, 0x16, 0x58, 0x20, 0x3d, - 0xbd, 0xa2, 0xc6, 0x92, 0xfa, 0x9f, 0xe4, 0x6b, 0x7f, 0x7c, 0xd4, 0x11, - 0x2a, 0x8e, 0x4c, 0xd3, 0x92, 0x5d, 0xd4, 0x9c, 0x06, 0xd4, 0xc6, 0xda, - 0xae, 0x2d, 0x15, 0x50, 0xfa, 0x8e, 0xe6, 0x1c, 0x06, 0xc1, 0x34, 0x74, - 0x98, 0xd0, 0xa6, 0xee, 0x5b, 0xe4, 0x4c, 0x91, 0x42, 0x93, 0xcb, 0x4a, - 0x3f, 0xfb, 0x68, 0x85, 0x7b, 0x54, 0x96, 0xce, 0xa6, 0xc7, 0x2b, 0x40, - 0xee, 0x93, 0x1c, 0x21, 0x06, 0x20, 0x03, 0x1b, 0x97, 0xc9, 0xce, 0x80, - 0xcc, 0xb3, 0xab, 0x17, 0xd7, 0x76, 0x5d, 0x1c, 0xe5, 0xe3, 0xc6, 0xa9, - 0xf1, 0xa2, 0xc9, 0x7e, 0xcc, 0x40, 0x67, 0x14, 0x01, 0x00, 0x00, 0xc0, - 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, - 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, - 0x0c, 0x84, 0x44, 0x6a, 0x42, 0x76, 0xb1, 0x75, 0x91, 0x09, 0x6b, 0x5e, - 0xc2, 0x65, 0x69, 0xce, 0xae, 0x0d, 0x7f, 0x1d, 0xaf, 0x26, 0x34, 0x8b, - 0xa1, 0x87, 0x23, 0x41, 0xf4, 0xd4, 0xbc, 0x48, 0x21, 0xd6, 0xd6, 0x62, - 0x76, 0xef, 0xf7, 0x62, 0x6e, 0xf0, 0x67, 0x30, 0xb9, 0x58, 0xee, 0x80, - 0xff, 0x1d, 0x4f, 0x4b, 0xa9, 0x66, 0xd8, 0x19, 0x1e, 0x19, 0xae, 0xf2, - 0x5c, 0x89, 0x99, 0xf3, 0xb3, 0xe2, 0x7b, 0x0d, 0xc6, 0x4f, 0xee, 0xbe, - 0x73, 0x08, 0xe9, 0x05, 0x3f, 0x2e, 0x9a, 0xab, 0x6d, 0x24, 0x53, 0x3a, - 0x63, 0xa8, 0xc4, 0x29, 0x7b, 0xe6, 0xc4, 0xe2, 0x55, 0xb8, 0xec, 0x81, - 0xfc, 0xad, 0x3f, 0x6e, 0x6b, 0xae, 0x66, 0xc3, 0x4b, 0x09, 0x95, 0xbe, - 0x4c, 0x6f, 0x66, 0x84, 0x9c, 0xcb, 0xb1, 0xa2, 0x44, 0xca, 0xe9, 0x11, - 0x5b, 0x50, 0x3a, 0x54, 0x3a, 0xa2, 0x88, 0xc5, 0xef, 0xf6, 0xa2, 0x48, - 0xc9, 0xda, 0x52, 0x05, 0x0a, 0xe6, 0xd1, 0xba, 0xf7, 0x07, 0x2b, 0xc6, - 0x67, 0x55, 0xca, 0xed, 0x03, 0x61, 0x5c, 0xf8, 0x07, 0x82, 0xbf, 0xa0, - 0x11, 0x9a, 0x73, 0x35, 0xa9, 0x86, 0x88, 0x01, 0xed, 0x1b, 0x63, 0x18, - 0x49, 0x12, 0x08, 0x6e, 0x0c, 0x82, 0x9c, 0x1e, 0xfa, 0x81, 0x96, 0xf5, - 0x5a, 0x2c, 0x07, 0xc5, 0x59, 0xd3, 0x47, 0xf5, 0xe3, 0x10, 0x73, 0x9d, - 0x76, 0x0d, 0xaa, 0x59, 0x7d, 0x74, 0xc5, 0x49, 0xfb, 0x81, 0x98, 0xb1, - 0x90, 0x9f, 0xc6, 0xda, 0x37, 0xaf, 0xac, 0xeb, 0x49, 0xe6, 0xd6, 0x38, - 0x8b, 0x3d, 0x6b, 0xb8, 0xc0, 0xd5, 0x56, 0x18, 0x58, 0xa1, 0x15, 0x5f, - 0x9a, 0x39, 0x21, 0x26, 0xeb, 0x33, 0x4d, 0x11, 0x92, 0xec, 0x5a, 0x1d, - 0x9e, 0x92, 0x98, 0x24, 0x14, 0x07, 0x89, 0xe6, 0xf8, 0xc9, 0xa1, 0x30, - 0x8e, 0xf8, 0x27, 0x35, 0xc3, 0x6a, 0x23, 0x4b, 0xec, 0x18, 0x7d, 0x6f, - 0xe5, 0x4b, 0xdd, 0x8c, 0xed, 0xd4, 0xbc, 0x09, 0x23, 0x11, 0x63, 0x71, - 0x58, 0xa7, 0x25, 0x22, 0xa6, 0xaf, 0x95, 0xb8, 0x8b, 0x74, 0x6b, 0xa8, - 0x06, 0x7f, 0x4f, 0x14, 0x02, 0x2a, 0x76, 0x49, 0xe6, 0x9e, 0x51, 0x53, - 0xdd, 0x0e, 0xb8, 0x08, 0xa1, 0x0c, 0xef, 0x93, 0x6f, 0x18, 0x31, 0x97, - 0xa6, 0x31, 0x8a, 0x79, 0x4d, 0xb4, 0xf4, 0xac, 0x93, 0x25, 0x71, 0x6f, - 0x1c, 0x47, 0x61, 0x7c, 0xdd, 0x8a, 0x24, 0xac, 0x60, 0xed, 0xe1, 0x8c, - 0xbc, 0xe0, 0xf7, 0xa2, 0xc4, 0x7e, 0xcb, 0x74, 0x50, 0x50, 0x03, 0xa2, - 0x12, 0x13, 0x38, 0x39, 0x09, 0x7f, 0x1a, 0x0d, 0x29, 0x64, 0xb9, 0x43, - 0xd6, 0xe2, 0x6e, 0x34, 0xd2, 0x61, 0xb6, 0x68, 0x3a, 0x0a, 0x9d, 0xe7, - 0xcc, 0xcf, 0x57, 0xc0, 0xa0, 0x95, 0xe6, 0xe4, 0x4e, 0x85, 0xfe, 0xbe, - 0xd0, 0xff, 0xa5, 0x40, 0xa9, 0x76, 0x16, 0x72, 0x7e, 0x93, 0x1c, 0x59, - 0xbd, 0x7d, 0xd7, 0x72, 0x1e, 0xc2, 0x6b, 0x06, 0x3d, 0x85, 0x64, 0xb1, - 0xd4, 0x39, 0x1a, 0x63, 0x1d, 0xad, 0x66, 0x76, 0x45, 0xa3, 0x26, 0x18, - 0xa7, 0xf0, 0x65, 0x72, 0x7d, 0x45, 0x39, 0xeb, 0xe1, 0xf4, 0xc4, 0xe9, - 0xd0, 0xbf, 0x2e, 0xe4, 0x1f, 0x0f, 0x41, 0x81, 0x4d, 0xbb, 0x38, 0xdb, - 0x2c, 0x8f, 0xfa, 0x4e, 0x20, 0xab, 0x08, 0x10, 0x13, 0x96, 0x79, 0x90, - 0x43, 0x93, 0x7f, 0x22, 0x94, 0xe5, 0x68, 0xd3, 0xc7, 0x4a, 0x5c, 0x7d, - 0x83, 0x49, 0x59, 0xb4, 0xa0, 0x81, 0xa2, 0x23, 0xe2, 0xa2, 0x32, 0x4f, - 0x1c, 0x5f, 0x46, 0x19, 0x5a, 0xd5, 0x2a, 0x87, 0x3b, 0xe0, 0xe8, 0xec, - 0x8b, 0x76, 0x66, 0x52, 0x02, 0x70, 0x30, 0xcf, 0x51, 0x3e, 0x5d, 0xb8, - 0x72, 0xfd, 0x13, 0x5a, 0x74, 0xa9, 0x93, 0xa5, 0xc0, 0x77, 0x47, 0x68, - 0x6b, 0x7f, 0x93, 0x56, 0x34, 0xe5, 0xc2, 0x0c, 0xd9, 0x7f, 0xa3, 0x15, - 0x2e, 0x11, 0x73, 0x86, 0x88, 0x1c, 0xa8, 0x5e, 0x37, 0xd7, 0xff, 0xb2, - 0xf9, 0x51, 0xee, 0x7b, 0x7e, 0x10, 0x70, 0x05, 0x99, 0xc6, 0xc6, 0x36, - 0x8d, 0xf0, 0x50, 0x44, 0x22, 0xa7, 0xc7, 0x7f, 0x77, 0x12, 0x5b, 0x65, - 0xa8, 0x37, 0x92, 0x39, 0x80, 0xcc, 0x34, 0x3c, 0x6a, 0xac, 0x11, 0xce, - 0xf7, 0x2c, 0xde, 0x24, 0x80, 0x81, 0x8e, 0x19, 0x56, 0x1f, 0xaa, 0xeb, - 0x77, 0xe1, 0x04, 0xc6, 0x37, 0x07, 0x92, 0xe3, 0xd2, 0x51, 0xae, 0x9a, - 0x83, 0xba, 0x84, 0x2e, 0x43, 0x8a, 0xff, 0x73, 0x1e, 0x89, 0x3a, 0x2d, - 0x29, 0x49, 0x98, 0xc5, 0xca, 0xe3, 0x91, 0x75, 0xfb, 0xba, 0x86, 0x64, - 0xf7, 0x4e, 0x57, 0x67, 0x0c, 0x7f, 0x77, 0x86, 0xc5, 0xf0, 0x7c, 0x99, - 0xc6, 0xf1, 0x62, 0x50, 0x1a, 0x31, 0x48, 0x48, 0x45, 0xcb, 0xb4, 0xdc, - 0xf0, 0xa3, 0x1e, 0xea, 0x79, 0xfd, 0x2f, 0x52, 0x5e, 0x7f, 0xfd, 0x23, - 0xee, 0xb4, 0x87, 0xe9, 0x4b, 0xf8, 0x23, 0x6a, 0xfc, 0x5b, 0x55, 0xd6, - 0x44, 0xbc, 0xe9, 0x29, 0x97, 0x89, 0x67, 0xb4, 0xaa, 0xb9, 0xfe, 0xbb, - 0x80, 0x00, 0x9f, 0x30, 0x3b, 0x07, 0x9f, 0xa1, 0x80, 0x3d, 0x4c, 0x33, - 0x08, 0xff, 0xc8, 0xa5, 0x82, 0x7f, 0x56, 0x52, 0x1f, 0xde, 0x71, 0x39, - 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, - 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, - 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xdd, 0x00, 0x03, 0x70, - 0x82, 0x71, 0x6c, 0x13, 0x74, 0x14, 0x36, 0x5a, 0xfc, 0x26, 0xfa, 0x80, - 0xd7, 0x75, 0xdf, 0x1c, 0xc3, 0x99, 0x50, 0xe1, 0x9a, 0xcc, 0xdf, 0x2b, - 0xcf, 0x00, 0xf1, 0x42, 0x42, 0x12, 0xcd, 0x1f, 0xc8, 0xf1, 0x05, 0x8a, - 0x14, 0x96, 0x8d, 0x74, 0xac, 0xd1, 0x4b, 0xaa, 0x4d, 0xd3, 0x49, 0xb1, - 0x85, 0xe4, 0xe6, 0x0e, 0x71, 0xf5, 0x6b, 0x93, 0xa0, 0xa1, 0xb9, 0x67, - 0x7a, 0x02, 0xae, 0x28, 0x3f, 0xab, 0x1e, 0x02, 0x56, 0x67, 0x66, 0x33, - 0xe9, 0xbc, 0xa2, 0xf0, 0xa3, 0xf8, 0xb8, 0x3c, 0xdc, 0x31, 0xf7, 0xa4, - 0x06, 0xed, 0x76, 0xd9, 0x35, 0x89, 0x86, 0x00, 0x0d, 0x58, 0xac, 0x32, - 0xbe, 0x2d, 0xff, 0xb9, 0x31, 0x2e, 0x44, 0x97, 0x59, 0x35, 0x16, 0x39, - 0x26, 0x12, 0x6a, 0x27, 0x9a, 0x15, 0x44, 0x1b, 0x5e, 0x0d, 0xae, 0xbc, - 0x32, 0x91, 0xe0, 0x44, 0xbd, 0x95, 0xb3, 0x5c, 0x5a, 0x07, 0xfd, 0x59, - 0xcf, 0x10, 0x9e, 0x26, 0xac, 0xdd, 0x80, 0x86, 0x60, 0xd7, 0x80, 0x98, - 0x78, 0xc8, 0x6d, 0x68, 0xe9, 0xd3, 0x9b, 0x29, 0x27, 0xfb, 0x81, 0x73, - 0x3c, 0x6e, 0x23, 0xc0, 0x21, 0xb0, 0xd5, 0x31, 0x53, 0x8f, 0x0f, 0xf0, - 0x76, 0x7d, 0x4f, 0xf0, 0x70, 0x37, 0x38, 0xba, 0xa7, 0x27, 0x3f, 0x0f, - 0x29, 0x9d, 0x86, 0x28, 0xe4, 0x2a, 0x86, 0x06, 0xc5, 0x04, 0xe5, 0x46, - 0x4a, 0x2b, 0x84, 0xeb, 0x4c, 0x20, 0xc9, 0x30, 0x3f, 0xc1, 0xd1, 0xfd, - 0x5d, 0x88, 0x77, 0xda, 0x1e, 0x5b, 0xf2, 0x9b, 0x29, 0xb2, 0x58, 0x68, - 0xa4, 0x36, 0x1b, 0x01, 0x27, 0x5b, 0x55, 0x27, 0xc7, 0xa5, 0x3f, 0xa7, - 0x87, 0x07, 0xea, 0x6a, 0xe3, 0x2a, 0x26, 0x6d, 0x11, 0xbf, 0x70, 0x4f, - 0x7e, 0xb1, 0x28, 0x6f, 0x13, 0xbf, 0x95, 0x99, 0x1e, 0xc6, 0xaf, 0x1f, - 0x40, 0x9d, 0xfc, 0x16, 0xd9, 0xa0, 0x1f, 0xd7, 0xce, 0xff, 0xf0, 0xf7, - 0x77, 0x95, 0x14, 0x62, 0xa4, 0xc3, 0x6a, 0x44, 0x6e, 0x72, 0xc7, 0x7d, - 0x9c, 0x9c, 0xa4, 0xac, 0x72, 0x87, 0x1d, 0x51, 0x0e, 0xe5, 0x13, 0x8b, - 0x2d, 0x5b, 0xc0, 0x12, 0x2c, 0xb8, 0xb1, 0x0d, 0x4d, 0xd8, 0xc0, 0xfc, - 0x33, 0x35, 0x58, 0xfe, 0xaa, 0xcb, 0x92, 0xac, 0x3b, 0x4d, 0x24, 0x6d, - 0xd4, 0x4f, 0x9c, 0x32, 0xc9, 0x74, 0x59, 0x2f, 0x53, 0x37, 0x70, 0xae, - 0xc6, 0x7d, 0x46, 0xb5, 0x69, 0xc2, 0xe8, 0x03, 0xb8, 0xe1, 0xa6, 0x3d, - 0x17, 0x21, 0xe5, 0xcf, 0x3a, 0xb0, 0xee, 0x63, 0x6f, 0xa0, 0x33, 0x46, - 0xb3, 0x8b, 0x62, 0xe4, 0x38, 0x39, 0xa1, 0x5a, 0xb5, 0x83, 0xde, 0x20, - 0x2e, 0x0e, 0x10, 0x97, 0xe0, 0x39, 0xf6, 0x71, 0x44, 0x66, 0x28, 0x16, - 0x9a, 0xb8, 0xdb, 0xd2, 0x90, 0xb6, 0xb4, 0x03, 0xa1, 0x18, 0xa2, 0xfa, - 0x8b, 0x1c, 0x4a, 0x8c, 0x04, 0x3c, 0x83, 0xea, 0xfa, 0x72, 0xdc, 0xa7, - 0x69, 0xe3, 0xb0, 0x7b, 0x93, 0x4e, 0x78, 0x52, 0xfb, 0x44, 0x7f, 0x82, - 0xaf, 0xe0, 0xac, 0x38, 0xc1, 0x19, 0xae, 0xd6, 0x88, 0xed, 0xfc, 0x01, - 0x7a, 0xd9, 0x25, 0x18, 0xd2, 0xa0, 0x83, 0x69, 0x77, 0xd1, 0x17, 0x4a, - 0x81, 0x96, 0x52, 0x1f, 0x2e, 0x8c, 0x22, 0xf9, 0xb1, 0xe8, 0x8e, 0x38, - 0xed, 0x48, 0x6d, 0xf0, 0xfc, 0x4c, 0xcc, 0x02, 0x7e, 0x0c, 0x2b, 0x75, - 0x76, 0x02, 0x07, 0x4a, 0x74, 0x78, 0xb5, 0x28, 0xee, 0xcc, 0x84, 0xd2, - 0xa6, 0xd2, 0xbd, 0x62, 0xc3, 0xba, 0xf1, 0x05, 0xb0, 0x31, 0x64, 0x4c, - 0x4e, 0xcc, 0x96, 0x79, 0xc2, 0xd7, 0x0d, 0x70, 0x92, 0x38, 0x59, 0x45, - 0x26, 0xf3, 0x3d, 0xe0, 0xf5, 0x2c, 0xe2, 0xb8, 0x36, 0x06, 0xf0, 0xa5, - 0x85, 0x5a, 0x09, 0x12, 0x6d, 0xd3, 0xf9, 0xe9, 0x52, 0xc5, 0x02, 0x48, - 0x86, 0xff, 0xfd, 0x8f, 0x11, 0xda, 0xdc, 0xb4, 0xde, 0x40, 0xe8, 0x2f, - 0xc6, 0x8f, 0xeb, 0x66, 0xa4, 0xb0, 0x09, 0xca, 0xbb, 0xbc, 0x6e, 0x0f, - 0x2a, 0xcd, 0xbe, 0x76, 0x09, 0x15, 0x3c, 0x42, 0x5d, 0xc0, 0x14, 0x37, - 0xf1, 0xb8, 0x28, 0x59, 0x42, 0x93, 0xc1, 0x6a, 0xda, 0x42, 0xdc, 0x29, - 0xbc, 0xfe, 0xc3, 0x18, 0xed, 0xb5, 0x00, 0x1a, 0x4e, 0x2f, 0x33, 0x6c, - 0x06, 0xed, 0x41, 0xac, 0xf7, 0x84, 0xe1, 0x60, 0x18, 0x31, 0x79, 0xe6, - 0x75, 0x7b, 0x21, 0x65, 0xc1, 0xf6, 0x2d, 0x3d, 0x7f, 0xb6, 0x2d, 0xff, - 0x30, 0xa6, 0x23, 0x44, 0x0c, 0xe9, 0x13, 0x8d, 0x2e, 0x0e, 0x0b, 0x12, - 0x31, 0x44, 0x63, 0x41, 0x4d, 0x85, 0xa6, 0x61, 0xbf, 0x9b, 0x7a, 0xdd, - 0x0e, 0x46, 0x57, 0xad, 0x14, 0x99, 0x00, 0x9b, 0x16, 0x9b, 0x21, 0x36, - 0x59, 0x9c, 0xa2, 0x4f, 0xf1, 0x01, 0x65, 0xaa, 0xc2, 0xa0, 0xc5, 0x6d, - 0xc5, 0x67, 0x9c, 0x46, 0x2f, 0x9c, 0x05, 0x4e, 0xa3, 0x3f, 0xc0, 0x5f, - 0x22, 0x0c, 0x1c, 0x65, 0x0b, 0xc7, 0x95, 0x46, 0x05, 0xe3, 0xd5, 0x34, - 0xe8, 0x5d, 0x82, 0x2d, 0x7e, 0x43, 0xc9, 0x39, 0x3a, 0x37, 0xf2, 0x82, - 0xad, 0x35, 0xb4, 0x7e, 0xe2, 0xd3, 0x55, 0xbc, 0xb8, 0xa1, 0xa0, 0x72, - 0xf4, 0xce, 0x98, 0x72, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, - 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, - 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, - 0x78, 0xed, 0xe1, 0x62, 0x87, 0xe0, 0x4c, 0xd4, 0xf2, 0x55, 0xfc, 0x27, - 0xa3, 0xec, 0xe8, 0x08, 0xcd, 0x10, 0x8c, 0xa2, 0xc1, 0x4d, 0x14, 0xab, - 0x5e, 0x5c, 0xe9, 0xc8, 0xba, 0x6b, 0xbd, 0x07, 0x1d, 0xbf, 0x04, 0x02, - 0x21, 0xe1, 0x9e, 0x1f, 0x39, 0x03, 0xbc, 0x5a, 0xdc, 0xd3, 0xf3, 0xfe, - 0x7c, 0x55, 0x40, 0x48, 0x00, 0x48, 0xdf, 0x2b, 0x72, 0x53, 0xf3, 0x40, - 0x07, 0x8c, 0xbf, 0x03, 0x15, 0x3d, 0xd8, 0x1b, 0x46, 0xd9, 0x74, 0xe7, - 0x1a, 0x52, 0x8c, 0x50, 0xfa, 0x8a, 0x32, 0xad, 0x92, 0x3d, 0x9e, 0x00, - 0xa4, 0x91, 0x0f, 0x68, 0x69, 0xd2, 0x15, 0xe1, 0x3d, 0x2a, 0x75, 0x1c, - 0xbb, 0x6c, 0xf8, 0x77, 0xda, 0x53, 0x9f, 0x40, 0x21, 0xac, 0x51, 0x3b, - 0x7e, 0x99, 0x4f, 0x14, 0x33, 0xa5, 0xe8, 0x5f, 0x71, 0x0e, 0xd3, 0x30, - 0xeb, 0x32, 0x1b, 0x2b, 0x5b, 0x11, 0x25, 0x0e, 0x86, 0x82, 0x00, 0x93, - 0x07, 0xd1, 0x87, 0x7c, 0x7e, 0x1a, 0x08, 0x2a, 0xd3, 0x81, 0xcd, 0x21, - 0x28, 0x1c, 0x26, 0xf0, 0xab, 0xa9, 0x58, 0x0a, 0x76, 0x56, 0x2d, 0x5f, - 0x4f, 0xdf, 0xd9, 0x49, 0xd7, 0x05, 0x68, 0x20, 0x5b, 0x9c, 0xf8, 0xc4, - 0xb7, 0x0e, 0x99, 0xcc, 0xe8, 0xc8, 0x23, 0x5a, 0x6c, 0x67, 0xad, 0xf9, - 0x0e, 0xbc, 0x45, 0xec, 0xe8, 0xee, 0x42, 0x1e, 0x2d, 0xc6, 0xcb, 0x57, - 0x6e, 0x80, 0xe7, 0x16, 0xef, 0x89, 0x62, 0xd9, 0x80, 0xd3, 0xf2, 0xfc, - 0x45, 0xcf, 0x94, 0x6a, 0x0a, 0x15, 0x79, 0x76, 0x24, 0xee, 0x21, 0x86, - 0xf6, 0xef, 0x26, 0xdd, 0x4d, 0x9b, 0xdd, 0x16, 0x4f, 0xf1, 0xe9, 0xc8, - 0x54, 0x7c, 0xaa, 0x76, 0x89, 0x85, 0xfe, 0x81, 0x03, 0x86, 0x3f, 0xae, - 0x12, 0x9d, 0x35, 0xd3, 0x06, 0xb4, 0xc1, 0xda, 0x18, 0xa8, 0xdc, 0x6d, - 0x5d, 0xda, 0x8e, 0x46, 0x86, 0xa7, 0x17, 0x86, 0x25, 0x00, 0x60, 0xf5, - 0x2d, 0x3d, 0x77, 0x9e, 0x47, 0x68, 0x65, 0x49, 0xe5, 0x91, 0xbb, 0x96, - 0x95, 0x3f, 0x2a, 0xec, 0x9a, 0xeb, 0x74, 0x55, 0x58, 0x56, 0x04, 0x2c, - 0x91, 0x06, 0xb5, 0x60, 0xef, 0x13, 0xef, 0x87, 0x22, 0xc4, 0xdc, 0xad, - 0xc5, 0x8e, 0xec, 0xbc, 0xd2, 0x34, 0x3c, 0x16, 0xaf, 0x30, 0x6f, 0x0b, - 0xdd, 0xe1, 0xc3, 0xd6, 0x20, 0x57, 0x30, 0x33, 0xa7, 0x5b, 0x68, 0xdd, - 0x7c, 0x3e, 0x5b, 0x53, 0x93, 0x85, 0x4c, 0x0a, 0xd2, 0x15, 0x46, 0xd7, - 0x2b, 0xfc, 0xcf, 0x7f, 0xa4, 0x64, 0x5f, 0xd3, 0xc5, 0x08, 0x77, 0x0b, - 0x63, 0xe4, 0x9f, 0x3b, 0xcc, 0xd5, 0x3b, 0x72, 0x3d, 0x0c, 0x55, 0x2d, - 0x2d, 0x9c, 0xaa, 0x92, 0xe4, 0x10, 0x21, 0xc0, 0x7c, 0x91, 0x52, 0x25, - 0x2e, 0xe9, 0x5a, 0xaf, 0x4a, 0x21, 0x23, 0x13, 0x63, 0x08, 0x56, 0x27, - 0xbf, 0xfa, 0x79, 0xb7, 0x44, 0x6d, 0x68, 0xdd, 0xbe, 0x7d, 0x31, 0x4e, - 0x5a, 0xdc, 0x1b, 0xa6, 0xfa, 0x2b, 0x41, 0xcc, 0xb7, 0x6e, 0x81, 0x04, - 0xb6, 0x49, 0x3e, 0x63, 0x51, 0x63, 0x56, 0x56, 0x75, 0xf1, 0xd0, 0xf3, - 0x3a, 0x6d, 0xf1, 0x42, 0x95, 0xd6, 0xaa, 0x12, 0xf7, 0xb1, 0x03, 0xd2, - 0x9d, 0x15, 0xfa, 0xe4, 0xf0, 0x4c, 0x9e, 0x39, 0x1b, 0x3d, 0x4e, 0xf4, - 0x42, 0x6c, 0x76, 0x3c, 0x6f, 0x09, 0x13, 0x40, 0x91, 0x9d, 0xd2, 0x6a, - 0x53, 0xee, 0xfc, 0xf1, 0x18, 0xbd, 0xef, 0xb7, 0xd4, 0x86, 0x07, 0xad, - 0x2a, 0x96, 0x9b, 0x93, 0x04, 0xe4, 0x3c, 0x85, 0x3b, 0x11, 0xc5, 0x17, - 0xaa, 0xc1, 0x66, 0x5c, 0x52, 0x09, 0xa2, 0xf3, 0x9f, 0x63, 0xa1, 0x76, - 0x4a, 0xa2, 0x8e, 0xd7, 0x21, 0x0b, 0x2c, 0xd6, 0xf1, 0x2b, 0x7e, 0xa7, - 0xa2, 0x28, 0xee, 0x79, 0xbd, 0x05, 0xb3, 0x5a, 0xcc, 0x1e, 0xc0, 0xaa, - 0x0a, 0xd4, 0xe1, 0x32, 0x21, 0xd7, 0x53, 0xd1, 0xeb, 0x7a, 0xa4, 0xb8, - 0x82, 0xd9, 0xc5, 0xeb, 0x3c, 0x82, 0x3a, 0xe8, 0x7e, 0x03, 0x8d, 0x4b, - 0x14, 0x90, 0x8e, 0x4b, 0xdc, 0x55, 0xb8, 0x38, 0xea, 0x1b, 0x7d, 0x00, - 0xbd, 0x29, 0xb9, 0x56, 0xd3, 0x33, 0x6c, 0x1d, 0xa6, 0x0d, 0x80, 0x75, - 0x51, 0xe0, 0x1b, 0xbc, 0x03, 0x18, 0xb3, 0x10, 0x50, 0x20, 0x30, 0x65, - 0xc4, 0xbd, 0xaf, 0x2a, 0x65, 0x5a, 0x50, 0x68, 0x70, 0x86, 0x64, 0x64, - 0xc2, 0xba, 0xf3, 0xa4, 0x1a, 0xaf, 0xb2, 0x9b, 0x64, 0x0b, 0xb1, 0xb1, - 0xb7, 0x88, 0x75, 0x6e, 0xfc, 0x75, 0xf8, 0x0a, 0xe6, 0x67, 0x42, 0x8f, - 0x12, 0xdd, 0xa3, 0xc7, 0x9a, 0x8f, 0x1f, 0xca, 0x9d, 0x57, 0xc9, 0x65, - 0x01, 0x1b, 0xfc, 0xab, 0x97, 0x60, 0xed, 0xde, 0xca, 0xf9, 0x23, 0xf8, - 0x16, 0x74, 0x2a, 0x2f, 0x0c, 0x48, 0xb6, 0x0d, 0x32, 0xbe, 0x70, 0xa1, - 0x0b, 0x3e, 0xec, 0xdb, 0x3f, 0x76, 0xd8, 0xb5, 0xb2, 0x26, 0x8c, 0x22, - 0x94, 0xb6, 0x20, 0x27, 0x3b, 0xef, 0x78, 0x3f, 0xfd, 0x4d, 0xfe, 0x2b, - 0x7d, 0x09, 0x35, 0x50, 0x9c, 0x8c, 0x0b, 0xf9, 0xfa, 0x2a, 0x97, 0xfc, - 0x6f, 0xd6, 0x3f, 0x5e, 0x3a, 0xe5, 0xb5, 0x22, 0x3f, 0xa1, 0x24, 0x42, - 0x54, 0x73, 0xb8, 0xc0, 0x61, 0xbf, 0xd7, 0x30, 0x01, 0x00, 0x00, 0xc0, - 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, - 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, - 0x0c, 0x84, 0x44, 0x6a, 0x30, 0x24, 0x5b, 0x6d, 0x52, 0xcd, 0x4e, 0xeb, - 0xbe, 0x32, 0x3d, 0x27, 0x98, 0xc5, 0x75, 0x74, 0x75, 0xf2, 0xd4, 0x73, - 0xe7, 0x56, 0x30, 0x16, 0xed, 0xb0, 0x84, 0xe0, 0x96, 0xf2, 0xcc, 0x71, - 0x2a, 0xdb, 0x53, 0x0a, 0x11, 0x74, 0xe8, 0xb5, 0x4d, 0x6e, 0xea, 0xcd, - 0xf7, 0x3f, 0x9e, 0x5a, 0x99, 0x55, 0x5f, 0xa0, 0x9f, 0x87, 0x84, 0x5c, - 0x71, 0x3e, 0xc4, 0xec, 0x5a, 0x0b, 0x79, 0x4d, 0x58, 0xc9, 0x62, 0x0b, - 0x33, 0xf1, 0x8c, 0x85, 0xf7, 0xba, 0xe7, 0x4d, 0x36, 0x0f, 0x63, 0x32, - 0x47, 0x2c, 0x44, 0xc2, 0xaa, 0xd4, 0x61, 0x6c, 0x66, 0xa8, 0x64, 0x79, - 0xfe, 0x7c, 0x3b, 0x36, 0xf9, 0x0b, 0x9d, 0x6c, 0xf4, 0xc1, 0xbd, 0x09, - 0x5b, 0xc8, 0x33, 0xa3, 0x54, 0xa3, 0x5d, 0xdb, 0xb2, 0x96, 0x24, 0x2f, - 0x9d, 0x05, 0x0e, 0x98, 0xa9, 0x72, 0x52, 0x7a, 0x29, 0xbb, 0x46, 0x41, - 0x37, 0x1b, 0x45, 0x8d, 0x36, 0x38, 0x3f, 0xac, 0x4e, 0xb1, 0xf4, 0x13, - 0x88, 0x3c, 0x3e, 0x49, 0x8f, 0xfc, 0x6f, 0x2d, 0x93, 0x5e, 0x3a, 0xab, - 0x00, 0x32, 0xeb, 0xe3, 0xda, 0x94, 0x22, 0x71, 0x4c, 0x12, 0xc6, 0xf4, - 0x1b, 0x90, 0x53, 0xc3, 0xe6, 0x52, 0x66, 0x48, 0xe4, 0xbc, 0x69, 0x1b, - 0xeb, 0x14, 0xa4, 0x00, 0x07, 0x37, 0x72, 0xe7, 0x00, 0x04, 0x51, 0x4e, - 0x9f, 0x3c, 0x63, 0x60, 0xb2, 0xd6, 0xea, 0x7e, 0xc0, 0xe3, 0xeb, 0x87, - 0x13, 0x13, 0xa9, 0xc1, 0xd0, 0xdc, 0x82, 0x91, 0xc9, 0xcc, 0xad, 0xe9, - 0xc7, 0x70, 0x2b, 0xf6, 0x66, 0xf4, 0x7c, 0xff, 0x10, 0x59, 0xe6, 0x3f, - 0x43, 0x0e, 0xfd, 0xf7, 0xf9, 0x64, 0xfc, 0x82, 0x0a, 0xa3, 0x1b, 0xf1, - 0x4b, 0x9a, 0x47, 0xda, 0x17, 0x87, 0x3a, 0x66, 0x71, 0xf3, 0xf9, 0xc8, - 0xf1, 0x57, 0xe7, 0x5d, 0x5c, 0x9d, 0x1b, 0x64, 0x76, 0xb1, 0xe0, 0x1d, - 0x92, 0x04, 0x8e, 0xff, 0x66, 0x51, 0xc2, 0x42, 0x7c, 0x61, 0x59, 0xf1, - 0x01, 0x12, 0x59, 0x1f, 0xa8, 0x72, 0xa5, 0xee, 0x50, 0xae, 0x45, 0x1f, - 0xdf, 0xc2, 0xde, 0x3f, 0xd7, 0x59, 0xb2, 0x9d, 0xb7, 0xde, 0x4b, 0x32, - 0x48, 0x44, 0x65, 0xd7, 0x96, 0xdb, 0x8d, 0x4f, 0x34, 0xc4, 0xf9, 0x4c, - 0xcb, 0x59, 0xe2, 0x11, 0x6a, 0x95, 0xee, 0x45, 0x83, 0x5d, 0x13, 0x1d, - 0x23, 0xce, 0x27, 0x40, 0x32, 0xcb, 0xda, 0x1a, 0x60, 0xcd, 0x93, 0x27, - 0x7f, 0x9f, 0x36, 0x7e, 0x88, 0xb2, 0x88, 0x95, 0xc1, 0x87, 0xa8, 0xfb, - 0x5a, 0x20, 0xe0, 0x1f, 0x27, 0x0b, 0x98, 0x2a, 0xf2, 0xb1, 0x5e, 0x27, - 0xab, 0x7e, 0x19, 0xc7, 0x4b, 0x6c, 0x31, 0x21, 0x53, 0x54, 0xe3, 0x14, - 0x08, 0x6e, 0xfd, 0xb7, 0x57, 0x75, 0xf8, 0x56, 0x6a, 0xbb, 0xb3, 0x42, - 0xb6, 0xd4, 0xbd, 0x15, 0xef, 0x19, 0x87, 0x7c, 0xf2, 0xcb, 0xb5, 0x4c, - 0x94, 0x8d, 0x1c, 0x4f, 0xcc, 0xd7, 0x9c, 0x89, 0x05, 0xf8, 0x8a, 0x30, - 0xa6, 0x83, 0xa2, 0xf4, 0xcf, 0xd1, 0x72, 0xe6, 0xcb, 0xb0, 0x56, 0x25, - 0xe4, 0xaf, 0x31, 0x67, 0xa2, 0xcb, 0x5b, 0x22, 0x46, 0x74, 0x7a, 0x4f, - 0x0c, 0x27, 0x07, 0xb2, 0x54, 0xd1, 0x3f, 0xf2, 0x61, 0x14, 0x9a, 0xa4, - 0x78, 0x32, 0x07, 0xb2, 0xf1, 0xf4, 0xb8, 0x18, 0xac, 0xbf, 0x49, 0x16, - 0x64, 0x57, 0x94, 0x83, 0x9f, 0x5f, 0xb8, 0xae, 0x9c, 0x16, 0xef, 0xaf, - 0xca, 0x12, 0x2c, 0x48, 0xc4, 0x94, 0x73, 0x64, 0xf0, 0x88, 0x6f, 0xb1, - 0x40, 0x32, 0xa7, 0x5d, 0x5c, 0xea, 0x81, 0x2f, 0x1b, 0xf0, 0x63, 0xf7, - 0xec, 0x26, 0x76, 0x3f, 0x6d, 0xa5, 0xd2, 0x87, 0x28, 0x66, 0xb4, 0x00, - 0x55, 0xb4, 0x21, 0x27, 0x24, 0x13, 0xa9, 0x67, 0x68, 0xc0, 0x0b, 0x24, - 0x6e, 0xac, 0xb1, 0x41, 0xc4, 0x1d, 0xa4, 0xb0, 0x2b, 0x96, 0x50, 0x31, - 0x6e, 0xee, 0x6c, 0x65, 0x4e, 0x0f, 0xfc, 0x43, 0xd5, 0x16, 0x72, 0x30, - 0xa6, 0xf6, 0xb7, 0x80, 0xf6, 0xbc, 0xa7, 0x14, 0xf9, 0x3c, 0xac, 0x58, - 0xda, 0x24, 0x83, 0x56, 0x75, 0xcb, 0xc6, 0x5b, 0x63, 0xa9, 0x84, 0x97, - 0x1f, 0x9e, 0x33, 0x03, 0x25, 0xe0, 0x33, 0x81, 0xa3, 0x8e, 0x5b, 0x39, - 0x0c, 0x0d, 0x91, 0x2a, 0x56, 0x40, 0x65, 0x44, 0x2c, 0x3b, 0x3e, 0xfa, - 0x75, 0xe2, 0x24, 0xe3, 0xa7, 0x13, 0x75, 0x1f, 0x6c, 0x3c, 0xfc, 0x67, - 0xb1, 0xf9, 0x62, 0x99, 0x80, 0x29, 0xfb, 0x30, 0xee, 0x40, 0x56, 0x69, - 0xe7, 0xaf, 0x2e, 0xaf, 0xf6, 0xe3, 0x17, 0x7b, 0x1c, 0x38, 0xf7, 0x80, - 0xaf, 0xb9, 0x34, 0x6e, 0xd8, 0x54, 0x40, 0x06, 0x46, 0xe1, 0xf1, 0xda, - 0xbe, 0x2b, 0xf1, 0x90, 0xf5, 0x5c, 0x6b, 0x67, 0x7b, 0x42, 0xa8, 0x1f, - 0x1b, 0x1e, 0x19, 0xe2, 0x1e, 0xbd, 0x31, 0x93, 0x08, 0x6e, 0x42, 0x80, - 0xeb, 0x61, 0x4d, 0xcc, 0xfe, 0xc2, 0x9e, 0x74, 0x85, 0xf7, 0xc8, 0x4f, - 0x7e, 0x04, 0x2b, 0x62, 0xdc, 0x9f, 0xd3, 0xac, 0x75, 0x22, 0x70, 0xa6, - 0x06, 0x7b, 0x40, 0xd7, 0xb2, 0x69, 0x58, 0xb7, 0x45, 0x6a, 0x43, 0x52, - 0xaf, 0xda, 0xde, 0xbc, 0xfb, 0xda, 0xfc, 0x73, 0x9f, 0x29, 0xaf, 0x01, - 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, - 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, - 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x49, 0x9f, 0xe1, 0xf8, - 0xbe, 0xc6, 0xdd, 0xb0, 0x2c, 0x32, 0x2b, 0x8c, 0xfd, 0x8a, 0x28, 0x6d, - 0x7e, 0xca, 0x62, 0x6f, 0xf3, 0x6f, 0x90, 0x71, 0x35, 0x61, 0x5e, 0x29, - 0x1a, 0xb5, 0x47, 0x46, 0xe7, 0x0c, 0x14, 0xec, 0x2e, 0xe2, 0x3b, 0xfc, - 0x99, 0x60, 0xe1, 0x73, 0x14, 0xcf, 0x3e, 0x18, 0x3c, 0x7b, 0xd5, 0xef, - 0x74, 0x05, 0xf4, 0x17, 0xec, 0xf5, 0x67, 0xc3, 0x3d, 0xfd, 0xa3, 0x1b, - 0xb0, 0x43, 0x67, 0x4e, 0xd7, 0x1f, 0xb4, 0xb7, 0xfb, 0x37, 0xfb, 0xfb, - 0x54, 0x7f, 0x70, 0xc8, 0xf5, 0x87, 0xad, 0x8a, 0x70, 0xed, 0xb8, 0xc2, - 0x45, 0xd7, 0x8b, 0xce, 0xa4, 0xaa, 0x68, 0x0e, 0xa5, 0x96, 0xc4, 0x5d, - 0x1e, 0x6c, 0xe6, 0x0b, 0xed, 0xe3, 0xda, 0x6a, 0xb4, 0x01, 0x0c, 0x3e, - 0x36, 0x6e, 0xa9, 0x95, 0x8c, 0xb9, 0xe9, 0x2e, 0x00, 0xcb, 0x0d, 0xb7, - 0x6c, 0xd3, 0x4a, 0x02, 0xe7, 0x0c, 0x8e, 0x3e, 0x83, 0x22, 0x61, 0x64, - 0x28, 0xd4, 0xe4, 0xf6, 0xa2, 0x19, 0xe6, 0xef, 0xaf, 0xf2, 0xf3, 0x95, - 0x2c, 0x39, 0xff, 0x92, 0x30, 0x67, 0x05, 0xe5, 0xd8, 0xd1, 0xfb, 0x4b, - 0x84, 0x6b, 0x17, 0x46, 0x83, 0xe1, 0x51, 0xee, 0xf7, 0xee, 0x03, 0x5d, - 0xd7, 0xbe, 0x10, 0x3d, 0x8d, 0xee, 0x28, 0xe8, 0x95, 0xe3, 0xb7, 0x88, - 0x70, 0x15, 0x81, 0x05, 0x77, 0x12, 0x97, 0x5a, 0x3d, 0xb7, 0xe0, 0xac, - 0xa1, 0x2f, 0xc3, 0x6f, 0x91, 0x4b, 0xcc, 0xe0, 0xf0, 0x69, 0x13, 0x1c, - 0xd4, 0xe0, 0xee, 0x27, 0x3c, 0xe0, 0xd8, 0x76, 0x02, 0xdd, 0x73, 0xd7, - 0x16, 0xb4, 0x64, 0x52, 0x92, 0x39, 0x93, 0xba, 0x62, 0xf2, 0x73, 0xcd, - 0xb2, 0xf0, 0xa1, 0xa1, 0x1f, 0xb7, 0xa0, 0x3b, 0x27, 0xe7, 0x88, 0x39, - 0x27, 0x7c, 0xf2, 0x0f, 0x75, 0x41, 0x5c, 0x90, 0x42, 0x53, 0xfc, 0x19, - 0x76, 0x9e, 0x54, 0x18, 0x05, 0xd2, 0x76, 0x36, 0x15, 0x63, 0xd6, 0x84, - 0xdb, 0xd2, 0x53, 0x06, 0x4a, 0x51, 0x14, 0xc7, 0x31, 0xc6, 0xf7, 0x85, - 0xe8, 0x54, 0xe1, 0x3d, 0xea, 0x99, 0x7f, 0x3b, 0x70, 0x61, 0x5b, 0xe0, - 0x30, 0xa5, 0xc9, 0x22, 0xc0, 0xc7, 0xff, 0x73, 0x21, 0x2a, 0x83, 0x95, - 0x7a, 0x66, 0xf4, 0xb0, 0x84, 0xbb, 0x51, 0x08, 0x17, 0x8c, 0xfc, 0xe5, - 0xee, 0xdf, 0x2f, 0x4e, 0x69, 0xea, 0xb9, 0xa0, 0x80, 0xf4, 0xf7, 0x61, - 0x03, 0x4f, 0xc2, 0xfa, 0x39, 0xf5, 0x5f, 0xdb, 0xc5, 0xa1, 0x96, 0x3d, - 0x6a, 0xd3, 0x1f, 0x12, 0xb6, 0x55, 0x9d, 0xea, 0xa3, 0x3f, 0x8f, 0x4c, - 0x22, 0xab, 0xa7, 0x1a, 0xa2, 0x3f, 0xad, 0x9e, 0xf0, 0xd5, 0x99, 0x9d, - 0x79, 0xdb, 0xc4, 0xf6, 0xd1, 0x6d, 0x58, 0xd2, 0x1e, 0x23, 0x50, 0x09, - 0x7c, 0xfa, 0x13, 0x3e, 0x18, 0x59, 0x02, 0x51, 0xe2, 0x88, 0x80, 0xeb, - 0x41, 0x15, 0xe0, 0x11, 0x81, 0x8b, 0x07, 0x09, 0xfb, 0xcf, 0x56, 0x8d, - 0x6c, 0x3e, 0x24, 0x14, 0x8a, 0xfd, 0x75, 0x3a, 0xe5, 0x91, 0x87, 0x72, - 0x84, 0xef, 0x0d, 0x14, 0xbf, 0x5d, 0xc1, 0x7c, 0x4c, 0x69, 0x61, 0x1e, - 0x10, 0x45, 0x3c, 0xba, 0x2e, 0x10, 0x54, 0x66, 0x24, 0x91, 0x5d, 0xec, - 0x19, 0x9f, 0xd1, 0x28, 0xfd, 0xe7, 0xe3, 0x64, 0x51, 0x32, 0x7b, 0x21, - 0xb6, 0xb3, 0x80, 0x68, 0x8a, 0x8c, 0x76, 0x7e, 0xa2, 0x25, 0x1b, 0x19, - 0x3d, 0x79, 0x56, 0x53, 0x9e, 0x9c, 0x6d, 0xc4, 0x4e, 0x85, 0xd9, 0x3c, - 0x09, 0x0d, 0x73, 0xa8, 0xd2, 0x82, 0xcd, 0x16, 0x17, 0xf0, 0x97, 0x80, - 0x9d, 0x4d, 0xe7, 0x29, 0xe4, 0x9a, 0xbb, 0x9f, 0x95, 0x3e, 0x15, 0xdf, - 0x7b, 0x57, 0x79, 0x10, 0x8d, 0x36, 0xa3, 0xad, 0x65, 0x91, 0x8d, 0x51, - 0x85, 0xd2, 0x7d, 0x3f, 0x6c, 0xdc, 0xd8, 0xb6, 0x61, 0x39, 0x1a, 0x81, - 0x1d, 0x7e, 0x7a, 0x04, 0x07, 0xd7, 0x53, 0x60, 0xe3, 0x19, 0xeb, 0xf6, - 0x42, 0x8e, 0xf3, 0xe3, 0x4e, 0x63, 0xc7, 0x27, 0xa8, 0x1c, 0xb1, 0x25, - 0x54, 0x77, 0xa1, 0x4b, 0x02, 0xec, 0x1f, 0x84, 0x84, 0x06, 0x18, 0x2c, - 0xeb, 0x3c, 0x7d, 0xa1, 0x84, 0x7b, 0xab, 0xc6, 0xdc, 0xfc, 0x3e, 0x48, - 0x22, 0xae, 0x88, 0x3e, 0xfb, 0x91, 0x16, 0x67, 0x54, 0x8e, 0x93, 0x73, - 0xec, 0x9e, 0xb7, 0x1c, 0x4f, 0x7d, 0x47, 0xa3, 0x51, 0x03, 0xb0, 0xe7, - 0x4f, 0x94, 0x03, 0x69, 0x12, 0x4e, 0xa6, 0x01, 0x04, 0xf5, 0xf9, 0x90, - 0x90, 0xba, 0xa6, 0x0b, 0x7d, 0xc4, 0x61, 0x2c, 0x76, 0xe2, 0x5d, 0x89, - 0x1b, 0xe6, 0x67, 0x91, 0xd5, 0xc1, 0xee, 0x04, 0xbe, 0x84, 0x34, 0x33, - 0xba, 0xd4, 0xf1, 0xdd, 0xce, 0xd9, 0xcb, 0x8e, 0x71, 0x8f, 0xf6, 0x14, - 0xbd, 0x81, 0xbc, 0x56, 0xca, 0x1f, 0xbb, 0x86, 0xad, 0x29, 0x4b, 0x18, - 0xd1, 0x21, 0x58, 0x2c, 0xaa, 0x9f, 0xbb, 0x82, 0x43, 0x58, 0x80, 0x13, - 0x98, 0xd1, 0x2f, 0x49, 0xa1, 0x94, 0xe3, 0x16, 0x66, 0xd0, 0x17, 0xb9, - 0x8a, 0xd4, 0x29, 0xa0, 0x11, 0x82, 0x8c, 0x96, 0x7c, 0x48, 0x5c, 0xc6, - 0x3f, 0xd3, 0xe5, 0x93, 0xc0, 0xbb, 0xa7, 0x08, 0x0e, 0xbf, 0xd8, 0x26, - 0x3e, 0x40, 0xf6, 0x5f, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, - 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, - 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, - 0x0b, 0xbc, 0x04, 0x9d, 0x96, 0x6e, 0x22, 0x4d, 0xf2, 0xad, 0x8b, 0x61, - 0x9b, 0xd4, 0x53, 0x33, 0xfb, 0xd7, 0xb1, 0xd5, 0x01, 0x47, 0x72, 0x9c, - 0x0f, 0x8a, 0xca, 0xd7, 0x29, 0x62, 0xb4, 0x65, 0xdc, 0x62, 0xf9, 0x02, - 0x23, 0x85, 0xe9, 0x59, 0xbe, 0x82, 0x55, 0xc6, 0xcb, 0xc3, 0xd1, 0x85, - 0xad, 0x37, 0x5e, 0x8d, 0x50, 0x5f, 0x82, 0x04, 0x27, 0x16, 0x53, 0xa4, - 0x0b, 0xca, 0xf3, 0x08, 0x44, 0xa6, 0xd1, 0x7d, 0xc4, 0x17, 0xea, 0x70, - 0xa1, 0x74, 0xf2, 0x7a, 0xe9, 0x78, 0x6b, 0xf1, 0xac, 0xa3, 0x98, 0x4e, - 0xa9, 0x6e, 0xeb, 0x9b, 0x2c, 0x5b, 0x2e, 0xb7, 0x6c, 0x9d, 0x17, 0x2e, - 0x58, 0x0a, 0x34, 0x20, 0x8d, 0xc7, 0x6f, 0xa5, 0xd2, 0x1c, 0xb9, 0xcb, - 0xf4, 0xb5, 0x35, 0x09, 0x78, 0x39, 0x04, 0x9a, 0x38, 0xfa, 0xdf, 0x72, - 0x7f, 0x3a, 0x9f, 0x6b, 0xfe, 0x94, 0x7d, 0x48, 0x07, 0xcf, 0x50, 0x2c, - 0xbb, 0x6d, 0x1b, 0xd2, 0x47, 0x31, 0xcc, 0x19, 0x18, 0xd1, 0x62, 0xa0, - 0x21, 0xbb, 0x3c, 0xc2, 0x2f, 0x68, 0xe0, 0xde, 0x4a, 0x2d, 0xf9, 0xe8, - 0xa6, 0x83, 0xe0, 0x1c, 0xed, 0x8c, 0x94, 0x30, 0x31, 0xdc, 0x00, 0x39, - 0x34, 0xe8, 0xff, 0xc5, 0x3e, 0xf3, 0xb4, 0xc2, 0x53, 0xbc, 0x5f, 0x5a, - 0xc2, 0x2f, 0xa6, 0x99, 0x9e, 0x3b, 0x61, 0xec, 0xe3, 0x45, 0x79, 0x67, - 0x05, 0x96, 0x3c, 0x9c, 0x12, 0x41, 0xde, 0x48, 0xb0, 0x60, 0xb8, 0xec, - 0xca, 0x1d, 0x41, 0x14, 0xde, 0x70, 0x10, 0xfd, 0x73, 0x7c, 0x67, 0x3d, - 0x5a, 0x86, 0xe7, 0x08, 0x5f, 0x9a, 0x45, 0x47, 0x43, 0xb4, 0x79, 0x52, - 0x31, 0xbc, 0x89, 0x80, 0x48, 0x62, 0x72, 0xfc, 0x17, 0xb3, 0x31, 0x4f, - 0xdf, 0xdd, 0x4e, 0x66, 0x46, 0x81, 0x33, 0x59, 0x8f, 0xb2, 0xf4, 0xaa, - 0x3f, 0x78, 0x62, 0x30, 0xe8, 0x5a, 0x50, 0x6f, 0x25, 0x57, 0xbc, 0x8c, - 0xb6, 0xfd, 0x79, 0xa1, 0x0e, 0xc8, 0x76, 0x36, 0x87, 0x9e, 0x89, 0x91, - 0xea, 0xcf, 0x5c, 0x53, 0x5b, 0x5c, 0x61, 0x0c, 0x04, 0x3e, 0x34, 0x44, - 0x80, 0xb0, 0xa3, 0xe6, 0xae, 0x01, 0xdc, 0x88, 0xb4, 0x72, 0x33, 0x42, - 0x82, 0x5f, 0x7f, 0x55, 0x5e, 0x2b, 0xc8, 0x3e, 0xb5, 0xed, 0x21, 0x0d, - 0xfd, 0x0b, 0xa2, 0x8a, 0x2d, 0x0a, 0xe0, 0x70, 0xf0, 0x15, 0x40, 0xf3, - 0x48, 0x86, 0xc2, 0xa8, 0x15, 0xa1, 0x9a, 0x53, 0xa9, 0xfb, 0x4e, 0x08, - 0xdb, 0x3e, 0x42, 0x8d, 0x4c, 0xab, 0x43, 0xe2, 0x0d, 0xfe, 0xb9, 0xaa, - 0x17, 0x1e, 0xb9, 0x20, 0x31, 0xbd, 0x4c, 0x02, 0x3a, 0x11, 0x9a, 0xe0, - 0xb2, 0xde, 0x58, 0x0e, 0xb9, 0xa2, 0x07, 0x51, 0x1a, 0x61, 0x84, 0x56, - 0xff, 0xd0, 0x86, 0x89, 0xfc, 0x56, 0x56, 0xa4, 0x24, 0x73, 0x23, 0x41, - 0x25, 0x0d, 0xdc, 0x5a, 0x5e, 0xc1, 0xca, 0xe3, 0xbb, 0xe3, 0x73, 0x01, - 0x25, 0xda, 0x08, 0x56, 0x16, 0x52, 0x0d, 0x39, 0xcc, 0xcf, 0xff, 0xe4, - 0x4a, 0xb5, 0x08, 0x18, 0x1e, 0xbb, 0xba, 0x05, 0xaa, 0x9f, 0xf8, 0x03, - 0xbf, 0xd0, 0xa8, 0x76, 0xeb, 0x8c, 0x71, 0xa4, 0xa0, 0x8a, 0x44, 0xbe, - 0x67, 0x95, 0xa9, 0x10, 0x48, 0x82, 0x92, 0x9f, 0x57, 0x1e, 0xd9, 0x85, - 0x41, 0xba, 0x81, 0x44, 0x99, 0x7f, 0xbd, 0xfa, 0xe5, 0x43, 0xca, 0x5b, - 0xce, 0xae, 0xdf, 0xea, 0x6b, 0xfe, 0x52, 0x2c, 0x96, 0x5f, 0xa8, 0xbe, - 0x1f, 0x47, 0x3a, 0x95, 0xa7, 0x6d, 0xd1, 0x63, 0xb5, 0xe0, 0xce, 0x72, - 0xb3, 0x40, 0x7f, 0x13, 0xce, 0xc0, 0x39, 0x40, 0xb7, 0x31, 0x22, 0x58, - 0xa3, 0xd8, 0xea, 0xb1, 0x39, 0x98, 0xa3, 0xdb, 0x25, 0x0a, 0x0e, 0x08, - 0x7a, 0xbd, 0xcb, 0x89, 0xad, 0x50, 0xf5, 0x05, 0xa4, 0x6a, 0xcd, 0xd2, - 0x26, 0xc0, 0x8d, 0x64, 0x23, 0xe3, 0x7a, 0x33, 0xdf, 0x81, 0x78, 0x9e, - 0x95, 0xf0, 0x85, 0xc8, 0xfe, 0xfe, 0xed, 0xcb, 0x79, 0x1a, 0xd6, 0x62, - 0xb4, 0x4f, 0xf7, 0x06, 0x18, 0xa2, 0xbb, 0xc7, 0x9b, 0x77, 0xbc, 0x61, - 0x73, 0x75, 0xe7, 0x78, 0x2c, 0xd3, 0x44, 0xd9, 0x8c, 0x22, 0x55, 0x36, - 0xfb, 0xec, 0x83, 0x4b, 0x2d, 0xcd, 0x68, 0x30, 0xfd, 0x79, 0xe3, 0x32, - 0x4e, 0x04, 0xd1, 0x01, 0x7f, 0xd5, 0x68, 0x7b, 0x43, 0x28, 0x4a, 0x38, - 0x89, 0x44, 0xbf, 0xc0, 0x26, 0x08, 0x78, 0xda, 0x7a, 0xc5, 0x8f, 0x0e, - 0x85, 0x3f, 0xd7, 0x95, 0x4f, 0x3b, 0xc0, 0x16, 0x0b, 0x98, 0x2b, 0xa6, - 0x74, 0x80, 0xef, 0x90, 0xb7, 0xc2, 0x63, 0xa7, 0x9c, 0x2a, 0x95, 0xf6, - 0x93, 0x60, 0x22, 0x4c, 0xb3, 0x00, 0x7b, 0x31, 0x53, 0x6a, 0xb5, 0x38, - 0x30, 0x54, 0x3d, 0x43, 0x5c, 0x85, 0x5c, 0xcc, 0x8c, 0xf4, 0x85, 0x6f, - 0x82, 0x6d, 0x62, 0xe8, 0x53, 0xcb, 0xdd, 0x58, 0x2e, 0x4f, 0xa0, 0x8e, - 0x1c, 0xcb, 0x31, 0x10, 0xb2, 0x4d, 0x1d, 0xe5, 0x4c, 0x18, 0xcf, 0x5f, - 0x57, 0x9b, 0x7c, 0x8c, 0x2d, 0xf7, 0xf6, 0xa7, 0xed, 0xce, 0x8f, 0x05, - 0x28, 0x41, 0xb2, 0xd4, 0x85, 0xfe, 0x6e, 0x77, 0xcb, 0x7f, 0xe3, 0x33, - 0x05, 0x81, 0x5d, 0xd8, 0xce, 0x3e, 0xe7, 0x17, 0x01, 0x00, 0x00, 0xc0, - 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, - 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, - 0x0c, 0x84, 0x44, 0x6a, 0x1e, 0x20, 0xd2, 0x32, 0xc1, 0x83, 0xc1, 0xdc, - 0xef, 0x32, 0xbf, 0xa7, 0xe8, 0xa0, 0x6e, 0x39, 0x0b, 0x3f, 0x7b, 0xb1, - 0xda, 0x80, 0x53, 0x13, 0xbe, 0x92, 0xa6, 0x28, 0xfc, 0x4d, 0xec, 0x03, - 0xaf, 0x8e, 0x02, 0x4a, 0x32, 0x9e, 0x89, 0x08, 0x32, 0xfb, 0x1b, 0x4d, - 0xe8, 0x29, 0x1c, 0xbe, 0x58, 0x27, 0x85, 0xd9, 0x44, 0x11, 0x67, 0xea, - 0xbe, 0x41, 0xe4, 0x5a, 0x87, 0xf1, 0x7d, 0x08, 0xbe, 0x37, 0x15, 0xaf, - 0xa4, 0xa2, 0x66, 0x19, 0x37, 0x55, 0x9e, 0xb9, 0x77, 0x6c, 0xe1, 0x86, - 0x94, 0xa4, 0xd1, 0xca, 0x2d, 0xf7, 0x0e, 0xee, 0xde, 0x3f, 0x66, 0x8b, - 0x08, 0xfe, 0xc5, 0x5f, 0x8a, 0x21, 0x6e, 0x08, 0x9d, 0x7f, 0xac, 0x0d, - 0x54, 0x8f, 0x1b, 0xf9, 0x71, 0xc2, 0xa5, 0x26, 0x10, 0xfc, 0xa7, 0xe4, - 0x67, 0x88, 0xff, 0x7b, 0x2a, 0xbd, 0x61, 0x11, 0xc5, 0xa4, 0x57, 0x20, - 0x72, 0xfa, 0x0b, 0xd1, 0x42, 0xac, 0x56, 0x3f, 0x62, 0x6f, 0x46, 0x32, - 0x01, 0xdf, 0x91, 0x12, 0xf4, 0x0b, 0x6e, 0x6b, 0x5f, 0xb8, 0xda, 0xea, - 0xcb, 0x8d, 0xe5, 0x8d, 0x03, 0x54, 0xc9, 0x16, 0x78, 0xf4, 0xfb, 0xd5, - 0x8b, 0xa1, 0xf6, 0x67, 0xfb, 0x41, 0xf2, 0x82, 0x00, 0xfe, 0x7a, 0xb1, - 0xba, 0xa4, 0xbc, 0x71, 0x68, 0x20, 0xb2, 0x90, 0x8c, 0x44, 0x19, 0x88, - 0xdb, 0xdc, 0x11, 0x3c, 0x96, 0xf4, 0x2f, 0xaa, 0x08, 0x0c, 0x6f, 0x78, - 0x0c, 0xdb, 0x64, 0x0c, 0xa0, 0xad, 0x96, 0x95, 0x31, 0x7d, 0xb1, 0x83, - 0x54, 0x99, 0x67, 0xb0, 0x49, 0x8d, 0x7d, 0x31, 0xc3, 0xb6, 0x53, 0x3e, - 0xa2, 0x8b, 0x10, 0x99, 0xeb, 0x2a, 0xdb, 0xc2, 0x30, 0x41, 0x75, 0x5b, - 0xa6, 0xf5, 0xb9, 0x03, 0x2f, 0x67, 0xf6, 0x02, 0x92, 0x67, 0x8e, 0xb7, - 0x64, 0x92, 0x1d, 0x2f, 0x31, 0x99, 0x54, 0x09, 0x1f, 0xac, 0x61, 0x9c, - 0xde, 0x8e, 0xe3, 0x67, 0xfc, 0x36, 0x40, 0x09, 0x2f, 0x1e, 0x34, 0x29, - 0xfe, 0x32, 0x55, 0xf2, 0x59, 0xf4, 0xd4, 0x9b, 0x6a, 0x87, 0xa7, 0xc6, - 0xf4, 0x9e, 0x3a, 0x00, 0xb3, 0x57, 0xc3, 0x0a, 0x08, 0xdd, 0x3d, 0x59, - 0x49, 0x72, 0x3d, 0x2b, 0x4a, 0xdc, 0x6d, 0x37, 0x11, 0x55, 0xd2, 0x3e, - 0xfe, 0xa9, 0x24, 0x69, 0xe4, 0xa1, 0xcc, 0x91, 0x43, 0xc9, 0xaf, 0x2d, - 0xb1, 0x6f, 0x62, 0x05, 0x12, 0x47, 0x52, 0xda, 0x85, 0x82, 0x1c, 0x58, - 0xc0, 0x7f, 0x89, 0xee, 0x80, 0x4c, 0x7a, 0x0f, 0x60, 0xcc, 0x93, 0xc7, - 0x8f, 0x5a, 0xdc, 0x23, 0x1c, 0x34, 0x15, 0x71, 0xf6, 0xb8, 0xf6, 0x32, - 0xe5, 0xfc, 0x4f, 0x94, 0x49, 0x28, 0xf1, 0xf8, 0x5b, 0xfa, 0xce, 0x48, - 0x22, 0x3c, 0x5b, 0xfa, 0x59, 0xc2, 0x1a, 0xd0, 0xd2, 0x74, 0x2f, 0x84, - 0x81, 0x01, 0x31, 0x43, 0x53, 0xcb, 0x85, 0x6c, 0xc3, 0x6e, 0x30, 0x22, - 0x27, 0xe9, 0x09, 0x11, 0xe6, 0x9a, 0x3c, 0x60, 0x94, 0xc6, 0x7c, 0x66, - 0x82, 0x63, 0xb5, 0x45, 0x29, 0x33, 0x3d, 0x24, 0xce, 0xf8, 0xb2, 0x1a, - 0xea, 0x3b, 0x81, 0x01, 0x6d, 0xc6, 0xa9, 0x0e, 0x5e, 0x09, 0x07, 0x08, - 0xfb, 0xbf, 0x48, 0xcc, 0x1d, 0x56, 0x67, 0xb3, 0x8e, 0x78, 0xd3, 0xe5, - 0x88, 0x9f, 0xa1, 0x8d, 0xb3, 0x80, 0xf5, 0x41, 0x9f, 0xa1, 0x0d, 0x94, - 0x2c, 0xd7, 0x06, 0x4b, 0x16, 0xd7, 0xa2, 0xc1, 0xb2, 0xcf, 0x41, 0x01, - 0x1b, 0x63, 0xa7, 0x5c, 0x6f, 0xed, 0xca, 0x2d, 0x29, 0xf2, 0x01, 0xdc, - 0xf2, 0x9d, 0x24, 0x07, 0xc3, 0x72, 0xf9, 0xf5, 0x9e, 0x5b, 0x45, 0x72, - 0x6a, 0xec, 0x68, 0xd6, 0x3f, 0xf5, 0x76, 0x28, 0x95, 0xbf, 0xaa, 0x7f, - 0xf8, 0x2c, 0xec, 0xaf, 0x24, 0x1a, 0x38, 0x51, 0x0f, 0x11, 0x77, 0x38, - 0x79, 0x7c, 0x40, 0x47, 0x19, 0x6b, 0x94, 0x43, 0x9e, 0x57, 0x0b, 0x5c, - 0x42, 0x0c, 0x96, 0x93, 0xb5, 0x57, 0x68, 0xb8, 0x13, 0x44, 0x2d, 0x4a, - 0x2d, 0x9f, 0x91, 0xcb, 0x24, 0x70, 0xdf, 0x10, 0xab, 0xfe, 0xa7, 0x52, - 0x24, 0xa5, 0x0b, 0x0e, 0x24, 0xa9, 0x97, 0x6b, 0xc3, 0x6d, 0x4a, 0xb5, - 0xfa, 0x90, 0x99, 0xc1, 0xf5, 0x8b, 0xea, 0x90, 0x45, 0xbc, 0xfb, 0x38, - 0x91, 0xd8, 0xac, 0x51, 0x37, 0x33, 0x2e, 0x11, 0x51, 0xfb, 0xf4, 0xe0, - 0x3b, 0x4a, 0xdb, 0x3e, 0xb0, 0xc8, 0xb1, 0x64, 0x17, 0x3b, 0xed, 0x27, - 0x79, 0xa7, 0x24, 0xce, 0x0b, 0x26, 0xc5, 0x70, 0x17, 0x5b, 0xa0, 0x32, - 0x34, 0x42, 0x70, 0x2f, 0x89, 0x5e, 0x39, 0x08, 0xd7, 0x2b, 0x06, 0x40, - 0xbc, 0x5a, 0x1d, 0xfd, 0xac, 0xf6, 0xf0, 0x01, 0x5d, 0x2d, 0xe6, 0xe7, - 0x43, 0xbd, 0x83, 0x47, 0x59, 0x81, 0x9e, 0x14, 0x03, 0x89, 0x61, 0x3a, - 0x0a, 0x65, 0x19, 0x43, 0x72, 0x29, 0xf7, 0x35, 0x54, 0xca, 0x30, 0x0e, - 0x61, 0xff, 0x82, 0x02, 0x84, 0x60, 0x7b, 0x9c, 0xc5, 0x54, 0xa1, 0x0e, - 0x27, 0x49, 0x65, 0x26, 0x49, 0xd2, 0x0b, 0x67, 0xe2, 0x48, 0x51, 0x55, - 0x81, 0x5c, 0x1d, 0xa5, 0x58, 0x2c, 0xfb, 0xd2, 0x59, 0x89, 0xd5, 0x39, - 0x2c, 0xb1, 0xcf, 0x44, 0xca, 0x8c, 0x40, 0x8e, 0x78, 0x4b, 0x9c, 0x33, - 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, - 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, - 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xe1, 0xb1, 0x22, 0x9b, - 0xde, 0x27, 0x94, 0xc3, 0xf8, 0xc1, 0xf4, 0x4e, 0x7f, 0xde, 0x15, 0x2b, - 0xbf, 0x74, 0x36, 0x15, 0xab, 0x83, 0x26, 0x40, 0x8d, 0xd8, 0xa7, 0x44, - 0x1a, 0x23, 0x31, 0x4d, 0xb4, 0x96, 0x7a, 0xd8, 0x2a, 0x0c, 0x8f, 0xb4, - 0x4a, 0xb3, 0x1e, 0xef, 0x6f, 0xe4, 0xae, 0xf5, 0xf5, 0xf7, 0x04, 0xd0, - 0x41, 0x1e, 0xde, 0xba, 0x01, 0xb2, 0x0a, 0xdd, 0x02, 0x22, 0xf8, 0x30, - 0x25, 0x8b, 0xd3, 0x5c, 0x6c, 0xdc, 0xc4, 0x87, 0x6c, 0x6f, 0x66, 0xf1, - 0x2b, 0x0a, 0xfa, 0x92, 0x58, 0x84, 0xf9, 0x8f, 0xd3, 0x73, 0x3b, 0x9a, - 0x48, 0x30, 0xdc, 0xb5, 0x5a, 0x40, 0x1b, 0x55, 0x4c, 0x3f, 0x99, 0x1d, - 0xf0, 0x85, 0x21, 0x49, 0xd6, 0xc2, 0x3e, 0xfb, 0xa7, 0x63, 0xbb, 0x25, - 0x10, 0xb1, 0x2f, 0x14, 0x6a, 0x5e, 0x5a, 0xea, 0x70, 0xd1, 0xa1, 0x3a, - 0x48, 0xff, 0xb5, 0x18, 0x57, 0x2b, 0x13, 0x4c, 0x88, 0xa5, 0xc6, 0x22, - 0xd2, 0x75, 0x7b, 0xc7, 0x2a, 0x5b, 0xfa, 0x87, 0x5e, 0x8a, 0xe9, 0xdf, - 0xd4, 0xdb, 0x94, 0x83, 0x81, 0xbf, 0x08, 0x12, 0xd2, 0xc8, 0x3d, 0x4b, - 0x95, 0x55, 0x26, 0x94, 0xad, 0x74, 0x34, 0xd8, 0xe7, 0x2b, 0xdf, 0x5b, - 0x31, 0x3c, 0xe5, 0xfa, 0x6c, 0xfe, 0xba, 0x9c, 0xf8, 0xa0, 0xcd, 0x0b, - 0x56, 0xc3, 0xd7, 0xbc, 0x5d, 0xb0, 0x48, 0x0d, 0xad, 0x9a, 0xd5, 0xaf, - 0x8f, 0x20, 0x7a, 0xef, 0x7d, 0xf9, 0x5b, 0x85, 0xc5, 0x66, 0x16, 0xae, - 0xdc, 0x13, 0x94, 0x95, 0xdf, 0xce, 0x35, 0x5f, 0xf3, 0xf3, 0x64, 0x02, - 0xb7, 0xe7, 0x1c, 0x10, 0x23, 0x61, 0xe3, 0x08, 0xb6, 0x06, 0x02, 0xd4, - 0x09, 0x9a, 0xc6, 0xdf, 0xca, 0x2e, 0x73, 0xd1, 0x12, 0x60, 0x36, 0x9b, - 0xe9, 0xba, 0xf9, 0x96, 0xb9, 0x3d, 0x62, 0xe7, 0x74, 0x24, 0x18, 0x0c, - 0xff, 0x68, 0x68, 0x61, 0x73, 0x1c, 0x0b, 0x0d, 0x49, 0xd7, 0x03, 0x01, - 0x03, 0x6b, 0xbd, 0x1e, 0x5c, 0x37, 0xfe, 0xcc, 0x42, 0x97, 0x1d, 0x1c, - 0x83, 0x97, 0xed, 0x81, 0x41, 0x0e, 0xba, 0x1a, 0x7e, 0xc8, 0xae, 0xf8, - 0xda, 0x36, 0xa6, 0xb1, 0x26, 0x82, 0x5a, 0xe9, 0xdc, 0x42, 0x2a, 0x1b, - 0xe1, 0x16, 0x05, 0x34, 0x29, 0x24, 0xa6, 0xf0, 0xb5, 0x3c, 0x1a, 0x60, - 0xa8, 0x79, 0xcd, 0x0d, 0x96, 0xff, 0xae, 0xbd, 0xc5, 0x9f, 0x02, 0x44, - 0xdc, 0x95, 0x8e, 0xf5, 0x5a, 0xaf, 0x69, 0x7a, 0xdf, 0xa8, 0xa4, 0xeb, - 0xb4, 0x28, 0x0a, 0x26, 0x3c, 0x86, 0xe9, 0xd4, 0x20, 0x5f, 0xe8, 0x38, - 0x25, 0x6b, 0xa1, 0x1b, 0x22, 0x68, 0xd0, 0x3b, 0x84, 0x5f, 0x45, 0xfe, - 0x4d, 0xc1, 0x05, 0xd0, 0xe8, 0x4a, 0xb0, 0xbf, 0x21, 0xc9, 0x45, 0xea, - 0xc7, 0x16, 0x84, 0x62, 0x76, 0x4d, 0x93, 0x08, 0x77, 0x50, 0xac, 0xfc, - 0x50, 0x10, 0x2e, 0x84, 0xe8, 0x89, 0x99, 0xc1, 0x40, 0x28, 0x74, 0xfe, - 0x52, 0x88, 0x8f, 0xa0, 0xfd, 0xa2, 0x47, 0x64, 0x7d, 0xb1, 0x59, 0x3a, - 0xdf, 0xa4, 0x01, 0x2a, 0xa4, 0xc8, 0x29, 0x76, 0x1d, 0xed, 0xc7, 0x7c, - 0x32, 0xcc, 0x54, 0x05, 0x5c, 0xcb, 0x54, 0x5b, 0x0d, 0xfa, 0x31, 0xfc, - 0x89, 0x8c, 0x15, 0x70, 0xe1, 0xa8, 0x37, 0xf1, 0x52, 0x11, 0xc5, 0x19, - 0xfa, 0x89, 0x06, 0x30, 0xf1, 0x1d, 0xbb, 0x06, 0xbe, 0x38, 0x16, 0xf7, - 0x4f, 0x8c, 0x8e, 0xce, 0x4e, 0x7d, 0x59, 0x62, 0x6d, 0xc5, 0x74, 0x18, - 0xb7, 0xba, 0xee, 0x03, 0xad, 0x41, 0x7a, 0x1e, 0x35, 0x9e, 0xc3, 0xf4, - 0x6b, 0xd9, 0xa1, 0x29, 0xfa, 0xf0, 0x9e, 0x69, 0xed, 0x33, 0x71, 0x7c, - 0x7d, 0x43, 0xd7, 0x0a, 0x7f, 0x85, 0x48, 0xe8, 0x5c, 0x4f, 0x09, 0x38, - 0x2e, 0x18, 0xb2, 0x66, 0xd7, 0xb1, 0xa5, 0x50, 0xe7, 0xea, 0x05, 0x42, - 0x32, 0x90, 0xda, 0xfa, 0x6e, 0x7e, 0x88, 0x8d, 0xb7, 0xf5, 0xa7, 0xe2, - 0x63, 0x1d, 0x03, 0x0e, 0x18, 0xef, 0xe0, 0x63, 0xac, 0xaf, 0x60, 0x0f, - 0xe0, 0x41, 0x6c, 0xb4, 0x0a, 0x46, 0xb9, 0xcc, 0xc0, 0x46, 0x89, 0x2f, - 0x80, 0xea, 0x38, 0x12, 0x93, 0x50, 0x50, 0x60, 0x67, 0x34, 0x50, 0xd1, - 0x16, 0x55, 0xa5, 0x93, 0x93, 0x00, 0x45, 0x36, 0x54, 0x0d, 0x67, 0xb8, - 0xfc, 0xad, 0x49, 0x8d, 0x60, 0x43, 0x43, 0xf5, 0xf4, 0xfd, 0x28, 0xaa, - 0x70, 0xf0, 0xb2, 0xe7, 0x34, 0x10, 0x0a, 0xb7, 0x7b, 0xda, 0x8a, 0x63, - 0x9c, 0xab, 0xcb, 0x10, 0xb8, 0xb3, 0x9d, 0x7f, 0xdb, 0xbc, 0xcb, 0x85, - 0x69, 0x0f, 0x90, 0x23, 0x93, 0x75, 0x44, 0x90, 0x22, 0xbc, 0x78, 0x07, - 0x86, 0x3d, 0xbe, 0x78, 0xc6, 0xa8, 0xb8, 0x78, 0x42, 0xc3, 0x1a, 0x5c, - 0x98, 0x43, 0xa2, 0xc2, 0xee, 0xad, 0x7c, 0x33, 0x60, 0x66, 0x9a, 0xbe, - 0x21, 0x3a, 0xc7, 0xc7, 0xed, 0x86, 0x9a, 0x14, 0xec, 0x86, 0x68, 0x4d, - 0x72, 0x81, 0x03, 0xe7, 0x2d, 0x71, 0xe3, 0x34, 0xe5, 0x4b, 0x62, 0x07, - 0xec, 0x4c, 0x3c, 0xb6, 0xc6, 0xd0, 0xb7, 0x28, 0xbc, 0x18, 0x51, 0x7b, - 0xc0, 0xbc, 0x44, 0xac, 0x9c, 0x0c, 0x38, 0x04, 0x4d, 0xbc, 0xc1, 0x78, - 0xaf, 0xaf, 0x6b, 0x2c, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, - 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, - 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, - 0x00, 0x99, 0xd9, 0x34, 0x10, 0xf8, 0xba, 0x97, 0x53, 0x21, 0x29, 0x24, - 0x8c, 0xfc, 0xf9, 0x6a, 0x95, 0xe9, 0x97, 0x0d, 0x8a, 0x31, 0xdb, 0x23, - 0x68, 0xd7, 0x22, 0x48, 0x83, 0x63, 0xd9, 0x0e, 0x0d, 0xa7, 0xac, 0xd5, - 0x15, 0x80, 0x19, 0xbd, 0x0c, 0x45, 0xa5, 0xa1, 0x95, 0x95, 0xd2, 0x9f, - 0x39, 0x0a, 0xdf, 0x5e, 0xf5, 0xc4, 0xec, 0xed, 0x82, 0xa1, 0x4a, 0x35, - 0x00, 0x96, 0x55, 0x17, 0x89, 0x31, 0xc6, 0x86, 0x7c, 0x93, 0x05, 0x2b, - 0xea, 0xbd, 0xad, 0xed, 0x97, 0xee, 0xb7, 0xd1, 0x79, 0x81, 0x89, 0x34, - 0x29, 0xbd, 0xb3, 0x9d, 0xba, 0xa9, 0x89, 0x23, 0xf1, 0x0b, 0xd0, 0x60, - 0x0a, 0xd8, 0x94, 0x88, 0x2a, 0x14, 0x8d, 0x65, 0xb8, 0xde, 0x8e, 0x14, - 0xd8, 0xb1, 0xbd, 0x02, 0xda, 0xfb, 0x9f, 0xd0, 0xd2, 0x37, 0xdd, 0x79, - 0xa6, 0xa2, 0x43, 0xe5, 0xfd, 0x1d, 0xa5, 0x2e, 0xc5, 0x36, 0xa8, 0x3e, - 0xc8, 0x53, 0x27, 0xcc, 0x8f, 0xee, 0xd2, 0x5f, 0xf4, 0x95, 0x71, 0x0b, - 0x25, 0x3f, 0x24, 0x4c, 0x50, 0x4f, 0xd3, 0x46, 0xee, 0xb0, 0xdb, 0x0f, - 0x69, 0x93, 0x71, 0x57, 0xff, 0xcf, 0x62, 0x00, 0xa7, 0xb3, 0xef, 0xb2, - 0x23, 0x5c, 0x3d, 0x2b, 0x6f, 0xa1, 0x6f, 0x69, 0xeb, 0xa8, 0xef, 0xcd, - 0xff, 0xfd, 0x69, 0x37, 0x81, 0x61, 0xb6, 0x54, 0xaa, 0xb1, 0x3d, 0x5b, - 0x30, 0x35, 0x1d, 0x1c, 0x67, 0x99, 0xe2, 0x72, 0x5d, 0x7a, 0xfb, 0xc0, - 0x17, 0x37, 0x98, 0x37, 0x33, 0xe4, 0xd7, 0x33, 0x80, 0x8c, 0x66, 0x24, - 0xe8, 0x04, 0x9a, 0x66, 0xcf, 0xf6, 0xf3, 0x43, 0x5c, 0xc8, 0x6b, 0x5f, - 0x4c, 0xf4, 0xc0, 0x26, 0x01, 0xc8, 0x37, 0x76, 0xa9, 0x99, 0xac, 0x25, - 0x56, 0xab, 0xd8, 0xca, 0xca, 0x81, 0xe5, 0x51, 0x7a, 0x14, 0x3f, 0xfb, - 0x0b, 0x63, 0xa0, 0x10, 0x32, 0xe9, 0x4d, 0x15, 0x00, 0xb0, 0xd1, 0xad, - 0x08, 0x2c, 0x45, 0x32, 0xf7, 0x1f, 0xa1, 0x69, 0x9b, 0x0c, 0x34, 0x75, - 0x58, 0xa5, 0xa5, 0xb3, 0xdd, 0x87, 0x44, 0x5e, 0x83, 0x8b, 0x01, 0x5f, - 0x59, 0xf5, 0x47, 0x49, 0x8c, 0x05, 0x70, 0x14, 0x5b, 0x1a, 0xa4, 0x9d, - 0xe8, 0x8b, 0xf9, 0xa7, 0xd2, 0x35, 0x02, 0x46, 0x1c, 0x87, 0xb7, 0xb5, - 0x34, 0x2e, 0x95, 0xc7, 0xc5, 0x74, 0x59, 0x16, 0x5e, 0xac, 0x92, 0x6c, - 0x6a, 0x9f, 0x65, 0x83, 0x1e, 0xce, 0x9d, 0x08, 0xfc, 0x68, 0x5f, 0x72, - 0x34, 0xaa, 0x9a, 0xea, 0x95, 0x81, 0xd6, 0xe6, 0x73, 0xee, 0x92, 0x49, - 0xf8, 0xe1, 0xd6, 0x0d, 0x41, 0x9c, 0xea, 0x3f, 0xb0, 0x79, 0xd2, 0x1e, - 0x23, 0x3b, 0x08, 0x55, 0xe8, 0x87, 0x9a, 0xec, 0xda, 0x01, 0xfc, 0xff, - 0xf3, 0x8a, 0x3d, 0x1a, 0x72, 0x2f, 0x56, 0xe8, 0x80, 0x82, 0xef, 0x1b, - 0x3f, 0xdb, 0xce, 0x9c, 0xd0, 0x58, 0x18, 0x8f, 0x6c, 0xe2, 0xda, 0xf3, - 0x50, 0x8e, 0xb8, 0xa0, 0x5e, 0xd0, 0x87, 0x7d, 0xbc, 0x59, 0x76, 0x1c, - 0x6f, 0x70, 0x3c, 0x15, 0x38, 0x4b, 0x2a, 0x39, 0x92, 0x66, 0x42, 0x01, - 0x9b, 0x3e, 0xa4, 0xe6, 0x1f, 0x32, 0x74, 0x1d, 0x78, 0x72, 0xdf, 0x54, - 0xf9, 0x37, 0x43, 0xda, 0xac, 0x11, 0xda, 0xd5, 0x82, 0x8e, 0x52, 0xfa, - 0xb0, 0xec, 0x1e, 0x39, 0xb3, 0xc4, 0xf7, 0x08, 0x54, 0xc0, 0x21, 0x33, - 0xd8, 0x2f, 0x84, 0x64, 0xc6, 0x73, 0x73, 0x17, 0x02, 0xc2, 0x17, 0x9d, - 0x53, 0xd3, 0x91, 0xa9, 0x7c, 0xbd, 0xff, 0x2a, 0xef, 0x62, 0xcf, 0x70, - 0xb3, 0xb6, 0xf8, 0xf2, 0x3e, 0x62, 0x85, 0x79, 0x20, 0x1d, 0xc3, 0xda, - 0xc7, 0x20, 0xde, 0xcd, 0x52, 0x92, 0x2f, 0x70, 0x10, 0xfd, 0x1c, 0x95, - 0x3a, 0xd9, 0x59, 0x3e, 0x69, 0xd1, 0x55, 0x38, 0xa1, 0x24, 0x9e, 0xb3, - 0x45, 0x52, 0x93, 0xcb, 0x6b, 0x1d, 0x4f, 0x80, 0x88, 0x0b, 0x8e, 0x2d, - 0xc6, 0x99, 0x33, 0x4b, 0xf1, 0x80, 0x57, 0x20, 0x8f, 0xe1, 0x43, 0x2f, - 0xef, 0x15, 0x5a, 0x6d, 0x9b, 0xa3, 0x1b, 0x5b, 0x5d, 0x3b, 0xdb, 0x33, - 0xe7, 0x02, 0xb1, 0xf9, 0x77, 0xfd, 0x87, 0x80, 0x82, 0xe7, 0xca, 0x46, - 0x66, 0x59, 0x9d, 0x2e, 0x9d, 0xad, 0x4d, 0xd9, 0xc3, 0xe3, 0x53, 0x4e, - 0xa0, 0xa0, 0xab, 0x28, 0xab, 0x02, 0xbb, 0x06, 0x33, 0x42, 0x6b, 0xb5, - 0x61, 0x9a, 0x92, 0x42, 0xa0, 0xc0, 0x5d, 0x95, 0x8b, 0x5f, 0x22, 0x13, - 0xd1, 0x2d, 0xc0, 0x0d, 0x34, 0xac, 0x42, 0x38, 0x33, 0xa1, 0xc5, 0xf0, - 0x4b, 0x0f, 0x2c, 0x66, 0x16, 0x1f, 0x34, 0x61, 0x6b, 0x64, 0x31, 0x16, - 0x8f, 0x17, 0x6e, 0x65, 0xae, 0xdc, 0x96, 0xdb, 0x33, 0xe8, 0xa1, 0xe2, - 0x41, 0xeb, 0x54, 0x3c, 0x1c, 0xb5, 0xe1, 0x26, 0x3a, 0x27, 0x4b, 0xac, - 0xcb, 0x07, 0x55, 0xc5, 0x7b, 0x86, 0x22, 0x1c, 0x04, 0xa5, 0x9f, 0x99, - 0x9b, 0xb9, 0xa5, 0xc0, 0x93, 0xad, 0xaf, 0xa7, 0x30, 0x48, 0xdc, 0x1d, - 0x85, 0x69, 0x0c, 0xdc, 0x2e, 0x18, 0x66, 0x09, 0x21, 0xa6, 0x44, 0x67, - 0x7b, 0x75, 0x6c, 0x5f, 0xb1, 0x3a, 0x69, 0xe0, 0x88, 0xac, 0xff, 0x3b, - 0x57, 0x00, 0xd1, 0x97, 0x8d, 0x49, 0x80, 0x68, 0x01, 0x00, 0x00, 0xc0, - 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, - 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, - 0x0c, 0x84, 0x44, 0x6a, 0x77, 0xa6, 0xe6, 0xb8, 0x93, 0xb0, 0x99, 0x90, - 0x03, 0xd5, 0x33, 0x66, 0x83, 0xc9, 0x9a, 0x6c, 0x24, 0x88, 0x3c, 0x0f, - 0xe0, 0x32, 0xe7, 0x27, 0x99, 0xbf, 0xbd, 0xc8, 0x15, 0x42, 0xac, 0x2f, - 0xa2, 0x13, 0x1c, 0xa8, 0xdc, 0x73, 0x31, 0xa6, 0x64, 0x06, 0x78, 0xfc, - 0x43, 0x5f, 0xa5, 0x88, 0xaa, 0x1f, 0xa4, 0x51, 0xe8, 0xeb, 0xb7, 0x73, - 0xe4, 0xc3, 0x11, 0x35, 0x0a, 0x5f, 0x2b, 0x1b, 0x03, 0x47, 0x44, 0x93, - 0x8d, 0x19, 0x01, 0xd9, 0x96, 0x7d, 0xee, 0xd2, 0xc0, 0x5b, 0x34, 0x4b, - 0x87, 0x2d, 0x39, 0xf2, 0x9a, 0xdd, 0xc6, 0xad, 0x69, 0xb9, 0x4e, 0xc3, - 0x9c, 0x7e, 0x98, 0x29, 0x26, 0x80, 0xd6, 0xb3, 0xa6, 0x56, 0x08, 0xca, - 0x23, 0x6c, 0x50, 0x1b, 0x28, 0x4e, 0xfa, 0xab, 0x98, 0xfa, 0x08, 0xa5, - 0xc0, 0x6a, 0x21, 0xfd, 0x00, 0xfc, 0xe5, 0xa2, 0xb6, 0xff, 0x73, 0x3e, - 0x14, 0x43, 0xf5, 0x98, 0xf2, 0xa3, 0xb7, 0x89, 0xca, 0xa9, 0xa8, 0x6f, - 0x74, 0x1d, 0x77, 0x87, 0x08, 0xf6, 0x35, 0xbf, 0x89, 0x72, 0xfc, 0xa7, - 0xcd, 0x38, 0x91, 0x57, 0x3b, 0x62, 0x47, 0x1d, 0xab, 0x59, 0x54, 0x99, - 0x98, 0xc2, 0x98, 0xe6, 0x62, 0x79, 0x1f, 0xba, 0x6d, 0x5d, 0xda, 0x74, - 0x79, 0xed, 0xe8, 0x9f, 0x51, 0x13, 0x0f, 0x12, 0x9b, 0x84, 0x34, 0x26, - 0xa6, 0x3f, 0x7f, 0x01, 0x0e, 0x4b, 0x3a, 0x33, 0xfb, 0xb7, 0x74, 0x52, - 0x33, 0x71, 0x9a, 0xf4, 0x2b, 0x4e, 0xbd, 0x2e, 0xed, 0xc8, 0xa7, 0x32, - 0x12, 0x9b, 0x8a, 0xd3, 0x8e, 0x5d, 0xb7, 0xa2, 0x2d, 0xa5, 0x9e, 0x2e, - 0x7e, 0xdd, 0x27, 0x17, 0x5d, 0x14, 0x94, 0x6d, 0xec, 0x66, 0x19, 0x40, - 0x20, 0x29, 0x76, 0xe8, 0xfe, 0xd7, 0x2b, 0x82, 0x02, 0x3f, 0x66, 0x40, - 0xae, 0x23, 0x9d, 0xb2, 0x7a, 0xaf, 0x96, 0x41, 0xbf, 0x4d, 0x2c, 0x26, - 0x32, 0xbc, 0x70, 0x1c, 0x5f, 0x6b, 0xe2, 0x39, 0x86, 0x2d, 0xd8, 0x8f, - 0x25, 0xc2, 0xc2, 0xd5, 0x83, 0x51, 0x86, 0x5c, 0x09, 0x31, 0x75, 0xcb, - 0x3d, 0x9c, 0x35, 0x33, 0x39, 0x6b, 0x96, 0xd7, 0xa4, 0xef, 0xef, 0x2e, - 0xd2, 0x12, 0x57, 0x66, 0xcf, 0x83, 0xaa, 0x93, 0xb6, 0x9b, 0xd8, 0x95, - 0xda, 0xd3, 0xfa, 0xd1, 0x5c, 0xf1, 0x26, 0xfc, 0x65, 0xd1, 0x8b, 0x43, - 0xed, 0x48, 0x2e, 0xc7, 0x3f, 0x5c, 0xa3, 0x98, 0x6d, 0x12, 0x32, 0xd4, - 0x24, 0xb1, 0x26, 0x40, 0xd3, 0x41, 0xbf, 0x3a, 0xd6, 0x58, 0x69, 0x25, - 0x09, 0x0f, 0x4d, 0xeb, 0xa0, 0x05, 0x04, 0x04, 0xb8, 0x1c, 0x2b, 0x3b, - 0x76, 0x68, 0xa7, 0xcc, 0xa7, 0xcc, 0x2a, 0x96, 0x52, 0x9c, 0xb6, 0x74, - 0x1a, 0x8d, 0xc4, 0x61, 0x11, 0xc6, 0xc4, 0x02, 0x52, 0x02, 0x2f, 0x7e, - 0x60, 0x3c, 0x49, 0x02, 0x1c, 0x4c, 0x93, 0x82, 0x74, 0x7f, 0x40, 0xa5, - 0x6d, 0x13, 0x93, 0xd6, 0x79, 0x62, 0x97, 0x5c, 0x2a, 0xaa, 0x72, 0x8d, - 0x0f, 0x22, 0x86, 0x7e, 0x33, 0xa1, 0xaa, 0xad, 0xdd, 0x1d, 0xea, 0x41, - 0x8f, 0x73, 0x0c, 0x83, 0xf7, 0x33, 0x76, 0xa8, 0xd6, 0x77, 0x18, 0x8c, - 0xd9, 0x15, 0x6f, 0x0b, 0x90, 0x8d, 0xae, 0x2b, 0xe0, 0xc8, 0x2c, 0x12, - 0x49, 0x3a, 0xe7, 0x39, 0xd3, 0x5c, 0x0c, 0x49, 0xbd, 0x43, 0x27, 0x47, - 0x1e, 0x57, 0xb6, 0x2b, 0x7b, 0x04, 0x5a, 0x7f, 0xed, 0x2d, 0x73, 0x79, - 0xc6, 0x41, 0xa4, 0x95, 0x10, 0xae, 0x55, 0x43, 0x7e, 0x44, 0x79, 0xc5, - 0x8a, 0x87, 0x16, 0x5a, 0x6b, 0x52, 0xe9, 0x6d, 0x82, 0x38, 0xbb, 0xed, - 0xe0, 0x99, 0x9f, 0x45, 0x00, 0xa4, 0xf1, 0x9a, 0x7e, 0x08, 0x53, 0x29, - 0x68, 0x98, 0xcc, 0xb9, 0xdd, 0x12, 0xed, 0xf9, 0x4e, 0x49, 0x3a, 0x33, - 0x39, 0x52, 0x92, 0x61, 0x97, 0x89, 0xb2, 0x59, 0x28, 0xb8, 0xf4, 0x44, - 0x10, 0xff, 0x73, 0x79, 0x0a, 0xed, 0xc1, 0xb7, 0x64, 0xfe, 0x7e, 0xc2, - 0x87, 0x0d, 0xea, 0x70, 0xda, 0xa7, 0x10, 0x45, 0x00, 0x2c, 0x1e, 0x47, - 0x0e, 0x0c, 0xfa, 0xcb, 0xb6, 0xc6, 0x88, 0x2e, 0x92, 0x96, 0x73, 0x76, - 0xb5, 0x4c, 0x4a, 0x5b, 0x39, 0xaa, 0xfa, 0xc1, 0xdd, 0xd6, 0x81, 0xc9, - 0x1b, 0xf4, 0xab, 0x35, 0xd9, 0x11, 0xb7, 0xc6, 0x7d, 0xba, 0x3a, 0x06, - 0x10, 0xe7, 0xeb, 0xbc, 0x47, 0x8f, 0x6d, 0x17, 0x55, 0x86, 0x9b, 0xfb, - 0x00, 0xaf, 0x20, 0x45, 0x38, 0x51, 0xc4, 0x9f, 0x82, 0xbb, 0x98, 0x4e, - 0xe0, 0x63, 0x9f, 0x04, 0xa6, 0x4c, 0x6c, 0x40, 0x88, 0xb9, 0xf6, 0x12, - 0xd7, 0x11, 0x4a, 0x08, 0x33, 0xa9, 0x97, 0xb0, 0xc6, 0x62, 0x17, 0x05, - 0x50, 0x0d, 0xa9, 0x00, 0xcf, 0x91, 0x37, 0x24, 0x31, 0x8d, 0xb3, 0xe2, - 0xf5, 0x25, 0xc0, 0xb2, 0x7e, 0x62, 0x6c, 0x95, 0xbe, 0x31, 0xea, 0x9a, - 0xba, 0x9d, 0xba, 0x2c, 0xfe, 0xe6, 0x81, 0x9a, 0xf3, 0x95, 0x3c, 0xfb, - 0xea, 0x45, 0xa0, 0x5c, 0xb8, 0x57, 0x38, 0x13, 0xdb, 0xea, 0x74, 0x8e, - 0xbb, 0xa3, 0x29, 0x1b, 0xc9, 0xfa, 0x74, 0xad, 0xe7, 0x7f, 0x57, 0xbf, - 0x56, 0xbf, 0x12, 0x17, 0x5d, 0xa0, 0x2d, 0xd9, 0x33, 0xf6, 0x31, 0x0f, - 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, - 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, - 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x10, 0x6f, 0x0b, 0x11, - 0x95, 0xcf, 0xdf, 0xa6, 0xbc, 0xb8, 0x25, 0x1e, 0x10, 0x7d, 0x2c, 0xc0, - 0x1b, 0x20, 0x8e, 0x6d, 0x2c, 0xf8, 0x17, 0x31, 0xe0, 0x75, 0x10, 0x9e, - 0x6d, 0xe3, 0xbd, 0x1d, 0x1c, 0x0e, 0xf7, 0x08, 0x01, 0x38, 0x57, 0xae, - 0x95, 0xd6, 0x5f, 0xc9, 0x0c, 0x6e, 0x7d, 0xa7, 0xd3, 0x65, 0x6a, 0x15, - 0x87, 0xf6, 0x15, 0xd0, 0xce, 0x1d, 0x27, 0x54, 0x88, 0x37, 0x5a, 0x15, - 0x4e, 0x6b, 0x76, 0x27, 0xa0, 0x46, 0x24, 0x20, 0xbc, 0x6b, 0xde, 0x53, - 0xd9, 0x17, 0x79, 0xed, 0xd9, 0x22, 0x0d, 0xc5, 0x17, 0xa1, 0xba, 0x6d, - 0xbf, 0x9b, 0xb9, 0x83, 0xc0, 0x0b, 0x05, 0x09, 0xfd, 0x89, 0x7c, 0x68, - 0x75, 0x63, 0x6f, 0xb9, 0x33, 0xd1, 0xad, 0xaf, 0xac, 0x9b, 0x84, 0x06, - 0x47, 0xaa, 0xf2, 0x44, 0xbf, 0x2b, 0x05, 0xc2, 0x8a, 0x22, 0x05, 0x97, - 0xf6, 0xef, 0x5e, 0x0c, 0x76, 0x30, 0x84, 0x11, 0x3f, 0x17, 0x6d, 0xeb, - 0x22, 0xec, 0xde, 0xf3, 0x81, 0xf9, 0x16, 0x02, 0x8f, 0x6e, 0x40, 0xb7, - 0x6f, 0x76, 0xb1, 0x3a, 0x11, 0x32, 0xe2, 0xfc, 0x7c, 0xec, 0xcb, 0x4f, - 0x5b, 0xcf, 0xf1, 0x99, 0xad, 0xe0, 0x0a, 0xdd, 0x52, 0x26, 0x66, 0x31, - 0x1a, 0x5e, 0xf7, 0x2e, 0xea, 0xcc, 0xc8, 0xb3, 0x7e, 0x92, 0xfd, 0x29, - 0xf8, 0x1a, 0xdb, 0x50, 0x81, 0xd7, 0x5a, 0x68, 0xcb, 0x77, 0x71, 0x97, - 0xfb, 0x1f, 0x5f, 0xba, 0x5d, 0x0a, 0x08, 0xed, 0xe0, 0xf3, 0x16, 0xae, - 0x71, 0x00, 0x0b, 0xa9, 0xd8, 0x97, 0x78, 0xbc, 0x62, 0x0b, 0x16, 0xe2, - 0x1b, 0xd3, 0xc5, 0x63, 0x67, 0x37, 0xc4, 0x67, 0x50, 0x91, 0xc1, 0x0b, - 0xdd, 0x28, 0x1e, 0x70, 0x78, 0x05, 0x5f, 0x9c, 0x98, 0xe5, 0x34, 0x61, - 0x25, 0xde, 0x7e, 0xa4, 0xf6, 0x4a, 0xd8, 0xa6, 0x6b, 0x6f, 0x03, 0x6b, - 0x54, 0x42, 0xc9, 0x91, 0x8a, 0xe7, 0xf6, 0x9f, 0x70, 0xca, 0x4e, 0x43, - 0x64, 0xf7, 0x89, 0x7c, 0x75, 0x25, 0x28, 0xe4, 0x69, 0xee, 0x1e, 0xea, - 0xaf, 0xb7, 0x0f, 0x77, 0x72, 0xe5, 0xe7, 0x26, 0xd0, 0xde, 0xb5, 0x46, - 0xf6, 0x3f, 0x47, 0xd8, 0x33, 0x24, 0x67, 0x9e, 0x03, 0xcc, 0x11, 0x69, - 0x2e, 0x44, 0x1b, 0x09, 0x7b, 0xb4, 0x11, 0x82, 0x23, 0x7e, 0x76, 0x36, - 0x0a, 0xf5, 0x0a, 0x10, 0x36, 0xf3, 0x11, 0xb7, 0xed, 0xb9, 0x3f, 0x08, - 0x8c, 0xd0, 0x9b, 0x85, 0x8b, 0x81, 0xf1, 0x45, 0xe0, 0xd0, 0xba, 0x9e, - 0x17, 0xa6, 0x11, 0x28, 0x03, 0x46, 0xcf, 0xba, 0x7d, 0x8e, 0x7f, 0x4c, - 0xf4, 0x4b, 0x38, 0xf6, 0x86, 0xa0, 0xe2, 0xd0, 0x1c, 0xc1, 0x83, 0xd4, - 0xe1, 0x5a, 0xc4, 0xdb, 0x6c, 0xf9, 0x9a, 0xed, 0x8f, 0xc1, 0xbd, 0x54, - 0x88, 0x11, 0x05, 0x5a, 0xba, 0x65, 0x8b, 0x4b, 0xdd, 0x68, 0x8d, 0xb7, - 0xc0, 0x6d, 0x2d, 0x95, 0xac, 0xa3, 0x32, 0x76, 0x8e, 0xd0, 0x98, 0xc8, - 0x39, 0xe9, 0xf5, 0xcb, 0x97, 0xb9, 0xb5, 0x58, 0xfc, 0x1b, 0xfe, 0x00, - 0x8c, 0x0d, 0x02, 0x00, 0xb6, 0x8c, 0xdb, 0xbe, 0xd6, 0x77, 0xec, 0x5b, - 0x2f, 0x11, 0x28, 0x1a, 0x0f, 0x23, 0x7e, 0xa6, 0xc8, 0xef, 0x73, 0xc7, - 0x17, 0x2d, 0xd0, 0x8a, 0xed, 0x3a, 0x31, 0x3d, 0xda, 0x62, 0xd0, 0x33, - 0x54, 0x6c, 0x1d, 0xa9, 0x40, 0x3e, 0x71, 0x52, 0x10, 0xe2, 0xe3, 0x30, - 0x1e, 0xfe, 0x69, 0x7e, 0x22, 0xdb, 0x74, 0x16, 0xac, 0x96, 0xff, 0x56, - 0x00, 0x6b, 0x5d, 0xda, 0xf8, 0xd7, 0xf8, 0x62, 0x78, 0x1b, 0x0a, 0x1d, - 0x60, 0x9a, 0x7a, 0x50, 0x39, 0xec, 0x99, 0x40, 0x29, 0x26, 0x22, 0x61, - 0xe4, 0x9d, 0x84, 0x20, 0x1c, 0xde, 0x93, 0x35, 0x8c, 0x23, 0x49, 0x69, - 0x86, 0xc3, 0x67, 0x0a, 0x3c, 0x7a, 0x88, 0xe5, 0x1b, 0xb3, 0xa1, 0x59, - 0xe2, 0x69, 0xa5, 0xf1, 0xa3, 0x6a, 0xf4, 0x84, 0xfe, 0x8e, 0xe6, 0x79, - 0x03, 0x5e, 0x9d, 0xbf, 0xfa, 0x00, 0x9d, 0x1c, 0xd7, 0x66, 0x52, 0x4e, - 0xf0, 0x4b, 0xd2, 0xfd, 0x08, 0x88, 0x42, 0x6e, 0xd4, 0x3e, 0xff, 0xd6, - 0xc1, 0x61, 0x3f, 0x44, 0xeb, 0x37, 0xf1, 0x30, 0x67, 0x3d, 0x75, 0xfe, - 0x74, 0xc2, 0x80, 0x81, 0xc9, 0xea, 0x33, 0x4b, 0xec, 0xd8, 0x8e, 0xd0, - 0xa5, 0x6c, 0xf3, 0x8f, 0xbb, 0x6a, 0xd4, 0x78, 0xbe, 0xd9, 0xeb, 0xc9, - 0x35, 0xde, 0x33, 0xbc, 0xc3, 0x33, 0x55, 0xf2, 0x18, 0x3d, 0x5d, 0x42, - 0x36, 0x59, 0x2f, 0x0d, 0x54, 0x8b, 0xf0, 0xc7, 0x5e, 0x7d, 0xbc, 0x2e, - 0xa2, 0x10, 0x2a, 0x8e, 0xc6, 0xec, 0xa8, 0xe8, 0x7b, 0x6f, 0x3b, 0xe9, - 0x4d, 0xed, 0x51, 0x4c, 0x92, 0xcf, 0x61, 0xd9, 0x76, 0x79, 0x3e, 0x1c, - 0x21, 0x87, 0x50, 0x54, 0x69, 0xfe, 0x59, 0x68, 0x8f, 0x17, 0x11, 0xf6, - 0x7b, 0x01, 0x70, 0x47, 0x9d, 0xf9, 0x84, 0xa5, 0x07, 0x01, 0xbe, 0x8a, - 0xef, 0xd4, 0xec, 0xa1, 0xfa, 0x2b, 0x11, 0x08, 0xb1, 0xfc, 0x1f, 0x5c, - 0x0e, 0x4c, 0x31, 0x7d, 0x87, 0x1c, 0x45, 0xc5, 0x06, 0xf3, 0x99, 0xbd, - 0x7d, 0xdc, 0x53, 0x72, 0xa7, 0xc3, 0x18, 0x86, 0x50, 0x06, 0x57, 0xfd, - 0x86, 0x2b, 0xd1, 0x03, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, - 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, - 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, - 0x54, 0x7f, 0x17, 0xef, 0x3a, 0x29, 0x1c, 0x34, 0xc7, 0xc0, 0xe5, 0x28, - 0x2b, 0x35, 0xf3, 0xda, 0x99, 0xee, 0xec, 0x60, 0xbc, 0x81, 0x95, 0x08, - 0xc0, 0x9e, 0x34, 0x09, 0x6d, 0x65, 0xe6, 0x1a, 0x89, 0x04, 0xd0, 0x8e, - 0xbf, 0x56, 0xf5, 0xc7, 0x6a, 0x63, 0xe8, 0xc0, 0x10, 0x94, 0xd8, 0x67, - 0x9b, 0xb7, 0x8a, 0xfe, 0xb2, 0x60, 0xff, 0x73, 0x48, 0x17, 0x9b, 0x0c, - 0x3d, 0x0b, 0x39, 0x01, 0xd4, 0x4f, 0x64, 0x08, 0x5e, 0x48, 0xa0, 0x00, - 0x31, 0x8d, 0xb2, 0xdc, 0xfb, 0x19, 0xab, 0x25, 0x2d, 0x61, 0xed, 0x39, - 0x54, 0x24, 0x23, 0x82, 0x5c, 0x1a, 0xbe, 0x50, 0x41, 0xf3, 0x72, 0x20, - 0x03, 0x6b, 0xb1, 0x44, 0x84, 0x31, 0x5d, 0xd6, 0x7c, 0x49, 0x8b, 0xad, - 0xb7, 0x93, 0xec, 0x83, 0x58, 0xd9, 0x4e, 0x57, 0x84, 0x48, 0x79, 0x08, - 0x5b, 0x69, 0xa3, 0xd9, 0xb4, 0x89, 0x84, 0x3c, 0x1e, 0xb9, 0x18, 0x88, - 0x1a, 0xce, 0x9c, 0x2c, 0xae, 0x19, 0xff, 0x9b, 0x38, 0x80, 0x0c, 0x97, - 0x06, 0x3d, 0x50, 0x0c, 0x2c, 0x1e, 0xc8, 0xdc, 0x54, 0x04, 0xec, 0xf9, - 0x34, 0x12, 0xa6, 0x02, 0xbb, 0x47, 0x2d, 0x4d, 0xa4, 0x9d, 0x85, 0x03, - 0x1e, 0xb7, 0xf1, 0x0f, 0x38, 0xa6, 0xa7, 0xf8, 0x9a, 0x75, 0xc1, 0xcd, - 0x8c, 0x66, 0xbf, 0x2e, 0x21, 0x16, 0x40, 0xa7, 0xdf, 0xd5, 0xfe, 0x53, - 0x76, 0xfa, 0x63, 0xaf, 0x8e, 0xbe, 0x19, 0x66, 0x45, 0x6f, 0x21, 0x07, - 0x0e, 0x75, 0x28, 0xa5, 0x8b, 0x48, 0x98, 0xa9, 0x41, 0xb7, 0x6a, 0xca, - 0x43, 0xc1, 0xba, 0xc6, 0x65, 0x34, 0x00, 0x36, 0xe4, 0xb6, 0xac, 0x2a, - 0x43, 0x97, 0xc2, 0xdb, 0x65, 0x8f, 0x9f, 0xff, 0xf8, 0x39, 0x51, 0x7e, - 0xe6, 0xcb, 0xaa, 0xbf, 0xe8, 0xac, 0x92, 0x9c, 0xd8, 0xaf, 0xd7, 0x29, - 0x9d, 0xf3, 0xde, 0x49, 0x78, 0xcb, 0xf1, 0xcd, 0x47, 0x11, 0x8d, 0xbb, - 0xf4, 0x1d, 0x88, 0x95, 0x2f, 0xe7, 0xbe, 0x33, 0x96, 0x31, 0x8e, 0x36, - 0xf6, 0x4c, 0xfb, 0x27, 0xfc, 0x6c, 0xad, 0x2a, 0xcc, 0xfa, 0x89, 0x49, - 0xe0, 0x1e, 0x2a, 0x02, 0x53, 0x3e, 0x17, 0x9f, 0x04, 0xd0, 0xc9, 0x6f, - 0x5f, 0xd8, 0x6a, 0xaa, 0x8f, 0x8a, 0xe6, 0x78, 0xa0, 0x08, 0x42, 0xb8, - 0x61, 0xdb, 0xb2, 0xc2, 0x67, 0xbb, 0xcc, 0x36, 0xe3, 0xed, 0x3f, 0x70, - 0x06, 0xe0, 0x7b, 0xab, 0x96, 0x7b, 0x9e, 0x9a, 0x90, 0x1b, 0x61, 0x22, - 0xbe, 0x8c, 0x48, 0x44, 0xd1, 0x94, 0x53, 0x50, 0xc4, 0x83, 0x9f, 0x6f, - 0xfe, 0x57, 0x2d, 0x19, 0x4f, 0x0d, 0x61, 0xba, 0x42, 0x2e, 0xd9, 0x0d, - 0xbd, 0x63, 0xb8, 0x69, 0x17, 0xb9, 0x41, 0xd9, 0x67, 0x09, 0x4f, 0xf7, - 0xca, 0x78, 0x31, 0x7b, 0xf6, 0x64, 0x3e, 0x7f, 0x1d, 0xa4, 0x72, 0x1b, - 0xa5, 0xe2, 0x2b, 0x74, 0x3d, 0xfc, 0x69, 0xbd, 0x13, 0x6d, 0x05, 0x78, - 0x80, 0x7c, 0x41, 0xd9, 0x07, 0xbe, 0xfa, 0x02, 0xb0, 0x07, 0x75, 0xe9, - 0x34, 0x12, 0xfc, 0xd2, 0x88, 0xfc, 0xdf, 0x52, 0x33, 0x20, 0x2f, 0x5a, - 0xe5, 0x3e, 0x17, 0xf3, 0x79, 0xbf, 0x21, 0x23, 0x3a, 0x23, 0x74, 0xa7, - 0x7c, 0xf0, 0xb9, 0xaf, 0x0f, 0x4b, 0xe1, 0x77, 0xbe, 0xe4, 0x81, 0x26, - 0x2b, 0x29, 0x98, 0x4c, 0x30, 0x8a, 0xbd, 0x29, 0xbb, 0x87, 0x32, 0x14, - 0xb5, 0xd5, 0x1e, 0x1c, 0x4c, 0xa3, 0x08, 0x61, 0xf5, 0x82, 0x89, 0xf1, - 0xc9, 0x19, 0x1a, 0x53, 0x2d, 0xcb, 0xa9, 0x26, 0x4f, 0x87, 0xd6, 0x08, - 0xb0, 0xcb, 0x31, 0xe0, 0x48, 0x06, 0xed, 0x2f, 0xab, 0xdb, 0x74, 0xb1, - 0xab, 0xab, 0xb8, 0xc7, 0xa8, 0x39, 0x21, 0xce, 0x0e, 0x6e, 0x16, 0x2b, - 0x68, 0x2d, 0xd3, 0xcd, 0xc3, 0x3c, 0xcc, 0x65, 0x4f, 0xde, 0xd8, 0xd8, - 0x98, 0x51, 0x00, 0x29, 0x8f, 0x95, 0xe2, 0x8e, 0xc1, 0x48, 0xd3, 0xab, - 0xaa, 0x40, 0xe0, 0x8a, 0x78, 0x36, 0x36, 0xd2, 0xfc, 0xfc, 0xab, 0xc2, - 0x4e, 0x71, 0x15, 0x4d, 0xb3, 0x92, 0x80, 0xa4, 0x4b, 0x63, 0x63, 0xaf, - 0x3e, 0x0b, 0xf7, 0x34, 0xf1, 0x41, 0x86, 0x57, 0x18, 0x36, 0xf3, 0x48, - 0x0d, 0x39, 0xd3, 0x86, 0x31, 0x10, 0xcd, 0x5f, 0xd7, 0xc9, 0xf7, 0x66, - 0xcf, 0x39, 0x6c, 0x97, 0x01, 0xa1, 0x87, 0xba, 0x72, 0x40, 0x21, 0x13, - 0xb8, 0x55, 0xd0, 0xdd, 0xb9, 0xa5, 0xbc, 0xe3, 0x93, 0xc2, 0xc7, 0xd7, - 0x48, 0xbc, 0x35, 0xb4, 0xac, 0xea, 0x72, 0x60, 0x15, 0x07, 0xf5, 0x55, - 0xbc, 0xfd, 0xb5, 0xa5, 0xdf, 0x8f, 0x17, 0x3f, 0xd4, 0x73, 0x93, 0x99, - 0x93, 0xf7, 0x66, 0x93, 0x4a, 0x26, 0x04, 0x49, 0x09, 0x1b, 0x0e, 0x15, - 0xf9, 0xf1, 0x4b, 0x42, 0x41, 0xab, 0xf1, 0xb1, 0x3b, 0x59, 0x74, 0x57, - 0xe4, 0x0a, 0x7b, 0x6f, 0x4f, 0xa2, 0x40, 0x1a, 0xd1, 0x16, 0x42, 0x77, - 0x6e, 0x7f, 0xed, 0x79, 0x17, 0x0a, 0xa4, 0xe7, 0x44, 0x8b, 0x91, 0x16, - 0x3e, 0xf4, 0x12, 0x6d, 0xde, 0xfd, 0x4f, 0x40, 0x9f, 0x9d, 0x1b, 0x86, - 0xec, 0x09, 0x63, 0x9f, 0x91, 0xdb, 0xa0, 0x41, 0xb7, 0xde, 0x97, 0x02, - 0x3b, 0xf3, 0xf1, 0xc2, 0xf3, 0x91, 0xae, 0x2b, 0x01, 0x00, 0x00, 0xc0, - 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, - 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, - 0x0c, 0x84, 0x44, 0x6a, 0x63, 0x36, 0x20, 0x49, 0x74, 0xcd, 0x2b, 0x32, - 0xb4, 0x72, 0xd8, 0x8c, 0x5e, 0xa5, 0xba, 0x64, 0x7b, 0x7c, 0x95, 0x27, - 0x43, 0x64, 0xe4, 0xc3, 0x24, 0x87, 0x0b, 0x29, 0x80, 0x56, 0x5b, 0x68, - 0x42, 0x38, 0x57, 0xda, 0x78, 0xa6, 0xeb, 0xa3, 0x87, 0x69, 0x75, 0x01, - 0x83, 0xfe, 0x5c, 0x2d, 0x60, 0xcc, 0x59, 0xbe, 0x5f, 0x7c, 0x84, 0x2f, - 0xd6, 0x21, 0xd5, 0xa9, 0x1e, 0x21, 0x49, 0x2d, 0x39, 0x51, 0xb8, 0x91, - 0x55, 0xd3, 0x18, 0xfe, 0x03, 0x67, 0x71, 0xbe, 0x36, 0xec, 0xe0, 0xfa, - 0x80, 0xe1, 0xc9, 0xa7, 0x18, 0xf7, 0x82, 0x6a, 0xa6, 0xec, 0x4a, 0x9f, - 0xb4, 0x3a, 0x23, 0x2f, 0x8f, 0x21, 0x5e, 0x91, 0xb4, 0x5e, 0x61, 0xc5, - 0xdd, 0x52, 0x07, 0x18, 0xfd, 0x94, 0x57, 0x46, 0xad, 0xbf, 0x8e, 0x83, - 0xb6, 0x41, 0x03, 0xb2, 0xc9, 0x12, 0xdd, 0x93, 0x65, 0xfc, 0x53, 0x12, - 0xfa, 0x5e, 0x2b, 0x00, 0x10, 0x73, 0x01, 0x3f, 0x84, 0xe3, 0x88, 0xb5, - 0xd6, 0xe1, 0x53, 0xba, 0x03, 0x2b, 0xfe, 0xf9, 0x37, 0x4d, 0x6c, 0x92, - 0x6c, 0x50, 0xc6, 0xe1, 0x65, 0xbc, 0xf3, 0x72, 0x44, 0x39, 0xf0, 0xdf, - 0x26, 0x70, 0x55, 0x82, 0x8e, 0x65, 0x22, 0x4d, 0x49, 0x3c, 0x6d, 0xac, - 0x51, 0x1f, 0xe7, 0x33, 0x28, 0xcd, 0xce, 0x89, 0x25, 0x54, 0x1a, 0xf3, - 0xba, 0xe5, 0xa9, 0x6a, 0xf3, 0x47, 0xdd, 0xf3, 0xf2, 0x55, 0x2b, 0x9a, - 0x95, 0xd0, 0x84, 0x79, 0x80, 0x33, 0x7a, 0xe9, 0xbe, 0x42, 0x9f, 0x08, - 0xa7, 0x19, 0xe0, 0x5d, 0x59, 0x71, 0x1f, 0xb5, 0xa1, 0x66, 0xf6, 0x47, - 0x37, 0x90, 0x07, 0x99, 0xe0, 0x83, 0x27, 0x8c, 0xb7, 0x18, 0x84, 0x72, - 0x2e, 0x67, 0x63, 0x52, 0xd9, 0xf5, 0x07, 0xcf, 0x28, 0xde, 0x82, 0xe6, - 0xbf, 0x00, 0xe4, 0xa8, 0xa4, 0xf2, 0xbc, 0x38, 0x9b, 0x11, 0x23, 0x6d, - 0x6e, 0x16, 0x6c, 0xbc, 0x4c, 0x5b, 0x0a, 0x14, 0xb7, 0x40, 0x93, 0x60, - 0xe8, 0x0e, 0x6d, 0xa5, 0x22, 0x3f, 0xac, 0x28, 0xcf, 0xe2, 0xb5, 0x7b, - 0xde, 0x85, 0x3a, 0x73, 0xe3, 0xa5, 0xd9, 0x41, 0x68, 0x39, 0x10, 0xe2, - 0xf6, 0xd8, 0xca, 0xe6, 0x9c, 0xd1, 0x8e, 0x93, 0x22, 0xa8, 0xb7, 0x5f, - 0xda, 0x48, 0x50, 0x8e, 0x31, 0x03, 0x2a, 0x9d, 0xbe, 0xda, 0x3f, 0x69, - 0x2a, 0xc0, 0x1c, 0xcd, 0xd4, 0xa3, 0x4e, 0xd3, 0x51, 0xd4, 0xcd, 0x41, - 0x4b, 0x1b, 0xaa, 0x42, 0xdb, 0x99, 0x4a, 0x59, 0xa2, 0x04, 0x28, 0x9b, - 0xd5, 0xf7, 0xf0, 0xc4, 0x70, 0xd0, 0x26, 0x11, 0xf0, 0xac, 0xf6, 0xc9, - 0xb2, 0x61, 0x78, 0xf5, 0x41, 0xe8, 0x13, 0xb3, 0xa4, 0x52, 0x7d, 0x71, - 0xe6, 0x43, 0xd7, 0x5c, 0x92, 0x54, 0x25, 0x17, 0x6e, 0x03, 0x08, 0x73, - 0x1c, 0x21, 0x73, 0x67, 0x1b, 0x3e, 0xb9, 0x44, 0xc9, 0x1a, 0x7b, 0x27, - 0x64, 0x77, 0x73, 0x86, 0xf9, 0x26, 0xb8, 0xe8, 0xc3, 0x10, 0x15, 0xc5, - 0xeb, 0xcd, 0x97, 0x5a, 0xde, 0x57, 0x29, 0x28, 0xdd, 0x26, 0x56, 0x2e, - 0x93, 0x0c, 0x15, 0xb6, 0x90, 0x7d, 0xb6, 0xf6, 0xe5, 0x06, 0x9c, 0x08, - 0x34, 0x68, 0xc8, 0x2a, 0x46, 0x7e, 0x99, 0xfc, 0xea, 0x15, 0x9d, 0x4d, - 0x78, 0x01, 0x85, 0x06, 0xdd, 0x0f, 0x07, 0x0c, 0x78, 0xbe, 0x5e, 0x07, - 0xc8, 0xea, 0x8d, 0x43, 0x07, 0x17, 0x4f, 0x00, 0x9d, 0x0f, 0x38, 0x55, - 0x15, 0x83, 0xb4, 0xc0, 0xe8, 0x23, 0xda, 0x3d, 0x12, 0xbc, 0x72, 0x8b, - 0x4f, 0xb0, 0x53, 0x3b, 0xb8, 0xc2, 0x42, 0x02, 0x34, 0x16, 0x27, 0x67, - 0x4d, 0xb4, 0x1f, 0x2b, 0x02, 0xf5, 0x7c, 0xad, 0x0d, 0xcc, 0x8a, 0x56, - 0x78, 0xb4, 0x16, 0x87, 0x7d, 0xe7, 0xab, 0x0e, 0x02, 0x8d, 0x8b, 0x4e, - 0x8b, 0xb4, 0x61, 0x22, 0x8d, 0x5e, 0xe6, 0x27, 0xe3, 0xcf, 0x63, 0x6b, - 0xce, 0x91, 0xd5, 0x4f, 0xfd, 0xa4, 0x12, 0x57, 0x0c, 0xd6, 0xf1, 0x37, - 0xc1, 0x7d, 0xf6, 0x17, 0xf2, 0xf4, 0xe3, 0x5b, 0xeb, 0x08, 0xcc, 0x89, - 0xfa, 0x04, 0x6c, 0xab, 0xcc, 0xbe, 0x82, 0x59, 0x3a, 0x15, 0xbf, 0x89, - 0x06, 0x18, 0x2d, 0xb9, 0xdb, 0xe6, 0xbc, 0x33, 0x49, 0x91, 0x0f, 0x4b, - 0x42, 0x77, 0x35, 0x5f, 0x43, 0xb2, 0x50, 0x59, 0xca, 0xaa, 0xc5, 0xce, - 0xf6, 0x67, 0xb2, 0x3f, 0x5c, 0xe8, 0x47, 0xb8, 0x67, 0x74, 0xd6, 0x6b, - 0x17, 0x66, 0x17, 0x18, 0xf6, 0xaa, 0x14, 0x8f, 0x00, 0x52, 0x5b, 0x6e, - 0x1d, 0xbe, 0xb3, 0x7f, 0x7c, 0xd1, 0xfe, 0x36, 0x44, 0x84, 0x93, 0x33, - 0xd3, 0xb6, 0xcd, 0x0f, 0x05, 0xa6, 0x28, 0xb4, 0x2d, 0x0d, 0xa2, 0xe4, - 0xef, 0x52, 0x59, 0xe8, 0x32, 0xaf, 0xd3, 0x2e, 0x71, 0x93, 0x9b, 0xcf, - 0x4c, 0x13, 0x96, 0x45, 0x6a, 0x4d, 0x99, 0x33, 0xc6, 0xa7, 0x8a, 0x19, - 0x2c, 0x7e, 0xd2, 0x02, 0x16, 0x34, 0x97, 0x5d, 0xca, 0xd4, 0x07, 0xf8, - 0xa6, 0xf7, 0x12, 0x07, 0x20, 0xb1, 0xd2, 0xdc, 0x16, 0xc0, 0x22, 0xa7, - 0x8d, 0x1b, 0xfb, 0x57, 0xe6, 0xa7, 0xc5, 0x78, 0x0b, 0xea, 0xad, 0x6b, - 0xc6, 0x13, 0x34, 0xf0, 0x41, 0x9f, 0xfb, 0x21, 0xd4, 0x02, 0xfb, 0x67, - 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, - 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, - 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x91, 0xab, 0x29, 0x95, - 0xc5, 0x2d, 0x9a, 0x05, 0x6c, 0xb4, 0x82, 0x45, 0x26, 0xe8, 0xee, 0xef, - 0xad, 0xed, 0x12, 0xb4, 0xb1, 0xc3, 0xcd, 0x53, 0xc4, 0x82, 0x95, 0x18, - 0x0f, 0x22, 0xce, 0x16, 0xf1, 0x2f, 0xe1, 0x6e, 0xef, 0x63, 0x53, 0x57, - 0xb3, 0x66, 0xb9, 0x1c, 0x35, 0x09, 0x85, 0xd1, 0xba, 0xf3, 0xa7, 0xab, - 0xba, 0x8f, 0x74, 0x2b, 0x40, 0xd5, 0x28, 0x68, 0x8e, 0x9a, 0x25, 0x54, - 0xbd, 0x6d, 0x7e, 0xb0, 0xda, 0x88, 0xeb, 0x86, 0x8e, 0x2f, 0x0d, 0x2e, - 0xcb, 0x55, 0x72, 0x65, 0x85, 0xcc, 0x85, 0x9a, 0xcf, 0xfc, 0x1e, 0x53, - 0xb5, 0x5c, 0x96, 0x72, 0xc4, 0x51, 0xe0, 0x6c, 0x0d, 0xaf, 0x16, 0xdf, - 0xcf, 0x50, 0xce, 0x73, 0x13, 0x1d, 0x59, 0x65, 0xef, 0xf9, 0x4e, 0x83, - 0xc5, 0x03, 0x80, 0x4e, 0xc5, 0xb2, 0x89, 0xcd, 0xcb, 0x5d, 0xd6, 0x83, - 0xff, 0x44, 0x42, 0x73, 0x5b, 0x0f, 0x2a, 0x2a, 0x88, 0x8e, 0xed, 0x26, - 0xe1, 0x24, 0xd7, 0xd4, 0x6f, 0xcb, 0x37, 0x8f, 0x38, 0xdc, 0x4e, 0xdf, - 0x8b, 0xd8, 0xe9, 0x1a, 0x7b, 0xb8, 0x36, 0x04, 0x23, 0x09, 0xf0, 0x3a, - 0x7f, 0x49, 0xdb, 0xff, 0x4b, 0xdc, 0x3f, 0xf2, 0xbf, 0x46, 0xfe, 0x6c, - 0xf7, 0xd3, 0xbd, 0x7a, 0xd5, 0x4a, 0xeb, 0x24, 0x72, 0xa8, 0xfc, 0x08, - 0x22, 0x4d, 0x71, 0x8e, 0x73, 0x65, 0x6e, 0x0a, 0xb1, 0xb3, 0x2c, 0x85, - 0xe9, 0x98, 0x17, 0x1d, 0xd5, 0x64, 0xd8, 0x8d, 0xe2, 0x22, 0x75, 0xef, - 0xfb, 0x33, 0x33, 0xc5, 0x2f, 0xf7, 0x27, 0xeb, 0x1a, 0xa5, 0xde, 0xd2, - 0x68, 0x81, 0x51, 0x2f, 0x12, 0xf6, 0x93, 0x8f, 0xcb, 0xa5, 0x69, 0x1f, - 0x7e, 0xbc, 0xe6, 0xa0, 0x9b, 0xc4, 0xc3, 0x7e, 0x63, 0xd5, 0x16, 0x4c, - 0xeb, 0xfc, 0xad, 0x25, 0x5f, 0xfc, 0x66, 0x4f, 0x33, 0x92, 0x04, 0x4c, - 0x52, 0x18, 0xb2, 0xf2, 0x29, 0x44, 0xec, 0x6b, 0x18, 0xe2, 0x8c, 0xcf, - 0x48, 0x6f, 0x26, 0xe6, 0x20, 0x7d, 0x1f, 0xdf, 0x2d, 0x28, 0xbe, 0x49, - 0x92, 0x3b, 0x7b, 0xe5, 0x51, 0x15, 0xb6, 0x6e, 0x2d, 0x55, 0xf6, 0x64, - 0xed, 0xcd, 0xe5, 0x1b, 0xf9, 0xbc, 0x1d, 0x2c, 0x95, 0xb4, 0x54, 0x06, - 0xc4, 0xb9, 0x4c, 0x88, 0x73, 0x9b, 0x66, 0xcf, 0xce, 0xbe, 0x9a, 0x03, - 0xcc, 0x27, 0x13, 0x22, 0x2e, 0x5d, 0x1e, 0xc1, 0x49, 0xe1, 0x5b, 0xa3, - 0x73, 0xdd, 0x0e, 0xc9, 0x8c, 0x3d, 0x8a, 0x98, 0x2f, 0xcf, 0x95, 0xd8, - 0x41, 0x4f, 0x7a, 0xdf, 0x10, 0x6c, 0x32, 0xfe, 0xdb, 0xc9, 0xec, 0x5c, - 0x3c, 0x43, 0xd0, 0x4a, 0xaa, 0x8f, 0x64, 0x44, 0x64, 0x58, 0xac, 0x23, - 0xdc, 0x26, 0xd5, 0x6c, 0xe7, 0x0d, 0xca, 0x4e, 0x91, 0x17, 0xe3, 0x89, - 0x7c, 0xe4, 0x02, 0x69, 0x4a, 0xb3, 0x9b, 0x5d, 0x8c, 0x8b, 0x06, 0xca, - 0xb8, 0x7a, 0x45, 0x69, 0x04, 0x0f, 0xb9, 0xbb, 0x60, 0xfa, 0x9d, 0x5e, - 0xbf, 0xf3, 0x07, 0x07, 0xf5, 0xc4, 0x0b, 0x56, 0xf2, 0xf9, 0x2a, 0x7b, - 0x6e, 0x82, 0x56, 0x1f, 0x3a, 0xe4, 0xbe, 0xe5, 0x3f, 0x5d, 0xdd, 0xaf, - 0xae, 0xf2, 0xbd, 0x27, 0x2d, 0x9b, 0x92, 0xc2, 0x42, 0xa6, 0xb6, 0x60, - 0xaf, 0x37, 0xf7, 0xad, 0x34, 0xcf, 0x3c, 0x86, 0x1c, 0x14, 0x7b, 0x66, - 0xa5, 0x72, 0x29, 0xf5, 0xdd, 0xdc, 0xe8, 0x95, 0xa3, 0x8b, 0xdc, 0x02, - 0x26, 0x0c, 0xb9, 0xb8, 0x02, 0xdb, 0x42, 0xed, 0x34, 0x4d, 0x69, 0xc1, - 0x68, 0xae, 0xf6, 0xbe, 0xe5, 0xfe, 0xc1, 0x57, 0xbb, 0x55, 0xf6, 0x4b, - 0x73, 0xf5, 0xb7, 0x4f, 0x1b, 0xe3, 0xca, 0xd9, 0x3a, 0x2a, 0x54, 0x29, - 0xb7, 0x33, 0x57, 0x5f, 0xfa, 0xe5, 0x3e, 0x0e, 0xf9, 0xdd, 0x97, 0x23, - 0x07, 0xf5, 0x6c, 0x1e, 0x9f, 0x29, 0x8f, 0xfb, 0xfd, 0x4a, 0xae, 0x66, - 0x60, 0xef, 0xbb, 0x6d, 0x2c, 0xb5, 0x88, 0x97, 0x8e, 0x99, 0x31, 0xbc, - 0x66, 0xd8, 0xfd, 0x65, 0x01, 0x6d, 0x57, 0x3b, 0xe9, 0x70, 0xf2, 0x54, - 0x5d, 0xec, 0x36, 0x5e, 0x7e, 0x26, 0xb3, 0x8d, 0x79, 0xea, 0xb6, 0x3b, - 0x6c, 0x8f, 0xd9, 0x2d, 0x7d, 0x6e, 0xc9, 0xb2, 0xf2, 0x6f, 0x30, 0x95, - 0x2d, 0xab, 0xfd, 0x8e, 0xb6, 0x5e, 0x84, 0x12, 0x97, 0x2d, 0xaf, 0xfb, - 0x1c, 0x58, 0xcd, 0x30, 0x23, 0x4f, 0xba, 0xb4, 0x34, 0x4a, 0x31, 0x48, - 0xcd, 0xdc, 0x2f, 0x1e, 0x71, 0x0e, 0xd0, 0x98, 0xc6, 0xfb, 0x6c, 0x3f, - 0xc5, 0xbc, 0x50, 0x34, 0x47, 0x45, 0xd9, 0xf4, 0xaf, 0xce, 0x66, 0xf8, - 0xeb, 0x99, 0xe4, 0x23, 0xf3, 0x72, 0xb6, 0x29, 0xf7, 0x96, 0xf2, 0x48, - 0x56, 0x10, 0xc7, 0xbf, 0x51, 0x1b, 0x30, 0xe2, 0xe3, 0xf0, 0x68, 0x4a, - 0xa6, 0x8c, 0xd4, 0x75, 0x89, 0x5b, 0x6a, 0xcf, 0xa6, 0x6d, 0xdb, 0x0a, - 0xb4, 0x2a, 0x4b, 0x1d, 0x8a, 0x4b, 0x81, 0x09, 0x34, 0x66, 0x12, 0x05, - 0xb2, 0xa3, 0x2a, 0xb2, 0x52, 0x95, 0x67, 0x6f, 0xe1, 0x96, 0x95, 0xc6, - 0xe9, 0xff, 0x4c, 0x5e, 0xb0, 0x63, 0xf3, 0x0e, 0x10, 0xc0, 0x01, 0xfe, - 0xb7, 0x00, 0x58, 0x59, 0x39, 0x2d, 0x44, 0x58, 0xe2, 0xb3, 0xa3, 0xcb, - 0x78, 0x92, 0xdd, 0x1e, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, - 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, - 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, - 0xff, 0xe0, 0xc6, 0x5c, 0xfb, 0xd0, 0x88, 0xd6, 0x85, 0x76, 0xcd, 0xc1, - 0x7b, 0xf7, 0x39, 0xc7, 0xbe, 0xad, 0x3c, 0x14, 0xa6, 0x71, 0xbb, 0x2c, - 0x6c, 0x03, 0x33, 0x51, 0xde, 0x49, 0xd2, 0x51, 0xee, 0xce, 0x91, 0x8b, - 0x73, 0x90, 0x33, 0x7d, 0x77, 0x40, 0xb9, 0xae, 0xe3, 0x80, 0xf4, 0x87, - 0x2b, 0x52, 0x60, 0x3d, 0xfe, 0x67, 0x82, 0x48, 0x71, 0x58, 0xcd, 0x22, - 0x02, 0xaa, 0xae, 0x6a, 0xd6, 0xbb, 0x97, 0xb0, 0x5a, 0x5b, 0xc8, 0xea, - 0x27, 0x32, 0x3f, 0x49, 0x36, 0x81, 0x0f, 0x9e, 0x97, 0x98, 0x70, 0x4d, - 0x8f, 0x6e, 0x0b, 0xaf, 0xd1, 0x29, 0x2b, 0x7f, 0xa0, 0x01, 0xf2, 0x4c, - 0xa7, 0x4d, 0x7e, 0xee, 0x48, 0x7d, 0x27, 0xa2, 0x4c, 0x24, 0x6a, 0x5e, - 0x63, 0x3f, 0xb5, 0x6b, 0x02, 0x04, 0x5e, 0x98, 0x98, 0x0e, 0xcd, 0x83, - 0x95, 0xce, 0x7b, 0xbf, 0xdc, 0x70, 0xf0, 0x08, 0x9c, 0x3b, 0xc3, 0xe1, - 0x78, 0x39, 0x72, 0x53, 0x31, 0xec, 0x1c, 0x36, 0xdf, 0x20, 0x7f, 0x88, - 0x1e, 0x33, 0x23, 0x73, 0xae, 0x46, 0x42, 0x70, 0x1c, 0xd6, 0x6a, 0x93, - 0x75, 0x85, 0x95, 0x2e, 0xb6, 0x27, 0x7f, 0x50, 0x77, 0xa0, 0x19, 0xbf, - 0xac, 0x87, 0x66, 0x02, 0x9b, 0x3b, 0xb7, 0xa4, 0x12, 0xf9, 0xec, 0x2f, - 0xe0, 0x2a, 0xeb, 0x1f, 0x0b, 0x61, 0xc1, 0xf0, 0x75, 0x9d, 0xb3, 0x6c, - 0x10, 0x38, 0xd3, 0x50, 0x54, 0x69, 0x71, 0xe7, 0x92, 0x72, 0x7d, 0x6f, - 0xff, 0xc2, 0x31, 0xac, 0xd2, 0x1d, 0xfc, 0xfd, 0xea, 0x55, 0xb8, 0xa3, - 0xfd, 0xab, 0x84, 0x1d, 0x8c, 0xde, 0x84, 0x33, 0x36, 0xd6, 0xf0, 0xa8, - 0x2e, 0xa2, 0xdb, 0xc5, 0x04, 0x4e, 0x58, 0x42, 0x7e, 0x64, 0xec, 0x7b, - 0xa7, 0xb5, 0xae, 0x37, 0x3c, 0x16, 0x81, 0xf4, 0x8c, 0x02, 0xf1, 0x0a, - 0x3b, 0x69, 0x20, 0x52, 0x0d, 0xed, 0x6f, 0xed, 0x8e, 0x22, 0x7b, 0x33, - 0x05, 0x23, 0x7e, 0xb5, 0xb0, 0xe4, 0xa4, 0x81, 0x41, 0x73, 0x10, 0x20, - 0x37, 0xd6, 0x25, 0xf1, 0xde, 0x8d, 0x1b, 0xe9, 0x54, 0x75, 0x81, 0x68, - 0x4c, 0xf3, 0x83, 0x3d, 0x41, 0x52, 0x68, 0xe4, 0x3a, 0xe2, 0xcb, 0x00, - 0xa4, 0x3a, 0x6f, 0xb8, 0xc6, 0x64, 0x2e, 0xb5, 0xad, 0xb8, 0xd9, 0x3d, - 0xee, 0xdb, 0xb7, 0xc0, 0x51, 0x08, 0x96, 0x54, 0x1e, 0xe8, 0xf6, 0xc7, - 0x95, 0x0b, 0x06, 0xcd, 0x98, 0x37, 0xb0, 0x0f, 0xa0, 0x72, 0xa0, 0xe7, - 0xd2, 0x0d, 0x16, 0xf1, 0xe9, 0x04, 0xa9, 0xf5, 0x50, 0xcd, 0xa1, 0x80, - 0xa5, 0xfc, 0x4c, 0x32, 0x1b, 0x73, 0x67, 0xf1, 0x4e, 0x87, 0x15, 0x6a, - 0x1f, 0xea, 0xd5, 0x44, 0x41, 0x4a, 0x37, 0x17, 0x96, 0x77, 0xe2, 0xfa, - 0x02, 0x36, 0x01, 0xf5, 0x94, 0xfa, 0xf7, 0xa1, 0x9d, 0x07, 0x31, 0x21, - 0x6e, 0x24, 0x6f, 0xe3, 0xdc, 0x4c, 0xe4, 0xd8, 0x45, 0x20, 0x6e, 0x55, - 0x0b, 0x8a, 0x81, 0x15, 0x4b, 0xa8, 0x94, 0xf4, 0xdd, 0x7e, 0x7a, 0x21, - 0x43, 0xce, 0xac, 0xaf, 0x4d, 0x77, 0xba, 0x3a, 0x75, 0x8f, 0x3d, 0x61, - 0x1a, 0x07, 0x66, 0x95, 0x2b, 0x48, 0x3c, 0xae, 0x38, 0x0b, 0x7a, 0x0c, - 0x10, 0xa7, 0x16, 0x5f, 0xc6, 0x6a, 0x93, 0x60, 0x69, 0x6d, 0x67, 0xca, - 0x74, 0x06, 0x19, 0x0f, 0x1b, 0xbf, 0xb7, 0x1a, 0x98, 0x62, 0xd9, 0x55, - 0xb5, 0x7a, 0xeb, 0x45, 0x84, 0xb8, 0x50, 0x51, 0xd1, 0x7f, 0xa8, 0x79, - 0x55, 0x8b, 0xeb, 0xcf, 0xbd, 0xf7, 0xf4, 0xb6, 0xe0, 0xd5, 0x78, 0x24, - 0x35, 0x0f, 0xc7, 0x16, 0xa0, 0x53, 0x46, 0x6f, 0xba, 0x41, 0x89, 0xd5, - 0xde, 0x10, 0x32, 0x73, 0x7e, 0x8d, 0x4c, 0x42, 0x6f, 0x0c, 0x5f, 0xce, - 0x3a, 0x3e, 0xbc, 0x69, 0xed, 0xb0, 0x24, 0x0c, 0x09, 0xca, 0x49, 0xe6, - 0xdf, 0xe4, 0xc9, 0x06, 0x72, 0x56, 0x00, 0xd9, 0x26, 0x22, 0xee, 0x42, - 0xbb, 0x40, 0x22, 0xdf, 0x54, 0x6b, 0x5e, 0x95, 0x44, 0x45, 0xd1, 0x24, - 0xb6, 0xfc, 0x20, 0x45, 0x9f, 0xe3, 0x17, 0x4f, 0x27, 0x70, 0xcc, 0xcf, - 0xe0, 0x79, 0x3c, 0x6e, 0xae, 0x76, 0xfe, 0xe4, 0x28, 0x1e, 0x2a, 0xc6, - 0x92, 0x42, 0x00, 0x2f, 0x82, 0xba, 0x8e, 0xd0, 0xd6, 0x44, 0xc3, 0x50, - 0xa2, 0xb2, 0x4f, 0x2e, 0x58, 0x79, 0x88, 0xc0, 0x55, 0x6b, 0xa5, 0xe7, - 0x12, 0x2a, 0x71, 0xd7, 0x78, 0xdf, 0xfc, 0x61, 0xd8, 0x67, 0x69, 0x30, - 0x2d, 0x29, 0x81, 0x4e, 0x0e, 0x34, 0xd9, 0x3c, 0xdf, 0xbe, 0x92, 0xe2, - 0x9c, 0x12, 0x91, 0x7a, 0xed, 0x02, 0x04, 0x18, 0x32, 0x66, 0x8e, 0xad, - 0x95, 0x19, 0x36, 0x43, 0x3d, 0xb5, 0x7f, 0x76, 0xcd, 0x61, 0x91, 0x9f, - 0xe8, 0x1f, 0xd1, 0x3c, 0x80, 0xb4, 0x36, 0x38, 0x6e, 0x00, 0xf7, 0x23, - 0xcd, 0xf8, 0x11, 0x97, 0x7a, 0xc1, 0x10, 0x97, 0x98, 0xe8, 0xc7, 0xa0, - 0x55, 0x04, 0xac, 0x2e, 0x9f, 0xaf, 0x01, 0x61, 0xfb, 0x49, 0x2a, 0x2d, - 0xf7, 0xbf, 0xc1, 0xd6, 0xc6, 0x9c, 0x30, 0xb4, 0xfd, 0x48, 0xfb, 0x40, - 0x98, 0xd8, 0xb3, 0x39, 0xda, 0x44, 0x52, 0xae, 0x01, 0xc1, 0x9a, 0x36, - 0x5c, 0xc9, 0x9b, 0x41, 0x15, 0x6d, 0xb0, 0x04, 0x01, 0x00, 0x00, 0xc0, - 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, - 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, - 0x0c, 0x84, 0x44, 0x6a, 0x65, 0xb7, 0xa3, 0xa6, 0x9f, 0x15, 0xe5, 0x43, - 0x4d, 0x5b, 0xc2, 0x20, 0x44, 0xa6, 0xc5, 0x9d, 0x22, 0x03, 0x4e, 0x45, - 0xfa, 0xec, 0xd0, 0x8e, 0x56, 0xc9, 0x66, 0x3f, 0x68, 0xbe, 0xf2, 0x61, - 0x8e, 0x30, 0x1d, 0xd1, 0xa3, 0x06, 0x27, 0x60, 0x7d, 0xc0, 0x43, 0x9d, - 0x7f, 0xe3, 0x78, 0x49, 0xb0, 0x3f, 0x99, 0xa6, 0x4e, 0xe3, 0xc7, 0xf4, - 0x90, 0x8b, 0x3a, 0xea, 0xee, 0x79, 0x72, 0x15, 0x29, 0xa6, 0x2b, 0x2e, - 0xd9, 0xb5, 0x17, 0xd1, 0x79, 0xed, 0xd0, 0x22, 0x9f, 0xd0, 0x90, 0x95, - 0x3a, 0x05, 0x8a, 0x3b, 0xdf, 0xe2, 0x95, 0xb7, 0xd6, 0x82, 0x78, 0xc7, - 0xdc, 0x29, 0x3a, 0x5e, 0x50, 0x7f, 0xe0, 0x8a, 0x2a, 0x7e, 0xb9, 0xf7, - 0x27, 0x77, 0x1a, 0x4d, 0x3a, 0x23, 0xf5, 0xff, 0x27, 0xac, 0x67, 0x15, - 0x04, 0xd3, 0x34, 0xd1, 0xdc, 0x08, 0xcb, 0x71, 0x2d, 0xb8, 0x9c, 0x6c, - 0x40, 0x92, 0xcc, 0x41, 0x4c, 0xa7, 0x80, 0x03, 0xe5, 0x4e, 0x59, 0xd8, - 0x2e, 0x10, 0x5b, 0xf2, 0x81, 0x7a, 0x24, 0xd8, 0xa9, 0x0b, 0x95, 0xc0, - 0x29, 0xc9, 0x15, 0xd2, 0x26, 0xa4, 0x5e, 0x57, 0xda, 0x0d, 0x81, 0xf6, - 0xaa, 0x3d, 0x58, 0xa7, 0xfb, 0x7e, 0x7f, 0x60, 0x95, 0x34, 0xaf, 0x04, - 0x19, 0x1e, 0x2c, 0xeb, 0x35, 0x7b, 0x5e, 0xde, 0x73, 0xee, 0xd0, 0xcf, - 0x2a, 0x80, 0x8e, 0x41, 0x05, 0x44, 0x1a, 0xb5, 0x89, 0x7a, 0xf3, 0x26, - 0xc1, 0x20, 0x43, 0x0d, 0x79, 0xaf, 0x4c, 0x02, 0xfc, 0x8f, 0x55, 0x07, - 0xa2, 0x79, 0x73, 0x11, 0x58, 0x3f, 0x42, 0xa7, 0x11, 0xf0, 0xc1, 0x2d, - 0x34, 0x58, 0x24, 0xa5, 0xbe, 0x88, 0x0c, 0xc3, 0x34, 0xd2, 0xf2, 0xbd, - 0x39, 0xf4, 0x0b, 0x9c, 0x70, 0xe9, 0x2b, 0xeb, 0x8b, 0xd9, 0xc2, 0x2d, - 0x49, 0x77, 0xa7, 0x38, 0x01, 0xd4, 0xd8, 0x0d, 0x96, 0xd5, 0x34, 0xfb, - 0x01, 0x0e, 0x09, 0x3a, 0xf9, 0x69, 0xcd, 0x0e, 0x21, 0xd4, 0x1e, 0x4f, - 0x12, 0x4f, 0x6e, 0xb5, 0xc8, 0x28, 0x9c, 0x88, 0x95, 0x9b, 0x75, 0xa8, - 0xcc, 0x14, 0xf8, 0x58, 0xcd, 0x59, 0x6c, 0x3b, 0x6d, 0x96, 0xf9, 0xf8, - 0x54, 0x44, 0x44, 0x92, 0xdd, 0xac, 0xa4, 0xff, 0x18, 0xc7, 0x39, 0xb2, - 0x57, 0xa9, 0xe8, 0xd8, 0x52, 0x41, 0xdb, 0xf8, 0xb1, 0x43, 0xe5, 0x06, - 0xfa, 0x30, 0xcb, 0xa8, 0xf8, 0xee, 0x12, 0x68, 0x7f, 0x10, 0x9f, 0xdf, - 0x5e, 0x31, 0xed, 0xb1, 0x98, 0x3c, 0x2e, 0x14, 0x39, 0xac, 0x62, 0xed, - 0x2e, 0xd1, 0xfd, 0x45, 0xb4, 0x30, 0xa3, 0x12, 0x03, 0x3c, 0xeb, 0x67, - 0x2b, 0x12, 0x69, 0xed, 0x26, 0xeb, 0xe4, 0xf9, 0xc2, 0x58, 0x20, 0x67, - 0xe0, 0x4a, 0x78, 0x15, 0x1b, 0x01, 0x79, 0x00, 0x07, 0xf6, 0x49, 0xf2, - 0x08, 0x41, 0x63, 0x6a, 0xd9, 0xe0, 0xcb, 0xd6, 0x10, 0xee, 0x78, 0x31, - 0x2e, 0x50, 0xc9, 0xbf, 0x76, 0x60, 0x35, 0x14, 0xca, 0xcf, 0x2f, 0x26, - 0x5a, 0xda, 0x00, 0xd1, 0x0e, 0x22, 0xd9, 0xd6, 0xa2, 0x0e, 0x89, 0x45, - 0x48, 0x7d, 0x47, 0x6d, 0x6b, 0xec, 0x55, 0xac, 0x92, 0xa9, 0xd5, 0xc1, - 0x3b, 0x05, 0x6f, 0xf9, 0x40, 0xf4, 0xdf, 0x92, 0x54, 0xac, 0x52, 0xf0, - 0xe7, 0xf7, 0x5f, 0xb7, 0x41, 0x8c, 0x5f, 0x64, 0x19, 0xc6, 0x23, 0x4e, - 0x53, 0xef, 0x26, 0x11, 0x60, 0x78, 0xdd, 0x70, 0x68, 0xe8, 0x71, 0xae, - 0x59, 0x27, 0x94, 0xdc, 0x1f, 0xf9, 0x98, 0x77, 0x16, 0xef, 0x55, 0x85, - 0x34, 0x43, 0x2c, 0x66, 0x45, 0x5e, 0xe3, 0x42, 0xb5, 0x7d, 0x6e, 0xf2, - 0x80, 0xee, 0x6b, 0x45, 0x3c, 0xbc, 0xbf, 0x94, 0x23, 0x56, 0x5e, 0x83, - 0x83, 0x66, 0x7a, 0x1d, 0x73, 0x6a, 0x53, 0x06, 0x4b, 0x5b, 0xc9, 0x33, - 0x7d, 0x9f, 0x1f, 0x14, 0x98, 0x58, 0xf8, 0xfd, 0x5b, 0xd3, 0xb6, 0x8b, - 0x21, 0xd5, 0xd7, 0xa5, 0x01, 0x0e, 0xee, 0xea, 0xec, 0xc4, 0xcf, 0x92, - 0xcc, 0x84, 0x40, 0x29, 0x6b, 0x86, 0x55, 0x38, 0xe3, 0xa0, 0xef, 0x7e, - 0x7c, 0xe2, 0x67, 0x95, 0x9d, 0xa0, 0xa3, 0xd6, 0xd6, 0xc1, 0x7d, 0x02, - 0x9b, 0xd3, 0x8d, 0xd2, 0xb9, 0x78, 0xe0, 0xba, 0xdd, 0x67, 0xf6, 0x46, - 0xe1, 0xbb, 0xfb, 0x43, 0x8b, 0xb8, 0x9b, 0x71, 0xe6, 0xb7, 0x6f, 0x42, - 0x4b, 0x38, 0xcf, 0x44, 0x95, 0xf4, 0xeb, 0x57, 0x33, 0xa0, 0x3d, 0x67, - 0x7d, 0x44, 0x7a, 0x9a, 0x7d, 0xd9, 0x0c, 0x04, 0xa9, 0x15, 0x70, 0x02, - 0x08, 0x0d, 0x5a, 0xd5, 0x83, 0x21, 0x15, 0x3e, 0x14, 0x68, 0x75, 0x3e, - 0x08, 0xcf, 0xb9, 0xc7, 0x64, 0xb8, 0x84, 0x02, 0xa6, 0x44, 0x38, 0xfb, - 0x01, 0x48, 0xa2, 0xfe, 0xda, 0x3c, 0xee, 0x25, 0x37, 0x2f, 0xfe, 0xa4, - 0xd7, 0xf0, 0xa4, 0x51, 0xa1, 0x2b, 0x80, 0xcf, 0x91, 0xca, 0xed, 0xc5, - 0x44, 0x63, 0x87, 0x87, 0x3f, 0x28, 0x68, 0x7d, 0xee, 0x0f, 0xb3, 0xdb, - 0x57, 0x6e, 0x19, 0x65, 0x6f, 0x26, 0x44, 0x3b, 0x2f, 0xcf, 0x44, 0x85, - 0xcf, 0x26, 0x7d, 0x50, 0x04, 0xb5, 0x72, 0xf8, 0x8a, 0x97, 0x2e, 0xf1, - 0xaa, 0xd0, 0x72, 0x18, 0x56, 0x84, 0xda, 0xe4, 0x3b, 0x61, 0x3a, 0x0a, - 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, - 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, - 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xe0, 0xb6, 0x57, 0xef, - 0x8f, 0xfe, 0x28, 0x8b, 0x2e, 0xae, 0x33, 0x10, 0x61, 0x7c, 0xba, 0xd3, - 0x3a, 0x5a, 0xcd, 0x12, 0x4b, 0xc1, 0x1b, 0x9f, 0xe8, 0x19, 0x02, 0xd7, - 0x55, 0x59, 0xe9, 0x14, 0xcc, 0x82, 0x85, 0x75, 0x1e, 0xb0, 0x21, 0xd6, - 0xd0, 0x1a, 0x30, 0xd3, 0xc8, 0xf0, 0x95, 0xf1, 0x71, 0xfe, 0x27, 0xe5, - 0xfe, 0xa1, 0xf8, 0xd5, 0xf5, 0xd2, 0x66, 0xb4, 0x85, 0x90, 0x0a, 0x3b, - 0x4c, 0x4e, 0x19, 0x9e, 0xb5, 0x3b, 0xc4, 0x1d, 0x55, 0xcd, 0x8f, 0x2f, - 0xc3, 0xa0, 0x2e, 0xb3, 0x31, 0xbc, 0xcb, 0x62, 0x41, 0xaf, 0x80, 0x03, - 0xe6, 0x09, 0x8a, 0x17, 0x1b, 0xd1, 0x65, 0x56, 0xde, 0xa9, 0xb2, 0x8d, - 0xb5, 0x50, 0x94, 0x2b, 0xfb, 0xbb, 0x95, 0xd2, 0xaa, 0xf9, 0x5f, 0xad, - 0xc3, 0xcc, 0x7a, 0x34, 0xa7, 0x01, 0x96, 0x34, 0xd3, 0xe8, 0xc8, 0xec, - 0x00, 0x19, 0xfd, 0x26, 0x11, 0x29, 0xb3, 0x30, 0xd0, 0x8c, 0x04, 0x0f, - 0xb5, 0x06, 0x44, 0xed, 0x05, 0xc0, 0x07, 0x04, 0x65, 0x02, 0x03, 0x7c, - 0x5f, 0xfc, 0x4b, 0xf0, 0x9c, 0x7c, 0xc3, 0x81, 0x53, 0xf2, 0x17, 0x37, - 0xa9, 0x5d, 0x90, 0xa9, 0x9c, 0x1b, 0x29, 0x9b, 0x25, 0xa2, 0x81, 0x79, - 0x9a, 0x48, 0xa3, 0xc6, 0x7f, 0x1f, 0x04, 0x35, 0x8c, 0x3b, 0xfd, 0xa9, - 0x0d, 0x7e, 0xc7, 0x4c, 0xd3, 0x23, 0x65, 0x61, 0x5a, 0x70, 0x7c, 0xae, - 0x23, 0x34, 0x7c, 0x55, 0xbe, 0xe1, 0x90, 0x87, 0x18, 0xa0, 0xcf, 0x64, - 0x28, 0x75, 0x8c, 0x31, 0x88, 0x85, 0x17, 0xcb, 0xb0, 0x3b, 0x95, 0x73, - 0x59, 0x01, 0x8a, 0x12, 0x5d, 0x19, 0x68, 0xb0, 0xa7, 0xbe, 0x29, 0xcc, - 0x74, 0x64, 0x8c, 0x69, 0x2b, 0x5e, 0x2a, 0xc9, 0xbe, 0xb6, 0xec, 0x55, - 0xe9, 0xb7, 0x0a, 0xbd, 0x96, 0x4a, 0x14, 0xa9, 0x6b, 0xbf, 0x82, 0x52, - 0xfd, 0x8d, 0xb4, 0x84, 0x9d, 0x2d, 0xf1, 0x15, 0xf0, 0x2c, 0x95, 0xa1, - 0x95, 0x14, 0xd7, 0x09, 0x8a, 0x0b, 0x77, 0x63, 0x39, 0x89, 0x84, 0xde, - 0x6b, 0xee, 0xc0, 0xb3, 0x07, 0x36, 0x97, 0x2b, 0xd2, 0x60, 0xfd, 0x9a, - 0xe0, 0x9c, 0x99, 0x88, 0x35, 0x71, 0x60, 0x7f, 0xab, 0xbd, 0x22, 0x93, - 0xd4, 0x7e, 0x87, 0x2b, 0x43, 0xee, 0xaa, 0x07, 0x12, 0xf5, 0x9c, 0x29, - 0x7f, 0xa3, 0x19, 0x2e, 0xb2, 0x56, 0xca, 0x38, 0x7a, 0x2d, 0x0a, 0x21, - 0xaf, 0xfd, 0x21, 0xb8, 0xa9, 0x22, 0x95, 0xd5, 0x69, 0x5c, 0xa4, 0xc6, - 0x23, 0xf3, 0x3a, 0x90, 0x4f, 0x40, 0xd2, 0xcf, 0x6d, 0x4d, 0xe0, 0x5e, - 0x31, 0x62, 0xf6, 0x1f, 0xcd, 0x5c, 0x46, 0x75, 0xb7, 0xd3, 0x8a, 0xc5, - 0x79, 0x46, 0x60, 0x54, 0xc8, 0xf2, 0xb4, 0x74, 0x28, 0x33, 0xb1, 0x3e, - 0x33, 0xbb, 0x7d, 0x6f, 0xae, 0x0c, 0x27, 0x54, 0xf6, 0x5d, 0x75, 0x70, - 0x5f, 0x3b, 0xea, 0xc3, 0xc0, 0x4a, 0x8e, 0x2b, 0x6f, 0x8b, 0x05, 0x66, - 0x68, 0x52, 0x53, 0x4b, 0xa3, 0x4e, 0x1f, 0xa4, 0x31, 0xd6, 0x4c, 0xa5, - 0xe7, 0xd0, 0xe3, 0x11, 0x69, 0x23, 0x8a, 0xc5, 0x9d, 0xcd, 0xf9, 0xdc, - 0xc3, 0x7a, 0x1d, 0xc8, 0x00, 0xfd, 0x00, 0xb8, 0xb1, 0x1a, 0x73, 0x0a, - 0x82, 0xc3, 0x4f, 0xad, 0xf1, 0x38, 0xa3, 0x77, 0xbe, 0x25, 0x15, 0x64, - 0xd6, 0x0f, 0x83, 0x33, 0xcf, 0x5d, 0x52, 0xf5, 0x52, 0xb0, 0x9c, 0x10, - 0xc1, 0x08, 0x69, 0xe8, 0x18, 0x0a, 0x45, 0x45, 0x88, 0x25, 0x30, 0x41, - 0x50, 0x3f, 0x2d, 0xca, 0x93, 0xb0, 0xa1, 0x12, 0x76, 0xc7, 0x89, 0x65, - 0xb9, 0xc6, 0x7b, 0x3d, 0x80, 0x37, 0x27, 0xb8, 0x94, 0xef, 0xfe, 0x0b, - 0x11, 0xbf, 0x8f, 0x34, 0x20, 0x49, 0x14, 0xbd, 0x2a, 0xf8, 0xe2, 0x65, - 0xa6, 0x23, 0x76, 0x22, 0x61, 0xab, 0x00, 0xf7, 0x15, 0xbd, 0x6d, 0x86, - 0xc6, 0x37, 0x22, 0x4a, 0x31, 0x76, 0xd9, 0x3b, 0x05, 0xde, 0x84, 0x69, - 0x88, 0x53, 0xa0, 0x10, 0xbc, 0x48, 0x39, 0xf5, 0x3f, 0x7f, 0x06, 0x04, - 0xd7, 0xce, 0x0c, 0xbc, 0x04, 0xff, 0x02, 0x62, 0x6a, 0x58, 0xb9, 0x1a, - 0xb0, 0x3f, 0x27, 0x27, 0x2e, 0xca, 0xfc, 0xc0, 0xd6, 0x69, 0x96, 0xff, - 0x6c, 0x60, 0x88, 0x5e, 0x0b, 0x28, 0x5d, 0x58, 0x25, 0x04, 0x46, 0xcd, - 0x4f, 0x6d, 0x30, 0x06, 0x2d, 0xe5, 0xfd, 0x8a, 0xd5, 0xe5, 0x9f, 0x0b, - 0xc3, 0x52, 0xa7, 0xab, 0xd3, 0xcc, 0xa6, 0xed, 0xf6, 0xf3, 0xe3, 0xde, - 0x44, 0xda, 0x77, 0x19, 0x94, 0x6e, 0xfb, 0xd3, 0x0a, 0x90, 0x88, 0x6a, - 0xbd, 0x05, 0xf0, 0xe1, 0x66, 0xa5, 0xbf, 0xd3, 0x11, 0xab, 0xdf, 0xe8, - 0x62, 0x1a, 0xc7, 0x76, 0xac, 0x7b, 0x97, 0x2f, 0x15, 0xcb, 0x18, 0x71, - 0xfb, 0x2c, 0x8c, 0x5c, 0x24, 0x8f, 0xf3, 0x4a, 0x28, 0x23, 0x96, 0xf3, - 0x49, 0x1c, 0xae, 0x2a, 0x34, 0xf0, 0xe4, 0x50, 0x16, 0xf9, 0xaa, 0x87, - 0x98, 0x4a, 0xe5, 0x2c, 0xa1, 0xa2, 0x75, 0x52, 0x35, 0x5b, 0x9b, 0xe4, - 0xa6, 0x66, 0x17, 0x64, 0x49, 0xb1, 0xd3, 0x02, 0xc9, 0x48, 0x69, 0xdf, - 0x06, 0x7f, 0x96, 0xe5, 0xf2, 0x03, 0xd8, 0x18, 0xc9, 0xab, 0xbd, 0xfb, - 0xe8, 0xbb, 0xd2, 0x56, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, - 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, - 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, - 0xd2, 0xab, 0xc2, 0x33, 0xb2, 0x5d, 0x9d, 0xf9, 0x83, 0x72, 0x02, 0xed, - 0x4d, 0x28, 0x91, 0x8d, 0xc6, 0x4f, 0xfe, 0x99, 0x36, 0x28, 0x84, 0x3e, - 0x6d, 0x99, 0x74, 0xfc, 0xd9, 0x9f, 0xb9, 0x36, 0x38, 0x5b, 0x51, 0x3a, - 0xed, 0x1e, 0x04, 0x75, 0x8a, 0xe4, 0xd4, 0xde, 0x3e, 0x41, 0x38, 0xc0, - 0xe1, 0x63, 0xea, 0x3a, 0x77, 0xa2, 0xd9, 0xff, 0x0c, 0x21, 0x98, 0xc8, - 0x25, 0xd8, 0xa0, 0x50, 0x92, 0x59, 0x51, 0x3f, 0x24, 0x54, 0xe8, 0xf9, - 0x81, 0x56, 0x67, 0xb2, 0xbf, 0xbf, 0x34, 0x99, 0xf5, 0x51, 0x56, 0xc9, - 0x98, 0x4e, 0x44, 0x6d, 0xce, 0x9e, 0x33, 0xf1, 0x53, 0x00, 0x46, 0x1b, - 0x08, 0xf4, 0x4f, 0x53, 0x1b, 0x6f, 0xe4, 0x89, 0xf9, 0xd6, 0x3d, 0xd6, - 0x9f, 0x91, 0xb5, 0xaf, 0x48, 0x33, 0x1c, 0xc1, 0x51, 0xb7, 0x2b, 0x9a, - 0xea, 0xf7, 0xba, 0x94, 0xba, 0x33, 0xa9, 0x36, 0x88, 0x4f, 0x7d, 0xc0, - 0x92, 0x4c, 0x1e, 0xfa, 0xee, 0x88, 0xe4, 0xa6, 0xc4, 0xf2, 0x94, 0x0d, - 0x92, 0xb0, 0x6b, 0xf9, 0xd6, 0xc3, 0x59, 0xbe, 0x68, 0x76, 0xd2, 0xf3, - 0xc8, 0x8f, 0x5e, 0x68, 0xbe, 0xf7, 0xdd, 0x39, 0x22, 0x4e, 0x9c, 0xe3, - 0xc7, 0xb4, 0x94, 0xec, 0x82, 0x78, 0x7c, 0xfa, 0x72, 0x23, 0x40, 0x23, - 0xe9, 0x58, 0x3c, 0xb4, 0x60, 0x11, 0xd8, 0xbd, 0x38, 0x62, 0xe8, 0x6e, - 0x2d, 0xe2, 0xcd, 0x7a, 0x36, 0x99, 0x8e, 0xcc, 0x30, 0x31, 0x9e, 0x85, - 0x61, 0x1a, 0xf0, 0xc0, 0x58, 0x3a, 0xc3, 0x69, 0x53, 0x22, 0x5b, 0xbd, - 0xf4, 0xc0, 0x43, 0xa3, 0x1e, 0x1c, 0xbf, 0x6b, 0x3d, 0x8e, 0xa5, 0xb3, - 0xc4, 0x4c, 0x41, 0xce, 0x69, 0x18, 0xae, 0xad, 0x86, 0x49, 0xb2, 0x5d, - 0x68, 0x81, 0x85, 0x5d, 0xff, 0xd7, 0x84, 0x6b, 0xdb, 0x42, 0x70, 0xf1, - 0x50, 0xc3, 0x01, 0x12, 0xf1, 0xbc, 0x20, 0xb3, 0x58, 0x3e, 0xf8, 0x2e, - 0xf1, 0x18, 0xc0, 0x86, 0x6e, 0xbc, 0x5a, 0xb6, 0x04, 0xb9, 0x24, 0x33, - 0x7f, 0xc6, 0x70, 0xc2, 0xf2, 0x93, 0x5f, 0xec, 0xf0, 0x16, 0x91, 0x37, - 0x5d, 0x36, 0xc5, 0x16, 0x12, 0x97, 0x1f, 0x1e, 0x11, 0x31, 0x37, 0x6f, - 0x93, 0x27, 0xef, 0x3b, 0x2f, 0x8d, 0xd4, 0xc7, 0x53, 0x5b, 0x72, 0x02, - 0x3d, 0x12, 0xf8, 0x86, 0x83, 0xef, 0xaa, 0x00, 0xfa, 0x1c, 0x09, 0x8b, - 0x65, 0x5d, 0x48, 0x75, 0xaa, 0x3f, 0x50, 0x04, 0x9e, 0x74, 0x27, 0xb2, - 0xcf, 0x23, 0x87, 0xf8, 0xc2, 0x2e, 0xaa, 0x01, 0x65, 0xe8, 0xdb, 0x5a, - 0x2c, 0x10, 0xb5, 0x0e, 0xbd, 0xd7, 0x94, 0x38, 0xbe, 0x96, 0x9c, 0x08, - 0xbc, 0x42, 0xae, 0x88, 0x77, 0xba, 0x08, 0xb6, 0xc1, 0x33, 0x52, 0x34, - 0x34, 0x44, 0x92, 0xf5, 0x02, 0x53, 0x2b, 0xb8, 0x74, 0x7c, 0x88, 0x13, - 0x59, 0xb0, 0x04, 0xe1, 0x9b, 0xb0, 0x6e, 0x7d, 0x55, 0xe3, 0x80, 0xa2, - 0x03, 0xca, 0x36, 0x9c, 0x40, 0xc1, 0x78, 0x01, 0xda, 0x1b, 0x0b, 0xe7, - 0xdc, 0xd5, 0xb6, 0xa6, 0xef, 0xf2, 0x16, 0x6e, 0x88, 0x5e, 0x93, 0xb9, - 0x36, 0x7f, 0x42, 0x66, 0x85, 0x9d, 0x58, 0x10, 0x18, 0x60, 0x2b, 0x5f, - 0x72, 0x60, 0xea, 0x33, 0xe2, 0x45, 0xeb, 0xf4, 0x3e, 0x9f, 0x6d, 0xed, - 0x33, 0xc1, 0x82, 0x68, 0xf7, 0x70, 0xe9, 0x0e, 0x73, 0x94, 0x7d, 0x63, - 0xe9, 0xde, 0x87, 0x80, 0x12, 0x4d, 0x2c, 0x6e, 0x9d, 0x2f, 0xef, 0xeb, - 0xeb, 0x6f, 0x27, 0x4a, 0x1e, 0x48, 0xc0, 0x54, 0x79, 0xe7, 0xf0, 0x38, - 0xbe, 0xfc, 0x93, 0x61, 0xb5, 0xd3, 0x1f, 0xfe, 0x9e, 0xe3, 0x64, 0xeb, - 0x8c, 0xcb, 0x6e, 0x42, 0x32, 0x17, 0xc5, 0xf7, 0xc9, 0xdb, 0x52, 0x25, - 0x1e, 0x5c, 0x00, 0x6c, 0x78, 0x1f, 0x48, 0x2a, 0x7f, 0x19, 0xc4, 0xd0, - 0xe9, 0xa7, 0x83, 0x5b, 0xf2, 0x95, 0xe4, 0xf5, 0xa2, 0xc9, 0xbb, 0x6c, - 0xe9, 0x83, 0x41, 0xa6, 0x83, 0x17, 0x76, 0x0a, 0x9f, 0xba, 0x29, 0xb1, - 0x45, 0xd8, 0x87, 0x07, 0xb6, 0x0b, 0xd7, 0x94, 0x8e, 0x1e, 0x02, 0x1b, - 0xa1, 0xbb, 0xfb, 0xb6, 0xb5, 0x46, 0x3f, 0xd0, 0xc7, 0xbb, 0x90, 0x47, - 0x39, 0x37, 0x73, 0xe7, 0x88, 0xd8, 0x6f, 0x05, 0xf0, 0x62, 0x3e, 0x56, - 0xf2, 0x26, 0x8f, 0xf2, 0xcb, 0x53, 0x79, 0x6d, 0xea, 0xb3, 0xdc, 0xb1, - 0x9f, 0x8d, 0x79, 0xe6, 0xbc, 0x19, 0xe5, 0x7e, 0xe6, 0x0f, 0x58, 0x4d, - 0x82, 0x48, 0x3c, 0x3f, 0xdf, 0xf6, 0x3d, 0x19, 0xa4, 0xfb, 0xed, 0x88, - 0xae, 0x8b, 0xa8, 0xbc, 0x19, 0x43, 0x03, 0x0f, 0x93, 0x04, 0xa7, 0x61, - 0x70, 0x7b, 0x6c, 0x16, 0x44, 0x67, 0x87, 0x22, 0xf9, 0x7f, 0x41, 0xe6, - 0x09, 0x3f, 0x60, 0x1c, 0x30, 0x89, 0xa3, 0xce, 0xd9, 0xdd, 0xfe, 0xda, - 0x34, 0x34, 0x7e, 0xd0, 0xa3, 0x62, 0x33, 0x61, 0x2a, 0x70, 0xdc, 0x67, - 0xf0, 0xd9, 0xc8, 0x43, 0xb6, 0x1c, 0x1c, 0x28, 0xb5, 0xd6, 0x63, 0x50, - 0xf5, 0x47, 0x40, 0xa5, 0x86, 0x81, 0x2c, 0x1d, 0x3b, 0xb1, 0x51, 0xff, - 0xe0, 0x33, 0x87, 0x49, 0x94, 0xad, 0xbd, 0x97, 0xc8, 0x9a, 0x58, 0xa7, - 0xe3, 0x90, 0xbb, 0x07, 0xc9, 0x85, 0x47, 0x6d, 0x01, 0x00, 0x00, 0xc0, - 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, - 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, - 0x0c, 0x84, 0x44, 0x6a, 0x13, 0xd6, 0xb6, 0x6e, 0x7f, 0xc6, 0x2c, 0x8e, - 0xfa, 0x1f, 0x4e, 0x33, 0xa3, 0xc4, 0xd5, 0x33, 0xa3, 0xba, 0xff, 0xd8, - 0xcc, 0xe0, 0x0a, 0x03, 0xff, 0x5e, 0x13, 0x92, 0x29, 0xed, 0x4f, 0x5f, - 0x63, 0xbe, 0xdc, 0x28, 0x7e, 0xdb, 0xc9, 0x90, 0x94, 0x6a, 0x9d, 0x3b, - 0xae, 0x30, 0x84, 0x21, 0x0f, 0xcd, 0x5b, 0x93, 0xa1, 0xe1, 0x43, 0x62, - 0x56, 0xa9, 0xb0, 0xb5, 0xb5, 0x01, 0xc7, 0x6e, 0x67, 0x81, 0x51, 0xca, - 0x75, 0x91, 0x04, 0x06, 0x0e, 0xda, 0xbf, 0xa1, 0xb7, 0xeb, 0x6e, 0x09, - 0xc1, 0x7e, 0xc0, 0x4d, 0x21, 0xa1, 0xd4, 0xa0, 0xd5, 0xb4, 0x30, 0xf4, - 0x7f, 0xc5, 0xe3, 0x04, 0x50, 0xba, 0x3d, 0xaa, 0x75, 0x8d, 0x09, 0x27, - 0x56, 0xf9, 0x64, 0xb7, 0x07, 0x24, 0x33, 0x2a, 0xf4, 0xb2, 0x41, 0x42, - 0x81, 0x34, 0x51, 0xb2, 0x39, 0xfd, 0x67, 0x0b, 0xe9, 0x5f, 0xf8, 0x2e, - 0x02, 0x9d, 0x67, 0x1e, 0xe4, 0x0e, 0x12, 0x5d, 0xac, 0xe6, 0x04, 0x00, - 0x5d, 0x12, 0x0f, 0x2f, 0xf1, 0x48, 0x08, 0x6a, 0x66, 0x53, 0x2a, 0x34, - 0x98, 0x3a, 0x84, 0x34, 0x2d, 0xba, 0x17, 0x3b, 0xeb, 0x2e, 0xf4, 0xf2, - 0xe5, 0x21, 0xba, 0x3c, 0x3c, 0x3b, 0x8a, 0x30, 0x0e, 0x64, 0xc4, 0x64, - 0x83, 0x8e, 0xe2, 0xfe, 0xe7, 0xba, 0xa0, 0xfb, 0xc3, 0x8c, 0xa2, 0xfe, - 0x34, 0xc4, 0x14, 0x03, 0x63, 0x08, 0x50, 0xf7, 0x43, 0x09, 0xdd, 0xbb, - 0x80, 0x5a, 0xba, 0xa1, 0xb1, 0x3f, 0xa1, 0x30, 0xa4, 0xc3, 0x87, 0x91, - 0xf8, 0x7b, 0x05, 0x58, 0xb7, 0x95, 0x74, 0x57, 0x8b, 0xa8, 0x53, 0x69, - 0x03, 0xe2, 0x21, 0xcc, 0x29, 0xa8, 0xd3, 0x20, 0x47, 0xc9, 0xf0, 0x71, - 0x2c, 0xaa, 0xf3, 0x60, 0xd5, 0x06, 0x8c, 0x4f, 0x86, 0x6c, 0x2e, 0x16, - 0x77, 0x73, 0xff, 0xe8, 0xa7, 0xb7, 0xc2, 0x73, 0x90, 0xa0, 0xc3, 0xb2, - 0xeb, 0x49, 0x68, 0x2b, 0xc2, 0x80, 0xed, 0xc0, 0x78, 0xb7, 0x22, 0xd6, - 0xb2, 0xfb, 0x39, 0x48, 0x90, 0xc0, 0xdd, 0x62, 0x93, 0x70, 0x08, 0x53, - 0xce, 0xf4, 0xe1, 0x5b, 0xe1, 0xba, 0x20, 0x08, 0xd6, 0x1c, 0xb5, 0x84, - 0x09, 0xbb, 0x84, 0x60, 0x8b, 0x9c, 0xfe, 0x14, 0x2d, 0x3c, 0xdd, 0xba, - 0x7c, 0x5a, 0x7a, 0x1d, 0x46, 0xb9, 0x93, 0xdb, 0xab, 0xc2, 0xed, 0x65, - 0xb6, 0xc6, 0x72, 0x80, 0x56, 0xcd, 0x02, 0xed, 0x21, 0x2e, 0xb8, 0xba, - 0x2f, 0xef, 0x4a, 0xd5, 0xdb, 0xa6, 0x5f, 0x1b, 0x74, 0xd8, 0xff, 0x3c, - 0x4f, 0x37, 0x1c, 0x08, 0x0b, 0x0f, 0xcd, 0x44, 0x83, 0xc3, 0x52, 0xd5, - 0xc5, 0xb0, 0x28, 0xf8, 0xdd, 0x5b, 0xf3, 0x95, 0xc5, 0x30, 0xc9, 0xdc, - 0xdf, 0xa7, 0x0f, 0x2e, 0x41, 0xf1, 0xbc, 0x33, 0x5f, 0xfa, 0x80, 0x93, - 0x02, 0xbc, 0xb0, 0x4c, 0x4c, 0x45, 0xe3, 0x3b, 0x30, 0xe7, 0x5d, 0x0b, - 0x8a, 0xd7, 0xa7, 0x2c, 0x24, 0x94, 0x71, 0x3a, 0x89, 0x7c, 0x19, 0x37, - 0xe9, 0x15, 0xe0, 0x54, 0xa5, 0x6b, 0x03, 0x02, 0x1f, 0xfe, 0x07, 0x73, - 0xe4, 0xe2, 0xbf, 0x30, 0x65, 0xe4, 0x2c, 0xea, 0x5c, 0xb1, 0x65, 0x30, - 0x57, 0x18, 0xcf, 0x0f, 0x2a, 0x44, 0x5c, 0x10, 0xe3, 0x60, 0x5c, 0xf2, - 0x78, 0x47, 0x07, 0x2f, 0xcf, 0x8e, 0x29, 0x13, 0xa2, 0x6d, 0x7c, 0x8a, - 0x8c, 0xa2, 0x4b, 0xb8, 0xc3, 0x07, 0x07, 0x06, 0x89, 0x1c, 0xbf, 0xf6, - 0x2a, 0xa0, 0xd0, 0xd5, 0x39, 0x09, 0x5b, 0x0e, 0xce, 0xf0, 0xbc, 0x14, - 0x81, 0x0e, 0x6f, 0x20, 0x93, 0xfa, 0x89, 0x2b, 0x8b, 0xeb, 0x8f, 0x22, - 0x04, 0xd3, 0xe5, 0xe0, 0xfb, 0x33, 0xdc, 0x7a, 0xbf, 0x7f, 0x7c, 0x92, - 0xba, 0x55, 0x40, 0xc9, 0x4a, 0xb0, 0xeb, 0x82, 0xb1, 0xb0, 0x8b, 0x4a, - 0x44, 0x73, 0x7f, 0xa2, 0x50, 0xd5, 0x93, 0x66, 0xb1, 0xfd, 0x91, 0xb2, - 0x67, 0x6e, 0xb9, 0xfe, 0x7f, 0x27, 0x97, 0x73, 0x56, 0x6e, 0x59, 0x43, - 0x4a, 0x17, 0xf1, 0x6a, 0x22, 0xcb, 0x65, 0x20, 0x0e, 0xfd, 0x43, 0xed, - 0x63, 0x83, 0x17, 0x82, 0x43, 0xe0, 0x75, 0xcf, 0x3d, 0x05, 0x17, 0x70, - 0x8d, 0xab, 0x47, 0x06, 0x8d, 0x21, 0x1b, 0xb1, 0x6e, 0x25, 0xf0, 0x34, - 0x09, 0x5c, 0x62, 0x38, 0x71, 0x58, 0x46, 0x2e, 0x5e, 0xa6, 0x01, 0xa9, - 0xd3, 0x2d, 0x83, 0x42, 0x73, 0x01, 0x47, 0x53, 0x91, 0xe9, 0xf3, 0x97, - 0x7f, 0x1a, 0xe2, 0x7d, 0x30, 0xde, 0x78, 0xa3, 0xab, 0xdd, 0x43, 0x40, - 0x46, 0x9a, 0x51, 0x8b, 0x90, 0x14, 0x16, 0x1b, 0x89, 0xe8, 0xff, 0x4e, - 0x13, 0x2a, 0x48, 0xd3, 0xa5, 0xec, 0x3b, 0xd2, 0x3d, 0x32, 0x73, 0x0e, - 0x7e, 0x1e, 0xae, 0x31, 0x37, 0x58, 0xf7, 0x1f, 0x32, 0x20, 0x55, 0x6a, - 0xf7, 0xda, 0xbf, 0x09, 0xa2, 0x09, 0x9c, 0x27, 0x66, 0x11, 0xbf, 0x80, - 0x9a, 0x44, 0x27, 0x10, 0x3b, 0x6e, 0x85, 0x32, 0x1d, 0xd7, 0xc2, 0xfe, - 0x98, 0x95, 0x35, 0x09, 0x6e, 0xc6, 0x36, 0x82, 0x2c, 0x5a, 0x94, 0xd1, - 0x11, 0x64, 0xa1, 0x9a, 0xc9, 0x7e, 0xd1, 0x23, 0x11, 0x01, 0xb7, 0xb9, - 0x01, 0xc4, 0x35, 0x89, 0xd0, 0x91, 0xa9, 0xbd, 0xc1, 0x8a, 0x13, 0x57, - 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, - 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, - 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xc1, 0xb9, 0x1b, 0x10, - 0x2a, 0x94, 0x92, 0x22, 0x9d, 0x45, 0xd9, 0xb3, 0xeb, 0x34, 0xbc, 0xe3, - 0xea, 0xf2, 0xd8, 0xb1, 0xcc, 0xc8, 0x8b, 0xd0, 0x40, 0x90, 0xc4, 0xea, - 0x26, 0xb0, 0x37, 0x0e, 0xeb, 0x5e, 0x6a, 0x66, 0x09, 0xda, 0x83, 0xdb, - 0xd5, 0x5f, 0xe1, 0x3f, 0x20, 0xbd, 0xce, 0xee, 0x03, 0x3d, 0x43, 0x91, - 0x00, 0x3b, 0x5e, 0x1f, 0xdd, 0x5a, 0x5e, 0xde, 0x13, 0x92, 0xe8, 0x26, - 0x8f, 0x4c, 0x67, 0x75, 0x06, 0xe3, 0x40, 0xc5, 0xc8, 0x97, 0x7f, 0x9d, - 0xff, 0x99, 0x69, 0x13, 0xee, 0x77, 0x18, 0x7a, 0x99, 0x8a, 0xa8, 0xf8, - 0x4a, 0x0e, 0xdf, 0x04, 0x74, 0xc1, 0x82, 0x2d, 0x90, 0xce, 0xef, 0x7f, - 0x95, 0x23, 0xdf, 0x3a, 0x01, 0xb6, 0xf3, 0x53, 0x03, 0x1d, 0xdf, 0xf5, - 0xad, 0xc9, 0xd4, 0xf8, 0x83, 0xeb, 0xd3, 0xeb, 0x09, 0x0f, 0x03, 0xd8, - 0x2d, 0x64, 0x27, 0x1e, 0xa0, 0x78, 0xba, 0x82, 0x25, 0x88, 0x31, 0xd2, - 0x83, 0x18, 0xdf, 0x68, 0x07, 0x79, 0x9a, 0x8c, 0x94, 0xe6, 0x59, 0xc1, - 0xf0, 0x61, 0xcd, 0xee, 0x1c, 0xff, 0x83, 0xc4, 0x8c, 0xb9, 0x0d, 0x01, - 0x92, 0xb1, 0x77, 0x87, 0x00, 0x23, 0x45, 0xff, 0xfd, 0x36, 0xf2, 0xc6, - 0x3d, 0x49, 0xfd, 0x48, 0x71, 0xf2, 0x83, 0xe4, 0xb9, 0x41, 0x4a, 0xee, - 0x49, 0x9d, 0x7f, 0xdf, 0x95, 0xf4, 0xf4, 0x3c, 0x81, 0x18, 0x93, 0xd0, - 0x53, 0xfb, 0x7b, 0x91, 0x23, 0x55, 0x7c, 0x35, 0xd4, 0x8f, 0x16, 0x99, - 0x67, 0xc6, 0x67, 0x7c, 0xad, 0x93, 0xa2, 0x56, 0xfd, 0x73, 0xdf, 0x2f, - 0x24, 0x91, 0x4e, 0x06, 0x5a, 0x67, 0x0b, 0x8d, 0xd5, 0xde, 0x56, 0x7c, - 0xb8, 0x24, 0xc7, 0x98, 0x9f, 0x81, 0x8e, 0xa1, 0x31, 0xd7, 0x10, 0x1b, - 0xa7, 0xd1, 0x9e, 0x7b, 0xdf, 0x77, 0x70, 0xda, 0xf8, 0xd8, 0x20, 0x52, - 0x4a, 0x4d, 0xd6, 0xf9, 0x3f, 0xb0, 0xd0, 0x49, 0x58, 0xf0, 0x20, 0xd2, - 0x93, 0x6e, 0x95, 0xc4, 0xf9, 0xae, 0xbd, 0x47, 0xf9, 0xb8, 0xfb, 0x65, - 0x8f, 0x75, 0xe4, 0x53, 0x7f, 0xa0, 0xfb, 0x68, 0xec, 0x80, 0x86, 0x18, - 0xd5, 0x9b, 0x1a, 0xe5, 0xfa, 0x18, 0xa9, 0xf6, 0xf0, 0x7e, 0x5a, 0xc2, - 0xd1, 0x82, 0x76, 0xa4, 0xe9, 0xf7, 0x2e, 0x12, 0x71, 0x38, 0xbe, 0xe0, - 0x09, 0xba, 0xd8, 0x63, 0x72, 0x4f, 0x47, 0x41, 0xd2, 0x38, 0xef, 0x20, - 0x19, 0x7b, 0xc8, 0xe3, 0xe1, 0x79, 0xfc, 0x81, 0x56, 0x35, 0x9e, 0x31, - 0x93, 0x7b, 0xfe, 0x7e, 0x9f, 0x1c, 0xde, 0x29, 0x55, 0x5f, 0xb7, 0x31, - 0xba, 0x99, 0x0f, 0x1b, 0x3a, 0x53, 0x68, 0x59, 0x60, 0xc2, 0x00, 0x06, - 0x6f, 0x52, 0xec, 0x72, 0x7d, 0xc8, 0x89, 0xd4, 0xe3, 0x83, 0x7c, 0x81, - 0x5a, 0x83, 0xf2, 0xf8, 0x93, 0xa2, 0xec, 0x36, 0x4e, 0xa8, 0xc3, 0x1d, - 0xb5, 0xc4, 0xc6, 0x60, 0x4b, 0xa0, 0xa2, 0x5b, 0x4d, 0x63, 0x0c, 0xd4, - 0x81, 0x21, 0xff, 0x13, 0x8f, 0x0e, 0x44, 0x4d, 0x33, 0x2b, 0x60, 0x9e, - 0xbc, 0xde, 0xd3, 0x38, 0x70, 0x30, 0xa1, 0xf1, 0x5b, 0x30, 0xa3, 0xb9, - 0xb0, 0x07, 0xaf, 0x32, 0x97, 0x21, 0x76, 0x72, 0xbb, 0x35, 0xae, 0x84, - 0xbe, 0x9e, 0xf1, 0xc2, 0xa3, 0xf9, 0x58, 0xc7, 0xf7, 0x94, 0x85, 0x4d, - 0x81, 0x37, 0x4b, 0xb4, 0x4c, 0x41, 0xbe, 0x5a, 0x24, 0x3c, 0x94, 0xa3, - 0x62, 0xe6, 0xd6, 0xb3, 0xbc, 0x85, 0x39, 0x00, 0x88, 0xb7, 0x6e, 0x83, - 0xf7, 0x86, 0xbe, 0xd8, 0xb2, 0x0d, 0xe4, 0x00, 0x6f, 0xaa, 0x87, 0xf1, - 0x11, 0x87, 0x85, 0xed, 0x7c, 0x2f, 0x43, 0x10, 0x74, 0x1d, 0x78, 0x92, - 0x1a, 0x03, 0x31, 0xac, 0x57, 0xa0, 0xfe, 0x1e, 0x78, 0x28, 0x2f, 0x91, - 0xc3, 0x54, 0xe4, 0x39, 0x59, 0xa6, 0x66, 0xe1, 0xfd, 0x2d, 0x98, 0xb0, - 0xb1, 0x5f, 0x68, 0x11, 0x5c, 0x50, 0xac, 0x81, 0x25, 0xd0, 0x40, 0x19, - 0x41, 0x0b, 0xcc, 0x9b, 0x00, 0x8a, 0x7b, 0x95, 0xf4, 0x0d, 0xff, 0x19, - 0xb0, 0x14, 0xdc, 0x77, 0x1a, 0xdc, 0x62, 0x18, 0xf0, 0xfe, 0xa6, 0xf4, - 0xe7, 0xaa, 0x5b, 0x51, 0x2a, 0xfe, 0x65, 0x39, 0xa2, 0x72, 0x86, 0x24, - 0x08, 0xb0, 0x69, 0x0c, 0xc8, 0xe1, 0x6a, 0x09, 0x6d, 0x72, 0xd4, 0xdc, - 0x06, 0x3f, 0x7c, 0xb1, 0x8c, 0x3c, 0x90, 0xf8, 0x59, 0x4d, 0x11, 0x15, - 0xae, 0xa9, 0x4d, 0xe8, 0x25, 0x4a, 0x70, 0xd4, 0x44, 0xcd, 0x6b, 0x4c, - 0xcd, 0x69, 0x90, 0x26, 0x48, 0x43, 0x12, 0x5e, 0x70, 0x06, 0x6a, 0x11, - 0x7d, 0xca, 0x3d, 0x31, 0x55, 0x09, 0x83, 0x89, 0x59, 0x15, 0x38, 0xe4, - 0x43, 0xd3, 0x21, 0x0e, 0x40, 0x61, 0x48, 0xb6, 0x75, 0x4b, 0xd6, 0x10, - 0x8e, 0x02, 0x83, 0xef, 0x7b, 0xb7, 0x14, 0xa3, 0x46, 0x72, 0x3c, 0x58, - 0xca, 0xc7, 0x40, 0x63, 0x90, 0x54, 0x23, 0x18, 0xb5, 0x2b, 0x50, 0x73, - 0x2f, 0x06, 0x5c, 0x40, 0xe1, 0x6a, 0xcc, 0x49, 0x3b, 0xeb, 0x9a, 0x66, - 0xae, 0x93, 0x1d, 0xa8, 0xe4, 0x29, 0x41, 0xdd, 0x80, 0xa2, 0x5f, 0x4d, - 0xe2, 0x23, 0x75, 0x00, 0x0d, 0x3b, 0x58, 0xf1, 0xd1, 0xae, 0xaf, 0xcb, - 0xe4, 0xa1, 0xb4, 0x69, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, - 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, - 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, - 0xdf, 0x2b, 0xba, 0xd0, 0x41, 0xa2, 0x98, 0xc6, 0xa0, 0xfd, 0x20, 0xae, - 0xf0, 0x84, 0x2b, 0x76, 0x0d, 0xf0, 0x74, 0x94, 0x36, 0xfd, 0xa9, 0xe2, - 0x54, 0x2c, 0x8f, 0x1c, 0x4c, 0x66, 0x8d, 0x64, 0x9b, 0x53, 0xbd, 0x30, - 0x0f, 0x25, 0x61, 0x14, 0xc7, 0xc9, 0xeb, 0x9c, 0x05, 0x0f, 0x5e, 0x8f, - 0x1f, 0xa3, 0xe9, 0x3c, 0xba, 0xe1, 0xdc, 0x6b, 0x16, 0xd6, 0xba, 0x07, - 0x51, 0xed, 0x73, 0x30, 0x8a, 0xcb, 0x0d, 0x6e, 0xed, 0xc1, 0x82, 0xb1, - 0x18, 0x2b, 0x18, 0x68, 0x38, 0x21, 0xfc, 0xda, 0x58, 0xd9, 0x5c, 0x14, - 0xb9, 0x77, 0xc5, 0x3a, 0x28, 0x2b, 0x46, 0xc8, 0xc4, 0x86, 0x0a, 0x33, - 0xd0, 0xbb, 0x17, 0xfd, 0xdd, 0x8d, 0xbd, 0xc9, 0x16, 0x63, 0x59, 0xfc, - 0xf0, 0x10, 0xe5, 0x52, 0x8f, 0x41, 0xff, 0x46, 0xe2, 0x7c, 0x18, 0xa8, - 0xbd, 0xe9, 0x80, 0xad, 0x35, 0x77, 0x1d, 0x17, 0x8a, 0xaf, 0x4e, 0x19, - 0xa4, 0xa1, 0x20, 0xd2, 0x7a, 0x42, 0xce, 0xed, 0xa8, 0xdb, 0xb3, 0xa8, - 0xfb, 0x71, 0x2b, 0xf8, 0x5f, 0x91, 0x2f, 0x7d, 0x75, 0x0f, 0xe2, 0x63, - 0xd8, 0xac, 0xe0, 0x29, 0x21, 0x00, 0x38, 0x41, 0x63, 0xb2, 0xdf, 0xfb, - 0x62, 0xa2, 0x14, 0xe3, 0x1f, 0x8f, 0x96, 0x2c, 0x34, 0xe5, 0x9b, 0x83, - 0xc6, 0x39, 0x44, 0x99, 0x7d, 0xe3, 0xbf, 0xd2, 0x39, 0xef, 0xba, 0x2c, - 0x67, 0x5c, 0x2f, 0x46, 0xd8, 0xfa, 0xd5, 0xa6, 0x1c, 0x24, 0x4e, 0x71, - 0xb0, 0x92, 0x2d, 0xe9, 0x5b, 0x60, 0x50, 0x46, 0x9c, 0xcd, 0x34, 0x74, - 0x9a, 0xe1, 0xbf, 0xcb, 0xd5, 0x21, 0x60, 0x2e, 0x8e, 0xc4, 0x48, 0xe5, - 0x78, 0xc7, 0xa5, 0x1c, 0x18, 0x09, 0x53, 0xda, 0x82, 0x71, 0x85, 0x26, - 0x0d, 0x7d, 0xfe, 0x02, 0x2f, 0x61, 0x38, 0x79, 0x48, 0x95, 0x58, 0xb3, - 0xf8, 0x36, 0xf4, 0x0f, 0x23, 0x1f, 0x1c, 0x31, 0x6e, 0x01, 0x85, 0x0b, - 0xff, 0xee, 0x71, 0xd0, 0x63, 0xc6, 0xf9, 0xfc, 0x45, 0x06, 0xe4, 0x4d, - 0xcf, 0xa7, 0xe1, 0xe1, 0x06, 0x9c, 0x3b, 0x59, 0x31, 0x48, 0x6c, 0x1a, - 0xc4, 0x3d, 0xa5, 0x5e, 0x65, 0x90, 0x5c, 0x3f, 0x10, 0x65, 0xc7, 0x44, - 0x55, 0x36, 0x4d, 0x2e, 0x28, 0x63, 0x8c, 0x03, 0xce, 0xb1, 0x40, 0x6b, - 0xcd, 0xc5, 0x32, 0x2e, 0xa1, 0x25, 0xb4, 0x37, 0x81, 0x64, 0x78, 0xde, - 0x68, 0x3f, 0x96, 0xfb, 0x0c, 0x9c, 0x03, 0xef, 0xc8, 0xad, 0xfa, 0xa7, - 0xb5, 0x12, 0x43, 0x31, 0x95, 0x96, 0x58, 0x7c, 0xd3, 0xe5, 0xb4, 0xa9, - 0xef, 0x87, 0xcf, 0x62, 0x7e, 0x31, 0x1f, 0x7a, 0x79, 0xea, 0x38, 0xd2, - 0x3a, 0xc4, 0x4d, 0xe1, 0x51, 0xe5, 0xb2, 0xd6, 0x15, 0x9b, 0x88, 0xaf, - 0xf5, 0xd3, 0x15, 0xd2, 0x0b, 0x78, 0x1d, 0xac, 0xbf, 0xad, 0x10, 0x07, - 0x67, 0x1b, 0xac, 0xc3, 0xfd, 0x24, 0x83, 0x59, 0x51, 0x58, 0xda, 0x5b, - 0xdf, 0x93, 0x5f, 0xfc, 0x29, 0x12, 0x31, 0x4b, 0x75, 0x2a, 0x54, 0xe5, - 0x3e, 0x31, 0x63, 0xd9, 0x64, 0xec, 0x51, 0x01, 0x28, 0x7c, 0x81, 0xfa, - 0x5a, 0x4e, 0x49, 0x94, 0xb3, 0xf2, 0x61, 0x0f, 0x0f, 0xa7, 0x72, 0x44, - 0xa6, 0x79, 0x2f, 0x7b, 0xf0, 0x2b, 0x51, 0x81, 0xfe, 0x96, 0x45, 0xa0, - 0xf8, 0x51, 0xbb, 0x0b, 0xfd, 0xf4, 0x03, 0x53, 0x3b, 0xd2, 0x55, 0xb4, - 0x26, 0x48, 0x53, 0x12, 0x93, 0x38, 0x40, 0xb1, 0x91, 0x17, 0xe6, 0x07, - 0x8e, 0x28, 0x6d, 0x89, 0x8e, 0x65, 0xd8, 0xa0, 0xe7, 0x4b, 0x7b, 0x3d, - 0x14, 0x20, 0xce, 0x21, 0x51, 0x8e, 0xc1, 0x8d, 0xad, 0x13, 0xe9, 0x1b, - 0xd2, 0x3f, 0xda, 0xb4, 0x53, 0x91, 0xdf, 0x82, 0x9e, 0x76, 0x3e, 0x82, - 0xaa, 0xba, 0xac, 0xeb, 0xad, 0xc1, 0xa6, 0x2d, 0x88, 0x08, 0x3c, 0xa4, - 0xcd, 0xb9, 0x21, 0xab, 0x34, 0x67, 0x69, 0xd2, 0xa5, 0xaa, 0x34, 0x2b, - 0x28, 0xea, 0x8e, 0x99, 0x06, 0xd4, 0x59, 0x0f, 0xce, 0x1b, 0xf3, 0xc1, - 0xd5, 0x7b, 0xcc, 0x47, 0x6f, 0x09, 0x2a, 0xf8, 0x14, 0x2c, 0x9b, 0x9b, - 0x91, 0xca, 0x42, 0x15, 0x86, 0x9a, 0xf5, 0xfd, 0xaf, 0x7f, 0x71, 0xd9, - 0xf0, 0x20, 0xa4, 0x99, 0x87, 0xd6, 0x98, 0xbb, 0x1f, 0x72, 0xe0, 0x57, - 0x96, 0x89, 0x9a, 0xec, 0x28, 0x7f, 0x3b, 0xed, 0x2a, 0x58, 0x6e, 0x93, - 0x2e, 0x97, 0xd1, 0x36, 0x39, 0x9a, 0x06, 0x2e, 0x8e, 0xe9, 0x1e, 0xea, - 0xa9, 0x8f, 0x75, 0x31, 0x62, 0xf8, 0x6a, 0x4f, 0x1a, 0x45, 0x6c, 0x9b, - 0x0b, 0x09, 0x55, 0x2f, 0x84, 0xd3, 0x1f, 0xb3, 0x46, 0x13, 0xc9, 0xa0, - 0x4b, 0x2c, 0x54, 0x12, 0x42, 0x48, 0xe9, 0xa7, 0x80, 0xc3, 0x93, 0xd9, - 0xff, 0xf6, 0xad, 0x63, 0xa1, 0x2f, 0x00, 0xad, 0xd1, 0x33, 0x99, 0x98, - 0x66, 0x6a, 0x1f, 0x1b, 0x79, 0xf1, 0x4f, 0xda, 0x17, 0xf0, 0x89, 0x9b, - 0xf7, 0xe6, 0xd3, 0xfa, 0x6b, 0xed, 0x0f, 0xf1, 0x70, 0x4e, 0xf6, 0x0a, - 0x4d, 0x5e, 0x5d, 0xcf, 0xd2, 0xe2, 0x0d, 0xd6, 0x1d, 0x3c, 0x2f, 0x82, - 0x1a, 0x31, 0xc3, 0x10, 0xfc, 0xa6, 0x69, 0x4b, 0x38, 0x36, 0x36, 0x01, - 0x67, 0x3f, 0x71, 0x41, 0x97, 0x5d, 0xfd, 0x5c, 0x01, 0x00, 0x00, 0xc0, - 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, - 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, - 0x0c, 0x84, 0x44, 0x6a, 0x82, 0xb1, 0xe7, 0xda, 0x12, 0x73, 0xe5, 0xea, - 0xb5, 0x35, 0xd6, 0x09, 0x99, 0xc0, 0x96, 0xdb, 0x16, 0xa7, 0x88, 0x08, - 0x92, 0xe1, 0xe1, 0xa8, 0x0d, 0x9e, 0xda, 0x34, 0x9e, 0x4b, 0x9b, 0x66, - 0x08, 0xe4, 0xc2, 0xd3, 0x1f, 0x54, 0x63, 0x3c, 0x36, 0x94, 0xe5, 0x85, - 0x89, 0x64, 0x11, 0xab, 0x1f, 0x36, 0x0c, 0x19, 0xba, 0x10, 0x5b, 0x1d, - 0xc6, 0x3c, 0x57, 0x4e, 0xaf, 0x50, 0x6a, 0x19, 0x41, 0xfe, 0xfd, 0x41, - 0xf1, 0xa3, 0x82, 0x40, 0x01, 0xd7, 0xfb, 0x20, 0x86, 0x6d, 0x8b, 0x7a, - 0x55, 0x49, 0x94, 0x71, 0x82, 0x42, 0x41, 0xb7, 0xe4, 0xec, 0xbd, 0x20, - 0x4f, 0x70, 0x40, 0x29, 0x8d, 0xcf, 0x62, 0xe9, 0x53, 0x9f, 0x31, 0x3b, - 0xd6, 0x2e, 0xaa, 0x27, 0xf7, 0x0f, 0xe4, 0x05, 0xa2, 0xef, 0x33, 0x32, - 0x64, 0xea, 0x29, 0x54, 0x90, 0xdc, 0x1b, 0x8c, 0xe7, 0x8b, 0x08, 0x38, - 0xdb, 0x35, 0xf8, 0x0d, 0x1c, 0x2e, 0x97, 0xb2, 0x56, 0x22, 0x1a, 0x85, - 0x28, 0x1a, 0x18, 0xdf, 0x6a, 0xfc, 0xd4, 0x30, 0x72, 0x86, 0xc1, 0x2e, - 0x40, 0x08, 0x33, 0xa0, 0xf7, 0xe9, 0x13, 0x07, 0x0e, 0x0d, 0xdf, 0xdc, - 0x69, 0xb5, 0x02, 0x97, 0x7c, 0xc2, 0xa1, 0xa5, 0x68, 0xc3, 0x78, 0x32, - 0xc1, 0x16, 0xeb, 0x16, 0xb5, 0x86, 0x30, 0xcb, 0x75, 0x16, 0x9b, 0xc8, - 0x5b, 0xb2, 0x7a, 0x64, 0x63, 0x26, 0x18, 0x60, 0x93, 0x5a, 0x43, 0x6f, - 0x9a, 0xdc, 0x11, 0xfd, 0x17, 0x62, 0x2b, 0x7d, 0xf0, 0x66, 0xb6, 0xc7, - 0x79, 0x5d, 0x0c, 0x0b, 0xb3, 0xf8, 0x51, 0xcb, 0x24, 0xcd, 0xb8, 0x35, - 0x90, 0x8d, 0x00, 0xf3, 0x24, 0x44, 0x0b, 0xa2, 0x91, 0x58, 0x94, 0x2b, - 0xe8, 0x7e, 0x9a, 0x55, 0x5d, 0xa9, 0xd4, 0x2c, 0x4b, 0x57, 0xd4, 0x38, - 0x2e, 0x62, 0xbc, 0xf8, 0xc8, 0xbe, 0xe8, 0x5b, 0xa9, 0x11, 0x64, 0x26, - 0xa4, 0x1f, 0x3b, 0x75, 0xe3, 0xa3, 0xe4, 0xfd, 0x93, 0xd2, 0x9f, 0x0c, - 0x9d, 0x07, 0x90, 0xdc, 0xd9, 0x26, 0x6e, 0xc8, 0x3c, 0xe8, 0xee, 0xd3, - 0x5d, 0x27, 0x64, 0x4c, 0x4a, 0xd5, 0x7d, 0x8c, 0xef, 0xc5, 0xbe, 0x6e, - 0x72, 0xee, 0x0c, 0xb1, 0xc0, 0x22, 0xf4, 0xb7, 0x4f, 0x30, 0x6e, 0xcd, - 0x6f, 0xae, 0xca, 0x86, 0x5c, 0x6e, 0x39, 0xb4, 0xed, 0xb5, 0x8c, 0x34, - 0xb6, 0x02, 0x8a, 0x3b, 0x7a, 0x2e, 0x1f, 0x78, 0xc1, 0x19, 0xe7, 0xc2, - 0x76, 0x1a, 0x9a, 0xc1, 0xb7, 0xaf, 0xca, 0x8e, 0x44, 0x82, 0xe7, 0x8f, - 0xa8, 0x6e, 0x96, 0x1a, 0x84, 0x09, 0x66, 0x68, 0x49, 0xf1, 0x12, 0x04, - 0x5d, 0xd7, 0xb4, 0x1e, 0x11, 0xb3, 0x13, 0xf1, 0xd6, 0x10, 0xf7, 0x89, - 0xb1, 0xd5, 0x9a, 0x2b, 0xb3, 0xb3, 0xaa, 0xa2, 0xaa, 0x7a, 0x05, 0x00, - 0xe8, 0xb2, 0x2a, 0x23, 0xd3, 0x13, 0x5c, 0xff, 0xd3, 0xad, 0x61, 0x28, - 0xdb, 0x68, 0xc1, 0xd0, 0x5c, 0xa4, 0x29, 0xea, 0xba, 0x2b, 0x9f, 0xe1, - 0x6c, 0x12, 0x0e, 0x09, 0xde, 0xa1, 0xdf, 0xc1, 0xb3, 0xfb, 0xa0, 0x5c, - 0x41, 0x7a, 0x0b, 0xb7, 0x14, 0x39, 0x0f, 0xd0, 0xfb, 0x7d, 0x5a, 0x0c, - 0xf9, 0x19, 0x40, 0xca, 0x3b, 0x3d, 0xde, 0x6e, 0x3e, 0xe1, 0xd2, 0xa3, - 0x38, 0xac, 0x1d, 0x48, 0x14, 0xf7, 0x3f, 0x58, 0xbd, 0x21, 0x75, 0x10, - 0x50, 0xcd, 0x86, 0x71, 0xd4, 0x91, 0xf2, 0x33, 0x7c, 0xca, 0x1e, 0x91, - 0x5e, 0xf4, 0x0e, 0x6b, 0x77, 0xcc, 0x7e, 0x31, 0xfd, 0x34, 0x1e, 0x72, - 0x36, 0xb2, 0xe2, 0x10, 0xe6, 0x3a, 0x0b, 0x80, 0x7e, 0x4f, 0x09, 0x01, - 0x90, 0x48, 0xaf, 0x92, 0x9e, 0x2c, 0xcc, 0x8c, 0x9d, 0x22, 0xa3, 0xf5, - 0x6e, 0x22, 0xe1, 0x48, 0x81, 0x0e, 0xfa, 0x53, 0x97, 0xc2, 0x8e, 0x0d, - 0x51, 0x31, 0xe3, 0xa3, 0x19, 0xca, 0x94, 0xc1, 0x00, 0x7c, 0x72, 0xda, - 0xc5, 0xfc, 0xa6, 0xa6, 0x19, 0x8e, 0x76, 0xc3, 0x08, 0xdf, 0x98, 0x17, - 0x85, 0xe5, 0x2f, 0x8f, 0xf7, 0x02, 0xbc, 0x59, 0x12, 0x95, 0xb5, 0xd7, - 0x64, 0x4f, 0xe2, 0x92, 0xe4, 0x2f, 0x83, 0x07, 0x5e, 0x2b, 0x71, 0xeb, - 0x0a, 0x74, 0xf5, 0x37, 0x17, 0xe9, 0x5d, 0x76, 0x9f, 0x01, 0xbe, 0x42, - 0xde, 0xbc, 0x76, 0x71, 0xab, 0x07, 0x7f, 0xd1, 0x1b, 0xb6, 0xee, 0x62, - 0xd3, 0xbc, 0xf7, 0x7f, 0xb3, 0x15, 0xbf, 0xe0, 0x30, 0x4b, 0x60, 0xcc, - 0xb6, 0x4b, 0x91, 0xe7, 0x85, 0xe2, 0x78, 0x27, 0xd4, 0xfb, 0xfb, 0x6e, - 0x34, 0x73, 0x00, 0x24, 0xc2, 0xdb, 0x25, 0x2a, 0x30, 0x7d, 0x0e, 0x6f, - 0x73, 0xe5, 0x00, 0x5f, 0xbe, 0xa7, 0x16, 0x87, 0xf4, 0xe8, 0x2b, 0xc1, - 0x0c, 0x46, 0x6c, 0xe9, 0xf6, 0x5d, 0x9d, 0x17, 0xe8, 0x5d, 0x19, 0x75, - 0x5e, 0x7e, 0x62, 0x83, 0xbe, 0x18, 0x1d, 0xb5, 0x32, 0xfd, 0x23, 0x5a, - 0x96, 0x40, 0xad, 0x15, 0x9c, 0xa6, 0xec, 0x22, 0x19, 0x31, 0x30, 0x22, - 0xf4, 0x5a, 0x19, 0x3c, 0xda, 0xbe, 0xf0, 0xe3, 0x00, 0xae, 0xcc, 0xa5, - 0x2a, 0xce, 0x57, 0x60, 0x4b, 0xca, 0xed, 0xe8, 0xe4, 0x45, 0x5f, 0x17, - 0x64, 0x23, 0x73, 0xf2, 0x16, 0xed, 0xa3, 0x39, 0x8e, 0x47, 0x93, 0x39, - 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, - 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, - 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xd9, 0x75, 0x53, 0x9e, - 0xc5, 0x1b, 0x0c, 0x36, 0x20, 0xdd, 0x87, 0x08, 0xa3, 0x2e, 0x56, 0x62, - 0x1f, 0x5b, 0x9f, 0xec, 0xfc, 0x1c, 0x59, 0x66, 0x9b, 0x9a, 0x53, 0x2d, - 0x89, 0x30, 0xa1, 0x41, 0x73, 0x64, 0x95, 0xfd, 0xb3, 0x6b, 0x91, 0x9c, - 0xe8, 0x64, 0xcc, 0x61, 0x4c, 0xb8, 0x86, 0x06, 0x2f, 0x19, 0x4b, 0xdd, - 0x13, 0x8a, 0xcd, 0x1c, 0x5a, 0x82, 0xa5, 0x2d, 0x65, 0x87, 0xe6, 0x40, - 0x68, 0x63, 0xb6, 0xbd, 0x7f, 0x78, 0x77, 0x46, 0x52, 0x69, 0xa7, 0xb1, - 0x16, 0x40, 0x50, 0x42, 0xbf, 0xa2, 0x42, 0x4d, 0x94, 0xbd, 0x9b, 0xc2, - 0xd5, 0xb2, 0x90, 0xbd, 0x7d, 0x1c, 0x2b, 0x6a, 0xda, 0x35, 0xed, 0x5f, - 0x73, 0x15, 0x8d, 0x7c, 0xd6, 0x2d, 0xfe, 0x67, 0xd0, 0x61, 0x19, 0x07, - 0x1a, 0x35, 0x81, 0x11, 0xa2, 0x40, 0x52, 0xf1, 0x93, 0x6c, 0xaa, 0x58, - 0x0d, 0xce, 0x7c, 0x1d, 0x7b, 0xa5, 0xdc, 0x02, 0xaa, 0x6d, 0x2d, 0x87, - 0x60, 0xb3, 0x61, 0x6b, 0xb1, 0x4a, 0x7b, 0x9b, 0x9e, 0xe8, 0x71, 0xba, - 0xa6, 0xa0, 0x15, 0xb7, 0xb4, 0x0a, 0x7b, 0x20, 0x42, 0xbe, 0x42, 0x63, - 0x27, 0x72, 0xa1, 0x40, 0xac, 0xb8, 0x89, 0x32, 0x38, 0x73, 0x39, 0x49, - 0x18, 0x81, 0x33, 0xd4, 0x8c, 0x2c, 0x82, 0x0c, 0x79, 0xe8, 0xc5, 0xba, - 0xa6, 0x15, 0xf5, 0xda, 0x9d, 0x03, 0xc8, 0x19, 0xff, 0xaa, 0xff, 0x59, - 0x3f, 0x70, 0x3d, 0x30, 0x4f, 0x46, 0x09, 0x0b, 0x99, 0x83, 0x65, 0xea, - 0x56, 0xe0, 0x00, 0xd3, 0x7d, 0x42, 0xc6, 0x78, 0xf3, 0x8f, 0x5f, 0x36, - 0x54, 0x64, 0x0b, 0x3f, 0xad, 0xae, 0xa9, 0x54, 0x6d, 0x44, 0xe3, 0x19, - 0x40, 0x3b, 0x74, 0x1b, 0x8a, 0x31, 0x22, 0x32, 0xa3, 0x31, 0x12, 0xea, - 0x10, 0x5d, 0x6c, 0x40, 0xa2, 0xe1, 0xdd, 0xa4, 0x29, 0x91, 0xa3, 0x68, - 0xcc, 0xd9, 0x68, 0x34, 0xbd, 0xbf, 0xf3, 0xd3, 0xcc, 0xff, 0x6b, 0xa3, - 0xfd, 0xb8, 0x23, 0x76, 0x1f, 0x82, 0x02, 0x5b, 0x16, 0xf6, 0x20, 0x73, - 0xc5, 0x0f, 0x01, 0xd3, 0x4e, 0xab, 0xd1, 0x24, 0x73, 0x50, 0x72, 0x23, - 0xed, 0xe8, 0xb8, 0x4b, 0x84, 0x98, 0xa5, 0x72, 0xad, 0x71, 0xd8, 0x80, - 0xe3, 0x6c, 0xf5, 0x8e, 0x60, 0x90, 0xb7, 0x9b, 0x72, 0xa0, 0x31, 0xe5, - 0x36, 0xc4, 0xc0, 0x0f, 0x48, 0x38, 0x6a, 0x0e, 0x7a, 0x55, 0xda, 0xa6, - 0x1a, 0x6d, 0x32, 0x29, 0x48, 0x6d, 0xb2, 0x9b, 0xd4, 0x8f, 0xd2, 0x88, - 0x49, 0x65, 0x25, 0x7c, 0x7a, 0x3f, 0x4f, 0x43, 0x8c, 0x8c, 0x85, 0x05, - 0x01, 0x89, 0xb2, 0xce, 0x6b, 0xf4, 0x5f, 0xf1, 0xf1, 0xa4, 0xe8, 0x62, - 0x29, 0xe3, 0x52, 0xc7, 0x79, 0x85, 0xe2, 0x90, 0xa4, 0x28, 0x08, 0x38, - 0xf7, 0x8a, 0xef, 0x0c, 0xfe, 0x42, 0x6c, 0x64, 0x76, 0x48, 0xff, 0xa6, - 0x8f, 0xe2, 0xb2, 0x2b, 0x14, 0xed, 0x84, 0x51, 0x0a, 0x3a, 0x0e, 0x3f, - 0xb8, 0x23, 0x85, 0xee, 0x06, 0xb2, 0xaa, 0x3b, 0xb0, 0xc6, 0x1b, 0xd3, - 0x66, 0x3e, 0x48, 0x6a, 0x96, 0xf9, 0xa8, 0xd8, 0x00, 0xdb, 0x2d, 0xcb, - 0x1b, 0xcf, 0xfb, 0x82, 0x65, 0x2c, 0x10, 0xb6, 0x30, 0xa4, 0x6e, 0xfb, - 0xfb, 0xbd, 0x42, 0x29, 0xcf, 0xab, 0x98, 0x35, 0xf2, 0x17, 0x9f, 0x5c, - 0xaa, 0x06, 0x80, 0x42, 0xc5, 0x54, 0xf3, 0x09, 0xb6, 0xb0, 0xd9, 0xbe, - 0x23, 0xa4, 0xa2, 0x04, 0xe6, 0x5b, 0x7c, 0x8b, 0xf1, 0x31, 0x0d, 0x38, - 0x7c, 0xbd, 0xfb, 0x13, 0x5c, 0x6b, 0x2c, 0x35, 0x84, 0xde, 0x64, 0x06, - 0x9d, 0x34, 0x94, 0xe6, 0x63, 0x27, 0x39, 0x85, 0x87, 0xc8, 0xe6, 0x4c, - 0x4f, 0xa3, 0xae, 0xc4, 0xc3, 0xc6, 0x69, 0x1a, 0x63, 0xa1, 0x2d, 0x7c, - 0xa2, 0x46, 0x18, 0x50, 0xbe, 0x0f, 0x45, 0x61, 0x96, 0xc7, 0x53, 0x86, - 0xf0, 0x81, 0x25, 0xae, 0x2d, 0xa5, 0x10, 0x37, 0x3d, 0xe4, 0xe7, 0x56, - 0xfc, 0xd7, 0xc5, 0xd8, 0xdf, 0x00, 0x62, 0x76, 0xc7, 0xe4, 0x3c, 0x65, - 0x20, 0x4b, 0x29, 0xc7, 0xae, 0xe1, 0xc6, 0x38, 0xfe, 0x84, 0x28, 0x2c, - 0x33, 0x15, 0x05, 0xab, 0x24, 0xff, 0x60, 0x50, 0x89, 0xaa, 0xac, 0x96, - 0xc4, 0xc7, 0x5a, 0xce, 0x5c, 0x46, 0xf9, 0x00, 0x58, 0xe6, 0x79, 0xc3, - 0x4e, 0xa1, 0x31, 0x22, 0xda, 0xab, 0x6e, 0x41, 0xf8, 0xb2, 0x0a, 0x53, - 0x33, 0xd3, 0x23, 0x1b, 0x96, 0x03, 0xe8, 0xa2, 0x30, 0x70, 0x87, 0x18, - 0x18, 0x9a, 0x62, 0x3d, 0xd2, 0xb3, 0x3b, 0x97, 0x89, 0x8e, 0x28, 0xc7, - 0x53, 0xa2, 0xcd, 0x7d, 0x34, 0xb0, 0xe5, 0x28, 0x52, 0x89, 0x65, 0x97, - 0x23, 0xdd, 0x8f, 0x5f, 0x82, 0x0e, 0x4f, 0x46, 0x7a, 0x6d, 0xdb, 0x56, - 0xa9, 0x53, 0xc3, 0x94, 0x0b, 0xaf, 0xe6, 0x40, 0x34, 0x51, 0x84, 0x51, - 0x9a, 0x40, 0x2b, 0xe9, 0x08, 0x1e, 0x84, 0x7d, 0x45, 0x82, 0x39, 0xaf, - 0xe6, 0xe0, 0x5a, 0x49, 0x46, 0x52, 0xca, 0x17, 0x4a, 0x15, 0xcf, 0x6a, - 0x1d, 0xb5, 0xf3, 0x5f, 0x1a, 0x52, 0xd6, 0x5e, 0x7b, 0xcf, 0xf0, 0xf3, - 0x80, 0x22, 0x31, 0x4f, 0x13, 0x03, 0x8b, 0x5a, 0x0d, 0x16, 0x83, 0x71, - 0x23, 0x1c, 0x14, 0x3e, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, - 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, - 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, - 0xa3, 0xc7, 0x50, 0x0c, 0xf4, 0x1e, 0x5e, 0xa2, 0x87, 0xd3, 0x52, 0x11, - 0x00, 0x6e, 0x53, 0x3c, 0x1c, 0x80, 0x16, 0x60, 0xca, 0x5b, 0x35, 0x90, - 0x20, 0x59, 0x13, 0xb6, 0xd0, 0x8b, 0xcc, 0x14, 0xa4, 0xe8, 0xed, 0xd2, - 0x2b, 0x37, 0x58, 0xa0, 0x4c, 0xf2, 0xc2, 0x14, 0x7a, 0xda, 0x70, 0xf4, - 0x7b, 0xc1, 0x49, 0x23, 0xb2, 0x44, 0x49, 0xc8, 0xce, 0xa9, 0xf0, 0xe0, - 0x77, 0xd7, 0xde, 0x0e, 0x4b, 0x86, 0x39, 0x8c, 0x4f, 0x2b, 0x62, 0x12, - 0x6f, 0x37, 0x33, 0x47, 0xce, 0x9d, 0x32, 0x0f, 0x41, 0xf8, 0x35, 0xd4, - 0x56, 0xba, 0x5f, 0x40, 0xca, 0x83, 0xd5, 0xe0, 0x6f, 0xad, 0xfa, 0x61, - 0xce, 0xb1, 0xaa, 0xd2, 0x60, 0x9c, 0x10, 0x05, 0x45, 0x21, 0x86, 0xd9, - 0x89, 0x92, 0xfd, 0xd5, 0x05, 0x6d, 0xc8, 0x66, 0x9a, 0xa1, 0xc4, 0x5e, - 0x89, 0x7c, 0x72, 0x77, 0xc6, 0x9e, 0xae, 0x35, 0x6d, 0x02, 0xdc, 0x48, - 0x05, 0x23, 0xb0, 0xbe, 0xd2, 0xcb, 0x35, 0xf5, 0x33, 0x6a, 0xd5, 0x20, - 0xa2, 0x58, 0x25, 0x63, 0xf7, 0x59, 0xe7, 0x45, 0xa8, 0x58, 0x62, 0xfc, - 0x40, 0x4a, 0xea, 0x68, 0xc0, 0xb5, 0x4c, 0xf9, 0x78, 0x51, 0x4f, 0x54, - 0x0a, 0x66, 0x6b, 0x4b, 0xf2, 0x25, 0x81, 0xee, 0x2f, 0x9e, 0x8b, 0x33, - 0xf5, 0x9c, 0x4a, 0x66, 0xd2, 0x3e, 0xb2, 0x6e, 0x95, 0xd6, 0xe4, 0x4a, - 0x50, 0xd3, 0xa0, 0x8f, 0x4c, 0x57, 0x60, 0x87, 0x42, 0xe1, 0x13, 0x8e, - 0x1e, 0x35, 0xea, 0x5e, 0x8e, 0x58, 0x97, 0xb2, 0x12, 0x88, 0xab, 0x53, - 0xab, 0x15, 0xd7, 0x8b, 0x49, 0x02, 0x7c, 0x26, 0x53, 0xad, 0xa5, 0x21, - 0xa3, 0x42, 0xc7, 0x25, 0xfb, 0xb0, 0xf6, 0xf7, 0xb1, 0x2b, 0x9e, 0xf0, - 0xb5, 0x29, 0xd3, 0x09, 0x47, 0xc2, 0xdb, 0x03, 0x37, 0x34, 0x4c, 0x6e, - 0x3b, 0x7a, 0xa7, 0x4d, 0x46, 0x52, 0x0a, 0xe2, 0x25, 0x65, 0xc1, 0x94, - 0xd2, 0x8d, 0x0a, 0x94, 0x75, 0x48, 0xfe, 0x4f, 0x24, 0x7c, 0xa7, 0xe3, - 0x0a, 0xc5, 0x17, 0x6b, 0x63, 0xe0, 0x1c, 0x7c, 0x94, 0xe7, 0x3e, 0x2a, - 0x29, 0xdf, 0x1d, 0xd9, 0x65, 0x21, 0xcc, 0x93, 0xd9, 0x7c, 0x8e, 0x20, - 0xf0, 0xa1, 0x0b, 0xd7, 0x3d, 0x94, 0xc4, 0x20, 0x5b, 0xbe, 0x9e, 0x1a, - 0x05, 0x93, 0xc7, 0x25, 0xed, 0x36, 0xb3, 0x36, 0x7d, 0x62, 0xee, 0x69, - 0x5f, 0x2f, 0x89, 0xdf, 0x3c, 0x26, 0xa8, 0x4a, 0xd2, 0xbf, 0x35, 0xdb, - 0x55, 0x6b, 0xd4, 0x51, 0x40, 0x38, 0x01, 0x75, 0x66, 0x1b, 0x79, 0xd2, - 0xa9, 0x97, 0xc5, 0x2c, 0x2a, 0x3e, 0x7c, 0x0d, 0x46, 0x16, 0x67, 0x0c, - 0xc7, 0xc2, 0x1f, 0x20, 0x30, 0x68, 0xde, 0x16, 0x35, 0x9c, 0xb0, 0x21, - 0x84, 0xb4, 0x36, 0xcc, 0xfc, 0x37, 0x1b, 0x31, 0xa9, 0x30, 0x62, 0x32, - 0xdd, 0xb9, 0x8d, 0x8b, 0xc4, 0xfc, 0x7d, 0xd0, 0x4a, 0xfc, 0x5f, 0xd1, - 0x24, 0x9c, 0xcc, 0xa1, 0x2b, 0x45, 0xe0, 0x6a, 0x1f, 0x44, 0x00, 0x75, - 0x35, 0x93, 0xf6, 0xe3, 0x13, 0x72, 0x5f, 0x23, 0xf6, 0xe1, 0x0e, 0x00, - 0x79, 0xc6, 0xea, 0x1c, 0xc1, 0xdf, 0x03, 0x74, 0x5b, 0xc7, 0xac, 0x1a, - 0x43, 0x0c, 0x85, 0x30, 0x1a, 0x09, 0x52, 0xca, 0xbf, 0x3d, 0xaf, 0xa4, - 0x70, 0xcd, 0xab, 0x1a, 0xe1, 0xb4, 0x6d, 0x18, 0xed, 0x47, 0xf9, 0x51, - 0x8f, 0xa6, 0xc1, 0x45, 0x65, 0x2d, 0x00, 0x8b, 0x9c, 0x50, 0xfc, 0xc0, - 0x94, 0x52, 0xdf, 0xd2, 0x45, 0x63, 0xeb, 0xa3, 0x58, 0x55, 0x00, 0x2b, - 0x3f, 0xfd, 0x39, 0x13, 0x61, 0x9b, 0xc4, 0x6a, 0xcc, 0x63, 0xbb, 0x76, - 0x6a, 0xd7, 0x96, 0x75, 0xb7, 0xcf, 0x7d, 0x4d, 0x25, 0xf8, 0x27, 0xcc, - 0x57, 0xfa, 0x7d, 0x10, 0xed, 0x66, 0x1d, 0x12, 0xf1, 0xb9, 0x3c, 0x7c, - 0xb0, 0xf9, 0x8d, 0x83, 0x6b, 0x91, 0x07, 0x7b, 0x54, 0x75, 0x14, 0x44, - 0x2f, 0x68, 0xf2, 0xe6, 0x47, 0x31, 0xf4, 0x11, 0x28, 0xff, 0x24, 0x68, - 0xa7, 0x77, 0xaa, 0x67, 0xcb, 0x3b, 0x3e, 0xc8, 0x56, 0xc8, 0xaa, 0xde, - 0x8a, 0xfa, 0x9f, 0x5a, 0x5d, 0x64, 0x9a, 0x09, 0xa5, 0x82, 0xdd, 0xb2, - 0x5c, 0xb7, 0xda, 0xab, 0xf0, 0x80, 0x25, 0x66, 0xb5, 0x47, 0xf4, 0x67, - 0x9c, 0x3d, 0x38, 0x91, 0x8a, 0xf6, 0xe4, 0x6b, 0x46, 0xdc, 0x8c, 0x77, - 0x64, 0x36, 0x39, 0x4a, 0xdd, 0x0a, 0xf9, 0x4f, 0xdd, 0xf8, 0xe7, 0x39, - 0x2f, 0x13, 0x22, 0xa1, 0x92, 0xa9, 0x99, 0x47, 0x04, 0xb1, 0x8b, 0x85, - 0xd7, 0x43, 0x7d, 0xa9, 0x37, 0x95, 0x65, 0x61, 0xbd, 0xc7, 0xc2, 0x7a, - 0x4f, 0x41, 0xc9, 0xd4, 0xd3, 0x44, 0x28, 0xd5, 0x85, 0x70, 0x79, 0x89, - 0x53, 0x3c, 0x2b, 0x3c, 0x7a, 0x3c, 0xf8, 0x27, 0x96, 0x6f, 0xd9, 0xe0, - 0xe3, 0x89, 0xd8, 0xf0, 0xfb, 0x4d, 0x83, 0xbd, 0xc2, 0xfa, 0xab, 0x26, - 0x8f, 0x87, 0xd6, 0x11, 0x77, 0xfd, 0xce, 0x37, 0xf3, 0xdb, 0x70, 0x03, - 0xf3, 0x0a, 0x06, 0x0d, 0x64, 0x25, 0x2b, 0x46, 0xb2, 0xe1, 0x5b, 0x7b, - 0xe5, 0xb5, 0x65, 0x58, 0x66, 0xd2, 0xbe, 0xb9, 0xed, 0x9e, 0xe6, 0x43, - 0x64, 0xa5, 0x82, 0x29, 0x7f, 0xd9, 0xcb, 0x73, 0x01, 0x00, 0x00, 0xc0, - 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, - 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, - 0x0c, 0x84, 0x44, 0x6a, 0x2a, 0xcb, 0xf0, 0xf6, 0xb4, 0x8f, 0xef, 0xc0, - 0x22, 0x53, 0x61, 0x30, 0x12, 0x73, 0xb5, 0x3a, 0xeb, 0x6b, 0x0d, 0x1c, - 0x31, 0x91, 0xf0, 0xed, 0xde, 0xb9, 0x4e, 0x55, 0xab, 0x9c, 0x2a, 0x2d, - 0x94, 0x97, 0x4a, 0x7d, 0x17, 0xe8, 0x28, 0x13, 0xb2, 0xd2, 0x4b, 0x26, - 0x61, 0x22, 0xda, 0xef, 0x01, 0x49, 0x18, 0x7e, 0x11, 0xa7, 0xb0, 0xdc, - 0x94, 0xbc, 0xb6, 0x9c, 0xa8, 0x42, 0xd9, 0x6d, 0x0f, 0x52, 0x24, 0x86, - 0xd3, 0xe1, 0x88, 0x61, 0x95, 0xf9, 0xc2, 0x8e, 0x64, 0x9f, 0x81, 0xe6, - 0xe2, 0xc6, 0xeb, 0x99, 0xc0, 0xf0, 0xd0, 0xc6, 0x04, 0x7f, 0x21, 0x22, - 0xcf, 0x98, 0xc3, 0x13, 0x89, 0xac, 0x6e, 0x9a, 0x34, 0xb7, 0x8e, 0xd9, - 0x46, 0x55, 0x19, 0x76, 0x2b, 0xae, 0x75, 0x89, 0xff, 0x54, 0x57, 0x90, - 0xdd, 0x37, 0x8e, 0xfe, 0xc9, 0x13, 0xdc, 0x67, 0x22, 0x3f, 0x7e, 0x10, - 0x45, 0x73, 0x69, 0xbc, 0x37, 0xc4, 0x7a, 0xfb, 0xf2, 0x1f, 0x1b, 0x13, - 0xd8, 0xe6, 0x81, 0xbe, 0xfd, 0xf4, 0x52, 0x45, 0x9d, 0xa6, 0xfa, 0x48, - 0xab, 0xab, 0x0a, 0x9c, 0x0d, 0xc4, 0xab, 0x1a, 0x63, 0xb1, 0x16, 0x59, - 0x4a, 0x34, 0x22, 0xdf, 0x27, 0x6e, 0x01, 0x1d, 0xaa, 0x4f, 0xe6, 0xa1, - 0x5a, 0xfd, 0x05, 0xfc, 0xc4, 0xdb, 0x59, 0xba, 0x88, 0x89, 0x60, 0x96, - 0x56, 0xef, 0x75, 0x4c, 0xf5, 0xb5, 0xea, 0x39, 0x74, 0xe8, 0xb7, 0x3c, - 0xb6, 0x5e, 0x40, 0x6f, 0xdb, 0x62, 0x27, 0x91, 0x07, 0xd3, 0x9a, 0xb8, - 0x86, 0x9c, 0x8a, 0xbd, 0x04, 0x0d, 0x46, 0xc3, 0x77, 0x06, 0xa3, 0x26, - 0xfb, 0x76, 0x9f, 0xd9, 0x0a, 0x95, 0x15, 0x17, 0xd0, 0x4d, 0xad, 0x5a, - 0x37, 0x1d, 0x79, 0xc7, 0xef, 0x70, 0xdd, 0x50, 0xbe, 0x5e, 0x30, 0xcf, - 0x4e, 0xc9, 0x0c, 0xd9, 0x20, 0x85, 0xf1, 0x24, 0xd6, 0x22, 0x7b, 0x15, - 0x3b, 0x2f, 0x44, 0xdc, 0xf2, 0xc3, 0x02, 0xd3, 0xf8, 0x5a, 0x36, 0x82, - 0x9b, 0xf5, 0xc8, 0xbb, 0x1b, 0x09, 0x1f, 0x9c, 0xf1, 0x88, 0x78, 0x88, - 0x77, 0x88, 0x9b, 0x27, 0xbd, 0x7a, 0x70, 0x1a, 0xc6, 0xc0, 0x3c, 0xfc, - 0xfe, 0xc5, 0x6b, 0x69, 0xf8, 0x8b, 0x66, 0x8d, 0x68, 0x28, 0xd8, 0x68, - 0x4e, 0x0d, 0xe0, 0xf7, 0x08, 0x38, 0x11, 0xa0, 0x43, 0x7d, 0xd5, 0x59, - 0x8a, 0xf2, 0x93, 0xc4, 0x93, 0x01, 0x83, 0xfb, 0x60, 0x69, 0x21, 0x86, - 0x85, 0xc9, 0xad, 0xb0, 0xd7, 0xc0, 0x4c, 0xf4, 0x69, 0x33, 0x16, 0x76, - 0x5d, 0x4a, 0x65, 0xd9, 0x09, 0x9a, 0x63, 0x0e, 0x5a, 0x32, 0x96, 0x42, - 0xe5, 0xcb, 0xe4, 0x3d, 0x1d, 0x00, 0x42, 0x32, 0x85, 0xa7, 0x6b, 0x92, - 0xca, 0x6c, 0x6e, 0x12, 0x1e, 0x1e, 0x37, 0xff, 0xba, 0x2d, 0xa3, 0x23, - 0x42, 0xaa, 0x11, 0x15, 0xbf, 0x30, 0xa3, 0x30, 0x7a, 0x16, 0xd7, 0x4b, - 0xf7, 0x75, 0x11, 0x85, 0x19, 0xe8, 0x47, 0x52, 0xe2, 0xdc, 0xd1, 0x24, - 0x49, 0x77, 0x55, 0x61, 0x4f, 0xc5, 0x43, 0xb9, 0x91, 0x0e, 0xc9, 0x63, - 0xd0, 0xb2, 0x5d, 0xb9, 0xb5, 0xca, 0x88, 0x58, 0x94, 0xa0, 0xda, 0x02, - 0xfb, 0x23, 0x07, 0xbc, 0x35, 0x27, 0xb0, 0xd7, 0xbd, 0x30, 0x97, 0x4b, - 0x95, 0x68, 0xa1, 0x6c, 0xb4, 0xa6, 0xc4, 0x16, 0xf5, 0x33, 0x58, 0x39, - 0xc9, 0x89, 0xa0, 0x51, 0x7e, 0xd2, 0x26, 0xe5, 0x4c, 0x16, 0x47, 0xf0, - 0x6a, 0x88, 0x7a, 0xa7, 0x5f, 0x66, 0xcf, 0x05, 0x34, 0xb2, 0x8a, 0x1b, - 0x04, 0xc7, 0xf0, 0x37, 0x21, 0x36, 0x44, 0x9d, 0x48, 0x28, 0xd6, 0x28, - 0xd6, 0xa3, 0x34, 0x7e, 0x3e, 0x39, 0x1c, 0x30, 0xe1, 0x77, 0xf4, 0xdf, - 0x30, 0x7e, 0x8f, 0x48, 0xb4, 0x14, 0x16, 0x45, 0xad, 0x63, 0x72, 0x01, - 0xb0, 0x79, 0x7d, 0x29, 0x63, 0xdb, 0x2a, 0x60, 0x12, 0x12, 0xd2, 0xfe, - 0xde, 0x2a, 0xb1, 0x8a, 0xab, 0x67, 0x6d, 0x93, 0x2e, 0x54, 0x81, 0x72, - 0xb6, 0xf9, 0x70, 0xff, 0x02, 0x2f, 0x74, 0x04, 0x32, 0xd1, 0xba, 0x2f, - 0xd9, 0x4c, 0x9f, 0x1c, 0x79, 0x73, 0x12, 0x5e, 0x08, 0xe2, 0xe3, 0xa4, - 0x2a, 0xe7, 0xfc, 0xff, 0xd7, 0x92, 0x64, 0x44, 0xdc, 0x8a, 0xf0, 0xe7, - 0x4f, 0xad, 0x16, 0x2a, 0xff, 0x9a, 0xe6, 0x7b, 0xf3, 0xfa, 0x6c, 0xa4, - 0x5d, 0xf7, 0x7e, 0x7a, 0xbc, 0xd2, 0x31, 0xae, 0x76, 0x93, 0x69, 0xe8, - 0xcc, 0x4f, 0x70, 0x63, 0xc0, 0x7e, 0xd0, 0xd2, 0xdc, 0x4e, 0x6a, 0x01, - 0xc7, 0x7c, 0xc3, 0x53, 0x6f, 0xc9, 0x47, 0xe0, 0x2c, 0xcd, 0x05, 0xdc, - 0x19, 0x0a, 0x5d, 0xf5, 0x6a, 0xbb, 0x55, 0x22, 0x09, 0x32, 0xfa, 0x50, - 0xab, 0xa2, 0xb2, 0x96, 0x68, 0xbe, 0x00, 0x47, 0xa4, 0x90, 0x6d, 0xaf, - 0x0b, 0x70, 0xba, 0xb1, 0xab, 0x56, 0x83, 0xae, 0xa2, 0x93, 0x5c, 0x3e, - 0x77, 0x63, 0x89, 0x10, 0xb2, 0x18, 0x07, 0x61, 0x58, 0x0e, 0xb3, 0xd0, - 0x82, 0x10, 0x8e, 0x5b, 0x09, 0xe2, 0xa5, 0x9f, 0x54, 0x5d, 0x92, 0x92, - 0x2d, 0xca, 0x7e, 0xf4, 0x7e, 0xad, 0xf4, 0x44, 0x53, 0x38, 0x51, 0x0c, - 0xfd, 0xb5, 0xae, 0x21, 0x0c, 0x10, 0xc3, 0x4e, 0x55, 0x28, 0xd3, 0x4b, - 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, - 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, - 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xac, 0x48, 0x46, 0x11, - 0x76, 0x3c, 0x2d, 0x52, 0x5c, 0x6c, 0x6c, 0xf3, 0xdd, 0x93, 0xc2, 0xa8, - 0x8f, 0xe5, 0x34, 0x1d, 0x55, 0xba, 0x93, 0x54, 0xd2, 0x48, 0x0c, 0x6d, - 0xfe, 0xe4, 0x24, 0x6c, 0x9b, 0x3c, 0x49, 0x34, 0xae, 0x34, 0xa4, 0x41, - 0x40, 0x52, 0x50, 0xb0, 0xf3, 0x27, 0x55, 0xd8, 0xa5, 0x28, 0x57, 0x96, - 0xea, 0xe5, 0x33, 0x58, 0x4a, 0x57, 0xbc, 0x58, 0x52, 0xc9, 0x0c, 0x73, - 0x05, 0xd1, 0x50, 0xda, 0x2a, 0xe7, 0x66, 0x8e, 0xee, 0x9d, 0x9f, 0x1c, - 0xc0, 0x5e, 0xe8, 0xb6, 0x80, 0xdc, 0x55, 0xc1, 0xd0, 0x51, 0xd3, 0x19, - 0x66, 0x7e, 0xaa, 0x62, 0x3d, 0xf7, 0xed, 0x04, 0xc5, 0x81, 0x3e, 0x19, - 0x13, 0xd5, 0x40, 0x25, 0xbb, 0x2a, 0x77, 0x14, 0xf5, 0x76, 0xe2, 0x94, - 0xbe, 0xac, 0x12, 0x14, 0x4a, 0x84, 0xad, 0xe5, 0xbf, 0x38, 0x27, 0xce, - 0x7a, 0x23, 0x31, 0x22, 0x94, 0x96, 0x2e, 0xab, 0x14, 0x5e, 0xcb, 0x82, - 0x34, 0x71, 0x1b, 0x42, 0xbf, 0xa1, 0x24, 0x93, 0xe9, 0x22, 0x44, 0xb1, - 0x60, 0xfb, 0xc8, 0x47, 0xce, 0x5b, 0xe0, 0xe4, 0x84, 0xca, 0x37, 0x31, - 0x7b, 0x53, 0x4a, 0x1c, 0xd2, 0xef, 0xdf, 0x3d, 0x32, 0xb8, 0xb4, 0x95, - 0xf4, 0x2e, 0x48, 0xa8, 0x87, 0xc1, 0x82, 0x03, 0x23, 0xcd, 0x3d, 0x69, - 0x61, 0x86, 0x76, 0xab, 0xd5, 0x49, 0x8a, 0x5c, 0xd6, 0xa1, 0x5c, 0xd3, - 0x5a, 0x0d, 0x3a, 0xc2, 0x4c, 0x9a, 0xd6, 0x94, 0xfa, 0xd0, 0x6e, 0xb7, - 0x57, 0x6b, 0x39, 0xcb, 0xbe, 0xec, 0x90, 0x5b, 0xb7, 0x98, 0xdc, 0x95, - 0x32, 0x88, 0x13, 0x4a, 0x54, 0xb9, 0x93, 0x60, 0xe8, 0x9f, 0xcd, 0xdf, - 0x20, 0x8e, 0x2d, 0xad, 0xa4, 0x8e, 0xa5, 0xca, 0xac, 0x99, 0xd3, 0x7b, - 0x08, 0x02, 0xbd, 0x13, 0xaf, 0x7e, 0x43, 0xd9, 0x23, 0xcd, 0xef, 0x58, - 0x34, 0x93, 0x40, 0x3c, 0xf8, 0xff, 0xd8, 0xbf, 0xc4, 0xec, 0x65, 0x62, - 0xb2, 0x61, 0x72, 0x74, 0xfc, 0xa1, 0x51, 0x7b, 0x42, 0x09, 0x42, 0x7b, - 0x8a, 0xf9, 0xc2, 0xb0, 0x8b, 0x4d, 0xb4, 0x12, 0xef, 0x86, 0xe3, 0x4c, - 0xe4, 0x1e, 0xe5, 0xeb, 0x4b, 0x12, 0x7d, 0xd7, 0xf7, 0x1c, 0xae, 0x75, - 0x15, 0x11, 0xe7, 0x9b, 0x2f, 0xda, 0xfb, 0xcf, 0x48, 0xdb, 0xe9, 0x54, - 0x30, 0x48, 0x84, 0x54, 0xf4, 0xc1, 0xbf, 0xe5, 0x75, 0x17, 0x7e, 0x63, - 0x6f, 0xb0, 0x06, 0x98, 0x36, 0x2b, 0x9c, 0xe1, 0xfe, 0xf0, 0x41, 0xc7, - 0x12, 0xe6, 0x27, 0x55, 0x22, 0x91, 0x18, 0x09, 0x05, 0xef, 0x76, 0x6b, - 0x34, 0x97, 0x69, 0x6e, 0x5a, 0x28, 0x78, 0x5e, 0x63, 0x0f, 0xdb, 0x02, - 0x85, 0x1d, 0x08, 0xf8, 0x4b, 0xce, 0x35, 0x5a, 0x91, 0x2a, 0x46, 0x6e, - 0x22, 0x07, 0x16, 0x68, 0xb7, 0x52, 0xf4, 0x3c, 0x64, 0x39, 0x60, 0x4f, - 0xf9, 0x66, 0x54, 0xee, 0x91, 0xb5, 0x6b, 0xd1, 0xf5, 0xb7, 0x2d, 0xb7, - 0x25, 0xf7, 0x78, 0xfe, 0x22, 0xfd, 0x6d, 0xe7, 0xa8, 0x8e, 0xe1, 0xf2, - 0x6f, 0xde, 0x28, 0x1f, 0xc6, 0xb7, 0xbf, 0xf1, 0xfc, 0x48, 0xdb, 0x97, - 0x94, 0x77, 0xbd, 0xbe, 0xae, 0xac, 0x5a, 0x4d, 0x15, 0xc2, 0xbc, 0x87, - 0xa3, 0xb7, 0xc1, 0x3e, 0xdb, 0x62, 0x1a, 0x8f, 0xce, 0x19, 0xde, 0x58, - 0xbc, 0xbe, 0x24, 0xac, 0x8e, 0x90, 0xe5, 0xe2, 0x12, 0x6e, 0x23, 0xfb, - 0x07, 0x32, 0xc4, 0xe5, 0x31, 0x9e, 0x3d, 0xf3, 0x96, 0x93, 0x41, 0xf6, - 0x1e, 0x54, 0xf0, 0xf9, 0xfd, 0x03, 0x76, 0x0e, 0x26, 0x8a, 0x25, 0xfb, - 0x48, 0x24, 0x84, 0xbb, 0xdd, 0x92, 0xc8, 0x27, 0x84, 0x04, 0x24, 0x14, - 0x24, 0xb4, 0x9e, 0xef, 0xfe, 0x4a, 0x3e, 0xb2, 0x80, 0xad, 0x2a, 0x42, - 0xa3, 0x96, 0xe2, 0x32, 0x81, 0xfa, 0xba, 0xc9, 0x1e, 0xee, 0x8c, 0x62, - 0x1e, 0x47, 0xb4, 0x7d, 0xf3, 0xd0, 0x04, 0x24, 0x05, 0x61, 0x96, 0x80, - 0xaa, 0x9a, 0xbf, 0x7c, 0x5a, 0x68, 0xef, 0x40, 0x28, 0x75, 0xd8, 0x03, - 0xf8, 0xee, 0xbb, 0x97, 0x0d, 0x6a, 0xfc, 0xc6, 0x78, 0x7b, 0xd7, 0xe5, - 0x0d, 0xb9, 0x5a, 0xbb, 0x9e, 0x35, 0x18, 0x0c, 0xba, 0x6d, 0x61, 0x05, - 0xd9, 0x85, 0x3a, 0xd2, 0xc0, 0x54, 0xa6, 0x20, 0x9a, 0xbf, 0x09, 0x8c, - 0x87, 0x28, 0xb8, 0xe3, 0xc1, 0xc4, 0x0b, 0x14, 0xf7, 0x2c, 0x47, 0xf1, - 0xfa, 0x05, 0xfe, 0xed, 0xdb, 0x39, 0xdc, 0xb9, 0x89, 0x01, 0xec, 0xcf, - 0x91, 0x9f, 0x40, 0x24, 0xe0, 0xd1, 0xf5, 0x48, 0xe5, 0xf5, 0x0e, 0x84, - 0x11, 0x89, 0xb1, 0x08, 0x0b, 0xc7, 0xfa, 0xbb, 0x28, 0x76, 0x8d, 0xa2, - 0xe8, 0x88, 0x0b, 0x00, 0x2d, 0x8a, 0xe8, 0x59, 0x35, 0x9e, 0x00, 0x68, - 0x4c, 0xff, 0xc8, 0x0b, 0x6e, 0x0e, 0x89, 0x0a, 0x45, 0xc5, 0xa5, 0xa6, - 0xc7, 0x70, 0xba, 0x43, 0x19, 0xa5, 0xc5, 0x58, 0xa2, 0x9c, 0xb2, 0x49, - 0x13, 0xb7, 0x62, 0xbe, 0x6e, 0x16, 0x3f, 0x66, 0x42, 0x17, 0xd9, 0x08, - 0x9d, 0xe3, 0x1e, 0xca, 0x37, 0x5d, 0x98, 0x5e, 0x53, 0x4f, 0xd4, 0x02, - 0x13, 0xc3, 0xf7, 0x8f, 0xbe, 0xf6, 0x90, 0x83, 0x4f, 0xfe, 0x16, 0x80, - 0x57, 0x2d, 0xf3, 0x50, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, - 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, - 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, - 0x29, 0xd4, 0x63, 0xed, 0xfc, 0x91, 0x62, 0x23, 0x4f, 0x68, 0xd4, 0xba, - 0x46, 0xc6, 0xf0, 0x27, 0x29, 0xb8, 0x29, 0x5f, 0x7b, 0xe6, 0x17, 0xfa, - 0x7b, 0x2d, 0x5b, 0x4f, 0x0c, 0x5a, 0xdc, 0x14, 0x91, 0x52, 0xab, 0x7d, - 0x53, 0xe0, 0xf9, 0x36, 0xfa, 0x06, 0x0d, 0xe5, 0x5b, 0xc5, 0xfe, 0x28, - 0xf8, 0x69, 0x6b, 0x29, 0xc8, 0x22, 0xbe, 0x8d, 0x00, 0x2e, 0x67, 0xc4, - 0x0d, 0x26, 0x22, 0x2d, 0x3e, 0xe8, 0x6f, 0x29, 0x2a, 0x31, 0x90, 0x86, - 0x45, 0xda, 0x4d, 0x52, 0xa3, 0x6d, 0x78, 0xbc, 0x72, 0x2a, 0x36, 0xeb, - 0xc5, 0x23, 0x7a, 0xe2, 0x4f, 0x6b, 0xb5, 0x97, 0xee, 0x1c, 0xe4, 0x3b, - 0x15, 0xda, 0xa6, 0xe6, 0xfb, 0x88, 0xd4, 0x08, 0xcf, 0x1a, 0x03, 0x9d, - 0xb4, 0xad, 0x6f, 0x79, 0xdb, 0xed, 0x37, 0x56, 0x53, 0x1b, 0xd4, 0x11, - 0xaa, 0xa3, 0x75, 0x02, 0xb1, 0x32, 0x1c, 0x3d, 0x50, 0x33, 0xf5, 0x59, - 0xfb, 0x0a, 0xf5, 0x9b, 0x2c, 0x82, 0xd9, 0x32, 0x3e, 0xbd, 0x5f, 0xbd, - 0xbf, 0x03, 0xf2, 0x97, 0xfc, 0x5c, 0x3e, 0x5a, 0xfe, 0xbb, 0x7a, 0xbe, - 0x47, 0x92, 0x86, 0x35, 0xa4, 0x0f, 0x5d, 0xf2, 0x10, 0xf0, 0x7a, 0xe4, - 0x31, 0xc3, 0x33, 0x10, 0xf4, 0x03, 0x72, 0x47, 0xee, 0xdb, 0x71, 0xbb, - 0x6d, 0x53, 0x21, 0x4d, 0x4b, 0xc8, 0x78, 0xf9, 0xdc, 0x94, 0xcb, 0x4a, - 0x9b, 0xa2, 0xdf, 0x09, 0xea, 0x11, 0x9e, 0xc1, 0xff, 0xba, 0xc4, 0x85, - 0xf6, 0x61, 0x31, 0xf7, 0xa7, 0x4b, 0x6f, 0xc3, 0x12, 0x06, 0xf0, 0x98, - 0x85, 0xda, 0xd8, 0x45, 0xc0, 0xcc, 0xe3, 0x47, 0xb3, 0xca, 0xde, 0xd8, - 0x99, 0xa7, 0x0c, 0x50, 0x42, 0xd8, 0x7c, 0xf1, 0x86, 0x69, 0x77, 0xf3, - 0x59, 0x6b, 0x60, 0x29, 0x82, 0xa2, 0xa4, 0xcf, 0xb4, 0x68, 0x14, 0xd2, - 0xe9, 0x15, 0x04, 0x4e, 0x5e, 0x9f, 0xdf, 0x51, 0xab, 0xe9, 0xdf, 0xb1, - 0x5b, 0x1c, 0xd2, 0x5e, 0x40, 0x31, 0x30, 0xb7, 0xde, 0x7e, 0x7c, 0xc8, - 0xbf, 0xb1, 0xfc, 0x8c, 0x09, 0x9f, 0xf6, 0x46, 0xde, 0x1d, 0x21, 0x44, - 0x89, 0xc3, 0xb9, 0x70, 0x75, 0x42, 0xc8, 0x4d, 0x78, 0x80, 0x0e, 0x9f, - 0x7f, 0x93, 0x1b, 0x9a, 0x1a, 0x9a, 0x49, 0x54, 0xfa, 0x31, 0xd1, 0x84, - 0x0b, 0x71, 0xc1, 0x16, 0xdb, 0xcc, 0xba, 0x73, 0x3e, 0x9b, 0x30, 0xd8, - 0xbf, 0xed, 0xcb, 0x0a, 0xb0, 0xb6, 0x1b, 0xb0, 0xec, 0x01, 0x64, 0x42, - 0x02, 0xc6, 0x84, 0xfd, 0x14, 0xda, 0x69, 0x12, 0x83, 0xe6, 0x73, 0x24, - 0xb5, 0x9a, 0x5d, 0x36, 0x6d, 0xe1, 0x7a, 0x04, 0x41, 0xc7, 0xf2, 0xd4, - 0xf9, 0xa6, 0x6f, 0x06, 0x53, 0x7d, 0xd4, 0x5c, 0x0f, 0x67, 0xba, 0x42, - 0x73, 0x90, 0x2c, 0x73, 0xf7, 0x67, 0x21, 0xfe, 0x0d, 0x01, 0x54, 0x0c, - 0x1e, 0x0e, 0xc9, 0x77, 0xf0, 0x7d, 0x89, 0x58, 0xb0, 0x25, 0x32, 0x0d, - 0x1d, 0xcd, 0x61, 0xc6, 0x14, 0x3f, 0xd0, 0x43, 0xe5, 0x9a, 0xae, 0xf8, - 0x1b, 0x68, 0x77, 0xe0, 0xa3, 0x07, 0xc3, 0x0f, 0x93, 0xbe, 0x33, 0x5a, - 0x1f, 0x1e, 0x93, 0xa9, 0x5f, 0xe1, 0x45, 0xee, 0xaf, 0x5d, 0xcc, 0x59, - 0xbb, 0x15, 0xe1, 0x3e, 0x01, 0x94, 0x8d, 0xc1, 0xbc, 0x44, 0x62, 0xb2, - 0x26, 0x76, 0x19, 0x04, 0x10, 0x82, 0xa2, 0xd0, 0xb3, 0x59, 0x70, 0xa5, - 0x9c, 0x04, 0x4b, 0x68, 0x8d, 0xea, 0x42, 0x03, 0x73, 0x04, 0x1f, 0xee, - 0x9e, 0x97, 0x1f, 0xdd, 0x87, 0x22, 0xfa, 0xcd, 0x3f, 0xf3, 0x42, 0x47, - 0x94, 0x38, 0xcb, 0x3b, 0x42, 0x09, 0xc4, 0xb1, 0x96, 0x5b, 0x8f, 0xa5, - 0xb9, 0x61, 0x2d, 0x3e, 0x60, 0x94, 0x80, 0x65, 0x28, 0x71, 0xde, 0x22, - 0xc3, 0x81, 0x11, 0x0f, 0x42, 0x6a, 0xae, 0x53, 0x02, 0x05, 0x30, 0x73, - 0x69, 0xd7, 0x5b, 0x70, 0xba, 0x4a, 0x98, 0x51, 0x49, 0x52, 0x4b, 0x73, - 0xda, 0xc0, 0x55, 0xe9, 0xed, 0x2e, 0x06, 0x22, 0x93, 0x19, 0x26, 0x3e, - 0xd5, 0x73, 0x38, 0x3d, 0xf9, 0x73, 0x16, 0xe4, 0xeb, 0xec, 0x55, 0xd4, - 0x25, 0xb6, 0xdf, 0x0d, 0x51, 0x8b, 0xce, 0xab, 0x3e, 0xe2, 0x98, 0x52, - 0x3f, 0x17, 0x03, 0xbf, 0xa3, 0x70, 0x4a, 0xec, 0x1c, 0x76, 0xd4, 0x69, - 0xd0, 0x8a, 0x14, 0x40, 0xf9, 0xc2, 0xcb, 0xa6, 0x1d, 0x9e, 0x7d, 0x8e, - 0x6e, 0x26, 0xff, 0x40, 0xe7, 0xab, 0x0a, 0x1a, 0x0d, 0x58, 0x16, 0x88, - 0x12, 0x86, 0xf7, 0x5a, 0x89, 0x8e, 0xc0, 0x5e, 0xb2, 0x81, 0xa8, 0xf4, - 0xeb, 0x84, 0x73, 0x46, 0x86, 0xb8, 0x3e, 0xd7, 0x74, 0x06, 0x8e, 0x11, - 0xaf, 0x23, 0x62, 0x92, 0x4f, 0x37, 0xd5, 0xd8, 0xbf, 0x40, 0xad, 0x6e, - 0x08, 0x0a, 0x91, 0x02, 0x3a, 0xf2, 0x86, 0x73, 0xf4, 0x66, 0x7f, 0x37, - 0xda, 0xed, 0xac, 0x94, 0xe2, 0x66, 0x7f, 0xfa, 0xbf, 0x31, 0xab, 0xd0, - 0x17, 0x3e, 0x65, 0xa5, 0x9b, 0x50, 0x60, 0x33, 0x05, 0xab, 0xf8, 0x20, - 0x0f, 0x36, 0x5f, 0xf1, 0xb8, 0x62, 0x3c, 0xad, 0xbe, 0x86, 0x53, 0xcd, - 0xaf, 0x56, 0x15, 0x2c, 0x08, 0xce, 0x28, 0x0b, 0x3a, 0xff, 0xca, 0xaa, - 0x87, 0xb9, 0xd5, 0xb0, 0x87, 0x4b, 0x47, 0x69, 0x01, 0x00, 0x00, 0xc0, - 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, - 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, - 0x0c, 0x84, 0x44, 0x6a, 0x1a, 0x45, 0xeb, 0xd0, 0x92, 0x60, 0x6e, 0x93, - 0x61, 0xa3, 0x51, 0x90, 0xc2, 0x6f, 0x96, 0x08, 0xd6, 0x00, 0xd2, 0x4f, - 0x66, 0xad, 0xf1, 0x1d, 0x9a, 0xee, 0xd9, 0x1e, 0xba, 0xd6, 0xa7, 0x10, - 0xf2, 0x84, 0x1f, 0x15, 0x9c, 0xbb, 0xfe, 0x75, 0xcd, 0x15, 0xf7, 0x40, - 0xc6, 0xa4, 0x0e, 0x76, 0x2c, 0x7c, 0x09, 0xc5, 0xcb, 0x3e, 0x40, 0x86, - 0x6e, 0xba, 0xcb, 0x42, 0x5d, 0x37, 0x37, 0x21, 0xf2, 0x33, 0x94, 0x77, - 0x3c, 0x98, 0x53, 0x4c, 0xb6, 0x88, 0xc4, 0xe9, 0xbd, 0x28, 0xd6, 0x50, - 0x03, 0x08, 0x3d, 0xaf, 0xd6, 0x9a, 0xc8, 0x82, 0xcc, 0xda, 0x90, 0xcd, - 0x7b, 0xee, 0xc0, 0x09, 0x35, 0x10, 0xf5, 0xae, 0xeb, 0xb9, 0xb2, 0x88, - 0xfa, 0x59, 0x30, 0xcb, 0x89, 0xc6, 0x5e, 0x85, 0x8c, 0x24, 0x02, 0xcd, - 0xaf, 0x44, 0xdc, 0xc3, 0x71, 0x6d, 0xad, 0xbe, 0xd8, 0x89, 0x9e, 0x11, - 0x9f, 0x88, 0x4b, 0xf5, 0x0e, 0x65, 0x3c, 0x1a, 0xc1, 0x74, 0x7a, 0x2b, - 0x41, 0xeb, 0x2b, 0x7d, 0x07, 0x0b, 0x6a, 0xfc, 0xdd, 0xb7, 0xde, 0x86, - 0x2b, 0x21, 0x01, 0xf2, 0x1f, 0x17, 0xc2, 0x64, 0x7f, 0xf4, 0xe1, 0x93, - 0xe9, 0xc8, 0x69, 0x94, 0x30, 0x65, 0xf3, 0x04, 0x41, 0xc0, 0xb4, 0xbe, - 0xe8, 0x9d, 0xc1, 0x51, 0x0c, 0x58, 0x7a, 0x1b, 0x48, 0xfd, 0xb1, 0x63, - 0x51, 0x06, 0x67, 0x49, 0x1a, 0x68, 0x31, 0x88, 0x14, 0x69, 0xf4, 0xe7, - 0x71, 0x7c, 0xb3, 0xc6, 0x0c, 0x54, 0x8e, 0xbd, 0xf4, 0x2b, 0x1a, 0x3d, - 0x3e, 0xaa, 0x5b, 0x92, 0xbb, 0x91, 0xc8, 0xee, 0x28, 0xda, 0xa8, 0x3a, - 0x08, 0x13, 0x14, 0x71, 0xf2, 0x2b, 0xd1, 0x4a, 0x65, 0xa9, 0x57, 0x39, - 0x58, 0x12, 0xc8, 0xf5, 0x74, 0x00, 0x7e, 0x00, 0xe9, 0xc9, 0x24, 0xd3, - 0x93, 0x8c, 0x3f, 0x28, 0x05, 0xf9, 0x9b, 0x05, 0x7f, 0x46, 0xb7, 0x55, - 0xed, 0x2c, 0x74, 0x43, 0xbd, 0xd2, 0xa1, 0x74, 0x9d, 0x35, 0x43, 0xce, - 0x91, 0x6a, 0x02, 0xd5, 0x19, 0xf6, 0x2f, 0xad, 0x0f, 0xaa, 0xeb, 0x59, - 0x70, 0x73, 0x13, 0x29, 0x03, 0x9b, 0x6d, 0x84, 0x62, 0x9b, 0x6a, 0x5f, - 0x24, 0xa5, 0xc9, 0x57, 0x39, 0x82, 0x4f, 0x1c, 0xdf, 0x48, 0xeb, 0xb5, - 0x6d, 0xa2, 0x4d, 0x74, 0xfa, 0x22, 0xf1, 0xd5, 0x44, 0x26, 0xcb, 0x52, - 0x27, 0x37, 0xf7, 0xd9, 0x5d, 0xdb, 0x1c, 0x4b, 0xcb, 0x3a, 0x62, 0x8e, - 0xe5, 0x77, 0x83, 0x25, 0xc3, 0x54, 0xa7, 0xe6, 0x90, 0x8c, 0x04, 0xf9, - 0xae, 0x3d, 0x13, 0x44, 0x23, 0x59, 0xe1, 0x36, 0x9e, 0x9b, 0xfd, 0x87, - 0x1e, 0x9f, 0x68, 0x62, 0xc9, 0xf6, 0x00, 0x91, 0x7b, 0x34, 0x0a, 0x5c, - 0x2c, 0x4e, 0xe2, 0xc4, 0x6a, 0xc0, 0xc6, 0xfa, 0xce, 0x69, 0x27, 0xf9, - 0xc4, 0xa7, 0xd6, 0x1f, 0xb1, 0x0a, 0x0a, 0x70, 0xe0, 0x29, 0x6b, 0x9c, - 0x47, 0xb9, 0x9b, 0x39, 0xb7, 0xa6, 0xe2, 0x6c, 0x8d, 0x13, 0x9c, 0xc1, - 0xe6, 0x92, 0x29, 0x2a, 0xdc, 0xb6, 0xfc, 0x24, 0x5e, 0x6a, 0x2d, 0x33, - 0x7b, 0x58, 0xa1, 0x9c, 0x19, 0x68, 0x57, 0x1d, 0xcd, 0x3b, 0x75, 0x82, - 0xae, 0x8d, 0xb1, 0x25, 0xf6, 0x61, 0x5e, 0x7c, 0x4f, 0xe7, 0x8e, 0x82, - 0x82, 0x4d, 0xa9, 0xb1, 0x94, 0xb9, 0xba, 0x32, 0x4d, 0x8d, 0x19, 0x65, - 0x8c, 0x94, 0x59, 0xc6, 0xb0, 0xbd, 0x34, 0x92, 0x09, 0xf8, 0xa2, 0x74, - 0x9b, 0x55, 0xd2, 0x8f, 0x6d, 0x38, 0x3b, 0x46, 0x6e, 0x67, 0x2a, 0x38, - 0xc5, 0x71, 0x7c, 0x56, 0xd3, 0xd9, 0x2a, 0x74, 0x2a, 0x88, 0x7f, 0xc0, - 0xcf, 0xf3, 0x44, 0x5e, 0x6b, 0x2b, 0x7b, 0x06, 0x91, 0xe4, 0xb4, 0x28, - 0x4d, 0xbb, 0xc3, 0x54, 0x7a, 0xc5, 0xef, 0x12, 0x3c, 0x39, 0x19, 0x52, - 0x1f, 0xb9, 0x94, 0x06, 0xde, 0xa6, 0xc1, 0x9d, 0x84, 0x02, 0xf6, 0x14, - 0x2f, 0x8b, 0xe9, 0xb5, 0x25, 0x45, 0x40, 0xfe, 0x9e, 0xce, 0x67, 0x95, - 0x30, 0x53, 0xf6, 0x56, 0x9f, 0x19, 0x07, 0x3d, 0x02, 0x57, 0x78, 0x49, - 0x98, 0x5a, 0x2c, 0x3a, 0x85, 0x1d, 0x58, 0x99, 0x85, 0xbb, 0x64, 0x46, - 0x95, 0x10, 0x58, 0xe0, 0xa4, 0x26, 0xd4, 0xf7, 0x2e, 0x30, 0x7d, 0x53, - 0xfb, 0x4b, 0x1b, 0x5e, 0x37, 0xd5, 0xb2, 0xdf, 0xf3, 0xe5, 0x8d, 0x1d, - 0x0f, 0x24, 0x6c, 0x22, 0x81, 0xba, 0x14, 0xf5, 0xa6, 0x13, 0xb9, 0xbd, - 0xb1, 0x9a, 0x61, 0x8f, 0x91, 0xbe, 0x37, 0xdc, 0x52, 0x63, 0xde, 0x1a, - 0xaf, 0x13, 0x67, 0xeb, 0xc8, 0x73, 0x80, 0x75, 0x54, 0x28, 0xb0, 0x59, - 0x04, 0xfc, 0xc6, 0x4f, 0xca, 0xe6, 0xc3, 0x26, 0x41, 0x30, 0xd4, 0xba, - 0x3b, 0x96, 0xa2, 0x30, 0x81, 0x2b, 0xce, 0x02, 0x13, 0xe3, 0xc0, 0xf2, - 0x70, 0x69, 0x45, 0x42, 0xf0, 0x3d, 0x24, 0x8f, 0x41, 0x64, 0x45, 0x07, - 0xa7, 0xdc, 0xb7, 0x31, 0x05, 0x23, 0x85, 0x44, 0x43, 0x4f, 0x08, 0x25, - 0xe5, 0x6b, 0x56, 0x13, 0x7d, 0x32, 0x39, 0x86, 0x8f, 0x7b, 0xac, 0x07, - 0x6c, 0xfe, 0x21, 0xeb, 0xd6, 0xf1, 0x00, 0xd9, 0x1f, 0x4f, 0xc5, 0x92, - 0xdf, 0xad, 0x9a, 0xe3, 0x13, 0xdf, 0xb5, 0x0c, 0xdf, 0xcc, 0x6b, 0x19, - 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, - 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, - 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x20, 0xec, 0x00, 0xd2, - 0xa0, 0xb0, 0x78, 0x1c, 0x17, 0xe2, 0x78, 0xad, 0xdb, 0xd8, 0xc2, 0xc1, - 0x02, 0x6a, 0xdf, 0x66, 0xa9, 0xe1, 0xdb, 0xa8, 0x65, 0x60, 0x28, 0xe9, - 0xdf, 0x59, 0xb2, 0x42, 0x05, 0x51, 0x1a, 0xed, 0x3e, 0x0d, 0xc9, 0x61, - 0x83, 0x1e, 0xd7, 0x0d, 0xf1, 0x7c, 0x1b, 0xfe, 0x56, 0x4a, 0x9f, 0x54, - 0xdf, 0x79, 0xc0, 0x77, 0x7c, 0xc4, 0x95, 0x41, 0x4f, 0x34, 0x01, 0x15, - 0x29, 0xbc, 0xd0, 0xf7, 0x15, 0x33, 0x21, 0xb9, 0x15, 0x1a, 0x5c, 0xfd, - 0x45, 0xdc, 0x7d, 0xfe, 0xe9, 0x5c, 0x99, 0xb3, 0x52, 0x23, 0x0f, 0xd8, - 0xf4, 0xb8, 0xb0, 0x84, 0x39, 0x45, 0x80, 0x28, 0x84, 0xc6, 0xce, 0xb3, - 0xa4, 0xce, 0x27, 0xd7, 0x60, 0x36, 0x64, 0xda, 0x23, 0x96, 0xa1, 0x6d, - 0x43, 0x72, 0x78, 0xb8, 0x7c, 0x4e, 0x5a, 0x8a, 0xa8, 0xab, 0x5b, 0x47, - 0x6e, 0x58, 0x11, 0x1c, 0x26, 0x92, 0x6c, 0xec, 0x97, 0xb1, 0xb6, 0xdf, - 0xfd, 0x12, 0xd8, 0xe2, 0xb7, 0xfe, 0x0f, 0x0e, 0x97, 0x30, 0x4f, 0xd1, - 0xe8, 0x24, 0xdc, 0x1e, 0xb8, 0xf2, 0xd2, 0x6b, 0xd5, 0xd8, 0xa8, 0x33, - 0x6b, 0x19, 0x59, 0x9f, 0xab, 0x83, 0x91, 0x82, 0x7c, 0xf7, 0x5e, 0xee, - 0xf7, 0xc7, 0x9c, 0xab, 0x76, 0x3f, 0x90, 0x07, 0x71, 0x03, 0xc2, 0x15, - 0xc7, 0x67, 0xea, 0xa7, 0x70, 0x9e, 0xaa, 0x46, 0x95, 0x8a, 0x1d, 0x2a, - 0x59, 0x71, 0x04, 0x78, 0xae, 0x5e, 0xb7, 0x06, 0x5c, 0x48, 0xa1, 0x7b, - 0xea, 0xec, 0x3f, 0xf3, 0xe4, 0xbf, 0xc0, 0xfc, 0x05, 0xb5, 0x56, 0x3e, - 0xa3, 0x62, 0x78, 0x46, 0x95, 0xf1, 0xd2, 0x4e, 0x8f, 0x74, 0xf2, 0x1c, - 0x1b, 0x25, 0x9a, 0x2e, 0xfa, 0xb1, 0x5c, 0xfe, 0x7a, 0x16, 0xd0, 0x85, - 0xbc, 0x3a, 0xdc, 0x40, 0x5e, 0x99, 0xb9, 0xcf, 0x51, 0x2c, 0x59, 0x1b, - 0x75, 0x5b, 0x75, 0x71, 0x8f, 0x1a, 0x1f, 0xfa, 0xb0, 0xdd, 0xb1, 0x91, - 0x42, 0x4b, 0xd7, 0xfc, 0xc2, 0xa7, 0x03, 0xd1, 0x98, 0xba, 0x42, 0xb8, - 0x86, 0xc2, 0xa1, 0xa7, 0x2e, 0xb7, 0xa0, 0x36, 0x87, 0xbb, 0x61, 0x8b, - 0x1f, 0xab, 0x64, 0xc6, 0x78, 0xb9, 0xc0, 0x2c, 0x35, 0x27, 0x2e, 0x43, - 0x0b, 0x68, 0x38, 0xb9, 0x6d, 0x7a, 0xfd, 0xed, 0xac, 0x60, 0x19, 0xaf, - 0x13, 0x92, 0x57, 0x19, 0x83, 0xc8, 0xe3, 0x93, 0x30, 0x4f, 0x5d, 0x91, - 0xbb, 0x44, 0x2e, 0x34, 0x35, 0x12, 0xcc, 0x59, 0x51, 0xe6, 0x25, 0x8b, - 0xc2, 0xf2, 0xe0, 0x79, 0x6e, 0x6e, 0x03, 0xa2, 0xba, 0x33, 0x05, 0x01, - 0x20, 0xcc, 0x7d, 0x31, 0x90, 0x76, 0x13, 0x4c, 0x82, 0x7e, 0x3e, 0x0d, - 0x32, 0x69, 0x9d, 0x60, 0x53, 0x1a, 0x8c, 0x87, 0xe8, 0xc4, 0x60, 0xb8, - 0xd6, 0xe6, 0x05, 0x5c, 0x2b, 0x2c, 0x65, 0x17, 0xa0, 0xf7, 0x9a, 0xdb, - 0xae, 0xbb, 0x32, 0x4a, 0x00, 0x16, 0x30, 0xeb, 0x75, 0x8a, 0xd0, 0x31, - 0x0c, 0x52, 0x39, 0x82, 0xed, 0xff, 0xd0, 0xc4, 0x44, 0xf2, 0x00, 0xf9, - 0x5d, 0x01, 0x23, 0x40, 0x56, 0xec, 0x7f, 0xdf, 0x0b, 0x56, 0x16, 0x2e, - 0x1d, 0x86, 0x25, 0xc4, 0x2f, 0xf7, 0x59, 0x48, 0xd9, 0xd0, 0x02, 0xf2, - 0x89, 0xc7, 0xe5, 0xfe, 0x20, 0x69, 0x11, 0xf9, 0xc2, 0x7d, 0xa7, 0x33, - 0xf1, 0xf1, 0xdc, 0x56, 0xeb, 0xd2, 0x87, 0x70, 0x96, 0x78, 0x5d, 0x4b, - 0x02, 0x14, 0x16, 0xbe, 0xdb, 0x66, 0x15, 0x11, 0x8e, 0x8e, 0xe3, 0x9f, - 0xf5, 0x8a, 0xa7, 0x56, 0x99, 0xc9, 0x2e, 0x23, 0x33, 0xef, 0x8c, 0xe5, - 0xf5, 0x07, 0xdb, 0xa9, 0xcf, 0xbe, 0xae, 0x26, 0x00, 0x83, 0x32, 0x60, - 0x2d, 0xcd, 0xed, 0x5a, 0x01, 0x5d, 0x2a, 0x16, 0xe3, 0xd8, 0xe2, 0x0e, - 0x09, 0x43, 0x7a, 0x60, 0xcf, 0x87, 0x14, 0x2a, 0x40, 0x93, 0xcd, 0x73, - 0x4c, 0xce, 0xda, 0x9a, 0xb5, 0x1a, 0xcc, 0x40, 0x8d, 0x16, 0xcf, 0x3b, - 0x4c, 0x51, 0xb4, 0xb2, 0xc3, 0x56, 0xc2, 0xa0, 0x05, 0xf4, 0xa4, 0x43, - 0xe0, 0x69, 0x53, 0x9d, 0x44, 0x80, 0xc6, 0x00, 0x2b, 0xd7, 0xe4, 0x25, - 0x4e, 0x92, 0xf7, 0x4e, 0x00, 0x88, 0x07, 0x95, 0x6e, 0x88, 0x29, 0x63, - 0xfa, 0x15, 0xd6, 0xb7, 0x28, 0xa1, 0xcf, 0x6a, 0x95, 0x17, 0x82, 0x68, - 0x35, 0x8a, 0xcb, 0x1f, 0x96, 0xa9, 0xc3, 0x88, 0x7a, 0xd3, 0x95, 0x3b, - 0x55, 0xab, 0x6c, 0x77, 0xda, 0x43, 0xf2, 0x09, 0x65, 0xe0, 0xb0, 0x1b, - 0x88, 0x38, 0xf3, 0x52, 0x37, 0xe5, 0x46, 0xc1, 0x3b, 0x28, 0x09, 0xe3, - 0x22, 0x32, 0x6f, 0xd2, 0x36, 0x9c, 0xc0, 0xe0, 0xb8, 0x29, 0x99, 0x7a, - 0x69, 0x6b, 0xd9, 0x8e, 0x86, 0xf2, 0x6d, 0xfe, 0xd5, 0xc4, 0x40, 0x12, - 0x21, 0x6c, 0x49, 0x8a, 0xa0, 0xdb, 0x8b, 0xaf, 0xae, 0x9d, 0x0d, 0x5b, - 0x42, 0x86, 0x6f, 0x7f, 0x8e, 0xff, 0xa1, 0x94, 0xba, 0xd6, 0x89, 0x11, - 0x08, 0xbe, 0x27, 0xbf, 0x79, 0x64, 0x67, 0x22, 0x79, 0xed, 0x72, 0x59, - 0x8f, 0xea, 0x7e, 0x59, 0xa7, 0xd8, 0xa7, 0x02, 0x3f, 0x5c, 0xf0, 0x70, - 0x52, 0xcd, 0x2c, 0xb6, 0x9e, 0xda, 0x68, 0x98, 0x93, 0x85, 0x7c, 0x18, - 0xbf, 0xf7, 0x9a, 0x65, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, - 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, - 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, - 0x53, 0x94, 0xd8, 0x1e, 0x3e, 0x09, 0xf3, 0xcd, 0x5e, 0xc8, 0x17, 0xed, - 0x3b, 0xe7, 0x12, 0xbc, 0xeb, 0x09, 0x2d, 0xf8, 0x8e, 0x04, 0x95, 0xae, - 0x62, 0x90, 0x8a, 0x3e, 0x22, 0x0a, 0x6b, 0x1c, 0x10, 0x8e, 0x21, 0x59, - 0x59, 0x75, 0x44, 0x9c, 0x24, 0x40, 0x47, 0x66, 0x77, 0x01, 0x8b, 0x57, - 0x57, 0x14, 0xc3, 0x5e, 0x17, 0x60, 0x28, 0x18, 0x81, 0xd5, 0xff, 0xe0, - 0x81, 0x39, 0xe2, 0x59, 0x7d, 0xb3, 0xbd, 0xca, 0xfd, 0x6b, 0xab, 0x99, - 0xcf, 0x03, 0x7b, 0x4b, 0xfa, 0x3b, 0xaa, 0x77, 0x39, 0xa3, 0x7e, 0x84, - 0x7b, 0x54, 0x95, 0xfb, 0xa2, 0x3e, 0x44, 0xfd, 0xc1, 0x89, 0xce, 0x5e, - 0xd7, 0x11, 0xfb, 0xd3, 0xde, 0x27, 0x6b, 0x42, 0x81, 0xd9, 0x2f, 0xd6, - 0xe4, 0xbd, 0x1f, 0x86, 0x70, 0xbe, 0x0d, 0xb3, 0xed, 0xca, 0x26, 0xe7, - 0x5d, 0xab, 0x74, 0x77, 0x70, 0x39, 0xc0, 0x02, 0x1a, 0x20, 0x11, 0xc0, - 0xa9, 0xe6, 0x91, 0xe6, 0xeb, 0x7c, 0x07, 0x40, 0xf3, 0x52, 0x04, 0x4f, - 0xe6, 0xfa, 0x4a, 0x4a, 0xd6, 0x91, 0xf6, 0xb1, 0x9a, 0xf1, 0x30, 0xa8, - 0x95, 0x84, 0x73, 0x3a, 0x54, 0x91, 0xf3, 0x2d, 0x83, 0x47, 0x06, 0x59, - 0x17, 0x7f, 0x1a, 0x0d, 0xdd, 0xb2, 0xae, 0x10, 0x0b, 0x9b, 0xc6, 0x5d, - 0x85, 0xa2, 0x46, 0xd9, 0xc7, 0x30, 0x33, 0xb6, 0x5e, 0xf5, 0x9a, 0x38, - 0xf5, 0xc1, 0x0f, 0x45, 0x79, 0xa0, 0x5c, 0x3b, 0xdd, 0x7c, 0x7a, 0x66, - 0x21, 0xc4, 0x61, 0x9c, 0x89, 0xe9, 0xeb, 0xda, 0xa0, 0x61, 0x69, 0xf5, - 0x14, 0x12, 0x96, 0x75, 0xa6, 0xdc, 0x9a, 0x64, 0x5a, 0x66, 0xe6, 0xab, - 0x3c, 0x88, 0x80, 0x87, 0x12, 0xf0, 0x60, 0xa1, 0x66, 0xb3, 0x9c, 0x38, - 0x20, 0xae, 0x4a, 0xa3, 0x35, 0x84, 0xcc, 0xcb, 0xea, 0x76, 0x73, 0x9a, - 0x6b, 0x7c, 0x10, 0x21, 0xe5, 0xdd, 0x5e, 0x97, 0x29, 0x6e, 0x44, 0x03, - 0xba, 0x86, 0xba, 0xe7, 0x5d, 0x06, 0x1f, 0x51, 0x2f, 0x41, 0x6b, 0x2a, - 0x20, 0x30, 0xf1, 0x7d, 0xf2, 0x36, 0x55, 0x39, 0xfd, 0x07, 0xac, 0x6d, - 0xda, 0xb5, 0xe1, 0xf5, 0x2d, 0x6a, 0x08, 0x23, 0x96, 0xa0, 0x86, 0xf7, - 0x43, 0xc3, 0x58, 0xdf, 0xab, 0x2b, 0x8a, 0x8e, 0x90, 0xa3, 0xb6, 0x58, - 0x9e, 0xf4, 0xf3, 0x28, 0x33, 0x64, 0x91, 0x1e, 0x36, 0x9c, 0x18, 0x90, - 0xb8, 0x2e, 0x14, 0x9b, 0xdb, 0x9d, 0xe6, 0x15, 0xfd, 0xaa, 0xdf, 0x9b, - 0xe6, 0x1d, 0x73, 0xc4, 0xba, 0x73, 0xcd, 0x3f, 0x06, 0x0d, 0xac, 0x75, - 0x6c, 0x0b, 0xb4, 0x45, 0x87, 0xa5, 0x77, 0xe3, 0x48, 0x54, 0xe9, 0x3a, - 0xc9, 0x89, 0x00, 0xa5, 0x38, 0x4e, 0xdc, 0x08, 0xf1, 0x94, 0xe3, 0x3d, - 0x16, 0x33, 0xd8, 0x5f, 0xf6, 0xee, 0x59, 0xa6, 0xe8, 0xce, 0x1d, 0x1f, - 0x9c, 0xf9, 0xae, 0x08, 0x99, 0x43, 0x86, 0xfb, 0xef, 0xb7, 0x42, 0x8c, - 0xa8, 0x02, 0x14, 0x1d, 0x83, 0x65, 0xc2, 0x69, 0xf5, 0x7f, 0xda, 0xd4, - 0x85, 0x44, 0x42, 0x66, 0x53, 0x29, 0x67, 0x31, 0xd8, 0x6b, 0xc6, 0x0e, - 0x93, 0x1f, 0xa9, 0xf7, 0x1a, 0xea, 0x83, 0x98, 0x91, 0x89, 0x72, 0x0c, - 0x6a, 0x41, 0x9f, 0xd1, 0x6a, 0xb6, 0xbf, 0xa5, 0x5b, 0xab, 0x69, 0x2e, - 0xbc, 0x0d, 0x8c, 0x49, 0xa0, 0x0e, 0x24, 0xcf, 0x70, 0x59, 0xd3, 0x31, - 0xc3, 0x01, 0xce, 0x2a, 0xef, 0x3e, 0x26, 0x06, 0x60, 0x4a, 0x91, 0x33, - 0x14, 0x54, 0xd7, 0xac, 0x7e, 0x0e, 0x9a, 0x02, 0xd0, 0xd4, 0xa2, 0x39, - 0x04, 0x73, 0x46, 0x0a, 0xfa, 0xbc, 0xd4, 0x31, 0x59, 0xd3, 0x56, 0x00, - 0x4d, 0x05, 0x73, 0x1e, 0x77, 0x74, 0x41, 0xaf, 0x92, 0x34, 0xfc, 0x89, - 0x0a, 0x96, 0x7c, 0x2d, 0x5a, 0x6c, 0xf3, 0x01, 0xe3, 0xa3, 0x9e, 0x63, - 0x1b, 0x28, 0xa1, 0x3e, 0xca, 0x50, 0x6e, 0xe7, 0x2d, 0xf6, 0xf0, 0x11, - 0x48, 0xf9, 0xcb, 0x9c, 0x7a, 0x5a, 0x9a, 0x98, 0x16, 0xdf, 0x1e, 0xdf, - 0x8d, 0xb6, 0x4a, 0x0f, 0x71, 0x40, 0xcb, 0x84, 0xe9, 0x0c, 0xd6, 0xb9, - 0x8d, 0xf4, 0x40, 0x37, 0xe7, 0xe3, 0xd3, 0x4d, 0xae, 0x04, 0xd6, 0x6b, - 0xc3, 0xbc, 0xc6, 0x9e, 0xa1, 0x01, 0xb9, 0xa0, 0x46, 0x08, 0xe5, 0x3f, - 0x90, 0x75, 0xb1, 0xe3, 0x28, 0xcc, 0xa4, 0x0c, 0x0e, 0x81, 0xf3, 0x33, - 0xdd, 0xbb, 0x33, 0xe4, 0xaf, 0x9c, 0xd7, 0xea, 0xef, 0x13, 0x1f, 0x2e, - 0x1b, 0x8d, 0x27, 0x1c, 0xde, 0xe7, 0x40, 0x38, 0x26, 0xf3, 0xcf, 0x0b, - 0x76, 0x42, 0x6a, 0xc0, 0x6a, 0x9c, 0xcd, 0xf9, 0xe8, 0x53, 0xe4, 0xac, - 0x97, 0x68, 0x11, 0xaa, 0x21, 0xc6, 0x1e, 0x55, 0xbe, 0xd1, 0x95, 0xeb, - 0xbb, 0x47, 0x36, 0x04, 0xd7, 0x72, 0x61, 0x47, 0x82, 0x97, 0xd9, 0xf7, - 0xbb, 0xd6, 0xce, 0x54, 0x40, 0x8c, 0xab, 0xb0, 0xcd, 0x99, 0xb7, 0x7e, - 0x47, 0xda, 0xb2, 0xea, 0xdd, 0x1d, 0x34, 0x91, 0x74, 0xee, 0x51, 0x54, - 0x8c, 0x82, 0x68, 0x3b, 0xf3, 0x4a, 0x48, 0x9e, 0x6f, 0xc4, 0xb1, 0xca, - 0xde, 0x83, 0xcf, 0x9b, 0xb3, 0xf2, 0x89, 0x5b, 0x72, 0x64, 0x5d, 0x63, - 0xa2, 0xa7, 0xf8, 0x22, 0x49, 0x1c, 0xa3, 0x55, 0x01, 0x00, 0x00, 0xc0, - 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, - 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, - 0x0c, 0x84, 0x44, 0x6a, 0x48, 0x0e, 0x68, 0x3e, 0xe9, 0xe6, 0x73, 0x95, - 0xde, 0x13, 0x2c, 0xb9, 0x56, 0xcc, 0x7e, 0x03, 0x2f, 0xd0, 0x9c, 0x2f, - 0x2e, 0xbd, 0xac, 0xf9, 0x9c, 0xba, 0x3d, 0x34, 0x51, 0x86, 0x19, 0x43, - 0xe6, 0x91, 0x6c, 0xf6, 0x12, 0x45, 0x0f, 0x25, 0x65, 0x26, 0xdd, 0x85, - 0x4a, 0x4f, 0x55, 0xe2, 0xd0, 0x36, 0x65, 0x1b, 0x8e, 0xb5, 0xf9, 0x2d, - 0xf0, 0xee, 0x1b, 0xc3, 0x6d, 0xcc, 0x4a, 0x54, 0xae, 0x7e, 0xfc, 0x48, - 0xd0, 0xae, 0xe2, 0x76, 0x6c, 0x15, 0xaf, 0x13, 0x5c, 0x6f, 0x1c, 0xcc, - 0xfa, 0x6c, 0x1f, 0xe1, 0xcd, 0x08, 0x2b, 0xa1, 0x00, 0x42, 0x7d, 0xa6, - 0x62, 0x7e, 0x22, 0x73, 0xdf, 0xc2, 0x94, 0x7b, 0x31, 0xf7, 0x48, 0x8f, - 0x23, 0xda, 0x65, 0xf9, 0x78, 0xa1, 0x95, 0xc5, 0xfe, 0xfe, 0x40, 0x4c, - 0x0e, 0xa2, 0x32, 0xbd, 0xb4, 0x79, 0x4c, 0x91, 0xde, 0x99, 0xea, 0x09, - 0x32, 0x8c, 0x0a, 0x46, 0x1a, 0xef, 0x96, 0x67, 0xf1, 0x7d, 0x51, 0xef, - 0x80, 0x08, 0x92, 0x02, 0x13, 0xea, 0xc2, 0x83, 0x69, 0xd9, 0x92, 0x0d, - 0x1c, 0xeb, 0x5d, 0x16, 0x1c, 0xad, 0x24, 0x53, 0xe6, 0xc2, 0xc6, 0x55, - 0x97, 0x78, 0xa3, 0x3a, 0x0d, 0xcd, 0xd8, 0xcb, 0x33, 0x5a, 0x1e, 0x17, - 0x21, 0x96, 0x55, 0xec, 0x0b, 0xda, 0x29, 0xbf, 0x84, 0x8b, 0x9d, 0xd9, - 0x4e, 0x36, 0x2e, 0x4b, 0xac, 0x17, 0xf7, 0x7c, 0xc6, 0x2d, 0x85, 0x7c, - 0xfc, 0xbd, 0x4c, 0x5c, 0x23, 0x45, 0x0e, 0x25, 0x8c, 0xf9, 0x17, 0xac, - 0xc0, 0x6e, 0xda, 0x49, 0x71, 0x48, 0x64, 0xb2, 0x90, 0x8c, 0xdf, 0x3e, - 0x50, 0x90, 0xd8, 0xee, 0x08, 0xbd, 0x13, 0x7c, 0xa9, 0x78, 0x0e, 0xda, - 0x8c, 0x3e, 0x31, 0xb9, 0xd6, 0x43, 0x76, 0x44, 0xe6, 0xc2, 0xb6, 0x8c, - 0xe4, 0x5f, 0x63, 0x12, 0x91, 0x35, 0xe9, 0x15, 0x9c, 0xdf, 0x69, 0x49, - 0xd1, 0xdc, 0x96, 0x23, 0xea, 0x8a, 0x2e, 0x91, 0x64, 0xf6, 0xab, 0xfe, - 0xc7, 0x96, 0xc5, 0x29, 0x3b, 0xfc, 0xd0, 0xd0, 0xf7, 0x3b, 0x6f, 0x47, - 0xdd, 0x6b, 0x2d, 0x63, 0x81, 0xd8, 0x33, 0x8a, 0x2b, 0xea, 0x5b, 0x28, - 0x9f, 0xe0, 0xca, 0x33, 0xb4, 0xff, 0x40, 0x34, 0xa1, 0xb2, 0x49, 0xdb, - 0x02, 0x2d, 0xf4, 0x04, 0x38, 0x79, 0x86, 0x76, 0x29, 0x09, 0x9d, 0x68, - 0x2a, 0x40, 0x2a, 0xc5, 0x55, 0x16, 0xd5, 0x36, 0xbd, 0xed, 0x8c, 0xa6, - 0x6c, 0x28, 0xce, 0x0a, 0xb7, 0xb8, 0x3e, 0x36, 0x3e, 0x4d, 0xcb, 0x69, - 0x4a, 0x0c, 0xb5, 0x50, 0x26, 0x9a, 0x9f, 0x39, 0xd6, 0x71, 0x4f, 0x0e, - 0xd4, 0x33, 0x6b, 0x70, 0xbf, 0xe1, 0xdd, 0x9c, 0xe2, 0xfd, 0x49, 0x9b, - 0x96, 0x8d, 0xb6, 0xdd, 0x21, 0x07, 0x86, 0xc5, 0xa2, 0xd7, 0xab, 0xd4, - 0xf5, 0x2e, 0x56, 0x02, 0x4f, 0xa6, 0x71, 0x56, 0x73, 0xa8, 0x9d, 0xa8, - 0xf8, 0x19, 0x45, 0xb4, 0x0a, 0x74, 0x08, 0xc7, 0xc3, 0x16, 0x5f, 0x2b, - 0x1e, 0x49, 0x69, 0x8a, 0x4b, 0x11, 0xd7, 0xcc, 0xe6, 0xb1, 0x62, 0x2d, - 0x3a, 0x97, 0x52, 0xda, 0x9e, 0x94, 0xee, 0x5a, 0x02, 0x84, 0xc5, 0x94, - 0x79, 0x63, 0xda, 0x9a, 0xc4, 0x23, 0xd2, 0xfc, 0x21, 0x69, 0x74, 0xb3, - 0x52, 0x88, 0x12, 0x90, 0xf5, 0x4c, 0x40, 0x70, 0x43, 0xbe, 0x1a, 0x76, - 0x3d, 0xa5, 0x67, 0xbd, 0x3d, 0xb7, 0x6e, 0x73, 0x4b, 0xf5, 0x87, 0x1b, - 0xd2, 0xb3, 0x49, 0xfe, 0x3a, 0x95, 0xc6, 0x0b, 0x39, 0xf9, 0x80, 0xbd, - 0x18, 0xd3, 0x9e, 0x55, 0xd1, 0x82, 0x5f, 0xe7, 0x55, 0x3d, 0xf7, 0x9e, - 0x3a, 0x40, 0x9e, 0xfc, 0x1d, 0x8d, 0x49, 0xe2, 0x53, 0xb1, 0xec, 0x3e, - 0x76, 0x60, 0xf1, 0x18, 0xa4, 0xb3, 0x48, 0x32, 0xf4, 0xc6, 0x3b, 0x18, - 0x67, 0xb9, 0x20, 0xed, 0x5e, 0x5a, 0x14, 0x55, 0x75, 0xe6, 0x14, 0x4d, - 0x5e, 0x2b, 0xe4, 0xc5, 0xde, 0xe4, 0x22, 0xa6, 0xf9, 0x38, 0xfb, 0x92, - 0xec, 0x25, 0x74, 0x67, 0x74, 0xca, 0x0d, 0x0c, 0xc9, 0x12, 0x8f, 0xe1, - 0xb4, 0x6e, 0x7b, 0xec, 0x3a, 0x5d, 0xb1, 0x1c, 0x56, 0x18, 0x25, 0x0d, - 0x05, 0x23, 0x14, 0x1b, 0xec, 0x0e, 0xc1, 0x68, 0xf6, 0x18, 0x84, 0x47, - 0xb4, 0x8d, 0xc6, 0x0a, 0x26, 0x10, 0x72, 0xe3, 0xb1, 0x9f, 0x6f, 0x90, - 0x22, 0xb4, 0x46, 0xe5, 0x78, 0x2b, 0x7f, 0x8d, 0x4d, 0xad, 0x5f, 0xfb, - 0x4f, 0x90, 0x5a, 0xe9, 0x07, 0x30, 0xd8, 0x58, 0x6e, 0x7a, 0x95, 0x68, - 0xc3, 0x3e, 0x04, 0x1a, 0x4b, 0x0a, 0x91, 0x31, 0x58, 0x61, 0x11, 0xf8, - 0x3f, 0x7a, 0x38, 0x84, 0xc0, 0xea, 0x6d, 0xa2, 0x61, 0xa8, 0x47, 0x6d, - 0xf2, 0x56, 0x6d, 0xfa, 0xb6, 0x47, 0xf3, 0x2e, 0x34, 0xdf, 0x7d, 0x60, - 0x23, 0xa8, 0x91, 0x59, 0xcc, 0xf9, 0x4c, 0xf6, 0xb8, 0x23, 0x6d, 0x0f, - 0x1d, 0xb6, 0x44, 0x74, 0xbe, 0x83, 0x97, 0x9e, 0x55, 0x09, 0xdf, 0x03, - 0x77, 0x20, 0x29, 0x49, 0x60, 0x68, 0x39, 0x9c, 0x28, 0x83, 0xf9, 0x9e, - 0x37, 0xd1, 0x3e, 0x84, 0xec, 0x6c, 0x3a, 0xfa, 0x40, 0x03, 0x53, 0x19, - 0x2a, 0x9c, 0xde, 0x48, 0xb7, 0xaa, 0xa9, 0x1c, 0xd9, 0xd6, 0x0d, 0x17, - 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, - 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, - 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xbe, 0x71, 0xf9, 0x21, - 0xfb, 0x9b, 0x31, 0x35, 0xd6, 0x47, 0x2c, 0x87, 0xa8, 0x7e, 0x8a, 0xc1, - 0x1e, 0xba, 0x8b, 0xd5, 0x48, 0x37, 0x92, 0xe8, 0x0c, 0xc2, 0x6d, 0xab, - 0xed, 0xae, 0x49, 0x0f, 0xca, 0x07, 0x9b, 0x77, 0x4f, 0xd2, 0x73, 0xcc, - 0x20, 0x1c, 0x90, 0x8a, 0xfd, 0x88, 0x57, 0xf1, 0x89, 0x22, 0x5b, 0x6d, - 0x53, 0x15, 0x07, 0x45, 0x1f, 0xe8, 0x5d, 0xc2, 0xa3, 0x22, 0x36, 0x6b, - 0x55, 0x1c, 0xed, 0x95, 0xd5, 0xa7, 0x83, 0x8b, 0xbc, 0x91, 0xd7, 0xb0, - 0x59, 0x19, 0xa8, 0x5c, 0x4b, 0x92, 0xca, 0x19, 0x02, 0xad, 0x3f, 0x15, - 0x08, 0xa0, 0xfa, 0xa2, 0xa8, 0xf6, 0x53, 0x43, 0x4b, 0x38, 0x7a, 0x8a, - 0x98, 0xef, 0x30, 0x0a, 0x27, 0x3f, 0x37, 0x5c, 0xf3, 0xb6, 0x77, 0xbd, - 0xca, 0x7e, 0x57, 0x4c, 0x0c, 0x0a, 0x91, 0x27, 0xc3, 0xf3, 0xd0, 0xf0, - 0x72, 0xa9, 0xc2, 0x07, 0x1e, 0x16, 0x77, 0x07, 0x2c, 0x4c, 0x16, 0xc4, - 0x7d, 0x91, 0xe0, 0x60, 0xa2, 0x52, 0x15, 0x9f, 0x33, 0x14, 0x55, 0x79, - 0x24, 0x6c, 0xc0, 0xf4, 0x3d, 0x1f, 0xf6, 0xf8, 0xde, 0x49, 0xd0, 0x49, - 0x93, 0x6e, 0x0f, 0xc6, 0x37, 0x74, 0xdf, 0x23, 0xa7, 0x5e, 0xfd, 0xe8, - 0x20, 0xb8, 0x71, 0xd1, 0xf3, 0x13, 0xa2, 0x08, 0xee, 0xb9, 0x49, 0x7b, - 0x56, 0x0e, 0xf2, 0xe4, 0xd9, 0xf5, 0xcd, 0x3a, 0x6b, 0xe0, 0x99, 0x63, - 0x39, 0x95, 0x1e, 0x14, 0xa9, 0x21, 0xab, 0x6d, 0xff, 0x93, 0x21, 0x12, - 0x18, 0x27, 0x50, 0x9d, 0xb1, 0x18, 0x35, 0xaf, 0x9c, 0x34, 0x0b, 0xf4, - 0x70, 0x53, 0xc5, 0x69, 0x2b, 0x0e, 0x01, 0x61, 0xb2, 0xda, 0x73, 0xf6, - 0xfb, 0xd0, 0x51, 0x7c, 0xa9, 0x1b, 0x9e, 0x06, 0x8b, 0xf1, 0x8b, 0x2b, - 0x36, 0x34, 0x75, 0x3d, 0xce, 0x5d, 0xde, 0x2c, 0xe3, 0xf4, 0x82, 0x5c, - 0x2c, 0x38, 0x4b, 0x76, 0xb9, 0xa0, 0x66, 0x87, 0xf1, 0xde, 0xc1, 0x5f, - 0x25, 0x4c, 0xa1, 0xfe, 0x1f, 0xd9, 0xe5, 0x3f, 0xdc, 0x2a, 0x39, 0xfb, - 0xfe, 0xf4, 0x0b, 0x2a, 0xb1, 0x9c, 0xe0, 0x46, 0xd1, 0xff, 0x6a, 0xb2, - 0x5a, 0x0c, 0x90, 0xa0, 0xb5, 0xcf, 0x2e, 0x6a, 0x27, 0x54, 0x8e, 0x47, - 0xc6, 0x95, 0x0b, 0x4e, 0x0e, 0xef, 0xbe, 0x5a, 0x88, 0x86, 0x50, 0x9a, - 0xd6, 0x3a, 0xa4, 0x32, 0xa7, 0xa0, 0x7a, 0x35, 0x8a, 0x5a, 0x15, 0x4f, - 0xb2, 0xf2, 0x81, 0x68, 0x0b, 0xa8, 0xbe, 0x8b, 0xb3, 0x1e, 0xfd, 0x23, - 0xba, 0x44, 0xe7, 0x20, 0xc2, 0x7d, 0xee, 0x03, 0xfb, 0xf2, 0x49, 0x0d, - 0x39, 0xcd, 0xde, 0x45, 0xce, 0x8e, 0xde, 0xb2, 0x7b, 0xbc, 0xeb, 0xdb, - 0x78, 0x5f, 0xa6, 0x68, 0x8c, 0x1f, 0xaa, 0x87, 0xb4, 0x83, 0x17, 0x4b, - 0x1e, 0x4c, 0x0d, 0x85, 0x51, 0x40, 0x6d, 0x17, 0x11, 0x06, 0x2b, 0x13, - 0xc5, 0xb6, 0xab, 0x4b, 0x95, 0xab, 0x5c, 0xa7, 0x22, 0x00, 0xe5, 0x2a, - 0xc7, 0x54, 0x2d, 0x15, 0x61, 0x47, 0x1e, 0x7f, 0xf7, 0x07, 0xee, 0xef, - 0x1e, 0xea, 0x59, 0x45, 0xf0, 0x2f, 0x1c, 0x10, 0xfc, 0xda, 0x8f, 0x8c, - 0x98, 0xf5, 0x28, 0x7a, 0x71, 0x44, 0xf5, 0xe0, 0x6a, 0xca, 0x64, 0xd5, - 0xcd, 0xba, 0x7d, 0xf9, 0x0e, 0xa9, 0xde, 0xbe, 0x3a, 0x34, 0x4f, 0x60, - 0x01, 0x70, 0x34, 0xad, 0x49, 0x36, 0xf2, 0xff, 0x38, 0xa3, 0xa9, 0xb6, - 0x94, 0xad, 0xb3, 0x1c, 0x5b, 0x0c, 0x87, 0x64, 0x61, 0x9e, 0xca, 0x44, - 0x63, 0xc4, 0x2c, 0xc5, 0x13, 0x63, 0xf1, 0x66, 0x0e, 0xd0, 0x61, 0x7a, - 0x4e, 0x83, 0x88, 0x8f, 0x8e, 0x70, 0x4e, 0x50, 0xe2, 0x28, 0x2f, 0xc9, - 0x21, 0xaf, 0xcf, 0x82, 0x29, 0x9f, 0xb6, 0x27, 0x6f, 0x40, 0x4e, 0x84, - 0xe6, 0xc6, 0x37, 0x71, 0x30, 0xf7, 0x30, 0x75, 0xee, 0x34, 0xe5, 0xaf, - 0x79, 0xe9, 0x9a, 0x8a, 0x05, 0xe3, 0x1c, 0x25, 0x44, 0xdb, 0x3b, 0xb0, - 0xc5, 0x2a, 0x66, 0xdc, 0x87, 0x05, 0x3a, 0x43, 0x50, 0x37, 0x3b, 0x11, - 0xb6, 0xbd, 0x25, 0x35, 0xc0, 0x23, 0xd2, 0x8f, 0x19, 0x16, 0x00, 0xeb, - 0x63, 0xac, 0xa7, 0x76, 0xb5, 0x5e, 0xb5, 0xc2, 0xbb, 0x7f, 0xfc, 0x2b, - 0x40, 0x41, 0x00, 0xee, 0x09, 0x77, 0x37, 0x6d, 0x76, 0xdd, 0x98, 0x10, - 0xa4, 0xdc, 0x5e, 0x65, 0xb0, 0x53, 0x1d, 0x66, 0x37, 0x4e, 0x5a, 0x06, - 0x53, 0x04, 0x62, 0x04, 0xcd, 0xd7, 0xac, 0xc1, 0xf1, 0xcb, 0x78, 0xef, - 0x2d, 0x9e, 0x7a, 0x15, 0x33, 0x0f, 0x0b, 0xbf, 0x0f, 0xf1, 0x77, 0x5b, - 0x24, 0xb0, 0xd7, 0x2c, 0x9e, 0xf5, 0x58, 0x27, 0xb6, 0xbb, 0x20, 0x47, - 0x1e, 0x24, 0xbd, 0xf0, 0x94, 0x8b, 0x2f, 0x29, 0x3f, 0x5f, 0x9e, 0x01, - 0x7c, 0xa7, 0xa1, 0x2f, 0x29, 0x15, 0x97, 0xb2, 0xbb, 0x68, 0x13, 0x97, - 0x8b, 0x5e, 0x91, 0x25, 0xae, 0xa0, 0xd1, 0x39, 0x5c, 0x9b, 0x26, 0xce, - 0x88, 0x4b, 0xe1, 0x5b, 0xc9, 0x9e, 0x52, 0x01, 0x4b, 0x0d, 0x16, 0x7f, - 0xd3, 0x69, 0x72, 0x33, 0x9c, 0x99, 0x33, 0xa9, 0xe8, 0x5b, 0xaf, 0x63, - 0x6d, 0xf5, 0x49, 0xa0, 0x88, 0x5b, 0xde, 0x24, 0x32, 0xcc, 0xbf, 0x11, - 0x82, 0xd9, 0xa0, 0x00, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, - 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, - 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, - 0x9d, 0xa8, 0xd4, 0x5c, 0x7d, 0x6c, 0x0c, 0xa0, 0x90, 0xde, 0x78, 0xf3, - 0x4b, 0xd2, 0x0a, 0xd1, 0xe7, 0x3f, 0x3c, 0x8c, 0x4f, 0x5e, 0xb8, 0xa9, - 0x87, 0x3c, 0x64, 0x92, 0xb6, 0xb0, 0x50, 0x66, 0xdd, 0x78, 0x35, 0x83, - 0x7f, 0x58, 0x11, 0x08, 0x6d, 0x1d, 0xae, 0x79, 0x35, 0x91, 0x9c, 0xda, - 0x9f, 0xe0, 0xd1, 0xf6, 0x6d, 0xc0, 0xc6, 0x66, 0x0b, 0x7c, 0x9c, 0xcc, - 0x18, 0xc1, 0x6a, 0x1d, 0xd1, 0x66, 0xfd, 0x8c, 0xcd, 0xfb, 0xcb, 0x1d, - 0x78, 0x8a, 0xf1, 0x15, 0xff, 0x2d, 0xff, 0xa0, 0xb2, 0x9c, 0x8c, 0xb3, - 0xd2, 0x74, 0xbf, 0xa4, 0x7d, 0xac, 0x01, 0x50, 0xbd, 0x59, 0x1f, 0x00, - 0xaa, 0x8a, 0x10, 0xbf, 0x69, 0x03, 0x6e, 0xb2, 0xb5, 0x2b, 0xda, 0xa1, - 0x62, 0xd7, 0xab, 0x02, 0x1f, 0x5b, 0x18, 0x62, 0x75, 0xf4, 0x67, 0xc3, - 0xa8, 0x2c, 0xeb, 0x92, 0xa3, 0xb9, 0xbf, 0x40, 0xf3, 0x6e, 0x85, 0xab, - 0xce, 0xb6, 0xca, 0x55, 0x65, 0x97, 0x53, 0x46, 0xea, 0xea, 0xca, 0x42, - 0x94, 0x18, 0xbd, 0xf2, 0xb9, 0xaf, 0x37, 0xb4, 0xce, 0x69, 0xb8, 0xb9, - 0xfc, 0xda, 0x4e, 0x0b, 0xee, 0xfb, 0x55, 0x39, 0x97, 0x4f, 0x02, 0x27, - 0x64, 0x1c, 0x1d, 0xa9, 0x0a, 0xf7, 0x35, 0xcd, 0xd0, 0xa6, 0x10, 0x57, - 0xac, 0xcb, 0x76, 0xbd, 0x3f, 0x64, 0xc5, 0x12, 0x83, 0xe4, 0xb3, 0x11, - 0x4f, 0xe2, 0x43, 0xe4, 0x04, 0xbd, 0x3d, 0x79, 0x62, 0x3d, 0x9c, 0x2c, - 0x6f, 0x53, 0x7d, 0x4e, 0x97, 0x0b, 0x95, 0x47, 0x9d, 0x89, 0x3f, 0x0c, - 0xa8, 0x26, 0x3a, 0xe8, 0x98, 0x93, 0x5b, 0x21, 0x6c, 0x57, 0x38, 0xcc, - 0x95, 0x26, 0xe7, 0x07, 0x28, 0x53, 0xba, 0x37, 0x09, 0x8b, 0xe7, 0x6c, - 0x95, 0xda, 0xa9, 0xd0, 0x1f, 0x53, 0xe2, 0x38, 0x57, 0x71, 0x64, 0xc5, - 0x8c, 0xee, 0x2c, 0x05, 0x57, 0xf7, 0x3c, 0x82, 0x7b, 0x28, 0x22, 0x90, - 0xe8, 0x6c, 0x47, 0x44, 0xc6, 0xad, 0x7f, 0x54, 0x70, 0x1a, 0x23, 0xaf, - 0x88, 0xc2, 0xc3, 0x3b, 0xa8, 0xad, 0x5a, 0x1a, 0xf2, 0x56, 0xb7, 0x20, - 0xd3, 0xb2, 0x13, 0x8a, 0xcd, 0x41, 0xb2, 0xfa, 0xc4, 0x5e, 0x93, 0x25, - 0x85, 0x05, 0x53, 0x40, 0x24, 0xce, 0xfb, 0xa3, 0x3c, 0x0d, 0xe8, 0x71, - 0xb7, 0x67, 0x99, 0x2d, 0xd0, 0x09, 0x87, 0x01, 0xff, 0x5b, 0x37, 0x1b, - 0x98, 0xe7, 0x17, 0xbd, 0x95, 0x3d, 0xd2, 0x35, 0x2c, 0x61, 0xfd, 0xad, - 0xf0, 0xc7, 0xcf, 0x6a, 0x74, 0xd2, 0x51, 0xb3, 0x13, 0xec, 0x45, 0xf3, - 0x2f, 0x55, 0xd7, 0x13, 0xbf, 0x6f, 0x28, 0x2f, 0x7e, 0x24, 0xbd, 0x25, - 0x01, 0x5d, 0x69, 0xe9, 0x0f, 0x59, 0xd0, 0x35, 0xd1, 0x47, 0xf0, 0xc5, - 0xb5, 0x12, 0x14, 0x65, 0x86, 0x81, 0xc4, 0xee, 0xab, 0x9e, 0xed, 0x53, - 0xd4, 0x88, 0x2e, 0x31, 0xa3, 0x86, 0xe3, 0x5c, 0x8d, 0x7c, 0x59, 0x02, - 0x3c, 0x0a, 0xbf, 0xe8, 0xc8, 0x8c, 0xbd, 0x93, 0x38, 0xfc, 0x90, 0x40, - 0xd7, 0x27, 0x54, 0x64, 0xb6, 0x26, 0x4d, 0x0a, 0x64, 0x56, 0x8c, 0xe5, - 0xf5, 0x1a, 0x9a, 0xa3, 0x05, 0xaa, 0xcf, 0x05, 0xd6, 0x20, 0xe7, 0x76, - 0x8b, 0x2d, 0xc9, 0x40, 0xa1, 0xa9, 0xe2, 0xec, 0x51, 0x98, 0x01, 0xfe, - 0x20, 0x7e, 0xb9, 0x44, 0x31, 0xd7, 0x2e, 0xe2, 0xd0, 0x41, 0x18, 0x23, - 0x9e, 0xfa, 0xe6, 0x76, 0x5b, 0xeb, 0x92, 0x5b, 0xfa, 0x2a, 0x61, 0x14, - 0xf0, 0xed, 0xb6, 0x94, 0x9b, 0xa0, 0xfe, 0xc6, 0x32, 0x8e, 0x81, 0x07, - 0x08, 0x7d, 0x24, 0x89, 0x10, 0xc0, 0x3c, 0x74, 0xca, 0x55, 0xa6, 0x8a, - 0x16, 0x64, 0x40, 0xcd, 0xd0, 0xb6, 0x39, 0x45, 0x63, 0xa6, 0x6c, 0x09, - 0x39, 0x0f, 0x75, 0x40, 0x24, 0x48, 0xc8, 0x45, 0x8c, 0x89, 0x00, 0x4a, - 0xe2, 0xe8, 0xee, 0x5f, 0xea, 0xd0, 0x05, 0x16, 0x79, 0x7e, 0x2b, 0x0b, - 0x9b, 0x98, 0x4e, 0xd2, 0x6a, 0xdf, 0x51, 0x9a, 0x4b, 0x02, 0x89, 0x00, - 0x7b, 0x01, 0xf7, 0x53, 0x33, 0x38, 0x3f, 0x51, 0x4d, 0x22, 0xb7, 0x51, - 0xe4, 0xf8, 0x8d, 0xa3, 0xe6, 0xc8, 0xaf, 0xf1, 0x5b, 0xd1, 0xca, 0x24, - 0xbb, 0xe8, 0x27, 0x25, 0xbc, 0x48, 0x7b, 0xb6, 0x22, 0x2b, 0x14, 0x69, - 0x69, 0x79, 0xa1, 0x12, 0x5e, 0xad, 0x5f, 0x49, 0x7b, 0x1f, 0xf1, 0x3f, - 0x4f, 0xa2, 0x31, 0x3d, 0xf9, 0xa2, 0x3c, 0x69, 0x1d, 0xa4, 0xbc, 0x6a, - 0xf8, 0x09, 0x64, 0xc0, 0x2d, 0xcf, 0x60, 0x68, 0x7d, 0x36, 0xba, 0x38, - 0x35, 0x8f, 0xf1, 0x73, 0x05, 0x50, 0xce, 0x22, 0x51, 0xc0, 0x18, 0x54, - 0xc9, 0x8a, 0x4c, 0x9f, 0x7e, 0xf6, 0x97, 0x5f, 0x84, 0xbd, 0x87, 0xab, - 0xc2, 0xdf, 0x46, 0x30, 0xc0, 0x1d, 0xed, 0x4f, 0x8b, 0xec, 0x48, 0x18, - 0x7b, 0xef, 0x4d, 0x86, 0x42, 0x68, 0x76, 0xb4, 0xb4, 0x1a, 0xcb, 0x1f, - 0x88, 0xc1, 0x53, 0x4e, 0x5b, 0x8f, 0x43, 0x39, 0x09, 0x26, 0x04, 0x4f, - 0xd7, 0x9d, 0x87, 0xfd, 0x8a, 0xde, 0x93, 0xa6, 0xf8, 0x20, 0x85, 0x5d, - 0x28, 0x89, 0xd8, 0x52, 0xe8, 0xdb, 0x30, 0x40, 0x39, 0x06, 0xde, 0xd7, - 0x55, 0x41, 0xc9, 0x3f, 0x00, 0xbf, 0x8a, 0x66, 0x01, 0x00, 0x00, 0xc0, - 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, - 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, - 0x0c, 0x84, 0x44, 0x6a, 0x4d, 0xaa, 0xba, 0x41, 0x13, 0xef, 0xa7, 0x94, - 0xb8, 0x05, 0x4c, 0xac, 0xef, 0x30, 0x2e, 0x2b, 0x89, 0x10, 0xb4, 0xb0, - 0x1f, 0xaf, 0x2b, 0x7a, 0xde, 0xdd, 0x4d, 0x13, 0xc9, 0xed, 0xc9, 0x70, - 0x5a, 0x15, 0xf6, 0xae, 0x88, 0xd0, 0x9d, 0xe1, 0xb8, 0x17, 0xa4, 0x06, - 0xe8, 0x6c, 0x54, 0xea, 0xaf, 0x96, 0x33, 0x6d, 0x1a, 0x71, 0x1e, 0x4d, - 0x55, 0x41, 0x68, 0xaf, 0xcf, 0xa6, 0x61, 0x2c, 0x36, 0xe0, 0x87, 0xd0, - 0x8e, 0x6d, 0xa3, 0xd6, 0xfd, 0xd8, 0xca, 0x04, 0x8a, 0xf7, 0xbe, 0x12, - 0x8a, 0x9e, 0x5b, 0x82, 0xe3, 0x4e, 0xe5, 0xff, 0x64, 0xa6, 0xac, 0xa1, - 0x85, 0x63, 0x2a, 0x4e, 0x7d, 0x1d, 0xf3, 0x37, 0x9c, 0xd1, 0x07, 0x48, - 0xe7, 0xa0, 0xb6, 0x41, 0x24, 0xab, 0x54, 0x50, 0x8d, 0xcf, 0xdd, 0xdc, - 0x7a, 0xb0, 0xd5, 0x26, 0x48, 0xb5, 0xc2, 0x32, 0x59, 0x4a, 0xac, 0x4a, - 0xbc, 0x5e, 0xe4, 0xf7, 0x9d, 0x58, 0x70, 0x69, 0x06, 0xa0, 0x85, 0xbf, - 0x89, 0x56, 0xed, 0xd5, 0x36, 0x7f, 0x05, 0xba, 0x10, 0x70, 0xfa, 0xa6, - 0xcd, 0x9c, 0x91, 0x7f, 0x2a, 0xaf, 0xce, 0x0a, 0x82, 0xb4, 0x2f, 0x59, - 0xc0, 0x93, 0x4f, 0xb1, 0xe0, 0xce, 0x10, 0x03, 0x83, 0x9e, 0x6a, 0x3f, - 0xaf, 0xa7, 0x79, 0x5d, 0x86, 0xf6, 0x87, 0x49, 0x0d, 0x93, 0x51, 0x3a, - 0xcb, 0x34, 0xc7, 0x71, 0xdd, 0xab, 0x3c, 0x23, 0x2a, 0x0f, 0xbb, 0xc0, - 0x5b, 0x33, 0x78, 0x07, 0xbe, 0x20, 0x8d, 0x05, 0x0f, 0xcf, 0xa1, 0xa7, - 0x01, 0x71, 0xa0, 0xca, 0xb9, 0x06, 0x4a, 0x2e, 0x71, 0xf4, 0x08, 0x69, - 0x38, 0xfd, 0xc5, 0x1d, 0x6b, 0x67, 0x86, 0x11, 0x9f, 0x17, 0x4b, 0xcf, - 0xab, 0x69, 0xb2, 0xdf, 0x31, 0xcb, 0xfd, 0xdd, 0xe5, 0x30, 0xe1, 0x90, - 0xa4, 0x25, 0x73, 0xdc, 0x29, 0x15, 0x77, 0x6e, 0x46, 0x7a, 0x82, 0xc1, - 0x11, 0xbb, 0xc7, 0x90, 0xa3, 0xff, 0x81, 0xbe, 0x46, 0x63, 0x3d, 0xe5, - 0xc3, 0xda, 0x22, 0x1d, 0x6d, 0x5a, 0xcf, 0xa1, 0x9f, 0xd3, 0x5d, 0x85, - 0x42, 0x9f, 0xf5, 0x6f, 0x94, 0x1d, 0x3c, 0x36, 0x7f, 0xad, 0xb2, 0x6b, - 0x76, 0xa1, 0x16, 0x69, 0x69, 0x85, 0x4c, 0xc3, 0x02, 0x94, 0x5d, 0xe9, - 0x7e, 0x34, 0x02, 0x6d, 0x5f, 0x29, 0x4f, 0x15, 0x5c, 0x63, 0x0c, 0x51, - 0x58, 0x41, 0x5c, 0xf5, 0xb0, 0xcf, 0x4b, 0xd7, 0xc6, 0xa4, 0x23, 0x24, - 0xba, 0xb6, 0xa3, 0x23, 0x8e, 0x97, 0xec, 0x2f, 0x23, 0x61, 0x66, 0xa5, - 0x97, 0x1d, 0x66, 0xcb, 0xc2, 0x69, 0xb2, 0x4d, 0xf1, 0x2c, 0x2a, 0x1c, - 0x27, 0x0d, 0x01, 0x49, 0x94, 0x62, 0xb9, 0x4f, 0xc8, 0x2e, 0x3b, 0xf4, - 0x76, 0x18, 0x17, 0xaf, 0x2c, 0x53, 0x97, 0x38, 0x22, 0x51, 0x38, 0xd1, - 0xa3, 0x08, 0x27, 0x48, 0x3d, 0xcd, 0x57, 0xf6, 0x2a, 0x2e, 0x9c, 0x7e, - 0x55, 0x80, 0x7b, 0x27, 0x10, 0x9f, 0x63, 0x00, 0x3e, 0x04, 0x3a, 0xca, - 0xe8, 0x1f, 0x5a, 0xc2, 0x90, 0x5a, 0xe5, 0xa3, 0x0b, 0x2c, 0x4d, 0x67, - 0x78, 0xf6, 0xa8, 0xc2, 0x5a, 0x5a, 0x9d, 0x58, 0xab, 0xb2, 0xde, 0x25, - 0x14, 0x16, 0xf8, 0x99, 0xf7, 0x29, 0xdd, 0x97, 0x4a, 0x6b, 0xe0, 0x3b, - 0x78, 0xc7, 0xfc, 0xb6, 0xdf, 0x3f, 0x3a, 0x37, 0x76, 0xf3, 0xcd, 0xeb, - 0xd8, 0xee, 0x11, 0x20, 0xbb, 0xb5, 0x3c, 0x1c, 0x3e, 0x24, 0x40, 0xea, - 0x26, 0x8a, 0x6c, 0x6f, 0xd6, 0xe5, 0xf9, 0xa0, 0xe0, 0x6a, 0x72, 0xbc, - 0xa8, 0xbe, 0xd9, 0x6b, 0x38, 0xac, 0xee, 0x65, 0xe1, 0x22, 0xd2, 0x08, - 0xff, 0x42, 0x5b, 0xe3, 0xeb, 0x5c, 0xf1, 0xc7, 0x41, 0x5b, 0x9b, 0x79, - 0x58, 0xdc, 0x70, 0xb0, 0x45, 0xc0, 0x3c, 0xa1, 0x23, 0x51, 0xcb, 0x37, - 0xd2, 0x1f, 0x86, 0xa9, 0xc8, 0x3b, 0xcf, 0xc7, 0xd0, 0xaa, 0x5b, 0x3a, - 0xae, 0xad, 0x07, 0x60, 0xa3, 0xf6, 0x0f, 0xa7, 0x00, 0x1a, 0x28, 0x43, - 0xe9, 0x0c, 0xe0, 0x1d, 0x40, 0x5c, 0x42, 0x57, 0x25, 0x7e, 0xb0, 0x5b, - 0xd7, 0x13, 0x06, 0x6e, 0xdd, 0x17, 0x22, 0xca, 0x10, 0x10, 0x6b, 0x0e, - 0xb8, 0x9c, 0x29, 0xf8, 0x95, 0x38, 0x88, 0xf4, 0x5e, 0x4d, 0xbb, 0x78, - 0xe2, 0x4e, 0xde, 0x4d, 0x33, 0x6c, 0x3e, 0xbf, 0xb0, 0xa9, 0x6e, 0x40, - 0xf5, 0xed, 0x93, 0x1f, 0x01, 0x9b, 0xe8, 0xf1, 0xea, 0x26, 0x5d, 0x76, - 0xf3, 0x7c, 0xcd, 0x9d, 0x63, 0x17, 0x16, 0x1b, 0xb9, 0x3b, 0xdb, 0x38, - 0xe7, 0x2b, 0xce, 0xea, 0xb0, 0x2e, 0xcd, 0x39, 0x87, 0x21, 0xa6, 0x00, - 0xe6, 0x56, 0xb3, 0xb4, 0x47, 0x80, 0xb7, 0x72, 0xd6, 0xa3, 0x03, 0x90, - 0x46, 0x43, 0x9d, 0x8d, 0xaa, 0x71, 0x42, 0x63, 0x89, 0xa4, 0x2d, 0xd6, - 0x67, 0xfb, 0x00, 0xaa, 0x1f, 0x9f, 0x9b, 0x8a, 0xbe, 0x76, 0x6a, 0x8d, - 0xdc, 0xc6, 0xe7, 0x6c, 0xcf, 0x23, 0xce, 0x99, 0xa4, 0xfd, 0x9a, 0x18, - 0xcf, 0xaf, 0x52, 0x0c, 0x3f, 0x19, 0x64, 0x0c, 0xfe, 0xdd, 0x61, 0xec, - 0xfa, 0xbf, 0x20, 0x5f, 0x64, 0x59, 0xc9, 0x4f, 0x9d, 0xfd, 0x16, 0x19, - 0xaf, 0x7d, 0x68, 0xa0, 0xec, 0x64, 0x2f, 0x73, 0xa2, 0x22, 0xb2, 0x09, - 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, - 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, - 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xd8, 0x0d, 0x7a, 0xc1, - 0xaa, 0xb6, 0xdb, 0xd9, 0x27, 0x08, 0x69, 0x3e, 0x42, 0x3e, 0xe7, 0x3d, - 0xad, 0x56, 0x85, 0x78, 0x04, 0x88, 0x6c, 0xfe, 0x7a, 0x82, 0xa4, 0x17, - 0xdb, 0x5b, 0xf1, 0x3e, 0x61, 0x9b, 0x6d, 0xbe, 0x5b, 0x4b, 0xa5, 0xbd, - 0x53, 0x2c, 0x89, 0x5b, 0x69, 0xf1, 0x0a, 0xaf, 0x9f, 0x0a, 0xaa, 0xab, - 0xd8, 0x13, 0x68, 0x4b, 0xdb, 0x98, 0x51, 0x70, 0x87, 0x0a, 0x4f, 0x4b, - 0x22, 0xa5, 0x9e, 0xad, 0xf8, 0x7f, 0xa8, 0x89, 0xa0, 0xd4, 0x9c, 0x80, - 0xd0, 0xaf, 0x1f, 0x96, 0x77, 0x75, 0xee, 0xae, 0x62, 0x55, 0x0f, 0x52, - 0x04, 0x04, 0x95, 0x1a, 0xb8, 0xf9, 0x0c, 0x4e, 0x40, 0xfd, 0x11, 0x05, - 0x0d, 0xee, 0xbd, 0x68, 0x18, 0xe2, 0x59, 0xe3, 0x4b, 0xec, 0x23, 0x0c, - 0x03, 0xe3, 0x48, 0x85, 0x09, 0x90, 0x18, 0x4e, 0xc0, 0xd2, 0xa2, 0x51, - 0x18, 0x95, 0x04, 0x1a, 0x93, 0x88, 0xd2, 0x05, 0x95, 0xe0, 0x82, 0xaf, - 0xd4, 0x0d, 0xa4, 0x67, 0xc0, 0xb5, 0x8c, 0x79, 0x97, 0xf6, 0x30, 0xef, - 0xf6, 0xf2, 0x43, 0x56, 0x05, 0xfa, 0x57, 0xc5, 0x9f, 0x36, 0x8e, 0x66, - 0x27, 0x4c, 0xf0, 0xaa, 0x22, 0xc1, 0x7d, 0xad, 0x2a, 0xcc, 0xc4, 0x8a, - 0x93, 0x87, 0x08, 0xe9, 0xdd, 0x31, 0xe9, 0x5a, 0xfd, 0xb1, 0xff, 0xd7, - 0x43, 0x05, 0x90, 0xb9, 0xb1, 0x7d, 0xd1, 0x67, 0x0f, 0xbe, 0x98, 0x0d, - 0x66, 0x05, 0x95, 0x07, 0xc0, 0xbf, 0x84, 0x10, 0x77, 0x34, 0x3d, 0xe2, - 0x35, 0x55, 0x2a, 0xc1, 0xa2, 0x3c, 0x36, 0x5e, 0x48, 0x7f, 0x27, 0x55, - 0x9a, 0xd5, 0xb5, 0x22, 0x7a, 0x0c, 0x74, 0x4f, 0x6b, 0xae, 0xca, 0xea, - 0x21, 0x32, 0x29, 0x24, 0x90, 0xcb, 0x9e, 0xe7, 0xb6, 0xf1, 0xe3, 0x88, - 0x36, 0x84, 0xba, 0xed, 0x42, 0x02, 0xe0, 0x4f, 0xe7, 0xc5, 0xb4, 0x1a, - 0xdb, 0x2a, 0x6f, 0x51, 0x37, 0xdf, 0x89, 0x57, 0xaf, 0xe5, 0x90, 0xfe, - 0x9e, 0xb7, 0x1c, 0x58, 0x46, 0x42, 0x53, 0xb3, 0xb0, 0x1e, 0x8a, 0x52, - 0x91, 0xf5, 0x89, 0x5b, 0xeb, 0x14, 0xd6, 0x38, 0xc3, 0xe7, 0x7b, 0x69, - 0x14, 0x03, 0x0c, 0x10, 0x43, 0xf7, 0xa3, 0xc2, 0x04, 0x3a, 0x3e, 0xe3, - 0x6a, 0x8e, 0x76, 0x01, 0x3a, 0x10, 0xe8, 0x0c, 0x18, 0x04, 0x14, 0x75, - 0x90, 0x12, 0x72, 0x12, 0x0a, 0x92, 0x32, 0x76, 0x6e, 0xc2, 0xfe, 0x76, - 0x43, 0xfa, 0x59, 0x97, 0xe7, 0x64, 0x55, 0x23, 0x23, 0x60, 0x79, 0xfb, - 0xe9, 0x96, 0x81, 0xa1, 0xfa, 0xb8, 0x72, 0x04, 0x84, 0xd6, 0x1e, 0x34, - 0x09, 0x28, 0x61, 0x03, 0x96, 0xfc, 0xfa, 0x92, 0xef, 0xa8, 0xcc, 0x15, - 0xee, 0x2e, 0x36, 0x17, 0x60, 0x3f, 0xfc, 0xfb, 0x18, 0xb8, 0xbb, 0x54, - 0x87, 0xe9, 0x49, 0x9c, 0xa7, 0x64, 0xe9, 0x02, 0x1d, 0x22, 0x52, 0xa0, - 0xca, 0x41, 0xf3, 0x13, 0x2d, 0xd4, 0x7b, 0x18, 0xff, 0x0e, 0x17, 0x5c, - 0xeb, 0xf4, 0x18, 0x64, 0x5e, 0xe8, 0xe4, 0x14, 0xa0, 0x44, 0x12, 0x9b, - 0x3a, 0x8d, 0x58, 0x23, 0x1b, 0xa4, 0x81, 0x09, 0x09, 0x3a, 0x83, 0x10, - 0xc3, 0x8e, 0xcf, 0x21, 0xc8, 0x2b, 0x21, 0xab, 0x17, 0x6a, 0x97, 0x52, - 0x46, 0xe7, 0xc7, 0xd6, 0xee, 0xfd, 0xd3, 0x7c, 0x74, 0x79, 0xe0, 0x08, - 0x98, 0x0e, 0xb1, 0x5e, 0x8c, 0x2c, 0x2c, 0x37, 0x30, 0x52, 0x97, 0xb1, - 0x8a, 0xef, 0xe1, 0x1d, 0xbc, 0xc2, 0xa8, 0x12, 0xb2, 0xc6, 0xd9, 0xf9, - 0xdd, 0x48, 0xf2, 0x37, 0xd5, 0x7f, 0x77, 0x4e, 0xd5, 0x8d, 0x8a, 0x91, - 0x4b, 0x45, 0xac, 0x2f, 0xd2, 0xc9, 0xe5, 0xe0, 0xf8, 0x5b, 0xe3, 0xa2, - 0x74, 0x77, 0xaa, 0xaf, 0x97, 0x76, 0xb8, 0x30, 0x06, 0x37, 0x53, 0xf0, - 0x7b, 0x18, 0x34, 0x12, 0x7f, 0xeb, 0x33, 0x4a, 0x8a, 0x1b, 0x0c, 0x8a, - 0xd2, 0x18, 0xe9, 0x73, 0xbe, 0x4c, 0xa6, 0x51, 0x76, 0x10, 0xfe, 0xef, - 0x22, 0x85, 0x6f, 0x8e, 0x89, 0x14, 0x65, 0x4f, 0x8c, 0x83, 0xba, 0x66, - 0x7d, 0x89, 0x1f, 0xe7, 0xcf, 0x43, 0x11, 0x3b, 0x6f, 0xda, 0x23, 0x5f, - 0xd6, 0x6b, 0xd3, 0x91, 0xf9, 0x76, 0x33, 0xfd, 0x93, 0xbf, 0x77, 0xbb, - 0x76, 0x75, 0x13, 0xb7, 0x98, 0xc0, 0x7e, 0x3a, 0x2d, 0x8f, 0xe3, 0xbe, - 0xd8, 0x7b, 0xbe, 0x7b, 0x7f, 0x61, 0xec, 0xdb, 0xb9, 0xf8, 0x07, 0x77, - 0x68, 0xae, 0xbe, 0x13, 0xc2, 0xc6, 0x63, 0x73, 0xc6, 0xa3, 0xe5, 0xe5, - 0x96, 0x18, 0x8f, 0x49, 0xbc, 0xdb, 0xca, 0x88, 0x48, 0x91, 0x4f, 0x30, - 0x0c, 0x9f, 0x7c, 0xe5, 0xe9, 0x79, 0xde, 0x02, 0xe4, 0xdc, 0x80, 0xb0, - 0x3a, 0x40, 0x7a, 0x52, 0xb4, 0xf0, 0x5c, 0x24, 0x85, 0x65, 0xfb, 0x12, - 0x81, 0x46, 0xea, 0x6a, 0xfa, 0xbb, 0xb5, 0xad, 0x1e, 0x78, 0x9b, 0xa5, - 0x56, 0x1e, 0x3e, 0x1b, 0x41, 0xfd, 0x68, 0x31, 0x93, 0xad, 0xa2, 0x5c, - 0x66, 0x3f, 0x8d, 0x48, 0x4b, 0xeb, 0x47, 0x72, 0xc4, 0xb5, 0x05, 0xcb, - 0x2c, 0xdb, 0x4a, 0x92, 0xf8, 0x31, 0x73, 0x04, 0xdf, 0x04, 0xb1, 0x44, - 0x29, 0xa5, 0x44, 0xab, 0x4e, 0x19, 0x5a, 0x7d, 0xf7, 0x97, 0xc2, 0x80, - 0x5b, 0x47, 0xea, 0x6c, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, - 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, - 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, - 0xa2, 0xa4, 0x8d, 0x48, 0x6a, 0x20, 0x65, 0x3a, 0xcf, 0x4c, 0xa0, 0xe4, - 0x8a, 0x0a, 0x6a, 0xad, 0xae, 0xfc, 0x20, 0xd8, 0x39, 0x27, 0x6e, 0xb2, - 0xbd, 0xbc, 0xaf, 0xfa, 0xbc, 0xb5, 0x38, 0x42, 0x94, 0x30, 0xcc, 0xb9, - 0xd5, 0x22, 0xed, 0x88, 0xc0, 0x0f, 0xc7, 0x80, 0xf6, 0xaa, 0xcf, 0x4e, - 0xb5, 0x21, 0xc3, 0x19, 0x00, 0x80, 0x1f, 0x2b, 0xfb, 0xa7, 0xfe, 0x54, - 0x32, 0x46, 0x72, 0x20, 0x9b, 0x90, 0xb6, 0xd0, 0x2a, 0x5b, 0x55, 0x36, - 0xff, 0x5d, 0x6c, 0x76, 0x0d, 0xbc, 0x15, 0x41, 0x2b, 0x92, 0x34, 0xcd, - 0x57, 0x0a, 0xf5, 0x12, 0x19, 0x6f, 0xeb, 0xda, 0x42, 0x79, 0xba, 0x52, - 0x29, 0x0b, 0xb1, 0x1c, 0xd9, 0xe3, 0x55, 0xe2, 0xd2, 0xcc, 0xc4, 0x4a, - 0xfa, 0x81, 0x22, 0x60, 0x7c, 0x5e, 0xac, 0x4e, 0xe5, 0x1b, 0xf6, 0xef, - 0xd9, 0xe5, 0x00, 0xa1, 0x49, 0x69, 0xf0, 0x70, 0xb5, 0x20, 0x7d, 0x2e, - 0x1a, 0xec, 0xd6, 0x0f, 0xc6, 0x6a, 0x6c, 0x37, 0xbe, 0x72, 0x00, 0x0a, - 0x8b, 0x77, 0xa0, 0x5e, 0x51, 0x59, 0xe3, 0x14, 0xbc, 0x0a, 0x0f, 0x09, - 0x24, 0xc0, 0x89, 0x19, 0x40, 0xfe, 0x0d, 0x44, 0xac, 0x50, 0x14, 0xbc, - 0x1f, 0x91, 0xb9, 0x86, 0x78, 0x6b, 0x2b, 0x8f, 0x85, 0x39, 0x0e, 0xb5, - 0x9c, 0x1e, 0xf9, 0x7a, 0x0b, 0xcf, 0xc6, 0x66, 0x64, 0x1b, 0x8b, 0x33, - 0x81, 0xb1, 0x2e, 0xc3, 0x53, 0x5c, 0x34, 0xa2, 0x83, 0x87, 0x88, 0xa5, - 0xfd, 0x9f, 0x32, 0x91, 0xaa, 0xe6, 0x4b, 0x63, 0x81, 0x66, 0x0d, 0xab, - 0x2c, 0xbb, 0x13, 0x13, 0xd9, 0xf8, 0xd1, 0x5a, 0x17, 0x41, 0x6f, 0x83, - 0xec, 0x0f, 0xf4, 0x00, 0xc7, 0x6d, 0x35, 0x45, 0xda, 0xca, 0x1d, 0x7a, - 0x46, 0x0c, 0x79, 0x9e, 0xc9, 0x95, 0x53, 0x5d, 0x1b, 0x84, 0x9e, 0xf7, - 0x6e, 0x96, 0x13, 0x5b, 0xa8, 0xc2, 0x04, 0xf8, 0xf4, 0x5a, 0xfd, 0xf8, - 0x48, 0xdb, 0xc3, 0x02, 0x15, 0xf2, 0x23, 0xcb, 0x2b, 0xe4, 0x6f, 0x51, - 0x0f, 0xb8, 0xfb, 0x0e, 0xf7, 0x5f, 0x9f, 0x77, 0xf4, 0x9c, 0x79, 0x46, - 0x15, 0xe6, 0x1b, 0x55, 0x0f, 0x06, 0xc7, 0x58, 0x16, 0x59, 0x43, 0xd1, - 0x0b, 0xa2, 0xf8, 0x4e, 0xe9, 0x52, 0xe4, 0xb7, 0x91, 0xb0, 0xc7, 0x7b, - 0xb5, 0xdb, 0xd9, 0xc3, 0x29, 0xaf, 0xf4, 0x25, 0xb7, 0xdc, 0xf8, 0xfc, - 0xf9, 0x49, 0xf6, 0xec, 0x9f, 0x62, 0x02, 0x2e, 0x36, 0x6d, 0x10, 0xbe, - 0x5e, 0xf8, 0xb2, 0x68, 0x2f, 0xfb, 0x01, 0x8c, 0xe4, 0x0d, 0x2e, 0x5c, - 0x94, 0x2d, 0xe0, 0x13, 0x67, 0x19, 0x21, 0x90, 0xa1, 0xb4, 0xa6, 0x05, - 0x75, 0x2d, 0xcc, 0x4f, 0xf4, 0x9f, 0x39, 0xfb, 0xfc, 0x61, 0x99, 0x8a, - 0x6f, 0xf2, 0xf9, 0xef, 0x54, 0xdc, 0xe5, 0x7a, 0xe9, 0xeb, 0xaa, 0x5d, - 0xa5, 0x50, 0x23, 0xb3, 0xbc, 0x23, 0x9d, 0x1a, 0x32, 0xd1, 0xca, 0x96, - 0x33, 0xb6, 0xf3, 0x27, 0xfa, 0xb2, 0x7a, 0x07, 0x89, 0x94, 0xe9, 0x32, - 0xdd, 0x2e, 0xfe, 0xb5, 0x8c, 0xd9, 0x84, 0x2e, 0xf4, 0x26, 0x28, 0x2e, - 0x54, 0x19, 0x4a, 0xa3, 0x7a, 0x4f, 0xfa, 0x99, 0xbb, 0xa5, 0x20, 0x20, - 0x6d, 0x63, 0x9d, 0xf6, 0xaa, 0x6c, 0x6b, 0x80, 0x7c, 0x25, 0xe7, 0xc9, - 0xaf, 0xc6, 0x35, 0x3c, 0x45, 0x47, 0x20, 0xe7, 0x12, 0xfe, 0x58, 0x2c, - 0x70, 0xcb, 0xa8, 0x3c, 0x7c, 0x0f, 0xa9, 0x6e, 0xaf, 0x4c, 0xce, 0x93, - 0xa4, 0x84, 0xfc, 0xb3, 0x23, 0x8b, 0x47, 0xb7, 0xac, 0x01, 0x27, 0x73, - 0x85, 0x9c, 0x30, 0xeb, 0x05, 0x56, 0xbb, 0x0c, 0xcc, 0xc8, 0x15, 0x9d, - 0x74, 0x42, 0x50, 0x86, 0xee, 0xf1, 0x2e, 0x68, 0x76, 0x99, 0x37, 0x6b, - 0x09, 0x4a, 0x61, 0xd3, 0xcb, 0xc1, 0xe9, 0x5c, 0xa0, 0xf6, 0x8a, 0xa1, - 0xdb, 0x21, 0x4f, 0x8e, 0x07, 0x9b, 0xb6, 0x42, 0x40, 0xb7, 0xbe, 0x08, - 0xf4, 0x0c, 0x82, 0xfa, 0x96, 0x4a, 0xde, 0x28, 0x78, 0x35, 0xbb, 0xec, - 0x2a, 0x14, 0x83, 0x04, 0x20, 0x98, 0x7e, 0xe0, 0x92, 0xc7, 0xae, 0x1e, - 0x0f, 0x01, 0x98, 0xd7, 0x35, 0xc1, 0x66, 0x2d, 0xdd, 0xa3, 0xca, 0xa3, - 0xf1, 0xdf, 0x8a, 0x79, 0xbf, 0x58, 0xf8, 0xa6, 0x8e, 0xc9, 0xcc, 0x13, - 0x26, 0x83, 0x47, 0x28, 0x60, 0x5d, 0x79, 0x32, 0xcb, 0xbd, 0xd0, 0xc6, - 0xb2, 0xe5, 0x76, 0xfc, 0x93, 0xf8, 0xac, 0x60, 0xa2, 0x65, 0x56, 0xe3, - 0x1e, 0xe6, 0x78, 0x83, 0x00, 0x89, 0x3b, 0x29, 0xdc, 0x06, 0xa8, 0x14, - 0x8e, 0x93, 0x57, 0xf8, 0x4a, 0xa4, 0xd0, 0x72, 0xfb, 0x39, 0x68, 0xb7, - 0x01, 0xc4, 0xcd, 0xb3, 0x5f, 0x0d, 0x50, 0x44, 0x62, 0x8e, 0x23, 0xc5, - 0x30, 0x83, 0x1b, 0x0d, 0x59, 0x35, 0x54, 0x07, 0x7f, 0x6f, 0xa6, 0x43, - 0xd0, 0xc3, 0x2d, 0x0f, 0xd0, 0x23, 0xde, 0x26, 0x67, 0x97, 0x26, 0x1a, - 0x3c, 0x26, 0xac, 0x58, 0x5b, 0xd6, 0x64, 0x0d, 0xf8, 0xcb, 0x2e, 0x30, - 0x99, 0x8b, 0x60, 0x6c, 0xd6, 0xc8, 0x34, 0xa6, 0x5d, 0x9b, 0xbe, 0xf1, - 0x38, 0x3b, 0x9c, 0x7c, 0x51, 0xd8, 0x28, 0x58, 0x65, 0x37, 0xa9, 0xed, - 0x03, 0x6e, 0x4e, 0xa9, 0x26, 0xbd, 0x1e, 0x20, 0x01, 0x00, 0x00, 0xc0, - 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, - 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, - 0x0c, 0x84, 0x44, 0x6a, 0xf0, 0x2b, 0xf0, 0x1c, 0x88, 0x6b, 0xa0, 0x03, - 0x32, 0xe3, 0x21, 0x63, 0x66, 0x0f, 0x2c, 0x78, 0x83, 0xe1, 0x72, 0x35, - 0x83, 0x1b, 0xcf, 0xab, 0x97, 0x33, 0x17, 0x2d, 0x8b, 0x7f, 0x51, 0x18, - 0x9d, 0x61, 0x4c, 0x01, 0x8f, 0x4c, 0x1a, 0xcc, 0x0e, 0x41, 0xd5, 0x90, - 0x32, 0xad, 0xbf, 0x28, 0x7f, 0xe5, 0x52, 0x71, 0xc1, 0xe8, 0xff, 0xe2, - 0xde, 0x8b, 0x4e, 0x60, 0xe4, 0x35, 0x3b, 0x38, 0xe8, 0x80, 0x98, 0xe5, - 0x4c, 0x83, 0xf8, 0x08, 0x37, 0xc1, 0x69, 0x2b, 0x5c, 0x89, 0xa1, 0x19, - 0x59, 0xed, 0x19, 0x85, 0xfd, 0x0b, 0x9d, 0xa5, 0x63, 0x3f, 0x91, 0xb3, - 0xfe, 0xd0, 0x47, 0x4b, 0x19, 0x16, 0x01, 0x8b, 0x86, 0x0f, 0x1f, 0xb2, - 0xbb, 0x19, 0xb6, 0x1e, 0x7e, 0x67, 0x6a, 0x14, 0x6d, 0xb1, 0x3f, 0xf0, - 0x68, 0xb0, 0xcd, 0x85, 0x1a, 0xae, 0x4e, 0xfe, 0xa7, 0x85, 0x5e, 0x0f, - 0x8c, 0x6c, 0x42, 0xcd, 0x27, 0x30, 0x93, 0x98, 0x0b, 0x0c, 0xfe, 0x69, - 0x61, 0x74, 0x73, 0xaf, 0x81, 0xe8, 0xcf, 0xbf, 0x87, 0x6c, 0xe4, 0x7f, - 0xe1, 0x59, 0x20, 0xa9, 0xb9, 0x16, 0x84, 0x6c, 0xf3, 0x1e, 0x1e, 0xa1, - 0x57, 0xd3, 0x9a, 0x80, 0xd4, 0xdd, 0x86, 0x08, 0x0e, 0x83, 0x5e, 0xc5, - 0xf9, 0xd3, 0x5a, 0x63, 0xaa, 0x9b, 0x01, 0x6f, 0x38, 0xd0, 0x33, 0xe0, - 0x36, 0x39, 0x70, 0x1c, 0xf4, 0x0b, 0xc7, 0x0d, 0x45, 0x27, 0x20, 0xcc, - 0x55, 0x29, 0x11, 0x4a, 0x6c, 0xb3, 0xd4, 0xe1, 0x92, 0xa6, 0xa9, 0xdc, - 0xb9, 0xca, 0x9e, 0x15, 0x3f, 0x0c, 0x0e, 0x24, 0x31, 0x8e, 0x04, 0x21, - 0x2e, 0x19, 0xb0, 0x01, 0xf1, 0xa1, 0xe5, 0xab, 0x96, 0xc3, 0x35, 0x52, - 0x63, 0x25, 0x92, 0x92, 0x11, 0xd7, 0x18, 0xcb, 0x92, 0xf0, 0xc4, 0xfa, - 0xa8, 0x45, 0xd8, 0x06, 0xd9, 0x74, 0x11, 0x2c, 0x55, 0x2b, 0x89, 0x00, - 0xf0, 0xed, 0x73, 0xa5, 0x50, 0xaa, 0xcc, 0x49, 0xf7, 0xdd, 0xb2, 0x32, - 0x21, 0x51, 0xc8, 0x14, 0xdf, 0x23, 0xcd, 0x14, 0xf8, 0x1c, 0x6c, 0x26, - 0x57, 0x2e, 0x28, 0x4d, 0x89, 0x6c, 0x48, 0x32, 0x7f, 0x34, 0x76, 0xab, - 0x5c, 0x1a, 0x6d, 0x5e, 0xc1, 0x90, 0x55, 0xc7, 0x66, 0x89, 0xd1, 0xc9, - 0x6f, 0x6c, 0x90, 0xc5, 0x77, 0x66, 0xc5, 0x04, 0x77, 0x3e, 0xfd, 0x41, - 0x4d, 0x3c, 0xe7, 0x64, 0x56, 0xe7, 0x7e, 0xc8, 0x86, 0xce, 0x50, 0x81, - 0xf3, 0x81, 0x3a, 0x8a, 0x96, 0xee, 0xd8, 0x24, 0xcc, 0x64, 0x9d, 0x11, - 0x66, 0x54, 0x6f, 0xd9, 0xb3, 0xc5, 0xf4, 0x6c, 0xb5, 0x63, 0x48, 0x31, - 0xd6, 0x7e, 0xa7, 0x79, 0x14, 0xe0, 0xe2, 0x3c, 0x5c, 0x26, 0x19, 0x53, - 0x53, 0xce, 0xa3, 0xb7, 0xb9, 0xab, 0x6e, 0xe0, 0xf7, 0xf8, 0x03, 0x20, - 0x0e, 0x55, 0x47, 0x49, 0xf9, 0xb1, 0x7c, 0x4a, 0xa0, 0x63, 0xe2, 0x3a, - 0x16, 0xd1, 0xf1, 0x70, 0x62, 0xdf, 0x54, 0x7b, 0x09, 0xae, 0x78, 0x55, - 0x53, 0x3e, 0x14, 0x0f, 0x79, 0xd5, 0x8c, 0x30, 0x18, 0x6e, 0x0b, 0x3c, - 0xd5, 0x95, 0x35, 0xce, 0x31, 0x71, 0x48, 0xa0, 0x01, 0x61, 0xe7, 0x37, - 0xa5, 0x7d, 0xe9, 0xfa, 0xbb, 0x5a, 0x25, 0x6c, 0x9e, 0xd1, 0xb2, 0x4e, - 0x41, 0xf0, 0x8a, 0x49, 0x32, 0x25, 0x00, 0x0a, 0xcd, 0x6d, 0xf6, 0x2d, - 0xd9, 0x3e, 0xec, 0xf1, 0x9a, 0x4a, 0x43, 0x8a, 0xe2, 0x91, 0xb1, 0x4f, - 0x51, 0xb8, 0xa2, 0x2b, 0x95, 0x8a, 0x0b, 0x0b, 0xd5, 0x69, 0xd1, 0x41, - 0x6d, 0x4a, 0x76, 0x1c, 0x8b, 0xec, 0xb5, 0x66, 0x14, 0x1e, 0x72, 0x66, - 0x1b, 0x45, 0xef, 0xc8, 0x16, 0x0a, 0xdd, 0x05, 0x0f, 0x2c, 0x1b, 0x1e, - 0x0b, 0x02, 0xa0, 0x7f, 0x0b, 0xa1, 0x3c, 0xb9, 0xd4, 0xbd, 0x1c, 0x22, - 0x1c, 0x5f, 0xc5, 0x23, 0xff, 0xbe, 0xb0, 0xfc, 0x23, 0x6f, 0x46, 0x33, - 0x94, 0x46, 0xde, 0x50, 0xcf, 0x40, 0x1e, 0x59, 0xf7, 0xe4, 0xa6, 0x51, - 0xea, 0x3f, 0x88, 0x63, 0xe6, 0xfd, 0xe4, 0x03, 0x2a, 0x22, 0x85, 0x81, - 0x53, 0x5c, 0x52, 0xae, 0xee, 0x70, 0xb6, 0xc8, 0x62, 0x32, 0x06, 0x2f, - 0x1f, 0x37, 0xb2, 0x9b, 0x66, 0x69, 0x28, 0x29, 0x47, 0x06, 0x2f, 0xdb, - 0x2d, 0x8b, 0xba, 0x47, 0x00, 0xaf, 0x4c, 0x45, 0x67, 0x29, 0x4d, 0xde, - 0x2a, 0x14, 0x01, 0xe1, 0x6a, 0xa2, 0x6a, 0xa4, 0x4b, 0xb2, 0xb3, 0x6f, - 0xa2, 0x12, 0x6f, 0xbf, 0x2c, 0xd4, 0x9d, 0x71, 0x29, 0xca, 0x10, 0x19, - 0x95, 0x55, 0x7f, 0xe4, 0x07, 0x43, 0x93, 0x2c, 0xd4, 0x79, 0x84, 0x9c, - 0x36, 0x3c, 0xd9, 0xe9, 0x02, 0x76, 0xf0, 0xda, 0x84, 0xd2, 0x70, 0xad, - 0x05, 0x4b, 0x61, 0xd1, 0x12, 0x1b, 0x72, 0x30, 0x45, 0xf0, 0x65, 0x10, - 0xa8, 0x1e, 0x4c, 0x23, 0xce, 0xd5, 0xba, 0xe5, 0x02, 0x46, 0x86, 0xcf, - 0x53, 0xef, 0x9d, 0xbd, 0x09, 0x15, 0xe2, 0xfd, 0xfe, 0x9a, 0x6c, 0x05, - 0x78, 0xcb, 0x01, 0x59, 0x9d, 0x59, 0x54, 0xf0, 0xba, 0xf9, 0x5c, 0xe7, - 0x62, 0xad, 0x09, 0x1d, 0x53, 0x87, 0xb9, 0x6e, 0x96, 0x2e, 0x37, 0x23, - 0xe5, 0x6a, 0x80, 0x16, 0xba, 0x9e, 0x18, 0x15, 0xd2, 0x71, 0x99, 0x4e, - 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, - 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, - 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xc9, 0x4c, 0x4c, 0xee, - 0xda, 0x3d, 0x0e, 0x77, 0xb6, 0x8c, 0x43, 0x90, 0x2d, 0xfb, 0xfa, 0x7e, - 0xf4, 0xcf, 0x79, 0x18, 0x23, 0x69, 0x2f, 0x9a, 0x82, 0x76, 0xbf, 0x23, - 0x0f, 0x4f, 0x25, 0x5b, 0x43, 0x97, 0x46, 0xa8, 0x88, 0x6f, 0xb8, 0xac, - 0xb7, 0x87, 0x97, 0x7e, 0x8a, 0x3c, 0x54, 0x1b, 0x62, 0xda, 0x4c, 0x1f, - 0x71, 0x8a, 0x16, 0xf3, 0x8f, 0x3b, 0x9f, 0x8e, 0xd8, 0x93, 0x54, 0x6c, - 0x2d, 0x57, 0x3c, 0xba, 0xb0, 0x2c, 0xe9, 0xf3, 0x5a, 0xa7, 0x92, 0x6a, - 0x55, 0x20, 0xfa, 0x09, 0x77, 0x66, 0x66, 0xdc, 0x8b, 0x18, 0x39, 0xe3, - 0x2b, 0x11, 0x15, 0x72, 0x7a, 0xe9, 0xf2, 0x27, 0x5d, 0x05, 0xaa, 0x8e, - 0x5c, 0x4a, 0x06, 0x1a, 0x97, 0x0e, 0x59, 0x08, 0x30, 0xaf, 0x30, 0x30, - 0x7d, 0xa5, 0xd0, 0x36, 0xed, 0xdc, 0xdc, 0x03, 0x05, 0x6f, 0x3a, 0xb6, - 0xac, 0x5a, 0xa9, 0x2b, 0x2d, 0x98, 0xb3, 0x7d, 0xdb, 0xa1, 0xbe, 0x54, - 0x51, 0x99, 0xa5, 0x39, 0x7e, 0xbb, 0x44, 0x0a, 0xf8, 0x46, 0xa2, 0x06, - 0xce, 0x70, 0x38, 0xde, 0x2a, 0x5a, 0xc2, 0x9f, 0x8a, 0xef, 0x7f, 0x2f, - 0x44, 0x8b, 0x82, 0x1f, 0xd5, 0xce, 0x4a, 0xd9, 0xce, 0xca, 0xc9, 0xc9, - 0xe6, 0xb7, 0x09, 0x5c, 0x1e, 0x9b, 0xde, 0x43, 0xd2, 0x16, 0xd8, 0x47, - 0x39, 0xb6, 0xa5, 0x32, 0xf6, 0x24, 0xaa, 0x25, 0x98, 0x46, 0x84, 0xe3, - 0xfb, 0x8d, 0xc8, 0x65, 0x3b, 0xf7, 0x0e, 0xb3, 0x2c, 0xef, 0x47, 0x03, - 0xbf, 0x18, 0x73, 0x8c, 0x0a, 0xf8, 0x18, 0xe6, 0xd9, 0xd8, 0xce, 0xef, - 0x3c, 0xa6, 0xa6, 0x14, 0xcf, 0xe5, 0x8f, 0x40, 0x62, 0x25, 0x59, 0x7b, - 0xd7, 0x79, 0x36, 0x7d, 0x54, 0xe3, 0xa9, 0x20, 0x29, 0x80, 0x6f, 0x6e, - 0xa6, 0x06, 0x9c, 0x16, 0x78, 0x4d, 0xd9, 0xfa, 0xa8, 0x4f, 0xed, 0x4a, - 0x03, 0x25, 0xad, 0xe2, 0x93, 0xfd, 0x38, 0x41, 0xf0, 0x29, 0xbd, 0x73, - 0x9e, 0x43, 0xab, 0xa6, 0xd1, 0xdf, 0xc9, 0x54, 0xf5, 0x3a, 0x82, 0xd5, - 0xfd, 0x9d, 0xdf, 0x56, 0xd5, 0xbf, 0x2c, 0x33, 0x83, 0xc2, 0xeb, 0xc7, - 0x89, 0x31, 0xf6, 0x00, 0x28, 0x0c, 0xa3, 0x99, 0xf3, 0x9d, 0x64, 0x58, - 0xf3, 0x9e, 0x7d, 0x2d, 0xd5, 0x2a, 0xb7, 0x01, 0x42, 0x24, 0x23, 0xe0, - 0x5f, 0x67, 0x01, 0x38, 0x22, 0xbe, 0x1e, 0x62, 0x10, 0x58, 0x65, 0x7d, - 0x80, 0x33, 0x01, 0xfc, 0xa4, 0xea, 0x51, 0x82, 0x61, 0xec, 0x24, 0x61, - 0xe3, 0xcd, 0x01, 0xab, 0xa8, 0x52, 0xfc, 0x57, 0xcc, 0xd7, 0x77, 0x51, - 0x24, 0x2a, 0x54, 0xcf, 0x43, 0x6e, 0x76, 0x92, 0xd4, 0x0a, 0x78, 0x9e, - 0x5e, 0xef, 0x48, 0x9a, 0x17, 0x11, 0x1c, 0x7f, 0xfd, 0x54, 0x37, 0xe0, - 0xab, 0xae, 0x2c, 0x5b, 0x96, 0x75, 0x3f, 0x66, 0x5a, 0xc3, 0xdd, 0x4a, - 0x76, 0x1a, 0x21, 0x02, 0xb1, 0xd8, 0xf5, 0xb4, 0x0d, 0x4d, 0x91, 0x38, - 0x8e, 0x43, 0x52, 0x3c, 0x91, 0xf6, 0x6c, 0x75, 0x12, 0x8f, 0xd5, 0x11, - 0x25, 0xd2, 0x5d, 0x29, 0x7d, 0x01, 0xf6, 0x20, 0x38, 0x22, 0x06, 0xfb, - 0x8b, 0x5f, 0xa9, 0x2d, 0x87, 0xc5, 0x0d, 0x1d, 0xe5, 0xfb, 0xbe, 0x4f, - 0xbf, 0xda, 0xad, 0x82, 0x19, 0x27, 0x63, 0xea, 0x51, 0x3a, 0x73, 0x1f, - 0x7e, 0xe4, 0x2b, 0x59, 0x8d, 0xc6, 0x11, 0xfd, 0x6e, 0x1f, 0xf6, 0x2e, - 0x7e, 0x4d, 0x5c, 0xd9, 0x15, 0xb6, 0x18, 0x9d, 0x55, 0x76, 0xb0, 0xcd, - 0xf1, 0xd6, 0x28, 0x77, 0x58, 0x30, 0xd8, 0x15, 0x6b, 0xcb, 0xdb, 0xbf, - 0x13, 0x2d, 0xef, 0x3f, 0xe3, 0xf5, 0x9c, 0xae, 0xdb, 0x1a, 0x76, 0x60, - 0x10, 0xd8, 0xc6, 0xa7, 0xcf, 0xe5, 0x35, 0x3e, 0x61, 0xc5, 0x04, 0xc0, - 0x08, 0x8b, 0xe5, 0x64, 0x1b, 0x5a, 0x62, 0x0e, 0x6d, 0xda, 0xc5, 0x1b, - 0xdd, 0x92, 0x12, 0x03, 0x10, 0x79, 0xa6, 0xb4, 0x41, 0x62, 0x9d, 0x66, - 0xc0, 0xcc, 0x84, 0x0c, 0xb1, 0x89, 0x57, 0x78, 0x2b, 0x23, 0x09, 0x15, - 0x08, 0x23, 0x68, 0x09, 0xdf, 0x89, 0x0d, 0xda, 0xe2, 0x70, 0xc1, 0xaf, - 0x2a, 0x25, 0xf6, 0xca, 0x3d, 0xfb, 0xb8, 0x05, 0x41, 0x11, 0x01, 0x5f, - 0x23, 0xf5, 0x15, 0x72, 0x4e, 0x1b, 0x85, 0x35, 0x35, 0x18, 0xaf, 0x60, - 0xee, 0x13, 0xb6, 0xc2, 0x28, 0x3b, 0x22, 0x62, 0x14, 0xe4, 0x0b, 0xac, - 0x65, 0x7e, 0x2c, 0x05, 0x9f, 0x79, 0xa1, 0x2a, 0x76, 0x64, 0xb6, 0xa2, - 0x88, 0x52, 0x3e, 0x20, 0x65, 0x47, 0xe9, 0x92, 0x2c, 0x89, 0xc5, 0xa7, - 0xad, 0x19, 0x43, 0xf9, 0x2f, 0xf6, 0x9b, 0x46, 0x9a, 0xa1, 0xc9, 0x08, - 0x40, 0x6e, 0xd2, 0x3f, 0xb2, 0xaf, 0x67, 0xee, 0x12, 0x23, 0xcb, 0x21, - 0x86, 0x5d, 0x3f, 0x5e, 0xee, 0x9d, 0x9f, 0x59, 0x16, 0x85, 0x36, 0xb6, - 0x91, 0x0e, 0x2a, 0xa7, 0x8b, 0x32, 0x40, 0x2f, 0x1b, 0xe4, 0x72, 0x62, - 0x45, 0x26, 0x25, 0x6e, 0xa1, 0xad, 0x0c, 0x11, 0x13, 0xd1, 0x0c, 0xca, - 0xe9, 0x6d, 0xfe, 0x1f, 0x29, 0x53, 0xef, 0xbd, 0x59, 0x3c, 0xd6, 0xa4, - 0x57, 0x07, 0x09, 0x35, 0xbe, 0x98, 0xa4, 0x9a, 0xec, 0x39, 0x3b, 0x28, - 0x4c, 0x13, 0xc9, 0x69, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, - 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, - 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, - 0xb6, 0x35, 0xf0, 0xde, 0x37, 0x17, 0xb6, 0x74, 0x3b, 0x3f, 0xa6, 0x41, - 0x7c, 0xba, 0xf3, 0x5b, 0x94, 0x9f, 0x13, 0xb4, 0x2d, 0x1d, 0x29, 0xf6, - 0x39, 0xed, 0x6f, 0xc2, 0x06, 0x7c, 0x00, 0x1e, 0x4b, 0xa2, 0xc2, 0x75, - 0x15, 0xc5, 0xaf, 0x2b, 0x08, 0xd4, 0x3a, 0x0a, 0xde, 0x83, 0x97, 0xa3, - 0x69, 0x82, 0xb4, 0x57, 0x14, 0xc7, 0x04, 0x9f, 0x64, 0x35, 0x6c, 0x01, - 0x01, 0x91, 0x6a, 0x62, 0xce, 0xee, 0x66, 0x75, 0xf5, 0xf9, 0x82, 0x02, - 0xa6, 0x7c, 0x55, 0xd0, 0xdc, 0x62, 0x45, 0xc5, 0x87, 0x1e, 0x2f, 0xcb, - 0xdd, 0x87, 0xf2, 0x1d, 0x1b, 0x0e, 0x98, 0x88, 0xf1, 0x23, 0x43, 0x08, - 0x08, 0x77, 0xc7, 0x05, 0x03, 0x96, 0xab, 0xeb, 0xe3, 0xf7, 0x18, 0xd0, - 0xf5, 0x25, 0x52, 0x60, 0x86, 0xea, 0xcd, 0x28, 0x28, 0xca, 0x0a, 0xa1, - 0x7f, 0x5e, 0xe0, 0xa6, 0x82, 0x43, 0x54, 0x23, 0xfe, 0x23, 0xba, 0xde, - 0x8d, 0xb1, 0x7a, 0x42, 0xed, 0x09, 0xd1, 0x1c, 0xc4, 0x77, 0x02, 0x42, - 0x9c, 0x45, 0xaf, 0x1e, 0xd7, 0x4f, 0xe4, 0xc0, 0xf9, 0xc1, 0x76, 0xcf, - 0x78, 0x28, 0x35, 0x73, 0xcb, 0xb4, 0xec, 0x11, 0xe3, 0xad, 0x39, 0x5a, - 0x4e, 0xeb, 0x8a, 0x5d, 0xb2, 0x2c, 0x25, 0xe8, 0x62, 0x9c, 0xcf, 0xfb, - 0x9a, 0xad, 0xdf, 0x16, 0x61, 0x1a, 0xa4, 0xb5, 0xaa, 0x9c, 0x08, 0x39, - 0x03, 0x76, 0x83, 0x9e, 0xf1, 0x22, 0x25, 0xc9, 0xca, 0xd4, 0x8e, 0x19, - 0x83, 0x27, 0x4f, 0xe4, 0x4c, 0x74, 0x2d, 0xea, 0x5b, 0xa2, 0x14, 0x50, - 0x94, 0x8e, 0x37, 0xb7, 0xa5, 0x0d, 0xee, 0x64, 0xa0, 0x73, 0x84, 0x84, - 0xf8, 0x0a, 0xcb, 0xa0, 0x24, 0xc8, 0x8c, 0xb8, 0x9c, 0x54, 0xf6, 0x0e, - 0xa1, 0xc8, 0xfc, 0xfe, 0xfe, 0x32, 0xa2, 0x51, 0x7b, 0x03, 0x8e, 0x23, - 0x71, 0x01, 0x82, 0x29, 0xa5, 0xbc, 0x60, 0x75, 0x19, 0xa8, 0xf1, 0xfd, - 0x0f, 0xb8, 0x1e, 0x08, 0x29, 0x39, 0xf2, 0x37, 0x4b, 0x6b, 0x99, 0xa6, - 0x8a, 0x71, 0xbd, 0x4b, 0x1b, 0x34, 0x55, 0xdd, 0x74, 0xed, 0x7e, 0x61, - 0x6c, 0x6d, 0x75, 0x2d, 0xe7, 0x9c, 0x2c, 0xb7, 0x8e, 0x0e, 0xba, 0xb6, - 0x5c, 0x87, 0xca, 0x2b, 0x61, 0x4b, 0xd8, 0x2a, 0x72, 0xab, 0x09, 0x3d, - 0xd6, 0x13, 0xc8, 0xad, 0xd6, 0xbf, 0xaa, 0x28, 0xcd, 0xfb, 0x60, 0x6f, - 0x0e, 0x25, 0x22, 0x6d, 0xfc, 0x30, 0x1e, 0x0b, 0xaa, 0xa2, 0xc4, 0x9c, - 0xf5, 0x07, 0xdf, 0x0a, 0xa0, 0xac, 0x8e, 0x15, 0x56, 0x32, 0xb1, 0xaf, - 0x26, 0xf6, 0x5e, 0x42, 0xa9, 0x7d, 0x5c, 0xd7, 0x44, 0x68, 0x5c, 0xca, - 0xbc, 0x44, 0x7c, 0x6e, 0xed, 0x89, 0x21, 0xe8, 0x83, 0x1e, 0x1c, 0x3c, - 0x7a, 0xf2, 0x53, 0x85, 0xc4, 0xf5, 0x21, 0xbe, 0x30, 0x1e, 0x39, 0x66, - 0x6a, 0x65, 0xd7, 0xae, 0xa8, 0x93, 0xf1, 0xa4, 0xf4, 0x4a, 0xb1, 0x92, - 0x9e, 0x14, 0xcc, 0xf0, 0xe2, 0x4b, 0x71, 0xbd, 0x7a, 0xa2, 0x8d, 0x48, - 0x2d, 0x23, 0x36, 0x02, 0x62, 0x36, 0x02, 0x3d, 0x83, 0x06, 0xfc, 0x9d, - 0xaa, 0x53, 0xe2, 0x9b, 0xc5, 0x74, 0x66, 0xe5, 0x51, 0x3d, 0xa9, 0x6c, - 0xc0, 0x4f, 0x54, 0x25, 0x79, 0xbf, 0xed, 0x0b, 0x2d, 0x0e, 0xf8, 0x16, - 0x28, 0xdd, 0xd1, 0x38, 0xd8, 0x94, 0x24, 0x6e, 0x7b, 0xf9, 0x6e, 0xc6, - 0x72, 0xfd, 0xa1, 0x83, 0x6e, 0x41, 0xd4, 0xb4, 0xce, 0xa4, 0xa4, 0x0a, - 0xf0, 0x2a, 0x25, 0xc8, 0x5c, 0x9d, 0x12, 0xe0, 0x0d, 0x58, 0x01, 0x1f, - 0xc2, 0x39, 0xb7, 0x16, 0x2a, 0x02, 0x43, 0x68, 0x59, 0x6b, 0x8c, 0x7e, - 0x86, 0x8d, 0xfe, 0xc4, 0xd5, 0xdd, 0x4a, 0xa0, 0x20, 0x58, 0xc9, 0x70, - 0x56, 0xe8, 0x38, 0x45, 0xbf, 0x1d, 0x07, 0x6c, 0xed, 0xc1, 0xa6, 0x40, - 0x78, 0x4c, 0xe6, 0x80, 0x5d, 0x04, 0x00, 0x8b, 0x79, 0x4c, 0x4f, 0xb3, - 0x3f, 0xb9, 0x8c, 0x6c, 0xbd, 0xff, 0xb0, 0x22, 0x5c, 0xa9, 0x26, 0x96, - 0x07, 0x38, 0x11, 0x12, 0xea, 0x8b, 0xf3, 0xa2, 0xb1, 0x04, 0x0b, 0x65, - 0x7b, 0x43, 0xf1, 0xda, 0xc4, 0x3b, 0x7d, 0xd6, 0xac, 0x4e, 0xf0, 0x13, - 0x8e, 0x89, 0xc7, 0xa9, 0xbd, 0x61, 0x81, 0xc2, 0x1d, 0x94, 0xc3, 0x2d, - 0xe7, 0xef, 0x94, 0x7b, 0xf8, 0xc6, 0xd9, 0x4b, 0xd8, 0xf8, 0x29, 0x8f, - 0x5d, 0xe2, 0x1e, 0x60, 0xc5, 0xf9, 0xc8, 0x13, 0x97, 0x62, 0x41, 0x12, - 0xa6, 0x48, 0x9e, 0x26, 0x1e, 0x51, 0xdf, 0x51, 0xa4, 0xcb, 0xd0, 0x16, - 0xf6, 0xf0, 0x98, 0x98, 0x10, 0x77, 0xfc, 0x8e, 0xc3, 0xcb, 0x49, 0xcf, - 0x76, 0xfc, 0xc8, 0x8d, 0x05, 0xb3, 0xf3, 0x05, 0xd1, 0x54, 0x63, 0x09, - 0xc8, 0x03, 0x7a, 0x3a, 0x9d, 0x99, 0x7e, 0x45, 0xa9, 0x40, 0x6d, 0xc2, - 0x7e, 0x1f, 0x3a, 0x85, 0x12, 0xc2, 0xfb, 0x81, 0x5a, 0x7a, 0xf4, 0xc4, - 0xec, 0x2e, 0x31, 0x13, 0xa9, 0x89, 0x09, 0xc6, 0x77, 0xd3, 0x8e, 0x4b, - 0xcb, 0x82, 0xd0, 0x3b, 0x2a, 0x0f, 0x18, 0xe1, 0x00, 0xb5, 0x4f, 0x36, - 0xb4, 0x61, 0xe4, 0x25, 0x30, 0x11, 0x86, 0x4f, 0x92, 0x3c, 0x2d, 0x2b, - 0x63, 0x11, 0xa8, 0xd2, 0xc7, 0xf5, 0x47, 0x54, 0x01, 0x00, 0x00, 0xc0, - 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, - 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, - 0x0c, 0x84, 0x44, 0x6a, 0x8a, 0x0d, 0xf8, 0xb4, 0xcc, 0xfa, 0x5c, 0x01, - 0xc7, 0xa9, 0x25, 0x66, 0xc1, 0x12, 0x98, 0x06, 0x18, 0xf0, 0x0f, 0xbe, - 0x36, 0x7e, 0x7d, 0x55, 0x78, 0x32, 0x47, 0x1a, 0xf9, 0xca, 0xd5, 0x11, - 0x55, 0xee, 0xa5, 0x2f, 0x80, 0xa6, 0x76, 0xbc, 0x08, 0x6e, 0x36, 0x47, - 0x4e, 0x81, 0xd9, 0xc9, 0x3a, 0x65, 0x22, 0x1e, 0x54, 0xd0, 0x87, 0x11, - 0xda, 0xb6, 0xd2, 0xbe, 0x1b, 0x0b, 0x11, 0x46, 0x6e, 0x2b, 0x6a, 0x33, - 0x52, 0x7c, 0x9f, 0x5b, 0x74, 0x8e, 0x7f, 0x4f, 0xf7, 0x2a, 0x58, 0xd7, - 0x8c, 0xc6, 0xa7, 0x19, 0x6f, 0x8d, 0x6e, 0x81, 0xc0, 0xa0, 0x8c, 0xfe, - 0x60, 0x54, 0x1f, 0x21, 0x01, 0x19, 0xa6, 0x0d, 0x31, 0xd1, 0xe3, 0x99, - 0x04, 0xfa, 0x59, 0x5a, 0xd8, 0xdf, 0x3e, 0xba, 0xab, 0x68, 0x24, 0x55, - 0xb7, 0x06, 0x65, 0x58, 0xc1, 0x38, 0x9f, 0xc5, 0x52, 0xa7, 0xed, 0x73, - 0xc4, 0x73, 0x1a, 0x4c, 0x72, 0x7a, 0xb2, 0x65, 0x49, 0xd2, 0x4c, 0x82, - 0x01, 0xd5, 0x69, 0xeb, 0x56, 0xb4, 0x33, 0x6e, 0x40, 0x8d, 0x3d, 0x49, - 0x31, 0x07, 0xa6, 0xc3, 0x32, 0xfa, 0x46, 0x1b, 0xd3, 0x0a, 0xd6, 0x23, - 0xe1, 0x0d, 0xcb, 0x3c, 0xa8, 0x90, 0xc0, 0x27, 0x8d, 0x6b, 0xa4, 0xfc, - 0x00, 0x83, 0xcb, 0x28, 0x66, 0xf3, 0xf7, 0xc0, 0xef, 0xe7, 0xec, 0x42, - 0xa3, 0x3b, 0x75, 0x14, 0xa8, 0xdf, 0x37, 0x73, 0x98, 0x06, 0xc6, 0xc3, - 0x80, 0x73, 0x11, 0x78, 0xe8, 0xa0, 0x60, 0x14, 0x1c, 0xa4, 0xb8, 0x2e, - 0x36, 0xc6, 0x8b, 0x8b, 0x30, 0x91, 0xad, 0x9c, 0xbf, 0x8e, 0x02, 0x59, - 0xc1, 0xf3, 0xd5, 0x0e, 0x13, 0xaa, 0x8c, 0x65, 0xcc, 0x9b, 0x46, 0x69, - 0x75, 0x5b, 0xa4, 0xbd, 0xe9, 0x9c, 0x6f, 0x96, 0x6d, 0xed, 0xfa, 0x31, - 0x5b, 0x0f, 0x05, 0x96, 0x9d, 0x72, 0x04, 0x2f, 0x12, 0xa8, 0xe4, 0xa5, - 0x1d, 0xb8, 0x84, 0x27, 0x2a, 0x4e, 0xb9, 0x51, 0x75, 0x37, 0x12, 0x72, - 0x11, 0x12, 0x40, 0x40, 0xc7, 0x56, 0xb2, 0xf5, 0xc1, 0x4d, 0xf6, 0x46, - 0x3a, 0xda, 0x92, 0x5b, 0x65, 0x04, 0xeb, 0x27, 0x82, 0x00, 0x8d, 0xfc, - 0x50, 0xfe, 0xc7, 0x7f, 0x03, 0x6f, 0xa4, 0x25, 0x6c, 0x97, 0x73, 0xb7, - 0x53, 0x88, 0x5b, 0xf8, 0xc9, 0x88, 0x74, 0xd1, 0x10, 0x22, 0x76, 0x00, - 0xfd, 0x4d, 0xe6, 0xd9, 0x9f, 0x17, 0x5a, 0xc9, 0x4a, 0xb2, 0xc8, 0xf4, - 0x0a, 0x64, 0x4f, 0x2c, 0x02, 0x86, 0x3c, 0xc8, 0xff, 0xc2, 0xd8, 0x94, - 0xad, 0xf6, 0xc3, 0xe4, 0xa5, 0x41, 0xb0, 0x3b, 0xd5, 0xcc, 0x9b, 0x24, - 0xb5, 0xa4, 0x3a, 0x0f, 0xe0, 0x2d, 0x8e, 0x03, 0xe8, 0x1b, 0xd7, 0x3a, - 0xf9, 0xd8, 0x53, 0x07, 0xa8, 0x17, 0x49, 0xa6, 0x94, 0x7a, 0xd3, 0x34, - 0xba, 0xd6, 0xd5, 0x6e, 0xb8, 0xcd, 0xfa, 0x06, 0x84, 0x39, 0xe7, 0xaf, - 0x92, 0x0b, 0xc5, 0x45, 0x13, 0x27, 0x85, 0x7f, 0x78, 0x4f, 0x3d, 0x3d, - 0x93, 0x80, 0x6d, 0x3a, 0xd0, 0xeb, 0xe8, 0xce, 0x07, 0x38, 0xd7, 0x71, - 0x93, 0x60, 0x13, 0xd1, 0x5c, 0x95, 0x39, 0x37, 0x71, 0x03, 0xbb, 0x7b, - 0xcc, 0xd3, 0x41, 0x64, 0x16, 0x41, 0x0b, 0x4d, 0x25, 0x5e, 0x78, 0x5f, - 0xae, 0x26, 0xd2, 0xc3, 0x51, 0xfd, 0x1f, 0x14, 0x28, 0xac, 0x02, 0xea, - 0xc2, 0x96, 0xda, 0xd9, 0x30, 0x60, 0x11, 0x1b, 0xa2, 0x98, 0x3d, 0x96, - 0xcf, 0x34, 0x4c, 0xb3, 0x13, 0x9f, 0xed, 0x7d, 0x90, 0x7b, 0x14, 0x6e, - 0x7f, 0x20, 0x76, 0x3e, 0xc7, 0x15, 0x81, 0x1c, 0x0a, 0x35, 0xa3, 0x00, - 0xd8, 0x6b, 0x42, 0x12, 0x36, 0xfa, 0x25, 0xa7, 0xf9, 0x6e, 0x7f, 0xf3, - 0xa3, 0xc0, 0x87, 0xeb, 0xca, 0x1d, 0x16, 0x51, 0x5f, 0x86, 0x13, 0x23, - 0x93, 0x8d, 0x5f, 0x1e, 0x7e, 0x58, 0xe0, 0x09, 0x63, 0x22, 0x66, 0x1a, - 0xa8, 0x9e, 0x5d, 0xce, 0x53, 0xe0, 0x70, 0xcd, 0x0c, 0xb6, 0x3c, 0xd8, - 0x78, 0xb2, 0xcb, 0x31, 0xf1, 0x0e, 0xf2, 0x6f, 0x1d, 0xd4, 0xab, 0x4e, - 0x3b, 0x58, 0xb2, 0xbf, 0x15, 0x63, 0x32, 0x5a, 0x43, 0x85, 0x0a, 0x92, - 0x8e, 0xe2, 0x67, 0x25, 0x44, 0x9d, 0xf3, 0xf2, 0x5c, 0x3a, 0x9b, 0xb7, - 0xd3, 0x00, 0x44, 0x2f, 0xb9, 0xc0, 0x81, 0x14, 0x81, 0xca, 0xaa, 0x20, - 0xe4, 0xd9, 0xe8, 0xa2, 0xf6, 0x2e, 0x94, 0xba, 0x9f, 0x2b, 0xfd, 0x4d, - 0x60, 0x60, 0xa2, 0xbd, 0x45, 0x14, 0x34, 0x97, 0xee, 0x5d, 0xbe, 0x44, - 0x04, 0xaf, 0x9a, 0x01, 0x25, 0x70, 0x9d, 0xed, 0x88, 0xea, 0x6c, 0xef, - 0xec, 0x92, 0xca, 0x29, 0x49, 0x14, 0xa2, 0xe6, 0xf8, 0x47, 0x32, 0xe1, - 0x96, 0xf9, 0x82, 0x31, 0x24, 0x2c, 0x73, 0x3d, 0xf0, 0xf4, 0xc5, 0x2d, - 0xba, 0x19, 0x0c, 0x23, 0xad, 0x7b, 0xe2, 0xe3, 0x1e, 0xd1, 0x1e, 0xf9, - 0x5a, 0x31, 0xac, 0x19, 0xba, 0x7c, 0xb6, 0x2f, 0x2b, 0x1c, 0xc6, 0x4c, - 0xa2, 0x73, 0xc3, 0x35, 0xbc, 0xf1, 0x97, 0xbb, 0x11, 0x4d, 0x8c, 0x0b, - 0xe0, 0x9e, 0x39, 0x22, 0xc1, 0xc1, 0x9e, 0xb9, 0x16, 0x7d, 0xf5, 0x86, - 0xd1, 0xc0, 0xe8, 0x27, 0xac, 0x3c, 0xd3, 0x2b, 0x0b, 0xaa, 0x02, 0x2c, - 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, - 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, - 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xd9, 0x6b, 0x78, 0x4e, - 0x0f, 0xc1, 0x78, 0x06, 0x04, 0xed, 0xc7, 0x59, 0x82, 0x0a, 0xce, 0x83, - 0xfc, 0xe7, 0xb4, 0x03, 0xc8, 0x66, 0x8c, 0x9d, 0xa5, 0x92, 0x3c, 0xc1, - 0x6e, 0x7b, 0x96, 0x2c, 0x4f, 0x01, 0xff, 0x82, 0x6f, 0x29, 0x91, 0xba, - 0xb6, 0x62, 0xbb, 0x44, 0x59, 0x5d, 0x0d, 0x6c, 0x15, 0x75, 0x30, 0x02, - 0x78, 0x0a, 0x21, 0xf8, 0xfc, 0x57, 0x24, 0xa7, 0x75, 0xb0, 0xc0, 0x1a, - 0xdc, 0x3c, 0x38, 0xcc, 0x49, 0xae, 0x74, 0x92, 0xd9, 0x2f, 0xba, 0xfa, - 0x70, 0x73, 0xd2, 0xbf, 0xf1, 0xac, 0x2e, 0xe1, 0x96, 0xc4, 0x8e, 0xaf, - 0x04, 0x23, 0xa3, 0xce, 0xc1, 0xa8, 0x3e, 0x42, 0x2e, 0x52, 0x76, 0xac, - 0x37, 0xe9, 0x8a, 0xa6, 0xc4, 0xd4, 0x9d, 0x0e, 0xed, 0x6a, 0x0e, 0xb8, - 0x7d, 0x4d, 0x64, 0x6f, 0x4b, 0x62, 0xc7, 0x57, 0x82, 0x91, 0x51, 0xe7, - 0x60, 0x54, 0x1f, 0x21, 0xe2, 0xac, 0x63, 0xce, 0x15, 0x4b, 0x2a, 0x11, - 0x25, 0xfd, 0xbf, 0xa8, 0x74, 0xe2, 0xe4, 0xba, 0xe8, 0x4d, 0x74, 0x5e, - 0x6a, 0x19, 0x52, 0x51, 0xdb, 0x2c, 0xb8, 0xd7, 0x18, 0x7d, 0xa3, 0x0d, - 0x81, 0xea, 0x7a, 0x3f, 0x2a, 0x4a, 0x42, 0x90, 0x1f, 0xa7, 0xc4, 0x85, - 0xb3, 0x71, 0xa3, 0x52, 0x09, 0x89, 0x1f, 0x04, 0x08, 0xd8, 0x39, 0x33, - 0x48, 0x7d, 0x9d, 0x29, 0x53, 0xa7, 0xed, 0x73, 0x45, 0x84, 0xca, 0x9b, - 0x50, 0x78, 0xaf, 0x09, 0x85, 0x21, 0x2c, 0x70, 0x8a, 0x97, 0xf3, 0x5b, - 0xb2, 0xfc, 0x9b, 0x1d, 0x74, 0x32, 0x0c, 0xbb, 0x05, 0x70, 0x4f, 0x04, - 0x1e, 0x38, 0x62, 0x05, 0x50, 0xb4, 0xea, 0x98, 0xe2, 0x8d, 0x38, 0x26, - 0x75, 0x7d, 0x38, 0x09, 0xcd, 0xfe, 0xce, 0x19, 0xcc, 0xed, 0x73, 0xab, - 0x38, 0x55, 0xdc, 0x43, 0x1c, 0xcd, 0x91, 0x08, 0x6d, 0x4e, 0xa7, 0x4a, - 0x04, 0x08, 0xfc, 0xff, 0xe5, 0xdd, 0xe5, 0x40, 0xf2, 0x1c, 0x2b, 0x3b, - 0x9c, 0xfc, 0xd1, 0x03, 0xe2, 0x14, 0x3b, 0x0f, 0x09, 0x1f, 0x0d, 0x30, - 0x33, 0x8d, 0xcf, 0x19, 0xe5, 0x2e, 0x30, 0x60, 0xd2, 0x34, 0x0b, 0x44, - 0x30, 0xee, 0x78, 0xe7, 0x6d, 0xa2, 0x5b, 0x3d, 0x61, 0x00, 0xc8, 0x38, - 0xc6, 0x2f, 0x47, 0xcf, 0x8b, 0x17, 0xdb, 0x85, 0xfb, 0x75, 0x6f, 0xd4, - 0xb8, 0x6a, 0x89, 0x09, 0x83, 0x40, 0x3d, 0xf7, 0x24, 0x65, 0x78, 0xaa, - 0xc8, 0xd8, 0xcf, 0x11, 0x25, 0xae, 0xd8, 0x6a, 0xcb, 0x77, 0xae, 0x06, - 0xdc, 0xea, 0xca, 0xe5, 0x5f, 0x6a, 0x4b, 0x94, 0xbc, 0x49, 0xb0, 0x5a, - 0x4b, 0xec, 0xdf, 0x5f, 0x4d, 0xbf, 0x55, 0x7c, 0x14, 0x74, 0x86, 0x30, - 0xf4, 0xa6, 0x49, 0x25, 0x6b, 0x45, 0x60, 0x41, 0x6b, 0x5f, 0x94, 0xfb, - 0xf9, 0x75, 0x39, 0xeb, 0xe2, 0xe5, 0xe6, 0x60, 0x3f, 0x09, 0x69, 0xd3, - 0xa4, 0xf9, 0x22, 0x5c, 0x43, 0x06, 0x74, 0x82, 0xae, 0x5a, 0x93, 0x91, - 0x57, 0xc1, 0xd6, 0x4e, 0x1a, 0x4f, 0x26, 0x5a, 0xc2, 0x5b, 0x60, 0x6c, - 0x5e, 0x5e, 0xbf, 0x36, 0x87, 0xb3, 0xab, 0xc4, 0x3f, 0xc6, 0xd7, 0xb3, - 0xe4, 0xce, 0x5c, 0x65, 0x53, 0x5a, 0x29, 0x20, 0xcf, 0x70, 0x75, 0xc1, - 0xbb, 0xb4, 0xd4, 0x32, 0x4c, 0x13, 0x7f, 0x4c, 0x7e, 0x10, 0xe0, 0x70, - 0xab, 0xa7, 0x62, 0x22, 0x37, 0x4f, 0x5a, 0x89, 0x37, 0xed, 0xd8, 0x6f, - 0xd7, 0x89, 0x2c, 0x53, 0x55, 0x5f, 0xbb, 0x2c, 0x44, 0xb8, 0xec, 0x7a, - 0x94, 0xd6, 0x14, 0x22, 0x1d, 0x63, 0x80, 0x59, 0x90, 0x2f, 0x4a, 0x37, - 0xc5, 0xc4, 0x03, 0x5f, 0x66, 0x16, 0xa8, 0x20, 0x72, 0x84, 0xb0, 0xac, - 0x9f, 0x79, 0x5d, 0x79, 0xfc, 0x13, 0xf0, 0xbb, 0x08, 0xb5, 0x62, 0x3b, - 0xbb, 0xfe, 0x6b, 0x4d, 0x68, 0x7f, 0xd9, 0xc9, 0xa3, 0x0c, 0x10, 0x43, - 0x23, 0x59, 0x23, 0xc8, 0x77, 0xb5, 0x78, 0x2e, 0xeb, 0x5a, 0xd4, 0xd6, - 0xdb, 0x60, 0x15, 0x09, 0x20, 0x5d, 0xbb, 0x4b, 0x4f, 0x65, 0x94, 0x6e, - 0x31, 0xc3, 0x6f, 0x8a, 0xeb, 0x13, 0xbb, 0xed, 0xbf, 0xa4, 0x73, 0x3e, - 0x11, 0x7f, 0x8e, 0xb8, 0x12, 0xa3, 0x38, 0x2d, 0x5c, 0xc4, 0x4f, 0x18, - 0x10, 0x82, 0x27, 0x5e, 0x0b, 0xe2, 0x5d, 0x16, 0x2e, 0x3f, 0xe2, 0x19, - 0x1f, 0x6c, 0x35, 0x46, 0xb8, 0x8e, 0x97, 0x82, 0x90, 0xc6, 0xa0, 0x58, - 0x0a, 0xe9, 0x0d, 0x94, 0x69, 0xb4, 0x32, 0xbb, 0x48, 0x53, 0x91, 0xfb, - 0x90, 0xdf, 0xbf, 0x69, 0x1e, 0x4f, 0x59, 0x32, 0xcd, 0x41, 0x22, 0xc1, - 0x77, 0x70, 0x2f, 0xe6, 0xdf, 0x48, 0x32, 0x02, 0xb4, 0x92, 0x8b, 0xc9, - 0x83, 0x10, 0xe5, 0x2c, 0xb8, 0x0b, 0x36, 0x63, 0x30, 0x9a, 0xbe, 0x62, - 0x10, 0x59, 0x1a, 0x6a, 0xb1, 0x51, 0x20, 0xd7, 0xef, 0x13, 0x3f, 0xab, - 0x9b, 0x65, 0xf5, 0xf9, 0x63, 0xd7, 0xa0, 0xcb, 0x7a, 0x3b, 0xfb, 0xba, - 0xb1, 0x91, 0xce, 0x62, 0x46, 0xd3, 0x52, 0x09, 0xf7, 0xfb, 0x89, 0x23, - 0x8d, 0x47, 0x34, 0x1a, 0xdb, 0xb7, 0x59, 0x15, 0x37, 0x4a, 0x9d, 0x93, - 0xe9, 0xc7, 0x80, 0x7c, 0xae, 0x64, 0xa4, 0x81, 0xb5, 0x6d, 0xfb, 0x80, - 0x23, 0x22, 0xce, 0x70, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, - 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, - 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, - 0xc0, 0x07, 0x4e, 0x2b, 0x84, 0x9d, 0x5c, 0x05, 0x64, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9b, 0x55, 0xca, 0x02, - 0xa2, 0x96, 0x32, 0xc8, 0x0e, 0x5d, 0xbb, 0xc7, 0x6c, 0x7a, 0x8a, 0x9c, - 0x68, 0x1c, 0x2d, 0x4f, 0x6a, 0x1c, 0x35, 0x0f, 0x8a, 0x5c, 0xd0, 0x0e, - 0xad, 0x4c, 0x9d, 0x48, 0x40, 0xdb, 0x66, 0x56, 0x84, 0x81, 0x55, 0xb7, - 0xfa, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x5e, 0x03, 0x4a, 0xdb, 0x34, 0x96, 0x7e, 0x28, 0x95, 0x59, 0x69, 0xdb, - 0x94, 0x8c, 0xa2, 0xfe, 0xdf, 0x26, 0x66, 0x51, 0xe2, 0x26, 0x56, 0x07, - 0x87, 0xb4, 0xf4, 0xb5, 0x22, 0xfd, 0x5d, 0x63, 0xb5, 0x1c, 0x02, 0xbe, - 0x7c, 0x25, 0xdf, 0xa8, 0xbe, 0xaf, 0x07, 0x00, 0x1f, 0x12, 0x83, 0xfa, - 0x6a, 0x21, 0xb7, 0xe4, 0x89, 0x3f, 0x4d, 0x4b, 0x24, 0x70, 0x4c, 0x1b, - 0xbe, 0xb8, 0x18, 0x22, 0x84, 0xbf, 0x50, 0xc8, 0xa5, 0xb9, 0x11, 0xf7, - 0x97, 0x74, 0xf0, 0xff, 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, - 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, - 0x80, 0x46, 0x93, 0x17, 0x3b, 0x7a, 0xc5, 0x4b, 0x0f, 0xf2, 0x3a, 0xaf, - 0x21, 0xdd, 0x29, 0x0e, 0x88, 0x5d, 0x52, 0xe3, 0x22, 0x48, 0x9b, 0xb3, - 0xfd, 0xcc, 0x94, 0xf1, 0xcc, 0xcd, 0xf0, 0x2d, 0x1b, 0x76, 0x71, 0x14, - 0x0a, 0xfa, 0xf7, 0x8e, 0xef, 0x62, 0x31, 0x79, 0x8e, 0xfc, 0x84, 0x33, - 0x8f, 0x8e, 0x14, 0x7e, 0xe7, 0x6a, 0x6b, 0x3c, 0x14, 0x2a, 0xd7, 0xf5, - 0x1b, 0xe4, 0x35, 0x73, 0xe5, 0x1f, 0xf9, 0xb1, 0x6c, 0xf3, 0x4e, 0xe3, - 0x44, 0x99, 0xb8, 0x54, 0xf3, 0x1b, 0x84, 0x10, 0x4c, 0x17, 0x97, 0xf3, - 0x76, 0xc6, 0x30, 0xb9, 0xc0, 0x77, 0x0a, 0xee, 0x77, 0xf8, 0x77, 0x69, - 0x7b, 0x90, 0x10, 0x1f, 0xe1, 0x6d, 0x8f, 0xfa, 0x18, 0x36, 0x9e, 0xbc, - 0x37, 0xf5, 0x80, 0x1c, 0x92, 0xb6, 0xae, 0xcc, 0xae, 0x15, 0x8f, 0xf8, - 0xf7, 0x5c, 0x45, 0xed, 0xae, 0x95, 0x8e, 0x28, 0x50, 0xd4, 0x9a, 0x03, - 0xec, 0x89, 0x87, 0x2e, 0x54, 0x21, 0x7f, 0xd8, 0x37, 0x4a, 0x1b, 0x0e, - 0x0e, 0x27, 0x54, 0x48, 0x0b, 0x0f, 0xf9, 0x08, 0x67, 0x36, 0x5d, 0xdd, - 0xbe, 0xc7, 0xdb, 0x51, 0x3c, 0xb1, 0x13, 0xdb, 0xe4, 0x5b, 0xbe, 0x85, - 0x0f, 0xb9, 0xdd, 0x12, 0x13, 0xd4, 0x2a, 0x4b, 0x0b, 0x3a, 0x8d, 0x08, - 0x63, 0x8f, 0x9b, 0x3a, 0x2d, 0x7d, 0x96, 0x86, 0xfd, 0x6d, 0xec, 0x66, - 0xfc, 0x18, 0xf6, 0xd7, 0xfa, 0x53, 0xd9, 0x3e, 0xdc, 0x2b, 0xad, 0x84, - 0x98, 0x46, 0xd2, 0x0e, 0xcd, 0xb6, 0x8b, 0xf2, 0x50, 0x85, 0x95, 0x56, - 0x7f, 0x3a, 0xdf, 0x10, 0x18, 0x91, 0x5c, 0x5d, 0xeb, 0x3f, 0x98, 0xfd, - 0x6c, 0x3f, 0x5d, 0x1a, 0x86, 0x91, 0x59, 0x3b, 0x7b, 0xf1, 0xb5, 0x95, - 0x79, 0xb3, 0xa6, 0x3b, 0xc6, 0x31, 0x1b, 0x3f, 0x0e, 0xeb, 0x14, 0x6b, - 0xa9, 0x6d, 0x80, 0x42, 0x62, 0x4c, 0xf9, 0xb3, 0xb7, 0xa3, 0x5d, 0xe8, - 0x1c, 0xf9, 0x07, 0xd7, 0x82, 0xfb, 0x75, 0x86, 0x31, 0x0e, 0xf7, 0x6f, - 0xe1, 0x1f, 0x9e, 0x7a, 0x4f, 0x20, 0x85, 0x00, 0x92, 0x05, 0xeb, 0x2d, - 0xcb, 0x10, 0xb1, 0x18, 0xd1, 0x36, 0x4f, 0xd2, 0x9b, 0x07, 0x5d, 0x68, - 0x88, 0x50, 0x92, 0x81, 0x8f, 0xa7, 0x9a, 0x8b, 0x93, 0x91, 0x54, 0xec, - 0xf2, 0x75, 0x96, 0x8c, 0x09, 0x1f, 0xe3, 0x73, 0x95, 0x3c, 0x0a, 0x70, - 0xd2, 0xea, 0x57, 0x62, 0xf2, 0x52, 0xa9, 0xe2, 0xcb, 0xde, 0xbd, 0x3c, - 0xf8, 0x49, 0xe9, 0xf3, 0x23, 0x0d, 0x40, 0x98, 0x07, 0x7c, 0x04, 0xc6, - 0x55, 0x58, 0x6d, 0x20, 0x9d, 0x2c, 0x6f, 0x46, 0xf0, 0x8b, 0x00, 0xc9, - 0xd1, 0xca, 0xb5, 0x3a, 0x7f, 0xdf, 0x7d, 0xc0, 0x94, 0xd2, 0x96, 0xab, - 0x24, 0x1a, 0xad, 0x6f, 0xb1, 0x58, 0x50, 0x7d, 0xb1, 0x8d, 0xc9, 0x1e, - 0xcd, 0x85, 0xcf, 0x11, 0x7d, 0x75, 0x99, 0x28, 0xce, 0x29, 0xf4, 0x5a, - 0xdf, 0x3f, 0x61, 0x51, 0x8e, 0x5d, 0xa7, 0x18, 0x3d, 0xf1, 0xe6, 0x02, - 0x04, 0xf6, 0xf4, 0xb4, 0x3c, 0x0b, 0xda, 0x6f, 0x58, 0x11, 0x5f, 0xea, - 0xc3, 0x52, 0xd8, 0x21, 0xca, 0x87, 0x14, 0xa2, 0x67, 0x9c, 0x9d, 0x54, - 0xde, 0xcc, 0x49, 0xfd, 0xb9, 0xe0, 0x7f, 0x73, 0x8b, 0x30, 0xad, 0x6a, - 0xec, 0xf5, 0xe2, 0x0a, 0x36, 0x29, 0xef, 0x92, 0xe1, 0xdd, 0x29, 0xfb, - 0xd9, 0xa5, 0x2a, 0xb5, 0x56, 0xba, 0x22, 0x6d, 0xd0, 0x1c, 0xf6, 0xa8, - 0xbb, 0xf3, 0xbc, 0x16, 0xcd, 0x2a, 0xf6, 0xf7, 0x20, 0x5c, 0xfe, 0x37, - 0x96, 0xe4, 0x0b, 0x8d, 0x84, 0xff, 0x66, 0x5b, 0xf6, 0xa9, 0x07, 0x41, - 0x3c, 0x66, 0x65, 0xb4, 0x9f, 0xc2, 0x02, 0x9d, 0x3f, 0xe6, 0x7e, 0xf5, - 0x28, 0x32, 0xb7, 0xf8, 0x6b, 0xf7, 0x7a, 0x20, 0x01, 0x00, 0x00, 0xc0, - 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, - 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, - 0x0c, 0x84, 0x44, 0x6a, 0x01, 0xc5, 0x4e, 0xec, 0xeb, 0xc4, 0x4e, 0xec, - 0xeb, 0xc0, 0x26, 0x76, 0xed, 0xc8, 0xd2, 0xf8, 0xc6, 0x66, 0xb4, 0x03, - 0xc8, 0x66, 0x8c, 0x9d, 0xa5, 0x92, 0x3c, 0xc1, 0x6e, 0x7b, 0x96, 0x2c, - 0x0d, 0x21, 0x1c, 0xc2, 0x78, 0x8f, 0xf7, 0x78, 0xe6, 0x26, 0xe9, 0x97, - 0x79, 0xd3, 0xd8, 0xde, 0x22, 0xb4, 0xb9, 0x6f, 0x23, 0xb4, 0x11, 0x05, - 0x2e, 0x74, 0x45, 0x5a, 0xe4, 0x6e, 0x34, 0x18, 0x8b, 0xba, 0x6d, 0xdb, - 0x23, 0x49, 0x92, 0x24, 0xb6, 0x41, 0xda, 0xb6, 0x26, 0x75, 0x87, 0xa9, - 0xba, 0x75, 0x2a, 0x99, 0xbc, 0x75, 0x72, 0xdb, 0xc5, 0xeb, 0x4b, 0x42, - 0xf2, 0x52, 0xce, 0x52, 0x6e, 0xaa, 0x6d, 0xdb, 0x23, 0x49, 0x92, 0x24, - 0xb6, 0x41, 0xda, 0xb6, 0x26, 0x75, 0x87, 0xa9, 0xba, 0x75, 0x2a, 0x99, - 0xbc, 0x75, 0x72, 0xdb, 0xc5, 0xeb, 0x4b, 0x42, 0xf2, 0x52, 0xce, 0x52, - 0x6e, 0xe0, 0xc3, 0xc3, 0x59, 0x5a, 0x5a, 0x5a, 0xf0, 0x08, 0xff, 0xff, - 0x3d, 0x24, 0x06, 0xf5, 0xd5, 0x42, 0x6e, 0xc9, 0x13, 0x7f, 0x9a, 0x96, - 0x48, 0xe0, 0x98, 0x36, 0x7c, 0x71, 0x31, 0x44, 0xa6, 0xa4, 0xd2, 0xd2, - 0xc2, 0xc3, 0xc3, 0xc3, 0xb3, 0x74, 0xfe, 0xff, 0x2f, 0x6d, 0xa3, 0x21, - 0x23, 0x9e, 0xe3, 0xdb, 0x52, 0xcb, 0x90, 0x8a, 0xda, 0x66, 0xc1, 0xbd, - 0xc6, 0xe8, 0x1b, 0x6d, 0x42, 0x61, 0x2d, 0x2d, 0x57, 0x06, 0xa8, 0x64, - 0x15, 0x9f, 0xbc, 0x86, 0x74, 0xa7, 0x38, 0x20, 0x76, 0x49, 0x8d, 0x8b, - 0x20, 0x6d, 0xce, 0xf6, 0x33, 0x53, 0xc6, 0x33, 0x37, 0xc3, 0xb7, 0x00, - 0x3a, 0x6e, 0x96, 0x16, 0x7c, 0x61, 0x97, 0xab, 0xe8, 0xa4, 0x93, 0x57, - 0xa0, 0x77, 0x56, 0x84, 0x79, 0xbf, 0x04, 0x64, 0xd6, 0x43, 0x74, 0xff, - 0x90, 0x9e, 0x70, 0x86, 0x45, 0xc3, 0x04, 0x28, 0x69, 0x21, 0x56, 0xe8, - 0x93, 0x54, 0x41, 0x43, 0x7d, 0x78, 0xb8, 0x20, 0x4e, 0x0b, 0xc8, 0xb6, - 0xa3, 0x6f, 0x69, 0xfd, 0xd2, 0xc6, 0x47, 0xe6, 0xdc, 0x87, 0xcf, 0x44, - 0x89, 0x02, 0xff, 0x15, 0x2e, 0x29, 0xe6, 0x53, 0x39, 0x00, 0x06, 0x1f, - 0x40, 0x1c, 0x61, 0xa9, 0x6a, 0xef, 0xfb, 0x36, 0xec, 0xa8, 0x51, 0x54, - 0xc6, 0x8e, 0x2c, 0x45, 0xf0, 0x2e, 0xe3, 0x6e, 0xf7, 0x0d, 0x8d, 0x4a, - 0x56, 0xef, 0x2a, 0xc5, 0x7e, 0xd7, 0x8b, 0xe3, 0xd5, 0x14, 0xb7, 0xbc, - 0xdd, 0x55, 0xd8, 0x36, 0x59, 0x9d, 0xac, 0xa1, 0x62, 0xcd, 0xf2, 0xa4, - 0xbd, 0x6a, 0xdd, 0xc9, 0x66, 0x16, 0xe5, 0x01, 0x3c, 0xb1, 0x13, 0x3b, - 0x3a, 0xb1, 0x13, 0x3b, 0x3a, 0x75, 0x88, 0x9d, 0x3d, 0xed, 0x02, 0xbd, - 0xb5, 0x7b, 0x26, 0x08, 0xb8, 0x7b, 0xce, 0x8d, 0x9f, 0x42, 0x85, 0x0f, - 0x5a, 0xdc, 0x17, 0x62, 0x93, 0x24, 0x49, 0x12, 0x6d, 0xdb, 0xb6, 0xed, - 0x23, 0x3b, 0x91, 0xa4, 0x6f, 0xe9, 0xf9, 0xfe, 0x27, 0x9d, 0x0c, 0xbd, - 0x29, 0x9d, 0x80, 0x45, 0x65, 0x87, 0x77, 0x08, 0xda, 0x7d, 0x86, 0x4a, - 0x67, 0x66, 0x66, 0x66, 0xee, 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, - 0xdf, 0xbd, 0xfe, 0x81, 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, 0x0d, 0xd7, - 0x7b, 0xed, 0x42, 0x27, 0xf9, 0x14, 0xd4, 0x3d, 0x01, 0x00, 0x00, 0x10, - 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, 0xcf, 0xc2, 0xc9, 0x81, 0xfe, - 0x84, 0xba, 0x07, 0x89, 0x87, 0x3a, 0x06, 0xb0, 0x73, 0xa5, 0x03, 0xf7, - 0xdd, 0xcc, 0xae, 0x6c, 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, - 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, - 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, - 0x56, 0x55, 0x55, 0xd5, 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, - 0x3a, 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, 0x76, 0x20, 0x15, 0x91, - 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, 0xd8, 0x46, 0x01, 0x00, 0x00, 0x00, - 0x1a, 0xca, 0x6b, 0x28, 0xc9, 0x13, 0xbb, 0x86, 0xa4, 0x14, 0xdc, 0x41, - 0x99, 0xe7, 0x70, 0x67, 0x73, 0x38, 0x5f, 0x81, 0x0e, 0xba, 0x87, 0xf1, - 0xfd, 0xab, 0xd3, 0x6d, 0xcd, 0xcc, 0xcc, 0x0c, 0x33, 0x33, 0x33, 0x73, - 0x99, 0x5a, 0x99, 0xd9, 0x66, 0xa5, 0x8f, 0xcc, 0x00, 0x7a, 0x0b, 0x9b, - 0x67, 0xe0, 0x7b, 0xd4, 0xca, 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, - 0xb7, 0x6d, 0xdb, 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, 0x08, 0x0c, 0xc3, - 0x9e, 0x0f, 0x12, 0x8e, 0xc3, 0x20, 0x7d, 0x25, 0x19, 0x76, 0x42, 0x1d, - 0xd6, 0x85, 0x70, 0xa2, 0x75, 0x71, 0x0a, 0x0b, 0x01, 0x00, 0x00, 0x80, - 0xd0, 0x45, 0x17, 0xdd, 0x44, 0x29, 0xe7, 0x22, 0x1a, 0x4b, 0x4c, 0x44, - 0xbf, 0x7c, 0x1a, 0xac, 0x07, 0x94, 0x2b, 0x48, 0x39, 0x83, 0xd0, 0x04, - 0x5b, 0xab, 0xa8, 0x6e, 0xb3, 0x90, 0x85, 0x2c, 0x58, 0xc8, 0x42, 0x16, - 0xa6, 0x87, 0xa5, 0x37, 0xe1, 0xa4, 0x8e, 0x32, 0x8a, 0x4c, 0x12, 0x99, - 0xe5, 0x14, 0x75, 0x7a, 0xcf, 0x61, 0x03, 0xc0, 0xc2, 0xa7, 0xce, 0x64 -}; + 0xe4, 0xbc, 0x89, 0xd0, 0x6b, 0x09, 0xde, 0xe6, 0x7d, 0xb7, 0x3a, 0x0f, 0x8e, 0xf1, 0x06, 0xd5, 0xe0, 0x02, 0x89, + 0xf3, 0xc5, 0xbf, 0x99, 0x73, 0x04, 0xb5, 0x48, 0xe6, 0x76, 0x95, 0x6c, 0x1f, 0xa9, 0x8c, 0xf0, 0xc8, 0x24, 0xe9, + 0x8b, 0x25, 0xb2, 0xe8, 0xed, 0xb7, 0x4d, 0xf0, 0xfd, 0x68, 0x47, 0xa7, 0xa5, 0x43, 0xe2, 0x93, 0x19, 0xd7, 0xeb, + 0x3d, 0xdf, 0x28, 0x70, 0xba, 0xde, 0x06, 0x09, 0xac, 0x02, 0xfb, 0x5d, 0x5e, 0x6c, 0xcc, 0x50, 0xe4, 0x01, 0xf9, + 0xd1, 0x8f, 0xc5, 0x33, 0xa0, 0x5a, 0x9a, 0xc2, 0x8d, 0xc6, 0xd9, 0x85, 0xfa, 0xcd, 0x91, 0x32, 0xc1, 0xd6, 0x0c, + 0x59, 0x6b, 0x96, 0x3f, 0x39, 0x41, 0xed, 0xdb, 0xcf, 0xc2, 0x8c, 0x7b, 0xeb, 0xb2, 0x8d, 0x39, 0x00, 0x7d, 0x0a, + 0x29, 0x52, 0x66, 0x7a, 0x25, 0x45, 0xd5, 0x0a, 0x65, 0x29, 0xfb, 0x46, 0x9e, 0x61, 0x29, 0x3c, 0x59, 0x5b, 0x7b, + 0x5f, 0xa2, 0xfa, 0x14, 0xc2, 0xa1, 0x1b, 0x16, 0x9b, 0x46, 0xef, 0x8c, 0xa1, 0x69, 0xbd, 0xd9, 0x55, 0x8d, 0x85, + 0x98, 0x0f, 0x1e, 0xa9, 0x55, 0x76, 0xbc, 0x3e, 0xbd, 0x03, 0xa9, 0x49, 0xa5, 0x16, 0x6f, 0x58, 0xa3, 0x98, 0x49, + 0x56, 0x5c, 0xaf, 0x4c, 0x5b, 0x80, 0x56, 0x83, 0x27, 0xf8, 0x92, 0xbc, 0x63, 0xa3, 0x6c, 0x73, 0x01, 0x96, 0x64, + 0x78, 0x45, 0xd3, 0x2e, 0xfb, 0x45, 0x47, 0x1a, 0x83, 0x6f, 0x23, 0x42, 0x81, 0x88, 0xa6, 0xdf, 0x49, 0xc1, 0xfb, + 0x1c, 0x2c, 0x38, 0x76, 0xaf, 0xcc, 0x1e, 0x19, 0x1f, 0x49, 0xba, 0xb8, 0xc6, 0xfb, 0x39, 0x75, 0xf5, 0x9c, 0x2c, + 0x4c, 0x78, 0x75, 0xb4, 0x61, 0x94, 0xeb, 0xaa, 0x06, 0x8a, 0xbc, 0xea, 0xae, 0xd7, 0xba, 0x16, 0x12, 0x21, 0xbb, + 0xfa, 0x5c, 0xfe, 0xf4, 0x96, 0xb3, 0x8c, 0x93, 0x40, 0x5a, 0x03, 0xc1, 0x44, 0x7d, 0xd2, 0x7b, 0x88, 0x8a, 0x35, + 0xa3, 0x94, 0xe8, 0x80, 0x72, 0x42, 0x2a, 0x08, 0x3f, 0x03, 0xc6, 0x83, 0x45, 0x91, 0xc1, 0x65, 0xda, 0x8d, 0x56, + 0xff, 0xf5, 0x29, 0xcf, 0x13, 0xc3, 0x54, 0x65, 0xee, 0xd3, 0xe8, 0x39, 0xe9, 0x31, 0x4a, 0x96, 0xf9, 0x7d, 0xab, + 0x40, 0x62, 0x60, 0x72, 0x56, 0x4e, 0x57, 0xb3, 0x04, 0x20, 0x2a, 0x48, 0x9e, 0x76, 0x26, 0x07, 0xc4, 0x2a, 0xbb, + 0x69, 0x15, 0xe4, 0xdd, 0x05, 0xf8, 0x7d, 0x1d, 0x28, 0xb7, 0xa0, 0xa2, 0xf2, 0xd2, 0x7b, 0xce, 0x66, 0x71, 0xa0, + 0x07, 0x98, 0xe0, 0x56, 0x11, 0xb1, 0xf5, 0xd6, 0x62, 0x53, 0x2d, 0xa6, 0xf9, 0x45, 0x60, 0xb3, 0x67, 0xb7, 0x81, + 0x53, 0x70, 0xed, 0x9d, 0x8d, 0x77, 0x06, 0x64, 0xaa, 0xd3, 0xf0, 0x7e, 0x94, 0xab, 0x2a, 0xc2, 0x01, 0x98, 0xa1, + 0x07, 0xc2, 0x91, 0x57, 0x06, 0x79, 0xaa, 0x94, 0x4a, 0x93, 0xac, 0x16, 0xe1, 0x9a, 0x27, 0xe6, 0x19, 0xd4, 0x9d, + 0xe6, 0x28, 0xb3, 0x94, 0x96, 0x5a, 0x5f, 0xb9, 0xdb, 0xd3, 0x18, 0x1d, 0xbd, 0x20, 0xae, 0xc6, 0x70, 0xe5, 0xb3, + 0x7e, 0x96, 0x0f, 0x9f, 0xbf, 0xca, 0xde, 0x25, 0xe4, 0x3e, 0x88, 0xb5, 0xd7, 0x0c, 0xc8, 0x79, 0xce, 0x97, 0x37, + 0x35, 0x4a, 0x62, 0x01, 0x63, 0x10, 0xb4, 0x6e, 0xef, 0xa6, 0x69, 0xbb, 0xf4, 0xb9, 0xf9, 0x49, 0xb6, 0x23, 0x41, + 0x5b, 0xd4, 0x59, 0x55, 0x7b, 0xa1, 0x01, 0xe7, 0x42, 0xcd, 0x35, 0xed, 0x6f, 0xe8, 0x2d, 0xb5, 0xe1, 0x44, 0x6c, + 0x7d, 0x93, 0xac, 0x9c, 0x22, 0x9b, 0x00, 0xc7, 0xd3, 0xca, 0xb0, 0xfe, 0xb4, 0x29, 0x00, 0x33, 0x62, 0xdb, 0x78, + 0x88, 0xc6, 0x96, 0x70, 0x90, 0xb0, 0x5e, 0x90, 0x13, 0xdd, 0xf6, 0xa7, 0xab, 0x68, 0xcd, 0xc8, 0xbb, 0x3a, 0x8e, + 0x05, 0x69, 0xb3, 0x00, 0x5a, 0x78, 0x66, 0xb6, 0x42, 0xd9, 0xf3, 0xa7, 0x35, 0x91, 0x7b, 0x79, 0x03, 0x3f, 0xa1, + 0xe7, 0x01, 0x0c, 0x5c, 0x02, 0x10, 0x35, 0x2c, 0x38, 0x4f, 0x28, 0x04, 0x1a, 0xbe, 0xa4, 0xda, 0xe0, 0x43, 0xbe, + 0xbd, 0xd3, 0x9c, 0xb0, 0x83, 0xf0, 0xbd, 0x2a, 0x77, 0x0f, 0x1c, 0xaf, 0xd7, 0x05, 0xbc, 0xab, 0x1d, 0xb3, 0xb9, + 0x01, 0xc2, 0x1a, 0xed, 0x34, 0x0e, 0xc8, 0x9a, 0x3c, 0x93, 0x55, 0x31, 0x2a, 0x8e, 0xc5, 0x8c, 0x12, 0xca, 0xfd, + 0xec, 0xdf, 0xf8, 0x7f, 0xe8, 0xaf, 0xf1, 0xda, 0x51, 0x16, 0x4d, 0x74, 0xa8, 0xfe, 0xb0, 0xee, 0xbf, 0x65, 0x35, + 0xcd, 0x23, 0x5f, 0x58, 0xf2, 0xce, 0x2a, 0x36, 0xbe, 0x86, 0x8c, 0x46, 0xe9, 0x72, 0x71, 0x7b, 0x3f, 0xc0, 0x38, + 0x93, 0xfc, 0xeb, 0xa2, 0xa1, 0x80, 0xbd, 0xf8, 0x25, 0x6b, 0x8c, 0x7a, 0x65, 0x73, 0xd0, 0x27, 0xab, 0x63, 0xed, + 0x1d, 0x75, 0xfe, 0xc4, 0xb1, 0xaa, 0x06, 0x72, 0xb7, 0xee, 0xfb, 0x3b, 0xd9, 0x51, 0xe7, 0xd9, 0x71, 0xe6, 0xd2, + 0x32, 0xd9, 0x85, 0xd6, 0x9d, 0x00, 0x6d, 0x15, 0xc4, 0x3f, 0x94, 0x0b, 0x67, 0xd0, 0xb5, 0x2a, 0xd3, 0xf2, 0x50, + 0x22, 0x06, 0x4e, 0xe0, 0xc8, 0x72, 0x1a, 0x60, 0x95, 0x60, 0x31, 0xb0, 0xe5, 0x29, 0xcb, 0x02, 0x52, 0x86, 0x19, + 0x0d, 0x71, 0x23, 0x35, 0x3d, 0x04, 0x48, 0xb2, 0xa4, 0xc2, 0xd4, 0xf2, 0x0a, 0xc0, 0xcb, 0xab, 0xaf, 0x47, 0xd2, + 0x01, 0x8e, 0xde, 0xc2, 0xe4, 0xb1, 0xcb, 0x8a, 0x55, 0xe6, 0xa8, 0x5e, 0xbf, 0x70, 0x08, 0xab, 0xca, 0x1a, 0xab, + 0xf5, 0x1a, 0x8f, 0xcb, 0x9d, 0x8b, 0xa6, 0x8d, 0x20, 0xd6, 0xf1, 0xce, 0x4c, 0xc7, 0x1d, 0x7d, 0x5b, 0xd9, 0xe6, + 0xb5, 0x08, 0xd6, 0x3a, 0x7d, 0x10, 0x73, 0x25, 0x7b, 0x5b, 0xde, 0x31, 0x9e, 0x30, 0x91, 0x8e, 0x54, 0x54, 0x0d, + 0x46, 0x8b, 0x69, 0x5a, 0x0c, 0x6c, 0xec, 0x25, 0x98, 0x9e, 0xbf, 0xc5, 0x1f, 0x0f, 0x6b, 0xe8, 0xdc, 0x69, 0x7e, + 0xb1, 0x06, 0x13, 0x13, 0x15, 0x97, 0xa0, 0x24, 0x2b, 0xb6, 0x7a, 0xf0, 0xe6, 0xb1, 0x9f, 0x1a, 0xf4, 0xea, 0xdf, + 0x36, 0xb0, 0x8d, 0x7f, 0xec, 0xcf, 0x4a, 0x50, 0x03, 0x0e, 0xab, 0x8a, 0x64, 0x6d, 0x05, 0xad, 0xf0, 0x8c, 0xfe, + 0x34, 0x9f, 0x8b, 0x0c, 0x28, 0xc8, 0x36, 0x76, 0xde, 0x8c, 0x16, 0x8b, 0xc0, 0x54, 0x6a, 0xc8, 0xa6, 0x52, 0x89, + 0x3a, 0x28, 0xae, 0x2d, 0x1d, 0x67, 0x7b, 0xc9, 0x50, 0x4c, 0xd3, 0x7a, 0x39, 0xd4, 0xd8, 0x94, 0xfb, 0xda, 0x7f, + 0x12, 0x93, 0x76, 0x50, 0xe7, 0x9e, 0xe7, 0x36, 0xfa, 0xa0, 0xe4, 0xb6, 0xb2, 0x62, 0xd5, 0xb1, 0x37, 0x3d, 0x6b, + 0x4f, 0x0f, 0x27, 0xd3, 0xb1, 0x2d, 0xb6, 0x99, 0x5e, 0x29, 0x38, 0x34, 0xbc, 0x0e, 0x32, 0xcb, 0x50, 0xfb, 0x6f, + 0xd1, 0xf4, 0x03, 0x40, 0xa4, 0xfd, 0xec, 0x1d, 0x34, 0x44, 0x1f, 0x24, 0x89, 0xa8, 0xc3, 0x1e, 0x14, 0x24, 0x76, + 0x15, 0x95, 0xd3, 0x8c, 0xdf, 0xa7, 0x57, 0x2b, 0xd8, 0x9e, 0x68, 0x94, 0xa4, 0x51, 0x3e, 0x9e, 0x7e, 0xff, 0x61, + 0x0b, 0xd0, 0x11, 0x49, 0x91, 0x8e, 0x8b, 0x42, 0x9d, 0x0f, 0x18, 0x0d, 0xec, 0xd2, 0xa9, 0x2a, 0xe4, 0x62, 0x5b, + 0x6e, 0x4c, 0x83, 0x7f, 0x2b, 0xe4, 0xd6, 0x45, 0x48, 0x4b, 0x6c, 0xfc, 0x57, 0x45, 0x88, 0x4a, 0x2e, 0x63, 0x10, + 0x3b, 0xa8, 0x30, 0x04, 0x00, 0x58, 0x9e, 0xbf, 0x8f, 0x73, 0x91, 0xaf, 0xcc, 0x97, 0xd7, 0x85, 0x05, 0x14, 0x7f, + 0xbf, 0xfa, 0x62, 0x0b, 0x24, 0x7c, 0xf3, 0x6d, 0x10, 0x9a, 0xea, 0x46, 0x22, 0xcc, 0x32, 0xfe, 0x29, 0x11, 0xbd, + 0x98, 0xab, 0x63, 0x70, 0xe4, 0x5a, 0x6d, 0x35, 0x3a, 0x31, 0xd2, 0x22, 0xae, 0x9f, 0xc9, 0x7c, 0x33, 0xcc, 0x5f, + 0xb8, 0xf9, 0xa5, 0xae, 0x71, 0xe4, 0xb1, 0x0d, 0x99, 0x92, 0x19, 0x05, 0xf4, 0x2f, 0x37, 0xbd, 0x7e, 0xc4, 0xbf, + 0x5d, 0x3b, 0xf9, 0x12, 0xa1, 0x83, 0x4b, 0xfa, 0x53, 0x25, 0x92, 0x1f, 0x34, 0x6c, 0x1b, 0xb7, 0xb7, 0xe9, 0x54, + 0xff, 0xb6, 0x05, 0xaa, 0x71, 0x5a, 0x95, 0x11, 0xac, 0x8f, 0x4f, 0x83, 0xa7, 0xac, 0xe5, 0x33, 0x0b, 0xb8, 0x68, + 0x35, 0xd1, 0x8c, 0x66, 0x2a, 0x41, 0xcb, 0x76, 0x5d, 0x56, 0x7e, 0x5d, 0x00, 0x60, 0x58, 0x94, 0xf5, 0x72, 0xeb, + 0x57, 0xc5, 0xe2, 0x05, 0xe5, 0x34, 0x9e, 0xd7, 0xda, 0x02, 0x70, 0xee, 0x8c, 0x1d, 0x33, 0xb2, 0x6a, 0x68, 0x0d, + 0x55, 0x78, 0xb8, 0xd5, 0xe0, 0x3b, 0x52, 0x31, 0x64, 0x6a, 0xf4, 0x3b, 0xb0, 0x21, 0x39, 0x5f, 0x85, 0x94, 0xfe, + 0xba, 0xc3, 0x86, 0xb6, 0x6e, 0xb5, 0x89, 0x74, 0xf5, 0x14, 0x99, 0xf4, 0x6f, 0x3f, 0x88, 0x3d, 0x75, 0x3e, 0xc0, + 0xe8, 0x04, 0x8e, 0x9d, 0x54, 0x59, 0x99, 0x48, 0x06, 0x78, 0x71, 0xe2, 0xc5, 0xfd, 0xe7, 0xdd, 0x17, 0xdf, 0xa6, + 0x52, 0xc5, 0x7c, 0x5c, 0x35, 0xa8, 0xf4, 0x65, 0x65, 0xe7, 0x13, 0x38, 0xaa, 0x6c, 0xf2, 0x51, 0x49, 0x70, 0x55, + 0x19, 0x30, 0x6d, 0x54, 0x9c, 0xdb, 0xe2, 0x27, 0xb1, 0x45, 0x47, 0xd6, 0xb5, 0x89, 0xd2, 0x8f, 0x91, 0x05, 0x09, + 0xc1, 0x05, 0xa3, 0xb0, 0x62, 0x93, 0x6e, 0xae, 0xb7, 0x82, 0xb9, 0xf1, 0x38, 0x33, 0x28, 0xd5, 0x6c, 0x5c, 0x8b, + 0x07, 0xa9, 0xc5, 0x4b, 0x6f, 0x0b, 0x40, 0x23, 0x7e, 0xcb, 0x70, 0x3f, 0x5a, 0x51, 0x34, 0x0d, 0xdf, 0x24, 0x67, + 0x7c, 0x97, 0xe5, 0x4a, 0x77, 0x6f, 0x42, 0xc8, 0x9b, 0xb0, 0x15, 0x36, 0xc5, 0xde, 0x68, 0x9c, 0x8d, 0x4c, 0x3c, + 0x2e, 0xe2, 0xe1, 0x9a, 0xd2, 0x9e, 0x12, 0xc2, 0x88, 0x18, 0xdb, 0xae, 0xdb, 0x0a, 0x4f, 0x5b, 0x0c, 0x21, 0x0e, + 0x12, 0xce, 0x0b, 0xc1, 0x1f, 0x0e, 0xd2, 0xeb, 0x4b, 0x13, 0x96, 0xdc, 0x55, 0xb8, 0x4b, 0x01, 0x3b, 0xd2, 0xbf, + 0xb2, 0xfc, 0xb1, 0x10, 0x65, 0xdf, 0xec, 0x51, 0x24, 0xa0, 0x2b, 0xd4, 0xf3, 0x56, 0xd5, 0x89, 0x54, 0x4a, 0x3b, + 0x2f, 0x23, 0x2d, 0x6c, 0x8f, 0xdb, 0x03, 0x4e, 0x43, 0x64, 0x21, 0xee, 0x65, 0x31, 0x34, 0xd7, 0xe0, 0x8b, 0xb2, + 0x14, 0x3d, 0xdf, 0x50, 0xd9, 0x6b, 0x5c, 0x29, 0xfd, 0x78, 0xe4, 0x19, 0x4b, 0x79, 0xc5, 0xce, 0x47, 0x72, 0x78, + 0x64, 0xf7, 0xc9, 0x50, 0x78, 0xf6, 0x9e, 0x19, 0xd7, 0x4e, 0xa3, 0x2c, 0xe9, 0x7b, 0x9e, 0x82, 0x54, 0x80, 0x67, + 0x94, 0x42, 0x68, 0xe4, 0x98, 0xd5, 0x6c, 0x9e, 0x93, 0x53, 0x66, 0x84, 0x73, 0x3b, 0x07, 0x70, 0xd2, 0x89, 0x5c, + 0xe9, 0x4a, 0xd2, 0x79, 0x22, 0x29, 0x02, 0x2f, 0x18, 0x6d, 0xd4, 0x77, 0xd5, 0xdd, 0x4c, 0xab, 0x6a, 0x4b, 0x4c, + 0x74, 0x63, 0x56, 0x68, 0x04, 0xdf, 0x55, 0xb6, 0x90, 0x02, 0x3e, 0x52, 0x3a, 0x04, 0xa5, 0xd1, 0x41, 0xd7, 0x17, + 0xb5, 0x25, 0x15, 0xbe, 0xc6, 0xa5, 0x46, 0x40, 0x65, 0x2d, 0x8b, 0xda, 0xb2, 0xd0, 0x4b, 0x23, 0x45, 0x69, 0x18, + 0xed, 0x3e, 0x31, 0x51, 0x7d, 0xcd, 0xd4, 0xba, 0xd4, 0xf8, 0x55, 0xa2, 0x7b, 0xbd, 0xc2, 0xa9, 0xc4, 0x83, 0x49, + 0xca, 0x34, 0x6e, 0x81, 0xad, 0x3a, 0x66, 0x40, 0x96, 0xb7, 0x0a, 0x8a, 0x6d, 0x81, 0x7c, 0x8c, 0x04, 0x5e, 0x40, + 0x4a, 0x61, 0x23, 0xa2, 0xf6, 0x40, 0xf1, 0x84, 0x94, 0xa8, 0xfa, 0x79, 0xc2, 0xf2, 0x6a, 0x2f, 0x1a, 0x61, 0x46, + 0x3c, 0xe7, 0x52, 0x8a, 0xe6, 0xda, 0xed, 0xc2, 0xe3, 0x12, 0xc0, 0x73, 0xf2, 0x8b, 0x8a, 0x17, 0x69, 0x9a, 0xe3, + 0x12, 0xa1, 0xf1, 0xf3, 0xc6, 0xcd, 0x12, 0xd5, 0xc8, 0x32, 0x3f, 0xbd, 0x7c, 0x2d, 0xdb, 0x8f, 0xba, 0x80, 0x89, + 0x70, 0xbc, 0x30, 0xe1, 0xb9, 0x6b, 0x08, 0x0a, 0x61, 0x8c, 0xeb, 0x06, 0x84, 0x22, 0xd5, 0x40, 0xb9, 0x59, 0x79, + 0xce, 0xc0, 0x24, 0x51, 0xfe, 0xcd, 0x07, 0x25, 0xe4, 0x06, 0xff, 0x67, 0x39, 0xec, 0xb8, 0x95, 0x95, 0xb9, 0xbd, + 0x28, 0xec, 0x1a, 0x27, 0x24, 0x17, 0xaa, 0x1b, 0xfb, 0x10, 0xfe, 0x9f, 0xb3, 0x33, 0x00, 0xa6, 0x26, 0x20, 0x9f, + 0xed, 0xb9, 0x79, 0xc8, 0xef, 0x65, 0x69, 0xca, 0x54, 0xde, 0x28, 0xe1, 0x2d, 0x5c, 0x1f, 0xed, 0xc6, 0xfe, 0xab, + 0x57, 0x1a, 0xb8, 0x63, 0xf7, 0xc1, 0xd0, 0xa8, 0xf2, 0xba, 0x61, 0xe7, 0x4b, 0xb3, 0xdb, 0xcd, 0x28, 0x56, 0x2f, + 0x8d, 0x5a, 0x75, 0x4b, 0xf9, 0x9c, 0xf2, 0x75, 0x99, 0xa2, 0x71, 0xf5, 0x9d, 0xaf, 0xdb, 0x51, 0xed, 0xed, 0x27, + 0x6d, 0xec, 0xed, 0x8e, 0x44, 0x49, 0x5f, 0xb4, 0x14, 0x9a, 0xaa, 0x9f, 0xdf, 0x1f, 0x40, 0x5c, 0xa1, 0xf2, 0x8f, + 0xff, 0x3c, 0xca, 0x72, 0x6f, 0x89, 0xcf, 0xf4, 0x90, 0x19, 0x78, 0xb9, 0x8c, 0x1b, 0xe2, 0xe8, 0x1e, 0x10, 0x42, + 0xa1, 0x9a, 0x64, 0xb2, 0x53, 0x5c, 0x6d, 0x97, 0xef, 0x4a, 0x38, 0xa7, 0x94, 0xec, 0xf2, 0x6d, 0xb0, 0x37, 0xa1, + 0x7a, 0xb7, 0x6f, 0x3f, 0x93, 0x81, 0x71, 0x28, 0x92, 0x91, 0xea, 0x07, 0x06, 0xde, 0xda, 0x8b, 0x53, 0x94, 0x3e, + 0xde, 0x21, 0xb3, 0x0a, 0xbe, 0x8d, 0x69, 0xbe, 0x71, 0x1c, 0x21, 0xd5, 0xa7, 0xe2, 0xa6, 0x6a, 0xf5, 0x37, 0x62, + 0x44, 0x25, 0x1e, 0x5f, 0xdb, 0x01, 0x71, 0x48, 0xa6, 0xcd, 0x58, 0x7e, 0x91, 0x72, 0xe9, 0x48, 0x7e, 0x23, 0x46, + 0x6e, 0xd3, 0xd9, 0xfd, 0xdb, 0xf3, 0x6e, 0x0b, 0x62, 0x33, 0x22, 0x87, 0x3f, 0xee, 0x10, 0xfc, 0x72, 0x81, 0x2c, + 0x12, 0xb3, 0x2d, 0x21, 0xc2, 0x4a, 0x2b, 0x73, 0xe5, 0xb3, 0x6a, 0x27, 0xd0, 0x0d, 0x28, 0x55, 0x40, 0x97, 0x67, + 0xe5, 0x5f, 0xff, 0x62, 0x11, 0x7e, 0x13, 0x3a, 0x07, 0x65, 0x5a, 0xa4, 0x3a, 0x22, 0xb4, 0xf9, 0x80, 0xb7, 0x41, + 0x8e, 0xec, 0x45, 0x5f, 0xe0, 0x10, 0xdb, 0x85, 0x7d, 0x33, 0xdf, 0x40, 0x26, 0xec, 0x7f, 0xeb, 0xbf, 0x2f, 0xb6, + 0x9f, 0xfe, 0xe7, 0xcf, 0xe0, 0x28, 0x0d, 0x47, 0x21, 0x64, 0x2a, 0x98, 0x6c, 0x62, 0x0e, 0x56, 0x78, 0xdf, 0x20, + 0xaa, 0x8f, 0xf9, 0x11, 0xad, 0x38, 0x20, 0x19, 0xfe, 0x6a, 0xd4, 0xc0, 0x43, 0x8b, 0x22, 0x28, 0xc5, 0xac, 0xe2, + 0x56, 0x01, 0x2d, 0xe7, 0x0f, 0xb3, 0xb1, 0xe1, 0xc4, 0x42, 0xb6, 0xac, 0x71, 0xc2, 0x7a, 0x62, 0x86, 0x0b, 0x50, + 0xbb, 0x58, 0x4d, 0xc4, 0xf5, 0x4d, 0x7a, 0x2b, 0x1c, 0xf1, 0x7e, 0x1b, 0x7f, 0x10, 0x66, 0x4e, 0xfe, 0x29, 0x14, + 0x95, 0xdd, 0xcd, 0xef, 0x18, 0x3c, 0xcd, 0x02, 0x66, 0x0e, 0x07, 0xe3, 0xc2, 0x1f, 0x38, 0xd7, 0xb5, 0xb8, 0x47, + 0xb8, 0xbe, 0x6b, 0xcf, 0x62, 0xd5, 0x1d, 0x70, 0xc9, 0x5a, 0x5b, 0x11, 0xd3, 0xb2, 0x10, 0x6a, 0x04, 0xd2, 0x5e, + 0x6f, 0x48, 0x50, 0x64, 0xcd, 0x7f, 0xa3, 0xf0, 0x37, 0x29, 0xc1, 0xf3, 0x6b, 0x8e, 0xb5, 0xcc, 0x30, 0x47, 0x44, + 0x12, 0x6e, 0xb4, 0x1e, 0x87, 0x2f, 0x36, 0x56, 0x16, 0x38, 0xb9, 0x09, 0x2e, 0x16, 0x52, 0x46, 0xc5, 0x88, 0x41, + 0x94, 0xc2, 0x64, 0xac, 0x87, 0x08, 0xae, 0x3c, 0x41, 0x0e, 0x56, 0xd7, 0xea, 0x4f, 0x69, 0xe2, 0x6d, 0xdc, 0x7e, + 0x68, 0x61, 0xe9, 0x7e, 0x41, 0x5b, 0xca, 0x58, 0x2c, 0xc8, 0x4b, 0xa1, 0x13, 0x48, 0x07, 0xf6, 0xc9, 0x9f, 0x70, + 0x5a, 0x96, 0x04, 0x74, 0xd3, 0x59, 0x44, 0xd8, 0x25, 0x26, 0x01, 0x86, 0xa4, 0x3b, 0x1c, 0x8d, 0xbc, 0x7b, 0x6a, + 0x46, 0x97, 0x26, 0x7d, 0x50, 0x3a, 0xb1, 0xaf, 0xfa, 0x19, 0xd8, 0x5a, 0xcb, 0x29, 0x17, 0x73, 0x04, 0x80, 0xf3, + 0x0a, 0x57, 0x43, 0xfa, 0x4a, 0x1d, 0x0f, 0x91, 0x7f, 0x44, 0x8d, 0xbf, 0x28, 0xe2, 0x7e, 0x34, 0xd0, 0xb7, 0xe3, + 0x39, 0xa1, 0x05, 0x60, 0x47, 0xd9, 0x88, 0x0f, 0x6a, 0x8e, 0xbe, 0xd2, 0x55, 0x25, 0x78, 0x69, 0x0e, 0x5a, 0xca, + 0x1c, 0x0d, 0x7f, 0xca, 0x8d, 0xce, 0x38, 0x32, 0x0d, 0xe0, 0x0e, 0xc6, 0x74, 0x93, 0x72, 0x4d, 0xa7, 0xf6, 0xcd, + 0x0f, 0xc5, 0x5f, 0x93, 0x5e, 0xe9, 0x8d, 0x9e, 0x0b, 0x50, 0x3c, 0x14, 0x90, 0x5d, 0xed, 0x3c, 0x98, 0x81, 0x40, + 0x19, 0xc1, 0xa8, 0x47, 0x62, 0x4e, 0x0a, 0xbb, 0xe1, 0x18, 0x87, 0xea, 0x28, 0x91, 0xf0, 0xd1, 0x04, 0xa4, 0x94, + 0x80, 0x3d, 0x75, 0x21, 0x43, 0x19, 0xfe, 0x16, 0x8c, 0x8c, 0xc1, 0xa7, 0xc3, 0x11, 0xf2, 0x6e, 0x88, 0x98, 0x1e, + 0x2d, 0x11, 0x84, 0x1d, 0x25, 0xb2, 0xf2, 0x4d, 0x32, 0x00, 0xfb, 0x31, 0xe5, 0x5f, 0x4d, 0xfb, 0x70, 0x28, 0x15, + 0x31, 0x89, 0x73, 0xa4, 0x56, 0xc2, 0x3c, 0x69, 0x66, 0x4c, 0x9a, 0x8d, 0xb2, 0x9d, 0x04, 0x08, 0xeb, 0x61, 0xf5, + 0x63, 0x0d, 0x6a, 0x8b, 0x8a, 0x39, 0xb5, 0x71, 0xcf, 0x9a, 0x71, 0x55, 0xd7, 0x3d, 0xf0, 0xa2, 0xeb, 0xc7, 0x39, + 0x1b, 0x5c, 0xc0, 0xee, 0x89, 0x2a, 0xc6, 0xe3, 0x1c, 0x2c, 0x3b, 0xf7, 0x32, 0xc1, 0xd6, 0xea, 0xa4, 0x37, 0x55, + 0x6b, 0xba, 0xcd, 0xdf, 0x4c, 0x53, 0x15, 0x53, 0x2f, 0x19, 0x31, 0xdb, 0x4d, 0xce, 0x59, 0x8d, 0xb0, 0x41, 0x36, + 0xd4, 0xfc, 0x05, 0x67, 0xc6, 0xba, 0x9c, 0x49, 0xee, 0x89, 0xa4, 0xdb, 0xb2, 0xe2, 0x67, 0xb5, 0x7d, 0x10, 0x69, + 0x17, 0x04, 0x0a, 0x25, 0x87, 0xf2, 0x42, 0x38, 0xa6, 0xf0, 0x49, 0x43, 0xb8, 0x36, 0x2c, 0xc3, 0x60, 0xbf, 0x17, + 0x07, 0x26, 0xbe, 0xc7, 0xcb, 0x2e, 0xd5, 0x66, 0xf3, 0x11, 0xe3, 0x3d, 0x73, 0xbd, 0x58, 0xcf, 0x1a, 0x76, 0x98, + 0x75, 0x99, 0x3a, 0xa6, 0x1e, 0xad, 0xc8, 0xa8, 0xc9, 0xba, 0xf0, 0x99, 0xc4, 0xbd, 0x00, 0x55, 0x65, 0x36, 0xc2, + 0x51, 0xe4, 0x36, 0xef, 0xc1, 0x55, 0x5d, 0xdb, 0xb3, 0x0a, 0x8e, 0x59, 0x8e, 0x53, 0x0e, 0x11, 0xf4, 0xed, 0xe6, + 0x0a, 0xa1, 0xd8, 0x4e, 0xd4, 0x1c, 0x3a, 0x7b, 0x8c, 0x14, 0x39, 0x3f, 0x39, 0xbc, 0x03, 0xa0, 0xd6, 0xb6, 0x24, + 0x4d, 0xb4, 0x20, 0x56, 0x62, 0x34, 0x19, 0x2c, 0x99, 0x9b, 0xb1, 0xf8, 0x5d, 0x2f, 0xcc, 0x5d, 0x41, 0xa4, 0x87, + 0x2a, 0xc9, 0x34, 0x84, 0x81, 0xb8, 0x3e, 0x3a, 0xed, 0x48, 0xa1, 0x50, 0x65, 0xd1, 0x08, 0x29, 0x0a, 0xd4, 0x58, + 0xfc, 0x29, 0x34, 0x3f, 0xf2, 0xf2, 0x76, 0x40, 0xd2, 0x3e, 0xd2, 0x2f, 0x7c, 0x9a, 0x34, 0x95, 0x61, 0xb2, 0xcd, + 0xa3, 0x5a, 0xa9, 0x02, 0x91, 0x45, 0x1f, 0x73, 0x5e, 0x52, 0xd2, 0xe2, 0x27, 0xbb, 0x43, 0xdb, 0x5c, 0x08, 0x8b, + 0x70, 0x8a, 0x02, 0x77, 0x92, 0x12, 0x2e, 0xe2, 0x8c, 0x50, 0x35, 0x3f, 0x89, 0x22, 0x96, 0x6d, 0xb1, 0x03, 0xc8, + 0x3f, 0x35, 0x97, 0x5e, 0x0d, 0xf7, 0x40, 0x38, 0xe6, 0x8c, 0xe0, 0x1a, 0xdf, 0xe2, 0x28, 0x0a, 0x01, 0x81, 0x72, + 0x07, 0xf5, 0x88, 0x1a, 0xf0, 0xf4, 0x72, 0x57, 0x5d, 0xce, 0x02, 0xef, 0x6c, 0x5e, 0x95, 0xcc, 0x49, 0x40, 0x26, + 0xd9, 0x1e, 0x79, 0xc9, 0x0f, 0x1d, 0xaf, 0xfa, 0xd8, 0xe6, 0xf8, 0x70, 0x15, 0xc0, 0xa8, 0xc3, 0x2e, 0x7b, 0xfa, + 0x2c, 0xde, 0xb0, 0x7c, 0x31, 0x5f, 0x30, 0x2d, 0x0c, 0xab, 0x97, 0xd2, 0x51, 0xc9, 0x99, 0xdb, 0x6a, 0x34, 0x44, + 0x79, 0xe1, 0x0d, 0x84, 0x1e, 0xc3, 0x1b, 0x44, 0x2e, 0xef, 0x17, 0xdc, 0x4c, 0xb7, 0xb6, 0xc2, 0x58, 0x2d, 0x17, + 0xc2, 0x4d, 0x8a, 0x16, 0x1a, 0xd0, 0x8f, 0x17, 0xce, 0x2c, 0x86, 0x9c, 0xef, 0x52, 0x73, 0x40, 0x8f, 0x28, 0x1d, + 0x87, 0x99, 0x2a, 0xde, 0xf2, 0x70, 0x5e, 0xdb, 0x58, 0x28, 0x5c, 0xfb, 0xdd, 0x73, 0x35, 0xdb, 0xb2, 0x33, 0xbb, + 0x28, 0xa5, 0xe6, 0xee, 0xe7, 0x45, 0x26, 0x23, 0x60, 0x8e, 0x15, 0xa3, 0x23, 0x56, 0x8c, 0xd0, 0xb1, 0xde, 0xbc, + 0x56, 0xdf, 0x06, 0xe2, 0x42, 0x73, 0x2c, 0x34, 0x30, 0x7d, 0x95, 0x28, 0x57, 0x14, 0xcb, 0x15, 0xa2, 0x20, 0x2c, + 0x4a, 0xb2, 0x12, 0x56, 0x35, 0x71, 0xdf, 0x01, 0x41, 0x27, 0x24, 0x6e, 0x64, 0xfe, 0x5a, 0xac, 0xf0, 0x87, 0xd5, + 0x43, 0x25, 0x37, 0x78, 0x67, 0xd8, 0xe9, 0xbe, 0xb1, 0x0c, 0x9a, 0x40, 0xcf, 0x6a, 0x51, 0x9a, 0xfa, 0xde, 0x88, + 0xb4, 0x0f, 0x57, 0x37, 0x00, 0x19, 0xf9, 0x25, 0xb9, 0xd0, 0x19, 0x61, 0xb4, 0xc4, 0xc8, 0x1b, 0x16, 0x32, 0xd9, + 0x2e, 0xd0, 0x54, 0x9f, 0x4c, 0xe7, 0x05, 0x1c, 0x77, 0x98, 0x95, 0x35, 0x1e, 0x9f, 0xf3, 0x18, 0xb9, 0x84, 0x25, + 0xc2, 0xf5, 0xa6, 0xbd, 0x46, 0xef, 0xc7, 0x13, 0x88, 0x17, 0xf2, 0xaf, 0xfa, 0xa0, 0x78, 0x01, 0x1e, 0x5f, 0xeb, + 0x10, 0xfa, 0x05, 0xe7, 0x36, 0x87, 0xb2, 0x42, 0x67, 0xdb, 0xe5, 0xe9, 0x5a, 0x9b, 0xe4, 0xf7, 0xe3, 0x8a, 0xe1, + 0x54, 0x6c, 0x0f, 0x01, 0x69, 0x71, 0x1b, 0xc1, 0xaf, 0x10, 0xae, 0x10, 0xca, 0xe0, 0xc9, 0xb7, 0x20, 0xe3, 0x39, + 0x1f, 0x34, 0xc3, 0xcd, 0x08, 0x51, 0xd0, 0x96, 0x17, 0xeb, 0x03, 0x83, 0x41, 0x9c, 0x2c, 0xbc, 0x1b, 0x13, 0xcb, + 0x90, 0x16, 0x8a, 0xf9, 0x39, 0x31, 0xa8, 0x05, 0xad, 0x43, 0x41, 0xb2, 0x8a, 0xcc, 0x7f, 0x63, 0x15, 0x29, 0xfd, + 0xb7, 0xeb, 0x6d, 0xf0, 0x2e, 0xdc, 0x39, 0xd5, 0x8f, 0x94, 0x32, 0x72, 0x0d, 0xa8, 0xad, 0xa3, 0xa6, 0xe4, 0xf0, + 0x51, 0x9e, 0x39, 0x53, 0xb0, 0x03, 0x11, 0x83, 0xbb, 0xbe, 0x8e, 0x3c, 0x6c, 0x99, 0xc0, 0xf9, 0x79, 0x4b, 0x53, + 0x0d, 0x9a, 0x17, 0x62, 0x52, 0x26, 0x69, 0x86, 0x56, 0x8e, 0x93, 0xe1, 0x4a, 0x3c, 0x35, 0xa0, 0xa7, 0xe7, 0xf6, + 0xac, 0xef, 0x08, 0x4c, 0x6e, 0x6d, 0xcb, 0x66, 0x09, 0x87, 0x2c, 0x2c, 0x72, 0xfd, 0x77, 0x94, 0xdf, 0x68, 0x08, + 0xf4, 0xf4, 0xb3, 0x9a, 0x42, 0x21, 0x58, 0x4a, 0x73, 0x95, 0xff, 0xef, 0xb7, 0x4e, 0x3f, 0x97, 0x5e, 0x48, 0x24, + 0xed, 0x6f, 0x99, 0x46, 0xde, 0x21, 0x4d, 0x85, 0x12, 0xa2, 0x6d, 0x13, 0x29, 0x66, 0x51, 0x2f, 0x37, 0x39, 0xad, + 0x04, 0xd9, 0x4a, 0xbd, 0x63, 0xcc, 0x02, 0x25, 0x1f, 0x5b, 0xe3, 0x5c, 0x28, 0x97, 0xf5, 0xc3, 0x06, 0xe5, 0x31, + 0xeb, 0xa7, 0x07, 0xe6, 0x07, 0x55, 0xa2, 0x4f, 0xa7, 0x1d, 0x70, 0x83, 0x8e, 0xc4, 0xfb, 0x82, 0xab, 0x6c, 0x97, + 0xdf, 0xe2, 0x8e, 0x3f, 0x4d, 0x57, 0x01, 0xdd, 0x5c, 0x91, 0x86, 0xeb, 0xf7, 0x21, 0x45, 0xa9, 0xf4, 0x25, 0x1f, + 0x94, 0xeb, 0x82, 0x90, 0x89, 0xd6, 0x09, 0x25, 0x5c, 0x55, 0x06, 0x61, 0x53, 0x7e, 0x1a, 0x9e, 0xda, 0x99, 0xe1, + 0x7d, 0x52, 0x73, 0x80, 0x58, 0xd2, 0xdb, 0xb7, 0x02, 0x14, 0xe7, 0xd3, 0x64, 0x61, 0x00, 0xf1, 0x77, 0xa1, 0xfe, + 0x94, 0x8e, 0x70, 0xa1, 0xd1, 0xa0, 0x1b, 0x32, 0x48, 0xcc, 0x93, 0xdc, 0x5a, 0xe0, 0x07, 0xb5, 0x62, 0x76, 0x38, + 0x07, 0x02, 0x0c, 0xaf, 0x18, 0x59, 0x25, 0xea, 0x6f, 0x49, 0xec, 0x43, 0xbb, 0xb9, 0xf3, 0x5a, 0x79, 0x8a, 0x15, + 0x22, 0xae, 0x8f, 0x15, 0xb2, 0xe1, 0x10, 0xa6, 0x7f, 0x9d, 0x8e, 0xa9, 0x33, 0x46, 0xb0, 0x5c, 0xff, 0x5d, 0xc0, + 0x3c, 0x3e, 0x43, 0x1d, 0x82, 0x4b, 0x75, 0xc4, 0x58, 0x67, 0x31, 0x0c, 0xd5, 0x3e, 0x08, 0x0b, 0x0d, 0x81, 0xf8, + 0xd3, 0x12, 0xea, 0x31, 0xeb, 0x7d, 0x5b, 0x80, 0xd4, 0x17, 0xe1, 0x05, 0x9d, 0x40, 0x54, 0x52, 0xe7, 0xe2, 0x20, + 0x9a, 0x8d, 0xcb, 0x51, 0xc8, 0x64, 0x07, 0x5f, 0x88, 0x20, 0xa2, 0xcc, 0x58, 0x61, 0x28, 0x45, 0xd3, 0x31, 0x99, + 0xb0, 0xcf, 0xca, 0xba, 0x79, 0xdd, 0xd6, 0x51, 0x41, 0x67, 0x5b, 0x0a, 0x8b, 0x05, 0x21, 0x39, 0x50, 0xfe, 0x8b, + 0x6a, 0x3d, 0xe2, 0x8d, 0x70, 0xcd, 0x3f, 0x84, 0xff, 0x44, 0xff, 0xa9, 0xed, 0xb6, 0x3c, 0x48, 0x90, 0xae, 0xea, + 0x34, 0x2a, 0x08, 0x99, 0x0b, 0xb8, 0xd5, 0x30, 0x7f, 0x93, 0x1b, 0x6d, 0x4e, 0x75, 0x18, 0xd7, 0xb2, 0xdd, 0x0d, + 0xf8, 0xce, 0xb6, 0xe2, 0xc8, 0x38, 0x9d, 0x86, 0x1f, 0x71, 0xaf, 0xd5, 0x01, 0x15, 0x02, 0x89, 0xf8, 0xed, 0x7b, + 0xa6, 0x41, 0xad, 0x2a, 0x03, 0xf1, 0xc1, 0xad, 0x8e, 0xb7, 0xe8, 0xb3, 0x59, 0xb8, 0x3c, 0x3e, 0xb1, 0x0c, 0x36, + 0x92, 0x0e, 0xb4, 0xd9, 0x6a, 0xb1, 0x5c, 0x59, 0x24, 0xd0, 0xd8, 0x5e, 0xd0, 0xb6, 0xa3, 0xfe, 0x04, 0xe7, 0xe0, + 0x5a, 0xf3, 0x33, 0x70, 0xf9, 0xd6, 0x36, 0xc5, 0x17, 0x0c, 0xc2, 0x6f, 0x11, 0x81, 0xca, 0xab, 0x8f, 0x5f, 0x1f, + 0x83, 0x61, 0x54, 0x1c, 0x4c, 0x76, 0x40, 0xc3, 0x98, 0x23, 0xe7, 0x13, 0xa0, 0xc7, 0x49, 0x0d, 0xd5, 0x09, 0xfc, + 0x1c, 0x05, 0xf9, 0x41, 0xdc, 0xf2, 0x5c, 0x83, 0xd8, 0xeb, 0x6a, 0xd9, 0x67, 0xcd, 0xa5, 0x0f, 0x3f, 0x25, 0x1c, + 0xaf, 0x35, 0xe4, 0x16, 0x48, 0x79, 0x67, 0x6c, 0x25, 0x83, 0xc4, 0xf0, 0xe4, 0x5e, 0x04, 0x17, 0x0b, 0x25, 0x35, + 0x27, 0xbc, 0xf0, 0x22, 0x1d, 0x35, 0x97, 0x7c, 0x18, 0x2c, 0xb8, 0x41, 0x12, 0x5d, 0x0a, 0xcb, 0xd7, 0x04, 0x03, + 0xd7, 0xff, 0x70, 0x04, 0x6a, 0xeb, 0x34, 0x81, 0xb5, 0x61, 0x33, 0xeb, 0x83, 0xf3, 0x3e, 0xdd, 0x7a, 0xd3, 0x6d, + 0xe6, 0x9f, 0x0d, 0x17, 0x0a, 0x60, 0xeb, 0x9f, 0xa7, 0x8f, 0xd4, 0x78, 0xf3, 0x15, 0x89, 0x7e, 0x93, 0x9d, 0x02, + 0xeb, 0x41, 0x2f, 0x27, 0x81, 0xa0, 0x10, 0x78, 0x26, 0x72, 0xec, 0x55, 0xd4, 0x35, 0x1a, 0x20, 0x34, 0xc2, 0x4c, + 0x89, 0x5b, 0x70, 0xa9, 0xf4, 0xea, 0xd5, 0x49, 0x18, 0xc6, 0x5a, 0x2c, 0x15, 0xe0, 0x43, 0x80, 0x43, 0xc3, 0xde, + 0xfa, 0x9c, 0xf1, 0xe9, 0x6b, 0x70, 0x63, 0xfe, 0xc2, 0x53, 0x31, 0x6d, 0xfa, 0xff, 0xcd, 0x94, 0x7c, 0xcc, 0xf1, + 0x7b, 0x89, 0x8e, 0xca, 0xbc, 0x6e, 0x5c, 0x31, 0x92, 0x12, 0xca, 0x2e, 0x24, 0xe3, 0x2f, 0xa0, 0x17, 0xad, 0x9b, + 0x26, 0x5a, 0x6b, 0x93, 0x18, 0x70, 0x75, 0x22, 0xfe, 0x9a, 0x94, 0xf6, 0x3d, 0xa3, 0x91, 0x6d, 0x96, 0x47, 0x61, + 0xb6, 0xc0, 0x2b, 0x2a, 0x22, 0xae, 0x02, 0xf1, 0xcc, 0xb8, 0x9c, 0x5f, 0xfc, 0xba, 0x1c, 0x9c, 0x2e, 0x70, 0x96, + 0x70, 0x93, 0x87, 0x92, 0xff, 0x6a, 0x89, 0x3e, 0x5d, 0x02, 0xfb, 0x2a, 0x26, 0xcb, 0x88, 0xaf, 0xf3, 0x3f, 0x0f, + 0x47, 0xe4, 0xfe, 0xb1, 0x0b, 0xd3, 0x61, 0xa4, 0xf7, 0x40, 0x59, 0x4b, 0xc1, 0xa3, 0xbb, 0xe6, 0x56, 0xe0, 0x14, + 0xe1, 0x47, 0x51, 0xd4, 0x7e, 0xb0, 0x04, 0x81, 0xf5, 0xea, 0x30, 0xdc, 0xab, 0xe2, 0xa5, 0x34, 0xaa, 0xad, 0x81, + 0xab, 0x02, 0xaf, 0x42, 0x41, 0x35, 0x73, 0xfa, 0x01, 0xbd, 0x2c, 0xb3, 0xab, 0xcd, 0xeb, 0x78, 0xb5, 0xf7, 0x9d, + 0x36, 0xd7, 0x99, 0xa8, 0x7d, 0x8f, 0xfc, 0x0d, 0x19, 0x31, 0x26, 0x46, 0xf8, 0x37, 0x4d, 0x81, 0x9e, 0x17, 0x68, + 0x5c, 0xce, 0xa1, 0x12, 0x78, 0x8e, 0x24, 0xd5, 0x98, 0xfc, 0x46, 0x5e, 0x2d, 0x40, 0x6a, 0x67, 0xdf, 0xfe, 0x17, + 0x81, 0xeb, 0xc5, 0xe3, 0xbe, 0x05, 0xa4, 0x39, 0x44, 0xab, 0x3f, 0x5f, 0x45, 0xae, 0xc6, 0xbf, 0x5c, 0xb8, 0x54, + 0x1a, 0x19, 0x13, 0xd1, 0xee, 0xbc, 0x68, 0x89, 0xbf, 0x3a, 0xbd, 0xa9, 0x39, 0x1c, 0xf6, 0x94, 0x96, 0x8e, 0xf4, + 0x6d, 0xe8, 0xc0, 0x8d, 0xbf, 0xa4, 0x5c, 0x0f, 0xcf, 0x8c, 0x6c, 0xce, 0xc2, 0x4b, 0xdf, 0xec, 0x5d, 0x59, 0x3a, + 0xa2, 0x4e, 0x49, 0xd8, 0xc6, 0xd7, 0xe5, 0x50, 0x28, 0x16, 0x93, 0x6f, 0x6c, 0x80, 0x1e, 0xb6, 0x9e, 0x25, 0x04, + 0x70, 0x49, 0xc1, 0xe4, 0x3b, 0x2c, 0xb8, 0xa2, 0xdc, 0x7a, 0x27, 0xe6, 0x9d, 0xcd, 0xfd, 0xda, 0x75, 0x16, 0x48, + 0xe8, 0x51, 0x1d, 0x02, 0x7e, 0x93, 0x5b, 0xb0, 0x13, 0x2c, 0xcd, 0xc9, 0xe6, 0x08, 0x71, 0x41, 0x51, 0xb5, 0x87, + 0x4d, 0xc8, 0x60, 0xcf, 0x8d, 0x18, 0xa5, 0x48, 0x44, 0x84, 0x5b, 0x5c, 0x75, 0x1a, 0x40, 0x1e, 0x8a, 0x8f, 0x9d, + 0xed, 0xc1, 0xd1, 0x60, 0x8c, 0x23, 0xa6, 0x6a, 0x36, 0xd1, 0x81, 0x44, 0x98, 0x0b, 0xf7, 0x98, 0x75, 0x8f, 0x3b, + 0x44, 0xc9, 0xc0, 0xff, 0xa1, 0xd6, 0xd9, 0x7a, 0x03, 0xac, 0x0d, 0xcb, 0x6f, 0x1f, 0x77, 0x52, 0xb8, 0x37, 0x54, + 0x71, 0x6d, 0xef, 0x00, 0x1c, 0x72, 0x8d, 0xec, 0x90, 0x67, 0x4d, 0xce, 0xf9, 0x28, 0x33, 0x00, 0x4b, 0x98, 0x5c, + 0xf4, 0x66, 0xbb, 0x7e, 0x30, 0x1b, 0x42, 0x88, 0x3e, 0x43, 0xd7, 0x06, 0xd5, 0x0f, 0x11, 0x80, 0xf7, 0xb1, 0xfc, + 0xec, 0xbf, 0x21, 0x7e, 0x1b, 0x89, 0xe5, 0xfa, 0x9b, 0xa4, 0x09, 0xf3, 0x69, 0x32, 0xd1, 0xc6, 0x05, 0x54, 0xa2, + 0xde, 0x56, 0xbf, 0x21, 0xc1, 0xe1, 0x1d, 0xbf, 0x27, 0xb6, 0x15, 0x3c, 0xe8, 0x40, 0xb8, 0xb7, 0xa4, 0xa4, 0x8b, + 0x6d, 0xe2, 0xee, 0x0f, 0x1c, 0xdc, 0x90, 0x0a, 0xf2, 0x6e, 0x17, 0x9f, 0xdd, 0x7b, 0xa6, 0x19, 0x4a, 0x89, 0xbc, + 0x6e, 0x31, 0x55, 0x2e, 0xc5, 0xd6, 0xdf, 0x5b, 0xb5, 0x59, 0xee, 0x36, 0x8c, 0xa0, 0x31, 0xb2, 0x50, 0xf0, 0x1a, + 0x91, 0x42, 0x20, 0xe1, 0x1d, 0x4b, 0x85, 0x84, 0x61, 0x54, 0x5a, 0x80, 0x9a, 0xe2, 0x8d, 0x2e, 0x6b, 0x5a, 0xf6, + 0xea, 0x9b, 0x42, 0x68, 0x41, 0xfa, 0xf6, 0xc8, 0x5f, 0x5b, 0x3e, 0xfd, 0x6a, 0x46, 0xd2, 0x29, 0xa9, 0xc4, 0xb1, + 0xec, 0xd9, 0xcd, 0x21, 0x12, 0xb9, 0x21, 0x95, 0x90, 0x4f, 0x44, 0x72, 0xa2, 0x8d, 0x0c, 0x70, 0x35, 0x1e, 0x72, + 0xf1, 0x3c, 0xde, 0xac, 0x2b, 0x42, 0x98, 0x58, 0x6d, 0xeb, 0x7f, 0xe8, 0x2c, 0xb2, 0x11, 0x8b, 0x6f, 0x85, 0x76, + 0x84, 0x9e, 0x9b, 0x44, 0x95, 0xf2, 0xe4, 0x84, 0xff, 0x54, 0x93, 0x64, 0xae, 0x06, 0x6d, 0x9e, 0xc0, 0x7d, 0xc9, + 0xd4, 0x50, 0x35, 0x8a, 0xcd, 0xae, 0xd5, 0x07, 0xaa, 0x59, 0x0b, 0x32, 0xbe, 0xf0, 0xee, 0xcc, 0x12, 0x07, 0xe7, + 0x5b, 0x46, 0x1a, 0x1f, 0x76, 0x96, 0x58, 0x73, 0xf2, 0xbc, 0x30, 0x35, 0x58, 0x80, 0x98, 0x2d, 0x24, 0x79, 0x69, + 0x72, 0x87, 0x7c, 0x0b, 0xd0, 0xde, 0x8a, 0x5a, 0x24, 0x2f, 0x16, 0x07, 0x70, 0x4a, 0x94, 0xc8, 0x7d, 0xa8, 0xe7, + 0x8f, 0xec, 0x5f, 0x08, 0x4b, 0xe5, 0x71, 0x88, 0x5f, 0x25, 0x1d, 0x09, 0xe6, 0xa8, 0x1c, 0x83, 0xff, 0xcd, 0xcb, + 0x34, 0xed, 0xdb, 0x39, 0x6f, 0xab, 0x4a, 0x8d, 0xf1, 0x7f, 0x6b, 0x9d, 0xaf, 0x88, 0xad, 0x9a, 0xb8, 0x7e, 0xcf, + 0x15, 0x83, 0x96, 0xd0, 0x94, 0xeb, 0xf4, 0x0c, 0x27, 0xba, 0xb7, 0xe2, 0xcf, 0x9c, 0xcb, 0x5c, 0xec, 0x5a, 0x1d, + 0x60, 0x41, 0x12, 0xb1, 0xa3, 0x13, 0xbf, 0x05, 0xfe, 0xe9, 0xc8, 0x04, 0xd2, 0xbd, 0xdb, 0x1f, 0xab, 0x55, 0xe0, + 0x2f, 0xd3, 0x5e, 0xa3, 0x22, 0x78, 0xbc, 0x10, 0x4d, 0x96, 0x94, 0x69, 0xbb, 0xd6, 0x1e, 0x93, 0xc4, 0xbe, 0x55, + 0x83, 0x77, 0x2e, 0xf9, 0x3d, 0x08, 0x6d, 0xb4, 0xce, 0xa6, 0x47, 0x3f, 0x45, 0xf3, 0xb3, 0x48, 0xc2, 0x46, 0xe9, + 0x5c, 0x1d, 0xdd, 0x60, 0x7d, 0x26, 0x51, 0xc1, 0x56, 0xfc, 0xcc, 0x09, 0x8d, 0xb1, 0x63, 0x79, 0x78, 0x83, 0xe2, + 0x21, 0x9c, 0x00, 0xbb, 0x9f, 0x72, 0xa9, 0x79, 0xc0, 0x9e, 0x3a, 0x42, 0xe4, 0x09, 0x1d, 0xc1, 0x6b, 0x48, 0x6f, + 0xf8, 0x6e, 0x46, 0x85, 0x91, 0x93, 0xf4, 0xab, 0x3e, 0x99, 0x92, 0x5f, 0x4f, 0x83, 0xd5, 0x88, 0xca, 0x47, 0x2e, + 0xd6, 0x76, 0x22, 0x69, 0x64, 0x4b, 0x71, 0x83, 0xee, 0x33, 0xb5, 0xdc, 0x6f, 0x01, 0x03, 0x02, 0x8b, 0xdc, 0xec, + 0x2a, 0x76, 0xb0, 0x2f, 0x88, 0xac, 0x9e, 0xff, 0x8e, 0x5b, 0x75, 0xb1, 0xf0, 0x1a, 0xf8, 0x40, 0x5f, 0xf4, 0x5d, + 0x9c, 0x53, 0x36, 0x9b, 0x9a, 0xc3, 0x09, 0xbc, 0x38, 0x24, 0xd2, 0xb6, 0x8b, 0x09, 0xcb, 0xb8, 0x40, 0x12, 0x65, + 0x3d, 0x82, 0x80, 0x89, 0x54, 0xce, 0xf0, 0x4f, 0x94, 0xf8, 0x8a, 0x4c, 0x38, 0x67, 0x9c, 0x43, 0xca, 0xe4, 0x26, + 0x6d, 0x93, 0x48, 0x47, 0xc7, 0xb0, 0xc1, 0x22, 0xae, 0x59, 0x0b, 0x2a, 0x8b, 0x72, 0x87, 0x0b, 0xef, 0x93, 0x15, + 0x44, 0xc9, 0x37, 0xb1, 0x35, 0x1e, 0x51, 0x66, 0x9d, 0x4e, 0x42, 0xd5, 0x4e, 0x53, 0xec, 0x2d, 0xed, 0xc0, 0xc1, + 0x86, 0x96, 0x3a, 0x7c, 0x56, 0xf4, 0xf7, 0x63, 0xa3, 0x70, 0xa4, 0x6d, 0xec, 0xbd, 0x8b, 0xca, 0x14, 0x5d, 0x14, + 0x0a, 0x94, 0x66, 0x6f, 0xb4, 0x98, 0x7f, 0x5b, 0xd9, 0x3d, 0x1f, 0x9b, 0x37, 0x5c, 0xd3, 0xff, 0xe4, 0x3d, 0x13, + 0xb7, 0x75, 0x3d, 0x33, 0xb9, 0x08, 0x4b, 0xad, 0xff, 0x37, 0xc4, 0x03, 0xbc, 0xcf, 0x67, 0x4e, 0xcb, 0x23, 0x55, + 0x85, 0x2a, 0xf8, 0x2b, 0x45, 0xce, 0x10, 0x3d, 0x74, 0x07, 0x1a, 0xa2, 0xd4, 0x1f, 0xaf, 0x07, 0xfb, 0xfa, 0xac, + 0x0f, 0x2f, 0xfc, 0x43, 0xc1, 0x96, 0xe1, 0x2a, 0x78, 0x00, 0xdb, 0x53, 0xec, 0xd5, 0x14, 0x42, 0x39, 0xf9, 0x09, + 0xb7, 0x1a, 0xc5, 0x72, 0x52, 0xa0, 0x37, 0xa4, 0x23, 0xae, 0x05, 0x3e, 0x7f, 0x2c, 0xdc, 0xcd, 0x4c, 0x01, 0x7f, + 0x65, 0x08, 0xf2, 0x8b, 0x80, 0x6a, 0x30, 0x2b, 0x30, 0xe3, 0x98, 0x96, 0x01, 0xed, 0xe0, 0xdf, 0xd6, 0xce, 0x5b, + 0x1b, 0x48, 0x11, 0xec, 0x6f, 0x52, 0x74, 0xa3, 0xcf, 0xe9, 0x84, 0x1d, 0xb3, 0x1d, 0x94, 0x7e, 0x4f, 0xe5, 0x78, + 0x51, 0x7e, 0x39, 0x53, 0x6b, 0x3e, 0x58, 0x2d, 0x0e, 0x5f, 0x63, 0x2c, 0x93, 0x8f, 0x5b, 0x55, 0x3d, 0x35, 0x3b, + 0x3b, 0xde, 0x37, 0x25, 0x58, 0x11, 0xc6, 0x4b, 0x17, 0x71, 0xc4, 0xfa, 0x6e, 0xff, 0x45, 0x2d, 0x59, 0xc1, 0x2a, + 0x7e, 0x9a, 0x70, 0x2c, 0x9b, 0x76, 0x2b, 0xa6, 0xf8, 0x1f, 0xa0, 0xb5, 0xa2, 0x03, 0x40, 0xd1, 0x02, 0xd0, 0xf2, + 0xf7, 0xb0, 0x73, 0xb9, 0x2a, 0xcd, 0x94, 0x94, 0x89, 0x49, 0xa5, 0x91, 0x51, 0xe2, 0x95, 0x34, 0xce, 0x4e, 0x6f, + 0x44, 0x39, 0xe7, 0xa3, 0x23, 0xf8, 0x2c, 0xc7, 0x02, 0x45, 0x23, 0xf8, 0x11, 0x32, 0x3c, 0x30, 0x05, 0x72, 0xfe, + 0xb7, 0xd6, 0xa3, 0x0c, 0x2c, 0x24, 0x76, 0x4c, 0x80, 0x74, 0x08, 0x9b, 0xe7, 0xc2, 0xf5, 0x76, 0x10, 0xa5, 0x5d, + 0x48, 0x72, 0xb8, 0x4c, 0xc3, 0xf5, 0x82, 0x02, 0xcb, 0xba, 0xf7, 0x0a, 0x2e, 0x98, 0xc5, 0x11, 0x5d, 0xd7, 0xeb, + 0xfa, 0xa9, 0x70, 0xdf, 0xff, 0xf3, 0xef, 0x3e, 0x0b, 0xf5, 0x9e, 0x3d, 0x33, 0x56, 0xb8, 0x56, 0xc0, 0xc8, 0x2d, + 0x3f, 0xaa, 0xdf, 0x31, 0x30, 0xb6, 0x0e, 0x89, 0xc2, 0x3a, 0x5b, 0x4d, 0x8d, 0x58, 0xba, 0xf9, 0xf8, 0xde, 0x8f, + 0x75, 0xec, 0x60, 0xec, 0xae, 0x2f, 0xb3, 0x9e, 0xe9, 0x99, 0xa5, 0x7d, 0x04, 0x27, 0x41, 0xf2, 0x99, 0xd3, 0x1e, + 0xf9, 0x2c, 0xd6, 0xd0, 0x41, 0xaf, 0xda, 0x48, 0x0d, 0x9b, 0x5e, 0xad, 0x62, 0x29, 0x57, 0x1c, 0x02, 0x0e, 0xc4, + 0x78, 0xec, 0x2d, 0xc0, 0x03, 0xa7, 0x36, 0x8f, 0xb8, 0x33, 0x79, 0xf5, 0x6a, 0xe2, 0x43, 0x09, 0x8e, 0x2d, 0x6b, + 0x05, 0x64, 0xf8, 0x17, 0xcb, 0xab, 0x7b, 0x41, 0x1c, 0xd2, 0x89, 0x5f, 0x06, 0xca, 0x7a, 0x6a, 0x6b, 0x46, 0x05, + 0xb4, 0x76, 0x50, 0xb5, 0x99, 0x82, 0xe0, 0xd0, 0xf4, 0xda, 0x1f, 0x18, 0xf1, 0x25, 0xb7, 0xc2, 0x36, 0xb9, 0xe3, + 0x2a, 0xe3, 0x99, 0xd5, 0x04, 0x9d, 0x92, 0x7a, 0x75, 0x46, 0x8c, 0x7f, 0x76, 0xec, 0xc2, 0x7c, 0xfc, 0xc6, 0x6d, + 0x2f, 0x0d, 0xbb, 0xfb, 0x4a, 0x3f, 0x2c, 0x55, 0x74, 0xb7, 0x71, 0x85, 0x1e, 0xa0, 0x33, 0x16, 0xc3, 0x48, 0xba, + 0x2a, 0xd4, 0xca, 0x4b, 0x91, 0x8c, 0xca, 0x8c, 0x99, 0xa4, 0xb7, 0xe7, 0xc4, 0x4f, 0xb7, 0x9c, 0xb1, 0x5c, 0x4b, + 0xa1, 0x4c, 0x0e, 0x6b, 0xbf, 0x73, 0x7c, 0x2f, 0x90, 0x7b, 0x14, 0x5f, 0x91, 0x85, 0x49, 0x2b, 0x7e, 0x97, 0x6a, + 0xbe, 0xd4, 0xcd, 0xac, 0x7e, 0xfb, 0xcb, 0x52, 0x31, 0xbe, 0x1c, 0xbb, 0x09, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, + 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, + 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x3c, 0xb1, 0x13, 0x3b, 0x3a, 0xb1, 0x13, 0x3b, 0x3a, 0x75, 0x88, 0x9d, + 0x3d, 0xed, 0x02, 0xbd, 0xb5, 0x7b, 0x26, 0x08, 0xb8, 0x7b, 0xce, 0x8d, 0x9f, 0x42, 0x85, 0x0f, 0x5a, 0xdc, 0x17, + 0x62, 0x93, 0x24, 0x49, 0x12, 0x6d, 0xdb, 0xb6, 0xed, 0x23, 0x3b, 0x91, 0xa4, 0x6f, 0xe9, 0xf9, 0xfe, 0x27, 0x9d, + 0x0c, 0xbd, 0x29, 0x9d, 0x80, 0x45, 0x65, 0x87, 0x77, 0x08, 0xda, 0x7d, 0x86, 0x4a, 0x67, 0x66, 0x66, 0x66, 0xee, + 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, 0xdf, 0xbd, 0xfe, 0x81, 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, 0x0d, 0xd7, + 0x7b, 0xed, 0x42, 0x27, 0xf9, 0x14, 0xd4, 0x3d, 0x01, 0x00, 0x00, 0x10, 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, + 0xcf, 0xc2, 0xc9, 0x81, 0xfe, 0x84, 0xba, 0x07, 0x89, 0x87, 0x3a, 0x06, 0xb0, 0x73, 0xa5, 0x03, 0xf7, 0xdd, 0xcc, + 0xae, 0x6c, 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, 0x88, + 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, 0x56, 0x55, 0x55, 0xd5, + 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, 0x3a, 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, 0x76, 0x20, 0x15, + 0x91, 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, 0xd8, 0x46, 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca, 0x6b, 0x28, 0xc9, 0x13, + 0xbb, 0x86, 0xa4, 0x14, 0xdc, 0x41, 0x99, 0xe7, 0x70, 0x67, 0x73, 0x38, 0x5f, 0x81, 0x0e, 0xba, 0x87, 0xf1, 0xfd, + 0xab, 0xd3, 0x6d, 0xcd, 0xcc, 0xcc, 0x0c, 0x33, 0x33, 0x33, 0x73, 0x99, 0x5a, 0x99, 0xd9, 0x66, 0xa5, 0x8f, 0xcc, + 0x00, 0x7a, 0x0b, 0x9b, 0x67, 0xe0, 0x7b, 0xd4, 0xca, 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, 0xb7, 0x6d, 0xdb, + 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, 0x08, 0x0c, 0xc3, 0x9e, 0x0f, 0x12, 0x8e, 0xc3, 0x20, 0x7d, 0x25, 0x19, 0x76, + 0x42, 0x1d, 0xd6, 0x85, 0x70, 0xa2, 0x75, 0x71, 0x0a, 0x0b, 0x01, 0x00, 0x00, 0x80, 0xd0, 0x45, 0x17, 0xdd, 0x44, + 0x29, 0xe7, 0x22, 0x1a, 0x4b, 0x4c, 0x44, 0xbf, 0x7c, 0x1a, 0xac, 0x07, 0x94, 0x2b, 0x48, 0x39, 0x83, 0xd0, 0x04, + 0x5b, 0xab, 0xa8, 0x6e, 0xb3, 0x90, 0x85, 0x2c, 0x58, 0xc8, 0x42, 0x16, 0xa6, 0x87, 0xa5, 0x37, 0xe1, 0xa4, 0x8e, + 0x32, 0x8a, 0x4c, 0x12, 0x99, 0xe5, 0x14, 0x75, 0x7a, 0xcf, 0x61, 0x03, 0xc0, 0xc2, 0xa7, 0xce, 0x64, 0x3c, 0xb1, + 0x13, 0x3b, 0x3a, 0xb1, 0x13, 0x3b, 0x3a, 0x75, 0x88, 0x9d, 0x3d, 0xed, 0x02, 0xbd, 0xb5, 0x7b, 0x26, 0x08, 0xb8, + 0x7b, 0xce, 0x8d, 0x9f, 0x42, 0x85, 0x0f, 0x5a, 0xdc, 0x17, 0x62, 0x93, 0x24, 0x49, 0x12, 0x6d, 0xdb, 0xb6, 0xed, + 0x23, 0x3b, 0x91, 0xa4, 0x6f, 0xe9, 0xf9, 0xfe, 0x27, 0x9d, 0x0c, 0xbd, 0x29, 0x9d, 0x80, 0x45, 0x65, 0x87, 0x77, + 0x08, 0xda, 0x7d, 0x86, 0x4a, 0x67, 0x66, 0x66, 0x66, 0xee, 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, 0xdf, 0xbd, + 0xfe, 0x81, 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, 0x0d, 0xd7, 0x7b, 0xed, 0x42, 0x27, 0xf9, 0x14, 0xd4, 0x3d, 0x01, + 0x00, 0x00, 0x10, 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, 0xcf, 0xc2, 0xc9, 0x81, 0xfe, 0x84, 0xba, 0x07, 0x89, + 0x87, 0x3a, 0x06, 0xb0, 0x73, 0xa5, 0x03, 0xf7, 0xdd, 0xcc, 0xae, 0x6c, 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, + 0xf0, 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, + 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, 0x56, 0x55, 0x55, 0xd5, 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, 0x3a, + 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, 0x76, 0x20, 0x15, 0x91, 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, 0xd8, 0x46, + 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca, 0x6b, 0x28, 0xc9, 0x13, 0xbb, 0x86, 0xa4, 0x14, 0xdc, 0x41, 0x99, 0xe7, 0x70, + 0x67, 0x73, 0x38, 0x5f, 0x81, 0x0e, 0xba, 0x87, 0xf1, 0xfd, 0xab, 0xd3, 0x6d, 0xcd, 0xcc, 0xcc, 0x0c, 0x33, 0x33, + 0x33, 0x73, 0x99, 0x5a, 0x99, 0xd9, 0x66, 0xa5, 0x8f, 0xcc, 0x00, 0x7a, 0x0b, 0x9b, 0x67, 0xe0, 0x7b, 0xd4, 0xca, + 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, 0xb7, 0x6d, 0xdb, 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, 0x08, 0x0c, 0xc3, + 0x9e, 0x0f, 0x12, 0x8e, 0xc3, 0x20, 0x7d, 0x25, 0x19, 0x76, 0x42, 0x1d, 0xd6, 0x85, 0x70, 0xa2, 0x75, 0x71, 0x0a, + 0x0b, 0x01, 0x00, 0x00, 0x80, 0xd0, 0x45, 0x17, 0xdd, 0x44, 0x29, 0xe7, 0x22, 0x1a, 0x4b, 0x4c, 0x44, 0xbf, 0x7c, + 0x1a, 0xac, 0x07, 0x94, 0x2b, 0x48, 0x39, 0x83, 0xd0, 0x04, 0x5b, 0xab, 0xa8, 0x6e, 0xb3, 0x90, 0x85, 0x2c, 0x58, + 0xc8, 0x42, 0x16, 0xa6, 0x87, 0xa5, 0x37, 0xe1, 0xa4, 0x8e, 0x32, 0x8a, 0x4c, 0x12, 0x99, 0xe5, 0x14, 0x75, 0x7a, + 0xcf, 0x61, 0x03, 0xc0, 0xc2, 0xa7, 0xce, 0x64, 0x01, 0x00, 0x00, 0x60, 0x54, 0x55, 0x55, 0xb5, 0x29, 0x18, 0xa9, + 0x8a, 0x2d, 0xbd, 0x95, 0xc5, 0xaf, 0x19, 0x3b, 0x09, 0x5d, 0xc4, 0x6c, 0x86, 0xba, 0x42, 0x8c, 0xb2, 0xaf, 0x15, + 0x19, 0x6f, 0x93, 0x24, 0x49, 0x12, 0x6d, 0xdb, 0xb6, 0xed, 0x23, 0x3b, 0x91, 0xa4, 0x6f, 0xe9, 0xf9, 0xfe, 0x27, + 0x9d, 0x0c, 0xbd, 0x29, 0x9d, 0x80, 0x45, 0x65, 0x87, 0x77, 0x08, 0xda, 0x7d, 0x86, 0x4a, 0x67, 0x66, 0x66, 0x66, + 0xee, 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, 0xdf, 0xbd, 0xfe, 0x81, 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, 0x0d, + 0xd7, 0x7b, 0xed, 0x42, 0x27, 0xf9, 0x14, 0xd4, 0x3d, 0x01, 0x00, 0x00, 0x10, 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, + 0xfe, 0xcf, 0xc2, 0xc9, 0x81, 0xfe, 0x84, 0xba, 0x07, 0x89, 0x87, 0x3a, 0x06, 0xb0, 0x73, 0xa5, 0x03, 0xf7, 0xdd, + 0xcc, 0xae, 0x6c, 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, + 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, 0x56, 0x55, 0x55, + 0xd5, 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, 0x3a, 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, 0x76, 0x20, + 0x15, 0x91, 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, 0xd8, 0x46, 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca, 0x6b, 0x28, 0xc9, + 0x13, 0xbb, 0x86, 0xa4, 0x14, 0xdc, 0x41, 0x99, 0xe7, 0x70, 0x67, 0x73, 0x38, 0x5f, 0x81, 0x0e, 0xba, 0x87, 0xf1, + 0xfd, 0xab, 0xd3, 0x6d, 0xcd, 0xcc, 0xcc, 0x0c, 0x33, 0x33, 0x33, 0x73, 0x99, 0x5a, 0x99, 0xd9, 0x66, 0xa5, 0x8f, + 0xcc, 0x00, 0x7a, 0x0b, 0x9b, 0x67, 0xe0, 0x7b, 0xd4, 0xca, 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, 0xb7, 0x6d, + 0xdb, 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, 0x08, 0x0c, 0xc3, 0x9e, 0x0f, 0x12, 0x8e, 0xc3, 0x20, 0x7d, 0x25, 0x19, + 0x76, 0x42, 0x1d, 0xd6, 0x85, 0x70, 0xa2, 0x75, 0x71, 0x0a, 0x0b, 0x01, 0x00, 0x00, 0x80, 0xd0, 0x45, 0x17, 0xdd, + 0x44, 0x29, 0xe7, 0x22, 0x1a, 0x4b, 0x4c, 0x44, 0xbf, 0x7c, 0x1a, 0xac, 0x07, 0x94, 0x2b, 0x48, 0x39, 0x83, 0xd0, + 0x04, 0x5b, 0xab, 0xa8, 0x6e, 0xb3, 0x90, 0x85, 0x2c, 0x58, 0xc8, 0x42, 0x16, 0xa6, 0x87, 0xa5, 0x37, 0xe1, 0xa4, + 0x8e, 0x32, 0x8a, 0x4c, 0x12, 0x99, 0xe5, 0x14, 0x75, 0x7a, 0xcf, 0x61, 0x03, 0xc0, 0xc2, 0xa7, 0xce, 0x64, 0x01, + 0x00, 0x00, 0x60, 0x54, 0x55, 0x55, 0xb5, 0x29, 0x18, 0xa9, 0x8a, 0x2d, 0xbd, 0x95, 0xc5, 0xaf, 0x19, 0x3b, 0x09, + 0x5d, 0xc4, 0x6c, 0x86, 0xba, 0x42, 0x8c, 0xb2, 0xaf, 0x15, 0x19, 0x6f, 0xd8, 0xa3, 0x70, 0x3d, 0x5b, 0x8f, 0xc2, + 0xf5, 0x79, 0xf8, 0x12, 0xae, 0x54, 0xd4, 0x3d, 0x80, 0x9e, 0x41, 0x24, 0xea, 0xf2, 0xf9, 0x2a, 0x06, 0xdc, 0x0c, + 0xed, 0x96, 0xfa, 0x70, 0xa7, 0x6a, 0x67, 0x66, 0x66, 0x66, 0xee, 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, 0xdf, + 0xbd, 0xfe, 0x81, 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, 0x0d, 0xd7, 0x7b, 0xed, 0x42, 0x27, 0xf9, 0x14, 0xd4, 0x3d, + 0x01, 0x00, 0x00, 0x10, 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, 0xcf, 0xc2, 0xc9, 0x81, 0xfe, 0x84, 0xba, 0x07, + 0x89, 0x87, 0x3a, 0x06, 0xb0, 0x73, 0xa5, 0x03, 0xf7, 0xdd, 0xcc, 0xae, 0x6c, 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, + 0xf0, 0xf0, 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, 0xb6, + 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, 0x56, 0x55, 0x55, 0xd5, 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, + 0x3a, 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, 0x76, 0x20, 0x15, 0x91, 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, 0xd8, + 0x46, 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca, 0x6b, 0x28, 0xc9, 0x13, 0xbb, 0x86, 0xa4, 0x14, 0xdc, 0x41, 0x99, 0xe7, + 0x70, 0x67, 0x73, 0x38, 0x5f, 0x81, 0x0e, 0xba, 0x87, 0xf1, 0xfd, 0xab, 0xd3, 0x6d, 0xcd, 0xcc, 0xcc, 0x0c, 0x33, + 0x33, 0x33, 0x73, 0x99, 0x5a, 0x99, 0xd9, 0x66, 0xa5, 0x8f, 0xcc, 0x00, 0x7a, 0x0b, 0x9b, 0x67, 0xe0, 0x7b, 0xd4, + 0xca, 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, 0xb7, 0x6d, 0xdb, 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, 0x08, 0x0c, + 0xc3, 0x9e, 0x0f, 0x12, 0x8e, 0xc3, 0x20, 0x7d, 0x25, 0x19, 0x76, 0x42, 0x1d, 0xd6, 0x85, 0x70, 0xa2, 0x75, 0x71, + 0x0a, 0x0b, 0x01, 0x00, 0x00, 0x80, 0xd0, 0x45, 0x17, 0xdd, 0x44, 0x29, 0xe7, 0x22, 0x1a, 0x4b, 0x4c, 0x44, 0xbf, + 0x7c, 0x1a, 0xac, 0x07, 0x94, 0x2b, 0x48, 0x39, 0x83, 0xd0, 0x04, 0x5b, 0xab, 0xa8, 0x6e, 0xb3, 0x90, 0x85, 0x2c, + 0x58, 0xc8, 0x42, 0x16, 0xa6, 0x87, 0xa5, 0x37, 0xe1, 0xa4, 0x8e, 0x32, 0x8a, 0x4c, 0x12, 0x99, 0xe5, 0x14, 0x75, + 0x7a, 0xcf, 0x61, 0x03, 0xc0, 0xc2, 0xa7, 0xce, 0x64, 0x01, 0x00, 0x00, 0x60, 0x54, 0x55, 0x55, 0xb5, 0x29, 0x18, + 0xa9, 0x8a, 0x2d, 0xbd, 0x95, 0xc5, 0xaf, 0x19, 0x3b, 0x09, 0x5d, 0xc4, 0x6c, 0x86, 0xba, 0x42, 0x8c, 0xb2, 0xaf, + 0x15, 0x19, 0x6f, 0xd8, 0xa3, 0x70, 0x3d, 0x5b, 0x8f, 0xc2, 0xf5, 0x79, 0xf8, 0x12, 0xae, 0x54, 0xd4, 0x3d, 0x80, + 0x9e, 0x41, 0x24, 0xea, 0xf2, 0xf9, 0x2a, 0x06, 0xdc, 0x0c, 0xed, 0x96, 0xfa, 0x70, 0xa7, 0x6a, 0x9e, 0xd8, 0x89, + 0x1d, 0x9d, 0xd8, 0x89, 0x1d, 0x9d, 0x3a, 0xc4, 0xce, 0x9e, 0x76, 0x81, 0xde, 0xda, 0x3d, 0x13, 0x04, 0xdc, 0x3d, + 0xe7, 0xc6, 0x4f, 0xa1, 0xc2, 0x07, 0x2d, 0xee, 0x0b, 0x31, 0x01, 0x00, 0x00, 0x10, 0xff, 0xff, 0xff, 0x0f, 0x3f, + 0x76, 0xfe, 0xcf, 0xc2, 0xc9, 0x81, 0xfe, 0x84, 0xba, 0x07, 0x89, 0x87, 0x3a, 0x06, 0xb0, 0x73, 0xa5, 0x03, 0xf7, + 0xdd, 0xcc, 0xae, 0x6c, 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, + 0xc8, 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, 0x56, 0x55, + 0x55, 0xd5, 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, 0x3a, 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, 0x76, + 0x20, 0x15, 0x91, 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, 0xd8, 0x46, 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca, 0x6b, 0x28, + 0xc9, 0x13, 0xbb, 0x86, 0xa4, 0x14, 0xdc, 0x41, 0x99, 0xe7, 0x70, 0x67, 0x73, 0x38, 0x5f, 0x81, 0x0e, 0xba, 0x87, + 0xf1, 0xfd, 0xab, 0xd3, 0x6d, 0xcd, 0xcc, 0xcc, 0x0c, 0x33, 0x33, 0x33, 0x73, 0x99, 0x5a, 0x99, 0xd9, 0x66, 0xa5, + 0x8f, 0xcc, 0x00, 0x7a, 0x0b, 0x9b, 0x67, 0xe0, 0x7b, 0xd4, 0xca, 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, 0xb7, + 0x6d, 0xdb, 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, 0x08, 0x0c, 0xc3, 0x9e, 0x0f, 0x12, 0x8e, 0xc3, 0x20, 0x7d, 0x25, + 0x19, 0x76, 0x42, 0x1d, 0xd6, 0x85, 0x70, 0xa2, 0x75, 0x71, 0x0a, 0x0b, 0x01, 0x00, 0x00, 0x80, 0xd0, 0x45, 0x17, + 0xdd, 0x44, 0x29, 0xe7, 0x22, 0x1a, 0x4b, 0x4c, 0x44, 0xbf, 0x7c, 0x1a, 0xac, 0x07, 0x94, 0x2b, 0x48, 0x39, 0x83, + 0xd0, 0x04, 0x5b, 0xab, 0xa8, 0x6e, 0xb3, 0x90, 0x85, 0x2c, 0x58, 0xc8, 0x42, 0x16, 0xa6, 0x87, 0xa5, 0x37, 0xe1, + 0xa4, 0x8e, 0x32, 0x8a, 0x4c, 0x12, 0x99, 0xe5, 0x14, 0x75, 0x7a, 0xcf, 0x61, 0x03, 0xc0, 0xc2, 0xa7, 0xce, 0x64, + 0x01, 0x00, 0x00, 0x60, 0x54, 0x55, 0x55, 0xb5, 0x29, 0x18, 0xa9, 0x8a, 0x2d, 0xbd, 0x95, 0xc5, 0xaf, 0x19, 0x3b, + 0x09, 0x5d, 0xc4, 0x6c, 0x86, 0xba, 0x42, 0x8c, 0xb2, 0xaf, 0x15, 0x19, 0x6f, 0xd8, 0xa3, 0x70, 0x3d, 0x5b, 0x8f, + 0xc2, 0xf5, 0x79, 0xf8, 0x12, 0xae, 0x54, 0xd4, 0x3d, 0x80, 0x9e, 0x41, 0x24, 0xea, 0xf2, 0xf9, 0x2a, 0x06, 0xdc, + 0x0c, 0xed, 0x96, 0xfa, 0x70, 0xa7, 0x6a, 0x9e, 0xd8, 0x89, 0x1d, 0x9d, 0xd8, 0x89, 0x1d, 0x9d, 0x3a, 0xc4, 0xce, + 0x9e, 0x76, 0x81, 0xde, 0xda, 0x3d, 0x13, 0x04, 0xdc, 0x3d, 0xe7, 0xc6, 0x4f, 0xa1, 0xc2, 0x07, 0x2d, 0xee, 0x0b, + 0x31, 0x39, 0x8e, 0xe3, 0x38, 0x68, 0x2f, 0xa1, 0xbd, 0x5e, 0xea, 0xec, 0x25, 0x26, 0x0c, 0x0e, 0x52, 0x26, 0xc4, + 0x7d, 0x72, 0x4c, 0x78, 0xa5, 0x4f, 0x18, 0x68, 0x90, 0x0c, 0x3f, 0x58, 0x96, 0x08, 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, + 0xf0, 0xf0, 0xf0, 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, + 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, 0x56, 0x55, 0x55, 0xd5, 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, + 0xb8, 0x3a, 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, 0x76, 0x20, 0x15, 0x91, 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, + 0xd8, 0x46, 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca, 0x6b, 0x28, 0xc9, 0x13, 0xbb, 0x86, 0xa4, 0x14, 0xdc, 0x41, 0x99, + 0xe7, 0x70, 0x67, 0x73, 0x38, 0x5f, 0x81, 0x0e, 0xba, 0x87, 0xf1, 0xfd, 0xab, 0xd3, 0x6d, 0xcd, 0xcc, 0xcc, 0x0c, + 0x33, 0x33, 0x33, 0x73, 0x99, 0x5a, 0x99, 0xd9, 0x66, 0xa5, 0x8f, 0xcc, 0x00, 0x7a, 0x0b, 0x9b, 0x67, 0xe0, 0x7b, + 0xd4, 0xca, 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, 0xb7, 0x6d, 0xdb, 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, 0x08, + 0x0c, 0xc3, 0x9e, 0x0f, 0x12, 0x8e, 0xc3, 0x20, 0x7d, 0x25, 0x19, 0x76, 0x42, 0x1d, 0xd6, 0x85, 0x70, 0xa2, 0x75, + 0x71, 0x0a, 0x0b, 0x01, 0x00, 0x00, 0x80, 0xd0, 0x45, 0x17, 0xdd, 0x44, 0x29, 0xe7, 0x22, 0x1a, 0x4b, 0x4c, 0x44, + 0xbf, 0x7c, 0x1a, 0xac, 0x07, 0x94, 0x2b, 0x48, 0x39, 0x83, 0xd0, 0x04, 0x5b, 0xab, 0xa8, 0x6e, 0xb3, 0x90, 0x85, + 0x2c, 0x58, 0xc8, 0x42, 0x16, 0xa6, 0x87, 0xa5, 0x37, 0xe1, 0xa4, 0x8e, 0x32, 0x8a, 0x4c, 0x12, 0x99, 0xe5, 0x14, + 0x75, 0x7a, 0xcf, 0x61, 0x03, 0xc0, 0xc2, 0xa7, 0xce, 0x64, 0x01, 0x00, 0x00, 0x60, 0x54, 0x55, 0x55, 0xb5, 0x29, + 0x18, 0xa9, 0x8a, 0x2d, 0xbd, 0x95, 0xc5, 0xaf, 0x19, 0x3b, 0x09, 0x5d, 0xc4, 0x6c, 0x86, 0xba, 0x42, 0x8c, 0xb2, + 0xaf, 0x15, 0x19, 0x6f, 0xd8, 0xa3, 0x70, 0x3d, 0x5b, 0x8f, 0xc2, 0xf5, 0x79, 0xf8, 0x12, 0xae, 0x54, 0xd4, 0x3d, + 0x80, 0x9e, 0x41, 0x24, 0xea, 0xf2, 0xf9, 0x2a, 0x06, 0xdc, 0x0c, 0xed, 0x96, 0xfa, 0x70, 0xa7, 0x6a, 0x9e, 0xd8, + 0x89, 0x1d, 0x9d, 0xd8, 0x89, 0x1d, 0x9d, 0x3a, 0xc4, 0xce, 0x9e, 0x76, 0x81, 0xde, 0xda, 0x3d, 0x13, 0x04, 0xdc, + 0x3d, 0xe7, 0xc6, 0x4f, 0xa1, 0xc2, 0x07, 0x2d, 0xee, 0x0b, 0x31, 0x39, 0x8e, 0xe3, 0x38, 0x68, 0x2f, 0xa1, 0xbd, + 0x5e, 0xea, 0xec, 0x25, 0x26, 0x0c, 0x0e, 0x52, 0x26, 0xc4, 0x7d, 0x72, 0x4c, 0x78, 0xa5, 0x4f, 0x18, 0x68, 0x90, + 0x0c, 0x3f, 0x58, 0x96, 0x08, 0x4a, 0x92, 0x24, 0x09, 0xb6, 0x6d, 0xdb, 0x76, 0x91, 0xcb, 0x47, 0x52, 0xb9, 0xc6, + 0x5b, 0xa9, 0x96, 0x3a, 0x57, 0xe3, 0x98, 0x3a, 0x5d, 0xbc, 0x56, 0x82, 0x0a, 0x99, 0x96, 0x12, 0x3a, 0x5f, 0x56, + 0x55, 0x55, 0xd5, 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, 0x3a, 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, + 0x76, 0x20, 0x15, 0x91, 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, 0xd8, 0x46, 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca, 0x6b, + 0x28, 0xc9, 0x13, 0xbb, 0x86, 0xa4, 0x14, 0xdc, 0x41, 0x99, 0xe7, 0x70, 0x67, 0x73, 0x38, 0x5f, 0x81, 0x0e, 0xba, + 0x87, 0xf1, 0xfd, 0xab, 0xd3, 0x6d, 0xcd, 0xcc, 0xcc, 0x0c, 0x33, 0x33, 0x33, 0x73, 0x99, 0x5a, 0x99, 0xd9, 0x66, + 0xa5, 0x8f, 0xcc, 0x00, 0x7a, 0x0b, 0x9b, 0x67, 0xe0, 0x7b, 0xd4, 0xca, 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, + 0xb7, 0x6d, 0xdb, 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, 0x08, 0x0c, 0xc3, 0x9e, 0x0f, 0x12, 0x8e, 0xc3, 0x20, 0x7d, + 0x25, 0x19, 0x76, 0x42, 0x1d, 0xd6, 0x85, 0x70, 0xa2, 0x75, 0x71, 0x0a, 0x0b, 0x01, 0x00, 0x00, 0x80, 0xd0, 0x45, + 0x17, 0xdd, 0x44, 0x29, 0xe7, 0x22, 0x1a, 0x4b, 0x4c, 0x44, 0xbf, 0x7c, 0x1a, 0xac, 0x07, 0x94, 0x2b, 0x48, 0x39, + 0x83, 0xd0, 0x04, 0x5b, 0xab, 0xa8, 0x6e, 0xb3, 0x90, 0x85, 0x2c, 0x58, 0xc8, 0x42, 0x16, 0xa6, 0x87, 0xa5, 0x37, + 0xe1, 0xa4, 0x8e, 0x32, 0x8a, 0x4c, 0x12, 0x99, 0xe5, 0x14, 0x75, 0x7a, 0xcf, 0x61, 0x03, 0xc0, 0xc2, 0xa7, 0xce, + 0x64, 0x01, 0x00, 0x00, 0x60, 0x54, 0x55, 0x55, 0xb5, 0x29, 0x18, 0xa9, 0x8a, 0x2d, 0xbd, 0x95, 0xc5, 0xaf, 0x19, + 0x3b, 0x09, 0x5d, 0xc4, 0x6c, 0x86, 0xba, 0x42, 0x8c, 0xb2, 0xaf, 0x15, 0x19, 0x6f, 0xd8, 0xa3, 0x70, 0x3d, 0x5b, + 0x8f, 0xc2, 0xf5, 0x79, 0xf8, 0x12, 0xae, 0x54, 0xd4, 0x3d, 0x80, 0x9e, 0x41, 0x24, 0xea, 0xf2, 0xf9, 0x2a, 0x06, + 0xdc, 0x0c, 0xed, 0x96, 0xfa, 0x70, 0xa7, 0x6a, 0x9e, 0xd8, 0x89, 0x1d, 0x9d, 0xd8, 0x89, 0x1d, 0x9d, 0x3a, 0xc4, + 0xce, 0x9e, 0x76, 0x81, 0xde, 0xda, 0x3d, 0x13, 0x04, 0xdc, 0x3d, 0xe7, 0xc6, 0x4f, 0xa1, 0xc2, 0x07, 0x2d, 0xee, + 0x0b, 0x31, 0x39, 0x8e, 0xe3, 0x38, 0x68, 0x2f, 0xa1, 0xbd, 0x5e, 0xea, 0xec, 0x25, 0x26, 0x0c, 0x0e, 0x52, 0x26, + 0xc4, 0x7d, 0x72, 0x4c, 0x78, 0xa5, 0x4f, 0x18, 0x68, 0x90, 0x0c, 0x3f, 0x58, 0x96, 0x08, 0x4a, 0x92, 0x24, 0x09, + 0xb6, 0x6d, 0xdb, 0x76, 0x91, 0xcb, 0x47, 0x52, 0xb9, 0xc6, 0x5b, 0xa9, 0x96, 0x3a, 0x57, 0xe3, 0x98, 0x3a, 0x5d, + 0xbc, 0x56, 0x82, 0x0a, 0x99, 0x96, 0x12, 0x3a, 0x5f, 0xcc, 0x3d, 0x8d, 0xb0, 0x45, 0x58, 0xee, 0x69, 0xed, 0xad, + 0xc0, 0x72, 0x14, 0x52, 0x23, 0x45, 0x28, 0x94, 0x35, 0x96, 0x68, 0x21, 0x8e, 0x03, 0x81, 0x48, 0xa4, 0xc5, 0x3b, + 0xeb, 0xee, 0x6b, 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca, 0x6b, 0x28, 0xc9, 0x13, 0xbb, 0x86, 0xa4, 0x14, 0xdc, 0x41, + 0x99, 0xe7, 0x70, 0x67, 0x73, 0x38, 0x5f, 0x81, 0x0e, 0xba, 0x87, 0xf1, 0xfd, 0xab, 0xd3, 0x6d, 0xcd, 0xcc, 0xcc, + 0x0c, 0x33, 0x33, 0x33, 0x73, 0x99, 0x5a, 0x99, 0xd9, 0x66, 0xa5, 0x8f, 0xcc, 0x00, 0x7a, 0x0b, 0x9b, 0x67, 0xe0, + 0x7b, 0xd4, 0xca, 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, 0xb7, 0x6d, 0xdb, 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, + 0x08, 0x0c, 0xc3, 0x9e, 0x0f, 0x12, 0x8e, 0xc3, 0x20, 0x7d, 0x25, 0x19, 0x76, 0x42, 0x1d, 0xd6, 0x85, 0x70, 0xa2, + 0x75, 0x71, 0x0a, 0x0b, 0x01, 0x00, 0x00, 0x80, 0xd0, 0x45, 0x17, 0xdd, 0x44, 0x29, 0xe7, 0x22, 0x1a, 0x4b, 0x4c, + 0x44, 0xbf, 0x7c, 0x1a, 0xac, 0x07, 0x94, 0x2b, 0x48, 0x39, 0x83, 0xd0, 0x04, 0x5b, 0xab, 0xa8, 0x6e, 0xb3, 0x90, + 0x85, 0x2c, 0x58, 0xc8, 0x42, 0x16, 0xa6, 0x87, 0xa5, 0x37, 0xe1, 0xa4, 0x8e, 0x32, 0x8a, 0x4c, 0x12, 0x99, 0xe5, + 0x14, 0x75, 0x7a, 0xcf, 0x61, 0x03, 0xc0, 0xc2, 0xa7, 0xce, 0x64, 0x01, 0x00, 0x00, 0x60, 0x54, 0x55, 0x55, 0xb5, + 0x29, 0x18, 0xa9, 0x8a, 0x2d, 0xbd, 0x95, 0xc5, 0xaf, 0x19, 0x3b, 0x09, 0x5d, 0xc4, 0x6c, 0x86, 0xba, 0x42, 0x8c, + 0xb2, 0xaf, 0x15, 0x19, 0x6f, 0xd8, 0xa3, 0x70, 0x3d, 0x5b, 0x8f, 0xc2, 0xf5, 0x79, 0xf8, 0x12, 0xae, 0x54, 0xd4, + 0x3d, 0x80, 0x9e, 0x41, 0x24, 0xea, 0xf2, 0xf9, 0x2a, 0x06, 0xdc, 0x0c, 0xed, 0x96, 0xfa, 0x70, 0xa7, 0x6a, 0x9e, + 0xd8, 0x89, 0x1d, 0x9d, 0xd8, 0x89, 0x1d, 0x9d, 0x3a, 0xc4, 0xce, 0x9e, 0x76, 0x81, 0xde, 0xda, 0x3d, 0x13, 0x04, + 0xdc, 0x3d, 0xe7, 0xc6, 0x4f, 0xa1, 0xc2, 0x07, 0x2d, 0xee, 0x0b, 0x31, 0x39, 0x8e, 0xe3, 0x38, 0x68, 0x2f, 0xa1, + 0xbd, 0x5e, 0xea, 0xec, 0x25, 0x26, 0x0c, 0x0e, 0x52, 0x26, 0xc4, 0x7d, 0x72, 0x4c, 0x78, 0xa5, 0x4f, 0x18, 0x68, + 0x90, 0x0c, 0x3f, 0x58, 0x96, 0x08, 0x4a, 0x92, 0x24, 0x09, 0xb6, 0x6d, 0xdb, 0x76, 0x91, 0xcb, 0x47, 0x52, 0xb9, + 0xc6, 0x5b, 0xa9, 0x96, 0x3a, 0x57, 0xe3, 0x98, 0x3a, 0x5d, 0xbc, 0x56, 0x82, 0x0a, 0x99, 0x96, 0x12, 0x3a, 0x5f, + 0xcc, 0x3d, 0x8d, 0xb0, 0x45, 0x58, 0xee, 0x69, 0xed, 0xad, 0xc0, 0x72, 0x14, 0x52, 0x23, 0x45, 0x28, 0x94, 0x35, + 0x96, 0x68, 0x21, 0x8e, 0x03, 0x81, 0x48, 0xa4, 0xc5, 0x3b, 0xeb, 0xee, 0x6b, 0x34, 0x33, 0x33, 0xb3, 0x76, 0x77, + 0x77, 0xf7, 0xba, 0x79, 0xba, 0x3b, 0xf1, 0x30, 0xde, 0x6a, 0x59, 0xe1, 0xc8, 0x6d, 0x4a, 0xd0, 0x23, 0x05, 0x62, + 0x35, 0x70, 0x28, 0x26, 0xde, 0xe0, 0x58, 0xcd, 0xcc, 0xcc, 0x0c, 0x33, 0x33, 0x33, 0x73, 0x99, 0x5a, 0x99, 0xd9, + 0x66, 0xa5, 0x8f, 0xcc, 0x00, 0x7a, 0x0b, 0x9b, 0x67, 0xe0, 0x7b, 0xd4, 0xca, 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, + 0x11, 0xb7, 0x6d, 0xdb, 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, 0x08, 0x0c, 0xc3, 0x9e, 0x0f, 0x12, 0x8e, 0xc3, 0x20, + 0x7d, 0x25, 0x19, 0x76, 0x42, 0x1d, 0xd6, 0x85, 0x70, 0xa2, 0x75, 0x71, 0x0a, 0x0b, 0x01, 0x00, 0x00, 0x80, 0xd0, + 0x45, 0x17, 0xdd, 0x44, 0x29, 0xe7, 0x22, 0x1a, 0x4b, 0x4c, 0x44, 0xbf, 0x7c, 0x1a, 0xac, 0x07, 0x94, 0x2b, 0x48, + 0x39, 0x83, 0xd0, 0x04, 0x5b, 0xab, 0xa8, 0x6e, 0xb3, 0x90, 0x85, 0x2c, 0x58, 0xc8, 0x42, 0x16, 0xa6, 0x87, 0xa5, + 0x37, 0xe1, 0xa4, 0x8e, 0x32, 0x8a, 0x4c, 0x12, 0x99, 0xe5, 0x14, 0x75, 0x7a, 0xcf, 0x61, 0x03, 0xc0, 0xc2, 0xa7, + 0xce, 0x64, 0x01, 0x00, 0x00, 0x60, 0x54, 0x55, 0x55, 0xb5, 0x29, 0x18, 0xa9, 0x8a, 0x2d, 0xbd, 0x95, 0xc5, 0xaf, + 0x19, 0x3b, 0x09, 0x5d, 0xc4, 0x6c, 0x86, 0xba, 0x42, 0x8c, 0xb2, 0xaf, 0x15, 0x19, 0x6f, 0xd8, 0xa3, 0x70, 0x3d, + 0x5b, 0x8f, 0xc2, 0xf5, 0x79, 0xf8, 0x12, 0xae, 0x54, 0xd4, 0x3d, 0x80, 0x9e, 0x41, 0x24, 0xea, 0xf2, 0xf9, 0x2a, + 0x06, 0xdc, 0x0c, 0xed, 0x96, 0xfa, 0x70, 0xa7, 0x6a, 0x9e, 0xd8, 0x89, 0x1d, 0x9d, 0xd8, 0x89, 0x1d, 0x9d, 0x3a, + 0xc4, 0xce, 0x9e, 0x76, 0x81, 0xde, 0xda, 0x3d, 0x13, 0x04, 0xdc, 0x3d, 0xe7, 0xc6, 0x4f, 0xa1, 0xc2, 0x07, 0x2d, + 0xee, 0x0b, 0x31, 0x39, 0x8e, 0xe3, 0x38, 0x68, 0x2f, 0xa1, 0xbd, 0x5e, 0xea, 0xec, 0x25, 0x26, 0x0c, 0x0e, 0x52, + 0x26, 0xc4, 0x7d, 0x72, 0x4c, 0x78, 0xa5, 0x4f, 0x18, 0x68, 0x90, 0x0c, 0x3f, 0x58, 0x96, 0x08, 0x4a, 0x92, 0x24, + 0x09, 0xb6, 0x6d, 0xdb, 0x76, 0x91, 0xcb, 0x47, 0x52, 0xb9, 0xc6, 0x5b, 0xa9, 0x96, 0x3a, 0x57, 0xe3, 0x98, 0x3a, + 0x5d, 0xbc, 0x56, 0x82, 0x0a, 0x99, 0x96, 0x12, 0x3a, 0x5f, 0xcc, 0x3d, 0x8d, 0xb0, 0x45, 0x58, 0xee, 0x69, 0xed, + 0xad, 0xc0, 0x72, 0x14, 0x52, 0x23, 0x45, 0x28, 0x94, 0x35, 0x96, 0x68, 0x21, 0x8e, 0x03, 0x81, 0x48, 0xa4, 0xc5, + 0x3b, 0xeb, 0xee, 0x6b, 0x34, 0x33, 0x33, 0xb3, 0x76, 0x77, 0x77, 0xf7, 0xba, 0x79, 0xba, 0x3b, 0xf1, 0x30, 0xde, + 0x6a, 0x59, 0xe1, 0xc8, 0x6d, 0x4a, 0xd0, 0x23, 0x05, 0x62, 0x35, 0x70, 0x28, 0x26, 0xde, 0xe0, 0x58, 0xb6, 0xd6, + 0x5a, 0x6b, 0xd6, 0x5a, 0x6b, 0xad, 0xde, 0xbf, 0xe6, 0x9c, 0xf8, 0x9a, 0x68, 0x7b, 0xbf, 0x5f, 0xbb, 0xc0, 0xaf, + 0x1d, 0x5b, 0xfe, 0x35, 0x7f, 0x46, 0xd2, 0xcd, 0x17, 0xa8, 0x21, 0xb7, 0x6d, 0xdb, 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, + 0xc2, 0x08, 0x0c, 0xc3, 0x9e, 0x0f, 0x12, 0x8e, 0xc3, 0x20, 0x7d, 0x25, 0x19, 0x76, 0x42, 0x1d, 0xd6, 0x85, 0x70, + 0xa2, 0x75, 0x71, 0x0a, 0x0b, 0x01, 0x00, 0x00, 0x80, 0xd0, 0x45, 0x17, 0xdd, 0x44, 0x29, 0xe7, 0x22, 0x1a, 0x4b, + 0x4c, 0x44, 0xbf, 0x7c, 0x1a, 0xac, 0x07, 0x94, 0x2b, 0x48, 0x39, 0x83, 0xd0, 0x04, 0x5b, 0xab, 0xa8, 0x6e, 0xb3, + 0x90, 0x85, 0x2c, 0x58, 0xc8, 0x42, 0x16, 0xa6, 0x87, 0xa5, 0x37, 0xe1, 0xa4, 0x8e, 0x32, 0x8a, 0x4c, 0x12, 0x99, + 0xe5, 0x14, 0x75, 0x7a, 0xcf, 0x61, 0x03, 0xc0, 0xc2, 0xa7, 0xce, 0x64, 0x01, 0x00, 0x00, 0x60, 0x54, 0x55, 0x55, + 0xb5, 0x29, 0x18, 0xa9, 0x8a, 0x2d, 0xbd, 0x95, 0xc5, 0xaf, 0x19, 0x3b, 0x09, 0x5d, 0xc4, 0x6c, 0x86, 0xba, 0x42, + 0x8c, 0xb2, 0xaf, 0x15, 0x19, 0x6f, 0xd8, 0xa3, 0x70, 0x3d, 0x5b, 0x8f, 0xc2, 0xf5, 0x79, 0xf8, 0x12, 0xae, 0x54, + 0xd4, 0x3d, 0x80, 0x9e, 0x41, 0x24, 0xea, 0xf2, 0xf9, 0x2a, 0x06, 0xdc, 0x0c, 0xed, 0x96, 0xfa, 0x70, 0xa7, 0x6a, + 0x9e, 0xd8, 0x89, 0x1d, 0x9d, 0xd8, 0x89, 0x1d, 0x9d, 0x3a, 0xc4, 0xce, 0x9e, 0x76, 0x81, 0xde, 0xda, 0x3d, 0x13, + 0x04, 0xdc, 0x3d, 0xe7, 0xc6, 0x4f, 0xa1, 0xc2, 0x07, 0x2d, 0xee, 0x0b, 0x31, 0x39, 0x8e, 0xe3, 0x38, 0x68, 0x2f, + 0xa1, 0xbd, 0x5e, 0xea, 0xec, 0x25, 0x26, 0x0c, 0x0e, 0x52, 0x26, 0xc4, 0x7d, 0x72, 0x4c, 0x78, 0xa5, 0x4f, 0x18, + 0x68, 0x90, 0x0c, 0x3f, 0x58, 0x96, 0x08, 0x4a, 0x92, 0x24, 0x09, 0xb6, 0x6d, 0xdb, 0x76, 0x91, 0xcb, 0x47, 0x52, + 0xb9, 0xc6, 0x5b, 0xa9, 0x96, 0x3a, 0x57, 0xe3, 0x98, 0x3a, 0x5d, 0xbc, 0x56, 0x82, 0x0a, 0x99, 0x96, 0x12, 0x3a, + 0x5f, 0xcc, 0x3d, 0x8d, 0xb0, 0x45, 0x58, 0xee, 0x69, 0xed, 0xad, 0xc0, 0x72, 0x14, 0x52, 0x23, 0x45, 0x28, 0x94, + 0x35, 0x96, 0x68, 0x21, 0x8e, 0x03, 0x81, 0x48, 0xa4, 0xc5, 0x3b, 0xeb, 0xee, 0x6b, 0x34, 0x33, 0x33, 0xb3, 0x76, + 0x77, 0x77, 0xf7, 0xba, 0x79, 0xba, 0x3b, 0xf1, 0x30, 0xde, 0x6a, 0x59, 0xe1, 0xc8, 0x6d, 0x4a, 0xd0, 0x23, 0x05, + 0x62, 0x35, 0x70, 0x28, 0x26, 0xde, 0xe0, 0x58, 0xb6, 0xd6, 0x5a, 0x6b, 0xd6, 0x5a, 0x6b, 0xad, 0xde, 0xbf, 0xe6, + 0x9c, 0xf8, 0x9a, 0x68, 0x7b, 0xbf, 0x5f, 0xbb, 0xc0, 0xaf, 0x1d, 0x5b, 0xfe, 0x35, 0x7f, 0x46, 0xd2, 0xcd, 0x17, + 0xa8, 0x21, 0x01, 0x00, 0x00, 0x08, 0xff, 0xff, 0xff, 0x07, 0x1f, 0x69, 0xfe, 0xe7, 0xe2, 0xb6, 0x1f, 0x29, 0x45, + 0xc9, 0x54, 0xc9, 0x47, 0x09, 0xa0, 0xf1, 0x5d, 0x91, 0x50, 0x90, 0x18, 0x3a, 0x4e, 0x70, 0x01, 0x00, 0x00, 0x80, + 0xd0, 0x45, 0x17, 0xdd, 0x44, 0x29, 0xe7, 0x22, 0x1a, 0x4b, 0x4c, 0x44, 0xbf, 0x7c, 0x1a, 0xac, 0x07, 0x94, 0x2b, + 0x48, 0x39, 0x83, 0xd0, 0x04, 0x5b, 0xab, 0xa8, 0x6e, 0xb3, 0x90, 0x85, 0x2c, 0x58, 0xc8, 0x42, 0x16, 0xa6, 0x87, + 0xa5, 0x37, 0xe1, 0xa4, 0x8e, 0x32, 0x8a, 0x4c, 0x12, 0x99, 0xe5, 0x14, 0x75, 0x7a, 0xcf, 0x61, 0x03, 0xc0, 0xc2, + 0xa7, 0xce, 0x64, 0x01, 0x00, 0x00, 0x60, 0x54, 0x55, 0x55, 0xb5, 0x29, 0x18, 0xa9, 0x8a, 0x2d, 0xbd, 0x95, 0xc5, + 0xaf, 0x19, 0x3b, 0x09, 0x5d, 0xc4, 0x6c, 0x86, 0xba, 0x42, 0x8c, 0xb2, 0xaf, 0x15, 0x19, 0x6f, 0xd8, 0xa3, 0x70, + 0x3d, 0x5b, 0x8f, 0xc2, 0xf5, 0x79, 0xf8, 0x12, 0xae, 0x54, 0xd4, 0x3d, 0x80, 0x9e, 0x41, 0x24, 0xea, 0xf2, 0xf9, + 0x2a, 0x06, 0xdc, 0x0c, 0xed, 0x96, 0xfa, 0x70, 0xa7, 0x6a, 0x9e, 0xd8, 0x89, 0x1d, 0x9d, 0xd8, 0x89, 0x1d, 0x9d, + 0x3a, 0xc4, 0xce, 0x9e, 0x76, 0x81, 0xde, 0xda, 0x3d, 0x13, 0x04, 0xdc, 0x3d, 0xe7, 0xc6, 0x4f, 0xa1, 0xc2, 0x07, + 0x2d, 0xee, 0x0b, 0x31, 0x39, 0x8e, 0xe3, 0x38, 0x68, 0x2f, 0xa1, 0xbd, 0x5e, 0xea, 0xec, 0x25, 0x26, 0x0c, 0x0e, + 0x52, 0x26, 0xc4, 0x7d, 0x72, 0x4c, 0x78, 0xa5, 0x4f, 0x18, 0x68, 0x90, 0x0c, 0x3f, 0x58, 0x96, 0x08, 0x4a, 0x92, + 0x24, 0x09, 0xb6, 0x6d, 0xdb, 0x76, 0x91, 0xcb, 0x47, 0x52, 0xb9, 0xc6, 0x5b, 0xa9, 0x96, 0x3a, 0x57, 0xe3, 0x98, + 0x3a, 0x5d, 0xbc, 0x56, 0x82, 0x0a, 0x99, 0x96, 0x12, 0x3a, 0x5f, 0xcc, 0x3d, 0x8d, 0xb0, 0x45, 0x58, 0xee, 0x69, + 0xed, 0xad, 0xc0, 0x72, 0x14, 0x52, 0x23, 0x45, 0x28, 0x94, 0x35, 0x96, 0x68, 0x21, 0x8e, 0x03, 0x81, 0x48, 0xa4, + 0xc5, 0x3b, 0xeb, 0xee, 0x6b, 0x34, 0x33, 0x33, 0xb3, 0x76, 0x77, 0x77, 0xf7, 0xba, 0x79, 0xba, 0x3b, 0xf1, 0x30, + 0xde, 0x6a, 0x59, 0xe1, 0xc8, 0x6d, 0x4a, 0xd0, 0x23, 0x05, 0x62, 0x35, 0x70, 0x28, 0x26, 0xde, 0xe0, 0x58, 0xb6, + 0xd6, 0x5a, 0x6b, 0xd6, 0x5a, 0x6b, 0xad, 0xde, 0xbf, 0xe6, 0x9c, 0xf8, 0x9a, 0x68, 0x7b, 0xbf, 0x5f, 0xbb, 0xc0, + 0xaf, 0x1d, 0x5b, 0xfe, 0x35, 0x7f, 0x46, 0xd2, 0xcd, 0x17, 0xa8, 0x21, 0x01, 0x00, 0x00, 0x08, 0xff, 0xff, 0xff, + 0x07, 0x1f, 0x69, 0xfe, 0xe7, 0xe2, 0xb6, 0x1f, 0x29, 0x45, 0xc9, 0x54, 0xc9, 0x47, 0x09, 0xa0, 0xf1, 0x5d, 0x91, + 0x50, 0x90, 0x18, 0x3a, 0x4e, 0x70, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x83, 0x0f, 0x3e, 0xd8, 0xe4, 0xee, 0xc1, 0x67, + 0x13, 0x72, 0x49, 0x81, 0xf0, 0x9c, 0x20, 0x5d, 0x55, 0x30, 0x41, 0x3e, 0x81, 0xbf, 0xbb, 0xad, 0x54, 0x6a, 0x70, + 0xb3, 0x90, 0x85, 0x2c, 0x58, 0xc8, 0x42, 0x16, 0xa6, 0x87, 0xa5, 0x37, 0xe1, 0xa4, 0x8e, 0x32, 0x8a, 0x4c, 0x12, + 0x99, 0xe5, 0x14, 0x75, 0x7a, 0xcf, 0x61, 0x03, 0xc0, 0xc2, 0xa7, 0xce, 0x64, 0x01, 0x00, 0x00, 0x60, 0x54, 0x55, + 0x55, 0xb5, 0x29, 0x18, 0xa9, 0x8a, 0x2d, 0xbd, 0x95, 0xc5, 0xaf, 0x19, 0x3b, 0x09, 0x5d, 0xc4, 0x6c, 0x86, 0xba, + 0x42, 0x8c, 0xb2, 0xaf, 0x15, 0x19, 0x6f, 0xd8, 0xa3, 0x70, 0x3d, 0x5b, 0x8f, 0xc2, 0xf5, 0x79, 0xf8, 0x12, 0xae, + 0x54, 0xd4, 0x3d, 0x80, 0x9e, 0x41, 0x24, 0xea, 0xf2, 0xf9, 0x2a, 0x06, 0xdc, 0x0c, 0xed, 0x96, 0xfa, 0x70, 0xa7, + 0x6a, 0x9e, 0xd8, 0x89, 0x1d, 0x9d, 0xd8, 0x89, 0x1d, 0x9d, 0x3a, 0xc4, 0xce, 0x9e, 0x76, 0x81, 0xde, 0xda, 0x3d, + 0x13, 0x04, 0xdc, 0x3d, 0xe7, 0xc6, 0x4f, 0xa1, 0xc2, 0x07, 0x2d, 0xee, 0x0b, 0x31, 0x39, 0x8e, 0xe3, 0x38, 0x68, + 0x2f, 0xa1, 0xbd, 0x5e, 0xea, 0xec, 0x25, 0x26, 0x0c, 0x0e, 0x52, 0x26, 0xc4, 0x7d, 0x72, 0x4c, 0x78, 0xa5, 0x4f, + 0x18, 0x68, 0x90, 0x0c, 0x3f, 0x58, 0x96, 0x08, 0x4a, 0x92, 0x24, 0x09, 0xb6, 0x6d, 0xdb, 0x76, 0x91, 0xcb, 0x47, + 0x52, 0xb9, 0xc6, 0x5b, 0xa9, 0x96, 0x3a, 0x57, 0xe3, 0x98, 0x3a, 0x5d, 0xbc, 0x56, 0x82, 0x0a, 0x99, 0x96, 0x12, + 0x3a, 0x5f, 0xcc, 0x3d, 0x8d, 0xb0, 0x45, 0x58, 0xee, 0x69, 0xed, 0xad, 0xc0, 0x72, 0x14, 0x52, 0x23, 0x45, 0x28, + 0x94, 0x35, 0x96, 0x68, 0x21, 0x8e, 0x03, 0x81, 0x48, 0xa4, 0xc5, 0x3b, 0xeb, 0xee, 0x6b, 0x34, 0x33, 0x33, 0xb3, + 0x76, 0x77, 0x77, 0xf7, 0xba, 0x79, 0xba, 0x3b, 0xf1, 0x30, 0xde, 0x6a, 0x59, 0xe1, 0xc8, 0x6d, 0x4a, 0xd0, 0x23, + 0x05, 0x62, 0x35, 0x70, 0x28, 0x26, 0xde, 0xe0, 0x58, 0xb6, 0xd6, 0x5a, 0x6b, 0xd6, 0x5a, 0x6b, 0xad, 0xde, 0xbf, + 0xe6, 0x9c, 0xf8, 0x9a, 0x68, 0x7b, 0xbf, 0x5f, 0xbb, 0xc0, 0xaf, 0x1d, 0x5b, 0xfe, 0x35, 0x7f, 0x46, 0xd2, 0xcd, + 0x17, 0xa8, 0x21, 0x01, 0x00, 0x00, 0x08, 0xff, 0xff, 0xff, 0x07, 0x1f, 0x69, 0xfe, 0xe7, 0xe2, 0xb6, 0x1f, 0x29, + 0x45, 0xc9, 0x54, 0xc9, 0x47, 0x09, 0xa0, 0xf1, 0x5d, 0x91, 0x50, 0x90, 0x18, 0x3a, 0x4e, 0x70, 0x01, 0x00, 0x00, + 0x00, 0xe0, 0x83, 0x0f, 0x3e, 0xd8, 0xe4, 0xee, 0xc1, 0x67, 0x13, 0x72, 0x49, 0x81, 0xf0, 0x9c, 0x20, 0x5d, 0x55, + 0x30, 0x41, 0x3e, 0x81, 0xbf, 0xbb, 0xad, 0x54, 0x6a, 0x70, 0x5b, 0x5a, 0x5a, 0xda, 0x77, 0x78, 0x78, 0xf8, 0x95, + 0xfc, 0xfe, 0x7f, 0xa7, 0x3f, 0x13, 0x0e, 0xc7, 0x5f, 0x4d, 0x60, 0x6e, 0x05, 0xef, 0x6a, 0x7f, 0xeb, 0x86, 0x6c, + 0xc2, 0x50, 0x9a, 0x47, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, + 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xa7, 0x02, + 0x57, 0xea, 0xf3, 0x97, 0xe0, 0x48, 0x84, 0x3e, 0xfe, 0xf0, 0x68, 0x1d, 0x79, 0x42, 0xe0, 0xf3, 0x1c, 0x92, 0xf6, + 0xf3, 0x44, 0xde, 0x6c, 0xc3, 0xe6, 0x8c, 0x74, 0xa7, 0xa7, 0x26, 0xf1, 0x87, 0xc3, 0x69, 0xde, 0x94, 0xaa, 0x44, + 0xc3, 0x5b, 0xae, 0xf5, 0x4b, 0x46, 0xe3, 0x8a, 0x66, 0x5e, 0x62, 0x88, 0xb2, 0x1b, 0xd8, 0x0e, 0x1c, 0xe6, 0xb7, + 0x06, 0x1a, 0x5b, 0x39, 0x24, 0xcc, 0xa7, 0xc6, 0x79, 0xcb, 0x1f, 0x10, 0xb1, 0x56, 0x63, 0x8a, 0xac, 0xe0, 0xe2, + 0xb0, 0x6a, 0xa1, 0xcd, 0x0d, 0x74, 0x22, 0x3d, 0x1f, 0x28, 0xe3, 0x98, 0xc5, 0x00, 0xbc, 0xdf, 0xf3, 0x70, 0x25, + 0xc1, 0x87, 0x98, 0xd6, 0x95, 0x3c, 0xbe, 0xec, 0x6d, 0x3b, 0x71, 0x17, 0x8b, 0xb7, 0x58, 0xac, 0x4c, 0x71, 0x69, + 0x8e, 0x4d, 0x81, 0xfd, 0x62, 0xe5, 0xaa, 0x38, 0xea, 0x7b, 0xcc, 0x25, 0x5f, 0x09, 0x88, 0xa0, 0x8b, 0x48, 0x48, + 0xdc, 0x3d, 0xe9, 0x06, 0x42, 0xb4, 0xcb, 0xe4, 0x2c, 0xf1, 0x8d, 0x46, 0x24, 0xb0, 0x20, 0xa5, 0x21, 0xc9, 0x84, + 0x9d, 0x70, 0x9f, 0xc9, 0x18, 0x59, 0x30, 0x70, 0x83, 0x73, 0x92, 0x9a, 0xcf, 0xd8, 0x59, 0xe7, 0xd5, 0x85, 0x0b, + 0x10, 0xc9, 0xfa, 0x07, 0x4d, 0x4f, 0x01, 0xdb, 0x8c, 0xff, 0x29, 0x00, 0x51, 0xb1, 0xab, 0x09, 0x80, 0x99, 0x4f, + 0x2c, 0x56, 0xe2, 0xf3, 0x03, 0x76, 0x42, 0x66, 0x9f, 0x20, 0xd3, 0xed, 0x95, 0xc9, 0xde, 0xf6, 0xd0, 0x1d, 0xb7, + 0x9b, 0xe7, 0x64, 0x59, 0x03, 0xdc, 0x84, 0xab, 0x21, 0x75, 0x2f, 0x44, 0x57, 0x63, 0xbe, 0xd2, 0xe3, 0x06, 0xe8, + 0x87, 0x78, 0x35, 0x61, 0x04, 0x0b, 0x1f, 0xca, 0x33, 0xc7, 0xf4, 0x04, 0x59, 0x81, 0x86, 0x44, 0x03, 0x8e, 0xf6, + 0xe6, 0x99, 0x3d, 0xbe, 0x31, 0xfa, 0x57, 0x5d, 0x16, 0xc8, 0x3d, 0x23, 0x89, 0xaf, 0x3b, 0xcd, 0xd9, 0x24, 0x50, + 0xf5, 0xbb, 0x7c, 0x27, 0x4d, 0xea, 0xd5, 0x19, 0xf3, 0x55, 0xc0, 0x5d, 0x1c, 0x0a, 0x90, 0x4b, 0xe2, 0x04, 0xaa, + 0x35, 0x33, 0x0e, 0xbc, 0x5c, 0x62, 0x0a, 0x26, 0x24, 0x8c, 0x80, 0x09, 0xb5, 0xf7, 0xec, 0xf0, 0xd3, 0xed, 0xe3, + 0x81, 0x5c, 0x9c, 0x07, 0xc0, 0x11, 0x14, 0x10, 0xa4, 0x98, 0xcb, 0x13, 0xe3, 0x21, 0xf0, 0x5e, 0x5c, 0xa3, 0xcf, + 0xc2, 0xdd, 0x26, 0x3b, 0x04, 0xd1, 0xe9, 0xa7, 0x4d, 0x39, 0x43, 0xbe, 0x39, 0x57, 0xe4, 0x32, 0x7c, 0x26, 0xdf, + 0x48, 0x68, 0x55, 0x57, 0x01, 0x93, 0x0b, 0x53, 0x3c, 0xb1, 0x13, 0x3b, 0x3a, 0xb1, 0x13, 0x3b, 0x3a, 0x75, 0x88, + 0x9d, 0x3d, 0xed, 0x02, 0xbd, 0xb5, 0x7b, 0x26, 0x08, 0xb8, 0x7b, 0xce, 0x8d, 0x9f, 0x42, 0x85, 0x0f, 0x5a, 0xdc, + 0x17, 0x62, 0x29, 0x47, 0x19, 0x36, 0x19, 0xe9, 0x12, 0x33, 0x6b, 0xbc, 0x4c, 0xeb, 0x6f, 0x18, 0x02, 0x54, 0x1b, + 0x1c, 0x24, 0x54, 0x13, 0xd6, 0x60, 0xf4, 0xeb, 0x2a, 0x71, 0xa1, 0x9a, 0x83, 0xea, 0x6e, 0x9d, 0xfc, 0x65, 0x63, + 0x3a, 0x1e, 0x81, 0x5a, 0xbe, 0xba, 0xd1, 0xe2, 0x9d, 0x52, 0xee, 0x61, 0x9c, 0xfa, 0xfd, 0xc8, 0xd4, 0x18, 0x8a, + 0x1f, 0x5f, 0x46, 0x3e, 0xfa, 0x5b, 0x13, 0xd3, 0x6d, 0xe4, 0x07, 0x95, 0x19, 0xa4, 0xc3, 0x6b, 0x13, 0x36, 0x8f, + 0x4d, 0xae, 0xb1, 0x73, 0xb7, 0xf6, 0x50, 0x10, 0x27, 0xc0, 0x6a, 0x20, 0xff, 0xae, 0xdb, 0x5a, 0x75, 0x56, 0x26, + 0xe1, 0xaf, 0x51, 0xb9, 0x9b, 0xa3, 0xf5, 0x5c, 0x3e, 0x7a, 0x2e, 0xe1, 0x3c, 0xc3, 0x20, 0x5e, 0x8e, 0xd2, 0x95, + 0xe5, 0xe5, 0xc4, 0x60, 0x31, 0x85, 0xbe, 0xb7, 0x9d, 0xc6, 0x04, 0x4b, 0x4f, 0xc0, 0xdf, 0x6f, 0xaf, 0x5a, 0x2e, + 0x85, 0x9b, 0x93, 0xd2, 0x30, 0x48, 0x22, 0x00, 0x1a, 0x1a, 0xe2, 0xa3, 0x3f, 0xa1, 0xa2, 0x30, 0x3c, 0x64, 0x25, + 0x68, 0x2e, 0x61, 0x5d, 0x1c, 0x9e, 0xc1, 0xac, 0xb6, 0x71, 0x37, 0xbd, 0xa9, 0xe9, 0xa5, 0x78, 0xb5, 0x04, 0x1f, + 0xd5, 0x06, 0x01, 0x86, 0x91, 0x78, 0x54, 0x07, 0xce, 0x9c, 0x4d, 0xfd, 0x53, 0x3f, 0x8f, 0xaf, 0x03, 0x55, 0xa8, + 0xd2, 0x53, 0x02, 0x44, 0xf2, 0x3b, 0x51, 0x13, 0x52, 0x0d, 0x7d, 0xbf, 0xf8, 0x8d, 0x1c, 0xa8, 0x1f, 0x8f, 0x28, + 0xe8, 0xa2, 0x66, 0x26, 0x40, 0x3b, 0xf6, 0x2f, 0x0a, 0xa3, 0xc6, 0x72, 0xa5, 0xeb, 0x4d, 0x9b, 0x44, 0xf1, 0x98, + 0x00, 0xbe, 0x97, 0x3c, 0xd3, 0x7a, 0x3c, 0x9b, 0x15, 0x33, 0x6d, 0xf0, 0x49, 0x3d, 0x89, 0x98, 0xd7, 0x3a, 0x65, + 0x11, 0xe8, 0xf1, 0x77, 0x77, 0xb6, 0x81, 0xfe, 0x08, 0x7b, 0x48, 0x94, 0x1c, 0x12, 0xbf, 0x42, 0x5e, 0xe4, 0x27, + 0xdb, 0x3c, 0xe1, 0xf5, 0xaf, 0x46, 0x1e, 0x9d, 0x8e, 0x12, 0x00, 0x76, 0x04, 0xe9, 0x91, 0xc2, 0x87, 0xb3, 0xa0, + 0x48, 0xdd, 0xc0, 0x7d, 0x56, 0x2b, 0x36, 0x7d, 0x46, 0xa8, 0xb6, 0x31, 0xdd, 0xca, 0xd5, 0x7f, 0x35, 0x97, 0x0e, + 0x0c, 0x19, 0xd8, 0xba, 0xd1, 0xa0, 0x43, 0xcc, 0x56, 0x7a, 0xba, 0x61, 0x29, 0x9d, 0x30, 0xa7, 0xc5, 0x70, 0xbe, + 0x27, 0xc2, 0xdb, 0x5f, 0x39, 0xca, 0x66, 0xdd, 0xff, 0x94, 0x6a, 0x77, 0x98, 0xb8, 0x36, 0x31, 0x8a, 0x9a, 0x1c, + 0x61, 0x2a, 0xf0, 0xdf, 0xe3, 0x2c, 0x9e, 0x76, 0x2b, 0x9a, 0x99, 0x3d, 0x93, 0x24, 0x49, 0x12, 0x6d, 0xdb, 0xb6, + 0xed, 0x23, 0x3b, 0x91, 0xa4, 0x6f, 0xe9, 0xf9, 0xfe, 0x27, 0x9d, 0x0c, 0xbd, 0x29, 0x9d, 0x80, 0x45, 0x65, 0x87, + 0x77, 0x08, 0xda, 0x7d, 0x86, 0x4a, 0x9d, 0xfc, 0x65, 0x63, 0x3a, 0x1e, 0x81, 0x5a, 0xbe, 0xba, 0xd1, 0xe2, 0x9d, + 0x52, 0xee, 0x61, 0x9c, 0xfa, 0xfd, 0xc8, 0xd4, 0x18, 0x8a, 0x1f, 0x5f, 0x46, 0x3e, 0xfa, 0x5b, 0x13, 0xd3, 0x6d, + 0xa5, 0x50, 0x08, 0xc5, 0x88, 0xb7, 0xc9, 0xbe, 0x08, 0xfb, 0x07, 0xe2, 0x7e, 0x09, 0x95, 0xc0, 0xeb, 0x82, 0xb3, + 0xb1, 0x1d, 0xed, 0xde, 0x69, 0xcd, 0xc3, 0xdb, 0x92, 0xec, 0x36, 0xd7, 0x6e, 0x83, 0x16, 0x51, 0xe3, 0x15, 0xd2, + 0xde, 0x19, 0x6e, 0xe9, 0x22, 0x57, 0x39, 0xeb, 0xba, 0x2a, 0x3f, 0x10, 0x6e, 0x3a, 0xea, 0x92, 0x30, 0x33, 0xbb, + 0xaa, 0xa1, 0x2c, 0x10, 0xd8, 0x5e, 0x32, 0xcd, 0x4d, 0xec, 0x47, 0x86, 0x8b, 0xac, 0x80, 0xf1, 0x86, 0x30, 0xb5, + 0x1c, 0x1e, 0xd1, 0x0d, 0x5e, 0x1a, 0x9b, 0x94, 0x83, 0xeb, 0x99, 0x79, 0x3b, 0xff, 0x48, 0xe6, 0xf3, 0xc5, 0x83, + 0x1c, 0x91, 0x72, 0xd6, 0xbd, 0x83, 0x0a, 0xc7, 0x59, 0x99, 0x81, 0x85, 0x31, 0x72, 0xdc, 0xf5, 0x75, 0xa7, 0x5e, + 0x1e, 0x5d, 0xb1, 0x05, 0x57, 0xb2, 0x99, 0xcf, 0x8c, 0x77, 0x57, 0x84, 0x6c, 0x67, 0x27, 0x24, 0xa7, 0x7a, 0x91, + 0xf3, 0x5e, 0xf8, 0x75, 0xce, 0x78, 0x4b, 0x1c, 0x1b, 0x8e, 0x6c, 0x73, 0x4c, 0xcf, 0x2e, 0x13, 0x6e, 0x0e, 0x77, + 0x13, 0x81, 0x1c, 0xfe, 0x57, 0xda, 0xc9, 0x69, 0xcb, 0xb2, 0xf2, 0xad, 0x8d, 0xa8, 0x1d, 0x48, 0xc7, 0x88, 0x9d, + 0x56, 0xe5, 0xae, 0x9c, 0xdc, 0x1e, 0x7c, 0xb2, 0x17, 0x19, 0x5f, 0xba, 0x46, 0x22, 0x82, 0x56, 0xd7, 0xcb, 0x3b, + 0x9a, 0x10, 0x4d, 0xc3, 0x78, 0x93, 0x81, 0x4b, 0x73, 0xdd, 0x82, 0x22, 0x1a, 0xd4, 0x95, 0x93, 0x05, 0xea, 0x6b, + 0xe5, 0xbb, 0x33, 0x38, 0xca, 0x7c, 0xfc, 0xc0, 0x9b, 0x0a, 0xb3, 0xf0, 0x23, 0x06, 0x19, 0x95, 0x78, 0x00, 0xf1, + 0xf6, 0x6a, 0xd7, 0xcd, 0xf5, 0x0a, 0xcb, 0x24, 0x7e, 0xa5, 0x47, 0xa6, 0xea, 0x8f, 0x03, 0x39, 0xd1, 0x17, 0x1b, + 0x29, 0x6d, 0xcb, 0x08, 0x22, 0x69, 0x78, 0x31, 0x5f, 0xa2, 0xd7, 0xd3, 0x94, 0x26, 0xc8, 0x0f, 0x99, 0x83, 0x6b, + 0x49, 0x1c, 0x18, 0x63, 0x67, 0xcc, 0x80, 0x7a, 0xca, 0x48, 0xf5, 0xfc, 0x59, 0xb1, 0x72, 0x2d, 0x12, 0x26, 0x16, + 0x46, 0x20, 0x29, 0x3d, 0x61, 0xea, 0xed, 0xb3, 0x79, 0x8b, 0x06, 0xf3, 0x14, 0x49, 0x86, 0x7b, 0xc6, 0x8a, 0x9a, + 0x88, 0x80, 0x87, 0x71, 0x06, 0x4b, 0x9b, 0x20, 0x73, 0xd0, 0x71, 0x68, 0x18, 0x4b, 0x12, 0x17, 0x67, 0x66, 0x66, + 0x66, 0xee, 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, 0xdf, 0xbd, 0xfe, 0x81, 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, + 0x0d, 0xd7, 0x7b, 0xed, 0x42, 0x27, 0xf9, 0x14, 0xd4, 0x3d, 0xe4, 0x07, 0x95, 0x19, 0xa4, 0xc3, 0x6b, 0x13, 0x36, + 0x8f, 0x4d, 0xae, 0xb1, 0x73, 0xb7, 0xf6, 0x50, 0x10, 0x27, 0xc0, 0x6a, 0x20, 0xff, 0xae, 0xdb, 0x5a, 0x75, 0x56, + 0x26, 0xe1, 0xaf, 0x51, 0x83, 0x16, 0x51, 0xe3, 0x15, 0xd2, 0xde, 0x19, 0x6e, 0xe9, 0x22, 0x57, 0x39, 0xeb, 0xba, + 0x2a, 0x3f, 0x10, 0x6e, 0x3a, 0xea, 0x92, 0x30, 0x33, 0xbb, 0xaa, 0xa1, 0x2c, 0x10, 0xd8, 0x5e, 0x32, 0xf4, 0x01, + 0xc8, 0xa6, 0xc1, 0x07, 0x0e, 0x59, 0x0d, 0xb6, 0x13, 0x8e, 0xcf, 0x4d, 0x85, 0x62, 0x46, 0x20, 0x79, 0x1d, 0xc0, + 0x07, 0x31, 0x39, 0x06, 0xe1, 0x74, 0x5e, 0x30, 0x91, 0x69, 0x53, 0x4a, 0x05, 0x25, 0x81, 0x10, 0xa4, 0x3d, 0x28, + 0xcd, 0x7c, 0xce, 0x36, 0x24, 0xda, 0xc1, 0x82, 0xc1, 0xc7, 0x29, 0x3e, 0x87, 0xb0, 0x4a, 0xe5, 0x17, 0x42, 0xa0, + 0x1f, 0xc5, 0xf9, 0xab, 0x3e, 0xb9, 0xd2, 0x6a, 0x3f, 0x86, 0xfd, 0x23, 0xba, 0x12, 0x5e, 0x77, 0xce, 0x42, 0xa2, + 0xe8, 0xe4, 0xc2, 0x75, 0x7c, 0xc9, 0xc6, 0x2e, 0x23, 0x5b, 0xad, 0x3f, 0x16, 0xd2, 0x70, 0x94, 0x3f, 0x5f, 0x96, + 0x21, 0x59, 0x38, 0xb6, 0xf8, 0xd5, 0x4a, 0x65, 0x48, 0x8c, 0x49, 0x7b, 0x7b, 0xcd, 0x9f, 0xc8, 0xc1, 0x7b, 0x2a, + 0xf6, 0x8e, 0x1c, 0xf2, 0x32, 0xf0, 0x28, 0xb4, 0x54, 0x0c, 0xd0, 0x66, 0xb2, 0x35, 0xe4, 0x7e, 0x80, 0x54, 0x29, + 0x87, 0x4f, 0x47, 0x8d, 0x3e, 0x38, 0x71, 0x33, 0xaf, 0x5a, 0x45, 0xf9, 0x5a, 0x59, 0x5a, 0xcd, 0x5d, 0xff, 0x03, + 0xaf, 0x6a, 0x45, 0x74, 0x21, 0x73, 0xa6, 0xf8, 0xb8, 0xee, 0xad, 0x04, 0x93, 0x10, 0x66, 0x2b, 0x7c, 0x76, 0xa3, + 0x81, 0xa9, 0x3a, 0x55, 0xef, 0x95, 0x8a, 0xc1, 0x23, 0xed, 0xd1, 0xc4, 0x8b, 0x3a, 0xd5, 0x72, 0xc0, 0xfc, 0x0c, + 0xba, 0xc1, 0xf8, 0x2d, 0x36, 0x70, 0xd2, 0x0c, 0x41, 0x3e, 0xa5, 0xb7, 0xec, 0x12, 0xa4, 0x44, 0x8a, 0x6f, 0x5c, + 0x6f, 0xc1, 0xe3, 0xdf, 0x4e, 0x6d, 0x04, 0x03, 0x1c, 0xf6, 0xcb, 0x19, 0x5a, 0x70, 0xba, 0x9b, 0x5c, 0xb2, 0x24, + 0xe0, 0x10, 0x47, 0x78, 0x12, 0xb6, 0x3a, 0x50, 0x95, 0xe6, 0xbb, 0x74, 0x04, 0x31, 0x24, 0xd2, 0xc2, 0x27, 0x6c, + 0x1a, 0x71, 0xae, 0xb7, 0x91, 0x8e, 0x28, 0x9b, 0x0b, 0xdb, 0xe9, 0x13, 0xe6, 0x33, 0x64, 0x82, 0x8b, 0xd1, 0xa5, + 0x2a, 0x05, 0x65, 0xf1, 0xc3, 0x4e, 0xd9, 0xbc, 0x94, 0x90, 0x1d, 0x8b, 0xea, 0xfc, 0x50, 0x02, 0xc8, 0xd9, 0xce, + 0x4e, 0x01, 0x00, 0x00, 0x10, 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, 0xcf, 0xc2, 0xc9, 0x81, 0xfe, 0x84, 0xba, + 0x07, 0x89, 0x87, 0x3a, 0x06, 0xb0, 0x73, 0xa5, 0x03, 0xf7, 0xdd, 0xcc, 0xae, 0x6c, 0xb9, 0x9b, 0xa3, 0xf5, 0x5c, + 0x3e, 0x7a, 0x2e, 0xe1, 0x3c, 0xc3, 0x20, 0x5e, 0x8e, 0xd2, 0x95, 0xe5, 0xe5, 0xc4, 0x60, 0x31, 0x85, 0xbe, 0xb7, + 0x9d, 0xc6, 0x04, 0x4b, 0x4f, 0xc0, 0xdf, 0x6f, 0xcd, 0x4d, 0xec, 0x47, 0x86, 0x8b, 0xac, 0x80, 0xf1, 0x86, 0x30, + 0xb5, 0x1c, 0x1e, 0xd1, 0x0d, 0x5e, 0x1a, 0x9b, 0x94, 0x83, 0xeb, 0x99, 0x79, 0x3b, 0xff, 0x48, 0xe6, 0xf3, 0xc5, + 0x83, 0x1c, 0x4a, 0x05, 0x25, 0x81, 0x10, 0xa4, 0x3d, 0x28, 0xcd, 0x7c, 0xce, 0x36, 0x24, 0xda, 0xc1, 0x82, 0xc1, + 0xc7, 0x29, 0x3e, 0x87, 0xb0, 0x4a, 0xe5, 0x17, 0x42, 0xa0, 0x1f, 0xc5, 0xf9, 0xab, 0x3e, 0x0e, 0x3a, 0xa2, 0x22, + 0x90, 0x87, 0x82, 0x82, 0x2f, 0xa4, 0x17, 0x59, 0x1e, 0x54, 0xb4, 0xe9, 0xe8, 0x07, 0x1e, 0x8b, 0xe2, 0x84, 0xb3, + 0x71, 0xed, 0x74, 0xc6, 0x1c, 0x9e, 0x68, 0xf8, 0x58, 0x30, 0x15, 0x84, 0x35, 0x67, 0x88, 0xb9, 0x2a, 0xdd, 0xca, + 0xfb, 0x4d, 0xe1, 0x8e, 0x18, 0x22, 0x2a, 0xe7, 0xa5, 0x61, 0x7d, 0xed, 0x9d, 0xdc, 0xb2, 0xab, 0x0b, 0x38, 0x51, + 0x74, 0x71, 0x69, 0x61, 0x8e, 0x59, 0x15, 0x2a, 0x81, 0xd1, 0x35, 0xe0, 0x1c, 0x6c, 0x16, 0x7a, 0x49, 0x1c, 0x52, + 0x68, 0xe6, 0x2e, 0x6b, 0x21, 0xa6, 0xc1, 0xa5, 0xac, 0x52, 0xed, 0xf2, 0x26, 0xd2, 0x34, 0x67, 0x97, 0x59, 0xd0, + 0xd0, 0x19, 0xe6, 0x98, 0x15, 0x75, 0x5b, 0xd9, 0x4f, 0x01, 0xfd, 0x0c, 0xad, 0xf2, 0xe8, 0x6a, 0x91, 0x09, 0x05, + 0xa8, 0x26, 0xcf, 0xc3, 0x92, 0xac, 0x2e, 0x3f, 0x8e, 0x12, 0x4c, 0x32, 0x89, 0xa3, 0x6e, 0xc7, 0xca, 0x4f, 0xd7, + 0xf6, 0x9c, 0x16, 0xe7, 0x48, 0xfe, 0x3a, 0x4a, 0x0d, 0x26, 0xac, 0x31, 0x75, 0x80, 0x14, 0xff, 0x01, 0x14, 0xcb, + 0x66, 0xa6, 0x1d, 0x03, 0x58, 0xd0, 0x5e, 0x3e, 0x14, 0xbb, 0xb8, 0x4c, 0x11, 0xee, 0x66, 0x68, 0x18, 0xfa, 0xf4, + 0xa3, 0x3d, 0xf6, 0x7b, 0x5c, 0x27, 0x10, 0x83, 0xeb, 0xfd, 0xc9, 0xcb, 0x3b, 0x9f, 0xd2, 0x98, 0x24, 0x01, 0x41, + 0x38, 0x87, 0x15, 0x71, 0xdc, 0x87, 0xf6, 0xe6, 0xaa, 0xf6, 0xa1, 0x79, 0x1e, 0x83, 0x0d, 0x4a, 0x40, 0xdf, 0x0a, + 0xb4, 0xc0, 0x6f, 0x7f, 0x61, 0xa5, 0x6d, 0xb8, 0x80, 0x5d, 0x42, 0x8e, 0xb2, 0xc1, 0x55, 0x2f, 0xab, 0xc5, 0xa6, + 0x69, 0x98, 0x97, 0x2f, 0x7e, 0x3e, 0x92, 0x20, 0xe6, 0x2e, 0xf8, 0x84, 0x4d, 0xc1, 0x02, 0x2a, 0x6e, 0x1b, 0x1f, + 0xe0, 0x61, 0x9f, 0x44, 0x2a, 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, + 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, 0xaf, + 0x5a, 0x2e, 0x85, 0x9b, 0x93, 0xd2, 0x30, 0x48, 0x22, 0x00, 0x1a, 0x1a, 0xe2, 0xa3, 0x3f, 0xa1, 0xa2, 0x30, 0x3c, + 0x64, 0x25, 0x68, 0x2e, 0x61, 0x5d, 0x1c, 0x9e, 0xc1, 0xac, 0xb6, 0x71, 0x91, 0x72, 0xd6, 0xbd, 0x83, 0x0a, 0xc7, + 0x59, 0x99, 0x81, 0x85, 0x31, 0x72, 0xdc, 0xf5, 0x75, 0xa7, 0x5e, 0x1e, 0x5d, 0xb1, 0x05, 0x57, 0xb2, 0x99, 0xcf, + 0x8c, 0x77, 0x57, 0x84, 0x6c, 0x67, 0xb9, 0xd2, 0x6a, 0x3f, 0x86, 0xfd, 0x23, 0xba, 0x12, 0x5e, 0x77, 0xce, 0x42, + 0xa2, 0xe8, 0xe4, 0xc2, 0x75, 0x7c, 0xc9, 0xc6, 0x2e, 0x23, 0x5b, 0xad, 0x3f, 0x16, 0xd2, 0x70, 0x94, 0x3f, 0x5f, + 0x30, 0x15, 0x84, 0x35, 0x67, 0x88, 0xb9, 0x2a, 0xdd, 0xca, 0xfb, 0x4d, 0xe1, 0x8e, 0x18, 0x22, 0x2a, 0xe7, 0xa5, + 0x61, 0x7d, 0xed, 0x9d, 0xdc, 0xb2, 0xab, 0x0b, 0x38, 0x51, 0x74, 0x71, 0x69, 0x38, 0x4e, 0xff, 0x7c, 0x5e, 0xc0, + 0x90, 0xa8, 0x45, 0x29, 0x82, 0x2e, 0xd8, 0x43, 0xd5, 0x25, 0x74, 0xf5, 0x56, 0x2c, 0xc6, 0x42, 0x12, 0x67, 0xed, + 0xcd, 0x14, 0x88, 0xf7, 0xa8, 0x5f, 0x39, 0x83, 0x7b, 0x05, 0xf5, 0xf5, 0x16, 0xe4, 0xef, 0x31, 0x90, 0x7b, 0x25, + 0x1a, 0x6a, 0xc7, 0xd9, 0x34, 0xba, 0x53, 0x9b, 0x5c, 0x38, 0x59, 0x66, 0x67, 0x19, 0x7f, 0xfc, 0x21, 0xd8, 0x70, + 0x71, 0x38, 0x7f, 0x09, 0x25, 0xed, 0x62, 0x9e, 0x3d, 0x3e, 0xbb, 0x28, 0x91, 0x44, 0x08, 0x2c, 0xd2, 0x24, 0xa1, + 0xb7, 0xd3, 0x50, 0x13, 0xee, 0xce, 0xc5, 0xc6, 0xd6, 0x87, 0x52, 0x20, 0x64, 0x31, 0xca, 0x02, 0xf7, 0x12, 0xb0, + 0xe7, 0x0c, 0x04, 0x62, 0xe0, 0x75, 0x37, 0xa8, 0xf2, 0xbd, 0xeb, 0xf5, 0x79, 0x10, 0x9d, 0x94, 0x18, 0x51, 0x1e, + 0xe6, 0x85, 0x08, 0x1f, 0x4e, 0xa1, 0x69, 0x64, 0x5e, 0x28, 0x68, 0x96, 0x74, 0x66, 0xb2, 0x96, 0x32, 0xde, 0x7f, + 0x35, 0x55, 0x15, 0xab, 0x2b, 0x6d, 0xe7, 0x7c, 0x0f, 0xbf, 0xff, 0x78, 0xc4, 0xce, 0x8f, 0x4f, 0x51, 0x24, 0xc7, + 0xb6, 0x5a, 0x93, 0xeb, 0x26, 0xf4, 0x24, 0x7e, 0xdf, 0x68, 0xcf, 0x74, 0x5a, 0x40, 0x9c, 0xfd, 0x84, 0x51, 0xbb, + 0x80, 0xc7, 0x11, 0x27, 0x35, 0xf4, 0xf6, 0xa9, 0x8c, 0x74, 0x7b, 0x2a, 0x3b, 0xb7, 0x00, 0x0b, 0x0f, 0x04, 0x83, + 0xd0, 0xf3, 0x50, 0x9b, 0xf4, 0x8e, 0x5d, 0x57, 0x2f, 0xf4, 0x79, 0x7f, 0xe0, 0x5e, 0xdb, 0x9c, 0xc0, 0xba, 0xd8, + 0x45, 0x16, 0x3b, 0xc5, 0x7d, 0xfb, 0xdf, 0xc3, 0x18, 0x56, 0x55, 0x55, 0xd5, 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, + 0xe2, 0xb8, 0x3a, 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, 0x76, 0x20, 0x15, 0x91, 0xc8, 0x5a, 0xa7, 0x27, 0x08, + 0x58, 0xd8, 0x46, 0x37, 0xbd, 0xa9, 0xe9, 0xa5, 0x78, 0xb5, 0x04, 0x1f, 0xd5, 0x06, 0x01, 0x86, 0x91, 0x78, 0x54, + 0x07, 0xce, 0x9c, 0x4d, 0xfd, 0x53, 0x3f, 0x8f, 0xaf, 0x03, 0x55, 0xa8, 0xd2, 0x53, 0x02, 0x44, 0x27, 0x24, 0xa7, + 0x7a, 0x91, 0xf3, 0x5e, 0xf8, 0x75, 0xce, 0x78, 0x4b, 0x1c, 0x1b, 0x8e, 0x6c, 0x73, 0x4c, 0xcf, 0x2e, 0x13, 0x6e, + 0x0e, 0x77, 0x13, 0x81, 0x1c, 0xfe, 0x57, 0xda, 0xc9, 0x69, 0x96, 0x21, 0x59, 0x38, 0xb6, 0xf8, 0xd5, 0x4a, 0x65, + 0x48, 0x8c, 0x49, 0x7b, 0x7b, 0xcd, 0x9f, 0xc8, 0xc1, 0x7b, 0x2a, 0xf6, 0x8e, 0x1c, 0xf2, 0x32, 0xf0, 0x28, 0xb4, + 0x54, 0x0c, 0xd0, 0x66, 0x61, 0x8e, 0x59, 0x15, 0x2a, 0x81, 0xd1, 0x35, 0xe0, 0x1c, 0x6c, 0x16, 0x7a, 0x49, 0x1c, + 0x52, 0x68, 0xe6, 0x2e, 0x6b, 0x21, 0xa6, 0xc1, 0xa5, 0xac, 0x52, 0xed, 0xf2, 0x26, 0xd2, 0x34, 0x67, 0x83, 0x7b, + 0x05, 0xf5, 0xf5, 0x16, 0xe4, 0xef, 0x31, 0x90, 0x7b, 0x25, 0x1a, 0x6a, 0xc7, 0xd9, 0x34, 0xba, 0x53, 0x9b, 0x5c, + 0x38, 0x59, 0x66, 0x67, 0x19, 0x7f, 0xfc, 0x21, 0xd8, 0x70, 0x71, 0x88, 0x49, 0xc6, 0xf5, 0xa7, 0x30, 0x6d, 0x9b, + 0xe2, 0xc2, 0xad, 0xf5, 0x30, 0x0a, 0xb9, 0x47, 0x4e, 0x90, 0xd6, 0xed, 0xcd, 0x38, 0xce, 0x14, 0x18, 0x99, 0x8e, + 0x14, 0x2d, 0xbf, 0xd8, 0x2e, 0x90, 0x94, 0x25, 0x9c, 0x76, 0x38, 0xb5, 0x4a, 0x88, 0x1e, 0xb8, 0xf8, 0x9b, 0x28, + 0x57, 0xc4, 0x91, 0x34, 0x89, 0xdc, 0x76, 0xe5, 0xf2, 0x89, 0x20, 0xd0, 0x15, 0x9a, 0x87, 0xc5, 0xa9, 0x66, 0xca, + 0x6c, 0x54, 0x9a, 0xa9, 0x25, 0x47, 0xe1, 0x1c, 0xb0, 0xee, 0xfd, 0x9d, 0x14, 0xf8, 0xc2, 0x70, 0x9a, 0xe9, 0xe5, + 0x49, 0xb6, 0x95, 0xb0, 0x6d, 0x1b, 0xa2, 0xd5, 0x8f, 0xa1, 0x1e, 0x4c, 0xeb, 0xf6, 0x74, 0x1a, 0x0f, 0xdc, 0x72, + 0xba, 0x14, 0x55, 0x81, 0x57, 0xb4, 0xed, 0xc7, 0xdb, 0x5a, 0x32, 0x9e, 0xb2, 0x2c, 0x44, 0x15, 0x25, 0xce, 0x8a, + 0x3b, 0x1d, 0x56, 0xa2, 0xea, 0x10, 0xf7, 0xea, 0xb7, 0x8a, 0xde, 0x7c, 0xf3, 0x2a, 0xd7, 0xb7, 0xff, 0x95, 0x44, + 0x63, 0x8c, 0xb3, 0x6d, 0xd0, 0x7c, 0xe3, 0x98, 0x57, 0xe3, 0xdf, 0x09, 0x7b, 0xd4, 0x89, 0x53, 0x72, 0xd3, 0x56, + 0xfe, 0x55, 0xb0, 0x3e, 0x52, 0x38, 0x91, 0xd8, 0xc2, 0x97, 0xd5, 0xfb, 0xe7, 0x66, 0xd8, 0x45, 0x67, 0x21, 0xbf, + 0x97, 0xec, 0xa1, 0x33, 0x81, 0x16, 0x22, 0x3f, 0xf6, 0x1d, 0x8d, 0xe5, 0x3b, 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca, + 0x6b, 0x28, 0xc9, 0x13, 0xbb, 0x86, 0xa4, 0x14, 0xdc, 0x41, 0x99, 0xe7, 0x70, 0x67, 0x73, 0x38, 0x5f, 0x81, 0x0e, + 0xba, 0x87, 0xf1, 0xfd, 0xab, 0xd3, 0x6d, 0xf2, 0x3b, 0x51, 0x13, 0x52, 0x0d, 0x7d, 0xbf, 0xf8, 0x8d, 0x1c, 0xa8, + 0x1f, 0x8f, 0x28, 0xe8, 0xa2, 0x66, 0x26, 0x40, 0x3b, 0xf6, 0x2f, 0x0a, 0xa3, 0xc6, 0x72, 0xa5, 0xeb, 0x4d, 0x9b, + 0x44, 0xcb, 0xb2, 0xf2, 0xad, 0x8d, 0xa8, 0x1d, 0x48, 0xc7, 0x88, 0x9d, 0x56, 0xe5, 0xae, 0x9c, 0xdc, 0x1e, 0x7c, + 0xb2, 0x17, 0x19, 0x5f, 0xba, 0x46, 0x22, 0x82, 0x56, 0xd7, 0xcb, 0x3b, 0x9a, 0x10, 0xb2, 0x35, 0xe4, 0x7e, 0x80, + 0x54, 0x29, 0x87, 0x4f, 0x47, 0x8d, 0x3e, 0x38, 0x71, 0x33, 0xaf, 0x5a, 0x45, 0xf9, 0x5a, 0x59, 0x5a, 0xcd, 0x5d, + 0xff, 0x03, 0xaf, 0x6a, 0x45, 0x74, 0x21, 0x73, 0x97, 0x59, 0xd0, 0xd0, 0x19, 0xe6, 0x98, 0x15, 0x75, 0x5b, 0xd9, + 0x4f, 0x01, 0xfd, 0x0c, 0xad, 0xf2, 0xe8, 0x6a, 0x91, 0x09, 0x05, 0xa8, 0x26, 0xcf, 0xc3, 0x92, 0xac, 0x2e, 0x3f, + 0x8e, 0x12, 0x38, 0x7f, 0x09, 0x25, 0xed, 0x62, 0x9e, 0x3d, 0x3e, 0xbb, 0x28, 0x91, 0x44, 0x08, 0x2c, 0xd2, 0x24, + 0xa1, 0xb7, 0xd3, 0x50, 0x13, 0xee, 0xce, 0xc5, 0xc6, 0xd6, 0x87, 0x52, 0x20, 0x64, 0x31, 0x90, 0x94, 0x25, 0x9c, + 0x76, 0x38, 0xb5, 0x4a, 0x88, 0x1e, 0xb8, 0xf8, 0x9b, 0x28, 0x57, 0xc4, 0x91, 0x34, 0x89, 0xdc, 0x76, 0xe5, 0xf2, + 0x89, 0x20, 0xd0, 0x15, 0x9a, 0x87, 0xc5, 0xa9, 0x66, 0x79, 0xaf, 0xfe, 0x4a, 0x9b, 0x49, 0xbe, 0x45, 0xa3, 0x0a, + 0xac, 0x46, 0xd9, 0x78, 0x58, 0x0c, 0x7f, 0xa4, 0xf3, 0xc6, 0x62, 0x76, 0xae, 0x81, 0x29, 0xa7, 0x80, 0x76, 0x04, + 0x08, 0x2f, 0x10, 0x8a, 0xb5, 0x5c, 0x7d, 0xed, 0x61, 0x4a, 0xac, 0x0d, 0xc6, 0xa4, 0x23, 0x3b, 0xa1, 0x62, 0xc8, + 0x95, 0x09, 0xda, 0xc6, 0xc7, 0xc3, 0x94, 0xdc, 0x44, 0x1f, 0xe5, 0x31, 0x8f, 0xa4, 0xe2, 0x6d, 0x76, 0xc0, 0x3c, + 0xc5, 0xd5, 0xb0, 0x9a, 0x05, 0x41, 0x69, 0x08, 0xde, 0x68, 0xad, 0xf5, 0x74, 0xf4, 0xc9, 0xf1, 0xd0, 0x92, 0x77, + 0x33, 0x74, 0x03, 0x58, 0x54, 0x31, 0x25, 0xe2, 0x8c, 0x07, 0x99, 0x82, 0x51, 0xa9, 0xa5, 0x6e, 0x02, 0xb4, 0x7c, + 0x53, 0x17, 0x0f, 0x22, 0x59, 0x2f, 0xf7, 0xe0, 0x8a, 0xf7, 0x21, 0xe2, 0xcc, 0xf5, 0xa8, 0x18, 0x0a, 0xc8, 0xb8, + 0x4c, 0x91, 0xd6, 0x4b, 0x60, 0xc4, 0xbc, 0x19, 0x47, 0x6f, 0x32, 0x54, 0x97, 0x03, 0x74, 0x65, 0x77, 0xfe, 0x0a, + 0x45, 0xe4, 0x69, 0xf6, 0x99, 0x3b, 0xd7, 0xba, 0xe4, 0x13, 0x0b, 0x92, 0xf0, 0xc3, 0xda, 0x51, 0x38, 0xcd, 0xcc, + 0xcc, 0x0c, 0x33, 0x33, 0x33, 0x73, 0x99, 0x5a, 0x99, 0xd9, 0x66, 0xa5, 0x8f, 0xcc, 0x00, 0x7a, 0x0b, 0x9b, 0x67, + 0xe0, 0x7b, 0xd4, 0xca, 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, 0xf1, 0x98, 0x00, 0xbe, 0x97, 0x3c, 0xd3, 0x7a, + 0x3c, 0x9b, 0x15, 0x33, 0x6d, 0xf0, 0x49, 0x3d, 0x89, 0x98, 0xd7, 0x3a, 0x65, 0x11, 0xe8, 0xf1, 0x77, 0x77, 0xb6, + 0x81, 0xfe, 0x08, 0x7b, 0x48, 0x4d, 0xc3, 0x78, 0x93, 0x81, 0x4b, 0x73, 0xdd, 0x82, 0x22, 0x1a, 0xd4, 0x95, 0x93, + 0x05, 0xea, 0x6b, 0xe5, 0xbb, 0x33, 0x38, 0xca, 0x7c, 0xfc, 0xc0, 0x9b, 0x0a, 0xb3, 0xf0, 0x23, 0x06, 0x19, 0xa6, + 0xf8, 0xb8, 0xee, 0xad, 0x04, 0x93, 0x10, 0x66, 0x2b, 0x7c, 0x76, 0xa3, 0x81, 0xa9, 0x3a, 0x55, 0xef, 0x95, 0x8a, + 0xc1, 0x23, 0xed, 0xd1, 0xc4, 0x8b, 0x3a, 0xd5, 0x72, 0xc0, 0xfc, 0x0c, 0x4c, 0x32, 0x89, 0xa3, 0x6e, 0xc7, 0xca, + 0x4f, 0xd7, 0xf6, 0x9c, 0x16, 0xe7, 0x48, 0xfe, 0x3a, 0x4a, 0x0d, 0x26, 0xac, 0x31, 0x75, 0x80, 0x14, 0xff, 0x01, + 0x14, 0xcb, 0x66, 0xa6, 0x1d, 0x03, 0xca, 0x02, 0xf7, 0x12, 0xb0, 0xe7, 0x0c, 0x04, 0x62, 0xe0, 0x75, 0x37, 0xa8, + 0xf2, 0xbd, 0xeb, 0xf5, 0x79, 0x10, 0x9d, 0x94, 0x18, 0x51, 0x1e, 0xe6, 0x85, 0x08, 0x1f, 0x4e, 0xa1, 0x69, 0x64, + 0xca, 0x6c, 0x54, 0x9a, 0xa9, 0x25, 0x47, 0xe1, 0x1c, 0xb0, 0xee, 0xfd, 0x9d, 0x14, 0xf8, 0xc2, 0x70, 0x9a, 0xe9, + 0xe5, 0x49, 0xb6, 0x95, 0xb0, 0x6d, 0x1b, 0xa2, 0xd5, 0x8f, 0xa1, 0x1e, 0x4c, 0x8a, 0xb5, 0x5c, 0x7d, 0xed, 0x61, + 0x4a, 0xac, 0x0d, 0xc6, 0xa4, 0x23, 0x3b, 0xa1, 0x62, 0xc8, 0x95, 0x09, 0xda, 0xc6, 0xc7, 0xc3, 0x94, 0xdc, 0x44, + 0x1f, 0xe5, 0x31, 0x8f, 0xa4, 0xe2, 0x6d, 0x2a, 0xb8, 0xfd, 0x5a, 0xa0, 0xe6, 0x72, 0x15, 0x62, 0xb8, 0x46, 0xf8, + 0xde, 0x0e, 0x84, 0x91, 0x55, 0x63, 0x08, 0x83, 0xd6, 0xb4, 0x9c, 0x19, 0xd3, 0xda, 0xff, 0xe6, 0x94, 0x89, 0x4f, + 0x0a, 0xb5, 0x99, 0x1d, 0x19, 0xfd, 0x1e, 0x5b, 0x77, 0x05, 0x1e, 0xed, 0x91, 0xda, 0x58, 0xae, 0xf1, 0x64, 0xcc, + 0x3d, 0x65, 0x28, 0x3d, 0x83, 0xd8, 0x7c, 0x4c, 0x92, 0x24, 0xbe, 0xf5, 0xdf, 0x2a, 0x24, 0x81, 0x40, 0x3b, 0xd1, + 0xd3, 0x95, 0xe9, 0x2f, 0xd1, 0x19, 0xf3, 0xa5, 0x75, 0xa9, 0x3b, 0x8f, 0x27, 0xbc, 0x73, 0xa3, 0xc0, 0xeb, 0x24, + 0x64, 0xd6, 0x81, 0xc2, 0xee, 0xb9, 0xb5, 0x42, 0x8a, 0x80, 0xec, 0x54, 0xa2, 0x49, 0xc2, 0xd5, 0x68, 0x07, 0x0e, + 0xe1, 0x89, 0xd9, 0x46, 0x6b, 0x83, 0x1f, 0x99, 0xb1, 0x32, 0x1b, 0xd3, 0x05, 0x15, 0x7c, 0x2d, 0x27, 0xe4, 0xe5, + 0x5f, 0x4f, 0xb7, 0x6d, 0xdb, 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, 0x08, 0x0c, 0xc3, 0x9e, 0x0f, 0x12, 0x8e, 0xc3, + 0x20, 0x7d, 0x25, 0x19, 0x76, 0x42, 0x1d, 0xd6, 0x85, 0x70, 0xa2, 0x75, 0x71, 0x0a, 0x0b, 0x94, 0x1c, 0x12, 0xbf, + 0x42, 0x5e, 0xe4, 0x27, 0xdb, 0x3c, 0xe1, 0xf5, 0xaf, 0x46, 0x1e, 0x9d, 0x8e, 0x12, 0x00, 0x76, 0x04, 0xe9, 0x91, + 0xc2, 0x87, 0xb3, 0xa0, 0x48, 0xdd, 0xc0, 0x7d, 0x56, 0x95, 0x78, 0x00, 0xf1, 0xf6, 0x6a, 0xd7, 0xcd, 0xf5, 0x0a, + 0xcb, 0x24, 0x7e, 0xa5, 0x47, 0xa6, 0xea, 0x8f, 0x03, 0x39, 0xd1, 0x17, 0x1b, 0x29, 0x6d, 0xcb, 0x08, 0x22, 0x69, + 0x78, 0x31, 0x5f, 0xba, 0xc1, 0xf8, 0x2d, 0x36, 0x70, 0xd2, 0x0c, 0x41, 0x3e, 0xa5, 0xb7, 0xec, 0x12, 0xa4, 0x44, + 0x8a, 0x6f, 0x5c, 0x6f, 0xc1, 0xe3, 0xdf, 0x4e, 0x6d, 0x04, 0x03, 0x1c, 0xf6, 0xcb, 0x19, 0x5a, 0x58, 0xd0, 0x5e, + 0x3e, 0x14, 0xbb, 0xb8, 0x4c, 0x11, 0xee, 0x66, 0x68, 0x18, 0xfa, 0xf4, 0xa3, 0x3d, 0xf6, 0x7b, 0x5c, 0x27, 0x10, + 0x83, 0xeb, 0xfd, 0xc9, 0xcb, 0x3b, 0x9f, 0xd2, 0x98, 0x24, 0x5e, 0x28, 0x68, 0x96, 0x74, 0x66, 0xb2, 0x96, 0x32, + 0xde, 0x7f, 0x35, 0x55, 0x15, 0xab, 0x2b, 0x6d, 0xe7, 0x7c, 0x0f, 0xbf, 0xff, 0x78, 0xc4, 0xce, 0x8f, 0x4f, 0x51, + 0x24, 0xc7, 0xb6, 0x5a, 0xeb, 0xf6, 0x74, 0x1a, 0x0f, 0xdc, 0x72, 0xba, 0x14, 0x55, 0x81, 0x57, 0xb4, 0xed, 0xc7, + 0xdb, 0x5a, 0x32, 0x9e, 0xb2, 0x2c, 0x44, 0x15, 0x25, 0xce, 0x8a, 0x3b, 0x1d, 0x56, 0xa2, 0xea, 0x10, 0x76, 0xc0, + 0x3c, 0xc5, 0xd5, 0xb0, 0x9a, 0x05, 0x41, 0x69, 0x08, 0xde, 0x68, 0xad, 0xf5, 0x74, 0xf4, 0xc9, 0xf1, 0xd0, 0x92, + 0x77, 0x33, 0x74, 0x03, 0x58, 0x54, 0x31, 0x25, 0xe2, 0x8c, 0x07, 0xb5, 0x99, 0x1d, 0x19, 0xfd, 0x1e, 0x5b, 0x77, + 0x05, 0x1e, 0xed, 0x91, 0xda, 0x58, 0xae, 0xf1, 0x64, 0xcc, 0x3d, 0x65, 0x28, 0x3d, 0x83, 0xd8, 0x7c, 0x4c, 0x92, + 0x24, 0xbe, 0xf5, 0xdf, 0x2a, 0x98, 0xbe, 0x62, 0xc3, 0xa6, 0x18, 0xf4, 0x6f, 0xc8, 0x59, 0xe7, 0x2f, 0xde, 0xdf, + 0x76, 0x04, 0xef, 0x5b, 0x69, 0xf9, 0x6d, 0x75, 0x85, 0x34, 0x3c, 0xf0, 0xf8, 0xa5, 0xaf, 0x68, 0x81, 0x23, 0x9b, + 0x0e, 0xe7, 0x5e, 0x4d, 0xd9, 0x68, 0x7f, 0x09, 0x46, 0x68, 0x02, 0x54, 0x5e, 0x55, 0xfc, 0x6f, 0x07, 0x0c, 0x3c, + 0x88, 0xb6, 0x06, 0xdf, 0xd2, 0x16, 0x5e, 0xad, 0x58, 0xd5, 0x79, 0x19, 0x91, 0x8d, 0x40, 0x46, 0x20, 0xaa, 0x1c, + 0x30, 0x92, 0x7b, 0x39, 0x40, 0x6a, 0x18, 0x01, 0x01, 0x28, 0x21, 0x34, 0x42, 0x7f, 0x3f, 0x9e, 0x65, 0xb7, 0xc9, + 0xde, 0xcf, 0x5a, 0x06, 0x96, 0x20, 0x01, 0x00, 0x00, 0x80, 0xd0, 0x45, 0x17, 0xdd, 0x44, 0x29, 0xe7, 0x22, 0x1a, + 0x4b, 0x4c, 0x44, 0xbf, 0x7c, 0x1a, 0xac, 0x07, 0x94, 0x2b, 0x48, 0x39, 0x83, 0xd0, 0x04, 0x5b, 0xab, 0xa8, 0x6e, + 0x2b, 0x36, 0x7d, 0x46, 0xa8, 0xb6, 0x31, 0xdd, 0xca, 0xd5, 0x7f, 0x35, 0x97, 0x0e, 0x0c, 0x19, 0xd8, 0xba, 0xd1, + 0xa0, 0x43, 0xcc, 0x56, 0x7a, 0xba, 0x61, 0x29, 0x9d, 0x30, 0xa7, 0xc5, 0x70, 0xa2, 0xd7, 0xd3, 0x94, 0x26, 0xc8, + 0x0f, 0x99, 0x83, 0x6b, 0x49, 0x1c, 0x18, 0x63, 0x67, 0xcc, 0x80, 0x7a, 0xca, 0x48, 0xf5, 0xfc, 0x59, 0xb1, 0x72, + 0x2d, 0x12, 0x26, 0x16, 0x46, 0x20, 0x29, 0x70, 0xba, 0x9b, 0x5c, 0xb2, 0x24, 0xe0, 0x10, 0x47, 0x78, 0x12, 0xb6, + 0x3a, 0x50, 0x95, 0xe6, 0xbb, 0x74, 0x04, 0x31, 0x24, 0xd2, 0xc2, 0x27, 0x6c, 0x1a, 0x71, 0xae, 0xb7, 0x91, 0x8e, + 0x28, 0x01, 0x41, 0x38, 0x87, 0x15, 0x71, 0xdc, 0x87, 0xf6, 0xe6, 0xaa, 0xf6, 0xa1, 0x79, 0x1e, 0x83, 0x0d, 0x4a, + 0x40, 0xdf, 0x0a, 0xb4, 0xc0, 0x6f, 0x7f, 0x61, 0xa5, 0x6d, 0xb8, 0x80, 0x5d, 0x42, 0x93, 0xeb, 0x26, 0xf4, 0x24, + 0x7e, 0xdf, 0x68, 0xcf, 0x74, 0x5a, 0x40, 0x9c, 0xfd, 0x84, 0x51, 0xbb, 0x80, 0xc7, 0x11, 0x27, 0x35, 0xf4, 0xf6, + 0xa9, 0x8c, 0x74, 0x7b, 0x2a, 0x3b, 0xb7, 0x00, 0xf7, 0xea, 0xb7, 0x8a, 0xde, 0x7c, 0xf3, 0x2a, 0xd7, 0xb7, 0xff, + 0x95, 0x44, 0x63, 0x8c, 0xb3, 0x6d, 0xd0, 0x7c, 0xe3, 0x98, 0x57, 0xe3, 0xdf, 0x09, 0x7b, 0xd4, 0x89, 0x53, 0x72, + 0xd3, 0x56, 0x99, 0x82, 0x51, 0xa9, 0xa5, 0x6e, 0x02, 0xb4, 0x7c, 0x53, 0x17, 0x0f, 0x22, 0x59, 0x2f, 0xf7, 0xe0, + 0x8a, 0xf7, 0x21, 0xe2, 0xcc, 0xf5, 0xa8, 0x18, 0x0a, 0xc8, 0xb8, 0x4c, 0x91, 0xd6, 0x4b, 0x24, 0x81, 0x40, 0x3b, + 0xd1, 0xd3, 0x95, 0xe9, 0x2f, 0xd1, 0x19, 0xf3, 0xa5, 0x75, 0xa9, 0x3b, 0x8f, 0x27, 0xbc, 0x73, 0xa3, 0xc0, 0xeb, + 0x24, 0x64, 0xd6, 0x81, 0xc2, 0xee, 0xb9, 0xb5, 0x42, 0x9b, 0x0e, 0xe7, 0x5e, 0x4d, 0xd9, 0x68, 0x7f, 0x09, 0x46, + 0x68, 0x02, 0x54, 0x5e, 0x55, 0xfc, 0x6f, 0x07, 0x0c, 0x3c, 0x88, 0xb6, 0x06, 0xdf, 0xd2, 0x16, 0x5e, 0xad, 0x58, + 0xd5, 0x79, 0x19, 0x4d, 0xd3, 0x03, 0xd7, 0xfd, 0x37, 0xff, 0xbb, 0xd0, 0x0e, 0xbf, 0x70, 0xe6, 0x7f, 0x0b, 0xb3, + 0xd8, 0x06, 0x13, 0xaa, 0x84, 0x33, 0x28, 0x1d, 0xb5, 0x61, 0x89, 0x8f, 0x7f, 0x13, 0x39, 0x01, 0xaf, 0xa0, 0x71, + 0x81, 0xac, 0xa7, 0xde, 0x41, 0x21, 0x34, 0xea, 0xcf, 0x0b, 0x29, 0xf1, 0xfb, 0xfd, 0xcf, 0x98, 0x84, 0x9a, 0x7c, + 0x7b, 0x2a, 0x93, 0x7b, 0x85, 0x0d, 0x9a, 0x7b, 0x8a, 0x52, 0xb3, 0x90, 0x85, 0x2c, 0x58, 0xc8, 0x42, 0x16, 0xa6, + 0x87, 0xa5, 0x37, 0xe1, 0xa4, 0x8e, 0x32, 0x8a, 0x4c, 0x12, 0x99, 0xe5, 0x14, 0x75, 0x7a, 0xcf, 0x61, 0x03, 0xc0, + 0xc2, 0xa7, 0xce, 0x64, 0xbe, 0x27, 0xc2, 0xdb, 0x5f, 0x39, 0xca, 0x66, 0xdd, 0xff, 0x94, 0x6a, 0x77, 0x98, 0xb8, + 0x36, 0x31, 0x8a, 0x9a, 0x1c, 0x61, 0x2a, 0xf0, 0xdf, 0xe3, 0x2c, 0x9e, 0x76, 0x2b, 0x9a, 0x99, 0x3d, 0x3d, 0x61, + 0xea, 0xed, 0xb3, 0x79, 0x8b, 0x06, 0xf3, 0x14, 0x49, 0x86, 0x7b, 0xc6, 0x8a, 0x9a, 0x88, 0x80, 0x87, 0x71, 0x06, + 0x4b, 0x9b, 0x20, 0x73, 0xd0, 0x71, 0x68, 0x18, 0x4b, 0x12, 0x17, 0x9b, 0x0b, 0xdb, 0xe9, 0x13, 0xe6, 0x33, 0x64, + 0x82, 0x8b, 0xd1, 0xa5, 0x2a, 0x05, 0x65, 0xf1, 0xc3, 0x4e, 0xd9, 0xbc, 0x94, 0x90, 0x1d, 0x8b, 0xea, 0xfc, 0x50, + 0x02, 0xc8, 0xd9, 0xce, 0x4e, 0x8e, 0xb2, 0xc1, 0x55, 0x2f, 0xab, 0xc5, 0xa6, 0x69, 0x98, 0x97, 0x2f, 0x7e, 0x3e, + 0x92, 0x20, 0xe6, 0x2e, 0xf8, 0x84, 0x4d, 0xc1, 0x02, 0x2a, 0x6e, 0x1b, 0x1f, 0xe0, 0x61, 0x9f, 0x44, 0x2a, 0x0b, + 0x0f, 0x04, 0x83, 0xd0, 0xf3, 0x50, 0x9b, 0xf4, 0x8e, 0x5d, 0x57, 0x2f, 0xf4, 0x79, 0x7f, 0xe0, 0x5e, 0xdb, 0x9c, + 0xc0, 0xba, 0xd8, 0x45, 0x16, 0x3b, 0xc5, 0x7d, 0xfb, 0xdf, 0xc3, 0x18, 0xfe, 0x55, 0xb0, 0x3e, 0x52, 0x38, 0x91, + 0xd8, 0xc2, 0x97, 0xd5, 0xfb, 0xe7, 0x66, 0xd8, 0x45, 0x67, 0x21, 0xbf, 0x97, 0xec, 0xa1, 0x33, 0x81, 0x16, 0x22, + 0x3f, 0xf6, 0x1d, 0x8d, 0xe5, 0x3b, 0x60, 0xc4, 0xbc, 0x19, 0x47, 0x6f, 0x32, 0x54, 0x97, 0x03, 0x74, 0x65, 0x77, + 0xfe, 0x0a, 0x45, 0xe4, 0x69, 0xf6, 0x99, 0x3b, 0xd7, 0xba, 0xe4, 0x13, 0x0b, 0x92, 0xf0, 0xc3, 0xda, 0x51, 0x38, + 0x8a, 0x80, 0xec, 0x54, 0xa2, 0x49, 0xc2, 0xd5, 0x68, 0x07, 0x0e, 0xe1, 0x89, 0xd9, 0x46, 0x6b, 0x83, 0x1f, 0x99, + 0xb1, 0x32, 0x1b, 0xd3, 0x05, 0x15, 0x7c, 0x2d, 0x27, 0xe4, 0xe5, 0x5f, 0x4f, 0x91, 0x8d, 0x40, 0x46, 0x20, 0xaa, + 0x1c, 0x30, 0x92, 0x7b, 0x39, 0x40, 0x6a, 0x18, 0x01, 0x01, 0x28, 0x21, 0x34, 0x42, 0x7f, 0x3f, 0x9e, 0x65, 0xb7, + 0xc9, 0xde, 0xcf, 0x5a, 0x06, 0x96, 0x20, 0xaf, 0xa0, 0x71, 0x81, 0xac, 0xa7, 0xde, 0x41, 0x21, 0x34, 0xea, 0xcf, + 0x0b, 0x29, 0xf1, 0xfb, 0xfd, 0xcf, 0x98, 0x84, 0x9a, 0x7c, 0x7b, 0x2a, 0x93, 0x7b, 0x85, 0x0d, 0x9a, 0x7b, 0x8a, + 0x52, 0x10, 0x02, 0xa9, 0xa1, 0xbb, 0xe2, 0xc6, 0x55, 0x3b, 0x4c, 0x6c, 0x60, 0x94, 0x5a, 0xa4, 0x86, 0x68, 0xa4, + 0x57, 0xbd, 0x6e, 0x74, 0x8d, 0x26, 0xb8, 0x51, 0x42, 0xe5, 0x0b, 0xd1, 0x91, 0x3e, 0x01, 0x00, 0x00, 0xc0, 0xa9, + 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, + 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xe2, 0x1c, 0xbc, 0x07, 0xf4, 0xe0, 0x78, 0x31, 0x45, 0xfa, 0x02, + 0xdd, 0x6a, 0xfa, 0xad, 0xce, 0xbd, 0x8c, 0x45, 0x71, 0x1a, 0x95, 0x02, 0x4f, 0x65, 0x3b, 0xa7, 0x6f, 0x77, 0x9f, + 0xa6, 0x1f, 0x32, 0xcb, 0x96, 0xcd, 0x93, 0xe6, 0x5f, 0x5f, 0x1b, 0x2a, 0x55, 0xe9, 0xa1, 0x76, 0x33, 0x5e, 0x79, + 0x47, 0x34, 0xa8, 0x20, 0xac, 0x87, 0xab, 0xcc, 0xd7, 0xd5, 0x58, 0xb8, 0xf4, 0x28, 0x4a, 0x3a, 0xd0, 0x99, 0x67, + 0x0b, 0x67, 0x9b, 0x54, 0x6c, 0xd3, 0x90, 0xf3, 0xa8, 0x88, 0xc0, 0x07, 0xa0, 0x3d, 0x08, 0x45, 0xa9, 0x3b, 0xa0, + 0xee, 0x1b, 0x4d, 0xe8, 0x14, 0x18, 0xec, 0xaf, 0x4c, 0x95, 0x1a, 0x65, 0x19, 0xbc, 0x79, 0xd1, 0x05, 0x19, 0x2e, + 0xe5, 0xff, 0x8b, 0x04, 0xbb, 0x6c, 0x1a, 0x03, 0x66, 0xad, 0x1b, 0xc9, 0x60, 0x09, 0xdb, 0x37, 0x1c, 0xe3, 0xf6, + 0x39, 0x26, 0x13, 0x3f, 0xe7, 0x88, 0x55, 0x80, 0x96, 0x9c, 0xe1, 0x2b, 0xfe, 0xbb, 0xe2, 0x60, 0xd4, 0xe3, 0x0b, + 0x49, 0x52, 0x66, 0x8b, 0x60, 0xc4, 0x88, 0xd2, 0xc6, 0x35, 0x76, 0xfb, 0x4e, 0x5c, 0x4c, 0x0e, 0xf0, 0x91, 0xfa, + 0x3f, 0xa5, 0xee, 0x25, 0x6d, 0xac, 0xe2, 0x41, 0xaa, 0x35, 0xfc, 0xeb, 0x51, 0xef, 0x4e, 0x8d, 0xdb, 0xe9, 0xb1, + 0x6d, 0xd3, 0x53, 0xee, 0x0d, 0x18, 0xb0, 0x8a, 0xa2, 0x22, 0x71, 0x4e, 0xad, 0xbf, 0x02, 0x85, 0xb8, 0xa4, 0x34, + 0xed, 0x04, 0x3a, 0xbe, 0x03, 0x7d, 0x7b, 0xee, 0x20, 0xf8, 0xca, 0xab, 0x98, 0x32, 0xb2, 0x52, 0xb2, 0xc3, 0x82, + 0x54, 0x63, 0xe6, 0x64, 0xfb, 0xce, 0xf0, 0x15, 0x22, 0x73, 0xb7, 0xf0, 0xfd, 0xae, 0xe3, 0x9b, 0x5f, 0xc2, 0x5c, + 0xa3, 0xaf, 0x14, 0xf5, 0xd3, 0x7d, 0xe3, 0x40, 0xef, 0x61, 0xf2, 0x1d, 0x13, 0x9c, 0x5b, 0xdd, 0x6f, 0x6f, 0x9c, + 0x81, 0xa0, 0x1b, 0x36, 0x49, 0xf4, 0xe9, 0x7c, 0x63, 0x46, 0x64, 0x68, 0xfc, 0x2a, 0x4c, 0x19, 0x27, 0x93, 0x5a, + 0xee, 0xca, 0x72, 0x75, 0x48, 0x6b, 0x96, 0x76, 0xd5, 0xb9, 0x66, 0x94, 0x89, 0x2d, 0xa4, 0x86, 0x6e, 0x6e, 0x60, + 0x6a, 0x47, 0xb0, 0xd0, 0xe7, 0xae, 0x4f, 0x8a, 0xf2, 0x09, 0xe4, 0x95, 0x9c, 0xa4, 0x0c, 0x10, 0xa0, 0xcc, 0xb3, + 0x8f, 0xcf, 0xad, 0x5f, 0x1e, 0x35, 0x00, 0x08, 0xd7, 0xc9, 0x11, 0x0a, 0xac, 0x2c, 0x1d, 0xdd, 0x87, 0x98, 0x52, + 0x46, 0xee, 0x61, 0xb6, 0x9a, 0xa9, 0x3e, 0x86, 0x0b, 0xbb, 0xae, 0x44, 0x47, 0x87, 0xc3, 0xd1, 0xaf, 0x5f, 0x68, + 0x98, 0xe4, 0x04, 0x11, 0x57, 0xfb, 0x8c, 0x15, 0x88, 0xab, 0x3b, 0x73, 0x1b, 0x85, 0x0c, 0x02, 0x36, 0x2a, 0x11, + 0x63, 0x85, 0x26, 0xa7, 0xee, 0x43, 0x69, 0xdf, 0xdd, 0xeb, 0x66, 0x2d, 0x6f, 0x61, 0x7c, 0xe0, 0x43, 0xba, 0xfa, + 0x61, 0xbd, 0x51, 0x2e, 0x0f, 0x01, 0x44, 0xe2, 0x61, 0xa0, 0xde, 0x13, 0x96, 0x66, 0xf6, 0x73, 0x4a, 0xe4, 0x9b, + 0xa8, 0xc4, 0x56, 0x30, 0x44, 0x45, 0x70, 0x52, 0x11, 0x06, 0xe3, 0x9f, 0x6c, 0x50, 0x28, 0x62, 0x58, 0xa1, 0xc4, + 0x97, 0x27, 0x16, 0xf8, 0x0d, 0xa9, 0x56, 0x9d, 0xfe, 0x1a, 0x00, 0xa7, 0x06, 0xa6, 0x68, 0xd0, 0xd0, 0x49, 0x46, + 0xa9, 0xf1, 0x52, 0x77, 0x79, 0x25, 0x08, 0x24, 0xa2, 0xb3, 0x4f, 0xcb, 0xb1, 0xf3, 0x9d, 0x81, 0x3d, 0xad, 0x6f, + 0xf2, 0x24, 0x85, 0x44, 0x2d, 0x17, 0x13, 0xde, 0x3b, 0xcb, 0x78, 0x00, 0x3b, 0xad, 0x51, 0xb7, 0x63, 0x50, 0x20, + 0x50, 0xd5, 0x62, 0x80, 0xec, 0x8f, 0x51, 0x06, 0x9e, 0xb3, 0xbf, 0xf6, 0xcb, 0x47, 0x6d, 0xf0, 0xbe, 0xb2, 0x75, + 0xe7, 0xfc, 0x96, 0x73, 0x2b, 0xa4, 0x05, 0x02, 0x72, 0x0a, 0x44, 0x7d, 0x0b, 0x93, 0x62, 0xb7, 0xe0, 0x79, 0x11, + 0xed, 0xe3, 0x73, 0xe7, 0x59, 0xcc, 0xb2, 0x17, 0xfd, 0x3d, 0x19, 0xaa, 0xb6, 0x81, 0xbe, 0xb7, 0x5e, 0x1c, 0x70, + 0x1c, 0x17, 0x68, 0x4c, 0x60, 0xf9, 0xd9, 0x18, 0x0f, 0x90, 0xf4, 0x11, 0x86, 0x73, 0x9d, 0xc6, 0xb9, 0x93, 0x03, + 0x80, 0x8a, 0x65, 0x10, 0x09, 0x0a, 0x01, 0x9e, 0xb9, 0xc0, 0xc4, 0x53, 0x42, 0x0c, 0xc5, 0x30, 0x05, 0x20, 0x13, + 0x9d, 0x40, 0xeb, 0xf9, 0xa1, 0xb5, 0xe1, 0x01, 0xda, 0x2e, 0x9a, 0xba, 0xd2, 0xb4, 0x17, 0x97, 0x18, 0xf4, 0x31, + 0x82, 0xdd, 0x78, 0xae, 0xce, 0x02, 0x22, 0x43, 0x9c, 0x8d, 0xdc, 0xa7, 0x1c, 0xe1, 0x03, 0x4b, 0x65, 0x64, 0xe6, + 0x0b, 0xc8, 0xb2, 0xec, 0x04, 0x8d, 0x72, 0x13, 0x49, 0x32, 0xeb, 0x48, 0x3a, 0x1f, 0x3b, 0xa2, 0x43, 0x34, 0xf2, + 0x63, 0x12, 0x52, 0xbb, 0xde, 0x32, 0x2c, 0xde, 0x79, 0x7a, 0x53, 0xa4, 0xcf, 0xbc, 0x40, 0x31, 0x04, 0x2d, 0xa4, + 0x81, 0xe1, 0xd6, 0xda, 0xff, 0x7f, 0xed, 0x75, 0xb8, 0xa6, 0xa3, 0x97, 0x5b, 0x14, 0x30, 0x8c, 0x40, 0xae, 0xfd, + 0x6f, 0x78, 0x32, 0x99, 0x49, 0xa9, 0xc7, 0x0d, 0x3a, 0x81, 0x83, 0x2e, 0x69, 0x93, 0x51, 0x8d, 0xf5, 0x5d, 0xe7, + 0xa9, 0x62, 0x19, 0x8a, 0x98, 0xa0, 0x21, 0x4e, 0x60, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, + 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, + 0x84, 0x44, 0x6a, 0x78, 0xcc, 0xa3, 0x1f, 0x09, 0x1d, 0x82, 0x62, 0xf4, 0x8b, 0xb2, 0x6c, 0x8e, 0x4d, 0x74, 0xe0, + 0xba, 0xcb, 0xf7, 0x88, 0x31, 0xe3, 0x32, 0x32, 0xd9, 0x7d, 0xa8, 0x64, 0xb6, 0x1e, 0x12, 0x15, 0x50, 0xa3, 0x04, + 0xfb, 0xf9, 0x6e, 0xb5, 0x6b, 0xb8, 0x81, 0x9e, 0x9f, 0x9e, 0xf7, 0xac, 0x09, 0x55, 0xd9, 0x2c, 0x62, 0xd2, 0x1d, + 0x0c, 0x2f, 0x46, 0xf3, 0x4f, 0xdb, 0x4d, 0x5c, 0x18, 0x01, 0x26, 0x34, 0x39, 0xc8, 0x3b, 0x3e, 0x29, 0xe2, 0x24, + 0xa4, 0xe7, 0x89, 0xdc, 0xc0, 0x05, 0x03, 0xd8, 0x9f, 0xf6, 0xe9, 0x17, 0x83, 0x52, 0xef, 0x56, 0x19, 0x05, 0x34, + 0x88, 0xd8, 0xd0, 0x4f, 0x12, 0xcc, 0x2f, 0xca, 0xaa, 0xee, 0xc7, 0x92, 0x3d, 0x0d, 0xc2, 0x10, 0x17, 0xba, 0xd9, + 0xd6, 0x23, 0xe5, 0xd9, 0xe2, 0xbc, 0x6d, 0xb0, 0x08, 0x8b, 0x2c, 0x46, 0xec, 0x88, 0x11, 0xe0, 0x48, 0xab, 0xcf, + 0xba, 0x7f, 0x86, 0x5f, 0x76, 0xe4, 0x03, 0x0d, 0xd9, 0x85, 0xda, 0x37, 0x60, 0xd8, 0x3a, 0x51, 0x3a, 0x38, 0x20, + 0x14, 0x07, 0xe9, 0xc7, 0x76, 0xe8, 0x09, 0x3b, 0x49, 0xa8, 0x3e, 0x1c, 0x37, 0xf6, 0x54, 0x43, 0x73, 0x11, 0xa4, + 0x26, 0xe3, 0x69, 0xe5, 0x7b, 0x65, 0x82, 0xa6, 0x4a, 0xc9, 0xe5, 0x89, 0x53, 0x6e, 0x83, 0x0d, 0xdd, 0x73, 0x2f, + 0x44, 0xe5, 0x25, 0x28, 0x2f, 0x5a, 0x7b, 0xf4, 0x52, 0x4b, 0x42, 0x8d, 0x0e, 0x56, 0x16, 0x03, 0xc1, 0xbd, 0x82, + 0xab, 0xaa, 0xed, 0xd1, 0x54, 0x17, 0xe9, 0x4f, 0x89, 0xe5, 0xe0, 0x94, 0x86, 0x41, 0xb5, 0x8b, 0xf5, 0x35, 0x1b, + 0xeb, 0x53, 0x11, 0x4d, 0xc4, 0x48, 0x24, 0x4e, 0x3d, 0x9b, 0x7b, 0x73, 0xaa, 0xdc, 0x7a, 0x6b, 0x09, 0x72, 0xe3, + 0xab, 0x4c, 0x05, 0x91, 0x97, 0x13, 0xca, 0xb8, 0x44, 0xf9, 0x06, 0x4d, 0xd2, 0x68, 0x6f, 0x32, 0x29, 0x84, 0xe0, + 0x8c, 0x5a, 0x80, 0x37, 0x1e, 0x1d, 0x3b, 0x88, 0xf9, 0x15, 0x87, 0xcd, 0xbf, 0x74, 0x21, 0xca, 0x50, 0x73, 0xb4, + 0xe7, 0x90, 0x08, 0xf9, 0xbb, 0x25, 0xb0, 0xf8, 0xc7, 0xc8, 0x9b, 0x59, 0xb3, 0x21, 0x08, 0xf0, 0x95, 0x9a, 0xab, + 0x4d, 0x33, 0x1d, 0xc6, 0x6a, 0xa6, 0x56, 0xeb, 0xd9, 0x2f, 0x9a, 0x79, 0x8b, 0x7d, 0x0b, 0xfb, 0x3b, 0xef, 0x0d, + 0x49, 0xe1, 0x40, 0xc2, 0x22, 0xf3, 0x8f, 0x26, 0x6a, 0xa8, 0xb9, 0xf2, 0xf5, 0x72, 0x85, 0x7d, 0xaf, 0xbb, 0xeb, + 0xf3, 0xbb, 0xff, 0xbd, 0x78, 0x05, 0xb7, 0xaa, 0xba, 0xb9, 0xc4, 0x3e, 0x6f, 0xb9, 0x4c, 0xe7, 0xb8, 0x62, 0x2f, + 0x90, 0x04, 0x97, 0xdf, 0x86, 0x94, 0xb0, 0xdd, 0xe0, 0xc8, 0x13, 0x9e, 0xc0, 0x3a, 0xb7, 0xf1, 0x94, 0x52, 0xd4, + 0x05, 0x61, 0x0b, 0x77, 0xf1, 0x75, 0x13, 0xfc, 0xa9, 0xaa, 0x3b, 0x43, 0x19, 0x11, 0xf1, 0xce, 0x15, 0xd5, 0x5f, + 0xef, 0x6f, 0x5e, 0x8a, 0xb2, 0x03, 0xe4, 0x12, 0x81, 0x54, 0x1c, 0x25, 0xb0, 0xb9, 0xfc, 0xab, 0xa9, 0xcf, 0x00, + 0x3f, 0xb0, 0x13, 0xc4, 0x25, 0x22, 0x26, 0x75, 0xde, 0x14, 0xc6, 0x82, 0xe9, 0x52, 0x9d, 0x19, 0xab, 0x45, 0xc0, + 0xa6, 0xdc, 0xb0, 0xdc, 0x3d, 0xd2, 0x4a, 0x50, 0x3f, 0xd1, 0xda, 0x05, 0x75, 0x3d, 0x64, 0x16, 0xe9, 0xc0, 0x3b, + 0xe5, 0xbd, 0xc2, 0x92, 0x16, 0x17, 0xca, 0xb8, 0x07, 0x21, 0xcc, 0x61, 0x77, 0x48, 0x6c, 0x19, 0x35, 0xec, 0x99, + 0x2f, 0x3d, 0xcc, 0xc3, 0xbd, 0xd3, 0x92, 0x07, 0xa6, 0x50, 0x58, 0xea, 0xa4, 0xc7, 0x90, 0x0b, 0xc1, 0xb2, 0x98, + 0x1e, 0x5c, 0xe1, 0x33, 0xf3, 0xa4, 0x0b, 0xcf, 0xfb, 0xe5, 0x45, 0xbf, 0x2b, 0xb0, 0x4a, 0x5b, 0xa2, 0x19, 0x8c, + 0xbc, 0x71, 0x1e, 0x53, 0x37, 0xbb, 0x77, 0xd6, 0xa4, 0x38, 0x02, 0x6a, 0xa0, 0x55, 0x36, 0x9d, 0xb4, 0xcd, 0x8d, + 0xcb, 0x80, 0xc6, 0x48, 0x63, 0x37, 0x23, 0x39, 0x48, 0x26, 0xfb, 0x59, 0x75, 0x1b, 0x3a, 0x01, 0xf0, 0x0b, 0xab, + 0x56, 0x48, 0x8a, 0x4d, 0x35, 0x15, 0x5f, 0xf3, 0xa3, 0xa2, 0x54, 0xf8, 0x51, 0xbe, 0x48, 0x40, 0x1f, 0xa8, 0x5c, + 0xb9, 0x79, 0x4a, 0xcf, 0x1c, 0xd5, 0xa6, 0xa2, 0x47, 0xa7, 0xf1, 0x77, 0x31, 0x45, 0x40, 0x4e, 0x9e, 0xec, 0x33, + 0xa1, 0x2e, 0xc7, 0x6b, 0x73, 0x51, 0xd4, 0x70, 0x4a, 0x05, 0x05, 0x97, 0x35, 0x28, 0x25, 0x07, 0xad, 0xa4, 0x17, + 0x9f, 0x8e, 0x70, 0x37, 0xd6, 0xa3, 0x21, 0x82, 0x8d, 0x53, 0x73, 0x6f, 0x64, 0x7a, 0xe1, 0x8b, 0xbe, 0x38, 0x25, + 0x56, 0xdf, 0x8c, 0xa5, 0x17, 0x90, 0x40, 0xa6, 0xab, 0xb7, 0x22, 0xbc, 0x08, 0xd7, 0xeb, 0x12, 0x1b, 0x77, 0x8b, + 0x1e, 0xa3, 0xc5, 0x37, 0x81, 0x49, 0x53, 0x2e, 0x86, 0x4c, 0x33, 0xe7, 0x66, 0x6d, 0x2e, 0xa5, 0x69, 0xd7, 0xc3, + 0x69, 0x9b, 0x4a, 0xb2, 0xb9, 0x55, 0x89, 0x15, 0xdb, 0x2a, 0x64, 0xcd, 0xef, 0x76, 0x5a, 0x0a, 0xd2, 0x3f, 0x4e, + 0x52, 0xa7, 0x56, 0x5f, 0x52, 0xb2, 0xb7, 0xff, 0x1e, 0x27, 0x84, 0xa7, 0x6b, 0xc3, 0x35, 0x30, 0x17, 0x3a, 0x8e, + 0xb4, 0x1a, 0x29, 0x73, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, + 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x7e, 0x2b, + 0x53, 0x37, 0x29, 0xb8, 0xc5, 0x37, 0x9c, 0x05, 0x9f, 0x7b, 0xe6, 0xe5, 0x44, 0xcf, 0xdf, 0x1a, 0x22, 0x30, 0x06, + 0x5a, 0x4f, 0x4f, 0x19, 0x9f, 0x12, 0xf5, 0xb0, 0xb4, 0xd2, 0x34, 0x1e, 0x13, 0xa3, 0x44, 0xeb, 0x17, 0x01, 0x54, + 0xc4, 0x92, 0x81, 0x7d, 0x66, 0x69, 0x58, 0x65, 0x48, 0x4b, 0x26, 0x32, 0x51, 0x1e, 0x08, 0xbe, 0x36, 0x8d, 0x6f, + 0xce, 0xa3, 0x0c, 0xd1, 0x09, 0x3e, 0xd7, 0x58, 0x58, 0x2b, 0x5e, 0x7f, 0xdd, 0x47, 0x67, 0xf8, 0xa9, 0xd7, 0x65, + 0x03, 0x38, 0x1f, 0x61, 0xf9, 0x4f, 0x90, 0x0a, 0xf2, 0xac, 0xc8, 0x7c, 0x0b, 0x61, 0xd7, 0x7a, 0xe5, 0x1f, 0x9d, + 0x4b, 0x14, 0x6b, 0xdd, 0x09, 0x6a, 0x0b, 0x58, 0xa4, 0x6f, 0xfe, 0xdb, 0x32, 0x78, 0x5c, 0x47, 0xc2, 0x9c, 0x1d, + 0xbd, 0xce, 0xa3, 0xc0, 0x11, 0xc0, 0xab, 0x4e, 0x37, 0xac, 0x65, 0x5d, 0x03, 0x4c, 0x29, 0x61, 0x47, 0xab, 0x4d, + 0xff, 0xff, 0x6b, 0xc9, 0x13, 0x95, 0xcb, 0xa0, 0x0a, 0xa2, 0x86, 0x0c, 0xbe, 0xdd, 0x3f, 0xf3, 0x7d, 0x55, 0x1c, + 0xd2, 0x24, 0x23, 0xe7, 0x8b, 0x3e, 0x44, 0xe9, 0x4b, 0x74, 0x26, 0xb2, 0xd1, 0xb2, 0x6c, 0x0f, 0x6b, 0x84, 0x21, + 0x6c, 0xa1, 0x30, 0x28, 0xd6, 0x45, 0x05, 0x18, 0xb7, 0x49, 0x30, 0xac, 0x32, 0x1c, 0x25, 0x47, 0xcd, 0xac, 0x36, + 0x70, 0x90, 0x39, 0xc7, 0x7c, 0x44, 0x35, 0x2c, 0x80, 0x28, 0x79, 0xac, 0xea, 0x87, 0x7f, 0x66, 0x3d, 0x80, 0x0d, + 0x63, 0x48, 0x82, 0xc7, 0x86, 0xb0, 0x88, 0x90, 0xd8, 0xfd, 0xe0, 0xa9, 0x5b, 0x74, 0x0d, 0xc0, 0x64, 0xd8, 0x04, + 0xbc, 0x53, 0x45, 0x79, 0x40, 0xb8, 0x59, 0xe7, 0x5f, 0x95, 0xa0, 0x50, 0x9b, 0xb8, 0x73, 0xe4, 0xbc, 0xa2, 0x5f, + 0x74, 0x24, 0x64, 0xba, 0x57, 0x92, 0x21, 0x6a, 0x78, 0x52, 0xc6, 0x1e, 0x9f, 0x43, 0x4e, 0xfa, 0x53, 0x71, 0xac, + 0xc8, 0x39, 0x95, 0x4a, 0xed, 0x21, 0xe8, 0x96, 0xa7, 0xa2, 0xab, 0x9d, 0xa5, 0x7c, 0x2c, 0x85, 0xa2, 0x7b, 0x91, + 0x6d, 0x8d, 0x73, 0x4c, 0x46, 0x5a, 0x96, 0x82, 0xea, 0x1c, 0xd7, 0x9f, 0xf7, 0x63, 0xaf, 0xbe, 0x06, 0x12, 0x1c, + 0x47, 0xbd, 0x30, 0x29, 0xbe, 0x5a, 0x9f, 0xab, 0x08, 0x4d, 0x52, 0x96, 0xc1, 0x54, 0x5e, 0x89, 0x2b, 0x65, 0x3d, + 0xc4, 0xbe, 0x63, 0x0d, 0xbd, 0x0a, 0xe3, 0x46, 0xd7, 0x51, 0xad, 0xc9, 0x3f, 0x84, 0x1c, 0x42, 0x10, 0xc9, 0xbe, + 0x27, 0xaf, 0xd2, 0x5e, 0x79, 0xaf, 0x00, 0x09, 0x2d, 0x90, 0x08, 0x49, 0x91, 0xa1, 0x26, 0x5a, 0xe4, 0x18, 0x4a, + 0x77, 0x75, 0x41, 0xe0, 0xcf, 0xb3, 0xa2, 0x9c, 0x8b, 0x41, 0x77, 0x15, 0xf8, 0xab, 0xb0, 0xab, 0xf5, 0xa3, 0xc7, + 0x57, 0x3b, 0x32, 0x10, 0x1f, 0xe6, 0xfa, 0x3b, 0x8d, 0x10, 0x07, 0x43, 0xc6, 0x1c, 0x86, 0x61, 0xd6, 0xc0, 0x0b, + 0xf6, 0x85, 0x5b, 0x3f, 0xea, 0x4f, 0x4e, 0xc6, 0xfc, 0x37, 0x0a, 0x5f, 0xee, 0x63, 0x73, 0x59, 0x0e, 0x02, 0x81, + 0xb9, 0xac, 0x3e, 0x5d, 0xbe, 0x47, 0xb4, 0x15, 0xb2, 0x58, 0x06, 0x96, 0x1a, 0x1c, 0x14, 0x4f, 0xb5, 0xec, 0x91, + 0xee, 0x3d, 0x88, 0x2f, 0x11, 0x80, 0x9a, 0x3c, 0x23, 0x4c, 0x19, 0xc3, 0xc1, 0x46, 0xd6, 0xdd, 0xd9, 0xab, 0xdf, + 0x6f, 0x50, 0x74, 0x81, 0x35, 0x81, 0x63, 0x92, 0x9a, 0xa2, 0xf1, 0x18, 0xd4, 0x87, 0x02, 0xfc, 0x73, 0x49, 0xe1, + 0x2e, 0xfe, 0x0e, 0x68, 0x93, 0x20, 0x38, 0x75, 0xe9, 0xb7, 0x76, 0xac, 0x6a, 0xc4, 0xf6, 0xb6, 0x4c, 0xec, 0xa7, + 0x15, 0xc6, 0x3c, 0x70, 0x63, 0xb7, 0x4e, 0x08, 0x72, 0x99, 0x72, 0xc1, 0xd1, 0x51, 0x84, 0x72, 0xf3, 0xe7, 0x1c, + 0x60, 0xe6, 0x15, 0xbc, 0xd3, 0x54, 0xc1, 0x4e, 0xe7, 0x74, 0xda, 0x3f, 0xef, 0xde, 0x08, 0x4f, 0x8d, 0x81, 0xa4, + 0x64, 0x3a, 0xa5, 0xe2, 0xe9, 0xdc, 0x92, 0x40, 0x66, 0x47, 0x9c, 0xc3, 0x73, 0x69, 0x70, 0x04, 0xa2, 0x99, 0x37, + 0x20, 0x61, 0x71, 0xe6, 0xa5, 0x77, 0xb6, 0x7e, 0x41, 0xe2, 0xee, 0x98, 0xd6, 0xa7, 0x8a, 0xba, 0x79, 0x0e, 0x94, + 0xd6, 0x40, 0x33, 0x1e, 0xc8, 0x26, 0x06, 0xa6, 0xa8, 0x34, 0x54, 0xa8, 0x6d, 0xe5, 0x44, 0x41, 0x82, 0x7b, 0x40, + 0x83, 0x4b, 0x3e, 0x0e, 0x17, 0x17, 0x56, 0x48, 0xbe, 0xc4, 0x0f, 0xbd, 0xae, 0xd0, 0x85, 0xec, 0x5e, 0x8c, 0xc4, + 0x03, 0x4d, 0xf4, 0x5a, 0x6d, 0xc4, 0xa7, 0xb3, 0x0d, 0x45, 0xf5, 0xf0, 0xbf, 0xba, 0xea, 0xab, 0xda, 0x24, 0x1b, + 0xf6, 0xf1, 0x01, 0xea, 0x70, 0xcc, 0x86, 0xd7, 0x1c, 0x48, 0x34, 0xb3, 0xa9, 0xc2, 0x13, 0xee, 0x7d, 0xfe, 0x31, + 0x5c, 0xed, 0xc8, 0xae, 0x2e, 0x2b, 0x81, 0x4b, 0xc8, 0x19, 0x98, 0xd1, 0xe8, 0x32, 0x93, 0x76, 0xe2, 0x91, 0xe7, + 0xbd, 0xed, 0xb7, 0x8d, 0x61, 0x97, 0xa1, 0x5c, 0x9b, 0x02, 0xaa, 0x7b, 0x41, 0xf2, 0xb6, 0x91, 0xa9, 0x53, 0xa0, + 0x4c, 0xcd, 0x3d, 0x02, 0x3d, 0xd2, 0x04, 0x34, 0xa6, 0x51, 0xb4, 0x85, 0x93, 0xfe, 0xbd, 0x0f, 0x36, 0x67, 0x01, + 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, + 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xed, 0x5c, 0xac, 0x29, 0x81, 0x6f, 0x0a, + 0x1a, 0xa3, 0xad, 0x0d, 0x8b, 0x62, 0xdc, 0x9d, 0x9d, 0x62, 0x8b, 0x2e, 0x8a, 0x66, 0xb0, 0xd6, 0xb6, 0x11, 0x03, + 0x49, 0xdb, 0xa0, 0x4c, 0xb6, 0x0f, 0x6d, 0x5a, 0x3a, 0xb2, 0xe9, 0x7a, 0x82, 0x68, 0xcb, 0xb4, 0x74, 0x57, 0x96, + 0x62, 0x0d, 0x18, 0x99, 0x4f, 0x55, 0x28, 0x2d, 0x09, 0x55, 0x2e, 0xe1, 0xb3, 0x82, 0xd4, 0x5b, 0xe8, 0xd1, 0x4a, + 0xb4, 0x58, 0xbd, 0x13, 0xbf, 0x70, 0xe2, 0xe1, 0x14, 0x01, 0xdd, 0x77, 0xda, 0x39, 0x58, 0x5f, 0xd7, 0xed, 0x71, + 0x37, 0x84, 0x8a, 0xe8, 0x1b, 0xd6, 0xd9, 0x21, 0x8a, 0x55, 0x7b, 0xcb, 0x1e, 0x37, 0xf8, 0x55, 0x8d, 0x62, 0xb7, + 0xcd, 0x7c, 0xb5, 0xcf, 0x7e, 0x67, 0x9d, 0xda, 0xd7, 0xdc, 0x18, 0x1c, 0xde, 0xc4, 0x7c, 0x96, 0xec, 0x02, 0x93, + 0x53, 0xf9, 0xdc, 0x7d, 0x32, 0x00, 0x46, 0xdf, 0xe4, 0xd0, 0x7a, 0x1d, 0x24, 0x71, 0x4f, 0xa6, 0x6a, 0x22, 0x58, + 0x4b, 0xa5, 0xa5, 0x7f, 0x06, 0x67, 0xc0, 0xab, 0x3d, 0xe3, 0xec, 0xea, 0x19, 0x10, 0x7e, 0x44, 0x27, 0xa0, 0x9e, + 0x63, 0x72, 0xb6, 0x98, 0x53, 0x40, 0xd7, 0xe2, 0x7f, 0x95, 0xb6, 0x3f, 0xb9, 0x47, 0x71, 0xe2, 0x7d, 0xa4, 0xdd, + 0xd3, 0x9f, 0x8d, 0x84, 0x46, 0x3a, 0x81, 0x98, 0xff, 0x0d, 0xdc, 0x5e, 0x26, 0x64, 0x86, 0x0e, 0x9c, 0xd9, 0xd0, + 0x34, 0xd9, 0x94, 0xea, 0xba, 0x1d, 0x6b, 0x23, 0xf6, 0xe5, 0xbd, 0x3e, 0xe7, 0xe1, 0x18, 0x62, 0xb1, 0xfa, 0x12, + 0x0b, 0x8d, 0xf8, 0xc5, 0xa5, 0xe3, 0xb9, 0x41, 0xf0, 0xbb, 0x24, 0xc9, 0xa4, 0x7d, 0x24, 0xd4, 0x9c, 0xb1, 0x6b, + 0x86, 0xb9, 0x5e, 0xc9, 0x1d, 0x96, 0x3e, 0x09, 0x25, 0xbe, 0xd0, 0xb4, 0x4c, 0x3d, 0xe5, 0x4c, 0xe4, 0xa6, 0x65, + 0x94, 0x21, 0x8d, 0xd7, 0x5d, 0x07, 0x43, 0xd5, 0x3f, 0xa1, 0xdc, 0x38, 0x21, 0x4c, 0xb2, 0xde, 0x7d, 0x57, 0xb1, + 0x49, 0x36, 0xe1, 0xf4, 0x30, 0x2b, 0x25, 0x2c, 0x6a, 0xba, 0x6e, 0x96, 0x60, 0xa1, 0x63, 0x4f, 0x60, 0x86, 0x3e, + 0x63, 0xf6, 0xa8, 0xe2, 0xbe, 0x76, 0xca, 0xc3, 0x1f, 0x53, 0xd5, 0xd5, 0x6e, 0x15, 0x99, 0xe3, 0xab, 0xce, 0x60, + 0xe0, 0x13, 0x2e, 0x23, 0x9c, 0x84, 0x8a, 0xf6, 0x3f, 0x43, 0x07, 0x1d, 0x6e, 0x62, 0x52, 0xea, 0x61, 0xc0, 0xf9, + 0x02, 0x8c, 0x5b, 0x13, 0xaf, 0x38, 0x88, 0x4d, 0x9b, 0xf1, 0x84, 0x7e, 0x18, 0x55, 0xdd, 0x7d, 0xc7, 0x34, 0x42, + 0xf8, 0xf1, 0x0d, 0x01, 0x99, 0x88, 0xce, 0xba, 0x39, 0x50, 0x5d, 0x22, 0xd1, 0xa0, 0x6b, 0xad, 0x29, 0x40, 0x8f, + 0xa6, 0x61, 0xec, 0xc8, 0x54, 0x6e, 0x9c, 0x2d, 0x9e, 0xba, 0xd8, 0x00, 0xe5, 0xef, 0x24, 0x4c, 0x23, 0xbf, 0x77, + 0xf3, 0xc1, 0x98, 0xf1, 0x70, 0xde, 0xd8, 0x50, 0x6b, 0xad, 0x36, 0x70, 0x6e, 0x71, 0x95, 0x37, 0x73, 0x26, 0x27, + 0xa1, 0x35, 0x28, 0x58, 0xc4, 0xa8, 0xe6, 0xe7, 0x31, 0x06, 0xd2, 0x81, 0x89, 0xe0, 0xf2, 0xc6, 0x4f, 0x61, 0xeb, + 0x64, 0xfd, 0x95, 0x90, 0xcf, 0x47, 0x59, 0x26, 0x85, 0xb7, 0xc8, 0xda, 0x32, 0x47, 0xcc, 0x18, 0x3c, 0x53, 0x4f, + 0xe5, 0xae, 0x9e, 0x51, 0x86, 0x54, 0x57, 0x70, 0xa4, 0x34, 0xe7, 0xa8, 0xb0, 0x14, 0x95, 0x70, 0xa9, 0xf3, 0x5f, + 0x13, 0xce, 0x41, 0x17, 0x4b, 0x35, 0x14, 0x78, 0x49, 0x1f, 0xc6, 0x52, 0x5d, 0x4f, 0xe2, 0xe6, 0x05, 0x79, 0x60, + 0xfb, 0xfc, 0x28, 0xfa, 0x82, 0xc0, 0xac, 0xdf, 0x5b, 0x25, 0xe3, 0x1e, 0xf6, 0x7f, 0xa2, 0x40, 0x88, 0xc1, 0x53, + 0x52, 0x35, 0xe7, 0xc4, 0x0d, 0xc5, 0xae, 0x58, 0x2a, 0xff, 0x19, 0xe8, 0x03, 0x43, 0x07, 0x2e, 0xa6, 0x32, 0x04, + 0x17, 0x5e, 0x5a, 0x6f, 0x4c, 0xcf, 0x9b, 0x88, 0x98, 0xaf, 0x54, 0x1a, 0x6d, 0x16, 0xa0, 0xf8, 0x3b, 0x24, 0x7b, + 0x9e, 0x16, 0xe1, 0xd0, 0x54, 0x28, 0x54, 0x5a, 0x45, 0xde, 0x8d, 0x86, 0xd3, 0x84, 0x32, 0xf3, 0x5e, 0x5d, 0x20, + 0xc7, 0xd1, 0x70, 0x78, 0x72, 0x72, 0x7a, 0x4e, 0x55, 0xb6, 0x01, 0xa3, 0xaf, 0x74, 0xc8, 0x41, 0x37, 0x70, 0xe9, + 0x99, 0xef, 0x4a, 0xf2, 0xca, 0xc9, 0x8a, 0xb0, 0xbf, 0x44, 0x67, 0x1e, 0x01, 0x27, 0xa0, 0x5e, 0xe5, 0xbf, 0xb8, + 0x8c, 0x88, 0x0c, 0x51, 0xb7, 0x79, 0xf2, 0x58, 0x89, 0xcb, 0xdf, 0x61, 0xb6, 0x9f, 0xd0, 0x23, 0x6f, 0x6a, 0xe0, + 0x4a, 0x23, 0xb3, 0x37, 0x41, 0x0c, 0x84, 0xba, 0x52, 0x26, 0x6e, 0xce, 0x7f, 0xcb, 0xe7, 0x76, 0xe8, 0xa3, 0xb5, + 0x8a, 0xac, 0xe7, 0x01, 0xdc, 0x49, 0x11, 0xcf, 0xbd, 0x82, 0x2b, 0x4d, 0x52, 0x38, 0xbb, 0xa7, 0xa5, 0x8b, 0xeb, + 0x9b, 0x75, 0x16, 0xa7, 0xfc, 0xc9, 0xfe, 0x78, 0xd7, 0x0d, 0x94, 0xc0, 0x15, 0xac, 0xa8, 0x7e, 0x20, 0x65, 0x1f, + 0xba, 0x12, 0x50, 0xd5, 0x7d, 0x62, 0xbd, 0xff, 0xdd, 0xe1, 0x11, 0x78, 0x98, 0x84, 0xf8, 0x5a, 0xe0, 0xa1, 0xa7, + 0x0a, 0xc8, 0xb3, 0xc4, 0x21, 0xe2, 0x5c, 0x8f, 0xa5, 0x61, 0x71, 0xed, 0x22, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, + 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, + 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x87, 0xa0, 0x5e, 0x72, 0xfb, 0xd7, 0x38, 0xa3, 0x94, 0x9f, 0x44, 0x4c, + 0x32, 0x1b, 0x8a, 0xbc, 0xd0, 0xcc, 0x1e, 0xb1, 0xb1, 0x50, 0x43, 0xbf, 0xfd, 0x79, 0x02, 0x1f, 0x40, 0x49, 0xca, + 0x06, 0xe9, 0x68, 0xb1, 0xb3, 0xb9, 0x95, 0x6b, 0xd8, 0x4b, 0xa9, 0xa4, 0xae, 0x91, 0xa5, 0xc0, 0x45, 0xb7, 0x00, + 0x8d, 0xbe, 0xf4, 0x23, 0x81, 0x1d, 0xbc, 0xbf, 0xb8, 0xb4, 0x69, 0xb2, 0x76, 0x03, 0xb2, 0x16, 0xbd, 0x69, 0x84, + 0x85, 0xfa, 0x30, 0xa4, 0xd2, 0xc2, 0x93, 0x83, 0x96, 0xbb, 0x7f, 0x9f, 0x61, 0xc1, 0xa3, 0xd8, 0xef, 0xdb, 0xea, + 0x14, 0x4e, 0x67, 0xe1, 0x36, 0xa1, 0x9b, 0x1e, 0x52, 0x98, 0x6f, 0x1f, 0x60, 0xaf, 0xa2, 0xac, 0x54, 0xac, 0x46, + 0x45, 0x96, 0x96, 0x02, 0x7e, 0xc7, 0xfa, 0xba, 0x97, 0x3f, 0xd5, 0xd1, 0x38, 0x6d, 0xc2, 0x29, 0xf7, 0x09, 0x08, + 0x5a, 0x1c, 0x5b, 0x48, 0x09, 0x73, 0xf6, 0x15, 0x04, 0x93, 0x0c, 0x97, 0x08, 0x01, 0x09, 0x09, 0x9f, 0x17, 0xb8, + 0xc7, 0xaa, 0xf6, 0x2b, 0x2d, 0xda, 0xc7, 0xc4, 0xf7, 0xf2, 0xd5, 0x5b, 0x57, 0xba, 0x55, 0x7f, 0xcf, 0x5c, 0x8f, + 0x80, 0x11, 0x2f, 0xff, 0xf9, 0x12, 0x28, 0xce, 0x28, 0xa7, 0x7d, 0xfb, 0xa3, 0xae, 0xca, 0xdd, 0xcf, 0x10, 0x03, + 0x2c, 0xdc, 0x9e, 0x3e, 0x74, 0x55, 0x4b, 0xcd, 0x3f, 0x88, 0x68, 0x05, 0xdc, 0xa4, 0x08, 0x62, 0x1f, 0x4f, 0x34, + 0x12, 0x25, 0x16, 0xc5, 0xac, 0xa4, 0xca, 0x3f, 0xb1, 0xd1, 0x58, 0xb1, 0x9c, 0x86, 0x2a, 0xeb, 0xdf, 0x1a, 0x46, + 0x77, 0x4e, 0x1c, 0x45, 0x4c, 0x6b, 0x66, 0x87, 0x6e, 0x86, 0xa3, 0x79, 0x1f, 0xb7, 0x3e, 0xf7, 0x5c, 0x24, 0xb5, + 0x5d, 0x74, 0x49, 0x20, 0x67, 0xb0, 0xb3, 0xcc, 0x13, 0xe1, 0x7d, 0xeb, 0x27, 0xbe, 0x98, 0x06, 0x00, 0x9a, 0x20, + 0x6e, 0x7a, 0x26, 0xd6, 0x9a, 0x5e, 0xa8, 0xf0, 0x58, 0xe0, 0x39, 0x32, 0xdd, 0xd1, 0xd0, 0x5c, 0x7f, 0x38, 0x74, + 0xc2, 0xc3, 0x0a, 0xfc, 0xea, 0x7c, 0xc2, 0x62, 0xc0, 0x5f, 0x75, 0x8f, 0x47, 0xe9, 0xda, 0x5d, 0xfd, 0x3e, 0x76, + 0xf1, 0x78, 0xc6, 0x8a, 0xca, 0xe2, 0x21, 0x49, 0x91, 0xb8, 0x81, 0x14, 0x97, 0x22, 0xab, 0xaf, 0x8b, 0x44, 0xd6, + 0x72, 0x5e, 0xe3, 0x5f, 0x57, 0x79, 0x94, 0x75, 0xcc, 0x04, 0x6f, 0x81, 0xda, 0xe3, 0x2a, 0x11, 0xe8, 0xce, 0x50, + 0x54, 0xca, 0x8d, 0x0d, 0x0c, 0x51, 0x4d, 0x19, 0x30, 0x4c, 0x25, 0x63, 0x1f, 0xc1, 0x95, 0x5d, 0x65, 0x3e, 0xda, + 0x88, 0x05, 0xe8, 0xc9, 0xae, 0x1d, 0x34, 0xfa, 0xa9, 0x49, 0x64, 0xa8, 0xae, 0x62, 0xa4, 0xf0, 0x57, 0x4b, 0x35, + 0x54, 0x6f, 0x55, 0x6f, 0xd5, 0xb5, 0x45, 0xe6, 0xb6, 0xd3, 0x61, 0xb0, 0x6e, 0x0a, 0x10, 0x77, 0xa6, 0x0d, 0x1b, + 0xc6, 0xb6, 0xbd, 0xc9, 0xed, 0xd4, 0x22, 0x88, 0x40, 0x42, 0x23, 0x53, 0xae, 0x4e, 0xfc, 0x88, 0xfd, 0x55, 0x31, + 0x89, 0xd1, 0xe4, 0x4c, 0x38, 0x3d, 0xec, 0xde, 0x53, 0x5d, 0xb2, 0x57, 0x6b, 0xf7, 0xaa, 0x12, 0x5b, 0xce, 0x55, + 0x1f, 0x76, 0x04, 0x36, 0xbd, 0x82, 0x5e, 0x1c, 0xce, 0x89, 0x6d, 0xb3, 0x97, 0x4f, 0xa0, 0x13, 0xd0, 0x41, 0xfb, + 0x35, 0x94, 0xc8, 0x77, 0x94, 0x1d, 0x93, 0xfa, 0xfc, 0x53, 0x89, 0xb4, 0xf3, 0xa8, 0x3b, 0xcc, 0xa2, 0x63, 0x15, + 0x19, 0xea, 0x51, 0x1f, 0x5f, 0xa9, 0xd0, 0x6f, 0xd9, 0xef, 0xa9, 0x42, 0x47, 0xee, 0xd4, 0x6d, 0xf4, 0x6b, 0xac, + 0x33, 0x1e, 0x70, 0xe6, 0xec, 0xd7, 0xd6, 0x73, 0x0d, 0x53, 0x38, 0x53, 0xa8, 0xca, 0x96, 0x3d, 0x46, 0xa2, 0x23, + 0x3f, 0x73, 0x3e, 0x74, 0x50, 0x2c, 0xd5, 0x69, 0x4f, 0x57, 0x71, 0x04, 0x64, 0x89, 0xe7, 0xda, 0x7f, 0x67, 0x80, + 0xfe, 0x02, 0x8f, 0x1f, 0x8a, 0xfa, 0xef, 0x50, 0xa1, 0xb2, 0x85, 0x3b, 0x0e, 0x09, 0x59, 0xac, 0xbd, 0x1e, 0x07, + 0x3d, 0x5b, 0x6b, 0x78, 0xf6, 0xc8, 0x0f, 0x17, 0x9b, 0xf2, 0xfd, 0xf4, 0x9a, 0x4d, 0x8c, 0x6c, 0x63, 0xfb, 0x44, + 0x3a, 0xaf, 0xf7, 0xe1, 0xfa, 0x05, 0x44, 0xa0, 0xa0, 0xea, 0x24, 0x02, 0x50, 0xcd, 0xdf, 0xd6, 0x1a, 0xf1, 0x06, + 0x6c, 0xa8, 0x5a, 0xb0, 0x9b, 0xae, 0x30, 0xb2, 0x83, 0xf1, 0x91, 0x6a, 0x04, 0xd1, 0xc1, 0xd0, 0x21, 0xa8, 0x91, + 0xdc, 0x02, 0x61, 0xf4, 0x11, 0xb5, 0x3b, 0xa7, 0x95, 0xc0, 0xdb, 0xd2, 0x9c, 0xbd, 0x56, 0x1a, 0x3a, 0x5c, 0xb8, + 0xbc, 0x47, 0xed, 0x1e, 0xf1, 0x20, 0x6e, 0x53, 0x26, 0xfd, 0x3f, 0xb5, 0xfe, 0xca, 0xa0, 0x4c, 0x88, 0x33, 0x16, + 0x47, 0x0b, 0x6d, 0x55, 0xd4, 0x9a, 0x61, 0x7a, 0x9d, 0xea, 0xfc, 0xdf, 0x1c, 0x5f, 0x00, 0x6d, 0x0f, 0x9a, 0xe4, + 0x7d, 0x21, 0x44, 0xef, 0xad, 0x90, 0x17, 0xd4, 0x0d, 0x75, 0xb6, 0xc9, 0x9b, 0x56, 0xe4, 0xaa, 0xd5, 0xd9, 0x2c, + 0x11, 0x7c, 0xee, 0x22, 0xda, 0x73, 0x60, 0xc3, 0x18, 0xee, 0x16, 0x44, 0xc2, 0x01, 0x8a, 0xab, 0xe5, 0x0e, 0x68, + 0x7d, 0xd6, 0xb9, 0xef, 0x10, 0x0d, 0x35, 0x63, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, + 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, + 0x44, 0x6a, 0x78, 0x4f, 0xac, 0x47, 0x19, 0xc7, 0x8d, 0xd1, 0x0a, 0x4a, 0x93, 0xc7, 0xbf, 0xa6, 0xbc, 0x45, 0x7e, + 0xff, 0xb0, 0xaf, 0x8d, 0x2b, 0x4d, 0x96, 0x31, 0x7e, 0x04, 0xc0, 0xe6, 0x6c, 0x6a, 0x34, 0x59, 0x84, 0xc0, 0x8a, + 0x28, 0x0a, 0xdb, 0xae, 0xd9, 0xc2, 0x4e, 0x62, 0x98, 0x9d, 0x3f, 0x4f, 0xbf, 0xe4, 0x9e, 0x0d, 0x80, 0x84, 0x19, + 0xce, 0x8e, 0xe1, 0xb8, 0xc6, 0xb6, 0x81, 0x33, 0x4d, 0xb8, 0x87, 0x4f, 0xef, 0x40, 0xa6, 0x94, 0xf8, 0xe3, 0x90, + 0xaf, 0xfc, 0x6e, 0x42, 0x6b, 0x48, 0x6c, 0x07, 0x86, 0xa9, 0xdb, 0x5f, 0x18, 0x15, 0xb8, 0x83, 0x5e, 0x92, 0x7a, + 0x5a, 0x5e, 0x13, 0x43, 0x80, 0x23, 0xbc, 0x78, 0xda, 0xb6, 0x04, 0x70, 0x37, 0x6c, 0x93, 0x56, 0x3d, 0x98, 0x72, + 0xeb, 0xdc, 0xd2, 0x6c, 0x1a, 0x72, 0x44, 0x4f, 0x46, 0x4f, 0xad, 0xfb, 0x8f, 0x2a, 0xa4, 0x35, 0xa8, 0x44, 0xbf, + 0x03, 0x8b, 0xd4, 0xa6, 0x0c, 0x9d, 0x6d, 0x92, 0x7d, 0xb6, 0xec, 0x6e, 0x18, 0x6c, 0x75, 0x6b, 0x2f, 0x1d, 0x80, + 0xfb, 0x31, 0x26, 0x00, 0xff, 0x9c, 0xa4, 0x72, 0xeb, 0x3a, 0xd7, 0xae, 0x6f, 0xa0, 0x5a, 0x38, 0xf5, 0x96, 0xea, + 0x5b, 0x12, 0x7e, 0xba, 0xe3, 0x93, 0xdd, 0x4d, 0xc3, 0x30, 0x06, 0xb1, 0x88, 0xc0, 0x8f, 0x5d, 0x18, 0xb1, 0xe9, + 0x34, 0xa0, 0x91, 0x5f, 0x2f, 0x06, 0xe3, 0x37, 0x15, 0xad, 0xec, 0x36, 0xfc, 0xb5, 0xd9, 0x61, 0x40, 0xb6, 0x98, + 0x37, 0x6e, 0x2d, 0xc0, 0x69, 0x5c, 0x19, 0x24, 0x83, 0xcc, 0xc1, 0x83, 0xbb, 0x49, 0x8a, 0x61, 0x2c, 0xa8, 0xe6, + 0x68, 0x4d, 0x18, 0x31, 0x71, 0x85, 0xd3, 0xa2, 0x1e, 0xb6, 0x74, 0x9c, 0xeb, 0xdb, 0x57, 0x54, 0x89, 0x35, 0x08, + 0x0e, 0x09, 0x6e, 0x10, 0x60, 0x74, 0xfa, 0xab, 0xf9, 0xfa, 0x62, 0x8d, 0x77, 0xa5, 0x04, 0xbc, 0xc3, 0xe3, 0x57, + 0x83, 0xba, 0x08, 0x5c, 0xc5, 0x9f, 0x13, 0xdc, 0x4b, 0x9a, 0x1c, 0x79, 0x93, 0xf8, 0xc7, 0xbf, 0xed, 0x45, 0xf2, + 0xbd, 0xbd, 0x0c, 0xcb, 0x1c, 0xd6, 0xf8, 0xf2, 0xb7, 0xad, 0x6c, 0x4d, 0xc7, 0xa6, 0xf7, 0xd7, 0x5e, 0x0d, 0x24, + 0x08, 0x94, 0x90, 0x35, 0x7d, 0x14, 0xcb, 0xdf, 0x33, 0xce, 0xcf, 0x6c, 0x90, 0x6a, 0x81, 0x00, 0x6a, 0x3c, 0xef, + 0x5c, 0x5a, 0x77, 0x3c, 0xbc, 0x2d, 0xf3, 0x49, 0xd0, 0x14, 0xbd, 0xf7, 0xa4, 0x73, 0xeb, 0x22, 0x17, 0xcb, 0xf3, + 0x70, 0x29, 0x10, 0x70, 0xb3, 0xcb, 0xf0, 0xc7, 0xb5, 0xd3, 0xb3, 0x52, 0x23, 0x84, 0x8f, 0x20, 0x6c, 0xd1, 0x50, + 0xc9, 0x11, 0xff, 0xff, 0xc8, 0xbf, 0x2f, 0x17, 0x0e, 0x8f, 0xfa, 0x71, 0x97, 0x1c, 0xe8, 0x09, 0xae, 0xc9, 0x52, + 0x34, 0x54, 0xe6, 0x1d, 0x62, 0x29, 0x5c, 0x20, 0x05, 0x36, 0xfa, 0x1b, 0x5f, 0x44, 0xa2, 0x15, 0x53, 0xad, 0x92, + 0xf9, 0xe2, 0x90, 0x2b, 0xa7, 0x59, 0x3c, 0x51, 0x6c, 0xf7, 0x7a, 0x89, 0x5d, 0x46, 0xf4, 0xf4, 0x14, 0xb2, 0x31, + 0x2b, 0x7a, 0xf9, 0xc5, 0x29, 0x88, 0x89, 0xef, 0xfd, 0xa1, 0x12, 0x9f, 0x5c, 0x0d, 0x47, 0xfe, 0x90, 0x78, 0x5b, + 0xa2, 0xda, 0xaa, 0xdb, 0x88, 0x58, 0x2b, 0x48, 0x69, 0xcb, 0xbc, 0xf8, 0x01, 0x68, 0x6b, 0x19, 0x5d, 0x67, 0xbb, + 0xb6, 0x85, 0x6c, 0x75, 0x41, 0x98, 0x41, 0xc4, 0xf7, 0xdd, 0x53, 0x96, 0xeb, 0x29, 0xda, 0x39, 0xf5, 0x36, 0x06, + 0xfb, 0xab, 0x1b, 0xd6, 0x85, 0x0a, 0x57, 0x36, 0xe6, 0x94, 0x2a, 0xe4, 0x70, 0xc4, 0x46, 0x0b, 0xbf, 0xf5, 0x11, + 0xf8, 0x24, 0x29, 0x5a, 0xea, 0x55, 0xc1, 0xab, 0x6b, 0xaa, 0xc5, 0xd7, 0x64, 0x9d, 0x5e, 0x59, 0x69, 0x25, 0x8d, + 0x10, 0x8e, 0xe0, 0x41, 0x1c, 0xe4, 0xba, 0xdb, 0x88, 0x5a, 0x21, 0x6e, 0xe5, 0xc4, 0x04, 0xf6, 0xb9, 0x12, 0x00, + 0x3e, 0x36, 0x75, 0xfc, 0x66, 0x78, 0xc1, 0xf4, 0x2e, 0xb4, 0x8a, 0x3c, 0x08, 0x3e, 0x9b, 0x81, 0xf1, 0x78, 0xcc, + 0x28, 0x5b, 0xa2, 0x7d, 0xb5, 0xd8, 0xd0, 0x2d, 0x56, 0x9a, 0x40, 0x6e, 0xad, 0xa3, 0x63, 0x4e, 0xfc, 0x84, 0xca, + 0xc5, 0x9a, 0xcb, 0x52, 0xc5, 0x8a, 0x4e, 0x26, 0xd3, 0xd6, 0xaa, 0xd0, 0x39, 0x08, 0x86, 0x26, 0x34, 0x4d, 0x76, + 0xc9, 0x0a, 0xb9, 0x55, 0x72, 0xd4, 0xfd, 0x31, 0xc6, 0x3c, 0xb4, 0x44, 0xe9, 0xa0, 0x39, 0xe3, 0x76, 0xdb, 0xdb, + 0x98, 0x48, 0xcf, 0x8d, 0x50, 0xa8, 0x78, 0xae, 0x9e, 0xf9, 0xd0, 0xd8, 0x27, 0x5f, 0xd2, 0x0b, 0xd4, 0x3e, 0x19, + 0x47, 0x4d, 0xe8, 0xc2, 0x4c, 0x36, 0x36, 0x08, 0x70, 0x37, 0xa6, 0xdb, 0x9a, 0x12, 0x1c, 0x3f, 0xcb, 0x82, 0x59, + 0xeb, 0x93, 0x1f, 0x99, 0xa5, 0x19, 0xf7, 0x74, 0x73, 0x8b, 0xe3, 0x83, 0x71, 0xf8, 0x7b, 0x76, 0x25, 0x7d, 0x4c, + 0x8b, 0x4e, 0xe7, 0x70, 0x6f, 0xe1, 0xda, 0x21, 0x0f, 0xa6, 0xd1, 0xf7, 0x3a, 0xf6, 0x26, 0x3a, 0xf9, 0x38, 0xca, + 0xfb, 0x7c, 0x7e, 0xf0, 0x5e, 0x6a, 0x8e, 0x16, 0x32, 0xaa, 0x1e, 0x20, 0xe9, 0x73, 0xba, 0x6d, 0x5a, 0xf1, 0x64, + 0xe9, 0x14, 0x44, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, + 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xe8, 0x8f, 0x69, + 0x18, 0x8f, 0x84, 0x60, 0x31, 0x4e, 0xb2, 0x0a, 0xf8, 0x35, 0xdd, 0xf3, 0xad, 0x8a, 0x13, 0xe4, 0xd3, 0x80, 0xb9, + 0xd6, 0xcd, 0x05, 0x43, 0x9b, 0x6f, 0x1c, 0xbe, 0xfd, 0x28, 0xf0, 0x6a, 0x32, 0xce, 0xc7, 0x35, 0x31, 0x75, 0x43, + 0x39, 0x29, 0x5b, 0xda, 0x3f, 0xce, 0x90, 0x62, 0x15, 0x33, 0x80, 0x54, 0x45, 0x15, 0xca, 0x6d, 0xbb, 0x27, 0xbf, + 0x06, 0xe2, 0xf7, 0x26, 0xa4, 0xd7, 0x2e, 0x30, 0x94, 0x3a, 0x3b, 0x12, 0xc9, 0x6d, 0x4f, 0x24, 0x3b, 0x60, 0x88, + 0x72, 0xa2, 0x1b, 0x68, 0xfb, 0xf8, 0xb9, 0x00, 0xed, 0x67, 0x0c, 0xaa, 0x08, 0x10, 0x79, 0xc0, 0x4b, 0x88, 0x52, + 0x00, 0x57, 0x1f, 0xf6, 0xf0, 0x1d, 0xbb, 0xb1, 0x3a, 0x5d, 0xc2, 0xfc, 0x67, 0x92, 0x35, 0x1b, 0x81, 0x72, 0xc5, + 0xac, 0x30, 0x6d, 0x82, 0x5f, 0x23, 0x23, 0x92, 0xb8, 0xbd, 0x5a, 0x42, 0xab, 0x00, 0x0f, 0x98, 0x38, 0xf7, 0x42, + 0x5f, 0xbd, 0x47, 0x53, 0x31, 0x90, 0x98, 0x96, 0x9d, 0x93, 0x29, 0x95, 0x41, 0xf3, 0x02, 0x59, 0xe9, 0x42, 0xac, + 0x5b, 0xb3, 0x0d, 0x87, 0x18, 0x46, 0x53, 0xec, 0x53, 0xee, 0x8a, 0xe1, 0xa5, 0x98, 0x1b, 0x73, 0x8f, 0xd1, 0x03, + 0x8a, 0xe0, 0x0b, 0xe8, 0xec, 0x8b, 0xd7, 0x4b, 0x80, 0x0f, 0xa3, 0xa5, 0x1a, 0x79, 0x39, 0x05, 0x10, 0x29, 0x29, + 0x83, 0xca, 0xe2, 0x78, 0x34, 0x43, 0xae, 0x61, 0xf2, 0xe8, 0xf3, 0x1d, 0xf7, 0x51, 0xd8, 0xfb, 0x87, 0xdb, 0x33, + 0xc7, 0x4a, 0x31, 0x44, 0x20, 0x8f, 0xfa, 0x03, 0xcd, 0x03, 0x83, 0x0e, 0x91, 0x9f, 0xf4, 0xae, 0x55, 0xef, 0x08, + 0x4c, 0xc4, 0xb5, 0xed, 0x3f, 0xb1, 0x68, 0x33, 0xcf, 0x00, 0x9d, 0x53, 0xeb, 0x0d, 0x57, 0x1e, 0x59, 0x4c, 0xfd, + 0x77, 0xa6, 0x0e, 0xc1, 0x83, 0x33, 0x08, 0xbe, 0xa7, 0xee, 0x1c, 0x36, 0x64, 0xbd, 0xaa, 0x1e, 0xaa, 0x7a, 0x50, + 0x5e, 0xbd, 0x40, 0x29, 0x43, 0x57, 0x95, 0x0b, 0xba, 0x2d, 0xf2, 0x13, 0x5e, 0xe7, 0x89, 0x09, 0x95, 0xc5, 0x54, + 0x74, 0x29, 0x03, 0x53, 0xe0, 0xd0, 0x32, 0x0d, 0x13, 0x36, 0xc8, 0x33, 0xf1, 0x58, 0x37, 0x35, 0x4d, 0xe5, 0xd0, + 0xd4, 0x28, 0x87, 0x02, 0xd4, 0x89, 0x80, 0x6d, 0x6f, 0x48, 0x88, 0x61, 0x34, 0xd8, 0x64, 0x91, 0x1e, 0xd5, 0x76, + 0xe6, 0x0d, 0x83, 0xa4, 0xcc, 0xe3, 0xb4, 0x1a, 0x40, 0x5a, 0x37, 0x63, 0x69, 0xb6, 0x72, 0x52, 0xa5, 0x46, 0xae, + 0x24, 0xd9, 0xc1, 0xa6, 0x50, 0xf8, 0x40, 0x22, 0x35, 0xe9, 0x41, 0x85, 0xf0, 0x56, 0xf7, 0x52, 0x68, 0x95, 0x2f, + 0xcc, 0x6a, 0x03, 0x78, 0x52, 0xc0, 0x26, 0x52, 0x77, 0xd1, 0xa0, 0x90, 0x3b, 0x59, 0xe5, 0x23, 0xcc, 0xa2, 0xa2, + 0x1d, 0x61, 0xd4, 0x5f, 0x9b, 0x89, 0x6e, 0x81, 0xa8, 0x6c, 0xae, 0x68, 0xa7, 0x44, 0x82, 0xdf, 0x74, 0xc7, 0xf5, + 0xa9, 0x2c, 0x5c, 0x67, 0xf7, 0x2d, 0xf2, 0x96, 0xcb, 0xb1, 0x4e, 0x4f, 0x79, 0x0d, 0x35, 0x59, 0x24, 0xb9, 0xcf, + 0xb8, 0x41, 0xa2, 0xf5, 0xed, 0x07, 0xcc, 0x71, 0x96, 0xf0, 0xde, 0xc6, 0x00, 0x91, 0x0c, 0x39, 0x1c, 0xb7, 0xe1, + 0xcf, 0x0b, 0xfd, 0x0d, 0xe5, 0xe8, 0xac, 0x24, 0xf5, 0xc3, 0xff, 0xc7, 0x38, 0xc8, 0xc3, 0x13, 0xc5, 0x28, 0xc0, + 0xd2, 0x9c, 0xb3, 0x98, 0x65, 0x31, 0xbe, 0xe0, 0x96, 0x67, 0xc8, 0x55, 0x94, 0x54, 0x00, 0x03, 0x01, 0x4e, 0x6f, + 0xe9, 0x0a, 0x4a, 0xa2, 0x18, 0x7e, 0x08, 0x6e, 0xae, 0x1a, 0x64, 0x90, 0xce, 0x81, 0xfd, 0x0f, 0x63, 0xa3, 0x13, + 0xcc, 0xfc, 0xba, 0x3e, 0x1e, 0x10, 0xad, 0x1a, 0xed, 0xa2, 0x71, 0xc8, 0xd4, 0x92, 0x09, 0xe5, 0xde, 0x1b, 0x4e, + 0x8c, 0x3c, 0xed, 0x31, 0x15, 0x72, 0xbe, 0x9e, 0xf4, 0x27, 0x00, 0x09, 0x2e, 0x9c, 0x50, 0x90, 0xa9, 0x03, 0xe8, + 0x02, 0xd1, 0x8f, 0xa6, 0x23, 0x78, 0x8c, 0x78, 0x5a, 0x10, 0x6b, 0x94, 0x69, 0x1a, 0x64, 0x1b, 0xd0, 0xee, 0xb1, + 0x02, 0xee, 0x27, 0x06, 0xac, 0xe5, 0x15, 0x41, 0x64, 0x52, 0x70, 0xc1, 0xc4, 0xd6, 0xb6, 0x42, 0x89, 0xda, 0x35, + 0xcf, 0xc0, 0x40, 0x84, 0xed, 0x5a, 0xd3, 0x3d, 0xe5, 0x3a, 0xe5, 0x69, 0xcc, 0xdc, 0xde, 0xed, 0x0d, 0xaa, 0xd4, + 0x6a, 0xff, 0x12, 0x4f, 0x54, 0x02, 0x20, 0x80, 0xc8, 0x5b, 0xa0, 0x77, 0x7e, 0x51, 0xcb, 0x53, 0x5b, 0x85, 0x1e, + 0x0e, 0xca, 0xd1, 0x11, 0xd9, 0x25, 0xe3, 0xac, 0x0f, 0xd4, 0x12, 0xab, 0xa9, 0x3e, 0xff, 0x60, 0x9c, 0xed, 0xaf, + 0xa2, 0x7a, 0xb6, 0x2e, 0x7f, 0x04, 0xed, 0x58, 0xb5, 0x1c, 0x49, 0xf7, 0x77, 0xeb, 0x6a, 0x6c, 0x9c, 0x0f, 0xdd, + 0x0e, 0x98, 0x89, 0x93, 0x50, 0x9a, 0xf4, 0x38, 0xd7, 0x7d, 0x68, 0x18, 0xa0, 0xa7, 0x59, 0xc0, 0xb9, 0xc6, 0x3c, + 0xa0, 0x9e, 0xad, 0x26, 0x3d, 0x47, 0x56, 0xde, 0xdc, 0x43, 0xdd, 0xf8, 0xb7, 0xca, 0xec, 0xc5, 0xa9, 0x67, 0xe4, + 0xb6, 0xe7, 0x2a, 0x0e, 0xec, 0xac, 0x94, 0x0e, 0x82, 0x04, 0x98, 0xfe, 0xec, 0x05, 0x16, 0x63, 0x52, 0x01, 0x00, + 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, + 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x5b, 0xc7, 0x1c, 0xfd, 0x07, 0xe4, 0x20, 0xa6, + 0x6f, 0xfc, 0xef, 0x86, 0x78, 0x51, 0x2f, 0x27, 0xf2, 0x2f, 0x2d, 0xdd, 0x40, 0x13, 0xf2, 0x37, 0xfe, 0xac, 0xc6, + 0x4d, 0x33, 0x99, 0xd6, 0x38, 0x4e, 0xbf, 0xb7, 0xe5, 0xbf, 0xf4, 0x2e, 0x18, 0xb8, 0x6c, 0x3d, 0xc8, 0x9f, 0xd6, + 0x92, 0xec, 0xb0, 0x7d, 0xab, 0xdc, 0x24, 0xce, 0x2d, 0x04, 0x1e, 0x00, 0x0a, 0x1c, 0xc6, 0xf9, 0x26, 0x43, 0x4e, + 0x1f, 0x28, 0x6a, 0x55, 0x1c, 0x37, 0xcf, 0x93, 0x11, 0x28, 0x91, 0x4b, 0xc1, 0xf0, 0x8b, 0xfb, 0xbf, 0x07, 0x73, + 0x41, 0xdd, 0xf0, 0xb1, 0x5d, 0x3b, 0xfe, 0x85, 0x95, 0x49, 0x15, 0x5f, 0x55, 0x44, 0x13, 0x93, 0x21, 0x75, 0x65, + 0xee, 0xb2, 0x01, 0x5f, 0xf9, 0x53, 0x1b, 0xbe, 0x31, 0x4f, 0xf5, 0x81, 0x31, 0x74, 0x53, 0xf5, 0xd5, 0x36, 0x93, + 0x18, 0xa9, 0x64, 0x8f, 0x15, 0x6d, 0xec, 0x2e, 0x77, 0xb3, 0x63, 0x51, 0x62, 0xc1, 0xd9, 0x48, 0xbb, 0xab, 0x9c, + 0x81, 0xa5, 0xcd, 0x6b, 0x52, 0xaa, 0x72, 0xe8, 0x53, 0x7e, 0xff, 0x45, 0x16, 0x95, 0x70, 0x17, 0x2f, 0x62, 0x44, + 0xae, 0x21, 0xda, 0x6e, 0x93, 0x43, 0xdb, 0xa7, 0xed, 0xc1, 0x09, 0x9d, 0xc9, 0x66, 0xf3, 0xfd, 0x04, 0x37, 0x0f, + 0x16, 0xf5, 0x71, 0x82, 0xa2, 0x19, 0x07, 0x5f, 0x05, 0x0f, 0x04, 0x09, 0x3c, 0x46, 0x34, 0x76, 0x03, 0x51, 0x62, + 0x89, 0xc1, 0x9b, 0x7a, 0x8b, 0x26, 0x9b, 0xb2, 0x73, 0x0b, 0x53, 0x1a, 0xf3, 0xbb, 0x14, 0x4a, 0x04, 0x2b, 0x44, + 0xd4, 0x30, 0x81, 0x04, 0x21, 0xc0, 0x4d, 0xd0, 0xd4, 0x49, 0xb1, 0xc7, 0x52, 0x29, 0xfa, 0xbc, 0x30, 0x2f, 0x58, + 0x81, 0xbf, 0x25, 0xcf, 0xbd, 0xfe, 0xaf, 0x9c, 0xe1, 0x65, 0x8b, 0x0b, 0x9e, 0x98, 0x2d, 0x1c, 0x1e, 0xec, 0x55, + 0x5c, 0x55, 0xaf, 0xb9, 0x89, 0x3a, 0xa8, 0xe4, 0xfb, 0x85, 0x98, 0xad, 0x16, 0x3f, 0xff, 0xcc, 0xaf, 0x16, 0x07, + 0xdc, 0x6e, 0x8d, 0xed, 0x12, 0xc2, 0xa0, 0x23, 0x78, 0xec, 0x5a, 0x10, 0x4c, 0x4d, 0x2b, 0x18, 0x14, 0xa9, 0xec, + 0x22, 0x9d, 0x5c, 0x62, 0xef, 0xa5, 0x0d, 0x7a, 0x11, 0x6e, 0x44, 0xeb, 0x29, 0x98, 0x01, 0xa1, 0xc8, 0x43, 0x53, + 0xbf, 0x41, 0x68, 0x8c, 0x20, 0x3e, 0xe3, 0x2d, 0xbc, 0x0c, 0x96, 0xb6, 0xe9, 0x93, 0x8a, 0x69, 0x2d, 0x46, 0x35, + 0x5a, 0x52, 0x09, 0x7d, 0xbf, 0x9d, 0x88, 0x9f, 0x13, 0x65, 0x92, 0x05, 0x7c, 0xb1, 0xe4, 0xce, 0xfb, 0xe1, 0xd8, + 0xe4, 0x1e, 0x23, 0x56, 0x47, 0xd0, 0x51, 0x4e, 0xe8, 0x4d, 0x93, 0x97, 0x24, 0xcc, 0xa5, 0xf3, 0xda, 0x28, 0x36, + 0xca, 0x8a, 0x65, 0x3b, 0x46, 0x11, 0xb5, 0x23, 0xe0, 0x4a, 0xb2, 0xd6, 0x1b, 0x76, 0x6a, 0x63, 0xff, 0xb0, 0x2c, + 0x96, 0xaa, 0x0d, 0x6f, 0xe3, 0xb2, 0x59, 0x59, 0x38, 0x8f, 0xca, 0x62, 0x01, 0xc9, 0xc3, 0x59, 0x01, 0xf0, 0x49, + 0xef, 0xda, 0x3b, 0x47, 0x0a, 0xb7, 0x90, 0xc8, 0x40, 0xda, 0xe5, 0xe7, 0xdd, 0xf2, 0x36, 0xfa, 0x13, 0x6f, 0x3c, + 0x04, 0xcc, 0x4b, 0xed, 0xf7, 0x80, 0xf1, 0xd1, 0x72, 0xfd, 0x72, 0x0d, 0xc1, 0x92, 0x2a, 0x46, 0xa4, 0x1c, 0xf7, + 0xcf, 0xdf, 0x06, 0xf6, 0xc7, 0xc4, 0xc3, 0xbd, 0xba, 0xb9, 0x51, 0x02, 0xa1, 0x82, 0x2a, 0x90, 0xfd, 0x96, 0xcc, + 0x64, 0x78, 0xac, 0x24, 0xca, 0xb4, 0x95, 0x9a, 0x42, 0xba, 0x8e, 0xbc, 0xb7, 0x1b, 0xf3, 0x0a, 0x60, 0x99, 0x93, + 0xf6, 0xb3, 0x56, 0x59, 0x96, 0x53, 0x49, 0x74, 0x34, 0xa9, 0x38, 0x35, 0x39, 0xee, 0xb2, 0xfd, 0x23, 0xec, 0x68, + 0xd7, 0x53, 0xc9, 0x45, 0xf4, 0xbd, 0x3d, 0x69, 0xe9, 0x53, 0xe5, 0x93, 0xde, 0x84, 0xc4, 0x66, 0x29, 0x4f, 0x30, + 0x01, 0xdf, 0xb3, 0xf8, 0xc7, 0x78, 0x2e, 0xb9, 0x9b, 0xaf, 0xe4, 0xfb, 0x5e, 0xad, 0x86, 0x02, 0x33, 0x47, 0x29, + 0x15, 0x37, 0x27, 0x22, 0xf2, 0xaf, 0x34, 0x0d, 0x2e, 0x58, 0x07, 0x82, 0xc0, 0x44, 0x17, 0x78, 0xa7, 0x43, 0x46, + 0x7a, 0xad, 0x24, 0xc0, 0x12, 0x17, 0x86, 0x43, 0xdf, 0x54, 0xf3, 0x20, 0x63, 0xaf, 0xae, 0x5a, 0x2d, 0xf0, 0x5d, + 0x75, 0x8d, 0x0d, 0x2c, 0xcd, 0x18, 0x1c, 0xc7, 0x46, 0xf3, 0xb2, 0x39, 0x3b, 0xf9, 0xe0, 0xf8, 0x5a, 0x3d, 0x45, + 0x67, 0x9a, 0x7a, 0x02, 0x36, 0x01, 0xf8, 0xf6, 0x9e, 0xf2, 0x31, 0x5e, 0x65, 0x59, 0x6c, 0x0f, 0x78, 0x3a, 0x0b, + 0xbb, 0x62, 0x31, 0x53, 0xdf, 0x9a, 0x73, 0xe6, 0x4e, 0xa9, 0x93, 0x19, 0x61, 0x00, 0x37, 0xe6, 0xb9, 0x44, 0xa5, + 0xc0, 0xcf, 0x4c, 0x47, 0x54, 0x12, 0xc0, 0x44, 0x9e, 0x3d, 0x57, 0x24, 0x2c, 0x4d, 0x57, 0x7a, 0x45, 0xc2, 0xe7, + 0x2a, 0x8b, 0xc2, 0x73, 0xaf, 0x80, 0xdc, 0x49, 0xa9, 0x51, 0x0e, 0x04, 0xf7, 0xf2, 0x37, 0x2e, 0x32, 0x42, 0x7b, + 0x19, 0x9f, 0x28, 0x5b, 0xf2, 0x1b, 0xe6, 0x88, 0x62, 0x91, 0x3e, 0xea, 0x71, 0x60, 0x76, 0x91, 0x7b, 0xaa, 0x44, + 0xca, 0x03, 0xd2, 0x66, 0x86, 0x35, 0xda, 0x9e, 0xea, 0x37, 0x41, 0x03, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, + 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, + 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x11, 0x50, 0x6f, 0x65, 0x71, 0xe4, 0x6c, 0x54, 0x3e, 0x97, 0x33, 0xe4, 0x99, + 0x2a, 0x8e, 0x6d, 0x97, 0x7b, 0x84, 0xc3, 0x37, 0x53, 0xf6, 0xdf, 0xa6, 0x4e, 0x5a, 0x1c, 0xca, 0x70, 0x1d, 0x2d, + 0xe9, 0x00, 0x86, 0x3c, 0x9b, 0xa0, 0x5b, 0x23, 0xf7, 0xa3, 0xc0, 0x0d, 0x77, 0x7b, 0x1c, 0x1f, 0xd9, 0xdf, 0xad, + 0x91, 0xaa, 0x63, 0xb2, 0xe5, 0x33, 0x0a, 0x83, 0xf2, 0x4f, 0x78, 0x6e, 0x5c, 0xb0, 0x7c, 0xd3, 0x92, 0x37, 0x54, + 0xda, 0x5c, 0x6a, 0x6f, 0xc4, 0xaa, 0x9b, 0xa4, 0x01, 0xd5, 0x75, 0x17, 0xd5, 0xb1, 0xd1, 0xd5, 0x27, 0x16, 0xd3, + 0x52, 0x75, 0x56, 0xc9, 0x44, 0x09, 0x5b, 0x10, 0xcc, 0x5e, 0xab, 0x1f, 0xbe, 0x91, 0x10, 0x8d, 0xbf, 0xf3, 0x87, + 0x5a, 0x00, 0x55, 0x5d, 0xd0, 0xb9, 0x86, 0xca, 0xff, 0x5b, 0xe9, 0xa8, 0x3d, 0xb1, 0xcc, 0x90, 0x18, 0x52, 0x01, + 0x17, 0xab, 0x82, 0x57, 0x7a, 0xbc, 0xe4, 0x41, 0xd8, 0x37, 0x32, 0xc6, 0x16, 0x5f, 0x57, 0xe6, 0x90, 0xf9, 0x8e, + 0x2a, 0xd0, 0xe6, 0x2b, 0x8b, 0x16, 0xd9, 0xc7, 0xd7, 0x47, 0x64, 0x4e, 0x38, 0x5d, 0xae, 0x81, 0x79, 0xd0, 0xc2, + 0x25, 0x10, 0x51, 0x76, 0x1f, 0x1c, 0x37, 0x55, 0x45, 0xc8, 0xbd, 0xf8, 0xb7, 0xd9, 0x49, 0xea, 0xe8, 0x9f, 0x98, + 0xbd, 0x6b, 0x87, 0x6c, 0x6d, 0xcc, 0x63, 0x37, 0x3c, 0xb7, 0x50, 0x8b, 0xc2, 0x95, 0x64, 0xe8, 0x37, 0x53, 0x84, + 0x75, 0x8a, 0x7d, 0x38, 0xf5, 0x31, 0x26, 0x17, 0x81, 0x13, 0xbb, 0xcd, 0x15, 0x40, 0x04, 0x18, 0x09, 0xf6, 0x84, + 0x58, 0x0d, 0x3e, 0x15, 0x29, 0x45, 0x88, 0x2d, 0x43, 0x30, 0xd9, 0x3f, 0x80, 0x16, 0x08, 0x29, 0xf2, 0xc5, 0xfb, + 0x31, 0x7a, 0x26, 0x4f, 0x04, 0xa4, 0xf2, 0xeb, 0xc6, 0x2c, 0x6d, 0x4f, 0x4e, 0xe9, 0x62, 0x45, 0x8f, 0x63, 0xef, + 0xd0, 0x87, 0x42, 0xb3, 0x0d, 0x91, 0x07, 0x0f, 0x20, 0x6f, 0x33, 0xca, 0x7b, 0x6f, 0xf2, 0x45, 0x25, 0x76, 0xcb, + 0x88, 0x6c, 0xa4, 0xba, 0xf2, 0x42, 0xf6, 0x0f, 0x20, 0xf7, 0x83, 0xab, 0x69, 0xc3, 0xa3, 0x47, 0x03, 0x92, 0x67, + 0x39, 0xd5, 0x39, 0x66, 0xaa, 0xf5, 0xb4, 0xcd, 0xf2, 0xed, 0xab, 0x7d, 0xd6, 0x26, 0xda, 0x79, 0x71, 0x79, 0x73, + 0x1b, 0x97, 0x12, 0xc6, 0x23, 0x30, 0x0a, 0x5d, 0x19, 0x99, 0x2f, 0x92, 0x55, 0x62, 0x33, 0x6e, 0x5f, 0x6e, 0xc8, + 0x3c, 0xaa, 0x55, 0xb0, 0xec, 0xab, 0x6d, 0xc4, 0x2a, 0xb9, 0xfd, 0x1a, 0x88, 0x62, 0x27, 0x32, 0x5c, 0x0f, 0x23, + 0x4d, 0x39, 0x7b, 0x6c, 0xec, 0x29, 0xdc, 0xee, 0x2c, 0xb6, 0xe9, 0xdd, 0x76, 0xe9, 0xcc, 0x50, 0x15, 0xfc, 0xde, + 0x4b, 0x1c, 0xcc, 0x51, 0x4a, 0x2e, 0x9b, 0x34, 0x40, 0x0c, 0x98, 0xf4, 0xf5, 0x9d, 0xfd, 0xa4, 0x98, 0x0b, 0xea, + 0x15, 0x80, 0xb3, 0x2d, 0xd8, 0x91, 0x55, 0x8b, 0xe4, 0xe0, 0x28, 0x31, 0x8a, 0x0a, 0x1d, 0x8e, 0x00, 0xc3, 0x8e, + 0xce, 0x23, 0x78, 0x4f, 0x2a, 0xdf, 0x80, 0x65, 0x9a, 0x39, 0x75, 0x54, 0xd4, 0x4d, 0x19, 0xd9, 0xe7, 0x5a, 0x19, + 0xd1, 0x48, 0xd0, 0xb5, 0x6a, 0xc6, 0xae, 0x82, 0xed, 0x4d, 0x60, 0x06, 0x5d, 0x65, 0x1a, 0x6b, 0x4a, 0x4f, 0xf2, + 0xe5, 0x9a, 0x0b, 0x73, 0xe4, 0x4b, 0x31, 0xde, 0xd7, 0x63, 0x63, 0x8e, 0x1a, 0xc0, 0x4c, 0xa0, 0x07, 0xd7, 0x19, + 0xb2, 0x1a, 0x44, 0xf1, 0x37, 0xa9, 0xc4, 0xc1, 0xe4, 0xbe, 0x10, 0xc5, 0x99, 0xa3, 0x1d, 0x46, 0x9f, 0xc1, 0x67, + 0x30, 0xec, 0xc3, 0x8e, 0x74, 0x20, 0x13, 0x2c, 0xea, 0x7f, 0xc7, 0xd5, 0x5a, 0xb6, 0xd2, 0x3c, 0xb1, 0xf2, 0xb7, + 0x7e, 0x13, 0x3f, 0xff, 0x4d, 0x33, 0x03, 0xca, 0x49, 0x92, 0x36, 0xf1, 0xf0, 0xab, 0x2b, 0x92, 0x4b, 0x8f, 0x5a, + 0x93, 0xcd, 0x3d, 0xc8, 0x70, 0x95, 0x38, 0x17, 0x07, 0xcf, 0x91, 0x57, 0x29, 0xf3, 0x93, 0xbd, 0xcb, 0x26, 0xff, + 0x0f, 0x74, 0xfb, 0x1f, 0x3f, 0x57, 0xb4, 0xcd, 0x8b, 0xf1, 0x4e, 0xd6, 0x3a, 0xb0, 0x41, 0x25, 0xbe, 0xd7, 0xe2, + 0x0b, 0xc5, 0xdc, 0xb0, 0x31, 0x2d, 0x04, 0x15, 0x6b, 0x31, 0xa2, 0x3f, 0xf7, 0xce, 0xe1, 0x8b, 0xe7, 0xf0, 0x6b, + 0xe1, 0x14, 0x35, 0x49, 0xea, 0xb8, 0x5c, 0x15, 0x58, 0x09, 0x8a, 0x13, 0x6b, 0x19, 0xab, 0x3a, 0xfb, 0xeb, 0x12, + 0xb7, 0x9f, 0x15, 0xa8, 0x40, 0x3c, 0x07, 0xa6, 0x2a, 0x19, 0xe6, 0x73, 0x75, 0x82, 0xfd, 0xdf, 0x98, 0x3f, 0x4a, + 0xb6, 0xb5, 0xa4, 0x49, 0xe4, 0x52, 0xeb, 0xf7, 0x6e, 0x9f, 0x12, 0x64, 0x81, 0xaa, 0x32, 0x68, 0xc1, 0xfd, 0x27, + 0x90, 0x4b, 0xd5, 0x8d, 0xba, 0xdb, 0x9e, 0x61, 0xab, 0xeb, 0x72, 0x5d, 0xb0, 0x94, 0x61, 0xe1, 0x9a, 0x19, 0xed, + 0x06, 0xb6, 0xe3, 0x13, 0x80, 0xa1, 0x2d, 0x75, 0x10, 0xba, 0xc7, 0x14, 0x21, 0x77, 0x36, 0xa4, 0xa0, 0xfe, 0x68, + 0x0f, 0x07, 0x3e, 0xf2, 0x03, 0xe0, 0x84, 0xf4, 0xa6, 0xd5, 0xe0, 0x37, 0x6a, 0xbc, 0x5e, 0x61, 0xa8, 0xda, 0x6e, + 0x78, 0x46, 0x0b, 0x5b, 0x0e, 0xe9, 0x1a, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, + 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, + 0x6a, 0x1d, 0xa7, 0x2b, 0xfc, 0x22, 0xbf, 0x74, 0x22, 0x5d, 0x75, 0x3e, 0x06, 0x3e, 0x3f, 0x50, 0x34, 0xd3, 0x52, + 0x0e, 0xc5, 0x27, 0x28, 0xa2, 0x23, 0xb2, 0xb8, 0xed, 0x48, 0xf9, 0x9a, 0x43, 0x2f, 0x90, 0x1d, 0x0f, 0x31, 0xf9, + 0x3f, 0xed, 0x61, 0x96, 0xc3, 0x36, 0x43, 0xb8, 0x57, 0x9b, 0xc2, 0x74, 0x13, 0x18, 0x29, 0x98, 0xc1, 0x91, 0x90, + 0xdc, 0xac, 0xc6, 0x37, 0x65, 0xf0, 0x43, 0x5d, 0x8c, 0xc3, 0xac, 0x57, 0x80, 0xca, 0xf2, 0xb1, 0xb5, 0x06, 0x68, + 0xd3, 0xb7, 0x63, 0x94, 0x88, 0xa7, 0x61, 0x0f, 0x2a, 0x4b, 0x26, 0x64, 0x10, 0xec, 0x9d, 0x41, 0xea, 0xa7, 0x4f, + 0x40, 0x5f, 0xab, 0x24, 0x97, 0xf3, 0xfe, 0x5f, 0x66, 0x82, 0xeb, 0x40, 0x4f, 0xc6, 0xfd, 0xf1, 0xbd, 0x35, 0xc7, + 0x6e, 0x9a, 0x59, 0x29, 0xc2, 0x31, 0x0e, 0x47, 0x39, 0x27, 0xcb, 0x1c, 0x92, 0x66, 0x27, 0x72, 0xc9, 0xa1, 0xfd, + 0x19, 0xc8, 0x23, 0x22, 0x91, 0xd2, 0x07, 0xb0, 0xac, 0xd7, 0x97, 0xe5, 0x23, 0x9f, 0x34, 0xa8, 0x67, 0x35, 0x9a, + 0xbe, 0xe7, 0xa2, 0x2f, 0x1d, 0x41, 0x8c, 0xf2, 0x68, 0x91, 0xed, 0x15, 0x22, 0x86, 0x6c, 0x69, 0x9c, 0x23, 0xdd, + 0x6c, 0x48, 0xcf, 0x1d, 0x3a, 0xe7, 0x6f, 0x77, 0xa5, 0x09, 0x43, 0x6f, 0xd9, 0x4a, 0x91, 0x08, 0x08, 0xbc, 0x12, + 0x24, 0x92, 0x72, 0xed, 0x60, 0x8c, 0xbd, 0xe5, 0x27, 0x98, 0x34, 0x8d, 0x46, 0x73, 0x78, 0xf3, 0x12, 0xb8, 0xad, + 0x62, 0xdb, 0xf6, 0xca, 0x3a, 0x35, 0x01, 0xfb, 0xa7, 0x1b, 0x85, 0x55, 0xd0, 0xfa, 0x0d, 0x26, 0xb5, 0xb6, 0x57, + 0x14, 0xad, 0xa0, 0x86, 0x78, 0x0e, 0x2d, 0x28, 0x9e, 0x3a, 0x04, 0x66, 0xc8, 0x98, 0x23, 0x4e, 0x43, 0x7e, 0xd8, + 0xc1, 0x85, 0x93, 0x6e, 0xa5, 0x2d, 0x21, 0x0c, 0x6d, 0x5b, 0x44, 0x6f, 0x7f, 0x57, 0x62, 0x37, 0x6b, 0xce, 0x8d, + 0xf7, 0x9e, 0xf7, 0xd8, 0xd2, 0x58, 0x75, 0x45, 0x3f, 0xcf, 0x20, 0xf8, 0xa1, 0x46, 0xe0, 0x15, 0xa0, 0x79, 0xe0, + 0xaa, 0x01, 0x81, 0x72, 0xc1, 0xcd, 0xe7, 0x06, 0xb0, 0xe3, 0x87, 0xc9, 0xd4, 0x77, 0x95, 0xb5, 0x65, 0x50, 0x29, + 0xcd, 0xb4, 0xe9, 0x9a, 0x99, 0xf5, 0x6c, 0x55, 0x34, 0xb6, 0xf8, 0xcd, 0xf7, 0xa4, 0x0f, 0xe1, 0x4e, 0x94, 0x33, + 0xdb, 0x70, 0x8e, 0xd6, 0x2c, 0x95, 0xcb, 0x91, 0xcf, 0x86, 0x67, 0x3b, 0x47, 0x21, 0xbe, 0x15, 0x80, 0x11, 0x94, + 0xb5, 0x7d, 0x4d, 0xd4, 0xe6, 0x6c, 0xec, 0xd9, 0x6d, 0xa3, 0x50, 0x14, 0x84, 0xa3, 0xfe, 0xef, 0x9e, 0xff, 0x89, + 0xa4, 0x01, 0xe5, 0xe2, 0xd3, 0x93, 0x79, 0x99, 0x07, 0x09, 0xae, 0xf7, 0x01, 0x0e, 0x23, 0x58, 0x58, 0x1f, 0x9d, + 0x1e, 0x59, 0x02, 0x12, 0x22, 0xb4, 0x81, 0x43, 0x15, 0x4f, 0xb2, 0x98, 0xe0, 0xfd, 0x0d, 0x20, 0x56, 0xd2, 0x84, + 0xe9, 0x65, 0xb6, 0x30, 0x88, 0x40, 0x2f, 0x11, 0x92, 0x85, 0xf0, 0xd4, 0x54, 0x23, 0xe1, 0x6a, 0x92, 0x16, 0x6b, + 0x9a, 0xdf, 0x97, 0xbb, 0x9e, 0xc4, 0x94, 0x90, 0xa0, 0xdb, 0x1e, 0xc1, 0x4e, 0xaf, 0xf7, 0x25, 0xae, 0x4c, 0x7e, + 0x67, 0x7c, 0xa3, 0xe0, 0x7c, 0x4b, 0x9e, 0x9a, 0xa3, 0x3f, 0x5f, 0x47, 0x46, 0xfa, 0xaa, 0x78, 0xe2, 0x6d, 0x2c, + 0xdd, 0x91, 0x42, 0x99, 0x85, 0x35, 0xfb, 0x60, 0x3e, 0xe9, 0x85, 0xc1, 0x7f, 0x00, 0x95, 0xe9, 0xca, 0x44, 0x3a, + 0xd9, 0x5d, 0x4b, 0xb5, 0x7a, 0x10, 0x4a, 0xa1, 0x78, 0xd2, 0x3b, 0xee, 0xe5, 0x25, 0x4c, 0x21, 0x3b, 0xa7, 0x96, + 0x33, 0x6a, 0x46, 0xa2, 0x30, 0x74, 0x6a, 0xff, 0x8e, 0xfc, 0x78, 0xb9, 0xd1, 0x7e, 0x3c, 0x99, 0xe4, 0x7c, 0x73, + 0xeb, 0x6a, 0xe7, 0xde, 0xbf, 0x35, 0x14, 0x6b, 0xe9, 0x17, 0x42, 0xec, 0x0a, 0x6f, 0x4a, 0x5e, 0xd2, 0xc1, 0xd5, + 0xd9, 0x2c, 0xed, 0x9d, 0xef, 0xef, 0x72, 0x1e, 0xec, 0x80, 0x43, 0x81, 0x0b, 0x75, 0x79, 0x06, 0x2d, 0x08, 0xa0, + 0x2c, 0x87, 0x9c, 0x5a, 0xd0, 0x0f, 0x0d, 0x7a, 0x71, 0x5d, 0x28, 0x26, 0xb6, 0x1b, 0xb7, 0x99, 0xf2, 0x77, 0xbb, + 0x61, 0x25, 0x41, 0x01, 0x9f, 0x35, 0x14, 0x0e, 0xde, 0x10, 0xaf, 0xae, 0x77, 0x82, 0xc4, 0xd4, 0xa1, 0x73, 0x43, + 0x89, 0xb2, 0x76, 0xd5, 0x68, 0xda, 0xd7, 0xf4, 0x04, 0xc6, 0x8a, 0x36, 0x36, 0x76, 0x60, 0x3a, 0x35, 0xde, 0x87, + 0x5d, 0x67, 0x4d, 0xc6, 0x51, 0xd9, 0x07, 0x9b, 0x59, 0xff, 0x0f, 0x93, 0x96, 0xd6, 0x20, 0x17, 0x5c, 0x62, 0xb3, + 0xa9, 0xd2, 0xca, 0xa9, 0xd7, 0x6a, 0x1d, 0x3b, 0x44, 0x1c, 0x3b, 0x09, 0x14, 0x13, 0xcf, 0xa8, 0xc7, 0xb6, 0xa7, + 0xf0, 0xdd, 0x43, 0x2d, 0x76, 0x6a, 0xe4, 0x05, 0x23, 0x95, 0xe5, 0x2c, 0x57, 0x83, 0x70, 0x4b, 0xe4, 0x9f, 0x36, + 0xc1, 0x4a, 0x91, 0xc0, 0x83, 0x91, 0xba, 0x6d, 0x04, 0x84, 0xa2, 0x5b, 0x0e, 0x41, 0x77, 0x25, 0x64, 0x05, 0x15, + 0xc3, 0xa8, 0xf5, 0x1b, 0x86, 0xb2, 0x98, 0xf3, 0x52, 0x87, 0xf7, 0x2f, 0xa5, 0x10, 0xd4, 0x35, 0xf8, 0x43, 0x0f, + 0x7d, 0x62, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, + 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x33, 0x29, 0xe3, 0xc9, + 0x8f, 0x9f, 0x35, 0xc8, 0x79, 0xeb, 0xbc, 0x3c, 0x88, 0x75, 0xe4, 0x73, 0x1e, 0xcb, 0x4d, 0x61, 0x9d, 0x62, 0x7d, + 0xc6, 0x3c, 0xb0, 0x84, 0x69, 0xdc, 0x52, 0x31, 0x58, 0xae, 0x61, 0xce, 0xc4, 0x09, 0x1c, 0xf9, 0x96, 0x23, 0xa9, + 0xfb, 0x0a, 0x51, 0x75, 0x13, 0x3a, 0xf4, 0x8e, 0x17, 0xa2, 0xcf, 0x66, 0x3f, 0xff, 0x08, 0x7e, 0x8d, 0x8a, 0xde, + 0x8e, 0xbf, 0x35, 0x69, 0x7f, 0xaa, 0x3a, 0x98, 0xdc, 0xbc, 0x3f, 0x21, 0x24, 0x1f, 0xe4, 0x47, 0x78, 0x2d, 0xec, + 0x8b, 0xfd, 0x6d, 0x9d, 0xf2, 0x4c, 0xbd, 0xf1, 0x10, 0xc2, 0x17, 0xd1, 0xac, 0xc9, 0xa7, 0x52, 0x11, 0x7c, 0xab, + 0x10, 0x74, 0x7a, 0xd5, 0x91, 0x72, 0xac, 0xdd, 0x11, 0x2e, 0x8f, 0x21, 0x68, 0xf9, 0xf6, 0x64, 0x55, 0x7a, 0x87, + 0xbd, 0x62, 0xe5, 0x0d, 0xe0, 0x0a, 0xb8, 0x39, 0xd5, 0x72, 0xa7, 0xcf, 0xf9, 0x6e, 0x2f, 0xde, 0xdb, 0x8b, 0x4f, + 0x85, 0x62, 0x10, 0xca, 0x7b, 0x87, 0x4d, 0xfd, 0x55, 0x12, 0x91, 0x4d, 0xb5, 0x12, 0x7a, 0x38, 0x2b, 0xb5, 0x9a, + 0xfd, 0x53, 0xa7, 0x08, 0x78, 0x89, 0x26, 0x31, 0x55, 0x3d, 0x66, 0xdd, 0x1b, 0xd9, 0xcd, 0x1f, 0x64, 0x74, 0x39, + 0xec, 0x6a, 0x91, 0x5c, 0x29, 0xeb, 0x23, 0x7c, 0xc9, 0x0e, 0x0b, 0xcf, 0x4b, 0xa6, 0xb3, 0x8c, 0x4e, 0x60, 0x5a, + 0x83, 0x9f, 0x24, 0x71, 0x2f, 0xe8, 0xa8, 0x8b, 0xf4, 0x39, 0x94, 0xd5, 0xab, 0x21, 0x1f, 0x97, 0x27, 0x97, 0xf9, + 0xee, 0x03, 0x0a, 0x90, 0x9d, 0x38, 0xa4, 0x4f, 0x12, 0x79, 0x51, 0x5e, 0x48, 0x77, 0x59, 0xcc, 0x22, 0x17, 0x16, + 0x70, 0xc1, 0x0b, 0x04, 0x12, 0x6a, 0x7c, 0xa4, 0x5b, 0x89, 0x99, 0x66, 0xf9, 0x37, 0xc1, 0x81, 0xf7, 0x07, 0xd2, + 0x58, 0x9d, 0xf9, 0x48, 0x61, 0x74, 0x8d, 0xb2, 0x7b, 0xc4, 0x3d, 0x9b, 0x58, 0xe3, 0x30, 0x8d, 0x23, 0x15, 0x82, + 0x87, 0x7d, 0x63, 0xde, 0xf7, 0x39, 0x47, 0x40, 0xd9, 0x9b, 0x7a, 0x4f, 0x6e, 0x5a, 0x5a, 0xba, 0x21, 0x69, 0xfc, + 0xd7, 0x25, 0x17, 0xe5, 0x13, 0xc4, 0x2d, 0xd6, 0xe4, 0x7d, 0x3c, 0x82, 0x34, 0xc1, 0xda, 0x26, 0x61, 0x51, 0x02, + 0x96, 0x6c, 0x72, 0x0d, 0xf4, 0xdb, 0xd8, 0xf9, 0x3c, 0x4e, 0x59, 0x4b, 0xf9, 0xe8, 0x47, 0xcb, 0x99, 0x3e, 0x89, + 0x82, 0x0e, 0xfe, 0x17, 0xf2, 0x40, 0x0c, 0xa2, 0x7a, 0x8a, 0x59, 0x44, 0x6c, 0x10, 0x84, 0x09, 0x50, 0x65, 0xab, + 0xbc, 0xaa, 0xac, 0x14, 0xf7, 0x02, 0x11, 0xba, 0xc3, 0x58, 0x52, 0x0a, 0x80, 0x74, 0xa1, 0x8a, 0x3e, 0x4b, 0x6a, + 0x66, 0xf2, 0xcb, 0xcc, 0x16, 0xf4, 0x0a, 0xbc, 0x2c, 0xe3, 0xad, 0x17, 0xe4, 0x6d, 0x40, 0x1c, 0x2d, 0x9c, 0x2b, + 0x4c, 0x2f, 0x55, 0xbd, 0x63, 0x56, 0x45, 0x9e, 0xc7, 0x23, 0xa0, 0xc3, 0x1a, 0x65, 0x5a, 0x84, 0xad, 0xd1, 0xd2, + 0xae, 0x55, 0x1c, 0x1c, 0x9c, 0xf2, 0xbc, 0xf2, 0x5b, 0x59, 0x04, 0x29, 0x27, 0x09, 0xf2, 0x55, 0xe1, 0x2c, 0x01, + 0x69, 0x27, 0x0d, 0xaf, 0x07, 0x7c, 0x4c, 0x0d, 0x6e, 0x7b, 0xbf, 0xb5, 0x9b, 0xaf, 0x95, 0x99, 0x93, 0x5b, 0x68, + 0xd9, 0x28, 0xc6, 0x07, 0xc3, 0xe8, 0x69, 0x39, 0xfa, 0xba, 0xda, 0xac, 0x86, 0xfe, 0x65, 0x74, 0x93, 0x67, 0xcd, + 0x99, 0xa2, 0x50, 0xbe, 0x3c, 0xac, 0xc2, 0xf0, 0x87, 0xc6, 0x2a, 0x7c, 0x81, 0x35, 0xc6, 0x90, 0x34, 0xb6, 0x4d, + 0x48, 0x10, 0xd3, 0x6b, 0x06, 0xcf, 0xe3, 0x01, 0x0b, 0x64, 0x8c, 0x2f, 0xc9, 0xf3, 0xcd, 0x35, 0x7f, 0x06, 0xfe, + 0x82, 0x44, 0xd3, 0xb2, 0x8e, 0xab, 0x69, 0x57, 0xf7, 0x41, 0x4f, 0x34, 0x75, 0x29, 0xb5, 0xdb, 0x25, 0x5e, 0x9c, + 0x9f, 0x8f, 0x3f, 0x98, 0x35, 0xf7, 0x67, 0x3c, 0x31, 0x8a, 0xd0, 0xaf, 0x2f, 0x05, 0x74, 0xbe, 0x17, 0x15, 0x66, + 0xd7, 0xbd, 0xf0, 0xce, 0x50, 0xce, 0xa0, 0x34, 0xec, 0x61, 0xf1, 0xc8, 0xe9, 0x5a, 0x63, 0xd7, 0x70, 0x3f, 0x48, + 0x82, 0x7e, 0x67, 0xeb, 0x64, 0xb9, 0xc3, 0x3e, 0x42, 0x74, 0x4b, 0x9d, 0xde, 0x73, 0x65, 0x0c, 0x7d, 0xd6, 0xe9, + 0x9f, 0x27, 0xf5, 0x07, 0xd7, 0x89, 0xde, 0xd2, 0xa4, 0x0a, 0x19, 0x02, 0x52, 0x4c, 0x1d, 0xaf, 0x23, 0x28, 0xfd, + 0x4e, 0x2d, 0xe6, 0x75, 0x86, 0xf4, 0x64, 0xb4, 0x43, 0x2e, 0x92, 0xc2, 0xa3, 0x75, 0x28, 0x9f, 0x1f, 0x53, 0xc3, + 0x45, 0x09, 0xf7, 0x35, 0x80, 0x8e, 0xd2, 0x3b, 0x4d, 0xfa, 0xbf, 0x54, 0xd5, 0x37, 0x43, 0x5d, 0xf8, 0xde, 0x4d, + 0x0e, 0x9e, 0xb0, 0x0c, 0xa8, 0xd5, 0x40, 0x97, 0x3d, 0xe9, 0x88, 0xa5, 0x21, 0x7d, 0xc5, 0xc1, 0xdf, 0xc0, 0xd3, + 0xa9, 0x1d, 0x0e, 0xad, 0x3a, 0x46, 0xa3, 0xcd, 0x48, 0xb0, 0x59, 0x3c, 0x97, 0xc8, 0x75, 0xaf, 0x76, 0x41, 0xb0, + 0x1e, 0x16, 0x26, 0x5a, 0x6e, 0xfa, 0xad, 0x2c, 0xc9, 0x44, 0x1e, 0x11, 0xfa, 0x18, 0x74, 0xba, 0xa0, 0xa9, 0x84, + 0xbd, 0x90, 0x97, 0xc8, 0x84, 0x43, 0x49, 0x04, 0x87, 0x85, 0x21, 0xfe, 0x8a, 0x73, 0xc7, 0x0d, 0x01, 0x00, 0x00, + 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, + 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xb8, 0x79, 0xba, 0x8a, 0x11, 0xd0, 0x52, 0x61, 0x79, + 0xe4, 0x4c, 0xb3, 0x26, 0x0c, 0x7e, 0xfa, 0xb8, 0x52, 0xd0, 0xba, 0x7f, 0x7b, 0x83, 0xd5, 0x09, 0x92, 0x87, 0x63, + 0x98, 0xa1, 0xd2, 0x1f, 0xd0, 0xeb, 0x40, 0x2d, 0x26, 0x4a, 0x64, 0x68, 0xe8, 0x9a, 0x5d, 0x5a, 0x9c, 0x1a, 0x26, + 0x8d, 0xe0, 0x59, 0x13, 0xe3, 0x61, 0xf0, 0x77, 0xd4, 0xf7, 0x9b, 0xfd, 0x7b, 0xc8, 0xc2, 0xce, 0x35, 0x24, 0x74, + 0x78, 0x4f, 0x21, 0xdb, 0xf5, 0x53, 0x1b, 0xcb, 0x47, 0xd1, 0x2e, 0x86, 0xab, 0x6e, 0x18, 0x3f, 0x0d, 0x55, 0xfe, + 0x82, 0x35, 0x6b, 0x0a, 0xb6, 0x53, 0xa3, 0xbf, 0xe2, 0xc5, 0x13, 0x36, 0xf5, 0x1c, 0xae, 0xea, 0x41, 0x64, 0x55, + 0xf0, 0x02, 0x3e, 0xf9, 0xa5, 0xe1, 0xe3, 0xcc, 0xf0, 0x0d, 0xbc, 0x67, 0xc9, 0x4b, 0x28, 0xa4, 0x92, 0x66, 0xb6, + 0xb3, 0xbc, 0x81, 0x12, 0x24, 0x9d, 0x1e, 0x6f, 0x2b, 0x00, 0x64, 0xdb, 0xdf, 0xc2, 0xf5, 0x00, 0xb6, 0x7e, 0x21, + 0x3f, 0x9d, 0x00, 0xbd, 0xdd, 0x5a, 0x2d, 0x58, 0x64, 0x10, 0x98, 0xff, 0x52, 0x6b, 0x62, 0x7c, 0xee, 0x01, 0x66, + 0x32, 0x4f, 0xda, 0xe1, 0x52, 0xc0, 0x37, 0xb7, 0xa6, 0xbd, 0xe3, 0x37, 0x93, 0xcd, 0xd3, 0xa7, 0x4a, 0x8d, 0xf3, + 0x4e, 0x71, 0xc3, 0x10, 0xfd, 0x76, 0x0d, 0xa3, 0xce, 0xda, 0x07, 0x67, 0xde, 0x4c, 0x74, 0x00, 0xfa, 0x34, 0xa5, + 0xe7, 0x47, 0xc9, 0x12, 0x4d, 0x4d, 0xee, 0xa1, 0x2c, 0x69, 0xd4, 0x80, 0x43, 0xf8, 0xa0, 0xa1, 0xdc, 0x47, 0x1a, + 0x87, 0x94, 0xf1, 0xbb, 0x8b, 0x4f, 0xb0, 0x92, 0xf8, 0x7f, 0xe5, 0x3e, 0x9b, 0xc6, 0xc8, 0x9c, 0x6e, 0xd8, 0x3a, + 0xe1, 0xd5, 0x64, 0x69, 0x33, 0x33, 0xbe, 0x61, 0xdd, 0xad, 0x5d, 0xfc, 0x44, 0x7b, 0x46, 0x90, 0xad, 0x52, 0x67, + 0xa3, 0x66, 0x20, 0xf0, 0xc8, 0xa6, 0x6c, 0x9f, 0xd4, 0xbe, 0x5b, 0xb9, 0x93, 0xcc, 0x6d, 0x38, 0x2f, 0x05, 0xac, + 0x52, 0x45, 0x59, 0x84, 0x55, 0xd4, 0x88, 0xaf, 0x52, 0xe6, 0x9b, 0xb9, 0x26, 0xaa, 0x72, 0xd4, 0x5c, 0x57, 0x8e, + 0xac, 0x7a, 0x8e, 0x71, 0x98, 0xd3, 0xe8, 0x1a, 0xbc, 0x46, 0xcd, 0x89, 0x9a, 0x72, 0x89, 0xfd, 0x89, 0xfb, 0xfe, + 0x53, 0x8a, 0x72, 0x1b, 0x92, 0xab, 0x09, 0x92, 0x52, 0xcb, 0x0a, 0x8d, 0x3a, 0x2f, 0x8d, 0xf8, 0xe2, 0x16, 0x33, + 0x2d, 0xbb, 0x9c, 0x0e, 0x8d, 0x05, 0x7c, 0xa6, 0x27, 0xad, 0xff, 0x33, 0xed, 0x14, 0xf3, 0xf5, 0x5d, 0xe3, 0x75, + 0x3e, 0x86, 0xf3, 0xbe, 0xa0, 0x62, 0xe7, 0x3b, 0x98, 0x9d, 0xad, 0xef, 0xfc, 0x96, 0x63, 0xc4, 0x3d, 0xde, 0xdd, + 0x0c, 0xfb, 0x33, 0x67, 0x48, 0x5b, 0x36, 0x52, 0xe5, 0x9f, 0xff, 0x0e, 0xb3, 0x06, 0x7b, 0x9a, 0x56, 0x83, 0xe0, + 0x42, 0x97, 0xe0, 0x3f, 0x12, 0x35, 0xb6, 0xdd, 0xe8, 0x40, 0x8c, 0x48, 0x5e, 0x8b, 0xdf, 0x59, 0x49, 0x7a, 0xcf, + 0xe9, 0x59, 0xd2, 0xbd, 0xf2, 0xab, 0x00, 0x13, 0xdc, 0xe6, 0xdb, 0xa4, 0x44, 0x6f, 0xad, 0x31, 0x8e, 0x87, 0x0a, + 0x9c, 0x17, 0xa8, 0x2d, 0xe1, 0x65, 0x7f, 0xf8, 0x86, 0x1d, 0x25, 0x45, 0x5f, 0x8b, 0x57, 0x1c, 0x2e, 0x51, 0x60, + 0xda, 0x6a, 0x64, 0xed, 0x33, 0x23, 0x63, 0xde, 0xce, 0x79, 0x0d, 0x16, 0x21, 0x97, 0xc0, 0xea, 0xdb, 0x4a, 0xc3, + 0x77, 0xc7, 0x90, 0xc1, 0xdc, 0xc3, 0x5d, 0x9b, 0xf1, 0xc1, 0xb3, 0x54, 0x6a, 0x13, 0x51, 0xa9, 0x1e, 0x88, 0x51, + 0x3c, 0x69, 0xa9, 0x4b, 0x5a, 0x21, 0xe4, 0x35, 0x7c, 0xbd, 0x3a, 0x3c, 0x4d, 0x76, 0x5f, 0x2d, 0xa8, 0xb6, 0x61, + 0x61, 0x64, 0xd8, 0xd1, 0x78, 0x81, 0x78, 0x52, 0x4e, 0xfa, 0xc7, 0x0f, 0xea, 0xa5, 0xbb, 0xdb, 0xc6, 0xe6, 0xa0, + 0xe0, 0x04, 0xc6, 0xe1, 0x20, 0x27, 0x1a, 0xe1, 0xc8, 0x8f, 0xc4, 0x24, 0x3e, 0x8a, 0x6c, 0x36, 0x15, 0x47, 0xb0, + 0x03, 0x27, 0x4d, 0x1c, 0x46, 0xae, 0xc4, 0x3e, 0x44, 0x4f, 0xd4, 0xbf, 0xd2, 0x28, 0x23, 0xcb, 0x50, 0xbb, 0x1c, + 0x31, 0x79, 0x0a, 0x5c, 0x10, 0x8b, 0x70, 0x56, 0xe8, 0xcc, 0x21, 0xda, 0x92, 0xf9, 0x1c, 0x54, 0x80, 0xd6, 0x86, + 0x9a, 0xd5, 0x9a, 0x72, 0xe5, 0x52, 0xd2, 0x80, 0x27, 0xf3, 0xc2, 0xf4, 0xb2, 0x39, 0x0a, 0x70, 0x2e, 0x55, 0xa2, + 0x7a, 0x56, 0x6a, 0x1e, 0xca, 0xb6, 0x0f, 0x95, 0x24, 0x52, 0x9c, 0x0c, 0x18, 0xa1, 0xa3, 0x5b, 0x2c, 0x0d, 0xbf, + 0x9c, 0x60, 0x79, 0xfc, 0xb7, 0x96, 0x4c, 0xda, 0xa2, 0x8d, 0xf1, 0xf6, 0xc4, 0xbf, 0xab, 0x23, 0x4e, 0x4d, 0x95, + 0xd0, 0x82, 0xf1, 0x6f, 0x50, 0x8c, 0x9d, 0x73, 0x0e, 0xbe, 0x65, 0x94, 0x6e, 0x6a, 0x3b, 0xab, 0xc2, 0x7b, 0x7d, + 0xd5, 0x36, 0xf9, 0xde, 0x8b, 0x01, 0xd5, 0x01, 0x66, 0x8c, 0xe7, 0x32, 0xa5, 0x42, 0xfc, 0xd7, 0x5d, 0xbb, 0xe0, + 0x0e, 0xf7, 0xfd, 0xc1, 0xd5, 0x40, 0x5a, 0x2e, 0xa4, 0x97, 0x16, 0x30, 0xda, 0xbb, 0x97, 0x24, 0x60, 0x7f, 0x04, + 0xd6, 0xab, 0x61, 0xcc, 0x10, 0x65, 0x3e, 0x80, 0x94, 0xc5, 0x18, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, + 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, + 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xe2, 0xf3, 0xbc, 0x48, 0x67, 0x4e, 0x9d, 0xf1, 0x44, 0x6b, 0x64, 0x78, 0xc3, 0xd4, + 0xb5, 0x9a, 0xec, 0x61, 0xfc, 0x1b, 0xe5, 0x54, 0xc5, 0x2e, 0xc3, 0x6b, 0xb9, 0x9a, 0xb9, 0xa4, 0xed, 0x2a, 0x2f, + 0xd5, 0x44, 0x72, 0x1e, 0xbc, 0x5d, 0xca, 0xdc, 0x18, 0xba, 0xae, 0xc5, 0x51, 0x00, 0xd3, 0xc2, 0x0f, 0x62, 0x22, + 0x31, 0xa7, 0x60, 0x9c, 0xda, 0xe8, 0x6f, 0x85, 0x5a, 0x53, 0xe7, 0x00, 0xd6, 0x89, 0xfa, 0xd0, 0x0c, 0x5a, 0xcf, + 0x05, 0x41, 0x17, 0x35, 0x96, 0x3f, 0xcf, 0x42, 0xce, 0xd2, 0xea, 0xa4, 0x74, 0xdc, 0x0e, 0x11, 0x63, 0xab, 0xad, + 0x23, 0xf8, 0xba, 0x8f, 0x93, 0x69, 0xe3, 0xc0, 0xd9, 0x7e, 0x62, 0xa5, 0xa3, 0x0e, 0x68, 0xe5, 0x06, 0x62, 0x5f, + 0x80, 0xb1, 0x75, 0x1f, 0x5b, 0x6f, 0x82, 0xa5, 0x1a, 0xa0, 0xc6, 0x88, 0x4f, 0x75, 0x63, 0xb7, 0xa7, 0x65, 0x4a, + 0x78, 0x55, 0xee, 0xbc, 0xf4, 0xea, 0x65, 0x90, 0x5b, 0x8e, 0xe7, 0xa0, 0xd8, 0x0e, 0xc7, 0x7d, 0xa0, 0x41, 0x25, + 0xd5, 0x12, 0xc2, 0x03, 0xf9, 0x13, 0x7c, 0x07, 0x27, 0x79, 0x1f, 0x15, 0x12, 0x25, 0xc6, 0x51, 0xe5, 0xcc, 0xcd, + 0x92, 0xdc, 0xb6, 0x6f, 0x65, 0x17, 0x31, 0x3f, 0x1b, 0x45, 0x72, 0x0c, 0x8f, 0x0d, 0xd1, 0x74, 0x0f, 0x49, 0x83, + 0x2b, 0xbc, 0x55, 0xd2, 0x95, 0x4a, 0x2a, 0x1c, 0x90, 0x97, 0x96, 0x89, 0xb6, 0x94, 0x8c, 0x63, 0xa0, 0xdb, 0x8c, + 0x91, 0x33, 0x8d, 0xdd, 0xd3, 0x27, 0x96, 0x7a, 0x06, 0x92, 0x7c, 0xaa, 0xc3, 0x0a, 0x07, 0x9b, 0xfe, 0x3d, 0x17, + 0x54, 0x8d, 0xbc, 0xe8, 0x7f, 0x79, 0x74, 0xfe, 0x0c, 0x9e, 0x8d, 0xf8, 0xfa, 0xf3, 0xa4, 0xde, 0xdd, 0xe4, 0x3c, + 0x9c, 0x0c, 0xb4, 0x39, 0x9b, 0x1c, 0x2c, 0x39, 0x52, 0x9d, 0x52, 0xc6, 0x37, 0x47, 0x61, 0x5d, 0x90, 0xf9, 0x78, + 0x22, 0xe0, 0xfe, 0x12, 0xc0, 0xd1, 0x93, 0xa0, 0x00, 0x2e, 0x63, 0x28, 0x07, 0x30, 0x04, 0xaa, 0xb8, 0xaa, 0xe6, + 0x1f, 0x81, 0xe7, 0x8a, 0xeb, 0xd6, 0x8e, 0x1b, 0x14, 0xc9, 0x66, 0x2f, 0xec, 0xb9, 0x41, 0xc0, 0x04, 0xee, 0xc2, + 0x42, 0x62, 0x41, 0x5a, 0xd0, 0xb9, 0x28, 0x7a, 0xf8, 0x9f, 0xbd, 0x39, 0x91, 0xed, 0xa5, 0x87, 0x5a, 0x76, 0x40, + 0xe5, 0x11, 0xc3, 0x6a, 0x01, 0x3d, 0x79, 0x5e, 0xe3, 0xde, 0x1c, 0x42, 0xc0, 0x53, 0xf3, 0x49, 0x17, 0xaf, 0x14, + 0x8f, 0xfd, 0xea, 0x75, 0x18, 0xc1, 0x5d, 0x67, 0xe3, 0xfa, 0xa4, 0xb2, 0xee, 0xcb, 0x1c, 0x47, 0xd7, 0x68, 0x84, + 0x11, 0x00, 0xda, 0x56, 0xc5, 0xd2, 0x25, 0x43, 0x2b, 0x29, 0x12, 0x2c, 0xe8, 0x33, 0x59, 0xee, 0x07, 0x55, 0x55, + 0x98, 0xf6, 0xb4, 0x2e, 0xec, 0x8c, 0xb9, 0x26, 0x04, 0xbd, 0xef, 0x27, 0x86, 0x72, 0x2b, 0x0d, 0x82, 0x85, 0x85, + 0x51, 0x36, 0x95, 0x86, 0x55, 0x22, 0x0c, 0xe5, 0x14, 0xb9, 0x67, 0x46, 0x5d, 0xa7, 0xd3, 0x13, 0xab, 0x30, 0x61, + 0x32, 0xb2, 0x0d, 0x9c, 0x3e, 0x05, 0x4b, 0x06, 0x73, 0x83, 0x78, 0x2e, 0x63, 0xae, 0xaf, 0x2e, 0x4a, 0xe3, 0x35, + 0x39, 0x4f, 0xbb, 0x67, 0x7b, 0xa9, 0x0c, 0x68, 0xab, 0xbb, 0x1b, 0x21, 0x30, 0x82, 0x1f, 0x72, 0x5c, 0xfb, 0x2e, + 0x45, 0xcc, 0x3c, 0xad, 0x91, 0xe2, 0xd6, 0xf1, 0xae, 0x9a, 0x01, 0x0a, 0x31, 0x5a, 0x1e, 0x75, 0x03, 0xe5, 0xd4, + 0xc3, 0x0d, 0xda, 0x12, 0x50, 0x5c, 0x67, 0x7b, 0x42, 0x5a, 0x46, 0xd0, 0xc1, 0xb0, 0x1c, 0x9d, 0x9a, 0xeb, 0xb9, + 0x7d, 0x41, 0xa2, 0xfc, 0xdd, 0xf3, 0x3a, 0x3a, 0x38, 0x9d, 0x62, 0xdd, 0x3a, 0xf0, 0x6b, 0xad, 0x85, 0x79, 0x73, + 0x4e, 0x3d, 0x9b, 0x1e, 0x4c, 0x02, 0x6b, 0x7e, 0x5d, 0x5c, 0xa9, 0x25, 0xe4, 0x57, 0x92, 0xbf, 0x29, 0x27, 0x93, + 0x6f, 0x16, 0x48, 0xfb, 0x37, 0x31, 0xa7, 0x2f, 0x79, 0x95, 0x0f, 0xd6, 0x44, 0x74, 0x94, 0xbd, 0x6b, 0xc0, 0x03, + 0x78, 0xe5, 0x61, 0xf6, 0x3b, 0x21, 0xf7, 0x0f, 0x67, 0x80, 0xc0, 0x16, 0xde, 0xc8, 0x94, 0xab, 0x2f, 0x31, 0xde, + 0x2e, 0x2e, 0x0c, 0x43, 0x15, 0x56, 0xbc, 0xf2, 0xa2, 0xf4, 0x0d, 0x5b, 0xa5, 0xd1, 0x23, 0xe5, 0xcc, 0x64, 0xe4, + 0x2e, 0x48, 0xe8, 0x43, 0x3a, 0x5f, 0x59, 0x91, 0x63, 0xe7, 0xc8, 0x86, 0x5d, 0x2f, 0x29, 0x03, 0x8a, 0xef, 0xfc, + 0xa7, 0x53, 0xd2, 0xb0, 0x06, 0x97, 0xfd, 0x55, 0xa6, 0x3d, 0x4a, 0x98, 0x7e, 0x6d, 0x2e, 0x24, 0x74, 0xb1, 0x65, + 0x74, 0x20, 0x1a, 0x9c, 0x46, 0xcb, 0x63, 0x07, 0x4c, 0x49, 0xdf, 0x5c, 0x2a, 0x2c, 0x14, 0xc0, 0x8a, 0x3b, 0xe5, + 0xae, 0x7c, 0x46, 0x51, 0x12, 0x94, 0x7a, 0xd6, 0x27, 0x32, 0xc6, 0x73, 0xd4, 0xeb, 0xba, 0xf3, 0x41, 0x5f, 0xde, + 0x37, 0x69, 0x4c, 0x75, 0xee, 0xee, 0xfe, 0x06, 0x9c, 0x95, 0x0a, 0x6c, 0x0a, 0x04, 0x89, 0xd1, 0xc2, 0x70, 0xc0, + 0x66, 0xd9, 0x2a, 0x49, 0xcf, 0xbb, 0x70, 0x26, 0x43, 0x84, 0x93, 0x07, 0xe1, 0x4d, 0x67, 0xf8, 0xfb, 0x5b, 0xe5, + 0x35, 0x48, 0xa5, 0xec, 0x0a, 0x05, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, + 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, + 0x9f, 0xa3, 0x30, 0xec, 0x75, 0xf4, 0x6c, 0xc4, 0x8c, 0xf1, 0xd4, 0xeb, 0xc3, 0x18, 0xc4, 0x10, 0xd9, 0xc1, 0xa2, + 0xcc, 0x92, 0xae, 0xdc, 0x35, 0x43, 0x7f, 0x9c, 0x51, 0x05, 0x0c, 0x71, 0x54, 0xcd, 0xe6, 0x1c, 0x9f, 0x71, 0xb8, + 0x6a, 0x8d, 0x44, 0x1c, 0x4b, 0x04, 0xe5, 0xff, 0x57, 0xb4, 0xb6, 0x32, 0x7b, 0x04, 0x69, 0x83, 0x6e, 0x5f, 0x6b, + 0xce, 0xa5, 0xf3, 0xa6, 0x2d, 0x1f, 0x02, 0x4e, 0xfa, 0xb9, 0x1f, 0x7c, 0x4b, 0xc5, 0x2d, 0x4e, 0xa4, 0x44, 0xa1, + 0xbd, 0x96, 0x96, 0x94, 0xf2, 0x9f, 0x01, 0x28, 0xc3, 0x11, 0xdf, 0x34, 0xb1, 0x0e, 0x9e, 0xe3, 0x6f, 0xa7, 0xaa, + 0x02, 0xed, 0xa8, 0xc9, 0x41, 0x35, 0xd9, 0xb5, 0x4a, 0x83, 0xdd, 0x73, 0x28, 0x60, 0xe2, 0x09, 0xb4, 0xfe, 0x1e, + 0x1e, 0xb7, 0x00, 0xa3, 0x09, 0x44, 0x3c, 0x9d, 0x1d, 0x53, 0x77, 0x73, 0xbb, 0x61, 0xca, 0xa8, 0xcc, 0xad, 0x60, + 0x1c, 0x12, 0xf9, 0x6f, 0x8d, 0x1d, 0xb5, 0xfc, 0x23, 0x1d, 0x58, 0x29, 0x30, 0xcd, 0x9e, 0xc9, 0x82, 0xac, 0x7d, + 0x39, 0x5c, 0xcf, 0xb3, 0xd8, 0x1f, 0x73, 0x1a, 0xa9, 0xe0, 0x2b, 0x78, 0x58, 0x89, 0x66, 0x9b, 0xbe, 0xdd, 0x9b, + 0xbf, 0x6d, 0xeb, 0xd0, 0x18, 0x0b, 0xa2, 0x33, 0x31, 0x7d, 0xfd, 0xb8, 0xc5, 0x30, 0xcf, 0x23, 0xb1, 0xc6, 0x03, + 0x7b, 0x08, 0xb9, 0x61, 0x7c, 0xee, 0xad, 0xc1, 0x33, 0xc3, 0x79, 0x2d, 0xad, 0x63, 0x0a, 0x6d, 0xab, 0xd5, 0xa5, + 0x2f, 0x42, 0x6f, 0x86, 0xaa, 0xc7, 0x95, 0x8a, 0x78, 0x97, 0x40, 0x9d, 0x72, 0x2f, 0x52, 0x75, 0x29, 0x2e, 0xd0, + 0x42, 0x02, 0x93, 0x58, 0x81, 0xf6, 0x62, 0x9a, 0x9d, 0xc0, 0xb8, 0x35, 0x16, 0xde, 0x20, 0xe9, 0x62, 0x65, 0x80, + 0xb5, 0x1e, 0xe8, 0x1e, 0xa3, 0x32, 0x1e, 0x3a, 0x72, 0xa1, 0x80, 0xd3, 0x68, 0xa7, 0x76, 0x6c, 0xd3, 0x1f, 0x76, + 0x44, 0x80, 0x68, 0x62, 0x6a, 0x6d, 0xad, 0xc1, 0xec, 0x8a, 0x38, 0x3a, 0xd6, 0xc2, 0xc9, 0x74, 0x0d, 0x66, 0xd7, + 0x3a, 0x99, 0x14, 0xe6, 0xa2, 0x4c, 0xb5, 0x88, 0x16, 0x12, 0x77, 0xdb, 0xc0, 0xaa, 0x69, 0xdc, 0xf0, 0x5e, 0x27, + 0x63, 0x25, 0x07, 0x1b, 0xf5, 0x56, 0x55, 0x0e, 0x71, 0x46, 0x5f, 0xf6, 0xc3, 0x1a, 0x17, 0x14, 0xe3, 0x76, 0xc2, + 0x68, 0x56, 0x36, 0x29, 0x4a, 0x0e, 0x58, 0x97, 0xb3, 0xe7, 0x4f, 0x7b, 0x92, 0x21, 0x24, 0xdd, 0xe1, 0xde, 0xd3, + 0x0d, 0x85, 0x09, 0x97, 0xe8, 0xeb, 0xbd, 0xbe, 0x51, 0x1a, 0x9e, 0xb6, 0x7d, 0xd2, 0xb0, 0xf4, 0x6b, 0x60, 0x04, + 0xa3, 0xbd, 0x8c, 0x98, 0xfa, 0x8c, 0x83, 0x2f, 0x22, 0x58, 0xa5, 0x38, 0xde, 0x23, 0xdd, 0x89, 0x42, 0x26, 0x5f, + 0x25, 0x18, 0xae, 0x59, 0x6c, 0xaf, 0xbe, 0xd1, 0xc5, 0x5f, 0xf6, 0x68, 0x76, 0xe9, 0x33, 0xed, 0x03, 0xcb, 0x1e, + 0x55, 0x2e, 0x95, 0x7f, 0xe4, 0xc8, 0xa9, 0x36, 0x2e, 0x30, 0x02, 0xf1, 0xf2, 0x6b, 0x0b, 0x3f, 0x43, 0x1c, 0x7e, + 0x2b, 0x23, 0xfa, 0x96, 0xe9, 0xb8, 0xb1, 0x22, 0x44, 0xd9, 0xb5, 0x26, 0xd4, 0x6c, 0x6a, 0xa2, 0x11, 0xb9, 0x3e, + 0xe3, 0x11, 0xe4, 0xf6, 0x8d, 0x1b, 0x16, 0xa6, 0x2e, 0x1a, 0x40, 0x32, 0x8c, 0x72, 0x48, 0xe4, 0x5c, 0x8e, 0x95, + 0x5c, 0x78, 0xfa, 0x3e, 0xfe, 0x64, 0x3e, 0xf8, 0x1e, 0xc8, 0x86, 0x43, 0x76, 0xa1, 0xb7, 0xa2, 0x25, 0x60, 0xff, + 0xf0, 0xcc, 0xc5, 0x13, 0x67, 0x37, 0x67, 0x3c, 0xd7, 0x54, 0x84, 0xc4, 0x8d, 0x59, 0x8a, 0x62, 0x19, 0x1e, 0x59, + 0x94, 0x2b, 0x44, 0xb8, 0x79, 0x2d, 0x07, 0x72, 0x05, 0xe2, 0x76, 0xba, 0x77, 0x0d, 0xec, 0xc1, 0xf0, 0x24, 0xf4, + 0x27, 0xe3, 0xda, 0x4f, 0xcd, 0xa5, 0xe8, 0x96, 0x17, 0xc9, 0x38, 0xad, 0xe0, 0x7d, 0xed, 0x2e, 0xa5, 0xe5, 0x02, + 0x6b, 0x75, 0x5d, 0x80, 0x28, 0x8c, 0x42, 0xeb, 0x71, 0x73, 0x83, 0x5f, 0x53, 0x66, 0xe6, 0xbe, 0xfd, 0xf8, 0x42, + 0xd1, 0xce, 0x2d, 0x4a, 0x4c, 0xc2, 0xdc, 0xce, 0x0e, 0x3a, 0x95, 0x32, 0x6c, 0x89, 0x48, 0x86, 0x97, 0xf6, 0xc7, + 0x08, 0xb8, 0x0c, 0x03, 0x76, 0x6a, 0xce, 0xd6, 0x8b, 0x9d, 0xa4, 0x63, 0xe5, 0x1f, 0x69, 0xed, 0x50, 0x57, 0xd9, + 0x38, 0x9b, 0xa2, 0x1f, 0x64, 0x0c, 0xbe, 0x0d, 0x0a, 0xe6, 0xe5, 0x9d, 0x9b, 0x53, 0x07, 0x3f, 0xcf, 0xf9, 0x72, + 0x16, 0x58, 0x20, 0x3d, 0xbd, 0xa2, 0xc6, 0x92, 0xfa, 0x9f, 0xe4, 0x6b, 0x7f, 0x7c, 0xd4, 0x11, 0x2a, 0x8e, 0x4c, + 0xd3, 0x92, 0x5d, 0xd4, 0x9c, 0x06, 0xd4, 0xc6, 0xda, 0xae, 0x2d, 0x15, 0x50, 0xfa, 0x8e, 0xe6, 0x1c, 0x06, 0xc1, + 0x34, 0x74, 0x98, 0xd0, 0xa6, 0xee, 0x5b, 0xe4, 0x4c, 0x91, 0x42, 0x93, 0xcb, 0x4a, 0x3f, 0xfb, 0x68, 0x85, 0x7b, + 0x54, 0x96, 0xce, 0xa6, 0xc7, 0x2b, 0x40, 0xee, 0x93, 0x1c, 0x21, 0x06, 0x20, 0x03, 0x1b, 0x97, 0xc9, 0xce, 0x80, + 0xcc, 0xb3, 0xab, 0x17, 0xd7, 0x76, 0x5d, 0x1c, 0xe5, 0xe3, 0xc6, 0xa9, 0xf1, 0xa2, 0xc9, 0x7e, 0xcc, 0x40, 0x67, + 0x14, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, + 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x42, 0x76, 0xb1, 0x75, 0x91, + 0x09, 0x6b, 0x5e, 0xc2, 0x65, 0x69, 0xce, 0xae, 0x0d, 0x7f, 0x1d, 0xaf, 0x26, 0x34, 0x8b, 0xa1, 0x87, 0x23, 0x41, + 0xf4, 0xd4, 0xbc, 0x48, 0x21, 0xd6, 0xd6, 0x62, 0x76, 0xef, 0xf7, 0x62, 0x6e, 0xf0, 0x67, 0x30, 0xb9, 0x58, 0xee, + 0x80, 0xff, 0x1d, 0x4f, 0x4b, 0xa9, 0x66, 0xd8, 0x19, 0x1e, 0x19, 0xae, 0xf2, 0x5c, 0x89, 0x99, 0xf3, 0xb3, 0xe2, + 0x7b, 0x0d, 0xc6, 0x4f, 0xee, 0xbe, 0x73, 0x08, 0xe9, 0x05, 0x3f, 0x2e, 0x9a, 0xab, 0x6d, 0x24, 0x53, 0x3a, 0x63, + 0xa8, 0xc4, 0x29, 0x7b, 0xe6, 0xc4, 0xe2, 0x55, 0xb8, 0xec, 0x81, 0xfc, 0xad, 0x3f, 0x6e, 0x6b, 0xae, 0x66, 0xc3, + 0x4b, 0x09, 0x95, 0xbe, 0x4c, 0x6f, 0x66, 0x84, 0x9c, 0xcb, 0xb1, 0xa2, 0x44, 0xca, 0xe9, 0x11, 0x5b, 0x50, 0x3a, + 0x54, 0x3a, 0xa2, 0x88, 0xc5, 0xef, 0xf6, 0xa2, 0x48, 0xc9, 0xda, 0x52, 0x05, 0x0a, 0xe6, 0xd1, 0xba, 0xf7, 0x07, + 0x2b, 0xc6, 0x67, 0x55, 0xca, 0xed, 0x03, 0x61, 0x5c, 0xf8, 0x07, 0x82, 0xbf, 0xa0, 0x11, 0x9a, 0x73, 0x35, 0xa9, + 0x86, 0x88, 0x01, 0xed, 0x1b, 0x63, 0x18, 0x49, 0x12, 0x08, 0x6e, 0x0c, 0x82, 0x9c, 0x1e, 0xfa, 0x81, 0x96, 0xf5, + 0x5a, 0x2c, 0x07, 0xc5, 0x59, 0xd3, 0x47, 0xf5, 0xe3, 0x10, 0x73, 0x9d, 0x76, 0x0d, 0xaa, 0x59, 0x7d, 0x74, 0xc5, + 0x49, 0xfb, 0x81, 0x98, 0xb1, 0x90, 0x9f, 0xc6, 0xda, 0x37, 0xaf, 0xac, 0xeb, 0x49, 0xe6, 0xd6, 0x38, 0x8b, 0x3d, + 0x6b, 0xb8, 0xc0, 0xd5, 0x56, 0x18, 0x58, 0xa1, 0x15, 0x5f, 0x9a, 0x39, 0x21, 0x26, 0xeb, 0x33, 0x4d, 0x11, 0x92, + 0xec, 0x5a, 0x1d, 0x9e, 0x92, 0x98, 0x24, 0x14, 0x07, 0x89, 0xe6, 0xf8, 0xc9, 0xa1, 0x30, 0x8e, 0xf8, 0x27, 0x35, + 0xc3, 0x6a, 0x23, 0x4b, 0xec, 0x18, 0x7d, 0x6f, 0xe5, 0x4b, 0xdd, 0x8c, 0xed, 0xd4, 0xbc, 0x09, 0x23, 0x11, 0x63, + 0x71, 0x58, 0xa7, 0x25, 0x22, 0xa6, 0xaf, 0x95, 0xb8, 0x8b, 0x74, 0x6b, 0xa8, 0x06, 0x7f, 0x4f, 0x14, 0x02, 0x2a, + 0x76, 0x49, 0xe6, 0x9e, 0x51, 0x53, 0xdd, 0x0e, 0xb8, 0x08, 0xa1, 0x0c, 0xef, 0x93, 0x6f, 0x18, 0x31, 0x97, 0xa6, + 0x31, 0x8a, 0x79, 0x4d, 0xb4, 0xf4, 0xac, 0x93, 0x25, 0x71, 0x6f, 0x1c, 0x47, 0x61, 0x7c, 0xdd, 0x8a, 0x24, 0xac, + 0x60, 0xed, 0xe1, 0x8c, 0xbc, 0xe0, 0xf7, 0xa2, 0xc4, 0x7e, 0xcb, 0x74, 0x50, 0x50, 0x03, 0xa2, 0x12, 0x13, 0x38, + 0x39, 0x09, 0x7f, 0x1a, 0x0d, 0x29, 0x64, 0xb9, 0x43, 0xd6, 0xe2, 0x6e, 0x34, 0xd2, 0x61, 0xb6, 0x68, 0x3a, 0x0a, + 0x9d, 0xe7, 0xcc, 0xcf, 0x57, 0xc0, 0xa0, 0x95, 0xe6, 0xe4, 0x4e, 0x85, 0xfe, 0xbe, 0xd0, 0xff, 0xa5, 0x40, 0xa9, + 0x76, 0x16, 0x72, 0x7e, 0x93, 0x1c, 0x59, 0xbd, 0x7d, 0xd7, 0x72, 0x1e, 0xc2, 0x6b, 0x06, 0x3d, 0x85, 0x64, 0xb1, + 0xd4, 0x39, 0x1a, 0x63, 0x1d, 0xad, 0x66, 0x76, 0x45, 0xa3, 0x26, 0x18, 0xa7, 0xf0, 0x65, 0x72, 0x7d, 0x45, 0x39, + 0xeb, 0xe1, 0xf4, 0xc4, 0xe9, 0xd0, 0xbf, 0x2e, 0xe4, 0x1f, 0x0f, 0x41, 0x81, 0x4d, 0xbb, 0x38, 0xdb, 0x2c, 0x8f, + 0xfa, 0x4e, 0x20, 0xab, 0x08, 0x10, 0x13, 0x96, 0x79, 0x90, 0x43, 0x93, 0x7f, 0x22, 0x94, 0xe5, 0x68, 0xd3, 0xc7, + 0x4a, 0x5c, 0x7d, 0x83, 0x49, 0x59, 0xb4, 0xa0, 0x81, 0xa2, 0x23, 0xe2, 0xa2, 0x32, 0x4f, 0x1c, 0x5f, 0x46, 0x19, + 0x5a, 0xd5, 0x2a, 0x87, 0x3b, 0xe0, 0xe8, 0xec, 0x8b, 0x76, 0x66, 0x52, 0x02, 0x70, 0x30, 0xcf, 0x51, 0x3e, 0x5d, + 0xb8, 0x72, 0xfd, 0x13, 0x5a, 0x74, 0xa9, 0x93, 0xa5, 0xc0, 0x77, 0x47, 0x68, 0x6b, 0x7f, 0x93, 0x56, 0x34, 0xe5, + 0xc2, 0x0c, 0xd9, 0x7f, 0xa3, 0x15, 0x2e, 0x11, 0x73, 0x86, 0x88, 0x1c, 0xa8, 0x5e, 0x37, 0xd7, 0xff, 0xb2, 0xf9, + 0x51, 0xee, 0x7b, 0x7e, 0x10, 0x70, 0x05, 0x99, 0xc6, 0xc6, 0x36, 0x8d, 0xf0, 0x50, 0x44, 0x22, 0xa7, 0xc7, 0x7f, + 0x77, 0x12, 0x5b, 0x65, 0xa8, 0x37, 0x92, 0x39, 0x80, 0xcc, 0x34, 0x3c, 0x6a, 0xac, 0x11, 0xce, 0xf7, 0x2c, 0xde, + 0x24, 0x80, 0x81, 0x8e, 0x19, 0x56, 0x1f, 0xaa, 0xeb, 0x77, 0xe1, 0x04, 0xc6, 0x37, 0x07, 0x92, 0xe3, 0xd2, 0x51, + 0xae, 0x9a, 0x83, 0xba, 0x84, 0x2e, 0x43, 0x8a, 0xff, 0x73, 0x1e, 0x89, 0x3a, 0x2d, 0x29, 0x49, 0x98, 0xc5, 0xca, + 0xe3, 0x91, 0x75, 0xfb, 0xba, 0x86, 0x64, 0xf7, 0x4e, 0x57, 0x67, 0x0c, 0x7f, 0x77, 0x86, 0xc5, 0xf0, 0x7c, 0x99, + 0xc6, 0xf1, 0x62, 0x50, 0x1a, 0x31, 0x48, 0x48, 0x45, 0xcb, 0xb4, 0xdc, 0xf0, 0xa3, 0x1e, 0xea, 0x79, 0xfd, 0x2f, + 0x52, 0x5e, 0x7f, 0xfd, 0x23, 0xee, 0xb4, 0x87, 0xe9, 0x4b, 0xf8, 0x23, 0x6a, 0xfc, 0x5b, 0x55, 0xd6, 0x44, 0xbc, + 0xe9, 0x29, 0x97, 0x89, 0x67, 0xb4, 0xaa, 0xb9, 0xfe, 0xbb, 0x80, 0x00, 0x9f, 0x30, 0x3b, 0x07, 0x9f, 0xa1, 0x80, + 0x3d, 0x4c, 0x33, 0x08, 0xff, 0xc8, 0xa5, 0x82, 0x7f, 0x56, 0x52, 0x1f, 0xde, 0x71, 0x39, 0x01, 0x00, 0x00, 0xc0, + 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, + 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xdd, 0x00, 0x03, 0x70, 0x82, 0x71, 0x6c, 0x13, 0x74, 0x14, + 0x36, 0x5a, 0xfc, 0x26, 0xfa, 0x80, 0xd7, 0x75, 0xdf, 0x1c, 0xc3, 0x99, 0x50, 0xe1, 0x9a, 0xcc, 0xdf, 0x2b, 0xcf, + 0x00, 0xf1, 0x42, 0x42, 0x12, 0xcd, 0x1f, 0xc8, 0xf1, 0x05, 0x8a, 0x14, 0x96, 0x8d, 0x74, 0xac, 0xd1, 0x4b, 0xaa, + 0x4d, 0xd3, 0x49, 0xb1, 0x85, 0xe4, 0xe6, 0x0e, 0x71, 0xf5, 0x6b, 0x93, 0xa0, 0xa1, 0xb9, 0x67, 0x7a, 0x02, 0xae, + 0x28, 0x3f, 0xab, 0x1e, 0x02, 0x56, 0x67, 0x66, 0x33, 0xe9, 0xbc, 0xa2, 0xf0, 0xa3, 0xf8, 0xb8, 0x3c, 0xdc, 0x31, + 0xf7, 0xa4, 0x06, 0xed, 0x76, 0xd9, 0x35, 0x89, 0x86, 0x00, 0x0d, 0x58, 0xac, 0x32, 0xbe, 0x2d, 0xff, 0xb9, 0x31, + 0x2e, 0x44, 0x97, 0x59, 0x35, 0x16, 0x39, 0x26, 0x12, 0x6a, 0x27, 0x9a, 0x15, 0x44, 0x1b, 0x5e, 0x0d, 0xae, 0xbc, + 0x32, 0x91, 0xe0, 0x44, 0xbd, 0x95, 0xb3, 0x5c, 0x5a, 0x07, 0xfd, 0x59, 0xcf, 0x10, 0x9e, 0x26, 0xac, 0xdd, 0x80, + 0x86, 0x60, 0xd7, 0x80, 0x98, 0x78, 0xc8, 0x6d, 0x68, 0xe9, 0xd3, 0x9b, 0x29, 0x27, 0xfb, 0x81, 0x73, 0x3c, 0x6e, + 0x23, 0xc0, 0x21, 0xb0, 0xd5, 0x31, 0x53, 0x8f, 0x0f, 0xf0, 0x76, 0x7d, 0x4f, 0xf0, 0x70, 0x37, 0x38, 0xba, 0xa7, + 0x27, 0x3f, 0x0f, 0x29, 0x9d, 0x86, 0x28, 0xe4, 0x2a, 0x86, 0x06, 0xc5, 0x04, 0xe5, 0x46, 0x4a, 0x2b, 0x84, 0xeb, + 0x4c, 0x20, 0xc9, 0x30, 0x3f, 0xc1, 0xd1, 0xfd, 0x5d, 0x88, 0x77, 0xda, 0x1e, 0x5b, 0xf2, 0x9b, 0x29, 0xb2, 0x58, + 0x68, 0xa4, 0x36, 0x1b, 0x01, 0x27, 0x5b, 0x55, 0x27, 0xc7, 0xa5, 0x3f, 0xa7, 0x87, 0x07, 0xea, 0x6a, 0xe3, 0x2a, + 0x26, 0x6d, 0x11, 0xbf, 0x70, 0x4f, 0x7e, 0xb1, 0x28, 0x6f, 0x13, 0xbf, 0x95, 0x99, 0x1e, 0xc6, 0xaf, 0x1f, 0x40, + 0x9d, 0xfc, 0x16, 0xd9, 0xa0, 0x1f, 0xd7, 0xce, 0xff, 0xf0, 0xf7, 0x77, 0x95, 0x14, 0x62, 0xa4, 0xc3, 0x6a, 0x44, + 0x6e, 0x72, 0xc7, 0x7d, 0x9c, 0x9c, 0xa4, 0xac, 0x72, 0x87, 0x1d, 0x51, 0x0e, 0xe5, 0x13, 0x8b, 0x2d, 0x5b, 0xc0, + 0x12, 0x2c, 0xb8, 0xb1, 0x0d, 0x4d, 0xd8, 0xc0, 0xfc, 0x33, 0x35, 0x58, 0xfe, 0xaa, 0xcb, 0x92, 0xac, 0x3b, 0x4d, + 0x24, 0x6d, 0xd4, 0x4f, 0x9c, 0x32, 0xc9, 0x74, 0x59, 0x2f, 0x53, 0x37, 0x70, 0xae, 0xc6, 0x7d, 0x46, 0xb5, 0x69, + 0xc2, 0xe8, 0x03, 0xb8, 0xe1, 0xa6, 0x3d, 0x17, 0x21, 0xe5, 0xcf, 0x3a, 0xb0, 0xee, 0x63, 0x6f, 0xa0, 0x33, 0x46, + 0xb3, 0x8b, 0x62, 0xe4, 0x38, 0x39, 0xa1, 0x5a, 0xb5, 0x83, 0xde, 0x20, 0x2e, 0x0e, 0x10, 0x97, 0xe0, 0x39, 0xf6, + 0x71, 0x44, 0x66, 0x28, 0x16, 0x9a, 0xb8, 0xdb, 0xd2, 0x90, 0xb6, 0xb4, 0x03, 0xa1, 0x18, 0xa2, 0xfa, 0x8b, 0x1c, + 0x4a, 0x8c, 0x04, 0x3c, 0x83, 0xea, 0xfa, 0x72, 0xdc, 0xa7, 0x69, 0xe3, 0xb0, 0x7b, 0x93, 0x4e, 0x78, 0x52, 0xfb, + 0x44, 0x7f, 0x82, 0xaf, 0xe0, 0xac, 0x38, 0xc1, 0x19, 0xae, 0xd6, 0x88, 0xed, 0xfc, 0x01, 0x7a, 0xd9, 0x25, 0x18, + 0xd2, 0xa0, 0x83, 0x69, 0x77, 0xd1, 0x17, 0x4a, 0x81, 0x96, 0x52, 0x1f, 0x2e, 0x8c, 0x22, 0xf9, 0xb1, 0xe8, 0x8e, + 0x38, 0xed, 0x48, 0x6d, 0xf0, 0xfc, 0x4c, 0xcc, 0x02, 0x7e, 0x0c, 0x2b, 0x75, 0x76, 0x02, 0x07, 0x4a, 0x74, 0x78, + 0xb5, 0x28, 0xee, 0xcc, 0x84, 0xd2, 0xa6, 0xd2, 0xbd, 0x62, 0xc3, 0xba, 0xf1, 0x05, 0xb0, 0x31, 0x64, 0x4c, 0x4e, + 0xcc, 0x96, 0x79, 0xc2, 0xd7, 0x0d, 0x70, 0x92, 0x38, 0x59, 0x45, 0x26, 0xf3, 0x3d, 0xe0, 0xf5, 0x2c, 0xe2, 0xb8, + 0x36, 0x06, 0xf0, 0xa5, 0x85, 0x5a, 0x09, 0x12, 0x6d, 0xd3, 0xf9, 0xe9, 0x52, 0xc5, 0x02, 0x48, 0x86, 0xff, 0xfd, + 0x8f, 0x11, 0xda, 0xdc, 0xb4, 0xde, 0x40, 0xe8, 0x2f, 0xc6, 0x8f, 0xeb, 0x66, 0xa4, 0xb0, 0x09, 0xca, 0xbb, 0xbc, + 0x6e, 0x0f, 0x2a, 0xcd, 0xbe, 0x76, 0x09, 0x15, 0x3c, 0x42, 0x5d, 0xc0, 0x14, 0x37, 0xf1, 0xb8, 0x28, 0x59, 0x42, + 0x93, 0xc1, 0x6a, 0xda, 0x42, 0xdc, 0x29, 0xbc, 0xfe, 0xc3, 0x18, 0xed, 0xb5, 0x00, 0x1a, 0x4e, 0x2f, 0x33, 0x6c, + 0x06, 0xed, 0x41, 0xac, 0xf7, 0x84, 0xe1, 0x60, 0x18, 0x31, 0x79, 0xe6, 0x75, 0x7b, 0x21, 0x65, 0xc1, 0xf6, 0x2d, + 0x3d, 0x7f, 0xb6, 0x2d, 0xff, 0x30, 0xa6, 0x23, 0x44, 0x0c, 0xe9, 0x13, 0x8d, 0x2e, 0x0e, 0x0b, 0x12, 0x31, 0x44, + 0x63, 0x41, 0x4d, 0x85, 0xa6, 0x61, 0xbf, 0x9b, 0x7a, 0xdd, 0x0e, 0x46, 0x57, 0xad, 0x14, 0x99, 0x00, 0x9b, 0x16, + 0x9b, 0x21, 0x36, 0x59, 0x9c, 0xa2, 0x4f, 0xf1, 0x01, 0x65, 0xaa, 0xc2, 0xa0, 0xc5, 0x6d, 0xc5, 0x67, 0x9c, 0x46, + 0x2f, 0x9c, 0x05, 0x4e, 0xa3, 0x3f, 0xc0, 0x5f, 0x22, 0x0c, 0x1c, 0x65, 0x0b, 0xc7, 0x95, 0x46, 0x05, 0xe3, 0xd5, + 0x34, 0xe8, 0x5d, 0x82, 0x2d, 0x7e, 0x43, 0xc9, 0x39, 0x3a, 0x37, 0xf2, 0x82, 0xad, 0x35, 0xb4, 0x7e, 0xe2, 0xd3, + 0x55, 0xbc, 0xb8, 0xa1, 0xa0, 0x72, 0xf4, 0xce, 0x98, 0x72, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, + 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, + 0x0c, 0x84, 0x44, 0x6a, 0x78, 0xed, 0xe1, 0x62, 0x87, 0xe0, 0x4c, 0xd4, 0xf2, 0x55, 0xfc, 0x27, 0xa3, 0xec, 0xe8, + 0x08, 0xcd, 0x10, 0x8c, 0xa2, 0xc1, 0x4d, 0x14, 0xab, 0x5e, 0x5c, 0xe9, 0xc8, 0xba, 0x6b, 0xbd, 0x07, 0x1d, 0xbf, + 0x04, 0x02, 0x21, 0xe1, 0x9e, 0x1f, 0x39, 0x03, 0xbc, 0x5a, 0xdc, 0xd3, 0xf3, 0xfe, 0x7c, 0x55, 0x40, 0x48, 0x00, + 0x48, 0xdf, 0x2b, 0x72, 0x53, 0xf3, 0x40, 0x07, 0x8c, 0xbf, 0x03, 0x15, 0x3d, 0xd8, 0x1b, 0x46, 0xd9, 0x74, 0xe7, + 0x1a, 0x52, 0x8c, 0x50, 0xfa, 0x8a, 0x32, 0xad, 0x92, 0x3d, 0x9e, 0x00, 0xa4, 0x91, 0x0f, 0x68, 0x69, 0xd2, 0x15, + 0xe1, 0x3d, 0x2a, 0x75, 0x1c, 0xbb, 0x6c, 0xf8, 0x77, 0xda, 0x53, 0x9f, 0x40, 0x21, 0xac, 0x51, 0x3b, 0x7e, 0x99, + 0x4f, 0x14, 0x33, 0xa5, 0xe8, 0x5f, 0x71, 0x0e, 0xd3, 0x30, 0xeb, 0x32, 0x1b, 0x2b, 0x5b, 0x11, 0x25, 0x0e, 0x86, + 0x82, 0x00, 0x93, 0x07, 0xd1, 0x87, 0x7c, 0x7e, 0x1a, 0x08, 0x2a, 0xd3, 0x81, 0xcd, 0x21, 0x28, 0x1c, 0x26, 0xf0, + 0xab, 0xa9, 0x58, 0x0a, 0x76, 0x56, 0x2d, 0x5f, 0x4f, 0xdf, 0xd9, 0x49, 0xd7, 0x05, 0x68, 0x20, 0x5b, 0x9c, 0xf8, + 0xc4, 0xb7, 0x0e, 0x99, 0xcc, 0xe8, 0xc8, 0x23, 0x5a, 0x6c, 0x67, 0xad, 0xf9, 0x0e, 0xbc, 0x45, 0xec, 0xe8, 0xee, + 0x42, 0x1e, 0x2d, 0xc6, 0xcb, 0x57, 0x6e, 0x80, 0xe7, 0x16, 0xef, 0x89, 0x62, 0xd9, 0x80, 0xd3, 0xf2, 0xfc, 0x45, + 0xcf, 0x94, 0x6a, 0x0a, 0x15, 0x79, 0x76, 0x24, 0xee, 0x21, 0x86, 0xf6, 0xef, 0x26, 0xdd, 0x4d, 0x9b, 0xdd, 0x16, + 0x4f, 0xf1, 0xe9, 0xc8, 0x54, 0x7c, 0xaa, 0x76, 0x89, 0x85, 0xfe, 0x81, 0x03, 0x86, 0x3f, 0xae, 0x12, 0x9d, 0x35, + 0xd3, 0x06, 0xb4, 0xc1, 0xda, 0x18, 0xa8, 0xdc, 0x6d, 0x5d, 0xda, 0x8e, 0x46, 0x86, 0xa7, 0x17, 0x86, 0x25, 0x00, + 0x60, 0xf5, 0x2d, 0x3d, 0x77, 0x9e, 0x47, 0x68, 0x65, 0x49, 0xe5, 0x91, 0xbb, 0x96, 0x95, 0x3f, 0x2a, 0xec, 0x9a, + 0xeb, 0x74, 0x55, 0x58, 0x56, 0x04, 0x2c, 0x91, 0x06, 0xb5, 0x60, 0xef, 0x13, 0xef, 0x87, 0x22, 0xc4, 0xdc, 0xad, + 0xc5, 0x8e, 0xec, 0xbc, 0xd2, 0x34, 0x3c, 0x16, 0xaf, 0x30, 0x6f, 0x0b, 0xdd, 0xe1, 0xc3, 0xd6, 0x20, 0x57, 0x30, + 0x33, 0xa7, 0x5b, 0x68, 0xdd, 0x7c, 0x3e, 0x5b, 0x53, 0x93, 0x85, 0x4c, 0x0a, 0xd2, 0x15, 0x46, 0xd7, 0x2b, 0xfc, + 0xcf, 0x7f, 0xa4, 0x64, 0x5f, 0xd3, 0xc5, 0x08, 0x77, 0x0b, 0x63, 0xe4, 0x9f, 0x3b, 0xcc, 0xd5, 0x3b, 0x72, 0x3d, + 0x0c, 0x55, 0x2d, 0x2d, 0x9c, 0xaa, 0x92, 0xe4, 0x10, 0x21, 0xc0, 0x7c, 0x91, 0x52, 0x25, 0x2e, 0xe9, 0x5a, 0xaf, + 0x4a, 0x21, 0x23, 0x13, 0x63, 0x08, 0x56, 0x27, 0xbf, 0xfa, 0x79, 0xb7, 0x44, 0x6d, 0x68, 0xdd, 0xbe, 0x7d, 0x31, + 0x4e, 0x5a, 0xdc, 0x1b, 0xa6, 0xfa, 0x2b, 0x41, 0xcc, 0xb7, 0x6e, 0x81, 0x04, 0xb6, 0x49, 0x3e, 0x63, 0x51, 0x63, + 0x56, 0x56, 0x75, 0xf1, 0xd0, 0xf3, 0x3a, 0x6d, 0xf1, 0x42, 0x95, 0xd6, 0xaa, 0x12, 0xf7, 0xb1, 0x03, 0xd2, 0x9d, + 0x15, 0xfa, 0xe4, 0xf0, 0x4c, 0x9e, 0x39, 0x1b, 0x3d, 0x4e, 0xf4, 0x42, 0x6c, 0x76, 0x3c, 0x6f, 0x09, 0x13, 0x40, + 0x91, 0x9d, 0xd2, 0x6a, 0x53, 0xee, 0xfc, 0xf1, 0x18, 0xbd, 0xef, 0xb7, 0xd4, 0x86, 0x07, 0xad, 0x2a, 0x96, 0x9b, + 0x93, 0x04, 0xe4, 0x3c, 0x85, 0x3b, 0x11, 0xc5, 0x17, 0xaa, 0xc1, 0x66, 0x5c, 0x52, 0x09, 0xa2, 0xf3, 0x9f, 0x63, + 0xa1, 0x76, 0x4a, 0xa2, 0x8e, 0xd7, 0x21, 0x0b, 0x2c, 0xd6, 0xf1, 0x2b, 0x7e, 0xa7, 0xa2, 0x28, 0xee, 0x79, 0xbd, + 0x05, 0xb3, 0x5a, 0xcc, 0x1e, 0xc0, 0xaa, 0x0a, 0xd4, 0xe1, 0x32, 0x21, 0xd7, 0x53, 0xd1, 0xeb, 0x7a, 0xa4, 0xb8, + 0x82, 0xd9, 0xc5, 0xeb, 0x3c, 0x82, 0x3a, 0xe8, 0x7e, 0x03, 0x8d, 0x4b, 0x14, 0x90, 0x8e, 0x4b, 0xdc, 0x55, 0xb8, + 0x38, 0xea, 0x1b, 0x7d, 0x00, 0xbd, 0x29, 0xb9, 0x56, 0xd3, 0x33, 0x6c, 0x1d, 0xa6, 0x0d, 0x80, 0x75, 0x51, 0xe0, + 0x1b, 0xbc, 0x03, 0x18, 0xb3, 0x10, 0x50, 0x20, 0x30, 0x65, 0xc4, 0xbd, 0xaf, 0x2a, 0x65, 0x5a, 0x50, 0x68, 0x70, + 0x86, 0x64, 0x64, 0xc2, 0xba, 0xf3, 0xa4, 0x1a, 0xaf, 0xb2, 0x9b, 0x64, 0x0b, 0xb1, 0xb1, 0xb7, 0x88, 0x75, 0x6e, + 0xfc, 0x75, 0xf8, 0x0a, 0xe6, 0x67, 0x42, 0x8f, 0x12, 0xdd, 0xa3, 0xc7, 0x9a, 0x8f, 0x1f, 0xca, 0x9d, 0x57, 0xc9, + 0x65, 0x01, 0x1b, 0xfc, 0xab, 0x97, 0x60, 0xed, 0xde, 0xca, 0xf9, 0x23, 0xf8, 0x16, 0x74, 0x2a, 0x2f, 0x0c, 0x48, + 0xb6, 0x0d, 0x32, 0xbe, 0x70, 0xa1, 0x0b, 0x3e, 0xec, 0xdb, 0x3f, 0x76, 0xd8, 0xb5, 0xb2, 0x26, 0x8c, 0x22, 0x94, + 0xb6, 0x20, 0x27, 0x3b, 0xef, 0x78, 0x3f, 0xfd, 0x4d, 0xfe, 0x2b, 0x7d, 0x09, 0x35, 0x50, 0x9c, 0x8c, 0x0b, 0xf9, + 0xfa, 0x2a, 0x97, 0xfc, 0x6f, 0xd6, 0x3f, 0x5e, 0x3a, 0xe5, 0xb5, 0x22, 0x3f, 0xa1, 0x24, 0x42, 0x54, 0x73, 0xb8, + 0xc0, 0x61, 0xbf, 0xd7, 0x30, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, + 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x30, + 0x24, 0x5b, 0x6d, 0x52, 0xcd, 0x4e, 0xeb, 0xbe, 0x32, 0x3d, 0x27, 0x98, 0xc5, 0x75, 0x74, 0x75, 0xf2, 0xd4, 0x73, + 0xe7, 0x56, 0x30, 0x16, 0xed, 0xb0, 0x84, 0xe0, 0x96, 0xf2, 0xcc, 0x71, 0x2a, 0xdb, 0x53, 0x0a, 0x11, 0x74, 0xe8, + 0xb5, 0x4d, 0x6e, 0xea, 0xcd, 0xf7, 0x3f, 0x9e, 0x5a, 0x99, 0x55, 0x5f, 0xa0, 0x9f, 0x87, 0x84, 0x5c, 0x71, 0x3e, + 0xc4, 0xec, 0x5a, 0x0b, 0x79, 0x4d, 0x58, 0xc9, 0x62, 0x0b, 0x33, 0xf1, 0x8c, 0x85, 0xf7, 0xba, 0xe7, 0x4d, 0x36, + 0x0f, 0x63, 0x32, 0x47, 0x2c, 0x44, 0xc2, 0xaa, 0xd4, 0x61, 0x6c, 0x66, 0xa8, 0x64, 0x79, 0xfe, 0x7c, 0x3b, 0x36, + 0xf9, 0x0b, 0x9d, 0x6c, 0xf4, 0xc1, 0xbd, 0x09, 0x5b, 0xc8, 0x33, 0xa3, 0x54, 0xa3, 0x5d, 0xdb, 0xb2, 0x96, 0x24, + 0x2f, 0x9d, 0x05, 0x0e, 0x98, 0xa9, 0x72, 0x52, 0x7a, 0x29, 0xbb, 0x46, 0x41, 0x37, 0x1b, 0x45, 0x8d, 0x36, 0x38, + 0x3f, 0xac, 0x4e, 0xb1, 0xf4, 0x13, 0x88, 0x3c, 0x3e, 0x49, 0x8f, 0xfc, 0x6f, 0x2d, 0x93, 0x5e, 0x3a, 0xab, 0x00, + 0x32, 0xeb, 0xe3, 0xda, 0x94, 0x22, 0x71, 0x4c, 0x12, 0xc6, 0xf4, 0x1b, 0x90, 0x53, 0xc3, 0xe6, 0x52, 0x66, 0x48, + 0xe4, 0xbc, 0x69, 0x1b, 0xeb, 0x14, 0xa4, 0x00, 0x07, 0x37, 0x72, 0xe7, 0x00, 0x04, 0x51, 0x4e, 0x9f, 0x3c, 0x63, + 0x60, 0xb2, 0xd6, 0xea, 0x7e, 0xc0, 0xe3, 0xeb, 0x87, 0x13, 0x13, 0xa9, 0xc1, 0xd0, 0xdc, 0x82, 0x91, 0xc9, 0xcc, + 0xad, 0xe9, 0xc7, 0x70, 0x2b, 0xf6, 0x66, 0xf4, 0x7c, 0xff, 0x10, 0x59, 0xe6, 0x3f, 0x43, 0x0e, 0xfd, 0xf7, 0xf9, + 0x64, 0xfc, 0x82, 0x0a, 0xa3, 0x1b, 0xf1, 0x4b, 0x9a, 0x47, 0xda, 0x17, 0x87, 0x3a, 0x66, 0x71, 0xf3, 0xf9, 0xc8, + 0xf1, 0x57, 0xe7, 0x5d, 0x5c, 0x9d, 0x1b, 0x64, 0x76, 0xb1, 0xe0, 0x1d, 0x92, 0x04, 0x8e, 0xff, 0x66, 0x51, 0xc2, + 0x42, 0x7c, 0x61, 0x59, 0xf1, 0x01, 0x12, 0x59, 0x1f, 0xa8, 0x72, 0xa5, 0xee, 0x50, 0xae, 0x45, 0x1f, 0xdf, 0xc2, + 0xde, 0x3f, 0xd7, 0x59, 0xb2, 0x9d, 0xb7, 0xde, 0x4b, 0x32, 0x48, 0x44, 0x65, 0xd7, 0x96, 0xdb, 0x8d, 0x4f, 0x34, + 0xc4, 0xf9, 0x4c, 0xcb, 0x59, 0xe2, 0x11, 0x6a, 0x95, 0xee, 0x45, 0x83, 0x5d, 0x13, 0x1d, 0x23, 0xce, 0x27, 0x40, + 0x32, 0xcb, 0xda, 0x1a, 0x60, 0xcd, 0x93, 0x27, 0x7f, 0x9f, 0x36, 0x7e, 0x88, 0xb2, 0x88, 0x95, 0xc1, 0x87, 0xa8, + 0xfb, 0x5a, 0x20, 0xe0, 0x1f, 0x27, 0x0b, 0x98, 0x2a, 0xf2, 0xb1, 0x5e, 0x27, 0xab, 0x7e, 0x19, 0xc7, 0x4b, 0x6c, + 0x31, 0x21, 0x53, 0x54, 0xe3, 0x14, 0x08, 0x6e, 0xfd, 0xb7, 0x57, 0x75, 0xf8, 0x56, 0x6a, 0xbb, 0xb3, 0x42, 0xb6, + 0xd4, 0xbd, 0x15, 0xef, 0x19, 0x87, 0x7c, 0xf2, 0xcb, 0xb5, 0x4c, 0x94, 0x8d, 0x1c, 0x4f, 0xcc, 0xd7, 0x9c, 0x89, + 0x05, 0xf8, 0x8a, 0x30, 0xa6, 0x83, 0xa2, 0xf4, 0xcf, 0xd1, 0x72, 0xe6, 0xcb, 0xb0, 0x56, 0x25, 0xe4, 0xaf, 0x31, + 0x67, 0xa2, 0xcb, 0x5b, 0x22, 0x46, 0x74, 0x7a, 0x4f, 0x0c, 0x27, 0x07, 0xb2, 0x54, 0xd1, 0x3f, 0xf2, 0x61, 0x14, + 0x9a, 0xa4, 0x78, 0x32, 0x07, 0xb2, 0xf1, 0xf4, 0xb8, 0x18, 0xac, 0xbf, 0x49, 0x16, 0x64, 0x57, 0x94, 0x83, 0x9f, + 0x5f, 0xb8, 0xae, 0x9c, 0x16, 0xef, 0xaf, 0xca, 0x12, 0x2c, 0x48, 0xc4, 0x94, 0x73, 0x64, 0xf0, 0x88, 0x6f, 0xb1, + 0x40, 0x32, 0xa7, 0x5d, 0x5c, 0xea, 0x81, 0x2f, 0x1b, 0xf0, 0x63, 0xf7, 0xec, 0x26, 0x76, 0x3f, 0x6d, 0xa5, 0xd2, + 0x87, 0x28, 0x66, 0xb4, 0x00, 0x55, 0xb4, 0x21, 0x27, 0x24, 0x13, 0xa9, 0x67, 0x68, 0xc0, 0x0b, 0x24, 0x6e, 0xac, + 0xb1, 0x41, 0xc4, 0x1d, 0xa4, 0xb0, 0x2b, 0x96, 0x50, 0x31, 0x6e, 0xee, 0x6c, 0x65, 0x4e, 0x0f, 0xfc, 0x43, 0xd5, + 0x16, 0x72, 0x30, 0xa6, 0xf6, 0xb7, 0x80, 0xf6, 0xbc, 0xa7, 0x14, 0xf9, 0x3c, 0xac, 0x58, 0xda, 0x24, 0x83, 0x56, + 0x75, 0xcb, 0xc6, 0x5b, 0x63, 0xa9, 0x84, 0x97, 0x1f, 0x9e, 0x33, 0x03, 0x25, 0xe0, 0x33, 0x81, 0xa3, 0x8e, 0x5b, + 0x39, 0x0c, 0x0d, 0x91, 0x2a, 0x56, 0x40, 0x65, 0x44, 0x2c, 0x3b, 0x3e, 0xfa, 0x75, 0xe2, 0x24, 0xe3, 0xa7, 0x13, + 0x75, 0x1f, 0x6c, 0x3c, 0xfc, 0x67, 0xb1, 0xf9, 0x62, 0x99, 0x80, 0x29, 0xfb, 0x30, 0xee, 0x40, 0x56, 0x69, 0xe7, + 0xaf, 0x2e, 0xaf, 0xf6, 0xe3, 0x17, 0x7b, 0x1c, 0x38, 0xf7, 0x80, 0xaf, 0xb9, 0x34, 0x6e, 0xd8, 0x54, 0x40, 0x06, + 0x46, 0xe1, 0xf1, 0xda, 0xbe, 0x2b, 0xf1, 0x90, 0xf5, 0x5c, 0x6b, 0x67, 0x7b, 0x42, 0xa8, 0x1f, 0x1b, 0x1e, 0x19, + 0xe2, 0x1e, 0xbd, 0x31, 0x93, 0x08, 0x6e, 0x42, 0x80, 0xeb, 0x61, 0x4d, 0xcc, 0xfe, 0xc2, 0x9e, 0x74, 0x85, 0xf7, + 0xc8, 0x4f, 0x7e, 0x04, 0x2b, 0x62, 0xdc, 0x9f, 0xd3, 0xac, 0x75, 0x22, 0x70, 0xa6, 0x06, 0x7b, 0x40, 0xd7, 0xb2, + 0x69, 0x58, 0xb7, 0x45, 0x6a, 0x43, 0x52, 0xaf, 0xda, 0xde, 0xbc, 0xfb, 0xda, 0xfc, 0x73, 0x9f, 0x29, 0xaf, 0x01, + 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, + 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x49, 0x9f, 0xe1, 0xf8, 0xbe, 0xc6, + 0xdd, 0xb0, 0x2c, 0x32, 0x2b, 0x8c, 0xfd, 0x8a, 0x28, 0x6d, 0x7e, 0xca, 0x62, 0x6f, 0xf3, 0x6f, 0x90, 0x71, 0x35, + 0x61, 0x5e, 0x29, 0x1a, 0xb5, 0x47, 0x46, 0xe7, 0x0c, 0x14, 0xec, 0x2e, 0xe2, 0x3b, 0xfc, 0x99, 0x60, 0xe1, 0x73, + 0x14, 0xcf, 0x3e, 0x18, 0x3c, 0x7b, 0xd5, 0xef, 0x74, 0x05, 0xf4, 0x17, 0xec, 0xf5, 0x67, 0xc3, 0x3d, 0xfd, 0xa3, + 0x1b, 0xb0, 0x43, 0x67, 0x4e, 0xd7, 0x1f, 0xb4, 0xb7, 0xfb, 0x37, 0xfb, 0xfb, 0x54, 0x7f, 0x70, 0xc8, 0xf5, 0x87, + 0xad, 0x8a, 0x70, 0xed, 0xb8, 0xc2, 0x45, 0xd7, 0x8b, 0xce, 0xa4, 0xaa, 0x68, 0x0e, 0xa5, 0x96, 0xc4, 0x5d, 0x1e, + 0x6c, 0xe6, 0x0b, 0xed, 0xe3, 0xda, 0x6a, 0xb4, 0x01, 0x0c, 0x3e, 0x36, 0x6e, 0xa9, 0x95, 0x8c, 0xb9, 0xe9, 0x2e, + 0x00, 0xcb, 0x0d, 0xb7, 0x6c, 0xd3, 0x4a, 0x02, 0xe7, 0x0c, 0x8e, 0x3e, 0x83, 0x22, 0x61, 0x64, 0x28, 0xd4, 0xe4, + 0xf6, 0xa2, 0x19, 0xe6, 0xef, 0xaf, 0xf2, 0xf3, 0x95, 0x2c, 0x39, 0xff, 0x92, 0x30, 0x67, 0x05, 0xe5, 0xd8, 0xd1, + 0xfb, 0x4b, 0x84, 0x6b, 0x17, 0x46, 0x83, 0xe1, 0x51, 0xee, 0xf7, 0xee, 0x03, 0x5d, 0xd7, 0xbe, 0x10, 0x3d, 0x8d, + 0xee, 0x28, 0xe8, 0x95, 0xe3, 0xb7, 0x88, 0x70, 0x15, 0x81, 0x05, 0x77, 0x12, 0x97, 0x5a, 0x3d, 0xb7, 0xe0, 0xac, + 0xa1, 0x2f, 0xc3, 0x6f, 0x91, 0x4b, 0xcc, 0xe0, 0xf0, 0x69, 0x13, 0x1c, 0xd4, 0xe0, 0xee, 0x27, 0x3c, 0xe0, 0xd8, + 0x76, 0x02, 0xdd, 0x73, 0xd7, 0x16, 0xb4, 0x64, 0x52, 0x92, 0x39, 0x93, 0xba, 0x62, 0xf2, 0x73, 0xcd, 0xb2, 0xf0, + 0xa1, 0xa1, 0x1f, 0xb7, 0xa0, 0x3b, 0x27, 0xe7, 0x88, 0x39, 0x27, 0x7c, 0xf2, 0x0f, 0x75, 0x41, 0x5c, 0x90, 0x42, + 0x53, 0xfc, 0x19, 0x76, 0x9e, 0x54, 0x18, 0x05, 0xd2, 0x76, 0x36, 0x15, 0x63, 0xd6, 0x84, 0xdb, 0xd2, 0x53, 0x06, + 0x4a, 0x51, 0x14, 0xc7, 0x31, 0xc6, 0xf7, 0x85, 0xe8, 0x54, 0xe1, 0x3d, 0xea, 0x99, 0x7f, 0x3b, 0x70, 0x61, 0x5b, + 0xe0, 0x30, 0xa5, 0xc9, 0x22, 0xc0, 0xc7, 0xff, 0x73, 0x21, 0x2a, 0x83, 0x95, 0x7a, 0x66, 0xf4, 0xb0, 0x84, 0xbb, + 0x51, 0x08, 0x17, 0x8c, 0xfc, 0xe5, 0xee, 0xdf, 0x2f, 0x4e, 0x69, 0xea, 0xb9, 0xa0, 0x80, 0xf4, 0xf7, 0x61, 0x03, + 0x4f, 0xc2, 0xfa, 0x39, 0xf5, 0x5f, 0xdb, 0xc5, 0xa1, 0x96, 0x3d, 0x6a, 0xd3, 0x1f, 0x12, 0xb6, 0x55, 0x9d, 0xea, + 0xa3, 0x3f, 0x8f, 0x4c, 0x22, 0xab, 0xa7, 0x1a, 0xa2, 0x3f, 0xad, 0x9e, 0xf0, 0xd5, 0x99, 0x9d, 0x79, 0xdb, 0xc4, + 0xf6, 0xd1, 0x6d, 0x58, 0xd2, 0x1e, 0x23, 0x50, 0x09, 0x7c, 0xfa, 0x13, 0x3e, 0x18, 0x59, 0x02, 0x51, 0xe2, 0x88, + 0x80, 0xeb, 0x41, 0x15, 0xe0, 0x11, 0x81, 0x8b, 0x07, 0x09, 0xfb, 0xcf, 0x56, 0x8d, 0x6c, 0x3e, 0x24, 0x14, 0x8a, + 0xfd, 0x75, 0x3a, 0xe5, 0x91, 0x87, 0x72, 0x84, 0xef, 0x0d, 0x14, 0xbf, 0x5d, 0xc1, 0x7c, 0x4c, 0x69, 0x61, 0x1e, + 0x10, 0x45, 0x3c, 0xba, 0x2e, 0x10, 0x54, 0x66, 0x24, 0x91, 0x5d, 0xec, 0x19, 0x9f, 0xd1, 0x28, 0xfd, 0xe7, 0xe3, + 0x64, 0x51, 0x32, 0x7b, 0x21, 0xb6, 0xb3, 0x80, 0x68, 0x8a, 0x8c, 0x76, 0x7e, 0xa2, 0x25, 0x1b, 0x19, 0x3d, 0x79, + 0x56, 0x53, 0x9e, 0x9c, 0x6d, 0xc4, 0x4e, 0x85, 0xd9, 0x3c, 0x09, 0x0d, 0x73, 0xa8, 0xd2, 0x82, 0xcd, 0x16, 0x17, + 0xf0, 0x97, 0x80, 0x9d, 0x4d, 0xe7, 0x29, 0xe4, 0x9a, 0xbb, 0x9f, 0x95, 0x3e, 0x15, 0xdf, 0x7b, 0x57, 0x79, 0x10, + 0x8d, 0x36, 0xa3, 0xad, 0x65, 0x91, 0x8d, 0x51, 0x85, 0xd2, 0x7d, 0x3f, 0x6c, 0xdc, 0xd8, 0xb6, 0x61, 0x39, 0x1a, + 0x81, 0x1d, 0x7e, 0x7a, 0x04, 0x07, 0xd7, 0x53, 0x60, 0xe3, 0x19, 0xeb, 0xf6, 0x42, 0x8e, 0xf3, 0xe3, 0x4e, 0x63, + 0xc7, 0x27, 0xa8, 0x1c, 0xb1, 0x25, 0x54, 0x77, 0xa1, 0x4b, 0x02, 0xec, 0x1f, 0x84, 0x84, 0x06, 0x18, 0x2c, 0xeb, + 0x3c, 0x7d, 0xa1, 0x84, 0x7b, 0xab, 0xc6, 0xdc, 0xfc, 0x3e, 0x48, 0x22, 0xae, 0x88, 0x3e, 0xfb, 0x91, 0x16, 0x67, + 0x54, 0x8e, 0x93, 0x73, 0xec, 0x9e, 0xb7, 0x1c, 0x4f, 0x7d, 0x47, 0xa3, 0x51, 0x03, 0xb0, 0xe7, 0x4f, 0x94, 0x03, + 0x69, 0x12, 0x4e, 0xa6, 0x01, 0x04, 0xf5, 0xf9, 0x90, 0x90, 0xba, 0xa6, 0x0b, 0x7d, 0xc4, 0x61, 0x2c, 0x76, 0xe2, + 0x5d, 0x89, 0x1b, 0xe6, 0x67, 0x91, 0xd5, 0xc1, 0xee, 0x04, 0xbe, 0x84, 0x34, 0x33, 0xba, 0xd4, 0xf1, 0xdd, 0xce, + 0xd9, 0xcb, 0x8e, 0x71, 0x8f, 0xf6, 0x14, 0xbd, 0x81, 0xbc, 0x56, 0xca, 0x1f, 0xbb, 0x86, 0xad, 0x29, 0x4b, 0x18, + 0xd1, 0x21, 0x58, 0x2c, 0xaa, 0x9f, 0xbb, 0x82, 0x43, 0x58, 0x80, 0x13, 0x98, 0xd1, 0x2f, 0x49, 0xa1, 0x94, 0xe3, + 0x16, 0x66, 0xd0, 0x17, 0xb9, 0x8a, 0xd4, 0x29, 0xa0, 0x11, 0x82, 0x8c, 0x96, 0x7c, 0x48, 0x5c, 0xc6, 0x3f, 0xd3, + 0xe5, 0x93, 0xc0, 0xbb, 0xa7, 0x08, 0x0e, 0xbf, 0xd8, 0x26, 0x3e, 0x40, 0xf6, 0x5f, 0x01, 0x00, 0x00, 0xc0, 0xa9, + 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, + 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x0b, 0xbc, 0x04, 0x9d, 0x96, 0x6e, 0x22, 0x4d, 0xf2, 0xad, 0x8b, + 0x61, 0x9b, 0xd4, 0x53, 0x33, 0xfb, 0xd7, 0xb1, 0xd5, 0x01, 0x47, 0x72, 0x9c, 0x0f, 0x8a, 0xca, 0xd7, 0x29, 0x62, + 0xb4, 0x65, 0xdc, 0x62, 0xf9, 0x02, 0x23, 0x85, 0xe9, 0x59, 0xbe, 0x82, 0x55, 0xc6, 0xcb, 0xc3, 0xd1, 0x85, 0xad, + 0x37, 0x5e, 0x8d, 0x50, 0x5f, 0x82, 0x04, 0x27, 0x16, 0x53, 0xa4, 0x0b, 0xca, 0xf3, 0x08, 0x44, 0xa6, 0xd1, 0x7d, + 0xc4, 0x17, 0xea, 0x70, 0xa1, 0x74, 0xf2, 0x7a, 0xe9, 0x78, 0x6b, 0xf1, 0xac, 0xa3, 0x98, 0x4e, 0xa9, 0x6e, 0xeb, + 0x9b, 0x2c, 0x5b, 0x2e, 0xb7, 0x6c, 0x9d, 0x17, 0x2e, 0x58, 0x0a, 0x34, 0x20, 0x8d, 0xc7, 0x6f, 0xa5, 0xd2, 0x1c, + 0xb9, 0xcb, 0xf4, 0xb5, 0x35, 0x09, 0x78, 0x39, 0x04, 0x9a, 0x38, 0xfa, 0xdf, 0x72, 0x7f, 0x3a, 0x9f, 0x6b, 0xfe, + 0x94, 0x7d, 0x48, 0x07, 0xcf, 0x50, 0x2c, 0xbb, 0x6d, 0x1b, 0xd2, 0x47, 0x31, 0xcc, 0x19, 0x18, 0xd1, 0x62, 0xa0, + 0x21, 0xbb, 0x3c, 0xc2, 0x2f, 0x68, 0xe0, 0xde, 0x4a, 0x2d, 0xf9, 0xe8, 0xa6, 0x83, 0xe0, 0x1c, 0xed, 0x8c, 0x94, + 0x30, 0x31, 0xdc, 0x00, 0x39, 0x34, 0xe8, 0xff, 0xc5, 0x3e, 0xf3, 0xb4, 0xc2, 0x53, 0xbc, 0x5f, 0x5a, 0xc2, 0x2f, + 0xa6, 0x99, 0x9e, 0x3b, 0x61, 0xec, 0xe3, 0x45, 0x79, 0x67, 0x05, 0x96, 0x3c, 0x9c, 0x12, 0x41, 0xde, 0x48, 0xb0, + 0x60, 0xb8, 0xec, 0xca, 0x1d, 0x41, 0x14, 0xde, 0x70, 0x10, 0xfd, 0x73, 0x7c, 0x67, 0x3d, 0x5a, 0x86, 0xe7, 0x08, + 0x5f, 0x9a, 0x45, 0x47, 0x43, 0xb4, 0x79, 0x52, 0x31, 0xbc, 0x89, 0x80, 0x48, 0x62, 0x72, 0xfc, 0x17, 0xb3, 0x31, + 0x4f, 0xdf, 0xdd, 0x4e, 0x66, 0x46, 0x81, 0x33, 0x59, 0x8f, 0xb2, 0xf4, 0xaa, 0x3f, 0x78, 0x62, 0x30, 0xe8, 0x5a, + 0x50, 0x6f, 0x25, 0x57, 0xbc, 0x8c, 0xb6, 0xfd, 0x79, 0xa1, 0x0e, 0xc8, 0x76, 0x36, 0x87, 0x9e, 0x89, 0x91, 0xea, + 0xcf, 0x5c, 0x53, 0x5b, 0x5c, 0x61, 0x0c, 0x04, 0x3e, 0x34, 0x44, 0x80, 0xb0, 0xa3, 0xe6, 0xae, 0x01, 0xdc, 0x88, + 0xb4, 0x72, 0x33, 0x42, 0x82, 0x5f, 0x7f, 0x55, 0x5e, 0x2b, 0xc8, 0x3e, 0xb5, 0xed, 0x21, 0x0d, 0xfd, 0x0b, 0xa2, + 0x8a, 0x2d, 0x0a, 0xe0, 0x70, 0xf0, 0x15, 0x40, 0xf3, 0x48, 0x86, 0xc2, 0xa8, 0x15, 0xa1, 0x9a, 0x53, 0xa9, 0xfb, + 0x4e, 0x08, 0xdb, 0x3e, 0x42, 0x8d, 0x4c, 0xab, 0x43, 0xe2, 0x0d, 0xfe, 0xb9, 0xaa, 0x17, 0x1e, 0xb9, 0x20, 0x31, + 0xbd, 0x4c, 0x02, 0x3a, 0x11, 0x9a, 0xe0, 0xb2, 0xde, 0x58, 0x0e, 0xb9, 0xa2, 0x07, 0x51, 0x1a, 0x61, 0x84, 0x56, + 0xff, 0xd0, 0x86, 0x89, 0xfc, 0x56, 0x56, 0xa4, 0x24, 0x73, 0x23, 0x41, 0x25, 0x0d, 0xdc, 0x5a, 0x5e, 0xc1, 0xca, + 0xe3, 0xbb, 0xe3, 0x73, 0x01, 0x25, 0xda, 0x08, 0x56, 0x16, 0x52, 0x0d, 0x39, 0xcc, 0xcf, 0xff, 0xe4, 0x4a, 0xb5, + 0x08, 0x18, 0x1e, 0xbb, 0xba, 0x05, 0xaa, 0x9f, 0xf8, 0x03, 0xbf, 0xd0, 0xa8, 0x76, 0xeb, 0x8c, 0x71, 0xa4, 0xa0, + 0x8a, 0x44, 0xbe, 0x67, 0x95, 0xa9, 0x10, 0x48, 0x82, 0x92, 0x9f, 0x57, 0x1e, 0xd9, 0x85, 0x41, 0xba, 0x81, 0x44, + 0x99, 0x7f, 0xbd, 0xfa, 0xe5, 0x43, 0xca, 0x5b, 0xce, 0xae, 0xdf, 0xea, 0x6b, 0xfe, 0x52, 0x2c, 0x96, 0x5f, 0xa8, + 0xbe, 0x1f, 0x47, 0x3a, 0x95, 0xa7, 0x6d, 0xd1, 0x63, 0xb5, 0xe0, 0xce, 0x72, 0xb3, 0x40, 0x7f, 0x13, 0xce, 0xc0, + 0x39, 0x40, 0xb7, 0x31, 0x22, 0x58, 0xa3, 0xd8, 0xea, 0xb1, 0x39, 0x98, 0xa3, 0xdb, 0x25, 0x0a, 0x0e, 0x08, 0x7a, + 0xbd, 0xcb, 0x89, 0xad, 0x50, 0xf5, 0x05, 0xa4, 0x6a, 0xcd, 0xd2, 0x26, 0xc0, 0x8d, 0x64, 0x23, 0xe3, 0x7a, 0x33, + 0xdf, 0x81, 0x78, 0x9e, 0x95, 0xf0, 0x85, 0xc8, 0xfe, 0xfe, 0xed, 0xcb, 0x79, 0x1a, 0xd6, 0x62, 0xb4, 0x4f, 0xf7, + 0x06, 0x18, 0xa2, 0xbb, 0xc7, 0x9b, 0x77, 0xbc, 0x61, 0x73, 0x75, 0xe7, 0x78, 0x2c, 0xd3, 0x44, 0xd9, 0x8c, 0x22, + 0x55, 0x36, 0xfb, 0xec, 0x83, 0x4b, 0x2d, 0xcd, 0x68, 0x30, 0xfd, 0x79, 0xe3, 0x32, 0x4e, 0x04, 0xd1, 0x01, 0x7f, + 0xd5, 0x68, 0x7b, 0x43, 0x28, 0x4a, 0x38, 0x89, 0x44, 0xbf, 0xc0, 0x26, 0x08, 0x78, 0xda, 0x7a, 0xc5, 0x8f, 0x0e, + 0x85, 0x3f, 0xd7, 0x95, 0x4f, 0x3b, 0xc0, 0x16, 0x0b, 0x98, 0x2b, 0xa6, 0x74, 0x80, 0xef, 0x90, 0xb7, 0xc2, 0x63, + 0xa7, 0x9c, 0x2a, 0x95, 0xf6, 0x93, 0x60, 0x22, 0x4c, 0xb3, 0x00, 0x7b, 0x31, 0x53, 0x6a, 0xb5, 0x38, 0x30, 0x54, + 0x3d, 0x43, 0x5c, 0x85, 0x5c, 0xcc, 0x8c, 0xf4, 0x85, 0x6f, 0x82, 0x6d, 0x62, 0xe8, 0x53, 0xcb, 0xdd, 0x58, 0x2e, + 0x4f, 0xa0, 0x8e, 0x1c, 0xcb, 0x31, 0x10, 0xb2, 0x4d, 0x1d, 0xe5, 0x4c, 0x18, 0xcf, 0x5f, 0x57, 0x9b, 0x7c, 0x8c, + 0x2d, 0xf7, 0xf6, 0xa7, 0xed, 0xce, 0x8f, 0x05, 0x28, 0x41, 0xb2, 0xd4, 0x85, 0xfe, 0x6e, 0x77, 0xcb, 0x7f, 0xe3, + 0x33, 0x05, 0x81, 0x5d, 0xd8, 0xce, 0x3e, 0xe7, 0x17, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, + 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, + 0x84, 0x44, 0x6a, 0x1e, 0x20, 0xd2, 0x32, 0xc1, 0x83, 0xc1, 0xdc, 0xef, 0x32, 0xbf, 0xa7, 0xe8, 0xa0, 0x6e, 0x39, + 0x0b, 0x3f, 0x7b, 0xb1, 0xda, 0x80, 0x53, 0x13, 0xbe, 0x92, 0xa6, 0x28, 0xfc, 0x4d, 0xec, 0x03, 0xaf, 0x8e, 0x02, + 0x4a, 0x32, 0x9e, 0x89, 0x08, 0x32, 0xfb, 0x1b, 0x4d, 0xe8, 0x29, 0x1c, 0xbe, 0x58, 0x27, 0x85, 0xd9, 0x44, 0x11, + 0x67, 0xea, 0xbe, 0x41, 0xe4, 0x5a, 0x87, 0xf1, 0x7d, 0x08, 0xbe, 0x37, 0x15, 0xaf, 0xa4, 0xa2, 0x66, 0x19, 0x37, + 0x55, 0x9e, 0xb9, 0x77, 0x6c, 0xe1, 0x86, 0x94, 0xa4, 0xd1, 0xca, 0x2d, 0xf7, 0x0e, 0xee, 0xde, 0x3f, 0x66, 0x8b, + 0x08, 0xfe, 0xc5, 0x5f, 0x8a, 0x21, 0x6e, 0x08, 0x9d, 0x7f, 0xac, 0x0d, 0x54, 0x8f, 0x1b, 0xf9, 0x71, 0xc2, 0xa5, + 0x26, 0x10, 0xfc, 0xa7, 0xe4, 0x67, 0x88, 0xff, 0x7b, 0x2a, 0xbd, 0x61, 0x11, 0xc5, 0xa4, 0x57, 0x20, 0x72, 0xfa, + 0x0b, 0xd1, 0x42, 0xac, 0x56, 0x3f, 0x62, 0x6f, 0x46, 0x32, 0x01, 0xdf, 0x91, 0x12, 0xf4, 0x0b, 0x6e, 0x6b, 0x5f, + 0xb8, 0xda, 0xea, 0xcb, 0x8d, 0xe5, 0x8d, 0x03, 0x54, 0xc9, 0x16, 0x78, 0xf4, 0xfb, 0xd5, 0x8b, 0xa1, 0xf6, 0x67, + 0xfb, 0x41, 0xf2, 0x82, 0x00, 0xfe, 0x7a, 0xb1, 0xba, 0xa4, 0xbc, 0x71, 0x68, 0x20, 0xb2, 0x90, 0x8c, 0x44, 0x19, + 0x88, 0xdb, 0xdc, 0x11, 0x3c, 0x96, 0xf4, 0x2f, 0xaa, 0x08, 0x0c, 0x6f, 0x78, 0x0c, 0xdb, 0x64, 0x0c, 0xa0, 0xad, + 0x96, 0x95, 0x31, 0x7d, 0xb1, 0x83, 0x54, 0x99, 0x67, 0xb0, 0x49, 0x8d, 0x7d, 0x31, 0xc3, 0xb6, 0x53, 0x3e, 0xa2, + 0x8b, 0x10, 0x99, 0xeb, 0x2a, 0xdb, 0xc2, 0x30, 0x41, 0x75, 0x5b, 0xa6, 0xf5, 0xb9, 0x03, 0x2f, 0x67, 0xf6, 0x02, + 0x92, 0x67, 0x8e, 0xb7, 0x64, 0x92, 0x1d, 0x2f, 0x31, 0x99, 0x54, 0x09, 0x1f, 0xac, 0x61, 0x9c, 0xde, 0x8e, 0xe3, + 0x67, 0xfc, 0x36, 0x40, 0x09, 0x2f, 0x1e, 0x34, 0x29, 0xfe, 0x32, 0x55, 0xf2, 0x59, 0xf4, 0xd4, 0x9b, 0x6a, 0x87, + 0xa7, 0xc6, 0xf4, 0x9e, 0x3a, 0x00, 0xb3, 0x57, 0xc3, 0x0a, 0x08, 0xdd, 0x3d, 0x59, 0x49, 0x72, 0x3d, 0x2b, 0x4a, + 0xdc, 0x6d, 0x37, 0x11, 0x55, 0xd2, 0x3e, 0xfe, 0xa9, 0x24, 0x69, 0xe4, 0xa1, 0xcc, 0x91, 0x43, 0xc9, 0xaf, 0x2d, + 0xb1, 0x6f, 0x62, 0x05, 0x12, 0x47, 0x52, 0xda, 0x85, 0x82, 0x1c, 0x58, 0xc0, 0x7f, 0x89, 0xee, 0x80, 0x4c, 0x7a, + 0x0f, 0x60, 0xcc, 0x93, 0xc7, 0x8f, 0x5a, 0xdc, 0x23, 0x1c, 0x34, 0x15, 0x71, 0xf6, 0xb8, 0xf6, 0x32, 0xe5, 0xfc, + 0x4f, 0x94, 0x49, 0x28, 0xf1, 0xf8, 0x5b, 0xfa, 0xce, 0x48, 0x22, 0x3c, 0x5b, 0xfa, 0x59, 0xc2, 0x1a, 0xd0, 0xd2, + 0x74, 0x2f, 0x84, 0x81, 0x01, 0x31, 0x43, 0x53, 0xcb, 0x85, 0x6c, 0xc3, 0x6e, 0x30, 0x22, 0x27, 0xe9, 0x09, 0x11, + 0xe6, 0x9a, 0x3c, 0x60, 0x94, 0xc6, 0x7c, 0x66, 0x82, 0x63, 0xb5, 0x45, 0x29, 0x33, 0x3d, 0x24, 0xce, 0xf8, 0xb2, + 0x1a, 0xea, 0x3b, 0x81, 0x01, 0x6d, 0xc6, 0xa9, 0x0e, 0x5e, 0x09, 0x07, 0x08, 0xfb, 0xbf, 0x48, 0xcc, 0x1d, 0x56, + 0x67, 0xb3, 0x8e, 0x78, 0xd3, 0xe5, 0x88, 0x9f, 0xa1, 0x8d, 0xb3, 0x80, 0xf5, 0x41, 0x9f, 0xa1, 0x0d, 0x94, 0x2c, + 0xd7, 0x06, 0x4b, 0x16, 0xd7, 0xa2, 0xc1, 0xb2, 0xcf, 0x41, 0x01, 0x1b, 0x63, 0xa7, 0x5c, 0x6f, 0xed, 0xca, 0x2d, + 0x29, 0xf2, 0x01, 0xdc, 0xf2, 0x9d, 0x24, 0x07, 0xc3, 0x72, 0xf9, 0xf5, 0x9e, 0x5b, 0x45, 0x72, 0x6a, 0xec, 0x68, + 0xd6, 0x3f, 0xf5, 0x76, 0x28, 0x95, 0xbf, 0xaa, 0x7f, 0xf8, 0x2c, 0xec, 0xaf, 0x24, 0x1a, 0x38, 0x51, 0x0f, 0x11, + 0x77, 0x38, 0x79, 0x7c, 0x40, 0x47, 0x19, 0x6b, 0x94, 0x43, 0x9e, 0x57, 0x0b, 0x5c, 0x42, 0x0c, 0x96, 0x93, 0xb5, + 0x57, 0x68, 0xb8, 0x13, 0x44, 0x2d, 0x4a, 0x2d, 0x9f, 0x91, 0xcb, 0x24, 0x70, 0xdf, 0x10, 0xab, 0xfe, 0xa7, 0x52, + 0x24, 0xa5, 0x0b, 0x0e, 0x24, 0xa9, 0x97, 0x6b, 0xc3, 0x6d, 0x4a, 0xb5, 0xfa, 0x90, 0x99, 0xc1, 0xf5, 0x8b, 0xea, + 0x90, 0x45, 0xbc, 0xfb, 0x38, 0x91, 0xd8, 0xac, 0x51, 0x37, 0x33, 0x2e, 0x11, 0x51, 0xfb, 0xf4, 0xe0, 0x3b, 0x4a, + 0xdb, 0x3e, 0xb0, 0xc8, 0xb1, 0x64, 0x17, 0x3b, 0xed, 0x27, 0x79, 0xa7, 0x24, 0xce, 0x0b, 0x26, 0xc5, 0x70, 0x17, + 0x5b, 0xa0, 0x32, 0x34, 0x42, 0x70, 0x2f, 0x89, 0x5e, 0x39, 0x08, 0xd7, 0x2b, 0x06, 0x40, 0xbc, 0x5a, 0x1d, 0xfd, + 0xac, 0xf6, 0xf0, 0x01, 0x5d, 0x2d, 0xe6, 0xe7, 0x43, 0xbd, 0x83, 0x47, 0x59, 0x81, 0x9e, 0x14, 0x03, 0x89, 0x61, + 0x3a, 0x0a, 0x65, 0x19, 0x43, 0x72, 0x29, 0xf7, 0x35, 0x54, 0xca, 0x30, 0x0e, 0x61, 0xff, 0x82, 0x02, 0x84, 0x60, + 0x7b, 0x9c, 0xc5, 0x54, 0xa1, 0x0e, 0x27, 0x49, 0x65, 0x26, 0x49, 0xd2, 0x0b, 0x67, 0xe2, 0x48, 0x51, 0x55, 0x81, + 0x5c, 0x1d, 0xa5, 0x58, 0x2c, 0xfb, 0xd2, 0x59, 0x89, 0xd5, 0x39, 0x2c, 0xb1, 0xcf, 0x44, 0xca, 0x8c, 0x40, 0x8e, + 0x78, 0x4b, 0x9c, 0x33, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, + 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xe1, 0xb1, + 0x22, 0x9b, 0xde, 0x27, 0x94, 0xc3, 0xf8, 0xc1, 0xf4, 0x4e, 0x7f, 0xde, 0x15, 0x2b, 0xbf, 0x74, 0x36, 0x15, 0xab, + 0x83, 0x26, 0x40, 0x8d, 0xd8, 0xa7, 0x44, 0x1a, 0x23, 0x31, 0x4d, 0xb4, 0x96, 0x7a, 0xd8, 0x2a, 0x0c, 0x8f, 0xb4, + 0x4a, 0xb3, 0x1e, 0xef, 0x6f, 0xe4, 0xae, 0xf5, 0xf5, 0xf7, 0x04, 0xd0, 0x41, 0x1e, 0xde, 0xba, 0x01, 0xb2, 0x0a, + 0xdd, 0x02, 0x22, 0xf8, 0x30, 0x25, 0x8b, 0xd3, 0x5c, 0x6c, 0xdc, 0xc4, 0x87, 0x6c, 0x6f, 0x66, 0xf1, 0x2b, 0x0a, + 0xfa, 0x92, 0x58, 0x84, 0xf9, 0x8f, 0xd3, 0x73, 0x3b, 0x9a, 0x48, 0x30, 0xdc, 0xb5, 0x5a, 0x40, 0x1b, 0x55, 0x4c, + 0x3f, 0x99, 0x1d, 0xf0, 0x85, 0x21, 0x49, 0xd6, 0xc2, 0x3e, 0xfb, 0xa7, 0x63, 0xbb, 0x25, 0x10, 0xb1, 0x2f, 0x14, + 0x6a, 0x5e, 0x5a, 0xea, 0x70, 0xd1, 0xa1, 0x3a, 0x48, 0xff, 0xb5, 0x18, 0x57, 0x2b, 0x13, 0x4c, 0x88, 0xa5, 0xc6, + 0x22, 0xd2, 0x75, 0x7b, 0xc7, 0x2a, 0x5b, 0xfa, 0x87, 0x5e, 0x8a, 0xe9, 0xdf, 0xd4, 0xdb, 0x94, 0x83, 0x81, 0xbf, + 0x08, 0x12, 0xd2, 0xc8, 0x3d, 0x4b, 0x95, 0x55, 0x26, 0x94, 0xad, 0x74, 0x34, 0xd8, 0xe7, 0x2b, 0xdf, 0x5b, 0x31, + 0x3c, 0xe5, 0xfa, 0x6c, 0xfe, 0xba, 0x9c, 0xf8, 0xa0, 0xcd, 0x0b, 0x56, 0xc3, 0xd7, 0xbc, 0x5d, 0xb0, 0x48, 0x0d, + 0xad, 0x9a, 0xd5, 0xaf, 0x8f, 0x20, 0x7a, 0xef, 0x7d, 0xf9, 0x5b, 0x85, 0xc5, 0x66, 0x16, 0xae, 0xdc, 0x13, 0x94, + 0x95, 0xdf, 0xce, 0x35, 0x5f, 0xf3, 0xf3, 0x64, 0x02, 0xb7, 0xe7, 0x1c, 0x10, 0x23, 0x61, 0xe3, 0x08, 0xb6, 0x06, + 0x02, 0xd4, 0x09, 0x9a, 0xc6, 0xdf, 0xca, 0x2e, 0x73, 0xd1, 0x12, 0x60, 0x36, 0x9b, 0xe9, 0xba, 0xf9, 0x96, 0xb9, + 0x3d, 0x62, 0xe7, 0x74, 0x24, 0x18, 0x0c, 0xff, 0x68, 0x68, 0x61, 0x73, 0x1c, 0x0b, 0x0d, 0x49, 0xd7, 0x03, 0x01, + 0x03, 0x6b, 0xbd, 0x1e, 0x5c, 0x37, 0xfe, 0xcc, 0x42, 0x97, 0x1d, 0x1c, 0x83, 0x97, 0xed, 0x81, 0x41, 0x0e, 0xba, + 0x1a, 0x7e, 0xc8, 0xae, 0xf8, 0xda, 0x36, 0xa6, 0xb1, 0x26, 0x82, 0x5a, 0xe9, 0xdc, 0x42, 0x2a, 0x1b, 0xe1, 0x16, + 0x05, 0x34, 0x29, 0x24, 0xa6, 0xf0, 0xb5, 0x3c, 0x1a, 0x60, 0xa8, 0x79, 0xcd, 0x0d, 0x96, 0xff, 0xae, 0xbd, 0xc5, + 0x9f, 0x02, 0x44, 0xdc, 0x95, 0x8e, 0xf5, 0x5a, 0xaf, 0x69, 0x7a, 0xdf, 0xa8, 0xa4, 0xeb, 0xb4, 0x28, 0x0a, 0x26, + 0x3c, 0x86, 0xe9, 0xd4, 0x20, 0x5f, 0xe8, 0x38, 0x25, 0x6b, 0xa1, 0x1b, 0x22, 0x68, 0xd0, 0x3b, 0x84, 0x5f, 0x45, + 0xfe, 0x4d, 0xc1, 0x05, 0xd0, 0xe8, 0x4a, 0xb0, 0xbf, 0x21, 0xc9, 0x45, 0xea, 0xc7, 0x16, 0x84, 0x62, 0x76, 0x4d, + 0x93, 0x08, 0x77, 0x50, 0xac, 0xfc, 0x50, 0x10, 0x2e, 0x84, 0xe8, 0x89, 0x99, 0xc1, 0x40, 0x28, 0x74, 0xfe, 0x52, + 0x88, 0x8f, 0xa0, 0xfd, 0xa2, 0x47, 0x64, 0x7d, 0xb1, 0x59, 0x3a, 0xdf, 0xa4, 0x01, 0x2a, 0xa4, 0xc8, 0x29, 0x76, + 0x1d, 0xed, 0xc7, 0x7c, 0x32, 0xcc, 0x54, 0x05, 0x5c, 0xcb, 0x54, 0x5b, 0x0d, 0xfa, 0x31, 0xfc, 0x89, 0x8c, 0x15, + 0x70, 0xe1, 0xa8, 0x37, 0xf1, 0x52, 0x11, 0xc5, 0x19, 0xfa, 0x89, 0x06, 0x30, 0xf1, 0x1d, 0xbb, 0x06, 0xbe, 0x38, + 0x16, 0xf7, 0x4f, 0x8c, 0x8e, 0xce, 0x4e, 0x7d, 0x59, 0x62, 0x6d, 0xc5, 0x74, 0x18, 0xb7, 0xba, 0xee, 0x03, 0xad, + 0x41, 0x7a, 0x1e, 0x35, 0x9e, 0xc3, 0xf4, 0x6b, 0xd9, 0xa1, 0x29, 0xfa, 0xf0, 0x9e, 0x69, 0xed, 0x33, 0x71, 0x7c, + 0x7d, 0x43, 0xd7, 0x0a, 0x7f, 0x85, 0x48, 0xe8, 0x5c, 0x4f, 0x09, 0x38, 0x2e, 0x18, 0xb2, 0x66, 0xd7, 0xb1, 0xa5, + 0x50, 0xe7, 0xea, 0x05, 0x42, 0x32, 0x90, 0xda, 0xfa, 0x6e, 0x7e, 0x88, 0x8d, 0xb7, 0xf5, 0xa7, 0xe2, 0x63, 0x1d, + 0x03, 0x0e, 0x18, 0xef, 0xe0, 0x63, 0xac, 0xaf, 0x60, 0x0f, 0xe0, 0x41, 0x6c, 0xb4, 0x0a, 0x46, 0xb9, 0xcc, 0xc0, + 0x46, 0x89, 0x2f, 0x80, 0xea, 0x38, 0x12, 0x93, 0x50, 0x50, 0x60, 0x67, 0x34, 0x50, 0xd1, 0x16, 0x55, 0xa5, 0x93, + 0x93, 0x00, 0x45, 0x36, 0x54, 0x0d, 0x67, 0xb8, 0xfc, 0xad, 0x49, 0x8d, 0x60, 0x43, 0x43, 0xf5, 0xf4, 0xfd, 0x28, + 0xaa, 0x70, 0xf0, 0xb2, 0xe7, 0x34, 0x10, 0x0a, 0xb7, 0x7b, 0xda, 0x8a, 0x63, 0x9c, 0xab, 0xcb, 0x10, 0xb8, 0xb3, + 0x9d, 0x7f, 0xdb, 0xbc, 0xcb, 0x85, 0x69, 0x0f, 0x90, 0x23, 0x93, 0x75, 0x44, 0x90, 0x22, 0xbc, 0x78, 0x07, 0x86, + 0x3d, 0xbe, 0x78, 0xc6, 0xa8, 0xb8, 0x78, 0x42, 0xc3, 0x1a, 0x5c, 0x98, 0x43, 0xa2, 0xc2, 0xee, 0xad, 0x7c, 0x33, + 0x60, 0x66, 0x9a, 0xbe, 0x21, 0x3a, 0xc7, 0xc7, 0xed, 0x86, 0x9a, 0x14, 0xec, 0x86, 0x68, 0x4d, 0x72, 0x81, 0x03, + 0xe7, 0x2d, 0x71, 0xe3, 0x34, 0xe5, 0x4b, 0x62, 0x07, 0xec, 0x4c, 0x3c, 0xb6, 0xc6, 0xd0, 0xb7, 0x28, 0xbc, 0x18, + 0x51, 0x7b, 0xc0, 0xbc, 0x44, 0xac, 0x9c, 0x0c, 0x38, 0x04, 0x4d, 0xbc, 0xc1, 0x78, 0xaf, 0xaf, 0x6b, 0x2c, 0x01, + 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, + 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x00, 0x99, 0xd9, 0x34, 0x10, 0xf8, 0xba, + 0x97, 0x53, 0x21, 0x29, 0x24, 0x8c, 0xfc, 0xf9, 0x6a, 0x95, 0xe9, 0x97, 0x0d, 0x8a, 0x31, 0xdb, 0x23, 0x68, 0xd7, + 0x22, 0x48, 0x83, 0x63, 0xd9, 0x0e, 0x0d, 0xa7, 0xac, 0xd5, 0x15, 0x80, 0x19, 0xbd, 0x0c, 0x45, 0xa5, 0xa1, 0x95, + 0x95, 0xd2, 0x9f, 0x39, 0x0a, 0xdf, 0x5e, 0xf5, 0xc4, 0xec, 0xed, 0x82, 0xa1, 0x4a, 0x35, 0x00, 0x96, 0x55, 0x17, + 0x89, 0x31, 0xc6, 0x86, 0x7c, 0x93, 0x05, 0x2b, 0xea, 0xbd, 0xad, 0xed, 0x97, 0xee, 0xb7, 0xd1, 0x79, 0x81, 0x89, + 0x34, 0x29, 0xbd, 0xb3, 0x9d, 0xba, 0xa9, 0x89, 0x23, 0xf1, 0x0b, 0xd0, 0x60, 0x0a, 0xd8, 0x94, 0x88, 0x2a, 0x14, + 0x8d, 0x65, 0xb8, 0xde, 0x8e, 0x14, 0xd8, 0xb1, 0xbd, 0x02, 0xda, 0xfb, 0x9f, 0xd0, 0xd2, 0x37, 0xdd, 0x79, 0xa6, + 0xa2, 0x43, 0xe5, 0xfd, 0x1d, 0xa5, 0x2e, 0xc5, 0x36, 0xa8, 0x3e, 0xc8, 0x53, 0x27, 0xcc, 0x8f, 0xee, 0xd2, 0x5f, + 0xf4, 0x95, 0x71, 0x0b, 0x25, 0x3f, 0x24, 0x4c, 0x50, 0x4f, 0xd3, 0x46, 0xee, 0xb0, 0xdb, 0x0f, 0x69, 0x93, 0x71, + 0x57, 0xff, 0xcf, 0x62, 0x00, 0xa7, 0xb3, 0xef, 0xb2, 0x23, 0x5c, 0x3d, 0x2b, 0x6f, 0xa1, 0x6f, 0x69, 0xeb, 0xa8, + 0xef, 0xcd, 0xff, 0xfd, 0x69, 0x37, 0x81, 0x61, 0xb6, 0x54, 0xaa, 0xb1, 0x3d, 0x5b, 0x30, 0x35, 0x1d, 0x1c, 0x67, + 0x99, 0xe2, 0x72, 0x5d, 0x7a, 0xfb, 0xc0, 0x17, 0x37, 0x98, 0x37, 0x33, 0xe4, 0xd7, 0x33, 0x80, 0x8c, 0x66, 0x24, + 0xe8, 0x04, 0x9a, 0x66, 0xcf, 0xf6, 0xf3, 0x43, 0x5c, 0xc8, 0x6b, 0x5f, 0x4c, 0xf4, 0xc0, 0x26, 0x01, 0xc8, 0x37, + 0x76, 0xa9, 0x99, 0xac, 0x25, 0x56, 0xab, 0xd8, 0xca, 0xca, 0x81, 0xe5, 0x51, 0x7a, 0x14, 0x3f, 0xfb, 0x0b, 0x63, + 0xa0, 0x10, 0x32, 0xe9, 0x4d, 0x15, 0x00, 0xb0, 0xd1, 0xad, 0x08, 0x2c, 0x45, 0x32, 0xf7, 0x1f, 0xa1, 0x69, 0x9b, + 0x0c, 0x34, 0x75, 0x58, 0xa5, 0xa5, 0xb3, 0xdd, 0x87, 0x44, 0x5e, 0x83, 0x8b, 0x01, 0x5f, 0x59, 0xf5, 0x47, 0x49, + 0x8c, 0x05, 0x70, 0x14, 0x5b, 0x1a, 0xa4, 0x9d, 0xe8, 0x8b, 0xf9, 0xa7, 0xd2, 0x35, 0x02, 0x46, 0x1c, 0x87, 0xb7, + 0xb5, 0x34, 0x2e, 0x95, 0xc7, 0xc5, 0x74, 0x59, 0x16, 0x5e, 0xac, 0x92, 0x6c, 0x6a, 0x9f, 0x65, 0x83, 0x1e, 0xce, + 0x9d, 0x08, 0xfc, 0x68, 0x5f, 0x72, 0x34, 0xaa, 0x9a, 0xea, 0x95, 0x81, 0xd6, 0xe6, 0x73, 0xee, 0x92, 0x49, 0xf8, + 0xe1, 0xd6, 0x0d, 0x41, 0x9c, 0xea, 0x3f, 0xb0, 0x79, 0xd2, 0x1e, 0x23, 0x3b, 0x08, 0x55, 0xe8, 0x87, 0x9a, 0xec, + 0xda, 0x01, 0xfc, 0xff, 0xf3, 0x8a, 0x3d, 0x1a, 0x72, 0x2f, 0x56, 0xe8, 0x80, 0x82, 0xef, 0x1b, 0x3f, 0xdb, 0xce, + 0x9c, 0xd0, 0x58, 0x18, 0x8f, 0x6c, 0xe2, 0xda, 0xf3, 0x50, 0x8e, 0xb8, 0xa0, 0x5e, 0xd0, 0x87, 0x7d, 0xbc, 0x59, + 0x76, 0x1c, 0x6f, 0x70, 0x3c, 0x15, 0x38, 0x4b, 0x2a, 0x39, 0x92, 0x66, 0x42, 0x01, 0x9b, 0x3e, 0xa4, 0xe6, 0x1f, + 0x32, 0x74, 0x1d, 0x78, 0x72, 0xdf, 0x54, 0xf9, 0x37, 0x43, 0xda, 0xac, 0x11, 0xda, 0xd5, 0x82, 0x8e, 0x52, 0xfa, + 0xb0, 0xec, 0x1e, 0x39, 0xb3, 0xc4, 0xf7, 0x08, 0x54, 0xc0, 0x21, 0x33, 0xd8, 0x2f, 0x84, 0x64, 0xc6, 0x73, 0x73, + 0x17, 0x02, 0xc2, 0x17, 0x9d, 0x53, 0xd3, 0x91, 0xa9, 0x7c, 0xbd, 0xff, 0x2a, 0xef, 0x62, 0xcf, 0x70, 0xb3, 0xb6, + 0xf8, 0xf2, 0x3e, 0x62, 0x85, 0x79, 0x20, 0x1d, 0xc3, 0xda, 0xc7, 0x20, 0xde, 0xcd, 0x52, 0x92, 0x2f, 0x70, 0x10, + 0xfd, 0x1c, 0x95, 0x3a, 0xd9, 0x59, 0x3e, 0x69, 0xd1, 0x55, 0x38, 0xa1, 0x24, 0x9e, 0xb3, 0x45, 0x52, 0x93, 0xcb, + 0x6b, 0x1d, 0x4f, 0x80, 0x88, 0x0b, 0x8e, 0x2d, 0xc6, 0x99, 0x33, 0x4b, 0xf1, 0x80, 0x57, 0x20, 0x8f, 0xe1, 0x43, + 0x2f, 0xef, 0x15, 0x5a, 0x6d, 0x9b, 0xa3, 0x1b, 0x5b, 0x5d, 0x3b, 0xdb, 0x33, 0xe7, 0x02, 0xb1, 0xf9, 0x77, 0xfd, + 0x87, 0x80, 0x82, 0xe7, 0xca, 0x46, 0x66, 0x59, 0x9d, 0x2e, 0x9d, 0xad, 0x4d, 0xd9, 0xc3, 0xe3, 0x53, 0x4e, 0xa0, + 0xa0, 0xab, 0x28, 0xab, 0x02, 0xbb, 0x06, 0x33, 0x42, 0x6b, 0xb5, 0x61, 0x9a, 0x92, 0x42, 0xa0, 0xc0, 0x5d, 0x95, + 0x8b, 0x5f, 0x22, 0x13, 0xd1, 0x2d, 0xc0, 0x0d, 0x34, 0xac, 0x42, 0x38, 0x33, 0xa1, 0xc5, 0xf0, 0x4b, 0x0f, 0x2c, + 0x66, 0x16, 0x1f, 0x34, 0x61, 0x6b, 0x64, 0x31, 0x16, 0x8f, 0x17, 0x6e, 0x65, 0xae, 0xdc, 0x96, 0xdb, 0x33, 0xe8, + 0xa1, 0xe2, 0x41, 0xeb, 0x54, 0x3c, 0x1c, 0xb5, 0xe1, 0x26, 0x3a, 0x27, 0x4b, 0xac, 0xcb, 0x07, 0x55, 0xc5, 0x7b, + 0x86, 0x22, 0x1c, 0x04, 0xa5, 0x9f, 0x99, 0x9b, 0xb9, 0xa5, 0xc0, 0x93, 0xad, 0xaf, 0xa7, 0x30, 0x48, 0xdc, 0x1d, + 0x85, 0x69, 0x0c, 0xdc, 0x2e, 0x18, 0x66, 0x09, 0x21, 0xa6, 0x44, 0x67, 0x7b, 0x75, 0x6c, 0x5f, 0xb1, 0x3a, 0x69, + 0xe0, 0x88, 0xac, 0xff, 0x3b, 0x57, 0x00, 0xd1, 0x97, 0x8d, 0x49, 0x80, 0x68, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, + 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, + 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x77, 0xa6, 0xe6, 0xb8, 0x93, 0xb0, 0x99, 0x90, 0x03, 0xd5, 0x33, 0x66, + 0x83, 0xc9, 0x9a, 0x6c, 0x24, 0x88, 0x3c, 0x0f, 0xe0, 0x32, 0xe7, 0x27, 0x99, 0xbf, 0xbd, 0xc8, 0x15, 0x42, 0xac, + 0x2f, 0xa2, 0x13, 0x1c, 0xa8, 0xdc, 0x73, 0x31, 0xa6, 0x64, 0x06, 0x78, 0xfc, 0x43, 0x5f, 0xa5, 0x88, 0xaa, 0x1f, + 0xa4, 0x51, 0xe8, 0xeb, 0xb7, 0x73, 0xe4, 0xc3, 0x11, 0x35, 0x0a, 0x5f, 0x2b, 0x1b, 0x03, 0x47, 0x44, 0x93, 0x8d, + 0x19, 0x01, 0xd9, 0x96, 0x7d, 0xee, 0xd2, 0xc0, 0x5b, 0x34, 0x4b, 0x87, 0x2d, 0x39, 0xf2, 0x9a, 0xdd, 0xc6, 0xad, + 0x69, 0xb9, 0x4e, 0xc3, 0x9c, 0x7e, 0x98, 0x29, 0x26, 0x80, 0xd6, 0xb3, 0xa6, 0x56, 0x08, 0xca, 0x23, 0x6c, 0x50, + 0x1b, 0x28, 0x4e, 0xfa, 0xab, 0x98, 0xfa, 0x08, 0xa5, 0xc0, 0x6a, 0x21, 0xfd, 0x00, 0xfc, 0xe5, 0xa2, 0xb6, 0xff, + 0x73, 0x3e, 0x14, 0x43, 0xf5, 0x98, 0xf2, 0xa3, 0xb7, 0x89, 0xca, 0xa9, 0xa8, 0x6f, 0x74, 0x1d, 0x77, 0x87, 0x08, + 0xf6, 0x35, 0xbf, 0x89, 0x72, 0xfc, 0xa7, 0xcd, 0x38, 0x91, 0x57, 0x3b, 0x62, 0x47, 0x1d, 0xab, 0x59, 0x54, 0x99, + 0x98, 0xc2, 0x98, 0xe6, 0x62, 0x79, 0x1f, 0xba, 0x6d, 0x5d, 0xda, 0x74, 0x79, 0xed, 0xe8, 0x9f, 0x51, 0x13, 0x0f, + 0x12, 0x9b, 0x84, 0x34, 0x26, 0xa6, 0x3f, 0x7f, 0x01, 0x0e, 0x4b, 0x3a, 0x33, 0xfb, 0xb7, 0x74, 0x52, 0x33, 0x71, + 0x9a, 0xf4, 0x2b, 0x4e, 0xbd, 0x2e, 0xed, 0xc8, 0xa7, 0x32, 0x12, 0x9b, 0x8a, 0xd3, 0x8e, 0x5d, 0xb7, 0xa2, 0x2d, + 0xa5, 0x9e, 0x2e, 0x7e, 0xdd, 0x27, 0x17, 0x5d, 0x14, 0x94, 0x6d, 0xec, 0x66, 0x19, 0x40, 0x20, 0x29, 0x76, 0xe8, + 0xfe, 0xd7, 0x2b, 0x82, 0x02, 0x3f, 0x66, 0x40, 0xae, 0x23, 0x9d, 0xb2, 0x7a, 0xaf, 0x96, 0x41, 0xbf, 0x4d, 0x2c, + 0x26, 0x32, 0xbc, 0x70, 0x1c, 0x5f, 0x6b, 0xe2, 0x39, 0x86, 0x2d, 0xd8, 0x8f, 0x25, 0xc2, 0xc2, 0xd5, 0x83, 0x51, + 0x86, 0x5c, 0x09, 0x31, 0x75, 0xcb, 0x3d, 0x9c, 0x35, 0x33, 0x39, 0x6b, 0x96, 0xd7, 0xa4, 0xef, 0xef, 0x2e, 0xd2, + 0x12, 0x57, 0x66, 0xcf, 0x83, 0xaa, 0x93, 0xb6, 0x9b, 0xd8, 0x95, 0xda, 0xd3, 0xfa, 0xd1, 0x5c, 0xf1, 0x26, 0xfc, + 0x65, 0xd1, 0x8b, 0x43, 0xed, 0x48, 0x2e, 0xc7, 0x3f, 0x5c, 0xa3, 0x98, 0x6d, 0x12, 0x32, 0xd4, 0x24, 0xb1, 0x26, + 0x40, 0xd3, 0x41, 0xbf, 0x3a, 0xd6, 0x58, 0x69, 0x25, 0x09, 0x0f, 0x4d, 0xeb, 0xa0, 0x05, 0x04, 0x04, 0xb8, 0x1c, + 0x2b, 0x3b, 0x76, 0x68, 0xa7, 0xcc, 0xa7, 0xcc, 0x2a, 0x96, 0x52, 0x9c, 0xb6, 0x74, 0x1a, 0x8d, 0xc4, 0x61, 0x11, + 0xc6, 0xc4, 0x02, 0x52, 0x02, 0x2f, 0x7e, 0x60, 0x3c, 0x49, 0x02, 0x1c, 0x4c, 0x93, 0x82, 0x74, 0x7f, 0x40, 0xa5, + 0x6d, 0x13, 0x93, 0xd6, 0x79, 0x62, 0x97, 0x5c, 0x2a, 0xaa, 0x72, 0x8d, 0x0f, 0x22, 0x86, 0x7e, 0x33, 0xa1, 0xaa, + 0xad, 0xdd, 0x1d, 0xea, 0x41, 0x8f, 0x73, 0x0c, 0x83, 0xf7, 0x33, 0x76, 0xa8, 0xd6, 0x77, 0x18, 0x8c, 0xd9, 0x15, + 0x6f, 0x0b, 0x90, 0x8d, 0xae, 0x2b, 0xe0, 0xc8, 0x2c, 0x12, 0x49, 0x3a, 0xe7, 0x39, 0xd3, 0x5c, 0x0c, 0x49, 0xbd, + 0x43, 0x27, 0x47, 0x1e, 0x57, 0xb6, 0x2b, 0x7b, 0x04, 0x5a, 0x7f, 0xed, 0x2d, 0x73, 0x79, 0xc6, 0x41, 0xa4, 0x95, + 0x10, 0xae, 0x55, 0x43, 0x7e, 0x44, 0x79, 0xc5, 0x8a, 0x87, 0x16, 0x5a, 0x6b, 0x52, 0xe9, 0x6d, 0x82, 0x38, 0xbb, + 0xed, 0xe0, 0x99, 0x9f, 0x45, 0x00, 0xa4, 0xf1, 0x9a, 0x7e, 0x08, 0x53, 0x29, 0x68, 0x98, 0xcc, 0xb9, 0xdd, 0x12, + 0xed, 0xf9, 0x4e, 0x49, 0x3a, 0x33, 0x39, 0x52, 0x92, 0x61, 0x97, 0x89, 0xb2, 0x59, 0x28, 0xb8, 0xf4, 0x44, 0x10, + 0xff, 0x73, 0x79, 0x0a, 0xed, 0xc1, 0xb7, 0x64, 0xfe, 0x7e, 0xc2, 0x87, 0x0d, 0xea, 0x70, 0xda, 0xa7, 0x10, 0x45, + 0x00, 0x2c, 0x1e, 0x47, 0x0e, 0x0c, 0xfa, 0xcb, 0xb6, 0xc6, 0x88, 0x2e, 0x92, 0x96, 0x73, 0x76, 0xb5, 0x4c, 0x4a, + 0x5b, 0x39, 0xaa, 0xfa, 0xc1, 0xdd, 0xd6, 0x81, 0xc9, 0x1b, 0xf4, 0xab, 0x35, 0xd9, 0x11, 0xb7, 0xc6, 0x7d, 0xba, + 0x3a, 0x06, 0x10, 0xe7, 0xeb, 0xbc, 0x47, 0x8f, 0x6d, 0x17, 0x55, 0x86, 0x9b, 0xfb, 0x00, 0xaf, 0x20, 0x45, 0x38, + 0x51, 0xc4, 0x9f, 0x82, 0xbb, 0x98, 0x4e, 0xe0, 0x63, 0x9f, 0x04, 0xa6, 0x4c, 0x6c, 0x40, 0x88, 0xb9, 0xf6, 0x12, + 0xd7, 0x11, 0x4a, 0x08, 0x33, 0xa9, 0x97, 0xb0, 0xc6, 0x62, 0x17, 0x05, 0x50, 0x0d, 0xa9, 0x00, 0xcf, 0x91, 0x37, + 0x24, 0x31, 0x8d, 0xb3, 0xe2, 0xf5, 0x25, 0xc0, 0xb2, 0x7e, 0x62, 0x6c, 0x95, 0xbe, 0x31, 0xea, 0x9a, 0xba, 0x9d, + 0xba, 0x2c, 0xfe, 0xe6, 0x81, 0x9a, 0xf3, 0x95, 0x3c, 0xfb, 0xea, 0x45, 0xa0, 0x5c, 0xb8, 0x57, 0x38, 0x13, 0xdb, + 0xea, 0x74, 0x8e, 0xbb, 0xa3, 0x29, 0x1b, 0xc9, 0xfa, 0x74, 0xad, 0xe7, 0x7f, 0x57, 0xbf, 0x56, 0xbf, 0x12, 0x17, + 0x5d, 0xa0, 0x2d, 0xd9, 0x33, 0xf6, 0x31, 0x0f, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, + 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, + 0x44, 0x6a, 0x10, 0x6f, 0x0b, 0x11, 0x95, 0xcf, 0xdf, 0xa6, 0xbc, 0xb8, 0x25, 0x1e, 0x10, 0x7d, 0x2c, 0xc0, 0x1b, + 0x20, 0x8e, 0x6d, 0x2c, 0xf8, 0x17, 0x31, 0xe0, 0x75, 0x10, 0x9e, 0x6d, 0xe3, 0xbd, 0x1d, 0x1c, 0x0e, 0xf7, 0x08, + 0x01, 0x38, 0x57, 0xae, 0x95, 0xd6, 0x5f, 0xc9, 0x0c, 0x6e, 0x7d, 0xa7, 0xd3, 0x65, 0x6a, 0x15, 0x87, 0xf6, 0x15, + 0xd0, 0xce, 0x1d, 0x27, 0x54, 0x88, 0x37, 0x5a, 0x15, 0x4e, 0x6b, 0x76, 0x27, 0xa0, 0x46, 0x24, 0x20, 0xbc, 0x6b, + 0xde, 0x53, 0xd9, 0x17, 0x79, 0xed, 0xd9, 0x22, 0x0d, 0xc5, 0x17, 0xa1, 0xba, 0x6d, 0xbf, 0x9b, 0xb9, 0x83, 0xc0, + 0x0b, 0x05, 0x09, 0xfd, 0x89, 0x7c, 0x68, 0x75, 0x63, 0x6f, 0xb9, 0x33, 0xd1, 0xad, 0xaf, 0xac, 0x9b, 0x84, 0x06, + 0x47, 0xaa, 0xf2, 0x44, 0xbf, 0x2b, 0x05, 0xc2, 0x8a, 0x22, 0x05, 0x97, 0xf6, 0xef, 0x5e, 0x0c, 0x76, 0x30, 0x84, + 0x11, 0x3f, 0x17, 0x6d, 0xeb, 0x22, 0xec, 0xde, 0xf3, 0x81, 0xf9, 0x16, 0x02, 0x8f, 0x6e, 0x40, 0xb7, 0x6f, 0x76, + 0xb1, 0x3a, 0x11, 0x32, 0xe2, 0xfc, 0x7c, 0xec, 0xcb, 0x4f, 0x5b, 0xcf, 0xf1, 0x99, 0xad, 0xe0, 0x0a, 0xdd, 0x52, + 0x26, 0x66, 0x31, 0x1a, 0x5e, 0xf7, 0x2e, 0xea, 0xcc, 0xc8, 0xb3, 0x7e, 0x92, 0xfd, 0x29, 0xf8, 0x1a, 0xdb, 0x50, + 0x81, 0xd7, 0x5a, 0x68, 0xcb, 0x77, 0x71, 0x97, 0xfb, 0x1f, 0x5f, 0xba, 0x5d, 0x0a, 0x08, 0xed, 0xe0, 0xf3, 0x16, + 0xae, 0x71, 0x00, 0x0b, 0xa9, 0xd8, 0x97, 0x78, 0xbc, 0x62, 0x0b, 0x16, 0xe2, 0x1b, 0xd3, 0xc5, 0x63, 0x67, 0x37, + 0xc4, 0x67, 0x50, 0x91, 0xc1, 0x0b, 0xdd, 0x28, 0x1e, 0x70, 0x78, 0x05, 0x5f, 0x9c, 0x98, 0xe5, 0x34, 0x61, 0x25, + 0xde, 0x7e, 0xa4, 0xf6, 0x4a, 0xd8, 0xa6, 0x6b, 0x6f, 0x03, 0x6b, 0x54, 0x42, 0xc9, 0x91, 0x8a, 0xe7, 0xf6, 0x9f, + 0x70, 0xca, 0x4e, 0x43, 0x64, 0xf7, 0x89, 0x7c, 0x75, 0x25, 0x28, 0xe4, 0x69, 0xee, 0x1e, 0xea, 0xaf, 0xb7, 0x0f, + 0x77, 0x72, 0xe5, 0xe7, 0x26, 0xd0, 0xde, 0xb5, 0x46, 0xf6, 0x3f, 0x47, 0xd8, 0x33, 0x24, 0x67, 0x9e, 0x03, 0xcc, + 0x11, 0x69, 0x2e, 0x44, 0x1b, 0x09, 0x7b, 0xb4, 0x11, 0x82, 0x23, 0x7e, 0x76, 0x36, 0x0a, 0xf5, 0x0a, 0x10, 0x36, + 0xf3, 0x11, 0xb7, 0xed, 0xb9, 0x3f, 0x08, 0x8c, 0xd0, 0x9b, 0x85, 0x8b, 0x81, 0xf1, 0x45, 0xe0, 0xd0, 0xba, 0x9e, + 0x17, 0xa6, 0x11, 0x28, 0x03, 0x46, 0xcf, 0xba, 0x7d, 0x8e, 0x7f, 0x4c, 0xf4, 0x4b, 0x38, 0xf6, 0x86, 0xa0, 0xe2, + 0xd0, 0x1c, 0xc1, 0x83, 0xd4, 0xe1, 0x5a, 0xc4, 0xdb, 0x6c, 0xf9, 0x9a, 0xed, 0x8f, 0xc1, 0xbd, 0x54, 0x88, 0x11, + 0x05, 0x5a, 0xba, 0x65, 0x8b, 0x4b, 0xdd, 0x68, 0x8d, 0xb7, 0xc0, 0x6d, 0x2d, 0x95, 0xac, 0xa3, 0x32, 0x76, 0x8e, + 0xd0, 0x98, 0xc8, 0x39, 0xe9, 0xf5, 0xcb, 0x97, 0xb9, 0xb5, 0x58, 0xfc, 0x1b, 0xfe, 0x00, 0x8c, 0x0d, 0x02, 0x00, + 0xb6, 0x8c, 0xdb, 0xbe, 0xd6, 0x77, 0xec, 0x5b, 0x2f, 0x11, 0x28, 0x1a, 0x0f, 0x23, 0x7e, 0xa6, 0xc8, 0xef, 0x73, + 0xc7, 0x17, 0x2d, 0xd0, 0x8a, 0xed, 0x3a, 0x31, 0x3d, 0xda, 0x62, 0xd0, 0x33, 0x54, 0x6c, 0x1d, 0xa9, 0x40, 0x3e, + 0x71, 0x52, 0x10, 0xe2, 0xe3, 0x30, 0x1e, 0xfe, 0x69, 0x7e, 0x22, 0xdb, 0x74, 0x16, 0xac, 0x96, 0xff, 0x56, 0x00, + 0x6b, 0x5d, 0xda, 0xf8, 0xd7, 0xf8, 0x62, 0x78, 0x1b, 0x0a, 0x1d, 0x60, 0x9a, 0x7a, 0x50, 0x39, 0xec, 0x99, 0x40, + 0x29, 0x26, 0x22, 0x61, 0xe4, 0x9d, 0x84, 0x20, 0x1c, 0xde, 0x93, 0x35, 0x8c, 0x23, 0x49, 0x69, 0x86, 0xc3, 0x67, + 0x0a, 0x3c, 0x7a, 0x88, 0xe5, 0x1b, 0xb3, 0xa1, 0x59, 0xe2, 0x69, 0xa5, 0xf1, 0xa3, 0x6a, 0xf4, 0x84, 0xfe, 0x8e, + 0xe6, 0x79, 0x03, 0x5e, 0x9d, 0xbf, 0xfa, 0x00, 0x9d, 0x1c, 0xd7, 0x66, 0x52, 0x4e, 0xf0, 0x4b, 0xd2, 0xfd, 0x08, + 0x88, 0x42, 0x6e, 0xd4, 0x3e, 0xff, 0xd6, 0xc1, 0x61, 0x3f, 0x44, 0xeb, 0x37, 0xf1, 0x30, 0x67, 0x3d, 0x75, 0xfe, + 0x74, 0xc2, 0x80, 0x81, 0xc9, 0xea, 0x33, 0x4b, 0xec, 0xd8, 0x8e, 0xd0, 0xa5, 0x6c, 0xf3, 0x8f, 0xbb, 0x6a, 0xd4, + 0x78, 0xbe, 0xd9, 0xeb, 0xc9, 0x35, 0xde, 0x33, 0xbc, 0xc3, 0x33, 0x55, 0xf2, 0x18, 0x3d, 0x5d, 0x42, 0x36, 0x59, + 0x2f, 0x0d, 0x54, 0x8b, 0xf0, 0xc7, 0x5e, 0x7d, 0xbc, 0x2e, 0xa2, 0x10, 0x2a, 0x8e, 0xc6, 0xec, 0xa8, 0xe8, 0x7b, + 0x6f, 0x3b, 0xe9, 0x4d, 0xed, 0x51, 0x4c, 0x92, 0xcf, 0x61, 0xd9, 0x76, 0x79, 0x3e, 0x1c, 0x21, 0x87, 0x50, 0x54, + 0x69, 0xfe, 0x59, 0x68, 0x8f, 0x17, 0x11, 0xf6, 0x7b, 0x01, 0x70, 0x47, 0x9d, 0xf9, 0x84, 0xa5, 0x07, 0x01, 0xbe, + 0x8a, 0xef, 0xd4, 0xec, 0xa1, 0xfa, 0x2b, 0x11, 0x08, 0xb1, 0xfc, 0x1f, 0x5c, 0x0e, 0x4c, 0x31, 0x7d, 0x87, 0x1c, + 0x45, 0xc5, 0x06, 0xf3, 0x99, 0xbd, 0x7d, 0xdc, 0x53, 0x72, 0xa7, 0xc3, 0x18, 0x86, 0x50, 0x06, 0x57, 0xfd, 0x86, + 0x2b, 0xd1, 0x03, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, + 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x54, 0x7f, 0x17, + 0xef, 0x3a, 0x29, 0x1c, 0x34, 0xc7, 0xc0, 0xe5, 0x28, 0x2b, 0x35, 0xf3, 0xda, 0x99, 0xee, 0xec, 0x60, 0xbc, 0x81, + 0x95, 0x08, 0xc0, 0x9e, 0x34, 0x09, 0x6d, 0x65, 0xe6, 0x1a, 0x89, 0x04, 0xd0, 0x8e, 0xbf, 0x56, 0xf5, 0xc7, 0x6a, + 0x63, 0xe8, 0xc0, 0x10, 0x94, 0xd8, 0x67, 0x9b, 0xb7, 0x8a, 0xfe, 0xb2, 0x60, 0xff, 0x73, 0x48, 0x17, 0x9b, 0x0c, + 0x3d, 0x0b, 0x39, 0x01, 0xd4, 0x4f, 0x64, 0x08, 0x5e, 0x48, 0xa0, 0x00, 0x31, 0x8d, 0xb2, 0xdc, 0xfb, 0x19, 0xab, + 0x25, 0x2d, 0x61, 0xed, 0x39, 0x54, 0x24, 0x23, 0x82, 0x5c, 0x1a, 0xbe, 0x50, 0x41, 0xf3, 0x72, 0x20, 0x03, 0x6b, + 0xb1, 0x44, 0x84, 0x31, 0x5d, 0xd6, 0x7c, 0x49, 0x8b, 0xad, 0xb7, 0x93, 0xec, 0x83, 0x58, 0xd9, 0x4e, 0x57, 0x84, + 0x48, 0x79, 0x08, 0x5b, 0x69, 0xa3, 0xd9, 0xb4, 0x89, 0x84, 0x3c, 0x1e, 0xb9, 0x18, 0x88, 0x1a, 0xce, 0x9c, 0x2c, + 0xae, 0x19, 0xff, 0x9b, 0x38, 0x80, 0x0c, 0x97, 0x06, 0x3d, 0x50, 0x0c, 0x2c, 0x1e, 0xc8, 0xdc, 0x54, 0x04, 0xec, + 0xf9, 0x34, 0x12, 0xa6, 0x02, 0xbb, 0x47, 0x2d, 0x4d, 0xa4, 0x9d, 0x85, 0x03, 0x1e, 0xb7, 0xf1, 0x0f, 0x38, 0xa6, + 0xa7, 0xf8, 0x9a, 0x75, 0xc1, 0xcd, 0x8c, 0x66, 0xbf, 0x2e, 0x21, 0x16, 0x40, 0xa7, 0xdf, 0xd5, 0xfe, 0x53, 0x76, + 0xfa, 0x63, 0xaf, 0x8e, 0xbe, 0x19, 0x66, 0x45, 0x6f, 0x21, 0x07, 0x0e, 0x75, 0x28, 0xa5, 0x8b, 0x48, 0x98, 0xa9, + 0x41, 0xb7, 0x6a, 0xca, 0x43, 0xc1, 0xba, 0xc6, 0x65, 0x34, 0x00, 0x36, 0xe4, 0xb6, 0xac, 0x2a, 0x43, 0x97, 0xc2, + 0xdb, 0x65, 0x8f, 0x9f, 0xff, 0xf8, 0x39, 0x51, 0x7e, 0xe6, 0xcb, 0xaa, 0xbf, 0xe8, 0xac, 0x92, 0x9c, 0xd8, 0xaf, + 0xd7, 0x29, 0x9d, 0xf3, 0xde, 0x49, 0x78, 0xcb, 0xf1, 0xcd, 0x47, 0x11, 0x8d, 0xbb, 0xf4, 0x1d, 0x88, 0x95, 0x2f, + 0xe7, 0xbe, 0x33, 0x96, 0x31, 0x8e, 0x36, 0xf6, 0x4c, 0xfb, 0x27, 0xfc, 0x6c, 0xad, 0x2a, 0xcc, 0xfa, 0x89, 0x49, + 0xe0, 0x1e, 0x2a, 0x02, 0x53, 0x3e, 0x17, 0x9f, 0x04, 0xd0, 0xc9, 0x6f, 0x5f, 0xd8, 0x6a, 0xaa, 0x8f, 0x8a, 0xe6, + 0x78, 0xa0, 0x08, 0x42, 0xb8, 0x61, 0xdb, 0xb2, 0xc2, 0x67, 0xbb, 0xcc, 0x36, 0xe3, 0xed, 0x3f, 0x70, 0x06, 0xe0, + 0x7b, 0xab, 0x96, 0x7b, 0x9e, 0x9a, 0x90, 0x1b, 0x61, 0x22, 0xbe, 0x8c, 0x48, 0x44, 0xd1, 0x94, 0x53, 0x50, 0xc4, + 0x83, 0x9f, 0x6f, 0xfe, 0x57, 0x2d, 0x19, 0x4f, 0x0d, 0x61, 0xba, 0x42, 0x2e, 0xd9, 0x0d, 0xbd, 0x63, 0xb8, 0x69, + 0x17, 0xb9, 0x41, 0xd9, 0x67, 0x09, 0x4f, 0xf7, 0xca, 0x78, 0x31, 0x7b, 0xf6, 0x64, 0x3e, 0x7f, 0x1d, 0xa4, 0x72, + 0x1b, 0xa5, 0xe2, 0x2b, 0x74, 0x3d, 0xfc, 0x69, 0xbd, 0x13, 0x6d, 0x05, 0x78, 0x80, 0x7c, 0x41, 0xd9, 0x07, 0xbe, + 0xfa, 0x02, 0xb0, 0x07, 0x75, 0xe9, 0x34, 0x12, 0xfc, 0xd2, 0x88, 0xfc, 0xdf, 0x52, 0x33, 0x20, 0x2f, 0x5a, 0xe5, + 0x3e, 0x17, 0xf3, 0x79, 0xbf, 0x21, 0x23, 0x3a, 0x23, 0x74, 0xa7, 0x7c, 0xf0, 0xb9, 0xaf, 0x0f, 0x4b, 0xe1, 0x77, + 0xbe, 0xe4, 0x81, 0x26, 0x2b, 0x29, 0x98, 0x4c, 0x30, 0x8a, 0xbd, 0x29, 0xbb, 0x87, 0x32, 0x14, 0xb5, 0xd5, 0x1e, + 0x1c, 0x4c, 0xa3, 0x08, 0x61, 0xf5, 0x82, 0x89, 0xf1, 0xc9, 0x19, 0x1a, 0x53, 0x2d, 0xcb, 0xa9, 0x26, 0x4f, 0x87, + 0xd6, 0x08, 0xb0, 0xcb, 0x31, 0xe0, 0x48, 0x06, 0xed, 0x2f, 0xab, 0xdb, 0x74, 0xb1, 0xab, 0xab, 0xb8, 0xc7, 0xa8, + 0x39, 0x21, 0xce, 0x0e, 0x6e, 0x16, 0x2b, 0x68, 0x2d, 0xd3, 0xcd, 0xc3, 0x3c, 0xcc, 0x65, 0x4f, 0xde, 0xd8, 0xd8, + 0x98, 0x51, 0x00, 0x29, 0x8f, 0x95, 0xe2, 0x8e, 0xc1, 0x48, 0xd3, 0xab, 0xaa, 0x40, 0xe0, 0x8a, 0x78, 0x36, 0x36, + 0xd2, 0xfc, 0xfc, 0xab, 0xc2, 0x4e, 0x71, 0x15, 0x4d, 0xb3, 0x92, 0x80, 0xa4, 0x4b, 0x63, 0x63, 0xaf, 0x3e, 0x0b, + 0xf7, 0x34, 0xf1, 0x41, 0x86, 0x57, 0x18, 0x36, 0xf3, 0x48, 0x0d, 0x39, 0xd3, 0x86, 0x31, 0x10, 0xcd, 0x5f, 0xd7, + 0xc9, 0xf7, 0x66, 0xcf, 0x39, 0x6c, 0x97, 0x01, 0xa1, 0x87, 0xba, 0x72, 0x40, 0x21, 0x13, 0xb8, 0x55, 0xd0, 0xdd, + 0xb9, 0xa5, 0xbc, 0xe3, 0x93, 0xc2, 0xc7, 0xd7, 0x48, 0xbc, 0x35, 0xb4, 0xac, 0xea, 0x72, 0x60, 0x15, 0x07, 0xf5, + 0x55, 0xbc, 0xfd, 0xb5, 0xa5, 0xdf, 0x8f, 0x17, 0x3f, 0xd4, 0x73, 0x93, 0x99, 0x93, 0xf7, 0x66, 0x93, 0x4a, 0x26, + 0x04, 0x49, 0x09, 0x1b, 0x0e, 0x15, 0xf9, 0xf1, 0x4b, 0x42, 0x41, 0xab, 0xf1, 0xb1, 0x3b, 0x59, 0x74, 0x57, 0xe4, + 0x0a, 0x7b, 0x6f, 0x4f, 0xa2, 0x40, 0x1a, 0xd1, 0x16, 0x42, 0x77, 0x6e, 0x7f, 0xed, 0x79, 0x17, 0x0a, 0xa4, 0xe7, + 0x44, 0x8b, 0x91, 0x16, 0x3e, 0xf4, 0x12, 0x6d, 0xde, 0xfd, 0x4f, 0x40, 0x9f, 0x9d, 0x1b, 0x86, 0xec, 0x09, 0x63, + 0x9f, 0x91, 0xdb, 0xa0, 0x41, 0xb7, 0xde, 0x97, 0x02, 0x3b, 0xf3, 0xf1, 0xc2, 0xf3, 0x91, 0xae, 0x2b, 0x01, 0x00, + 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, + 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x63, 0x36, 0x20, 0x49, 0x74, 0xcd, 0x2b, 0x32, + 0xb4, 0x72, 0xd8, 0x8c, 0x5e, 0xa5, 0xba, 0x64, 0x7b, 0x7c, 0x95, 0x27, 0x43, 0x64, 0xe4, 0xc3, 0x24, 0x87, 0x0b, + 0x29, 0x80, 0x56, 0x5b, 0x68, 0x42, 0x38, 0x57, 0xda, 0x78, 0xa6, 0xeb, 0xa3, 0x87, 0x69, 0x75, 0x01, 0x83, 0xfe, + 0x5c, 0x2d, 0x60, 0xcc, 0x59, 0xbe, 0x5f, 0x7c, 0x84, 0x2f, 0xd6, 0x21, 0xd5, 0xa9, 0x1e, 0x21, 0x49, 0x2d, 0x39, + 0x51, 0xb8, 0x91, 0x55, 0xd3, 0x18, 0xfe, 0x03, 0x67, 0x71, 0xbe, 0x36, 0xec, 0xe0, 0xfa, 0x80, 0xe1, 0xc9, 0xa7, + 0x18, 0xf7, 0x82, 0x6a, 0xa6, 0xec, 0x4a, 0x9f, 0xb4, 0x3a, 0x23, 0x2f, 0x8f, 0x21, 0x5e, 0x91, 0xb4, 0x5e, 0x61, + 0xc5, 0xdd, 0x52, 0x07, 0x18, 0xfd, 0x94, 0x57, 0x46, 0xad, 0xbf, 0x8e, 0x83, 0xb6, 0x41, 0x03, 0xb2, 0xc9, 0x12, + 0xdd, 0x93, 0x65, 0xfc, 0x53, 0x12, 0xfa, 0x5e, 0x2b, 0x00, 0x10, 0x73, 0x01, 0x3f, 0x84, 0xe3, 0x88, 0xb5, 0xd6, + 0xe1, 0x53, 0xba, 0x03, 0x2b, 0xfe, 0xf9, 0x37, 0x4d, 0x6c, 0x92, 0x6c, 0x50, 0xc6, 0xe1, 0x65, 0xbc, 0xf3, 0x72, + 0x44, 0x39, 0xf0, 0xdf, 0x26, 0x70, 0x55, 0x82, 0x8e, 0x65, 0x22, 0x4d, 0x49, 0x3c, 0x6d, 0xac, 0x51, 0x1f, 0xe7, + 0x33, 0x28, 0xcd, 0xce, 0x89, 0x25, 0x54, 0x1a, 0xf3, 0xba, 0xe5, 0xa9, 0x6a, 0xf3, 0x47, 0xdd, 0xf3, 0xf2, 0x55, + 0x2b, 0x9a, 0x95, 0xd0, 0x84, 0x79, 0x80, 0x33, 0x7a, 0xe9, 0xbe, 0x42, 0x9f, 0x08, 0xa7, 0x19, 0xe0, 0x5d, 0x59, + 0x71, 0x1f, 0xb5, 0xa1, 0x66, 0xf6, 0x47, 0x37, 0x90, 0x07, 0x99, 0xe0, 0x83, 0x27, 0x8c, 0xb7, 0x18, 0x84, 0x72, + 0x2e, 0x67, 0x63, 0x52, 0xd9, 0xf5, 0x07, 0xcf, 0x28, 0xde, 0x82, 0xe6, 0xbf, 0x00, 0xe4, 0xa8, 0xa4, 0xf2, 0xbc, + 0x38, 0x9b, 0x11, 0x23, 0x6d, 0x6e, 0x16, 0x6c, 0xbc, 0x4c, 0x5b, 0x0a, 0x14, 0xb7, 0x40, 0x93, 0x60, 0xe8, 0x0e, + 0x6d, 0xa5, 0x22, 0x3f, 0xac, 0x28, 0xcf, 0xe2, 0xb5, 0x7b, 0xde, 0x85, 0x3a, 0x73, 0xe3, 0xa5, 0xd9, 0x41, 0x68, + 0x39, 0x10, 0xe2, 0xf6, 0xd8, 0xca, 0xe6, 0x9c, 0xd1, 0x8e, 0x93, 0x22, 0xa8, 0xb7, 0x5f, 0xda, 0x48, 0x50, 0x8e, + 0x31, 0x03, 0x2a, 0x9d, 0xbe, 0xda, 0x3f, 0x69, 0x2a, 0xc0, 0x1c, 0xcd, 0xd4, 0xa3, 0x4e, 0xd3, 0x51, 0xd4, 0xcd, + 0x41, 0x4b, 0x1b, 0xaa, 0x42, 0xdb, 0x99, 0x4a, 0x59, 0xa2, 0x04, 0x28, 0x9b, 0xd5, 0xf7, 0xf0, 0xc4, 0x70, 0xd0, + 0x26, 0x11, 0xf0, 0xac, 0xf6, 0xc9, 0xb2, 0x61, 0x78, 0xf5, 0x41, 0xe8, 0x13, 0xb3, 0xa4, 0x52, 0x7d, 0x71, 0xe6, + 0x43, 0xd7, 0x5c, 0x92, 0x54, 0x25, 0x17, 0x6e, 0x03, 0x08, 0x73, 0x1c, 0x21, 0x73, 0x67, 0x1b, 0x3e, 0xb9, 0x44, + 0xc9, 0x1a, 0x7b, 0x27, 0x64, 0x77, 0x73, 0x86, 0xf9, 0x26, 0xb8, 0xe8, 0xc3, 0x10, 0x15, 0xc5, 0xeb, 0xcd, 0x97, + 0x5a, 0xde, 0x57, 0x29, 0x28, 0xdd, 0x26, 0x56, 0x2e, 0x93, 0x0c, 0x15, 0xb6, 0x90, 0x7d, 0xb6, 0xf6, 0xe5, 0x06, + 0x9c, 0x08, 0x34, 0x68, 0xc8, 0x2a, 0x46, 0x7e, 0x99, 0xfc, 0xea, 0x15, 0x9d, 0x4d, 0x78, 0x01, 0x85, 0x06, 0xdd, + 0x0f, 0x07, 0x0c, 0x78, 0xbe, 0x5e, 0x07, 0xc8, 0xea, 0x8d, 0x43, 0x07, 0x17, 0x4f, 0x00, 0x9d, 0x0f, 0x38, 0x55, + 0x15, 0x83, 0xb4, 0xc0, 0xe8, 0x23, 0xda, 0x3d, 0x12, 0xbc, 0x72, 0x8b, 0x4f, 0xb0, 0x53, 0x3b, 0xb8, 0xc2, 0x42, + 0x02, 0x34, 0x16, 0x27, 0x67, 0x4d, 0xb4, 0x1f, 0x2b, 0x02, 0xf5, 0x7c, 0xad, 0x0d, 0xcc, 0x8a, 0x56, 0x78, 0xb4, + 0x16, 0x87, 0x7d, 0xe7, 0xab, 0x0e, 0x02, 0x8d, 0x8b, 0x4e, 0x8b, 0xb4, 0x61, 0x22, 0x8d, 0x5e, 0xe6, 0x27, 0xe3, + 0xcf, 0x63, 0x6b, 0xce, 0x91, 0xd5, 0x4f, 0xfd, 0xa4, 0x12, 0x57, 0x0c, 0xd6, 0xf1, 0x37, 0xc1, 0x7d, 0xf6, 0x17, + 0xf2, 0xf4, 0xe3, 0x5b, 0xeb, 0x08, 0xcc, 0x89, 0xfa, 0x04, 0x6c, 0xab, 0xcc, 0xbe, 0x82, 0x59, 0x3a, 0x15, 0xbf, + 0x89, 0x06, 0x18, 0x2d, 0xb9, 0xdb, 0xe6, 0xbc, 0x33, 0x49, 0x91, 0x0f, 0x4b, 0x42, 0x77, 0x35, 0x5f, 0x43, 0xb2, + 0x50, 0x59, 0xca, 0xaa, 0xc5, 0xce, 0xf6, 0x67, 0xb2, 0x3f, 0x5c, 0xe8, 0x47, 0xb8, 0x67, 0x74, 0xd6, 0x6b, 0x17, + 0x66, 0x17, 0x18, 0xf6, 0xaa, 0x14, 0x8f, 0x00, 0x52, 0x5b, 0x6e, 0x1d, 0xbe, 0xb3, 0x7f, 0x7c, 0xd1, 0xfe, 0x36, + 0x44, 0x84, 0x93, 0x33, 0xd3, 0xb6, 0xcd, 0x0f, 0x05, 0xa6, 0x28, 0xb4, 0x2d, 0x0d, 0xa2, 0xe4, 0xef, 0x52, 0x59, + 0xe8, 0x32, 0xaf, 0xd3, 0x2e, 0x71, 0x93, 0x9b, 0xcf, 0x4c, 0x13, 0x96, 0x45, 0x6a, 0x4d, 0x99, 0x33, 0xc6, 0xa7, + 0x8a, 0x19, 0x2c, 0x7e, 0xd2, 0x02, 0x16, 0x34, 0x97, 0x5d, 0xca, 0xd4, 0x07, 0xf8, 0xa6, 0xf7, 0x12, 0x07, 0x20, + 0xb1, 0xd2, 0xdc, 0x16, 0xc0, 0x22, 0xa7, 0x8d, 0x1b, 0xfb, 0x57, 0xe6, 0xa7, 0xc5, 0x78, 0x0b, 0xea, 0xad, 0x6b, + 0xc6, 0x13, 0x34, 0xf0, 0x41, 0x9f, 0xfb, 0x21, 0xd4, 0x02, 0xfb, 0x67, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, + 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, + 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x91, 0xab, 0x29, 0x95, 0xc5, 0x2d, 0x9a, 0x05, 0x6c, 0xb4, 0x82, 0x45, 0x26, + 0xe8, 0xee, 0xef, 0xad, 0xed, 0x12, 0xb4, 0xb1, 0xc3, 0xcd, 0x53, 0xc4, 0x82, 0x95, 0x18, 0x0f, 0x22, 0xce, 0x16, + 0xf1, 0x2f, 0xe1, 0x6e, 0xef, 0x63, 0x53, 0x57, 0xb3, 0x66, 0xb9, 0x1c, 0x35, 0x09, 0x85, 0xd1, 0xba, 0xf3, 0xa7, + 0xab, 0xba, 0x8f, 0x74, 0x2b, 0x40, 0xd5, 0x28, 0x68, 0x8e, 0x9a, 0x25, 0x54, 0xbd, 0x6d, 0x7e, 0xb0, 0xda, 0x88, + 0xeb, 0x86, 0x8e, 0x2f, 0x0d, 0x2e, 0xcb, 0x55, 0x72, 0x65, 0x85, 0xcc, 0x85, 0x9a, 0xcf, 0xfc, 0x1e, 0x53, 0xb5, + 0x5c, 0x96, 0x72, 0xc4, 0x51, 0xe0, 0x6c, 0x0d, 0xaf, 0x16, 0xdf, 0xcf, 0x50, 0xce, 0x73, 0x13, 0x1d, 0x59, 0x65, + 0xef, 0xf9, 0x4e, 0x83, 0xc5, 0x03, 0x80, 0x4e, 0xc5, 0xb2, 0x89, 0xcd, 0xcb, 0x5d, 0xd6, 0x83, 0xff, 0x44, 0x42, + 0x73, 0x5b, 0x0f, 0x2a, 0x2a, 0x88, 0x8e, 0xed, 0x26, 0xe1, 0x24, 0xd7, 0xd4, 0x6f, 0xcb, 0x37, 0x8f, 0x38, 0xdc, + 0x4e, 0xdf, 0x8b, 0xd8, 0xe9, 0x1a, 0x7b, 0xb8, 0x36, 0x04, 0x23, 0x09, 0xf0, 0x3a, 0x7f, 0x49, 0xdb, 0xff, 0x4b, + 0xdc, 0x3f, 0xf2, 0xbf, 0x46, 0xfe, 0x6c, 0xf7, 0xd3, 0xbd, 0x7a, 0xd5, 0x4a, 0xeb, 0x24, 0x72, 0xa8, 0xfc, 0x08, + 0x22, 0x4d, 0x71, 0x8e, 0x73, 0x65, 0x6e, 0x0a, 0xb1, 0xb3, 0x2c, 0x85, 0xe9, 0x98, 0x17, 0x1d, 0xd5, 0x64, 0xd8, + 0x8d, 0xe2, 0x22, 0x75, 0xef, 0xfb, 0x33, 0x33, 0xc5, 0x2f, 0xf7, 0x27, 0xeb, 0x1a, 0xa5, 0xde, 0xd2, 0x68, 0x81, + 0x51, 0x2f, 0x12, 0xf6, 0x93, 0x8f, 0xcb, 0xa5, 0x69, 0x1f, 0x7e, 0xbc, 0xe6, 0xa0, 0x9b, 0xc4, 0xc3, 0x7e, 0x63, + 0xd5, 0x16, 0x4c, 0xeb, 0xfc, 0xad, 0x25, 0x5f, 0xfc, 0x66, 0x4f, 0x33, 0x92, 0x04, 0x4c, 0x52, 0x18, 0xb2, 0xf2, + 0x29, 0x44, 0xec, 0x6b, 0x18, 0xe2, 0x8c, 0xcf, 0x48, 0x6f, 0x26, 0xe6, 0x20, 0x7d, 0x1f, 0xdf, 0x2d, 0x28, 0xbe, + 0x49, 0x92, 0x3b, 0x7b, 0xe5, 0x51, 0x15, 0xb6, 0x6e, 0x2d, 0x55, 0xf6, 0x64, 0xed, 0xcd, 0xe5, 0x1b, 0xf9, 0xbc, + 0x1d, 0x2c, 0x95, 0xb4, 0x54, 0x06, 0xc4, 0xb9, 0x4c, 0x88, 0x73, 0x9b, 0x66, 0xcf, 0xce, 0xbe, 0x9a, 0x03, 0xcc, + 0x27, 0x13, 0x22, 0x2e, 0x5d, 0x1e, 0xc1, 0x49, 0xe1, 0x5b, 0xa3, 0x73, 0xdd, 0x0e, 0xc9, 0x8c, 0x3d, 0x8a, 0x98, + 0x2f, 0xcf, 0x95, 0xd8, 0x41, 0x4f, 0x7a, 0xdf, 0x10, 0x6c, 0x32, 0xfe, 0xdb, 0xc9, 0xec, 0x5c, 0x3c, 0x43, 0xd0, + 0x4a, 0xaa, 0x8f, 0x64, 0x44, 0x64, 0x58, 0xac, 0x23, 0xdc, 0x26, 0xd5, 0x6c, 0xe7, 0x0d, 0xca, 0x4e, 0x91, 0x17, + 0xe3, 0x89, 0x7c, 0xe4, 0x02, 0x69, 0x4a, 0xb3, 0x9b, 0x5d, 0x8c, 0x8b, 0x06, 0xca, 0xb8, 0x7a, 0x45, 0x69, 0x04, + 0x0f, 0xb9, 0xbb, 0x60, 0xfa, 0x9d, 0x5e, 0xbf, 0xf3, 0x07, 0x07, 0xf5, 0xc4, 0x0b, 0x56, 0xf2, 0xf9, 0x2a, 0x7b, + 0x6e, 0x82, 0x56, 0x1f, 0x3a, 0xe4, 0xbe, 0xe5, 0x3f, 0x5d, 0xdd, 0xaf, 0xae, 0xf2, 0xbd, 0x27, 0x2d, 0x9b, 0x92, + 0xc2, 0x42, 0xa6, 0xb6, 0x60, 0xaf, 0x37, 0xf7, 0xad, 0x34, 0xcf, 0x3c, 0x86, 0x1c, 0x14, 0x7b, 0x66, 0xa5, 0x72, + 0x29, 0xf5, 0xdd, 0xdc, 0xe8, 0x95, 0xa3, 0x8b, 0xdc, 0x02, 0x26, 0x0c, 0xb9, 0xb8, 0x02, 0xdb, 0x42, 0xed, 0x34, + 0x4d, 0x69, 0xc1, 0x68, 0xae, 0xf6, 0xbe, 0xe5, 0xfe, 0xc1, 0x57, 0xbb, 0x55, 0xf6, 0x4b, 0x73, 0xf5, 0xb7, 0x4f, + 0x1b, 0xe3, 0xca, 0xd9, 0x3a, 0x2a, 0x54, 0x29, 0xb7, 0x33, 0x57, 0x5f, 0xfa, 0xe5, 0x3e, 0x0e, 0xf9, 0xdd, 0x97, + 0x23, 0x07, 0xf5, 0x6c, 0x1e, 0x9f, 0x29, 0x8f, 0xfb, 0xfd, 0x4a, 0xae, 0x66, 0x60, 0xef, 0xbb, 0x6d, 0x2c, 0xb5, + 0x88, 0x97, 0x8e, 0x99, 0x31, 0xbc, 0x66, 0xd8, 0xfd, 0x65, 0x01, 0x6d, 0x57, 0x3b, 0xe9, 0x70, 0xf2, 0x54, 0x5d, + 0xec, 0x36, 0x5e, 0x7e, 0x26, 0xb3, 0x8d, 0x79, 0xea, 0xb6, 0x3b, 0x6c, 0x8f, 0xd9, 0x2d, 0x7d, 0x6e, 0xc9, 0xb2, + 0xf2, 0x6f, 0x30, 0x95, 0x2d, 0xab, 0xfd, 0x8e, 0xb6, 0x5e, 0x84, 0x12, 0x97, 0x2d, 0xaf, 0xfb, 0x1c, 0x58, 0xcd, + 0x30, 0x23, 0x4f, 0xba, 0xb4, 0x34, 0x4a, 0x31, 0x48, 0xcd, 0xdc, 0x2f, 0x1e, 0x71, 0x0e, 0xd0, 0x98, 0xc6, 0xfb, + 0x6c, 0x3f, 0xc5, 0xbc, 0x50, 0x34, 0x47, 0x45, 0xd9, 0xf4, 0xaf, 0xce, 0x66, 0xf8, 0xeb, 0x99, 0xe4, 0x23, 0xf3, + 0x72, 0xb6, 0x29, 0xf7, 0x96, 0xf2, 0x48, 0x56, 0x10, 0xc7, 0xbf, 0x51, 0x1b, 0x30, 0xe2, 0xe3, 0xf0, 0x68, 0x4a, + 0xa6, 0x8c, 0xd4, 0x75, 0x89, 0x5b, 0x6a, 0xcf, 0xa6, 0x6d, 0xdb, 0x0a, 0xb4, 0x2a, 0x4b, 0x1d, 0x8a, 0x4b, 0x81, + 0x09, 0x34, 0x66, 0x12, 0x05, 0xb2, 0xa3, 0x2a, 0xb2, 0x52, 0x95, 0x67, 0x6f, 0xe1, 0x96, 0x95, 0xc6, 0xe9, 0xff, + 0x4c, 0x5e, 0xb0, 0x63, 0xf3, 0x0e, 0x10, 0xc0, 0x01, 0xfe, 0xb7, 0x00, 0x58, 0x59, 0x39, 0x2d, 0x44, 0x58, 0xe2, + 0xb3, 0xa3, 0xcb, 0x78, 0x92, 0xdd, 0x1e, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, + 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, + 0x6a, 0xff, 0xe0, 0xc6, 0x5c, 0xfb, 0xd0, 0x88, 0xd6, 0x85, 0x76, 0xcd, 0xc1, 0x7b, 0xf7, 0x39, 0xc7, 0xbe, 0xad, + 0x3c, 0x14, 0xa6, 0x71, 0xbb, 0x2c, 0x6c, 0x03, 0x33, 0x51, 0xde, 0x49, 0xd2, 0x51, 0xee, 0xce, 0x91, 0x8b, 0x73, + 0x90, 0x33, 0x7d, 0x77, 0x40, 0xb9, 0xae, 0xe3, 0x80, 0xf4, 0x87, 0x2b, 0x52, 0x60, 0x3d, 0xfe, 0x67, 0x82, 0x48, + 0x71, 0x58, 0xcd, 0x22, 0x02, 0xaa, 0xae, 0x6a, 0xd6, 0xbb, 0x97, 0xb0, 0x5a, 0x5b, 0xc8, 0xea, 0x27, 0x32, 0x3f, + 0x49, 0x36, 0x81, 0x0f, 0x9e, 0x97, 0x98, 0x70, 0x4d, 0x8f, 0x6e, 0x0b, 0xaf, 0xd1, 0x29, 0x2b, 0x7f, 0xa0, 0x01, + 0xf2, 0x4c, 0xa7, 0x4d, 0x7e, 0xee, 0x48, 0x7d, 0x27, 0xa2, 0x4c, 0x24, 0x6a, 0x5e, 0x63, 0x3f, 0xb5, 0x6b, 0x02, + 0x04, 0x5e, 0x98, 0x98, 0x0e, 0xcd, 0x83, 0x95, 0xce, 0x7b, 0xbf, 0xdc, 0x70, 0xf0, 0x08, 0x9c, 0x3b, 0xc3, 0xe1, + 0x78, 0x39, 0x72, 0x53, 0x31, 0xec, 0x1c, 0x36, 0xdf, 0x20, 0x7f, 0x88, 0x1e, 0x33, 0x23, 0x73, 0xae, 0x46, 0x42, + 0x70, 0x1c, 0xd6, 0x6a, 0x93, 0x75, 0x85, 0x95, 0x2e, 0xb6, 0x27, 0x7f, 0x50, 0x77, 0xa0, 0x19, 0xbf, 0xac, 0x87, + 0x66, 0x02, 0x9b, 0x3b, 0xb7, 0xa4, 0x12, 0xf9, 0xec, 0x2f, 0xe0, 0x2a, 0xeb, 0x1f, 0x0b, 0x61, 0xc1, 0xf0, 0x75, + 0x9d, 0xb3, 0x6c, 0x10, 0x38, 0xd3, 0x50, 0x54, 0x69, 0x71, 0xe7, 0x92, 0x72, 0x7d, 0x6f, 0xff, 0xc2, 0x31, 0xac, + 0xd2, 0x1d, 0xfc, 0xfd, 0xea, 0x55, 0xb8, 0xa3, 0xfd, 0xab, 0x84, 0x1d, 0x8c, 0xde, 0x84, 0x33, 0x36, 0xd6, 0xf0, + 0xa8, 0x2e, 0xa2, 0xdb, 0xc5, 0x04, 0x4e, 0x58, 0x42, 0x7e, 0x64, 0xec, 0x7b, 0xa7, 0xb5, 0xae, 0x37, 0x3c, 0x16, + 0x81, 0xf4, 0x8c, 0x02, 0xf1, 0x0a, 0x3b, 0x69, 0x20, 0x52, 0x0d, 0xed, 0x6f, 0xed, 0x8e, 0x22, 0x7b, 0x33, 0x05, + 0x23, 0x7e, 0xb5, 0xb0, 0xe4, 0xa4, 0x81, 0x41, 0x73, 0x10, 0x20, 0x37, 0xd6, 0x25, 0xf1, 0xde, 0x8d, 0x1b, 0xe9, + 0x54, 0x75, 0x81, 0x68, 0x4c, 0xf3, 0x83, 0x3d, 0x41, 0x52, 0x68, 0xe4, 0x3a, 0xe2, 0xcb, 0x00, 0xa4, 0x3a, 0x6f, + 0xb8, 0xc6, 0x64, 0x2e, 0xb5, 0xad, 0xb8, 0xd9, 0x3d, 0xee, 0xdb, 0xb7, 0xc0, 0x51, 0x08, 0x96, 0x54, 0x1e, 0xe8, + 0xf6, 0xc7, 0x95, 0x0b, 0x06, 0xcd, 0x98, 0x37, 0xb0, 0x0f, 0xa0, 0x72, 0xa0, 0xe7, 0xd2, 0x0d, 0x16, 0xf1, 0xe9, + 0x04, 0xa9, 0xf5, 0x50, 0xcd, 0xa1, 0x80, 0xa5, 0xfc, 0x4c, 0x32, 0x1b, 0x73, 0x67, 0xf1, 0x4e, 0x87, 0x15, 0x6a, + 0x1f, 0xea, 0xd5, 0x44, 0x41, 0x4a, 0x37, 0x17, 0x96, 0x77, 0xe2, 0xfa, 0x02, 0x36, 0x01, 0xf5, 0x94, 0xfa, 0xf7, + 0xa1, 0x9d, 0x07, 0x31, 0x21, 0x6e, 0x24, 0x6f, 0xe3, 0xdc, 0x4c, 0xe4, 0xd8, 0x45, 0x20, 0x6e, 0x55, 0x0b, 0x8a, + 0x81, 0x15, 0x4b, 0xa8, 0x94, 0xf4, 0xdd, 0x7e, 0x7a, 0x21, 0x43, 0xce, 0xac, 0xaf, 0x4d, 0x77, 0xba, 0x3a, 0x75, + 0x8f, 0x3d, 0x61, 0x1a, 0x07, 0x66, 0x95, 0x2b, 0x48, 0x3c, 0xae, 0x38, 0x0b, 0x7a, 0x0c, 0x10, 0xa7, 0x16, 0x5f, + 0xc6, 0x6a, 0x93, 0x60, 0x69, 0x6d, 0x67, 0xca, 0x74, 0x06, 0x19, 0x0f, 0x1b, 0xbf, 0xb7, 0x1a, 0x98, 0x62, 0xd9, + 0x55, 0xb5, 0x7a, 0xeb, 0x45, 0x84, 0xb8, 0x50, 0x51, 0xd1, 0x7f, 0xa8, 0x79, 0x55, 0x8b, 0xeb, 0xcf, 0xbd, 0xf7, + 0xf4, 0xb6, 0xe0, 0xd5, 0x78, 0x24, 0x35, 0x0f, 0xc7, 0x16, 0xa0, 0x53, 0x46, 0x6f, 0xba, 0x41, 0x89, 0xd5, 0xde, + 0x10, 0x32, 0x73, 0x7e, 0x8d, 0x4c, 0x42, 0x6f, 0x0c, 0x5f, 0xce, 0x3a, 0x3e, 0xbc, 0x69, 0xed, 0xb0, 0x24, 0x0c, + 0x09, 0xca, 0x49, 0xe6, 0xdf, 0xe4, 0xc9, 0x06, 0x72, 0x56, 0x00, 0xd9, 0x26, 0x22, 0xee, 0x42, 0xbb, 0x40, 0x22, + 0xdf, 0x54, 0x6b, 0x5e, 0x95, 0x44, 0x45, 0xd1, 0x24, 0xb6, 0xfc, 0x20, 0x45, 0x9f, 0xe3, 0x17, 0x4f, 0x27, 0x70, + 0xcc, 0xcf, 0xe0, 0x79, 0x3c, 0x6e, 0xae, 0x76, 0xfe, 0xe4, 0x28, 0x1e, 0x2a, 0xc6, 0x92, 0x42, 0x00, 0x2f, 0x82, + 0xba, 0x8e, 0xd0, 0xd6, 0x44, 0xc3, 0x50, 0xa2, 0xb2, 0x4f, 0x2e, 0x58, 0x79, 0x88, 0xc0, 0x55, 0x6b, 0xa5, 0xe7, + 0x12, 0x2a, 0x71, 0xd7, 0x78, 0xdf, 0xfc, 0x61, 0xd8, 0x67, 0x69, 0x30, 0x2d, 0x29, 0x81, 0x4e, 0x0e, 0x34, 0xd9, + 0x3c, 0xdf, 0xbe, 0x92, 0xe2, 0x9c, 0x12, 0x91, 0x7a, 0xed, 0x02, 0x04, 0x18, 0x32, 0x66, 0x8e, 0xad, 0x95, 0x19, + 0x36, 0x43, 0x3d, 0xb5, 0x7f, 0x76, 0xcd, 0x61, 0x91, 0x9f, 0xe8, 0x1f, 0xd1, 0x3c, 0x80, 0xb4, 0x36, 0x38, 0x6e, + 0x00, 0xf7, 0x23, 0xcd, 0xf8, 0x11, 0x97, 0x7a, 0xc1, 0x10, 0x97, 0x98, 0xe8, 0xc7, 0xa0, 0x55, 0x04, 0xac, 0x2e, + 0x9f, 0xaf, 0x01, 0x61, 0xfb, 0x49, 0x2a, 0x2d, 0xf7, 0xbf, 0xc1, 0xd6, 0xc6, 0x9c, 0x30, 0xb4, 0xfd, 0x48, 0xfb, + 0x40, 0x98, 0xd8, 0xb3, 0x39, 0xda, 0x44, 0x52, 0xae, 0x01, 0xc1, 0x9a, 0x36, 0x5c, 0xc9, 0x9b, 0x41, 0x15, 0x6d, + 0xb0, 0x04, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, + 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x65, 0xb7, 0xa3, 0xa6, + 0x9f, 0x15, 0xe5, 0x43, 0x4d, 0x5b, 0xc2, 0x20, 0x44, 0xa6, 0xc5, 0x9d, 0x22, 0x03, 0x4e, 0x45, 0xfa, 0xec, 0xd0, + 0x8e, 0x56, 0xc9, 0x66, 0x3f, 0x68, 0xbe, 0xf2, 0x61, 0x8e, 0x30, 0x1d, 0xd1, 0xa3, 0x06, 0x27, 0x60, 0x7d, 0xc0, + 0x43, 0x9d, 0x7f, 0xe3, 0x78, 0x49, 0xb0, 0x3f, 0x99, 0xa6, 0x4e, 0xe3, 0xc7, 0xf4, 0x90, 0x8b, 0x3a, 0xea, 0xee, + 0x79, 0x72, 0x15, 0x29, 0xa6, 0x2b, 0x2e, 0xd9, 0xb5, 0x17, 0xd1, 0x79, 0xed, 0xd0, 0x22, 0x9f, 0xd0, 0x90, 0x95, + 0x3a, 0x05, 0x8a, 0x3b, 0xdf, 0xe2, 0x95, 0xb7, 0xd6, 0x82, 0x78, 0xc7, 0xdc, 0x29, 0x3a, 0x5e, 0x50, 0x7f, 0xe0, + 0x8a, 0x2a, 0x7e, 0xb9, 0xf7, 0x27, 0x77, 0x1a, 0x4d, 0x3a, 0x23, 0xf5, 0xff, 0x27, 0xac, 0x67, 0x15, 0x04, 0xd3, + 0x34, 0xd1, 0xdc, 0x08, 0xcb, 0x71, 0x2d, 0xb8, 0x9c, 0x6c, 0x40, 0x92, 0xcc, 0x41, 0x4c, 0xa7, 0x80, 0x03, 0xe5, + 0x4e, 0x59, 0xd8, 0x2e, 0x10, 0x5b, 0xf2, 0x81, 0x7a, 0x24, 0xd8, 0xa9, 0x0b, 0x95, 0xc0, 0x29, 0xc9, 0x15, 0xd2, + 0x26, 0xa4, 0x5e, 0x57, 0xda, 0x0d, 0x81, 0xf6, 0xaa, 0x3d, 0x58, 0xa7, 0xfb, 0x7e, 0x7f, 0x60, 0x95, 0x34, 0xaf, + 0x04, 0x19, 0x1e, 0x2c, 0xeb, 0x35, 0x7b, 0x5e, 0xde, 0x73, 0xee, 0xd0, 0xcf, 0x2a, 0x80, 0x8e, 0x41, 0x05, 0x44, + 0x1a, 0xb5, 0x89, 0x7a, 0xf3, 0x26, 0xc1, 0x20, 0x43, 0x0d, 0x79, 0xaf, 0x4c, 0x02, 0xfc, 0x8f, 0x55, 0x07, 0xa2, + 0x79, 0x73, 0x11, 0x58, 0x3f, 0x42, 0xa7, 0x11, 0xf0, 0xc1, 0x2d, 0x34, 0x58, 0x24, 0xa5, 0xbe, 0x88, 0x0c, 0xc3, + 0x34, 0xd2, 0xf2, 0xbd, 0x39, 0xf4, 0x0b, 0x9c, 0x70, 0xe9, 0x2b, 0xeb, 0x8b, 0xd9, 0xc2, 0x2d, 0x49, 0x77, 0xa7, + 0x38, 0x01, 0xd4, 0xd8, 0x0d, 0x96, 0xd5, 0x34, 0xfb, 0x01, 0x0e, 0x09, 0x3a, 0xf9, 0x69, 0xcd, 0x0e, 0x21, 0xd4, + 0x1e, 0x4f, 0x12, 0x4f, 0x6e, 0xb5, 0xc8, 0x28, 0x9c, 0x88, 0x95, 0x9b, 0x75, 0xa8, 0xcc, 0x14, 0xf8, 0x58, 0xcd, + 0x59, 0x6c, 0x3b, 0x6d, 0x96, 0xf9, 0xf8, 0x54, 0x44, 0x44, 0x92, 0xdd, 0xac, 0xa4, 0xff, 0x18, 0xc7, 0x39, 0xb2, + 0x57, 0xa9, 0xe8, 0xd8, 0x52, 0x41, 0xdb, 0xf8, 0xb1, 0x43, 0xe5, 0x06, 0xfa, 0x30, 0xcb, 0xa8, 0xf8, 0xee, 0x12, + 0x68, 0x7f, 0x10, 0x9f, 0xdf, 0x5e, 0x31, 0xed, 0xb1, 0x98, 0x3c, 0x2e, 0x14, 0x39, 0xac, 0x62, 0xed, 0x2e, 0xd1, + 0xfd, 0x45, 0xb4, 0x30, 0xa3, 0x12, 0x03, 0x3c, 0xeb, 0x67, 0x2b, 0x12, 0x69, 0xed, 0x26, 0xeb, 0xe4, 0xf9, 0xc2, + 0x58, 0x20, 0x67, 0xe0, 0x4a, 0x78, 0x15, 0x1b, 0x01, 0x79, 0x00, 0x07, 0xf6, 0x49, 0xf2, 0x08, 0x41, 0x63, 0x6a, + 0xd9, 0xe0, 0xcb, 0xd6, 0x10, 0xee, 0x78, 0x31, 0x2e, 0x50, 0xc9, 0xbf, 0x76, 0x60, 0x35, 0x14, 0xca, 0xcf, 0x2f, + 0x26, 0x5a, 0xda, 0x00, 0xd1, 0x0e, 0x22, 0xd9, 0xd6, 0xa2, 0x0e, 0x89, 0x45, 0x48, 0x7d, 0x47, 0x6d, 0x6b, 0xec, + 0x55, 0xac, 0x92, 0xa9, 0xd5, 0xc1, 0x3b, 0x05, 0x6f, 0xf9, 0x40, 0xf4, 0xdf, 0x92, 0x54, 0xac, 0x52, 0xf0, 0xe7, + 0xf7, 0x5f, 0xb7, 0x41, 0x8c, 0x5f, 0x64, 0x19, 0xc6, 0x23, 0x4e, 0x53, 0xef, 0x26, 0x11, 0x60, 0x78, 0xdd, 0x70, + 0x68, 0xe8, 0x71, 0xae, 0x59, 0x27, 0x94, 0xdc, 0x1f, 0xf9, 0x98, 0x77, 0x16, 0xef, 0x55, 0x85, 0x34, 0x43, 0x2c, + 0x66, 0x45, 0x5e, 0xe3, 0x42, 0xb5, 0x7d, 0x6e, 0xf2, 0x80, 0xee, 0x6b, 0x45, 0x3c, 0xbc, 0xbf, 0x94, 0x23, 0x56, + 0x5e, 0x83, 0x83, 0x66, 0x7a, 0x1d, 0x73, 0x6a, 0x53, 0x06, 0x4b, 0x5b, 0xc9, 0x33, 0x7d, 0x9f, 0x1f, 0x14, 0x98, + 0x58, 0xf8, 0xfd, 0x5b, 0xd3, 0xb6, 0x8b, 0x21, 0xd5, 0xd7, 0xa5, 0x01, 0x0e, 0xee, 0xea, 0xec, 0xc4, 0xcf, 0x92, + 0xcc, 0x84, 0x40, 0x29, 0x6b, 0x86, 0x55, 0x38, 0xe3, 0xa0, 0xef, 0x7e, 0x7c, 0xe2, 0x67, 0x95, 0x9d, 0xa0, 0xa3, + 0xd6, 0xd6, 0xc1, 0x7d, 0x02, 0x9b, 0xd3, 0x8d, 0xd2, 0xb9, 0x78, 0xe0, 0xba, 0xdd, 0x67, 0xf6, 0x46, 0xe1, 0xbb, + 0xfb, 0x43, 0x8b, 0xb8, 0x9b, 0x71, 0xe6, 0xb7, 0x6f, 0x42, 0x4b, 0x38, 0xcf, 0x44, 0x95, 0xf4, 0xeb, 0x57, 0x33, + 0xa0, 0x3d, 0x67, 0x7d, 0x44, 0x7a, 0x9a, 0x7d, 0xd9, 0x0c, 0x04, 0xa9, 0x15, 0x70, 0x02, 0x08, 0x0d, 0x5a, 0xd5, + 0x83, 0x21, 0x15, 0x3e, 0x14, 0x68, 0x75, 0x3e, 0x08, 0xcf, 0xb9, 0xc7, 0x64, 0xb8, 0x84, 0x02, 0xa6, 0x44, 0x38, + 0xfb, 0x01, 0x48, 0xa2, 0xfe, 0xda, 0x3c, 0xee, 0x25, 0x37, 0x2f, 0xfe, 0xa4, 0xd7, 0xf0, 0xa4, 0x51, 0xa1, 0x2b, + 0x80, 0xcf, 0x91, 0xca, 0xed, 0xc5, 0x44, 0x63, 0x87, 0x87, 0x3f, 0x28, 0x68, 0x7d, 0xee, 0x0f, 0xb3, 0xdb, 0x57, + 0x6e, 0x19, 0x65, 0x6f, 0x26, 0x44, 0x3b, 0x2f, 0xcf, 0x44, 0x85, 0xcf, 0x26, 0x7d, 0x50, 0x04, 0xb5, 0x72, 0xf8, + 0x8a, 0x97, 0x2e, 0xf1, 0xaa, 0xd0, 0x72, 0x18, 0x56, 0x84, 0xda, 0xe4, 0x3b, 0x61, 0x3a, 0x0a, 0x01, 0x00, 0x00, + 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, + 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xe0, 0xb6, 0x57, 0xef, 0x8f, 0xfe, 0x28, 0x8b, 0x2e, + 0xae, 0x33, 0x10, 0x61, 0x7c, 0xba, 0xd3, 0x3a, 0x5a, 0xcd, 0x12, 0x4b, 0xc1, 0x1b, 0x9f, 0xe8, 0x19, 0x02, 0xd7, + 0x55, 0x59, 0xe9, 0x14, 0xcc, 0x82, 0x85, 0x75, 0x1e, 0xb0, 0x21, 0xd6, 0xd0, 0x1a, 0x30, 0xd3, 0xc8, 0xf0, 0x95, + 0xf1, 0x71, 0xfe, 0x27, 0xe5, 0xfe, 0xa1, 0xf8, 0xd5, 0xf5, 0xd2, 0x66, 0xb4, 0x85, 0x90, 0x0a, 0x3b, 0x4c, 0x4e, + 0x19, 0x9e, 0xb5, 0x3b, 0xc4, 0x1d, 0x55, 0xcd, 0x8f, 0x2f, 0xc3, 0xa0, 0x2e, 0xb3, 0x31, 0xbc, 0xcb, 0x62, 0x41, + 0xaf, 0x80, 0x03, 0xe6, 0x09, 0x8a, 0x17, 0x1b, 0xd1, 0x65, 0x56, 0xde, 0xa9, 0xb2, 0x8d, 0xb5, 0x50, 0x94, 0x2b, + 0xfb, 0xbb, 0x95, 0xd2, 0xaa, 0xf9, 0x5f, 0xad, 0xc3, 0xcc, 0x7a, 0x34, 0xa7, 0x01, 0x96, 0x34, 0xd3, 0xe8, 0xc8, + 0xec, 0x00, 0x19, 0xfd, 0x26, 0x11, 0x29, 0xb3, 0x30, 0xd0, 0x8c, 0x04, 0x0f, 0xb5, 0x06, 0x44, 0xed, 0x05, 0xc0, + 0x07, 0x04, 0x65, 0x02, 0x03, 0x7c, 0x5f, 0xfc, 0x4b, 0xf0, 0x9c, 0x7c, 0xc3, 0x81, 0x53, 0xf2, 0x17, 0x37, 0xa9, + 0x5d, 0x90, 0xa9, 0x9c, 0x1b, 0x29, 0x9b, 0x25, 0xa2, 0x81, 0x79, 0x9a, 0x48, 0xa3, 0xc6, 0x7f, 0x1f, 0x04, 0x35, + 0x8c, 0x3b, 0xfd, 0xa9, 0x0d, 0x7e, 0xc7, 0x4c, 0xd3, 0x23, 0x65, 0x61, 0x5a, 0x70, 0x7c, 0xae, 0x23, 0x34, 0x7c, + 0x55, 0xbe, 0xe1, 0x90, 0x87, 0x18, 0xa0, 0xcf, 0x64, 0x28, 0x75, 0x8c, 0x31, 0x88, 0x85, 0x17, 0xcb, 0xb0, 0x3b, + 0x95, 0x73, 0x59, 0x01, 0x8a, 0x12, 0x5d, 0x19, 0x68, 0xb0, 0xa7, 0xbe, 0x29, 0xcc, 0x74, 0x64, 0x8c, 0x69, 0x2b, + 0x5e, 0x2a, 0xc9, 0xbe, 0xb6, 0xec, 0x55, 0xe9, 0xb7, 0x0a, 0xbd, 0x96, 0x4a, 0x14, 0xa9, 0x6b, 0xbf, 0x82, 0x52, + 0xfd, 0x8d, 0xb4, 0x84, 0x9d, 0x2d, 0xf1, 0x15, 0xf0, 0x2c, 0x95, 0xa1, 0x95, 0x14, 0xd7, 0x09, 0x8a, 0x0b, 0x77, + 0x63, 0x39, 0x89, 0x84, 0xde, 0x6b, 0xee, 0xc0, 0xb3, 0x07, 0x36, 0x97, 0x2b, 0xd2, 0x60, 0xfd, 0x9a, 0xe0, 0x9c, + 0x99, 0x88, 0x35, 0x71, 0x60, 0x7f, 0xab, 0xbd, 0x22, 0x93, 0xd4, 0x7e, 0x87, 0x2b, 0x43, 0xee, 0xaa, 0x07, 0x12, + 0xf5, 0x9c, 0x29, 0x7f, 0xa3, 0x19, 0x2e, 0xb2, 0x56, 0xca, 0x38, 0x7a, 0x2d, 0x0a, 0x21, 0xaf, 0xfd, 0x21, 0xb8, + 0xa9, 0x22, 0x95, 0xd5, 0x69, 0x5c, 0xa4, 0xc6, 0x23, 0xf3, 0x3a, 0x90, 0x4f, 0x40, 0xd2, 0xcf, 0x6d, 0x4d, 0xe0, + 0x5e, 0x31, 0x62, 0xf6, 0x1f, 0xcd, 0x5c, 0x46, 0x75, 0xb7, 0xd3, 0x8a, 0xc5, 0x79, 0x46, 0x60, 0x54, 0xc8, 0xf2, + 0xb4, 0x74, 0x28, 0x33, 0xb1, 0x3e, 0x33, 0xbb, 0x7d, 0x6f, 0xae, 0x0c, 0x27, 0x54, 0xf6, 0x5d, 0x75, 0x70, 0x5f, + 0x3b, 0xea, 0xc3, 0xc0, 0x4a, 0x8e, 0x2b, 0x6f, 0x8b, 0x05, 0x66, 0x68, 0x52, 0x53, 0x4b, 0xa3, 0x4e, 0x1f, 0xa4, + 0x31, 0xd6, 0x4c, 0xa5, 0xe7, 0xd0, 0xe3, 0x11, 0x69, 0x23, 0x8a, 0xc5, 0x9d, 0xcd, 0xf9, 0xdc, 0xc3, 0x7a, 0x1d, + 0xc8, 0x00, 0xfd, 0x00, 0xb8, 0xb1, 0x1a, 0x73, 0x0a, 0x82, 0xc3, 0x4f, 0xad, 0xf1, 0x38, 0xa3, 0x77, 0xbe, 0x25, + 0x15, 0x64, 0xd6, 0x0f, 0x83, 0x33, 0xcf, 0x5d, 0x52, 0xf5, 0x52, 0xb0, 0x9c, 0x10, 0xc1, 0x08, 0x69, 0xe8, 0x18, + 0x0a, 0x45, 0x45, 0x88, 0x25, 0x30, 0x41, 0x50, 0x3f, 0x2d, 0xca, 0x93, 0xb0, 0xa1, 0x12, 0x76, 0xc7, 0x89, 0x65, + 0xb9, 0xc6, 0x7b, 0x3d, 0x80, 0x37, 0x27, 0xb8, 0x94, 0xef, 0xfe, 0x0b, 0x11, 0xbf, 0x8f, 0x34, 0x20, 0x49, 0x14, + 0xbd, 0x2a, 0xf8, 0xe2, 0x65, 0xa6, 0x23, 0x76, 0x22, 0x61, 0xab, 0x00, 0xf7, 0x15, 0xbd, 0x6d, 0x86, 0xc6, 0x37, + 0x22, 0x4a, 0x31, 0x76, 0xd9, 0x3b, 0x05, 0xde, 0x84, 0x69, 0x88, 0x53, 0xa0, 0x10, 0xbc, 0x48, 0x39, 0xf5, 0x3f, + 0x7f, 0x06, 0x04, 0xd7, 0xce, 0x0c, 0xbc, 0x04, 0xff, 0x02, 0x62, 0x6a, 0x58, 0xb9, 0x1a, 0xb0, 0x3f, 0x27, 0x27, + 0x2e, 0xca, 0xfc, 0xc0, 0xd6, 0x69, 0x96, 0xff, 0x6c, 0x60, 0x88, 0x5e, 0x0b, 0x28, 0x5d, 0x58, 0x25, 0x04, 0x46, + 0xcd, 0x4f, 0x6d, 0x30, 0x06, 0x2d, 0xe5, 0xfd, 0x8a, 0xd5, 0xe5, 0x9f, 0x0b, 0xc3, 0x52, 0xa7, 0xab, 0xd3, 0xcc, + 0xa6, 0xed, 0xf6, 0xf3, 0xe3, 0xde, 0x44, 0xda, 0x77, 0x19, 0x94, 0x6e, 0xfb, 0xd3, 0x0a, 0x90, 0x88, 0x6a, 0xbd, + 0x05, 0xf0, 0xe1, 0x66, 0xa5, 0xbf, 0xd3, 0x11, 0xab, 0xdf, 0xe8, 0x62, 0x1a, 0xc7, 0x76, 0xac, 0x7b, 0x97, 0x2f, + 0x15, 0xcb, 0x18, 0x71, 0xfb, 0x2c, 0x8c, 0x5c, 0x24, 0x8f, 0xf3, 0x4a, 0x28, 0x23, 0x96, 0xf3, 0x49, 0x1c, 0xae, + 0x2a, 0x34, 0xf0, 0xe4, 0x50, 0x16, 0xf9, 0xaa, 0x87, 0x98, 0x4a, 0xe5, 0x2c, 0xa1, 0xa2, 0x75, 0x52, 0x35, 0x5b, + 0x9b, 0xe4, 0xa6, 0x66, 0x17, 0x64, 0x49, 0xb1, 0xd3, 0x02, 0xc9, 0x48, 0x69, 0xdf, 0x06, 0x7f, 0x96, 0xe5, 0xf2, + 0x03, 0xd8, 0x18, 0xc9, 0xab, 0xbd, 0xfb, 0xe8, 0xbb, 0xd2, 0x56, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, + 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, + 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xd2, 0xab, 0xc2, 0x33, 0xb2, 0x5d, 0x9d, 0xf9, 0x83, 0x72, 0x02, 0xed, 0x4d, 0x28, + 0x91, 0x8d, 0xc6, 0x4f, 0xfe, 0x99, 0x36, 0x28, 0x84, 0x3e, 0x6d, 0x99, 0x74, 0xfc, 0xd9, 0x9f, 0xb9, 0x36, 0x38, + 0x5b, 0x51, 0x3a, 0xed, 0x1e, 0x04, 0x75, 0x8a, 0xe4, 0xd4, 0xde, 0x3e, 0x41, 0x38, 0xc0, 0xe1, 0x63, 0xea, 0x3a, + 0x77, 0xa2, 0xd9, 0xff, 0x0c, 0x21, 0x98, 0xc8, 0x25, 0xd8, 0xa0, 0x50, 0x92, 0x59, 0x51, 0x3f, 0x24, 0x54, 0xe8, + 0xf9, 0x81, 0x56, 0x67, 0xb2, 0xbf, 0xbf, 0x34, 0x99, 0xf5, 0x51, 0x56, 0xc9, 0x98, 0x4e, 0x44, 0x6d, 0xce, 0x9e, + 0x33, 0xf1, 0x53, 0x00, 0x46, 0x1b, 0x08, 0xf4, 0x4f, 0x53, 0x1b, 0x6f, 0xe4, 0x89, 0xf9, 0xd6, 0x3d, 0xd6, 0x9f, + 0x91, 0xb5, 0xaf, 0x48, 0x33, 0x1c, 0xc1, 0x51, 0xb7, 0x2b, 0x9a, 0xea, 0xf7, 0xba, 0x94, 0xba, 0x33, 0xa9, 0x36, + 0x88, 0x4f, 0x7d, 0xc0, 0x92, 0x4c, 0x1e, 0xfa, 0xee, 0x88, 0xe4, 0xa6, 0xc4, 0xf2, 0x94, 0x0d, 0x92, 0xb0, 0x6b, + 0xf9, 0xd6, 0xc3, 0x59, 0xbe, 0x68, 0x76, 0xd2, 0xf3, 0xc8, 0x8f, 0x5e, 0x68, 0xbe, 0xf7, 0xdd, 0x39, 0x22, 0x4e, + 0x9c, 0xe3, 0xc7, 0xb4, 0x94, 0xec, 0x82, 0x78, 0x7c, 0xfa, 0x72, 0x23, 0x40, 0x23, 0xe9, 0x58, 0x3c, 0xb4, 0x60, + 0x11, 0xd8, 0xbd, 0x38, 0x62, 0xe8, 0x6e, 0x2d, 0xe2, 0xcd, 0x7a, 0x36, 0x99, 0x8e, 0xcc, 0x30, 0x31, 0x9e, 0x85, + 0x61, 0x1a, 0xf0, 0xc0, 0x58, 0x3a, 0xc3, 0x69, 0x53, 0x22, 0x5b, 0xbd, 0xf4, 0xc0, 0x43, 0xa3, 0x1e, 0x1c, 0xbf, + 0x6b, 0x3d, 0x8e, 0xa5, 0xb3, 0xc4, 0x4c, 0x41, 0xce, 0x69, 0x18, 0xae, 0xad, 0x86, 0x49, 0xb2, 0x5d, 0x68, 0x81, + 0x85, 0x5d, 0xff, 0xd7, 0x84, 0x6b, 0xdb, 0x42, 0x70, 0xf1, 0x50, 0xc3, 0x01, 0x12, 0xf1, 0xbc, 0x20, 0xb3, 0x58, + 0x3e, 0xf8, 0x2e, 0xf1, 0x18, 0xc0, 0x86, 0x6e, 0xbc, 0x5a, 0xb6, 0x04, 0xb9, 0x24, 0x33, 0x7f, 0xc6, 0x70, 0xc2, + 0xf2, 0x93, 0x5f, 0xec, 0xf0, 0x16, 0x91, 0x37, 0x5d, 0x36, 0xc5, 0x16, 0x12, 0x97, 0x1f, 0x1e, 0x11, 0x31, 0x37, + 0x6f, 0x93, 0x27, 0xef, 0x3b, 0x2f, 0x8d, 0xd4, 0xc7, 0x53, 0x5b, 0x72, 0x02, 0x3d, 0x12, 0xf8, 0x86, 0x83, 0xef, + 0xaa, 0x00, 0xfa, 0x1c, 0x09, 0x8b, 0x65, 0x5d, 0x48, 0x75, 0xaa, 0x3f, 0x50, 0x04, 0x9e, 0x74, 0x27, 0xb2, 0xcf, + 0x23, 0x87, 0xf8, 0xc2, 0x2e, 0xaa, 0x01, 0x65, 0xe8, 0xdb, 0x5a, 0x2c, 0x10, 0xb5, 0x0e, 0xbd, 0xd7, 0x94, 0x38, + 0xbe, 0x96, 0x9c, 0x08, 0xbc, 0x42, 0xae, 0x88, 0x77, 0xba, 0x08, 0xb6, 0xc1, 0x33, 0x52, 0x34, 0x34, 0x44, 0x92, + 0xf5, 0x02, 0x53, 0x2b, 0xb8, 0x74, 0x7c, 0x88, 0x13, 0x59, 0xb0, 0x04, 0xe1, 0x9b, 0xb0, 0x6e, 0x7d, 0x55, 0xe3, + 0x80, 0xa2, 0x03, 0xca, 0x36, 0x9c, 0x40, 0xc1, 0x78, 0x01, 0xda, 0x1b, 0x0b, 0xe7, 0xdc, 0xd5, 0xb6, 0xa6, 0xef, + 0xf2, 0x16, 0x6e, 0x88, 0x5e, 0x93, 0xb9, 0x36, 0x7f, 0x42, 0x66, 0x85, 0x9d, 0x58, 0x10, 0x18, 0x60, 0x2b, 0x5f, + 0x72, 0x60, 0xea, 0x33, 0xe2, 0x45, 0xeb, 0xf4, 0x3e, 0x9f, 0x6d, 0xed, 0x33, 0xc1, 0x82, 0x68, 0xf7, 0x70, 0xe9, + 0x0e, 0x73, 0x94, 0x7d, 0x63, 0xe9, 0xde, 0x87, 0x80, 0x12, 0x4d, 0x2c, 0x6e, 0x9d, 0x2f, 0xef, 0xeb, 0xeb, 0x6f, + 0x27, 0x4a, 0x1e, 0x48, 0xc0, 0x54, 0x79, 0xe7, 0xf0, 0x38, 0xbe, 0xfc, 0x93, 0x61, 0xb5, 0xd3, 0x1f, 0xfe, 0x9e, + 0xe3, 0x64, 0xeb, 0x8c, 0xcb, 0x6e, 0x42, 0x32, 0x17, 0xc5, 0xf7, 0xc9, 0xdb, 0x52, 0x25, 0x1e, 0x5c, 0x00, 0x6c, + 0x78, 0x1f, 0x48, 0x2a, 0x7f, 0x19, 0xc4, 0xd0, 0xe9, 0xa7, 0x83, 0x5b, 0xf2, 0x95, 0xe4, 0xf5, 0xa2, 0xc9, 0xbb, + 0x6c, 0xe9, 0x83, 0x41, 0xa6, 0x83, 0x17, 0x76, 0x0a, 0x9f, 0xba, 0x29, 0xb1, 0x45, 0xd8, 0x87, 0x07, 0xb6, 0x0b, + 0xd7, 0x94, 0x8e, 0x1e, 0x02, 0x1b, 0xa1, 0xbb, 0xfb, 0xb6, 0xb5, 0x46, 0x3f, 0xd0, 0xc7, 0xbb, 0x90, 0x47, 0x39, + 0x37, 0x73, 0xe7, 0x88, 0xd8, 0x6f, 0x05, 0xf0, 0x62, 0x3e, 0x56, 0xf2, 0x26, 0x8f, 0xf2, 0xcb, 0x53, 0x79, 0x6d, + 0xea, 0xb3, 0xdc, 0xb1, 0x9f, 0x8d, 0x79, 0xe6, 0xbc, 0x19, 0xe5, 0x7e, 0xe6, 0x0f, 0x58, 0x4d, 0x82, 0x48, 0x3c, + 0x3f, 0xdf, 0xf6, 0x3d, 0x19, 0xa4, 0xfb, 0xed, 0x88, 0xae, 0x8b, 0xa8, 0xbc, 0x19, 0x43, 0x03, 0x0f, 0x93, 0x04, + 0xa7, 0x61, 0x70, 0x7b, 0x6c, 0x16, 0x44, 0x67, 0x87, 0x22, 0xf9, 0x7f, 0x41, 0xe6, 0x09, 0x3f, 0x60, 0x1c, 0x30, + 0x89, 0xa3, 0xce, 0xd9, 0xdd, 0xfe, 0xda, 0x34, 0x34, 0x7e, 0xd0, 0xa3, 0x62, 0x33, 0x61, 0x2a, 0x70, 0xdc, 0x67, + 0xf0, 0xd9, 0xc8, 0x43, 0xb6, 0x1c, 0x1c, 0x28, 0xb5, 0xd6, 0x63, 0x50, 0xf5, 0x47, 0x40, 0xa5, 0x86, 0x81, 0x2c, + 0x1d, 0x3b, 0xb1, 0x51, 0xff, 0xe0, 0x33, 0x87, 0x49, 0x94, 0xad, 0xbd, 0x97, 0xc8, 0x9a, 0x58, 0xa7, 0xe3, 0x90, + 0xbb, 0x07, 0xc9, 0x85, 0x47, 0x6d, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, + 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, + 0x13, 0xd6, 0xb6, 0x6e, 0x7f, 0xc6, 0x2c, 0x8e, 0xfa, 0x1f, 0x4e, 0x33, 0xa3, 0xc4, 0xd5, 0x33, 0xa3, 0xba, 0xff, + 0xd8, 0xcc, 0xe0, 0x0a, 0x03, 0xff, 0x5e, 0x13, 0x92, 0x29, 0xed, 0x4f, 0x5f, 0x63, 0xbe, 0xdc, 0x28, 0x7e, 0xdb, + 0xc9, 0x90, 0x94, 0x6a, 0x9d, 0x3b, 0xae, 0x30, 0x84, 0x21, 0x0f, 0xcd, 0x5b, 0x93, 0xa1, 0xe1, 0x43, 0x62, 0x56, + 0xa9, 0xb0, 0xb5, 0xb5, 0x01, 0xc7, 0x6e, 0x67, 0x81, 0x51, 0xca, 0x75, 0x91, 0x04, 0x06, 0x0e, 0xda, 0xbf, 0xa1, + 0xb7, 0xeb, 0x6e, 0x09, 0xc1, 0x7e, 0xc0, 0x4d, 0x21, 0xa1, 0xd4, 0xa0, 0xd5, 0xb4, 0x30, 0xf4, 0x7f, 0xc5, 0xe3, + 0x04, 0x50, 0xba, 0x3d, 0xaa, 0x75, 0x8d, 0x09, 0x27, 0x56, 0xf9, 0x64, 0xb7, 0x07, 0x24, 0x33, 0x2a, 0xf4, 0xb2, + 0x41, 0x42, 0x81, 0x34, 0x51, 0xb2, 0x39, 0xfd, 0x67, 0x0b, 0xe9, 0x5f, 0xf8, 0x2e, 0x02, 0x9d, 0x67, 0x1e, 0xe4, + 0x0e, 0x12, 0x5d, 0xac, 0xe6, 0x04, 0x00, 0x5d, 0x12, 0x0f, 0x2f, 0xf1, 0x48, 0x08, 0x6a, 0x66, 0x53, 0x2a, 0x34, + 0x98, 0x3a, 0x84, 0x34, 0x2d, 0xba, 0x17, 0x3b, 0xeb, 0x2e, 0xf4, 0xf2, 0xe5, 0x21, 0xba, 0x3c, 0x3c, 0x3b, 0x8a, + 0x30, 0x0e, 0x64, 0xc4, 0x64, 0x83, 0x8e, 0xe2, 0xfe, 0xe7, 0xba, 0xa0, 0xfb, 0xc3, 0x8c, 0xa2, 0xfe, 0x34, 0xc4, + 0x14, 0x03, 0x63, 0x08, 0x50, 0xf7, 0x43, 0x09, 0xdd, 0xbb, 0x80, 0x5a, 0xba, 0xa1, 0xb1, 0x3f, 0xa1, 0x30, 0xa4, + 0xc3, 0x87, 0x91, 0xf8, 0x7b, 0x05, 0x58, 0xb7, 0x95, 0x74, 0x57, 0x8b, 0xa8, 0x53, 0x69, 0x03, 0xe2, 0x21, 0xcc, + 0x29, 0xa8, 0xd3, 0x20, 0x47, 0xc9, 0xf0, 0x71, 0x2c, 0xaa, 0xf3, 0x60, 0xd5, 0x06, 0x8c, 0x4f, 0x86, 0x6c, 0x2e, + 0x16, 0x77, 0x73, 0xff, 0xe8, 0xa7, 0xb7, 0xc2, 0x73, 0x90, 0xa0, 0xc3, 0xb2, 0xeb, 0x49, 0x68, 0x2b, 0xc2, 0x80, + 0xed, 0xc0, 0x78, 0xb7, 0x22, 0xd6, 0xb2, 0xfb, 0x39, 0x48, 0x90, 0xc0, 0xdd, 0x62, 0x93, 0x70, 0x08, 0x53, 0xce, + 0xf4, 0xe1, 0x5b, 0xe1, 0xba, 0x20, 0x08, 0xd6, 0x1c, 0xb5, 0x84, 0x09, 0xbb, 0x84, 0x60, 0x8b, 0x9c, 0xfe, 0x14, + 0x2d, 0x3c, 0xdd, 0xba, 0x7c, 0x5a, 0x7a, 0x1d, 0x46, 0xb9, 0x93, 0xdb, 0xab, 0xc2, 0xed, 0x65, 0xb6, 0xc6, 0x72, + 0x80, 0x56, 0xcd, 0x02, 0xed, 0x21, 0x2e, 0xb8, 0xba, 0x2f, 0xef, 0x4a, 0xd5, 0xdb, 0xa6, 0x5f, 0x1b, 0x74, 0xd8, + 0xff, 0x3c, 0x4f, 0x37, 0x1c, 0x08, 0x0b, 0x0f, 0xcd, 0x44, 0x83, 0xc3, 0x52, 0xd5, 0xc5, 0xb0, 0x28, 0xf8, 0xdd, + 0x5b, 0xf3, 0x95, 0xc5, 0x30, 0xc9, 0xdc, 0xdf, 0xa7, 0x0f, 0x2e, 0x41, 0xf1, 0xbc, 0x33, 0x5f, 0xfa, 0x80, 0x93, + 0x02, 0xbc, 0xb0, 0x4c, 0x4c, 0x45, 0xe3, 0x3b, 0x30, 0xe7, 0x5d, 0x0b, 0x8a, 0xd7, 0xa7, 0x2c, 0x24, 0x94, 0x71, + 0x3a, 0x89, 0x7c, 0x19, 0x37, 0xe9, 0x15, 0xe0, 0x54, 0xa5, 0x6b, 0x03, 0x02, 0x1f, 0xfe, 0x07, 0x73, 0xe4, 0xe2, + 0xbf, 0x30, 0x65, 0xe4, 0x2c, 0xea, 0x5c, 0xb1, 0x65, 0x30, 0x57, 0x18, 0xcf, 0x0f, 0x2a, 0x44, 0x5c, 0x10, 0xe3, + 0x60, 0x5c, 0xf2, 0x78, 0x47, 0x07, 0x2f, 0xcf, 0x8e, 0x29, 0x13, 0xa2, 0x6d, 0x7c, 0x8a, 0x8c, 0xa2, 0x4b, 0xb8, + 0xc3, 0x07, 0x07, 0x06, 0x89, 0x1c, 0xbf, 0xf6, 0x2a, 0xa0, 0xd0, 0xd5, 0x39, 0x09, 0x5b, 0x0e, 0xce, 0xf0, 0xbc, + 0x14, 0x81, 0x0e, 0x6f, 0x20, 0x93, 0xfa, 0x89, 0x2b, 0x8b, 0xeb, 0x8f, 0x22, 0x04, 0xd3, 0xe5, 0xe0, 0xfb, 0x33, + 0xdc, 0x7a, 0xbf, 0x7f, 0x7c, 0x92, 0xba, 0x55, 0x40, 0xc9, 0x4a, 0xb0, 0xeb, 0x82, 0xb1, 0xb0, 0x8b, 0x4a, 0x44, + 0x73, 0x7f, 0xa2, 0x50, 0xd5, 0x93, 0x66, 0xb1, 0xfd, 0x91, 0xb2, 0x67, 0x6e, 0xb9, 0xfe, 0x7f, 0x27, 0x97, 0x73, + 0x56, 0x6e, 0x59, 0x43, 0x4a, 0x17, 0xf1, 0x6a, 0x22, 0xcb, 0x65, 0x20, 0x0e, 0xfd, 0x43, 0xed, 0x63, 0x83, 0x17, + 0x82, 0x43, 0xe0, 0x75, 0xcf, 0x3d, 0x05, 0x17, 0x70, 0x8d, 0xab, 0x47, 0x06, 0x8d, 0x21, 0x1b, 0xb1, 0x6e, 0x25, + 0xf0, 0x34, 0x09, 0x5c, 0x62, 0x38, 0x71, 0x58, 0x46, 0x2e, 0x5e, 0xa6, 0x01, 0xa9, 0xd3, 0x2d, 0x83, 0x42, 0x73, + 0x01, 0x47, 0x53, 0x91, 0xe9, 0xf3, 0x97, 0x7f, 0x1a, 0xe2, 0x7d, 0x30, 0xde, 0x78, 0xa3, 0xab, 0xdd, 0x43, 0x40, + 0x46, 0x9a, 0x51, 0x8b, 0x90, 0x14, 0x16, 0x1b, 0x89, 0xe8, 0xff, 0x4e, 0x13, 0x2a, 0x48, 0xd3, 0xa5, 0xec, 0x3b, + 0xd2, 0x3d, 0x32, 0x73, 0x0e, 0x7e, 0x1e, 0xae, 0x31, 0x37, 0x58, 0xf7, 0x1f, 0x32, 0x20, 0x55, 0x6a, 0xf7, 0xda, + 0xbf, 0x09, 0xa2, 0x09, 0x9c, 0x27, 0x66, 0x11, 0xbf, 0x80, 0x9a, 0x44, 0x27, 0x10, 0x3b, 0x6e, 0x85, 0x32, 0x1d, + 0xd7, 0xc2, 0xfe, 0x98, 0x95, 0x35, 0x09, 0x6e, 0xc6, 0x36, 0x82, 0x2c, 0x5a, 0x94, 0xd1, 0x11, 0x64, 0xa1, 0x9a, + 0xc9, 0x7e, 0xd1, 0x23, 0x11, 0x01, 0xb7, 0xb9, 0x01, 0xc4, 0x35, 0x89, 0xd0, 0x91, 0xa9, 0xbd, 0xc1, 0x8a, 0x13, + 0x57, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, + 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xc1, 0xb9, 0x1b, 0x10, 0x2a, + 0x94, 0x92, 0x22, 0x9d, 0x45, 0xd9, 0xb3, 0xeb, 0x34, 0xbc, 0xe3, 0xea, 0xf2, 0xd8, 0xb1, 0xcc, 0xc8, 0x8b, 0xd0, + 0x40, 0x90, 0xc4, 0xea, 0x26, 0xb0, 0x37, 0x0e, 0xeb, 0x5e, 0x6a, 0x66, 0x09, 0xda, 0x83, 0xdb, 0xd5, 0x5f, 0xe1, + 0x3f, 0x20, 0xbd, 0xce, 0xee, 0x03, 0x3d, 0x43, 0x91, 0x00, 0x3b, 0x5e, 0x1f, 0xdd, 0x5a, 0x5e, 0xde, 0x13, 0x92, + 0xe8, 0x26, 0x8f, 0x4c, 0x67, 0x75, 0x06, 0xe3, 0x40, 0xc5, 0xc8, 0x97, 0x7f, 0x9d, 0xff, 0x99, 0x69, 0x13, 0xee, + 0x77, 0x18, 0x7a, 0x99, 0x8a, 0xa8, 0xf8, 0x4a, 0x0e, 0xdf, 0x04, 0x74, 0xc1, 0x82, 0x2d, 0x90, 0xce, 0xef, 0x7f, + 0x95, 0x23, 0xdf, 0x3a, 0x01, 0xb6, 0xf3, 0x53, 0x03, 0x1d, 0xdf, 0xf5, 0xad, 0xc9, 0xd4, 0xf8, 0x83, 0xeb, 0xd3, + 0xeb, 0x09, 0x0f, 0x03, 0xd8, 0x2d, 0x64, 0x27, 0x1e, 0xa0, 0x78, 0xba, 0x82, 0x25, 0x88, 0x31, 0xd2, 0x83, 0x18, + 0xdf, 0x68, 0x07, 0x79, 0x9a, 0x8c, 0x94, 0xe6, 0x59, 0xc1, 0xf0, 0x61, 0xcd, 0xee, 0x1c, 0xff, 0x83, 0xc4, 0x8c, + 0xb9, 0x0d, 0x01, 0x92, 0xb1, 0x77, 0x87, 0x00, 0x23, 0x45, 0xff, 0xfd, 0x36, 0xf2, 0xc6, 0x3d, 0x49, 0xfd, 0x48, + 0x71, 0xf2, 0x83, 0xe4, 0xb9, 0x41, 0x4a, 0xee, 0x49, 0x9d, 0x7f, 0xdf, 0x95, 0xf4, 0xf4, 0x3c, 0x81, 0x18, 0x93, + 0xd0, 0x53, 0xfb, 0x7b, 0x91, 0x23, 0x55, 0x7c, 0x35, 0xd4, 0x8f, 0x16, 0x99, 0x67, 0xc6, 0x67, 0x7c, 0xad, 0x93, + 0xa2, 0x56, 0xfd, 0x73, 0xdf, 0x2f, 0x24, 0x91, 0x4e, 0x06, 0x5a, 0x67, 0x0b, 0x8d, 0xd5, 0xde, 0x56, 0x7c, 0xb8, + 0x24, 0xc7, 0x98, 0x9f, 0x81, 0x8e, 0xa1, 0x31, 0xd7, 0x10, 0x1b, 0xa7, 0xd1, 0x9e, 0x7b, 0xdf, 0x77, 0x70, 0xda, + 0xf8, 0xd8, 0x20, 0x52, 0x4a, 0x4d, 0xd6, 0xf9, 0x3f, 0xb0, 0xd0, 0x49, 0x58, 0xf0, 0x20, 0xd2, 0x93, 0x6e, 0x95, + 0xc4, 0xf9, 0xae, 0xbd, 0x47, 0xf9, 0xb8, 0xfb, 0x65, 0x8f, 0x75, 0xe4, 0x53, 0x7f, 0xa0, 0xfb, 0x68, 0xec, 0x80, + 0x86, 0x18, 0xd5, 0x9b, 0x1a, 0xe5, 0xfa, 0x18, 0xa9, 0xf6, 0xf0, 0x7e, 0x5a, 0xc2, 0xd1, 0x82, 0x76, 0xa4, 0xe9, + 0xf7, 0x2e, 0x12, 0x71, 0x38, 0xbe, 0xe0, 0x09, 0xba, 0xd8, 0x63, 0x72, 0x4f, 0x47, 0x41, 0xd2, 0x38, 0xef, 0x20, + 0x19, 0x7b, 0xc8, 0xe3, 0xe1, 0x79, 0xfc, 0x81, 0x56, 0x35, 0x9e, 0x31, 0x93, 0x7b, 0xfe, 0x7e, 0x9f, 0x1c, 0xde, + 0x29, 0x55, 0x5f, 0xb7, 0x31, 0xba, 0x99, 0x0f, 0x1b, 0x3a, 0x53, 0x68, 0x59, 0x60, 0xc2, 0x00, 0x06, 0x6f, 0x52, + 0xec, 0x72, 0x7d, 0xc8, 0x89, 0xd4, 0xe3, 0x83, 0x7c, 0x81, 0x5a, 0x83, 0xf2, 0xf8, 0x93, 0xa2, 0xec, 0x36, 0x4e, + 0xa8, 0xc3, 0x1d, 0xb5, 0xc4, 0xc6, 0x60, 0x4b, 0xa0, 0xa2, 0x5b, 0x4d, 0x63, 0x0c, 0xd4, 0x81, 0x21, 0xff, 0x13, + 0x8f, 0x0e, 0x44, 0x4d, 0x33, 0x2b, 0x60, 0x9e, 0xbc, 0xde, 0xd3, 0x38, 0x70, 0x30, 0xa1, 0xf1, 0x5b, 0x30, 0xa3, + 0xb9, 0xb0, 0x07, 0xaf, 0x32, 0x97, 0x21, 0x76, 0x72, 0xbb, 0x35, 0xae, 0x84, 0xbe, 0x9e, 0xf1, 0xc2, 0xa3, 0xf9, + 0x58, 0xc7, 0xf7, 0x94, 0x85, 0x4d, 0x81, 0x37, 0x4b, 0xb4, 0x4c, 0x41, 0xbe, 0x5a, 0x24, 0x3c, 0x94, 0xa3, 0x62, + 0xe6, 0xd6, 0xb3, 0xbc, 0x85, 0x39, 0x00, 0x88, 0xb7, 0x6e, 0x83, 0xf7, 0x86, 0xbe, 0xd8, 0xb2, 0x0d, 0xe4, 0x00, + 0x6f, 0xaa, 0x87, 0xf1, 0x11, 0x87, 0x85, 0xed, 0x7c, 0x2f, 0x43, 0x10, 0x74, 0x1d, 0x78, 0x92, 0x1a, 0x03, 0x31, + 0xac, 0x57, 0xa0, 0xfe, 0x1e, 0x78, 0x28, 0x2f, 0x91, 0xc3, 0x54, 0xe4, 0x39, 0x59, 0xa6, 0x66, 0xe1, 0xfd, 0x2d, + 0x98, 0xb0, 0xb1, 0x5f, 0x68, 0x11, 0x5c, 0x50, 0xac, 0x81, 0x25, 0xd0, 0x40, 0x19, 0x41, 0x0b, 0xcc, 0x9b, 0x00, + 0x8a, 0x7b, 0x95, 0xf4, 0x0d, 0xff, 0x19, 0xb0, 0x14, 0xdc, 0x77, 0x1a, 0xdc, 0x62, 0x18, 0xf0, 0xfe, 0xa6, 0xf4, + 0xe7, 0xaa, 0x5b, 0x51, 0x2a, 0xfe, 0x65, 0x39, 0xa2, 0x72, 0x86, 0x24, 0x08, 0xb0, 0x69, 0x0c, 0xc8, 0xe1, 0x6a, + 0x09, 0x6d, 0x72, 0xd4, 0xdc, 0x06, 0x3f, 0x7c, 0xb1, 0x8c, 0x3c, 0x90, 0xf8, 0x59, 0x4d, 0x11, 0x15, 0xae, 0xa9, + 0x4d, 0xe8, 0x25, 0x4a, 0x70, 0xd4, 0x44, 0xcd, 0x6b, 0x4c, 0xcd, 0x69, 0x90, 0x26, 0x48, 0x43, 0x12, 0x5e, 0x70, + 0x06, 0x6a, 0x11, 0x7d, 0xca, 0x3d, 0x31, 0x55, 0x09, 0x83, 0x89, 0x59, 0x15, 0x38, 0xe4, 0x43, 0xd3, 0x21, 0x0e, + 0x40, 0x61, 0x48, 0xb6, 0x75, 0x4b, 0xd6, 0x10, 0x8e, 0x02, 0x83, 0xef, 0x7b, 0xb7, 0x14, 0xa3, 0x46, 0x72, 0x3c, + 0x58, 0xca, 0xc7, 0x40, 0x63, 0x90, 0x54, 0x23, 0x18, 0xb5, 0x2b, 0x50, 0x73, 0x2f, 0x06, 0x5c, 0x40, 0xe1, 0x6a, + 0xcc, 0x49, 0x3b, 0xeb, 0x9a, 0x66, 0xae, 0x93, 0x1d, 0xa8, 0xe4, 0x29, 0x41, 0xdd, 0x80, 0xa2, 0x5f, 0x4d, 0xe2, + 0x23, 0x75, 0x00, 0x0d, 0x3b, 0x58, 0xf1, 0xd1, 0xae, 0xaf, 0xcb, 0xe4, 0xa1, 0xb4, 0x69, 0x01, 0x00, 0x00, 0xc0, + 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, + 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xdf, 0x2b, 0xba, 0xd0, 0x41, 0xa2, 0x98, 0xc6, 0xa0, 0xfd, + 0x20, 0xae, 0xf0, 0x84, 0x2b, 0x76, 0x0d, 0xf0, 0x74, 0x94, 0x36, 0xfd, 0xa9, 0xe2, 0x54, 0x2c, 0x8f, 0x1c, 0x4c, + 0x66, 0x8d, 0x64, 0x9b, 0x53, 0xbd, 0x30, 0x0f, 0x25, 0x61, 0x14, 0xc7, 0xc9, 0xeb, 0x9c, 0x05, 0x0f, 0x5e, 0x8f, + 0x1f, 0xa3, 0xe9, 0x3c, 0xba, 0xe1, 0xdc, 0x6b, 0x16, 0xd6, 0xba, 0x07, 0x51, 0xed, 0x73, 0x30, 0x8a, 0xcb, 0x0d, + 0x6e, 0xed, 0xc1, 0x82, 0xb1, 0x18, 0x2b, 0x18, 0x68, 0x38, 0x21, 0xfc, 0xda, 0x58, 0xd9, 0x5c, 0x14, 0xb9, 0x77, + 0xc5, 0x3a, 0x28, 0x2b, 0x46, 0xc8, 0xc4, 0x86, 0x0a, 0x33, 0xd0, 0xbb, 0x17, 0xfd, 0xdd, 0x8d, 0xbd, 0xc9, 0x16, + 0x63, 0x59, 0xfc, 0xf0, 0x10, 0xe5, 0x52, 0x8f, 0x41, 0xff, 0x46, 0xe2, 0x7c, 0x18, 0xa8, 0xbd, 0xe9, 0x80, 0xad, + 0x35, 0x77, 0x1d, 0x17, 0x8a, 0xaf, 0x4e, 0x19, 0xa4, 0xa1, 0x20, 0xd2, 0x7a, 0x42, 0xce, 0xed, 0xa8, 0xdb, 0xb3, + 0xa8, 0xfb, 0x71, 0x2b, 0xf8, 0x5f, 0x91, 0x2f, 0x7d, 0x75, 0x0f, 0xe2, 0x63, 0xd8, 0xac, 0xe0, 0x29, 0x21, 0x00, + 0x38, 0x41, 0x63, 0xb2, 0xdf, 0xfb, 0x62, 0xa2, 0x14, 0xe3, 0x1f, 0x8f, 0x96, 0x2c, 0x34, 0xe5, 0x9b, 0x83, 0xc6, + 0x39, 0x44, 0x99, 0x7d, 0xe3, 0xbf, 0xd2, 0x39, 0xef, 0xba, 0x2c, 0x67, 0x5c, 0x2f, 0x46, 0xd8, 0xfa, 0xd5, 0xa6, + 0x1c, 0x24, 0x4e, 0x71, 0xb0, 0x92, 0x2d, 0xe9, 0x5b, 0x60, 0x50, 0x46, 0x9c, 0xcd, 0x34, 0x74, 0x9a, 0xe1, 0xbf, + 0xcb, 0xd5, 0x21, 0x60, 0x2e, 0x8e, 0xc4, 0x48, 0xe5, 0x78, 0xc7, 0xa5, 0x1c, 0x18, 0x09, 0x53, 0xda, 0x82, 0x71, + 0x85, 0x26, 0x0d, 0x7d, 0xfe, 0x02, 0x2f, 0x61, 0x38, 0x79, 0x48, 0x95, 0x58, 0xb3, 0xf8, 0x36, 0xf4, 0x0f, 0x23, + 0x1f, 0x1c, 0x31, 0x6e, 0x01, 0x85, 0x0b, 0xff, 0xee, 0x71, 0xd0, 0x63, 0xc6, 0xf9, 0xfc, 0x45, 0x06, 0xe4, 0x4d, + 0xcf, 0xa7, 0xe1, 0xe1, 0x06, 0x9c, 0x3b, 0x59, 0x31, 0x48, 0x6c, 0x1a, 0xc4, 0x3d, 0xa5, 0x5e, 0x65, 0x90, 0x5c, + 0x3f, 0x10, 0x65, 0xc7, 0x44, 0x55, 0x36, 0x4d, 0x2e, 0x28, 0x63, 0x8c, 0x03, 0xce, 0xb1, 0x40, 0x6b, 0xcd, 0xc5, + 0x32, 0x2e, 0xa1, 0x25, 0xb4, 0x37, 0x81, 0x64, 0x78, 0xde, 0x68, 0x3f, 0x96, 0xfb, 0x0c, 0x9c, 0x03, 0xef, 0xc8, + 0xad, 0xfa, 0xa7, 0xb5, 0x12, 0x43, 0x31, 0x95, 0x96, 0x58, 0x7c, 0xd3, 0xe5, 0xb4, 0xa9, 0xef, 0x87, 0xcf, 0x62, + 0x7e, 0x31, 0x1f, 0x7a, 0x79, 0xea, 0x38, 0xd2, 0x3a, 0xc4, 0x4d, 0xe1, 0x51, 0xe5, 0xb2, 0xd6, 0x15, 0x9b, 0x88, + 0xaf, 0xf5, 0xd3, 0x15, 0xd2, 0x0b, 0x78, 0x1d, 0xac, 0xbf, 0xad, 0x10, 0x07, 0x67, 0x1b, 0xac, 0xc3, 0xfd, 0x24, + 0x83, 0x59, 0x51, 0x58, 0xda, 0x5b, 0xdf, 0x93, 0x5f, 0xfc, 0x29, 0x12, 0x31, 0x4b, 0x75, 0x2a, 0x54, 0xe5, 0x3e, + 0x31, 0x63, 0xd9, 0x64, 0xec, 0x51, 0x01, 0x28, 0x7c, 0x81, 0xfa, 0x5a, 0x4e, 0x49, 0x94, 0xb3, 0xf2, 0x61, 0x0f, + 0x0f, 0xa7, 0x72, 0x44, 0xa6, 0x79, 0x2f, 0x7b, 0xf0, 0x2b, 0x51, 0x81, 0xfe, 0x96, 0x45, 0xa0, 0xf8, 0x51, 0xbb, + 0x0b, 0xfd, 0xf4, 0x03, 0x53, 0x3b, 0xd2, 0x55, 0xb4, 0x26, 0x48, 0x53, 0x12, 0x93, 0x38, 0x40, 0xb1, 0x91, 0x17, + 0xe6, 0x07, 0x8e, 0x28, 0x6d, 0x89, 0x8e, 0x65, 0xd8, 0xa0, 0xe7, 0x4b, 0x7b, 0x3d, 0x14, 0x20, 0xce, 0x21, 0x51, + 0x8e, 0xc1, 0x8d, 0xad, 0x13, 0xe9, 0x1b, 0xd2, 0x3f, 0xda, 0xb4, 0x53, 0x91, 0xdf, 0x82, 0x9e, 0x76, 0x3e, 0x82, + 0xaa, 0xba, 0xac, 0xeb, 0xad, 0xc1, 0xa6, 0x2d, 0x88, 0x08, 0x3c, 0xa4, 0xcd, 0xb9, 0x21, 0xab, 0x34, 0x67, 0x69, + 0xd2, 0xa5, 0xaa, 0x34, 0x2b, 0x28, 0xea, 0x8e, 0x99, 0x06, 0xd4, 0x59, 0x0f, 0xce, 0x1b, 0xf3, 0xc1, 0xd5, 0x7b, + 0xcc, 0x47, 0x6f, 0x09, 0x2a, 0xf8, 0x14, 0x2c, 0x9b, 0x9b, 0x91, 0xca, 0x42, 0x15, 0x86, 0x9a, 0xf5, 0xfd, 0xaf, + 0x7f, 0x71, 0xd9, 0xf0, 0x20, 0xa4, 0x99, 0x87, 0xd6, 0x98, 0xbb, 0x1f, 0x72, 0xe0, 0x57, 0x96, 0x89, 0x9a, 0xec, + 0x28, 0x7f, 0x3b, 0xed, 0x2a, 0x58, 0x6e, 0x93, 0x2e, 0x97, 0xd1, 0x36, 0x39, 0x9a, 0x06, 0x2e, 0x8e, 0xe9, 0x1e, + 0xea, 0xa9, 0x8f, 0x75, 0x31, 0x62, 0xf8, 0x6a, 0x4f, 0x1a, 0x45, 0x6c, 0x9b, 0x0b, 0x09, 0x55, 0x2f, 0x84, 0xd3, + 0x1f, 0xb3, 0x46, 0x13, 0xc9, 0xa0, 0x4b, 0x2c, 0x54, 0x12, 0x42, 0x48, 0xe9, 0xa7, 0x80, 0xc3, 0x93, 0xd9, 0xff, + 0xf6, 0xad, 0x63, 0xa1, 0x2f, 0x00, 0xad, 0xd1, 0x33, 0x99, 0x98, 0x66, 0x6a, 0x1f, 0x1b, 0x79, 0xf1, 0x4f, 0xda, + 0x17, 0xf0, 0x89, 0x9b, 0xf7, 0xe6, 0xd3, 0xfa, 0x6b, 0xed, 0x0f, 0xf1, 0x70, 0x4e, 0xf6, 0x0a, 0x4d, 0x5e, 0x5d, + 0xcf, 0xd2, 0xe2, 0x0d, 0xd6, 0x1d, 0x3c, 0x2f, 0x82, 0x1a, 0x31, 0xc3, 0x10, 0xfc, 0xa6, 0x69, 0x4b, 0x38, 0x36, + 0x36, 0x01, 0x67, 0x3f, 0x71, 0x41, 0x97, 0x5d, 0xfd, 0x5c, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, + 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, + 0x0c, 0x84, 0x44, 0x6a, 0x82, 0xb1, 0xe7, 0xda, 0x12, 0x73, 0xe5, 0xea, 0xb5, 0x35, 0xd6, 0x09, 0x99, 0xc0, 0x96, + 0xdb, 0x16, 0xa7, 0x88, 0x08, 0x92, 0xe1, 0xe1, 0xa8, 0x0d, 0x9e, 0xda, 0x34, 0x9e, 0x4b, 0x9b, 0x66, 0x08, 0xe4, + 0xc2, 0xd3, 0x1f, 0x54, 0x63, 0x3c, 0x36, 0x94, 0xe5, 0x85, 0x89, 0x64, 0x11, 0xab, 0x1f, 0x36, 0x0c, 0x19, 0xba, + 0x10, 0x5b, 0x1d, 0xc6, 0x3c, 0x57, 0x4e, 0xaf, 0x50, 0x6a, 0x19, 0x41, 0xfe, 0xfd, 0x41, 0xf1, 0xa3, 0x82, 0x40, + 0x01, 0xd7, 0xfb, 0x20, 0x86, 0x6d, 0x8b, 0x7a, 0x55, 0x49, 0x94, 0x71, 0x82, 0x42, 0x41, 0xb7, 0xe4, 0xec, 0xbd, + 0x20, 0x4f, 0x70, 0x40, 0x29, 0x8d, 0xcf, 0x62, 0xe9, 0x53, 0x9f, 0x31, 0x3b, 0xd6, 0x2e, 0xaa, 0x27, 0xf7, 0x0f, + 0xe4, 0x05, 0xa2, 0xef, 0x33, 0x32, 0x64, 0xea, 0x29, 0x54, 0x90, 0xdc, 0x1b, 0x8c, 0xe7, 0x8b, 0x08, 0x38, 0xdb, + 0x35, 0xf8, 0x0d, 0x1c, 0x2e, 0x97, 0xb2, 0x56, 0x22, 0x1a, 0x85, 0x28, 0x1a, 0x18, 0xdf, 0x6a, 0xfc, 0xd4, 0x30, + 0x72, 0x86, 0xc1, 0x2e, 0x40, 0x08, 0x33, 0xa0, 0xf7, 0xe9, 0x13, 0x07, 0x0e, 0x0d, 0xdf, 0xdc, 0x69, 0xb5, 0x02, + 0x97, 0x7c, 0xc2, 0xa1, 0xa5, 0x68, 0xc3, 0x78, 0x32, 0xc1, 0x16, 0xeb, 0x16, 0xb5, 0x86, 0x30, 0xcb, 0x75, 0x16, + 0x9b, 0xc8, 0x5b, 0xb2, 0x7a, 0x64, 0x63, 0x26, 0x18, 0x60, 0x93, 0x5a, 0x43, 0x6f, 0x9a, 0xdc, 0x11, 0xfd, 0x17, + 0x62, 0x2b, 0x7d, 0xf0, 0x66, 0xb6, 0xc7, 0x79, 0x5d, 0x0c, 0x0b, 0xb3, 0xf8, 0x51, 0xcb, 0x24, 0xcd, 0xb8, 0x35, + 0x90, 0x8d, 0x00, 0xf3, 0x24, 0x44, 0x0b, 0xa2, 0x91, 0x58, 0x94, 0x2b, 0xe8, 0x7e, 0x9a, 0x55, 0x5d, 0xa9, 0xd4, + 0x2c, 0x4b, 0x57, 0xd4, 0x38, 0x2e, 0x62, 0xbc, 0xf8, 0xc8, 0xbe, 0xe8, 0x5b, 0xa9, 0x11, 0x64, 0x26, 0xa4, 0x1f, + 0x3b, 0x75, 0xe3, 0xa3, 0xe4, 0xfd, 0x93, 0xd2, 0x9f, 0x0c, 0x9d, 0x07, 0x90, 0xdc, 0xd9, 0x26, 0x6e, 0xc8, 0x3c, + 0xe8, 0xee, 0xd3, 0x5d, 0x27, 0x64, 0x4c, 0x4a, 0xd5, 0x7d, 0x8c, 0xef, 0xc5, 0xbe, 0x6e, 0x72, 0xee, 0x0c, 0xb1, + 0xc0, 0x22, 0xf4, 0xb7, 0x4f, 0x30, 0x6e, 0xcd, 0x6f, 0xae, 0xca, 0x86, 0x5c, 0x6e, 0x39, 0xb4, 0xed, 0xb5, 0x8c, + 0x34, 0xb6, 0x02, 0x8a, 0x3b, 0x7a, 0x2e, 0x1f, 0x78, 0xc1, 0x19, 0xe7, 0xc2, 0x76, 0x1a, 0x9a, 0xc1, 0xb7, 0xaf, + 0xca, 0x8e, 0x44, 0x82, 0xe7, 0x8f, 0xa8, 0x6e, 0x96, 0x1a, 0x84, 0x09, 0x66, 0x68, 0x49, 0xf1, 0x12, 0x04, 0x5d, + 0xd7, 0xb4, 0x1e, 0x11, 0xb3, 0x13, 0xf1, 0xd6, 0x10, 0xf7, 0x89, 0xb1, 0xd5, 0x9a, 0x2b, 0xb3, 0xb3, 0xaa, 0xa2, + 0xaa, 0x7a, 0x05, 0x00, 0xe8, 0xb2, 0x2a, 0x23, 0xd3, 0x13, 0x5c, 0xff, 0xd3, 0xad, 0x61, 0x28, 0xdb, 0x68, 0xc1, + 0xd0, 0x5c, 0xa4, 0x29, 0xea, 0xba, 0x2b, 0x9f, 0xe1, 0x6c, 0x12, 0x0e, 0x09, 0xde, 0xa1, 0xdf, 0xc1, 0xb3, 0xfb, + 0xa0, 0x5c, 0x41, 0x7a, 0x0b, 0xb7, 0x14, 0x39, 0x0f, 0xd0, 0xfb, 0x7d, 0x5a, 0x0c, 0xf9, 0x19, 0x40, 0xca, 0x3b, + 0x3d, 0xde, 0x6e, 0x3e, 0xe1, 0xd2, 0xa3, 0x38, 0xac, 0x1d, 0x48, 0x14, 0xf7, 0x3f, 0x58, 0xbd, 0x21, 0x75, 0x10, + 0x50, 0xcd, 0x86, 0x71, 0xd4, 0x91, 0xf2, 0x33, 0x7c, 0xca, 0x1e, 0x91, 0x5e, 0xf4, 0x0e, 0x6b, 0x77, 0xcc, 0x7e, + 0x31, 0xfd, 0x34, 0x1e, 0x72, 0x36, 0xb2, 0xe2, 0x10, 0xe6, 0x3a, 0x0b, 0x80, 0x7e, 0x4f, 0x09, 0x01, 0x90, 0x48, + 0xaf, 0x92, 0x9e, 0x2c, 0xcc, 0x8c, 0x9d, 0x22, 0xa3, 0xf5, 0x6e, 0x22, 0xe1, 0x48, 0x81, 0x0e, 0xfa, 0x53, 0x97, + 0xc2, 0x8e, 0x0d, 0x51, 0x31, 0xe3, 0xa3, 0x19, 0xca, 0x94, 0xc1, 0x00, 0x7c, 0x72, 0xda, 0xc5, 0xfc, 0xa6, 0xa6, + 0x19, 0x8e, 0x76, 0xc3, 0x08, 0xdf, 0x98, 0x17, 0x85, 0xe5, 0x2f, 0x8f, 0xf7, 0x02, 0xbc, 0x59, 0x12, 0x95, 0xb5, + 0xd7, 0x64, 0x4f, 0xe2, 0x92, 0xe4, 0x2f, 0x83, 0x07, 0x5e, 0x2b, 0x71, 0xeb, 0x0a, 0x74, 0xf5, 0x37, 0x17, 0xe9, + 0x5d, 0x76, 0x9f, 0x01, 0xbe, 0x42, 0xde, 0xbc, 0x76, 0x71, 0xab, 0x07, 0x7f, 0xd1, 0x1b, 0xb6, 0xee, 0x62, 0xd3, + 0xbc, 0xf7, 0x7f, 0xb3, 0x15, 0xbf, 0xe0, 0x30, 0x4b, 0x60, 0xcc, 0xb6, 0x4b, 0x91, 0xe7, 0x85, 0xe2, 0x78, 0x27, + 0xd4, 0xfb, 0xfb, 0x6e, 0x34, 0x73, 0x00, 0x24, 0xc2, 0xdb, 0x25, 0x2a, 0x30, 0x7d, 0x0e, 0x6f, 0x73, 0xe5, 0x00, + 0x5f, 0xbe, 0xa7, 0x16, 0x87, 0xf4, 0xe8, 0x2b, 0xc1, 0x0c, 0x46, 0x6c, 0xe9, 0xf6, 0x5d, 0x9d, 0x17, 0xe8, 0x5d, + 0x19, 0x75, 0x5e, 0x7e, 0x62, 0x83, 0xbe, 0x18, 0x1d, 0xb5, 0x32, 0xfd, 0x23, 0x5a, 0x96, 0x40, 0xad, 0x15, 0x9c, + 0xa6, 0xec, 0x22, 0x19, 0x31, 0x30, 0x22, 0xf4, 0x5a, 0x19, 0x3c, 0xda, 0xbe, 0xf0, 0xe3, 0x00, 0xae, 0xcc, 0xa5, + 0x2a, 0xce, 0x57, 0x60, 0x4b, 0xca, 0xed, 0xe8, 0xe4, 0x45, 0x5f, 0x17, 0x64, 0x23, 0x73, 0xf2, 0x16, 0xed, 0xa3, + 0x39, 0x8e, 0x47, 0x93, 0x39, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, + 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xd9, + 0x75, 0x53, 0x9e, 0xc5, 0x1b, 0x0c, 0x36, 0x20, 0xdd, 0x87, 0x08, 0xa3, 0x2e, 0x56, 0x62, 0x1f, 0x5b, 0x9f, 0xec, + 0xfc, 0x1c, 0x59, 0x66, 0x9b, 0x9a, 0x53, 0x2d, 0x89, 0x30, 0xa1, 0x41, 0x73, 0x64, 0x95, 0xfd, 0xb3, 0x6b, 0x91, + 0x9c, 0xe8, 0x64, 0xcc, 0x61, 0x4c, 0xb8, 0x86, 0x06, 0x2f, 0x19, 0x4b, 0xdd, 0x13, 0x8a, 0xcd, 0x1c, 0x5a, 0x82, + 0xa5, 0x2d, 0x65, 0x87, 0xe6, 0x40, 0x68, 0x63, 0xb6, 0xbd, 0x7f, 0x78, 0x77, 0x46, 0x52, 0x69, 0xa7, 0xb1, 0x16, + 0x40, 0x50, 0x42, 0xbf, 0xa2, 0x42, 0x4d, 0x94, 0xbd, 0x9b, 0xc2, 0xd5, 0xb2, 0x90, 0xbd, 0x7d, 0x1c, 0x2b, 0x6a, + 0xda, 0x35, 0xed, 0x5f, 0x73, 0x15, 0x8d, 0x7c, 0xd6, 0x2d, 0xfe, 0x67, 0xd0, 0x61, 0x19, 0x07, 0x1a, 0x35, 0x81, + 0x11, 0xa2, 0x40, 0x52, 0xf1, 0x93, 0x6c, 0xaa, 0x58, 0x0d, 0xce, 0x7c, 0x1d, 0x7b, 0xa5, 0xdc, 0x02, 0xaa, 0x6d, + 0x2d, 0x87, 0x60, 0xb3, 0x61, 0x6b, 0xb1, 0x4a, 0x7b, 0x9b, 0x9e, 0xe8, 0x71, 0xba, 0xa6, 0xa0, 0x15, 0xb7, 0xb4, + 0x0a, 0x7b, 0x20, 0x42, 0xbe, 0x42, 0x63, 0x27, 0x72, 0xa1, 0x40, 0xac, 0xb8, 0x89, 0x32, 0x38, 0x73, 0x39, 0x49, + 0x18, 0x81, 0x33, 0xd4, 0x8c, 0x2c, 0x82, 0x0c, 0x79, 0xe8, 0xc5, 0xba, 0xa6, 0x15, 0xf5, 0xda, 0x9d, 0x03, 0xc8, + 0x19, 0xff, 0xaa, 0xff, 0x59, 0x3f, 0x70, 0x3d, 0x30, 0x4f, 0x46, 0x09, 0x0b, 0x99, 0x83, 0x65, 0xea, 0x56, 0xe0, + 0x00, 0xd3, 0x7d, 0x42, 0xc6, 0x78, 0xf3, 0x8f, 0x5f, 0x36, 0x54, 0x64, 0x0b, 0x3f, 0xad, 0xae, 0xa9, 0x54, 0x6d, + 0x44, 0xe3, 0x19, 0x40, 0x3b, 0x74, 0x1b, 0x8a, 0x31, 0x22, 0x32, 0xa3, 0x31, 0x12, 0xea, 0x10, 0x5d, 0x6c, 0x40, + 0xa2, 0xe1, 0xdd, 0xa4, 0x29, 0x91, 0xa3, 0x68, 0xcc, 0xd9, 0x68, 0x34, 0xbd, 0xbf, 0xf3, 0xd3, 0xcc, 0xff, 0x6b, + 0xa3, 0xfd, 0xb8, 0x23, 0x76, 0x1f, 0x82, 0x02, 0x5b, 0x16, 0xf6, 0x20, 0x73, 0xc5, 0x0f, 0x01, 0xd3, 0x4e, 0xab, + 0xd1, 0x24, 0x73, 0x50, 0x72, 0x23, 0xed, 0xe8, 0xb8, 0x4b, 0x84, 0x98, 0xa5, 0x72, 0xad, 0x71, 0xd8, 0x80, 0xe3, + 0x6c, 0xf5, 0x8e, 0x60, 0x90, 0xb7, 0x9b, 0x72, 0xa0, 0x31, 0xe5, 0x36, 0xc4, 0xc0, 0x0f, 0x48, 0x38, 0x6a, 0x0e, + 0x7a, 0x55, 0xda, 0xa6, 0x1a, 0x6d, 0x32, 0x29, 0x48, 0x6d, 0xb2, 0x9b, 0xd4, 0x8f, 0xd2, 0x88, 0x49, 0x65, 0x25, + 0x7c, 0x7a, 0x3f, 0x4f, 0x43, 0x8c, 0x8c, 0x85, 0x05, 0x01, 0x89, 0xb2, 0xce, 0x6b, 0xf4, 0x5f, 0xf1, 0xf1, 0xa4, + 0xe8, 0x62, 0x29, 0xe3, 0x52, 0xc7, 0x79, 0x85, 0xe2, 0x90, 0xa4, 0x28, 0x08, 0x38, 0xf7, 0x8a, 0xef, 0x0c, 0xfe, + 0x42, 0x6c, 0x64, 0x76, 0x48, 0xff, 0xa6, 0x8f, 0xe2, 0xb2, 0x2b, 0x14, 0xed, 0x84, 0x51, 0x0a, 0x3a, 0x0e, 0x3f, + 0xb8, 0x23, 0x85, 0xee, 0x06, 0xb2, 0xaa, 0x3b, 0xb0, 0xc6, 0x1b, 0xd3, 0x66, 0x3e, 0x48, 0x6a, 0x96, 0xf9, 0xa8, + 0xd8, 0x00, 0xdb, 0x2d, 0xcb, 0x1b, 0xcf, 0xfb, 0x82, 0x65, 0x2c, 0x10, 0xb6, 0x30, 0xa4, 0x6e, 0xfb, 0xfb, 0xbd, + 0x42, 0x29, 0xcf, 0xab, 0x98, 0x35, 0xf2, 0x17, 0x9f, 0x5c, 0xaa, 0x06, 0x80, 0x42, 0xc5, 0x54, 0xf3, 0x09, 0xb6, + 0xb0, 0xd9, 0xbe, 0x23, 0xa4, 0xa2, 0x04, 0xe6, 0x5b, 0x7c, 0x8b, 0xf1, 0x31, 0x0d, 0x38, 0x7c, 0xbd, 0xfb, 0x13, + 0x5c, 0x6b, 0x2c, 0x35, 0x84, 0xde, 0x64, 0x06, 0x9d, 0x34, 0x94, 0xe6, 0x63, 0x27, 0x39, 0x85, 0x87, 0xc8, 0xe6, + 0x4c, 0x4f, 0xa3, 0xae, 0xc4, 0xc3, 0xc6, 0x69, 0x1a, 0x63, 0xa1, 0x2d, 0x7c, 0xa2, 0x46, 0x18, 0x50, 0xbe, 0x0f, + 0x45, 0x61, 0x96, 0xc7, 0x53, 0x86, 0xf0, 0x81, 0x25, 0xae, 0x2d, 0xa5, 0x10, 0x37, 0x3d, 0xe4, 0xe7, 0x56, 0xfc, + 0xd7, 0xc5, 0xd8, 0xdf, 0x00, 0x62, 0x76, 0xc7, 0xe4, 0x3c, 0x65, 0x20, 0x4b, 0x29, 0xc7, 0xae, 0xe1, 0xc6, 0x38, + 0xfe, 0x84, 0x28, 0x2c, 0x33, 0x15, 0x05, 0xab, 0x24, 0xff, 0x60, 0x50, 0x89, 0xaa, 0xac, 0x96, 0xc4, 0xc7, 0x5a, + 0xce, 0x5c, 0x46, 0xf9, 0x00, 0x58, 0xe6, 0x79, 0xc3, 0x4e, 0xa1, 0x31, 0x22, 0xda, 0xab, 0x6e, 0x41, 0xf8, 0xb2, + 0x0a, 0x53, 0x33, 0xd3, 0x23, 0x1b, 0x96, 0x03, 0xe8, 0xa2, 0x30, 0x70, 0x87, 0x18, 0x18, 0x9a, 0x62, 0x3d, 0xd2, + 0xb3, 0x3b, 0x97, 0x89, 0x8e, 0x28, 0xc7, 0x53, 0xa2, 0xcd, 0x7d, 0x34, 0xb0, 0xe5, 0x28, 0x52, 0x89, 0x65, 0x97, + 0x23, 0xdd, 0x8f, 0x5f, 0x82, 0x0e, 0x4f, 0x46, 0x7a, 0x6d, 0xdb, 0x56, 0xa9, 0x53, 0xc3, 0x94, 0x0b, 0xaf, 0xe6, + 0x40, 0x34, 0x51, 0x84, 0x51, 0x9a, 0x40, 0x2b, 0xe9, 0x08, 0x1e, 0x84, 0x7d, 0x45, 0x82, 0x39, 0xaf, 0xe6, 0xe0, + 0x5a, 0x49, 0x46, 0x52, 0xca, 0x17, 0x4a, 0x15, 0xcf, 0x6a, 0x1d, 0xb5, 0xf3, 0x5f, 0x1a, 0x52, 0xd6, 0x5e, 0x7b, + 0xcf, 0xf0, 0xf3, 0x80, 0x22, 0x31, 0x4f, 0x13, 0x03, 0x8b, 0x5a, 0x0d, 0x16, 0x83, 0x71, 0x23, 0x1c, 0x14, 0x3e, + 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, + 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xa3, 0xc7, 0x50, 0x0c, 0xf4, 0x1e, + 0x5e, 0xa2, 0x87, 0xd3, 0x52, 0x11, 0x00, 0x6e, 0x53, 0x3c, 0x1c, 0x80, 0x16, 0x60, 0xca, 0x5b, 0x35, 0x90, 0x20, + 0x59, 0x13, 0xb6, 0xd0, 0x8b, 0xcc, 0x14, 0xa4, 0xe8, 0xed, 0xd2, 0x2b, 0x37, 0x58, 0xa0, 0x4c, 0xf2, 0xc2, 0x14, + 0x7a, 0xda, 0x70, 0xf4, 0x7b, 0xc1, 0x49, 0x23, 0xb2, 0x44, 0x49, 0xc8, 0xce, 0xa9, 0xf0, 0xe0, 0x77, 0xd7, 0xde, + 0x0e, 0x4b, 0x86, 0x39, 0x8c, 0x4f, 0x2b, 0x62, 0x12, 0x6f, 0x37, 0x33, 0x47, 0xce, 0x9d, 0x32, 0x0f, 0x41, 0xf8, + 0x35, 0xd4, 0x56, 0xba, 0x5f, 0x40, 0xca, 0x83, 0xd5, 0xe0, 0x6f, 0xad, 0xfa, 0x61, 0xce, 0xb1, 0xaa, 0xd2, 0x60, + 0x9c, 0x10, 0x05, 0x45, 0x21, 0x86, 0xd9, 0x89, 0x92, 0xfd, 0xd5, 0x05, 0x6d, 0xc8, 0x66, 0x9a, 0xa1, 0xc4, 0x5e, + 0x89, 0x7c, 0x72, 0x77, 0xc6, 0x9e, 0xae, 0x35, 0x6d, 0x02, 0xdc, 0x48, 0x05, 0x23, 0xb0, 0xbe, 0xd2, 0xcb, 0x35, + 0xf5, 0x33, 0x6a, 0xd5, 0x20, 0xa2, 0x58, 0x25, 0x63, 0xf7, 0x59, 0xe7, 0x45, 0xa8, 0x58, 0x62, 0xfc, 0x40, 0x4a, + 0xea, 0x68, 0xc0, 0xb5, 0x4c, 0xf9, 0x78, 0x51, 0x4f, 0x54, 0x0a, 0x66, 0x6b, 0x4b, 0xf2, 0x25, 0x81, 0xee, 0x2f, + 0x9e, 0x8b, 0x33, 0xf5, 0x9c, 0x4a, 0x66, 0xd2, 0x3e, 0xb2, 0x6e, 0x95, 0xd6, 0xe4, 0x4a, 0x50, 0xd3, 0xa0, 0x8f, + 0x4c, 0x57, 0x60, 0x87, 0x42, 0xe1, 0x13, 0x8e, 0x1e, 0x35, 0xea, 0x5e, 0x8e, 0x58, 0x97, 0xb2, 0x12, 0x88, 0xab, + 0x53, 0xab, 0x15, 0xd7, 0x8b, 0x49, 0x02, 0x7c, 0x26, 0x53, 0xad, 0xa5, 0x21, 0xa3, 0x42, 0xc7, 0x25, 0xfb, 0xb0, + 0xf6, 0xf7, 0xb1, 0x2b, 0x9e, 0xf0, 0xb5, 0x29, 0xd3, 0x09, 0x47, 0xc2, 0xdb, 0x03, 0x37, 0x34, 0x4c, 0x6e, 0x3b, + 0x7a, 0xa7, 0x4d, 0x46, 0x52, 0x0a, 0xe2, 0x25, 0x65, 0xc1, 0x94, 0xd2, 0x8d, 0x0a, 0x94, 0x75, 0x48, 0xfe, 0x4f, + 0x24, 0x7c, 0xa7, 0xe3, 0x0a, 0xc5, 0x17, 0x6b, 0x63, 0xe0, 0x1c, 0x7c, 0x94, 0xe7, 0x3e, 0x2a, 0x29, 0xdf, 0x1d, + 0xd9, 0x65, 0x21, 0xcc, 0x93, 0xd9, 0x7c, 0x8e, 0x20, 0xf0, 0xa1, 0x0b, 0xd7, 0x3d, 0x94, 0xc4, 0x20, 0x5b, 0xbe, + 0x9e, 0x1a, 0x05, 0x93, 0xc7, 0x25, 0xed, 0x36, 0xb3, 0x36, 0x7d, 0x62, 0xee, 0x69, 0x5f, 0x2f, 0x89, 0xdf, 0x3c, + 0x26, 0xa8, 0x4a, 0xd2, 0xbf, 0x35, 0xdb, 0x55, 0x6b, 0xd4, 0x51, 0x40, 0x38, 0x01, 0x75, 0x66, 0x1b, 0x79, 0xd2, + 0xa9, 0x97, 0xc5, 0x2c, 0x2a, 0x3e, 0x7c, 0x0d, 0x46, 0x16, 0x67, 0x0c, 0xc7, 0xc2, 0x1f, 0x20, 0x30, 0x68, 0xde, + 0x16, 0x35, 0x9c, 0xb0, 0x21, 0x84, 0xb4, 0x36, 0xcc, 0xfc, 0x37, 0x1b, 0x31, 0xa9, 0x30, 0x62, 0x32, 0xdd, 0xb9, + 0x8d, 0x8b, 0xc4, 0xfc, 0x7d, 0xd0, 0x4a, 0xfc, 0x5f, 0xd1, 0x24, 0x9c, 0xcc, 0xa1, 0x2b, 0x45, 0xe0, 0x6a, 0x1f, + 0x44, 0x00, 0x75, 0x35, 0x93, 0xf6, 0xe3, 0x13, 0x72, 0x5f, 0x23, 0xf6, 0xe1, 0x0e, 0x00, 0x79, 0xc6, 0xea, 0x1c, + 0xc1, 0xdf, 0x03, 0x74, 0x5b, 0xc7, 0xac, 0x1a, 0x43, 0x0c, 0x85, 0x30, 0x1a, 0x09, 0x52, 0xca, 0xbf, 0x3d, 0xaf, + 0xa4, 0x70, 0xcd, 0xab, 0x1a, 0xe1, 0xb4, 0x6d, 0x18, 0xed, 0x47, 0xf9, 0x51, 0x8f, 0xa6, 0xc1, 0x45, 0x65, 0x2d, + 0x00, 0x8b, 0x9c, 0x50, 0xfc, 0xc0, 0x94, 0x52, 0xdf, 0xd2, 0x45, 0x63, 0xeb, 0xa3, 0x58, 0x55, 0x00, 0x2b, 0x3f, + 0xfd, 0x39, 0x13, 0x61, 0x9b, 0xc4, 0x6a, 0xcc, 0x63, 0xbb, 0x76, 0x6a, 0xd7, 0x96, 0x75, 0xb7, 0xcf, 0x7d, 0x4d, + 0x25, 0xf8, 0x27, 0xcc, 0x57, 0xfa, 0x7d, 0x10, 0xed, 0x66, 0x1d, 0x12, 0xf1, 0xb9, 0x3c, 0x7c, 0xb0, 0xf9, 0x8d, + 0x83, 0x6b, 0x91, 0x07, 0x7b, 0x54, 0x75, 0x14, 0x44, 0x2f, 0x68, 0xf2, 0xe6, 0x47, 0x31, 0xf4, 0x11, 0x28, 0xff, + 0x24, 0x68, 0xa7, 0x77, 0xaa, 0x67, 0xcb, 0x3b, 0x3e, 0xc8, 0x56, 0xc8, 0xaa, 0xde, 0x8a, 0xfa, 0x9f, 0x5a, 0x5d, + 0x64, 0x9a, 0x09, 0xa5, 0x82, 0xdd, 0xb2, 0x5c, 0xb7, 0xda, 0xab, 0xf0, 0x80, 0x25, 0x66, 0xb5, 0x47, 0xf4, 0x67, + 0x9c, 0x3d, 0x38, 0x91, 0x8a, 0xf6, 0xe4, 0x6b, 0x46, 0xdc, 0x8c, 0x77, 0x64, 0x36, 0x39, 0x4a, 0xdd, 0x0a, 0xf9, + 0x4f, 0xdd, 0xf8, 0xe7, 0x39, 0x2f, 0x13, 0x22, 0xa1, 0x92, 0xa9, 0x99, 0x47, 0x04, 0xb1, 0x8b, 0x85, 0xd7, 0x43, + 0x7d, 0xa9, 0x37, 0x95, 0x65, 0x61, 0xbd, 0xc7, 0xc2, 0x7a, 0x4f, 0x41, 0xc9, 0xd4, 0xd3, 0x44, 0x28, 0xd5, 0x85, + 0x70, 0x79, 0x89, 0x53, 0x3c, 0x2b, 0x3c, 0x7a, 0x3c, 0xf8, 0x27, 0x96, 0x6f, 0xd9, 0xe0, 0xe3, 0x89, 0xd8, 0xf0, + 0xfb, 0x4d, 0x83, 0xbd, 0xc2, 0xfa, 0xab, 0x26, 0x8f, 0x87, 0xd6, 0x11, 0x77, 0xfd, 0xce, 0x37, 0xf3, 0xdb, 0x70, + 0x03, 0xf3, 0x0a, 0x06, 0x0d, 0x64, 0x25, 0x2b, 0x46, 0xb2, 0xe1, 0x5b, 0x7b, 0xe5, 0xb5, 0x65, 0x58, 0x66, 0xd2, + 0xbe, 0xb9, 0xed, 0x9e, 0xe6, 0x43, 0x64, 0xa5, 0x82, 0x29, 0x7f, 0xd9, 0xcb, 0x73, 0x01, 0x00, 0x00, 0xc0, 0xa9, + 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, + 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x2a, 0xcb, 0xf0, 0xf6, 0xb4, 0x8f, 0xef, 0xc0, 0x22, 0x53, 0x61, + 0x30, 0x12, 0x73, 0xb5, 0x3a, 0xeb, 0x6b, 0x0d, 0x1c, 0x31, 0x91, 0xf0, 0xed, 0xde, 0xb9, 0x4e, 0x55, 0xab, 0x9c, + 0x2a, 0x2d, 0x94, 0x97, 0x4a, 0x7d, 0x17, 0xe8, 0x28, 0x13, 0xb2, 0xd2, 0x4b, 0x26, 0x61, 0x22, 0xda, 0xef, 0x01, + 0x49, 0x18, 0x7e, 0x11, 0xa7, 0xb0, 0xdc, 0x94, 0xbc, 0xb6, 0x9c, 0xa8, 0x42, 0xd9, 0x6d, 0x0f, 0x52, 0x24, 0x86, + 0xd3, 0xe1, 0x88, 0x61, 0x95, 0xf9, 0xc2, 0x8e, 0x64, 0x9f, 0x81, 0xe6, 0xe2, 0xc6, 0xeb, 0x99, 0xc0, 0xf0, 0xd0, + 0xc6, 0x04, 0x7f, 0x21, 0x22, 0xcf, 0x98, 0xc3, 0x13, 0x89, 0xac, 0x6e, 0x9a, 0x34, 0xb7, 0x8e, 0xd9, 0x46, 0x55, + 0x19, 0x76, 0x2b, 0xae, 0x75, 0x89, 0xff, 0x54, 0x57, 0x90, 0xdd, 0x37, 0x8e, 0xfe, 0xc9, 0x13, 0xdc, 0x67, 0x22, + 0x3f, 0x7e, 0x10, 0x45, 0x73, 0x69, 0xbc, 0x37, 0xc4, 0x7a, 0xfb, 0xf2, 0x1f, 0x1b, 0x13, 0xd8, 0xe6, 0x81, 0xbe, + 0xfd, 0xf4, 0x52, 0x45, 0x9d, 0xa6, 0xfa, 0x48, 0xab, 0xab, 0x0a, 0x9c, 0x0d, 0xc4, 0xab, 0x1a, 0x63, 0xb1, 0x16, + 0x59, 0x4a, 0x34, 0x22, 0xdf, 0x27, 0x6e, 0x01, 0x1d, 0xaa, 0x4f, 0xe6, 0xa1, 0x5a, 0xfd, 0x05, 0xfc, 0xc4, 0xdb, + 0x59, 0xba, 0x88, 0x89, 0x60, 0x96, 0x56, 0xef, 0x75, 0x4c, 0xf5, 0xb5, 0xea, 0x39, 0x74, 0xe8, 0xb7, 0x3c, 0xb6, + 0x5e, 0x40, 0x6f, 0xdb, 0x62, 0x27, 0x91, 0x07, 0xd3, 0x9a, 0xb8, 0x86, 0x9c, 0x8a, 0xbd, 0x04, 0x0d, 0x46, 0xc3, + 0x77, 0x06, 0xa3, 0x26, 0xfb, 0x76, 0x9f, 0xd9, 0x0a, 0x95, 0x15, 0x17, 0xd0, 0x4d, 0xad, 0x5a, 0x37, 0x1d, 0x79, + 0xc7, 0xef, 0x70, 0xdd, 0x50, 0xbe, 0x5e, 0x30, 0xcf, 0x4e, 0xc9, 0x0c, 0xd9, 0x20, 0x85, 0xf1, 0x24, 0xd6, 0x22, + 0x7b, 0x15, 0x3b, 0x2f, 0x44, 0xdc, 0xf2, 0xc3, 0x02, 0xd3, 0xf8, 0x5a, 0x36, 0x82, 0x9b, 0xf5, 0xc8, 0xbb, 0x1b, + 0x09, 0x1f, 0x9c, 0xf1, 0x88, 0x78, 0x88, 0x77, 0x88, 0x9b, 0x27, 0xbd, 0x7a, 0x70, 0x1a, 0xc6, 0xc0, 0x3c, 0xfc, + 0xfe, 0xc5, 0x6b, 0x69, 0xf8, 0x8b, 0x66, 0x8d, 0x68, 0x28, 0xd8, 0x68, 0x4e, 0x0d, 0xe0, 0xf7, 0x08, 0x38, 0x11, + 0xa0, 0x43, 0x7d, 0xd5, 0x59, 0x8a, 0xf2, 0x93, 0xc4, 0x93, 0x01, 0x83, 0xfb, 0x60, 0x69, 0x21, 0x86, 0x85, 0xc9, + 0xad, 0xb0, 0xd7, 0xc0, 0x4c, 0xf4, 0x69, 0x33, 0x16, 0x76, 0x5d, 0x4a, 0x65, 0xd9, 0x09, 0x9a, 0x63, 0x0e, 0x5a, + 0x32, 0x96, 0x42, 0xe5, 0xcb, 0xe4, 0x3d, 0x1d, 0x00, 0x42, 0x32, 0x85, 0xa7, 0x6b, 0x92, 0xca, 0x6c, 0x6e, 0x12, + 0x1e, 0x1e, 0x37, 0xff, 0xba, 0x2d, 0xa3, 0x23, 0x42, 0xaa, 0x11, 0x15, 0xbf, 0x30, 0xa3, 0x30, 0x7a, 0x16, 0xd7, + 0x4b, 0xf7, 0x75, 0x11, 0x85, 0x19, 0xe8, 0x47, 0x52, 0xe2, 0xdc, 0xd1, 0x24, 0x49, 0x77, 0x55, 0x61, 0x4f, 0xc5, + 0x43, 0xb9, 0x91, 0x0e, 0xc9, 0x63, 0xd0, 0xb2, 0x5d, 0xb9, 0xb5, 0xca, 0x88, 0x58, 0x94, 0xa0, 0xda, 0x02, 0xfb, + 0x23, 0x07, 0xbc, 0x35, 0x27, 0xb0, 0xd7, 0xbd, 0x30, 0x97, 0x4b, 0x95, 0x68, 0xa1, 0x6c, 0xb4, 0xa6, 0xc4, 0x16, + 0xf5, 0x33, 0x58, 0x39, 0xc9, 0x89, 0xa0, 0x51, 0x7e, 0xd2, 0x26, 0xe5, 0x4c, 0x16, 0x47, 0xf0, 0x6a, 0x88, 0x7a, + 0xa7, 0x5f, 0x66, 0xcf, 0x05, 0x34, 0xb2, 0x8a, 0x1b, 0x04, 0xc7, 0xf0, 0x37, 0x21, 0x36, 0x44, 0x9d, 0x48, 0x28, + 0xd6, 0x28, 0xd6, 0xa3, 0x34, 0x7e, 0x3e, 0x39, 0x1c, 0x30, 0xe1, 0x77, 0xf4, 0xdf, 0x30, 0x7e, 0x8f, 0x48, 0xb4, + 0x14, 0x16, 0x45, 0xad, 0x63, 0x72, 0x01, 0xb0, 0x79, 0x7d, 0x29, 0x63, 0xdb, 0x2a, 0x60, 0x12, 0x12, 0xd2, 0xfe, + 0xde, 0x2a, 0xb1, 0x8a, 0xab, 0x67, 0x6d, 0x93, 0x2e, 0x54, 0x81, 0x72, 0xb6, 0xf9, 0x70, 0xff, 0x02, 0x2f, 0x74, + 0x04, 0x32, 0xd1, 0xba, 0x2f, 0xd9, 0x4c, 0x9f, 0x1c, 0x79, 0x73, 0x12, 0x5e, 0x08, 0xe2, 0xe3, 0xa4, 0x2a, 0xe7, + 0xfc, 0xff, 0xd7, 0x92, 0x64, 0x44, 0xdc, 0x8a, 0xf0, 0xe7, 0x4f, 0xad, 0x16, 0x2a, 0xff, 0x9a, 0xe6, 0x7b, 0xf3, + 0xfa, 0x6c, 0xa4, 0x5d, 0xf7, 0x7e, 0x7a, 0xbc, 0xd2, 0x31, 0xae, 0x76, 0x93, 0x69, 0xe8, 0xcc, 0x4f, 0x70, 0x63, + 0xc0, 0x7e, 0xd0, 0xd2, 0xdc, 0x4e, 0x6a, 0x01, 0xc7, 0x7c, 0xc3, 0x53, 0x6f, 0xc9, 0x47, 0xe0, 0x2c, 0xcd, 0x05, + 0xdc, 0x19, 0x0a, 0x5d, 0xf5, 0x6a, 0xbb, 0x55, 0x22, 0x09, 0x32, 0xfa, 0x50, 0xab, 0xa2, 0xb2, 0x96, 0x68, 0xbe, + 0x00, 0x47, 0xa4, 0x90, 0x6d, 0xaf, 0x0b, 0x70, 0xba, 0xb1, 0xab, 0x56, 0x83, 0xae, 0xa2, 0x93, 0x5c, 0x3e, 0x77, + 0x63, 0x89, 0x10, 0xb2, 0x18, 0x07, 0x61, 0x58, 0x0e, 0xb3, 0xd0, 0x82, 0x10, 0x8e, 0x5b, 0x09, 0xe2, 0xa5, 0x9f, + 0x54, 0x5d, 0x92, 0x92, 0x2d, 0xca, 0x7e, 0xf4, 0x7e, 0xad, 0xf4, 0x44, 0x53, 0x38, 0x51, 0x0c, 0xfd, 0xb5, 0xae, + 0x21, 0x0c, 0x10, 0xc3, 0x4e, 0x55, 0x28, 0xd3, 0x4b, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, + 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, + 0x84, 0x44, 0x6a, 0xac, 0x48, 0x46, 0x11, 0x76, 0x3c, 0x2d, 0x52, 0x5c, 0x6c, 0x6c, 0xf3, 0xdd, 0x93, 0xc2, 0xa8, + 0x8f, 0xe5, 0x34, 0x1d, 0x55, 0xba, 0x93, 0x54, 0xd2, 0x48, 0x0c, 0x6d, 0xfe, 0xe4, 0x24, 0x6c, 0x9b, 0x3c, 0x49, + 0x34, 0xae, 0x34, 0xa4, 0x41, 0x40, 0x52, 0x50, 0xb0, 0xf3, 0x27, 0x55, 0xd8, 0xa5, 0x28, 0x57, 0x96, 0xea, 0xe5, + 0x33, 0x58, 0x4a, 0x57, 0xbc, 0x58, 0x52, 0xc9, 0x0c, 0x73, 0x05, 0xd1, 0x50, 0xda, 0x2a, 0xe7, 0x66, 0x8e, 0xee, + 0x9d, 0x9f, 0x1c, 0xc0, 0x5e, 0xe8, 0xb6, 0x80, 0xdc, 0x55, 0xc1, 0xd0, 0x51, 0xd3, 0x19, 0x66, 0x7e, 0xaa, 0x62, + 0x3d, 0xf7, 0xed, 0x04, 0xc5, 0x81, 0x3e, 0x19, 0x13, 0xd5, 0x40, 0x25, 0xbb, 0x2a, 0x77, 0x14, 0xf5, 0x76, 0xe2, + 0x94, 0xbe, 0xac, 0x12, 0x14, 0x4a, 0x84, 0xad, 0xe5, 0xbf, 0x38, 0x27, 0xce, 0x7a, 0x23, 0x31, 0x22, 0x94, 0x96, + 0x2e, 0xab, 0x14, 0x5e, 0xcb, 0x82, 0x34, 0x71, 0x1b, 0x42, 0xbf, 0xa1, 0x24, 0x93, 0xe9, 0x22, 0x44, 0xb1, 0x60, + 0xfb, 0xc8, 0x47, 0xce, 0x5b, 0xe0, 0xe4, 0x84, 0xca, 0x37, 0x31, 0x7b, 0x53, 0x4a, 0x1c, 0xd2, 0xef, 0xdf, 0x3d, + 0x32, 0xb8, 0xb4, 0x95, 0xf4, 0x2e, 0x48, 0xa8, 0x87, 0xc1, 0x82, 0x03, 0x23, 0xcd, 0x3d, 0x69, 0x61, 0x86, 0x76, + 0xab, 0xd5, 0x49, 0x8a, 0x5c, 0xd6, 0xa1, 0x5c, 0xd3, 0x5a, 0x0d, 0x3a, 0xc2, 0x4c, 0x9a, 0xd6, 0x94, 0xfa, 0xd0, + 0x6e, 0xb7, 0x57, 0x6b, 0x39, 0xcb, 0xbe, 0xec, 0x90, 0x5b, 0xb7, 0x98, 0xdc, 0x95, 0x32, 0x88, 0x13, 0x4a, 0x54, + 0xb9, 0x93, 0x60, 0xe8, 0x9f, 0xcd, 0xdf, 0x20, 0x8e, 0x2d, 0xad, 0xa4, 0x8e, 0xa5, 0xca, 0xac, 0x99, 0xd3, 0x7b, + 0x08, 0x02, 0xbd, 0x13, 0xaf, 0x7e, 0x43, 0xd9, 0x23, 0xcd, 0xef, 0x58, 0x34, 0x93, 0x40, 0x3c, 0xf8, 0xff, 0xd8, + 0xbf, 0xc4, 0xec, 0x65, 0x62, 0xb2, 0x61, 0x72, 0x74, 0xfc, 0xa1, 0x51, 0x7b, 0x42, 0x09, 0x42, 0x7b, 0x8a, 0xf9, + 0xc2, 0xb0, 0x8b, 0x4d, 0xb4, 0x12, 0xef, 0x86, 0xe3, 0x4c, 0xe4, 0x1e, 0xe5, 0xeb, 0x4b, 0x12, 0x7d, 0xd7, 0xf7, + 0x1c, 0xae, 0x75, 0x15, 0x11, 0xe7, 0x9b, 0x2f, 0xda, 0xfb, 0xcf, 0x48, 0xdb, 0xe9, 0x54, 0x30, 0x48, 0x84, 0x54, + 0xf4, 0xc1, 0xbf, 0xe5, 0x75, 0x17, 0x7e, 0x63, 0x6f, 0xb0, 0x06, 0x98, 0x36, 0x2b, 0x9c, 0xe1, 0xfe, 0xf0, 0x41, + 0xc7, 0x12, 0xe6, 0x27, 0x55, 0x22, 0x91, 0x18, 0x09, 0x05, 0xef, 0x76, 0x6b, 0x34, 0x97, 0x69, 0x6e, 0x5a, 0x28, + 0x78, 0x5e, 0x63, 0x0f, 0xdb, 0x02, 0x85, 0x1d, 0x08, 0xf8, 0x4b, 0xce, 0x35, 0x5a, 0x91, 0x2a, 0x46, 0x6e, 0x22, + 0x07, 0x16, 0x68, 0xb7, 0x52, 0xf4, 0x3c, 0x64, 0x39, 0x60, 0x4f, 0xf9, 0x66, 0x54, 0xee, 0x91, 0xb5, 0x6b, 0xd1, + 0xf5, 0xb7, 0x2d, 0xb7, 0x25, 0xf7, 0x78, 0xfe, 0x22, 0xfd, 0x6d, 0xe7, 0xa8, 0x8e, 0xe1, 0xf2, 0x6f, 0xde, 0x28, + 0x1f, 0xc6, 0xb7, 0xbf, 0xf1, 0xfc, 0x48, 0xdb, 0x97, 0x94, 0x77, 0xbd, 0xbe, 0xae, 0xac, 0x5a, 0x4d, 0x15, 0xc2, + 0xbc, 0x87, 0xa3, 0xb7, 0xc1, 0x3e, 0xdb, 0x62, 0x1a, 0x8f, 0xce, 0x19, 0xde, 0x58, 0xbc, 0xbe, 0x24, 0xac, 0x8e, + 0x90, 0xe5, 0xe2, 0x12, 0x6e, 0x23, 0xfb, 0x07, 0x32, 0xc4, 0xe5, 0x31, 0x9e, 0x3d, 0xf3, 0x96, 0x93, 0x41, 0xf6, + 0x1e, 0x54, 0xf0, 0xf9, 0xfd, 0x03, 0x76, 0x0e, 0x26, 0x8a, 0x25, 0xfb, 0x48, 0x24, 0x84, 0xbb, 0xdd, 0x92, 0xc8, + 0x27, 0x84, 0x04, 0x24, 0x14, 0x24, 0xb4, 0x9e, 0xef, 0xfe, 0x4a, 0x3e, 0xb2, 0x80, 0xad, 0x2a, 0x42, 0xa3, 0x96, + 0xe2, 0x32, 0x81, 0xfa, 0xba, 0xc9, 0x1e, 0xee, 0x8c, 0x62, 0x1e, 0x47, 0xb4, 0x7d, 0xf3, 0xd0, 0x04, 0x24, 0x05, + 0x61, 0x96, 0x80, 0xaa, 0x9a, 0xbf, 0x7c, 0x5a, 0x68, 0xef, 0x40, 0x28, 0x75, 0xd8, 0x03, 0xf8, 0xee, 0xbb, 0x97, + 0x0d, 0x6a, 0xfc, 0xc6, 0x78, 0x7b, 0xd7, 0xe5, 0x0d, 0xb9, 0x5a, 0xbb, 0x9e, 0x35, 0x18, 0x0c, 0xba, 0x6d, 0x61, + 0x05, 0xd9, 0x85, 0x3a, 0xd2, 0xc0, 0x54, 0xa6, 0x20, 0x9a, 0xbf, 0x09, 0x8c, 0x87, 0x28, 0xb8, 0xe3, 0xc1, 0xc4, + 0x0b, 0x14, 0xf7, 0x2c, 0x47, 0xf1, 0xfa, 0x05, 0xfe, 0xed, 0xdb, 0x39, 0xdc, 0xb9, 0x89, 0x01, 0xec, 0xcf, 0x91, + 0x9f, 0x40, 0x24, 0xe0, 0xd1, 0xf5, 0x48, 0xe5, 0xf5, 0x0e, 0x84, 0x11, 0x89, 0xb1, 0x08, 0x0b, 0xc7, 0xfa, 0xbb, + 0x28, 0x76, 0x8d, 0xa2, 0xe8, 0x88, 0x0b, 0x00, 0x2d, 0x8a, 0xe8, 0x59, 0x35, 0x9e, 0x00, 0x68, 0x4c, 0xff, 0xc8, + 0x0b, 0x6e, 0x0e, 0x89, 0x0a, 0x45, 0xc5, 0xa5, 0xa6, 0xc7, 0x70, 0xba, 0x43, 0x19, 0xa5, 0xc5, 0x58, 0xa2, 0x9c, + 0xb2, 0x49, 0x13, 0xb7, 0x62, 0xbe, 0x6e, 0x16, 0x3f, 0x66, 0x42, 0x17, 0xd9, 0x08, 0x9d, 0xe3, 0x1e, 0xca, 0x37, + 0x5d, 0x98, 0x5e, 0x53, 0x4f, 0xd4, 0x02, 0x13, 0xc3, 0xf7, 0x8f, 0xbe, 0xf6, 0x90, 0x83, 0x4f, 0xfe, 0x16, 0x80, + 0x57, 0x2d, 0xf3, 0x50, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, + 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x29, 0xd4, + 0x63, 0xed, 0xfc, 0x91, 0x62, 0x23, 0x4f, 0x68, 0xd4, 0xba, 0x46, 0xc6, 0xf0, 0x27, 0x29, 0xb8, 0x29, 0x5f, 0x7b, + 0xe6, 0x17, 0xfa, 0x7b, 0x2d, 0x5b, 0x4f, 0x0c, 0x5a, 0xdc, 0x14, 0x91, 0x52, 0xab, 0x7d, 0x53, 0xe0, 0xf9, 0x36, + 0xfa, 0x06, 0x0d, 0xe5, 0x5b, 0xc5, 0xfe, 0x28, 0xf8, 0x69, 0x6b, 0x29, 0xc8, 0x22, 0xbe, 0x8d, 0x00, 0x2e, 0x67, + 0xc4, 0x0d, 0x26, 0x22, 0x2d, 0x3e, 0xe8, 0x6f, 0x29, 0x2a, 0x31, 0x90, 0x86, 0x45, 0xda, 0x4d, 0x52, 0xa3, 0x6d, + 0x78, 0xbc, 0x72, 0x2a, 0x36, 0xeb, 0xc5, 0x23, 0x7a, 0xe2, 0x4f, 0x6b, 0xb5, 0x97, 0xee, 0x1c, 0xe4, 0x3b, 0x15, + 0xda, 0xa6, 0xe6, 0xfb, 0x88, 0xd4, 0x08, 0xcf, 0x1a, 0x03, 0x9d, 0xb4, 0xad, 0x6f, 0x79, 0xdb, 0xed, 0x37, 0x56, + 0x53, 0x1b, 0xd4, 0x11, 0xaa, 0xa3, 0x75, 0x02, 0xb1, 0x32, 0x1c, 0x3d, 0x50, 0x33, 0xf5, 0x59, 0xfb, 0x0a, 0xf5, + 0x9b, 0x2c, 0x82, 0xd9, 0x32, 0x3e, 0xbd, 0x5f, 0xbd, 0xbf, 0x03, 0xf2, 0x97, 0xfc, 0x5c, 0x3e, 0x5a, 0xfe, 0xbb, + 0x7a, 0xbe, 0x47, 0x92, 0x86, 0x35, 0xa4, 0x0f, 0x5d, 0xf2, 0x10, 0xf0, 0x7a, 0xe4, 0x31, 0xc3, 0x33, 0x10, 0xf4, + 0x03, 0x72, 0x47, 0xee, 0xdb, 0x71, 0xbb, 0x6d, 0x53, 0x21, 0x4d, 0x4b, 0xc8, 0x78, 0xf9, 0xdc, 0x94, 0xcb, 0x4a, + 0x9b, 0xa2, 0xdf, 0x09, 0xea, 0x11, 0x9e, 0xc1, 0xff, 0xba, 0xc4, 0x85, 0xf6, 0x61, 0x31, 0xf7, 0xa7, 0x4b, 0x6f, + 0xc3, 0x12, 0x06, 0xf0, 0x98, 0x85, 0xda, 0xd8, 0x45, 0xc0, 0xcc, 0xe3, 0x47, 0xb3, 0xca, 0xde, 0xd8, 0x99, 0xa7, + 0x0c, 0x50, 0x42, 0xd8, 0x7c, 0xf1, 0x86, 0x69, 0x77, 0xf3, 0x59, 0x6b, 0x60, 0x29, 0x82, 0xa2, 0xa4, 0xcf, 0xb4, + 0x68, 0x14, 0xd2, 0xe9, 0x15, 0x04, 0x4e, 0x5e, 0x9f, 0xdf, 0x51, 0xab, 0xe9, 0xdf, 0xb1, 0x5b, 0x1c, 0xd2, 0x5e, + 0x40, 0x31, 0x30, 0xb7, 0xde, 0x7e, 0x7c, 0xc8, 0xbf, 0xb1, 0xfc, 0x8c, 0x09, 0x9f, 0xf6, 0x46, 0xde, 0x1d, 0x21, + 0x44, 0x89, 0xc3, 0xb9, 0x70, 0x75, 0x42, 0xc8, 0x4d, 0x78, 0x80, 0x0e, 0x9f, 0x7f, 0x93, 0x1b, 0x9a, 0x1a, 0x9a, + 0x49, 0x54, 0xfa, 0x31, 0xd1, 0x84, 0x0b, 0x71, 0xc1, 0x16, 0xdb, 0xcc, 0xba, 0x73, 0x3e, 0x9b, 0x30, 0xd8, 0xbf, + 0xed, 0xcb, 0x0a, 0xb0, 0xb6, 0x1b, 0xb0, 0xec, 0x01, 0x64, 0x42, 0x02, 0xc6, 0x84, 0xfd, 0x14, 0xda, 0x69, 0x12, + 0x83, 0xe6, 0x73, 0x24, 0xb5, 0x9a, 0x5d, 0x36, 0x6d, 0xe1, 0x7a, 0x04, 0x41, 0xc7, 0xf2, 0xd4, 0xf9, 0xa6, 0x6f, + 0x06, 0x53, 0x7d, 0xd4, 0x5c, 0x0f, 0x67, 0xba, 0x42, 0x73, 0x90, 0x2c, 0x73, 0xf7, 0x67, 0x21, 0xfe, 0x0d, 0x01, + 0x54, 0x0c, 0x1e, 0x0e, 0xc9, 0x77, 0xf0, 0x7d, 0x89, 0x58, 0xb0, 0x25, 0x32, 0x0d, 0x1d, 0xcd, 0x61, 0xc6, 0x14, + 0x3f, 0xd0, 0x43, 0xe5, 0x9a, 0xae, 0xf8, 0x1b, 0x68, 0x77, 0xe0, 0xa3, 0x07, 0xc3, 0x0f, 0x93, 0xbe, 0x33, 0x5a, + 0x1f, 0x1e, 0x93, 0xa9, 0x5f, 0xe1, 0x45, 0xee, 0xaf, 0x5d, 0xcc, 0x59, 0xbb, 0x15, 0xe1, 0x3e, 0x01, 0x94, 0x8d, + 0xc1, 0xbc, 0x44, 0x62, 0xb2, 0x26, 0x76, 0x19, 0x04, 0x10, 0x82, 0xa2, 0xd0, 0xb3, 0x59, 0x70, 0xa5, 0x9c, 0x04, + 0x4b, 0x68, 0x8d, 0xea, 0x42, 0x03, 0x73, 0x04, 0x1f, 0xee, 0x9e, 0x97, 0x1f, 0xdd, 0x87, 0x22, 0xfa, 0xcd, 0x3f, + 0xf3, 0x42, 0x47, 0x94, 0x38, 0xcb, 0x3b, 0x42, 0x09, 0xc4, 0xb1, 0x96, 0x5b, 0x8f, 0xa5, 0xb9, 0x61, 0x2d, 0x3e, + 0x60, 0x94, 0x80, 0x65, 0x28, 0x71, 0xde, 0x22, 0xc3, 0x81, 0x11, 0x0f, 0x42, 0x6a, 0xae, 0x53, 0x02, 0x05, 0x30, + 0x73, 0x69, 0xd7, 0x5b, 0x70, 0xba, 0x4a, 0x98, 0x51, 0x49, 0x52, 0x4b, 0x73, 0xda, 0xc0, 0x55, 0xe9, 0xed, 0x2e, + 0x06, 0x22, 0x93, 0x19, 0x26, 0x3e, 0xd5, 0x73, 0x38, 0x3d, 0xf9, 0x73, 0x16, 0xe4, 0xeb, 0xec, 0x55, 0xd4, 0x25, + 0xb6, 0xdf, 0x0d, 0x51, 0x8b, 0xce, 0xab, 0x3e, 0xe2, 0x98, 0x52, 0x3f, 0x17, 0x03, 0xbf, 0xa3, 0x70, 0x4a, 0xec, + 0x1c, 0x76, 0xd4, 0x69, 0xd0, 0x8a, 0x14, 0x40, 0xf9, 0xc2, 0xcb, 0xa6, 0x1d, 0x9e, 0x7d, 0x8e, 0x6e, 0x26, 0xff, + 0x40, 0xe7, 0xab, 0x0a, 0x1a, 0x0d, 0x58, 0x16, 0x88, 0x12, 0x86, 0xf7, 0x5a, 0x89, 0x8e, 0xc0, 0x5e, 0xb2, 0x81, + 0xa8, 0xf4, 0xeb, 0x84, 0x73, 0x46, 0x86, 0xb8, 0x3e, 0xd7, 0x74, 0x06, 0x8e, 0x11, 0xaf, 0x23, 0x62, 0x92, 0x4f, + 0x37, 0xd5, 0xd8, 0xbf, 0x40, 0xad, 0x6e, 0x08, 0x0a, 0x91, 0x02, 0x3a, 0xf2, 0x86, 0x73, 0xf4, 0x66, 0x7f, 0x37, + 0xda, 0xed, 0xac, 0x94, 0xe2, 0x66, 0x7f, 0xfa, 0xbf, 0x31, 0xab, 0xd0, 0x17, 0x3e, 0x65, 0xa5, 0x9b, 0x50, 0x60, + 0x33, 0x05, 0xab, 0xf8, 0x20, 0x0f, 0x36, 0x5f, 0xf1, 0xb8, 0x62, 0x3c, 0xad, 0xbe, 0x86, 0x53, 0xcd, 0xaf, 0x56, + 0x15, 0x2c, 0x08, 0xce, 0x28, 0x0b, 0x3a, 0xff, 0xca, 0xaa, 0x87, 0xb9, 0xd5, 0xb0, 0x87, 0x4b, 0x47, 0x69, 0x01, + 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, + 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x1a, 0x45, 0xeb, 0xd0, 0x92, 0x60, 0x6e, + 0x93, 0x61, 0xa3, 0x51, 0x90, 0xc2, 0x6f, 0x96, 0x08, 0xd6, 0x00, 0xd2, 0x4f, 0x66, 0xad, 0xf1, 0x1d, 0x9a, 0xee, + 0xd9, 0x1e, 0xba, 0xd6, 0xa7, 0x10, 0xf2, 0x84, 0x1f, 0x15, 0x9c, 0xbb, 0xfe, 0x75, 0xcd, 0x15, 0xf7, 0x40, 0xc6, + 0xa4, 0x0e, 0x76, 0x2c, 0x7c, 0x09, 0xc5, 0xcb, 0x3e, 0x40, 0x86, 0x6e, 0xba, 0xcb, 0x42, 0x5d, 0x37, 0x37, 0x21, + 0xf2, 0x33, 0x94, 0x77, 0x3c, 0x98, 0x53, 0x4c, 0xb6, 0x88, 0xc4, 0xe9, 0xbd, 0x28, 0xd6, 0x50, 0x03, 0x08, 0x3d, + 0xaf, 0xd6, 0x9a, 0xc8, 0x82, 0xcc, 0xda, 0x90, 0xcd, 0x7b, 0xee, 0xc0, 0x09, 0x35, 0x10, 0xf5, 0xae, 0xeb, 0xb9, + 0xb2, 0x88, 0xfa, 0x59, 0x30, 0xcb, 0x89, 0xc6, 0x5e, 0x85, 0x8c, 0x24, 0x02, 0xcd, 0xaf, 0x44, 0xdc, 0xc3, 0x71, + 0x6d, 0xad, 0xbe, 0xd8, 0x89, 0x9e, 0x11, 0x9f, 0x88, 0x4b, 0xf5, 0x0e, 0x65, 0x3c, 0x1a, 0xc1, 0x74, 0x7a, 0x2b, + 0x41, 0xeb, 0x2b, 0x7d, 0x07, 0x0b, 0x6a, 0xfc, 0xdd, 0xb7, 0xde, 0x86, 0x2b, 0x21, 0x01, 0xf2, 0x1f, 0x17, 0xc2, + 0x64, 0x7f, 0xf4, 0xe1, 0x93, 0xe9, 0xc8, 0x69, 0x94, 0x30, 0x65, 0xf3, 0x04, 0x41, 0xc0, 0xb4, 0xbe, 0xe8, 0x9d, + 0xc1, 0x51, 0x0c, 0x58, 0x7a, 0x1b, 0x48, 0xfd, 0xb1, 0x63, 0x51, 0x06, 0x67, 0x49, 0x1a, 0x68, 0x31, 0x88, 0x14, + 0x69, 0xf4, 0xe7, 0x71, 0x7c, 0xb3, 0xc6, 0x0c, 0x54, 0x8e, 0xbd, 0xf4, 0x2b, 0x1a, 0x3d, 0x3e, 0xaa, 0x5b, 0x92, + 0xbb, 0x91, 0xc8, 0xee, 0x28, 0xda, 0xa8, 0x3a, 0x08, 0x13, 0x14, 0x71, 0xf2, 0x2b, 0xd1, 0x4a, 0x65, 0xa9, 0x57, + 0x39, 0x58, 0x12, 0xc8, 0xf5, 0x74, 0x00, 0x7e, 0x00, 0xe9, 0xc9, 0x24, 0xd3, 0x93, 0x8c, 0x3f, 0x28, 0x05, 0xf9, + 0x9b, 0x05, 0x7f, 0x46, 0xb7, 0x55, 0xed, 0x2c, 0x74, 0x43, 0xbd, 0xd2, 0xa1, 0x74, 0x9d, 0x35, 0x43, 0xce, 0x91, + 0x6a, 0x02, 0xd5, 0x19, 0xf6, 0x2f, 0xad, 0x0f, 0xaa, 0xeb, 0x59, 0x70, 0x73, 0x13, 0x29, 0x03, 0x9b, 0x6d, 0x84, + 0x62, 0x9b, 0x6a, 0x5f, 0x24, 0xa5, 0xc9, 0x57, 0x39, 0x82, 0x4f, 0x1c, 0xdf, 0x48, 0xeb, 0xb5, 0x6d, 0xa2, 0x4d, + 0x74, 0xfa, 0x22, 0xf1, 0xd5, 0x44, 0x26, 0xcb, 0x52, 0x27, 0x37, 0xf7, 0xd9, 0x5d, 0xdb, 0x1c, 0x4b, 0xcb, 0x3a, + 0x62, 0x8e, 0xe5, 0x77, 0x83, 0x25, 0xc3, 0x54, 0xa7, 0xe6, 0x90, 0x8c, 0x04, 0xf9, 0xae, 0x3d, 0x13, 0x44, 0x23, + 0x59, 0xe1, 0x36, 0x9e, 0x9b, 0xfd, 0x87, 0x1e, 0x9f, 0x68, 0x62, 0xc9, 0xf6, 0x00, 0x91, 0x7b, 0x34, 0x0a, 0x5c, + 0x2c, 0x4e, 0xe2, 0xc4, 0x6a, 0xc0, 0xc6, 0xfa, 0xce, 0x69, 0x27, 0xf9, 0xc4, 0xa7, 0xd6, 0x1f, 0xb1, 0x0a, 0x0a, + 0x70, 0xe0, 0x29, 0x6b, 0x9c, 0x47, 0xb9, 0x9b, 0x39, 0xb7, 0xa6, 0xe2, 0x6c, 0x8d, 0x13, 0x9c, 0xc1, 0xe6, 0x92, + 0x29, 0x2a, 0xdc, 0xb6, 0xfc, 0x24, 0x5e, 0x6a, 0x2d, 0x33, 0x7b, 0x58, 0xa1, 0x9c, 0x19, 0x68, 0x57, 0x1d, 0xcd, + 0x3b, 0x75, 0x82, 0xae, 0x8d, 0xb1, 0x25, 0xf6, 0x61, 0x5e, 0x7c, 0x4f, 0xe7, 0x8e, 0x82, 0x82, 0x4d, 0xa9, 0xb1, + 0x94, 0xb9, 0xba, 0x32, 0x4d, 0x8d, 0x19, 0x65, 0x8c, 0x94, 0x59, 0xc6, 0xb0, 0xbd, 0x34, 0x92, 0x09, 0xf8, 0xa2, + 0x74, 0x9b, 0x55, 0xd2, 0x8f, 0x6d, 0x38, 0x3b, 0x46, 0x6e, 0x67, 0x2a, 0x38, 0xc5, 0x71, 0x7c, 0x56, 0xd3, 0xd9, + 0x2a, 0x74, 0x2a, 0x88, 0x7f, 0xc0, 0xcf, 0xf3, 0x44, 0x5e, 0x6b, 0x2b, 0x7b, 0x06, 0x91, 0xe4, 0xb4, 0x28, 0x4d, + 0xbb, 0xc3, 0x54, 0x7a, 0xc5, 0xef, 0x12, 0x3c, 0x39, 0x19, 0x52, 0x1f, 0xb9, 0x94, 0x06, 0xde, 0xa6, 0xc1, 0x9d, + 0x84, 0x02, 0xf6, 0x14, 0x2f, 0x8b, 0xe9, 0xb5, 0x25, 0x45, 0x40, 0xfe, 0x9e, 0xce, 0x67, 0x95, 0x30, 0x53, 0xf6, + 0x56, 0x9f, 0x19, 0x07, 0x3d, 0x02, 0x57, 0x78, 0x49, 0x98, 0x5a, 0x2c, 0x3a, 0x85, 0x1d, 0x58, 0x99, 0x85, 0xbb, + 0x64, 0x46, 0x95, 0x10, 0x58, 0xe0, 0xa4, 0x26, 0xd4, 0xf7, 0x2e, 0x30, 0x7d, 0x53, 0xfb, 0x4b, 0x1b, 0x5e, 0x37, + 0xd5, 0xb2, 0xdf, 0xf3, 0xe5, 0x8d, 0x1d, 0x0f, 0x24, 0x6c, 0x22, 0x81, 0xba, 0x14, 0xf5, 0xa6, 0x13, 0xb9, 0xbd, + 0xb1, 0x9a, 0x61, 0x8f, 0x91, 0xbe, 0x37, 0xdc, 0x52, 0x63, 0xde, 0x1a, 0xaf, 0x13, 0x67, 0xeb, 0xc8, 0x73, 0x80, + 0x75, 0x54, 0x28, 0xb0, 0x59, 0x04, 0xfc, 0xc6, 0x4f, 0xca, 0xe6, 0xc3, 0x26, 0x41, 0x30, 0xd4, 0xba, 0x3b, 0x96, + 0xa2, 0x30, 0x81, 0x2b, 0xce, 0x02, 0x13, 0xe3, 0xc0, 0xf2, 0x70, 0x69, 0x45, 0x42, 0xf0, 0x3d, 0x24, 0x8f, 0x41, + 0x64, 0x45, 0x07, 0xa7, 0xdc, 0xb7, 0x31, 0x05, 0x23, 0x85, 0x44, 0x43, 0x4f, 0x08, 0x25, 0xe5, 0x6b, 0x56, 0x13, + 0x7d, 0x32, 0x39, 0x86, 0x8f, 0x7b, 0xac, 0x07, 0x6c, 0xfe, 0x21, 0xeb, 0xd6, 0xf1, 0x00, 0xd9, 0x1f, 0x4f, 0xc5, + 0x92, 0xdf, 0xad, 0x9a, 0xe3, 0x13, 0xdf, 0xb5, 0x0c, 0xdf, 0xcc, 0x6b, 0x19, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, + 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, + 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x20, 0xec, 0x00, 0xd2, 0xa0, 0xb0, 0x78, 0x1c, 0x17, 0xe2, 0x78, 0xad, + 0xdb, 0xd8, 0xc2, 0xc1, 0x02, 0x6a, 0xdf, 0x66, 0xa9, 0xe1, 0xdb, 0xa8, 0x65, 0x60, 0x28, 0xe9, 0xdf, 0x59, 0xb2, + 0x42, 0x05, 0x51, 0x1a, 0xed, 0x3e, 0x0d, 0xc9, 0x61, 0x83, 0x1e, 0xd7, 0x0d, 0xf1, 0x7c, 0x1b, 0xfe, 0x56, 0x4a, + 0x9f, 0x54, 0xdf, 0x79, 0xc0, 0x77, 0x7c, 0xc4, 0x95, 0x41, 0x4f, 0x34, 0x01, 0x15, 0x29, 0xbc, 0xd0, 0xf7, 0x15, + 0x33, 0x21, 0xb9, 0x15, 0x1a, 0x5c, 0xfd, 0x45, 0xdc, 0x7d, 0xfe, 0xe9, 0x5c, 0x99, 0xb3, 0x52, 0x23, 0x0f, 0xd8, + 0xf4, 0xb8, 0xb0, 0x84, 0x39, 0x45, 0x80, 0x28, 0x84, 0xc6, 0xce, 0xb3, 0xa4, 0xce, 0x27, 0xd7, 0x60, 0x36, 0x64, + 0xda, 0x23, 0x96, 0xa1, 0x6d, 0x43, 0x72, 0x78, 0xb8, 0x7c, 0x4e, 0x5a, 0x8a, 0xa8, 0xab, 0x5b, 0x47, 0x6e, 0x58, + 0x11, 0x1c, 0x26, 0x92, 0x6c, 0xec, 0x97, 0xb1, 0xb6, 0xdf, 0xfd, 0x12, 0xd8, 0xe2, 0xb7, 0xfe, 0x0f, 0x0e, 0x97, + 0x30, 0x4f, 0xd1, 0xe8, 0x24, 0xdc, 0x1e, 0xb8, 0xf2, 0xd2, 0x6b, 0xd5, 0xd8, 0xa8, 0x33, 0x6b, 0x19, 0x59, 0x9f, + 0xab, 0x83, 0x91, 0x82, 0x7c, 0xf7, 0x5e, 0xee, 0xf7, 0xc7, 0x9c, 0xab, 0x76, 0x3f, 0x90, 0x07, 0x71, 0x03, 0xc2, + 0x15, 0xc7, 0x67, 0xea, 0xa7, 0x70, 0x9e, 0xaa, 0x46, 0x95, 0x8a, 0x1d, 0x2a, 0x59, 0x71, 0x04, 0x78, 0xae, 0x5e, + 0xb7, 0x06, 0x5c, 0x48, 0xa1, 0x7b, 0xea, 0xec, 0x3f, 0xf3, 0xe4, 0xbf, 0xc0, 0xfc, 0x05, 0xb5, 0x56, 0x3e, 0xa3, + 0x62, 0x78, 0x46, 0x95, 0xf1, 0xd2, 0x4e, 0x8f, 0x74, 0xf2, 0x1c, 0x1b, 0x25, 0x9a, 0x2e, 0xfa, 0xb1, 0x5c, 0xfe, + 0x7a, 0x16, 0xd0, 0x85, 0xbc, 0x3a, 0xdc, 0x40, 0x5e, 0x99, 0xb9, 0xcf, 0x51, 0x2c, 0x59, 0x1b, 0x75, 0x5b, 0x75, + 0x71, 0x8f, 0x1a, 0x1f, 0xfa, 0xb0, 0xdd, 0xb1, 0x91, 0x42, 0x4b, 0xd7, 0xfc, 0xc2, 0xa7, 0x03, 0xd1, 0x98, 0xba, + 0x42, 0xb8, 0x86, 0xc2, 0xa1, 0xa7, 0x2e, 0xb7, 0xa0, 0x36, 0x87, 0xbb, 0x61, 0x8b, 0x1f, 0xab, 0x64, 0xc6, 0x78, + 0xb9, 0xc0, 0x2c, 0x35, 0x27, 0x2e, 0x43, 0x0b, 0x68, 0x38, 0xb9, 0x6d, 0x7a, 0xfd, 0xed, 0xac, 0x60, 0x19, 0xaf, + 0x13, 0x92, 0x57, 0x19, 0x83, 0xc8, 0xe3, 0x93, 0x30, 0x4f, 0x5d, 0x91, 0xbb, 0x44, 0x2e, 0x34, 0x35, 0x12, 0xcc, + 0x59, 0x51, 0xe6, 0x25, 0x8b, 0xc2, 0xf2, 0xe0, 0x79, 0x6e, 0x6e, 0x03, 0xa2, 0xba, 0x33, 0x05, 0x01, 0x20, 0xcc, + 0x7d, 0x31, 0x90, 0x76, 0x13, 0x4c, 0x82, 0x7e, 0x3e, 0x0d, 0x32, 0x69, 0x9d, 0x60, 0x53, 0x1a, 0x8c, 0x87, 0xe8, + 0xc4, 0x60, 0xb8, 0xd6, 0xe6, 0x05, 0x5c, 0x2b, 0x2c, 0x65, 0x17, 0xa0, 0xf7, 0x9a, 0xdb, 0xae, 0xbb, 0x32, 0x4a, + 0x00, 0x16, 0x30, 0xeb, 0x75, 0x8a, 0xd0, 0x31, 0x0c, 0x52, 0x39, 0x82, 0xed, 0xff, 0xd0, 0xc4, 0x44, 0xf2, 0x00, + 0xf9, 0x5d, 0x01, 0x23, 0x40, 0x56, 0xec, 0x7f, 0xdf, 0x0b, 0x56, 0x16, 0x2e, 0x1d, 0x86, 0x25, 0xc4, 0x2f, 0xf7, + 0x59, 0x48, 0xd9, 0xd0, 0x02, 0xf2, 0x89, 0xc7, 0xe5, 0xfe, 0x20, 0x69, 0x11, 0xf9, 0xc2, 0x7d, 0xa7, 0x33, 0xf1, + 0xf1, 0xdc, 0x56, 0xeb, 0xd2, 0x87, 0x70, 0x96, 0x78, 0x5d, 0x4b, 0x02, 0x14, 0x16, 0xbe, 0xdb, 0x66, 0x15, 0x11, + 0x8e, 0x8e, 0xe3, 0x9f, 0xf5, 0x8a, 0xa7, 0x56, 0x99, 0xc9, 0x2e, 0x23, 0x33, 0xef, 0x8c, 0xe5, 0xf5, 0x07, 0xdb, + 0xa9, 0xcf, 0xbe, 0xae, 0x26, 0x00, 0x83, 0x32, 0x60, 0x2d, 0xcd, 0xed, 0x5a, 0x01, 0x5d, 0x2a, 0x16, 0xe3, 0xd8, + 0xe2, 0x0e, 0x09, 0x43, 0x7a, 0x60, 0xcf, 0x87, 0x14, 0x2a, 0x40, 0x93, 0xcd, 0x73, 0x4c, 0xce, 0xda, 0x9a, 0xb5, + 0x1a, 0xcc, 0x40, 0x8d, 0x16, 0xcf, 0x3b, 0x4c, 0x51, 0xb4, 0xb2, 0xc3, 0x56, 0xc2, 0xa0, 0x05, 0xf4, 0xa4, 0x43, + 0xe0, 0x69, 0x53, 0x9d, 0x44, 0x80, 0xc6, 0x00, 0x2b, 0xd7, 0xe4, 0x25, 0x4e, 0x92, 0xf7, 0x4e, 0x00, 0x88, 0x07, + 0x95, 0x6e, 0x88, 0x29, 0x63, 0xfa, 0x15, 0xd6, 0xb7, 0x28, 0xa1, 0xcf, 0x6a, 0x95, 0x17, 0x82, 0x68, 0x35, 0x8a, + 0xcb, 0x1f, 0x96, 0xa9, 0xc3, 0x88, 0x7a, 0xd3, 0x95, 0x3b, 0x55, 0xab, 0x6c, 0x77, 0xda, 0x43, 0xf2, 0x09, 0x65, + 0xe0, 0xb0, 0x1b, 0x88, 0x38, 0xf3, 0x52, 0x37, 0xe5, 0x46, 0xc1, 0x3b, 0x28, 0x09, 0xe3, 0x22, 0x32, 0x6f, 0xd2, + 0x36, 0x9c, 0xc0, 0xe0, 0xb8, 0x29, 0x99, 0x7a, 0x69, 0x6b, 0xd9, 0x8e, 0x86, 0xf2, 0x6d, 0xfe, 0xd5, 0xc4, 0x40, + 0x12, 0x21, 0x6c, 0x49, 0x8a, 0xa0, 0xdb, 0x8b, 0xaf, 0xae, 0x9d, 0x0d, 0x5b, 0x42, 0x86, 0x6f, 0x7f, 0x8e, 0xff, + 0xa1, 0x94, 0xba, 0xd6, 0x89, 0x11, 0x08, 0xbe, 0x27, 0xbf, 0x79, 0x64, 0x67, 0x22, 0x79, 0xed, 0x72, 0x59, 0x8f, + 0xea, 0x7e, 0x59, 0xa7, 0xd8, 0xa7, 0x02, 0x3f, 0x5c, 0xf0, 0x70, 0x52, 0xcd, 0x2c, 0xb6, 0x9e, 0xda, 0x68, 0x98, + 0x93, 0x85, 0x7c, 0x18, 0xbf, 0xf7, 0x9a, 0x65, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, + 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, + 0x44, 0x6a, 0x53, 0x94, 0xd8, 0x1e, 0x3e, 0x09, 0xf3, 0xcd, 0x5e, 0xc8, 0x17, 0xed, 0x3b, 0xe7, 0x12, 0xbc, 0xeb, + 0x09, 0x2d, 0xf8, 0x8e, 0x04, 0x95, 0xae, 0x62, 0x90, 0x8a, 0x3e, 0x22, 0x0a, 0x6b, 0x1c, 0x10, 0x8e, 0x21, 0x59, + 0x59, 0x75, 0x44, 0x9c, 0x24, 0x40, 0x47, 0x66, 0x77, 0x01, 0x8b, 0x57, 0x57, 0x14, 0xc3, 0x5e, 0x17, 0x60, 0x28, + 0x18, 0x81, 0xd5, 0xff, 0xe0, 0x81, 0x39, 0xe2, 0x59, 0x7d, 0xb3, 0xbd, 0xca, 0xfd, 0x6b, 0xab, 0x99, 0xcf, 0x03, + 0x7b, 0x4b, 0xfa, 0x3b, 0xaa, 0x77, 0x39, 0xa3, 0x7e, 0x84, 0x7b, 0x54, 0x95, 0xfb, 0xa2, 0x3e, 0x44, 0xfd, 0xc1, + 0x89, 0xce, 0x5e, 0xd7, 0x11, 0xfb, 0xd3, 0xde, 0x27, 0x6b, 0x42, 0x81, 0xd9, 0x2f, 0xd6, 0xe4, 0xbd, 0x1f, 0x86, + 0x70, 0xbe, 0x0d, 0xb3, 0xed, 0xca, 0x26, 0xe7, 0x5d, 0xab, 0x74, 0x77, 0x70, 0x39, 0xc0, 0x02, 0x1a, 0x20, 0x11, + 0xc0, 0xa9, 0xe6, 0x91, 0xe6, 0xeb, 0x7c, 0x07, 0x40, 0xf3, 0x52, 0x04, 0x4f, 0xe6, 0xfa, 0x4a, 0x4a, 0xd6, 0x91, + 0xf6, 0xb1, 0x9a, 0xf1, 0x30, 0xa8, 0x95, 0x84, 0x73, 0x3a, 0x54, 0x91, 0xf3, 0x2d, 0x83, 0x47, 0x06, 0x59, 0x17, + 0x7f, 0x1a, 0x0d, 0xdd, 0xb2, 0xae, 0x10, 0x0b, 0x9b, 0xc6, 0x5d, 0x85, 0xa2, 0x46, 0xd9, 0xc7, 0x30, 0x33, 0xb6, + 0x5e, 0xf5, 0x9a, 0x38, 0xf5, 0xc1, 0x0f, 0x45, 0x79, 0xa0, 0x5c, 0x3b, 0xdd, 0x7c, 0x7a, 0x66, 0x21, 0xc4, 0x61, + 0x9c, 0x89, 0xe9, 0xeb, 0xda, 0xa0, 0x61, 0x69, 0xf5, 0x14, 0x12, 0x96, 0x75, 0xa6, 0xdc, 0x9a, 0x64, 0x5a, 0x66, + 0xe6, 0xab, 0x3c, 0x88, 0x80, 0x87, 0x12, 0xf0, 0x60, 0xa1, 0x66, 0xb3, 0x9c, 0x38, 0x20, 0xae, 0x4a, 0xa3, 0x35, + 0x84, 0xcc, 0xcb, 0xea, 0x76, 0x73, 0x9a, 0x6b, 0x7c, 0x10, 0x21, 0xe5, 0xdd, 0x5e, 0x97, 0x29, 0x6e, 0x44, 0x03, + 0xba, 0x86, 0xba, 0xe7, 0x5d, 0x06, 0x1f, 0x51, 0x2f, 0x41, 0x6b, 0x2a, 0x20, 0x30, 0xf1, 0x7d, 0xf2, 0x36, 0x55, + 0x39, 0xfd, 0x07, 0xac, 0x6d, 0xda, 0xb5, 0xe1, 0xf5, 0x2d, 0x6a, 0x08, 0x23, 0x96, 0xa0, 0x86, 0xf7, 0x43, 0xc3, + 0x58, 0xdf, 0xab, 0x2b, 0x8a, 0x8e, 0x90, 0xa3, 0xb6, 0x58, 0x9e, 0xf4, 0xf3, 0x28, 0x33, 0x64, 0x91, 0x1e, 0x36, + 0x9c, 0x18, 0x90, 0xb8, 0x2e, 0x14, 0x9b, 0xdb, 0x9d, 0xe6, 0x15, 0xfd, 0xaa, 0xdf, 0x9b, 0xe6, 0x1d, 0x73, 0xc4, + 0xba, 0x73, 0xcd, 0x3f, 0x06, 0x0d, 0xac, 0x75, 0x6c, 0x0b, 0xb4, 0x45, 0x87, 0xa5, 0x77, 0xe3, 0x48, 0x54, 0xe9, + 0x3a, 0xc9, 0x89, 0x00, 0xa5, 0x38, 0x4e, 0xdc, 0x08, 0xf1, 0x94, 0xe3, 0x3d, 0x16, 0x33, 0xd8, 0x5f, 0xf6, 0xee, + 0x59, 0xa6, 0xe8, 0xce, 0x1d, 0x1f, 0x9c, 0xf9, 0xae, 0x08, 0x99, 0x43, 0x86, 0xfb, 0xef, 0xb7, 0x42, 0x8c, 0xa8, + 0x02, 0x14, 0x1d, 0x83, 0x65, 0xc2, 0x69, 0xf5, 0x7f, 0xda, 0xd4, 0x85, 0x44, 0x42, 0x66, 0x53, 0x29, 0x67, 0x31, + 0xd8, 0x6b, 0xc6, 0x0e, 0x93, 0x1f, 0xa9, 0xf7, 0x1a, 0xea, 0x83, 0x98, 0x91, 0x89, 0x72, 0x0c, 0x6a, 0x41, 0x9f, + 0xd1, 0x6a, 0xb6, 0xbf, 0xa5, 0x5b, 0xab, 0x69, 0x2e, 0xbc, 0x0d, 0x8c, 0x49, 0xa0, 0x0e, 0x24, 0xcf, 0x70, 0x59, + 0xd3, 0x31, 0xc3, 0x01, 0xce, 0x2a, 0xef, 0x3e, 0x26, 0x06, 0x60, 0x4a, 0x91, 0x33, 0x14, 0x54, 0xd7, 0xac, 0x7e, + 0x0e, 0x9a, 0x02, 0xd0, 0xd4, 0xa2, 0x39, 0x04, 0x73, 0x46, 0x0a, 0xfa, 0xbc, 0xd4, 0x31, 0x59, 0xd3, 0x56, 0x00, + 0x4d, 0x05, 0x73, 0x1e, 0x77, 0x74, 0x41, 0xaf, 0x92, 0x34, 0xfc, 0x89, 0x0a, 0x96, 0x7c, 0x2d, 0x5a, 0x6c, 0xf3, + 0x01, 0xe3, 0xa3, 0x9e, 0x63, 0x1b, 0x28, 0xa1, 0x3e, 0xca, 0x50, 0x6e, 0xe7, 0x2d, 0xf6, 0xf0, 0x11, 0x48, 0xf9, + 0xcb, 0x9c, 0x7a, 0x5a, 0x9a, 0x98, 0x16, 0xdf, 0x1e, 0xdf, 0x8d, 0xb6, 0x4a, 0x0f, 0x71, 0x40, 0xcb, 0x84, 0xe9, + 0x0c, 0xd6, 0xb9, 0x8d, 0xf4, 0x40, 0x37, 0xe7, 0xe3, 0xd3, 0x4d, 0xae, 0x04, 0xd6, 0x6b, 0xc3, 0xbc, 0xc6, 0x9e, + 0xa1, 0x01, 0xb9, 0xa0, 0x46, 0x08, 0xe5, 0x3f, 0x90, 0x75, 0xb1, 0xe3, 0x28, 0xcc, 0xa4, 0x0c, 0x0e, 0x81, 0xf3, + 0x33, 0xdd, 0xbb, 0x33, 0xe4, 0xaf, 0x9c, 0xd7, 0xea, 0xef, 0x13, 0x1f, 0x2e, 0x1b, 0x8d, 0x27, 0x1c, 0xde, 0xe7, + 0x40, 0x38, 0x26, 0xf3, 0xcf, 0x0b, 0x76, 0x42, 0x6a, 0xc0, 0x6a, 0x9c, 0xcd, 0xf9, 0xe8, 0x53, 0xe4, 0xac, 0x97, + 0x68, 0x11, 0xaa, 0x21, 0xc6, 0x1e, 0x55, 0xbe, 0xd1, 0x95, 0xeb, 0xbb, 0x47, 0x36, 0x04, 0xd7, 0x72, 0x61, 0x47, + 0x82, 0x97, 0xd9, 0xf7, 0xbb, 0xd6, 0xce, 0x54, 0x40, 0x8c, 0xab, 0xb0, 0xcd, 0x99, 0xb7, 0x7e, 0x47, 0xda, 0xb2, + 0xea, 0xdd, 0x1d, 0x34, 0x91, 0x74, 0xee, 0x51, 0x54, 0x8c, 0x82, 0x68, 0x3b, 0xf3, 0x4a, 0x48, 0x9e, 0x6f, 0xc4, + 0xb1, 0xca, 0xde, 0x83, 0xcf, 0x9b, 0xb3, 0xf2, 0x89, 0x5b, 0x72, 0x64, 0x5d, 0x63, 0xa2, 0xa7, 0xf8, 0x22, 0x49, + 0x1c, 0xa3, 0x55, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, + 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x48, 0x0e, 0x68, + 0x3e, 0xe9, 0xe6, 0x73, 0x95, 0xde, 0x13, 0x2c, 0xb9, 0x56, 0xcc, 0x7e, 0x03, 0x2f, 0xd0, 0x9c, 0x2f, 0x2e, 0xbd, + 0xac, 0xf9, 0x9c, 0xba, 0x3d, 0x34, 0x51, 0x86, 0x19, 0x43, 0xe6, 0x91, 0x6c, 0xf6, 0x12, 0x45, 0x0f, 0x25, 0x65, + 0x26, 0xdd, 0x85, 0x4a, 0x4f, 0x55, 0xe2, 0xd0, 0x36, 0x65, 0x1b, 0x8e, 0xb5, 0xf9, 0x2d, 0xf0, 0xee, 0x1b, 0xc3, + 0x6d, 0xcc, 0x4a, 0x54, 0xae, 0x7e, 0xfc, 0x48, 0xd0, 0xae, 0xe2, 0x76, 0x6c, 0x15, 0xaf, 0x13, 0x5c, 0x6f, 0x1c, + 0xcc, 0xfa, 0x6c, 0x1f, 0xe1, 0xcd, 0x08, 0x2b, 0xa1, 0x00, 0x42, 0x7d, 0xa6, 0x62, 0x7e, 0x22, 0x73, 0xdf, 0xc2, + 0x94, 0x7b, 0x31, 0xf7, 0x48, 0x8f, 0x23, 0xda, 0x65, 0xf9, 0x78, 0xa1, 0x95, 0xc5, 0xfe, 0xfe, 0x40, 0x4c, 0x0e, + 0xa2, 0x32, 0xbd, 0xb4, 0x79, 0x4c, 0x91, 0xde, 0x99, 0xea, 0x09, 0x32, 0x8c, 0x0a, 0x46, 0x1a, 0xef, 0x96, 0x67, + 0xf1, 0x7d, 0x51, 0xef, 0x80, 0x08, 0x92, 0x02, 0x13, 0xea, 0xc2, 0x83, 0x69, 0xd9, 0x92, 0x0d, 0x1c, 0xeb, 0x5d, + 0x16, 0x1c, 0xad, 0x24, 0x53, 0xe6, 0xc2, 0xc6, 0x55, 0x97, 0x78, 0xa3, 0x3a, 0x0d, 0xcd, 0xd8, 0xcb, 0x33, 0x5a, + 0x1e, 0x17, 0x21, 0x96, 0x55, 0xec, 0x0b, 0xda, 0x29, 0xbf, 0x84, 0x8b, 0x9d, 0xd9, 0x4e, 0x36, 0x2e, 0x4b, 0xac, + 0x17, 0xf7, 0x7c, 0xc6, 0x2d, 0x85, 0x7c, 0xfc, 0xbd, 0x4c, 0x5c, 0x23, 0x45, 0x0e, 0x25, 0x8c, 0xf9, 0x17, 0xac, + 0xc0, 0x6e, 0xda, 0x49, 0x71, 0x48, 0x64, 0xb2, 0x90, 0x8c, 0xdf, 0x3e, 0x50, 0x90, 0xd8, 0xee, 0x08, 0xbd, 0x13, + 0x7c, 0xa9, 0x78, 0x0e, 0xda, 0x8c, 0x3e, 0x31, 0xb9, 0xd6, 0x43, 0x76, 0x44, 0xe6, 0xc2, 0xb6, 0x8c, 0xe4, 0x5f, + 0x63, 0x12, 0x91, 0x35, 0xe9, 0x15, 0x9c, 0xdf, 0x69, 0x49, 0xd1, 0xdc, 0x96, 0x23, 0xea, 0x8a, 0x2e, 0x91, 0x64, + 0xf6, 0xab, 0xfe, 0xc7, 0x96, 0xc5, 0x29, 0x3b, 0xfc, 0xd0, 0xd0, 0xf7, 0x3b, 0x6f, 0x47, 0xdd, 0x6b, 0x2d, 0x63, + 0x81, 0xd8, 0x33, 0x8a, 0x2b, 0xea, 0x5b, 0x28, 0x9f, 0xe0, 0xca, 0x33, 0xb4, 0xff, 0x40, 0x34, 0xa1, 0xb2, 0x49, + 0xdb, 0x02, 0x2d, 0xf4, 0x04, 0x38, 0x79, 0x86, 0x76, 0x29, 0x09, 0x9d, 0x68, 0x2a, 0x40, 0x2a, 0xc5, 0x55, 0x16, + 0xd5, 0x36, 0xbd, 0xed, 0x8c, 0xa6, 0x6c, 0x28, 0xce, 0x0a, 0xb7, 0xb8, 0x3e, 0x36, 0x3e, 0x4d, 0xcb, 0x69, 0x4a, + 0x0c, 0xb5, 0x50, 0x26, 0x9a, 0x9f, 0x39, 0xd6, 0x71, 0x4f, 0x0e, 0xd4, 0x33, 0x6b, 0x70, 0xbf, 0xe1, 0xdd, 0x9c, + 0xe2, 0xfd, 0x49, 0x9b, 0x96, 0x8d, 0xb6, 0xdd, 0x21, 0x07, 0x86, 0xc5, 0xa2, 0xd7, 0xab, 0xd4, 0xf5, 0x2e, 0x56, + 0x02, 0x4f, 0xa6, 0x71, 0x56, 0x73, 0xa8, 0x9d, 0xa8, 0xf8, 0x19, 0x45, 0xb4, 0x0a, 0x74, 0x08, 0xc7, 0xc3, 0x16, + 0x5f, 0x2b, 0x1e, 0x49, 0x69, 0x8a, 0x4b, 0x11, 0xd7, 0xcc, 0xe6, 0xb1, 0x62, 0x2d, 0x3a, 0x97, 0x52, 0xda, 0x9e, + 0x94, 0xee, 0x5a, 0x02, 0x84, 0xc5, 0x94, 0x79, 0x63, 0xda, 0x9a, 0xc4, 0x23, 0xd2, 0xfc, 0x21, 0x69, 0x74, 0xb3, + 0x52, 0x88, 0x12, 0x90, 0xf5, 0x4c, 0x40, 0x70, 0x43, 0xbe, 0x1a, 0x76, 0x3d, 0xa5, 0x67, 0xbd, 0x3d, 0xb7, 0x6e, + 0x73, 0x4b, 0xf5, 0x87, 0x1b, 0xd2, 0xb3, 0x49, 0xfe, 0x3a, 0x95, 0xc6, 0x0b, 0x39, 0xf9, 0x80, 0xbd, 0x18, 0xd3, + 0x9e, 0x55, 0xd1, 0x82, 0x5f, 0xe7, 0x55, 0x3d, 0xf7, 0x9e, 0x3a, 0x40, 0x9e, 0xfc, 0x1d, 0x8d, 0x49, 0xe2, 0x53, + 0xb1, 0xec, 0x3e, 0x76, 0x60, 0xf1, 0x18, 0xa4, 0xb3, 0x48, 0x32, 0xf4, 0xc6, 0x3b, 0x18, 0x67, 0xb9, 0x20, 0xed, + 0x5e, 0x5a, 0x14, 0x55, 0x75, 0xe6, 0x14, 0x4d, 0x5e, 0x2b, 0xe4, 0xc5, 0xde, 0xe4, 0x22, 0xa6, 0xf9, 0x38, 0xfb, + 0x92, 0xec, 0x25, 0x74, 0x67, 0x74, 0xca, 0x0d, 0x0c, 0xc9, 0x12, 0x8f, 0xe1, 0xb4, 0x6e, 0x7b, 0xec, 0x3a, 0x5d, + 0xb1, 0x1c, 0x56, 0x18, 0x25, 0x0d, 0x05, 0x23, 0x14, 0x1b, 0xec, 0x0e, 0xc1, 0x68, 0xf6, 0x18, 0x84, 0x47, 0xb4, + 0x8d, 0xc6, 0x0a, 0x26, 0x10, 0x72, 0xe3, 0xb1, 0x9f, 0x6f, 0x90, 0x22, 0xb4, 0x46, 0xe5, 0x78, 0x2b, 0x7f, 0x8d, + 0x4d, 0xad, 0x5f, 0xfb, 0x4f, 0x90, 0x5a, 0xe9, 0x07, 0x30, 0xd8, 0x58, 0x6e, 0x7a, 0x95, 0x68, 0xc3, 0x3e, 0x04, + 0x1a, 0x4b, 0x0a, 0x91, 0x31, 0x58, 0x61, 0x11, 0xf8, 0x3f, 0x7a, 0x38, 0x84, 0xc0, 0xea, 0x6d, 0xa2, 0x61, 0xa8, + 0x47, 0x6d, 0xf2, 0x56, 0x6d, 0xfa, 0xb6, 0x47, 0xf3, 0x2e, 0x34, 0xdf, 0x7d, 0x60, 0x23, 0xa8, 0x91, 0x59, 0xcc, + 0xf9, 0x4c, 0xf6, 0xb8, 0x23, 0x6d, 0x0f, 0x1d, 0xb6, 0x44, 0x74, 0xbe, 0x83, 0x97, 0x9e, 0x55, 0x09, 0xdf, 0x03, + 0x77, 0x20, 0x29, 0x49, 0x60, 0x68, 0x39, 0x9c, 0x28, 0x83, 0xf9, 0x9e, 0x37, 0xd1, 0x3e, 0x84, 0xec, 0x6c, 0x3a, + 0xfa, 0x40, 0x03, 0x53, 0x19, 0x2a, 0x9c, 0xde, 0x48, 0xb7, 0xaa, 0xa9, 0x1c, 0xd9, 0xd6, 0x0d, 0x17, 0x01, 0x00, + 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, + 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xbe, 0x71, 0xf9, 0x21, 0xfb, 0x9b, 0x31, 0x35, + 0xd6, 0x47, 0x2c, 0x87, 0xa8, 0x7e, 0x8a, 0xc1, 0x1e, 0xba, 0x8b, 0xd5, 0x48, 0x37, 0x92, 0xe8, 0x0c, 0xc2, 0x6d, + 0xab, 0xed, 0xae, 0x49, 0x0f, 0xca, 0x07, 0x9b, 0x77, 0x4f, 0xd2, 0x73, 0xcc, 0x20, 0x1c, 0x90, 0x8a, 0xfd, 0x88, + 0x57, 0xf1, 0x89, 0x22, 0x5b, 0x6d, 0x53, 0x15, 0x07, 0x45, 0x1f, 0xe8, 0x5d, 0xc2, 0xa3, 0x22, 0x36, 0x6b, 0x55, + 0x1c, 0xed, 0x95, 0xd5, 0xa7, 0x83, 0x8b, 0xbc, 0x91, 0xd7, 0xb0, 0x59, 0x19, 0xa8, 0x5c, 0x4b, 0x92, 0xca, 0x19, + 0x02, 0xad, 0x3f, 0x15, 0x08, 0xa0, 0xfa, 0xa2, 0xa8, 0xf6, 0x53, 0x43, 0x4b, 0x38, 0x7a, 0x8a, 0x98, 0xef, 0x30, + 0x0a, 0x27, 0x3f, 0x37, 0x5c, 0xf3, 0xb6, 0x77, 0xbd, 0xca, 0x7e, 0x57, 0x4c, 0x0c, 0x0a, 0x91, 0x27, 0xc3, 0xf3, + 0xd0, 0xf0, 0x72, 0xa9, 0xc2, 0x07, 0x1e, 0x16, 0x77, 0x07, 0x2c, 0x4c, 0x16, 0xc4, 0x7d, 0x91, 0xe0, 0x60, 0xa2, + 0x52, 0x15, 0x9f, 0x33, 0x14, 0x55, 0x79, 0x24, 0x6c, 0xc0, 0xf4, 0x3d, 0x1f, 0xf6, 0xf8, 0xde, 0x49, 0xd0, 0x49, + 0x93, 0x6e, 0x0f, 0xc6, 0x37, 0x74, 0xdf, 0x23, 0xa7, 0x5e, 0xfd, 0xe8, 0x20, 0xb8, 0x71, 0xd1, 0xf3, 0x13, 0xa2, + 0x08, 0xee, 0xb9, 0x49, 0x7b, 0x56, 0x0e, 0xf2, 0xe4, 0xd9, 0xf5, 0xcd, 0x3a, 0x6b, 0xe0, 0x99, 0x63, 0x39, 0x95, + 0x1e, 0x14, 0xa9, 0x21, 0xab, 0x6d, 0xff, 0x93, 0x21, 0x12, 0x18, 0x27, 0x50, 0x9d, 0xb1, 0x18, 0x35, 0xaf, 0x9c, + 0x34, 0x0b, 0xf4, 0x70, 0x53, 0xc5, 0x69, 0x2b, 0x0e, 0x01, 0x61, 0xb2, 0xda, 0x73, 0xf6, 0xfb, 0xd0, 0x51, 0x7c, + 0xa9, 0x1b, 0x9e, 0x06, 0x8b, 0xf1, 0x8b, 0x2b, 0x36, 0x34, 0x75, 0x3d, 0xce, 0x5d, 0xde, 0x2c, 0xe3, 0xf4, 0x82, + 0x5c, 0x2c, 0x38, 0x4b, 0x76, 0xb9, 0xa0, 0x66, 0x87, 0xf1, 0xde, 0xc1, 0x5f, 0x25, 0x4c, 0xa1, 0xfe, 0x1f, 0xd9, + 0xe5, 0x3f, 0xdc, 0x2a, 0x39, 0xfb, 0xfe, 0xf4, 0x0b, 0x2a, 0xb1, 0x9c, 0xe0, 0x46, 0xd1, 0xff, 0x6a, 0xb2, 0x5a, + 0x0c, 0x90, 0xa0, 0xb5, 0xcf, 0x2e, 0x6a, 0x27, 0x54, 0x8e, 0x47, 0xc6, 0x95, 0x0b, 0x4e, 0x0e, 0xef, 0xbe, 0x5a, + 0x88, 0x86, 0x50, 0x9a, 0xd6, 0x3a, 0xa4, 0x32, 0xa7, 0xa0, 0x7a, 0x35, 0x8a, 0x5a, 0x15, 0x4f, 0xb2, 0xf2, 0x81, + 0x68, 0x0b, 0xa8, 0xbe, 0x8b, 0xb3, 0x1e, 0xfd, 0x23, 0xba, 0x44, 0xe7, 0x20, 0xc2, 0x7d, 0xee, 0x03, 0xfb, 0xf2, + 0x49, 0x0d, 0x39, 0xcd, 0xde, 0x45, 0xce, 0x8e, 0xde, 0xb2, 0x7b, 0xbc, 0xeb, 0xdb, 0x78, 0x5f, 0xa6, 0x68, 0x8c, + 0x1f, 0xaa, 0x87, 0xb4, 0x83, 0x17, 0x4b, 0x1e, 0x4c, 0x0d, 0x85, 0x51, 0x40, 0x6d, 0x17, 0x11, 0x06, 0x2b, 0x13, + 0xc5, 0xb6, 0xab, 0x4b, 0x95, 0xab, 0x5c, 0xa7, 0x22, 0x00, 0xe5, 0x2a, 0xc7, 0x54, 0x2d, 0x15, 0x61, 0x47, 0x1e, + 0x7f, 0xf7, 0x07, 0xee, 0xef, 0x1e, 0xea, 0x59, 0x45, 0xf0, 0x2f, 0x1c, 0x10, 0xfc, 0xda, 0x8f, 0x8c, 0x98, 0xf5, + 0x28, 0x7a, 0x71, 0x44, 0xf5, 0xe0, 0x6a, 0xca, 0x64, 0xd5, 0xcd, 0xba, 0x7d, 0xf9, 0x0e, 0xa9, 0xde, 0xbe, 0x3a, + 0x34, 0x4f, 0x60, 0x01, 0x70, 0x34, 0xad, 0x49, 0x36, 0xf2, 0xff, 0x38, 0xa3, 0xa9, 0xb6, 0x94, 0xad, 0xb3, 0x1c, + 0x5b, 0x0c, 0x87, 0x64, 0x61, 0x9e, 0xca, 0x44, 0x63, 0xc4, 0x2c, 0xc5, 0x13, 0x63, 0xf1, 0x66, 0x0e, 0xd0, 0x61, + 0x7a, 0x4e, 0x83, 0x88, 0x8f, 0x8e, 0x70, 0x4e, 0x50, 0xe2, 0x28, 0x2f, 0xc9, 0x21, 0xaf, 0xcf, 0x82, 0x29, 0x9f, + 0xb6, 0x27, 0x6f, 0x40, 0x4e, 0x84, 0xe6, 0xc6, 0x37, 0x71, 0x30, 0xf7, 0x30, 0x75, 0xee, 0x34, 0xe5, 0xaf, 0x79, + 0xe9, 0x9a, 0x8a, 0x05, 0xe3, 0x1c, 0x25, 0x44, 0xdb, 0x3b, 0xb0, 0xc5, 0x2a, 0x66, 0xdc, 0x87, 0x05, 0x3a, 0x43, + 0x50, 0x37, 0x3b, 0x11, 0xb6, 0xbd, 0x25, 0x35, 0xc0, 0x23, 0xd2, 0x8f, 0x19, 0x16, 0x00, 0xeb, 0x63, 0xac, 0xa7, + 0x76, 0xb5, 0x5e, 0xb5, 0xc2, 0xbb, 0x7f, 0xfc, 0x2b, 0x40, 0x41, 0x00, 0xee, 0x09, 0x77, 0x37, 0x6d, 0x76, 0xdd, + 0x98, 0x10, 0xa4, 0xdc, 0x5e, 0x65, 0xb0, 0x53, 0x1d, 0x66, 0x37, 0x4e, 0x5a, 0x06, 0x53, 0x04, 0x62, 0x04, 0xcd, + 0xd7, 0xac, 0xc1, 0xf1, 0xcb, 0x78, 0xef, 0x2d, 0x9e, 0x7a, 0x15, 0x33, 0x0f, 0x0b, 0xbf, 0x0f, 0xf1, 0x77, 0x5b, + 0x24, 0xb0, 0xd7, 0x2c, 0x9e, 0xf5, 0x58, 0x27, 0xb6, 0xbb, 0x20, 0x47, 0x1e, 0x24, 0xbd, 0xf0, 0x94, 0x8b, 0x2f, + 0x29, 0x3f, 0x5f, 0x9e, 0x01, 0x7c, 0xa7, 0xa1, 0x2f, 0x29, 0x15, 0x97, 0xb2, 0xbb, 0x68, 0x13, 0x97, 0x8b, 0x5e, + 0x91, 0x25, 0xae, 0xa0, 0xd1, 0x39, 0x5c, 0x9b, 0x26, 0xce, 0x88, 0x4b, 0xe1, 0x5b, 0xc9, 0x9e, 0x52, 0x01, 0x4b, + 0x0d, 0x16, 0x7f, 0xd3, 0x69, 0x72, 0x33, 0x9c, 0x99, 0x33, 0xa9, 0xe8, 0x5b, 0xaf, 0x63, 0x6d, 0xf5, 0x49, 0xa0, + 0x88, 0x5b, 0xde, 0x24, 0x32, 0xcc, 0xbf, 0x11, 0x82, 0xd9, 0xa0, 0x00, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, + 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, + 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x9d, 0xa8, 0xd4, 0x5c, 0x7d, 0x6c, 0x0c, 0xa0, 0x90, 0xde, 0x78, 0xf3, 0x4b, + 0xd2, 0x0a, 0xd1, 0xe7, 0x3f, 0x3c, 0x8c, 0x4f, 0x5e, 0xb8, 0xa9, 0x87, 0x3c, 0x64, 0x92, 0xb6, 0xb0, 0x50, 0x66, + 0xdd, 0x78, 0x35, 0x83, 0x7f, 0x58, 0x11, 0x08, 0x6d, 0x1d, 0xae, 0x79, 0x35, 0x91, 0x9c, 0xda, 0x9f, 0xe0, 0xd1, + 0xf6, 0x6d, 0xc0, 0xc6, 0x66, 0x0b, 0x7c, 0x9c, 0xcc, 0x18, 0xc1, 0x6a, 0x1d, 0xd1, 0x66, 0xfd, 0x8c, 0xcd, 0xfb, + 0xcb, 0x1d, 0x78, 0x8a, 0xf1, 0x15, 0xff, 0x2d, 0xff, 0xa0, 0xb2, 0x9c, 0x8c, 0xb3, 0xd2, 0x74, 0xbf, 0xa4, 0x7d, + 0xac, 0x01, 0x50, 0xbd, 0x59, 0x1f, 0x00, 0xaa, 0x8a, 0x10, 0xbf, 0x69, 0x03, 0x6e, 0xb2, 0xb5, 0x2b, 0xda, 0xa1, + 0x62, 0xd7, 0xab, 0x02, 0x1f, 0x5b, 0x18, 0x62, 0x75, 0xf4, 0x67, 0xc3, 0xa8, 0x2c, 0xeb, 0x92, 0xa3, 0xb9, 0xbf, + 0x40, 0xf3, 0x6e, 0x85, 0xab, 0xce, 0xb6, 0xca, 0x55, 0x65, 0x97, 0x53, 0x46, 0xea, 0xea, 0xca, 0x42, 0x94, 0x18, + 0xbd, 0xf2, 0xb9, 0xaf, 0x37, 0xb4, 0xce, 0x69, 0xb8, 0xb9, 0xfc, 0xda, 0x4e, 0x0b, 0xee, 0xfb, 0x55, 0x39, 0x97, + 0x4f, 0x02, 0x27, 0x64, 0x1c, 0x1d, 0xa9, 0x0a, 0xf7, 0x35, 0xcd, 0xd0, 0xa6, 0x10, 0x57, 0xac, 0xcb, 0x76, 0xbd, + 0x3f, 0x64, 0xc5, 0x12, 0x83, 0xe4, 0xb3, 0x11, 0x4f, 0xe2, 0x43, 0xe4, 0x04, 0xbd, 0x3d, 0x79, 0x62, 0x3d, 0x9c, + 0x2c, 0x6f, 0x53, 0x7d, 0x4e, 0x97, 0x0b, 0x95, 0x47, 0x9d, 0x89, 0x3f, 0x0c, 0xa8, 0x26, 0x3a, 0xe8, 0x98, 0x93, + 0x5b, 0x21, 0x6c, 0x57, 0x38, 0xcc, 0x95, 0x26, 0xe7, 0x07, 0x28, 0x53, 0xba, 0x37, 0x09, 0x8b, 0xe7, 0x6c, 0x95, + 0xda, 0xa9, 0xd0, 0x1f, 0x53, 0xe2, 0x38, 0x57, 0x71, 0x64, 0xc5, 0x8c, 0xee, 0x2c, 0x05, 0x57, 0xf7, 0x3c, 0x82, + 0x7b, 0x28, 0x22, 0x90, 0xe8, 0x6c, 0x47, 0x44, 0xc6, 0xad, 0x7f, 0x54, 0x70, 0x1a, 0x23, 0xaf, 0x88, 0xc2, 0xc3, + 0x3b, 0xa8, 0xad, 0x5a, 0x1a, 0xf2, 0x56, 0xb7, 0x20, 0xd3, 0xb2, 0x13, 0x8a, 0xcd, 0x41, 0xb2, 0xfa, 0xc4, 0x5e, + 0x93, 0x25, 0x85, 0x05, 0x53, 0x40, 0x24, 0xce, 0xfb, 0xa3, 0x3c, 0x0d, 0xe8, 0x71, 0xb7, 0x67, 0x99, 0x2d, 0xd0, + 0x09, 0x87, 0x01, 0xff, 0x5b, 0x37, 0x1b, 0x98, 0xe7, 0x17, 0xbd, 0x95, 0x3d, 0xd2, 0x35, 0x2c, 0x61, 0xfd, 0xad, + 0xf0, 0xc7, 0xcf, 0x6a, 0x74, 0xd2, 0x51, 0xb3, 0x13, 0xec, 0x45, 0xf3, 0x2f, 0x55, 0xd7, 0x13, 0xbf, 0x6f, 0x28, + 0x2f, 0x7e, 0x24, 0xbd, 0x25, 0x01, 0x5d, 0x69, 0xe9, 0x0f, 0x59, 0xd0, 0x35, 0xd1, 0x47, 0xf0, 0xc5, 0xb5, 0x12, + 0x14, 0x65, 0x86, 0x81, 0xc4, 0xee, 0xab, 0x9e, 0xed, 0x53, 0xd4, 0x88, 0x2e, 0x31, 0xa3, 0x86, 0xe3, 0x5c, 0x8d, + 0x7c, 0x59, 0x02, 0x3c, 0x0a, 0xbf, 0xe8, 0xc8, 0x8c, 0xbd, 0x93, 0x38, 0xfc, 0x90, 0x40, 0xd7, 0x27, 0x54, 0x64, + 0xb6, 0x26, 0x4d, 0x0a, 0x64, 0x56, 0x8c, 0xe5, 0xf5, 0x1a, 0x9a, 0xa3, 0x05, 0xaa, 0xcf, 0x05, 0xd6, 0x20, 0xe7, + 0x76, 0x8b, 0x2d, 0xc9, 0x40, 0xa1, 0xa9, 0xe2, 0xec, 0x51, 0x98, 0x01, 0xfe, 0x20, 0x7e, 0xb9, 0x44, 0x31, 0xd7, + 0x2e, 0xe2, 0xd0, 0x41, 0x18, 0x23, 0x9e, 0xfa, 0xe6, 0x76, 0x5b, 0xeb, 0x92, 0x5b, 0xfa, 0x2a, 0x61, 0x14, 0xf0, + 0xed, 0xb6, 0x94, 0x9b, 0xa0, 0xfe, 0xc6, 0x32, 0x8e, 0x81, 0x07, 0x08, 0x7d, 0x24, 0x89, 0x10, 0xc0, 0x3c, 0x74, + 0xca, 0x55, 0xa6, 0x8a, 0x16, 0x64, 0x40, 0xcd, 0xd0, 0xb6, 0x39, 0x45, 0x63, 0xa6, 0x6c, 0x09, 0x39, 0x0f, 0x75, + 0x40, 0x24, 0x48, 0xc8, 0x45, 0x8c, 0x89, 0x00, 0x4a, 0xe2, 0xe8, 0xee, 0x5f, 0xea, 0xd0, 0x05, 0x16, 0x79, 0x7e, + 0x2b, 0x0b, 0x9b, 0x98, 0x4e, 0xd2, 0x6a, 0xdf, 0x51, 0x9a, 0x4b, 0x02, 0x89, 0x00, 0x7b, 0x01, 0xf7, 0x53, 0x33, + 0x38, 0x3f, 0x51, 0x4d, 0x22, 0xb7, 0x51, 0xe4, 0xf8, 0x8d, 0xa3, 0xe6, 0xc8, 0xaf, 0xf1, 0x5b, 0xd1, 0xca, 0x24, + 0xbb, 0xe8, 0x27, 0x25, 0xbc, 0x48, 0x7b, 0xb6, 0x22, 0x2b, 0x14, 0x69, 0x69, 0x79, 0xa1, 0x12, 0x5e, 0xad, 0x5f, + 0x49, 0x7b, 0x1f, 0xf1, 0x3f, 0x4f, 0xa2, 0x31, 0x3d, 0xf9, 0xa2, 0x3c, 0x69, 0x1d, 0xa4, 0xbc, 0x6a, 0xf8, 0x09, + 0x64, 0xc0, 0x2d, 0xcf, 0x60, 0x68, 0x7d, 0x36, 0xba, 0x38, 0x35, 0x8f, 0xf1, 0x73, 0x05, 0x50, 0xce, 0x22, 0x51, + 0xc0, 0x18, 0x54, 0xc9, 0x8a, 0x4c, 0x9f, 0x7e, 0xf6, 0x97, 0x5f, 0x84, 0xbd, 0x87, 0xab, 0xc2, 0xdf, 0x46, 0x30, + 0xc0, 0x1d, 0xed, 0x4f, 0x8b, 0xec, 0x48, 0x18, 0x7b, 0xef, 0x4d, 0x86, 0x42, 0x68, 0x76, 0xb4, 0xb4, 0x1a, 0xcb, + 0x1f, 0x88, 0xc1, 0x53, 0x4e, 0x5b, 0x8f, 0x43, 0x39, 0x09, 0x26, 0x04, 0x4f, 0xd7, 0x9d, 0x87, 0xfd, 0x8a, 0xde, + 0x93, 0xa6, 0xf8, 0x20, 0x85, 0x5d, 0x28, 0x89, 0xd8, 0x52, 0xe8, 0xdb, 0x30, 0x40, 0x39, 0x06, 0xde, 0xd7, 0x55, + 0x41, 0xc9, 0x3f, 0x00, 0xbf, 0x8a, 0x66, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, + 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, + 0x6a, 0x4d, 0xaa, 0xba, 0x41, 0x13, 0xef, 0xa7, 0x94, 0xb8, 0x05, 0x4c, 0xac, 0xef, 0x30, 0x2e, 0x2b, 0x89, 0x10, + 0xb4, 0xb0, 0x1f, 0xaf, 0x2b, 0x7a, 0xde, 0xdd, 0x4d, 0x13, 0xc9, 0xed, 0xc9, 0x70, 0x5a, 0x15, 0xf6, 0xae, 0x88, + 0xd0, 0x9d, 0xe1, 0xb8, 0x17, 0xa4, 0x06, 0xe8, 0x6c, 0x54, 0xea, 0xaf, 0x96, 0x33, 0x6d, 0x1a, 0x71, 0x1e, 0x4d, + 0x55, 0x41, 0x68, 0xaf, 0xcf, 0xa6, 0x61, 0x2c, 0x36, 0xe0, 0x87, 0xd0, 0x8e, 0x6d, 0xa3, 0xd6, 0xfd, 0xd8, 0xca, + 0x04, 0x8a, 0xf7, 0xbe, 0x12, 0x8a, 0x9e, 0x5b, 0x82, 0xe3, 0x4e, 0xe5, 0xff, 0x64, 0xa6, 0xac, 0xa1, 0x85, 0x63, + 0x2a, 0x4e, 0x7d, 0x1d, 0xf3, 0x37, 0x9c, 0xd1, 0x07, 0x48, 0xe7, 0xa0, 0xb6, 0x41, 0x24, 0xab, 0x54, 0x50, 0x8d, + 0xcf, 0xdd, 0xdc, 0x7a, 0xb0, 0xd5, 0x26, 0x48, 0xb5, 0xc2, 0x32, 0x59, 0x4a, 0xac, 0x4a, 0xbc, 0x5e, 0xe4, 0xf7, + 0x9d, 0x58, 0x70, 0x69, 0x06, 0xa0, 0x85, 0xbf, 0x89, 0x56, 0xed, 0xd5, 0x36, 0x7f, 0x05, 0xba, 0x10, 0x70, 0xfa, + 0xa6, 0xcd, 0x9c, 0x91, 0x7f, 0x2a, 0xaf, 0xce, 0x0a, 0x82, 0xb4, 0x2f, 0x59, 0xc0, 0x93, 0x4f, 0xb1, 0xe0, 0xce, + 0x10, 0x03, 0x83, 0x9e, 0x6a, 0x3f, 0xaf, 0xa7, 0x79, 0x5d, 0x86, 0xf6, 0x87, 0x49, 0x0d, 0x93, 0x51, 0x3a, 0xcb, + 0x34, 0xc7, 0x71, 0xdd, 0xab, 0x3c, 0x23, 0x2a, 0x0f, 0xbb, 0xc0, 0x5b, 0x33, 0x78, 0x07, 0xbe, 0x20, 0x8d, 0x05, + 0x0f, 0xcf, 0xa1, 0xa7, 0x01, 0x71, 0xa0, 0xca, 0xb9, 0x06, 0x4a, 0x2e, 0x71, 0xf4, 0x08, 0x69, 0x38, 0xfd, 0xc5, + 0x1d, 0x6b, 0x67, 0x86, 0x11, 0x9f, 0x17, 0x4b, 0xcf, 0xab, 0x69, 0xb2, 0xdf, 0x31, 0xcb, 0xfd, 0xdd, 0xe5, 0x30, + 0xe1, 0x90, 0xa4, 0x25, 0x73, 0xdc, 0x29, 0x15, 0x77, 0x6e, 0x46, 0x7a, 0x82, 0xc1, 0x11, 0xbb, 0xc7, 0x90, 0xa3, + 0xff, 0x81, 0xbe, 0x46, 0x63, 0x3d, 0xe5, 0xc3, 0xda, 0x22, 0x1d, 0x6d, 0x5a, 0xcf, 0xa1, 0x9f, 0xd3, 0x5d, 0x85, + 0x42, 0x9f, 0xf5, 0x6f, 0x94, 0x1d, 0x3c, 0x36, 0x7f, 0xad, 0xb2, 0x6b, 0x76, 0xa1, 0x16, 0x69, 0x69, 0x85, 0x4c, + 0xc3, 0x02, 0x94, 0x5d, 0xe9, 0x7e, 0x34, 0x02, 0x6d, 0x5f, 0x29, 0x4f, 0x15, 0x5c, 0x63, 0x0c, 0x51, 0x58, 0x41, + 0x5c, 0xf5, 0xb0, 0xcf, 0x4b, 0xd7, 0xc6, 0xa4, 0x23, 0x24, 0xba, 0xb6, 0xa3, 0x23, 0x8e, 0x97, 0xec, 0x2f, 0x23, + 0x61, 0x66, 0xa5, 0x97, 0x1d, 0x66, 0xcb, 0xc2, 0x69, 0xb2, 0x4d, 0xf1, 0x2c, 0x2a, 0x1c, 0x27, 0x0d, 0x01, 0x49, + 0x94, 0x62, 0xb9, 0x4f, 0xc8, 0x2e, 0x3b, 0xf4, 0x76, 0x18, 0x17, 0xaf, 0x2c, 0x53, 0x97, 0x38, 0x22, 0x51, 0x38, + 0xd1, 0xa3, 0x08, 0x27, 0x48, 0x3d, 0xcd, 0x57, 0xf6, 0x2a, 0x2e, 0x9c, 0x7e, 0x55, 0x80, 0x7b, 0x27, 0x10, 0x9f, + 0x63, 0x00, 0x3e, 0x04, 0x3a, 0xca, 0xe8, 0x1f, 0x5a, 0xc2, 0x90, 0x5a, 0xe5, 0xa3, 0x0b, 0x2c, 0x4d, 0x67, 0x78, + 0xf6, 0xa8, 0xc2, 0x5a, 0x5a, 0x9d, 0x58, 0xab, 0xb2, 0xde, 0x25, 0x14, 0x16, 0xf8, 0x99, 0xf7, 0x29, 0xdd, 0x97, + 0x4a, 0x6b, 0xe0, 0x3b, 0x78, 0xc7, 0xfc, 0xb6, 0xdf, 0x3f, 0x3a, 0x37, 0x76, 0xf3, 0xcd, 0xeb, 0xd8, 0xee, 0x11, + 0x20, 0xbb, 0xb5, 0x3c, 0x1c, 0x3e, 0x24, 0x40, 0xea, 0x26, 0x8a, 0x6c, 0x6f, 0xd6, 0xe5, 0xf9, 0xa0, 0xe0, 0x6a, + 0x72, 0xbc, 0xa8, 0xbe, 0xd9, 0x6b, 0x38, 0xac, 0xee, 0x65, 0xe1, 0x22, 0xd2, 0x08, 0xff, 0x42, 0x5b, 0xe3, 0xeb, + 0x5c, 0xf1, 0xc7, 0x41, 0x5b, 0x9b, 0x79, 0x58, 0xdc, 0x70, 0xb0, 0x45, 0xc0, 0x3c, 0xa1, 0x23, 0x51, 0xcb, 0x37, + 0xd2, 0x1f, 0x86, 0xa9, 0xc8, 0x3b, 0xcf, 0xc7, 0xd0, 0xaa, 0x5b, 0x3a, 0xae, 0xad, 0x07, 0x60, 0xa3, 0xf6, 0x0f, + 0xa7, 0x00, 0x1a, 0x28, 0x43, 0xe9, 0x0c, 0xe0, 0x1d, 0x40, 0x5c, 0x42, 0x57, 0x25, 0x7e, 0xb0, 0x5b, 0xd7, 0x13, + 0x06, 0x6e, 0xdd, 0x17, 0x22, 0xca, 0x10, 0x10, 0x6b, 0x0e, 0xb8, 0x9c, 0x29, 0xf8, 0x95, 0x38, 0x88, 0xf4, 0x5e, + 0x4d, 0xbb, 0x78, 0xe2, 0x4e, 0xde, 0x4d, 0x33, 0x6c, 0x3e, 0xbf, 0xb0, 0xa9, 0x6e, 0x40, 0xf5, 0xed, 0x93, 0x1f, + 0x01, 0x9b, 0xe8, 0xf1, 0xea, 0x26, 0x5d, 0x76, 0xf3, 0x7c, 0xcd, 0x9d, 0x63, 0x17, 0x16, 0x1b, 0xb9, 0x3b, 0xdb, + 0x38, 0xe7, 0x2b, 0xce, 0xea, 0xb0, 0x2e, 0xcd, 0x39, 0x87, 0x21, 0xa6, 0x00, 0xe6, 0x56, 0xb3, 0xb4, 0x47, 0x80, + 0xb7, 0x72, 0xd6, 0xa3, 0x03, 0x90, 0x46, 0x43, 0x9d, 0x8d, 0xaa, 0x71, 0x42, 0x63, 0x89, 0xa4, 0x2d, 0xd6, 0x67, + 0xfb, 0x00, 0xaa, 0x1f, 0x9f, 0x9b, 0x8a, 0xbe, 0x76, 0x6a, 0x8d, 0xdc, 0xc6, 0xe7, 0x6c, 0xcf, 0x23, 0xce, 0x99, + 0xa4, 0xfd, 0x9a, 0x18, 0xcf, 0xaf, 0x52, 0x0c, 0x3f, 0x19, 0x64, 0x0c, 0xfe, 0xdd, 0x61, 0xec, 0xfa, 0xbf, 0x20, + 0x5f, 0x64, 0x59, 0xc9, 0x4f, 0x9d, 0xfd, 0x16, 0x19, 0xaf, 0x7d, 0x68, 0xa0, 0xec, 0x64, 0x2f, 0x73, 0xa2, 0x22, + 0xb2, 0x09, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, + 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xd8, 0x0d, 0x7a, 0xc1, + 0xaa, 0xb6, 0xdb, 0xd9, 0x27, 0x08, 0x69, 0x3e, 0x42, 0x3e, 0xe7, 0x3d, 0xad, 0x56, 0x85, 0x78, 0x04, 0x88, 0x6c, + 0xfe, 0x7a, 0x82, 0xa4, 0x17, 0xdb, 0x5b, 0xf1, 0x3e, 0x61, 0x9b, 0x6d, 0xbe, 0x5b, 0x4b, 0xa5, 0xbd, 0x53, 0x2c, + 0x89, 0x5b, 0x69, 0xf1, 0x0a, 0xaf, 0x9f, 0x0a, 0xaa, 0xab, 0xd8, 0x13, 0x68, 0x4b, 0xdb, 0x98, 0x51, 0x70, 0x87, + 0x0a, 0x4f, 0x4b, 0x22, 0xa5, 0x9e, 0xad, 0xf8, 0x7f, 0xa8, 0x89, 0xa0, 0xd4, 0x9c, 0x80, 0xd0, 0xaf, 0x1f, 0x96, + 0x77, 0x75, 0xee, 0xae, 0x62, 0x55, 0x0f, 0x52, 0x04, 0x04, 0x95, 0x1a, 0xb8, 0xf9, 0x0c, 0x4e, 0x40, 0xfd, 0x11, + 0x05, 0x0d, 0xee, 0xbd, 0x68, 0x18, 0xe2, 0x59, 0xe3, 0x4b, 0xec, 0x23, 0x0c, 0x03, 0xe3, 0x48, 0x85, 0x09, 0x90, + 0x18, 0x4e, 0xc0, 0xd2, 0xa2, 0x51, 0x18, 0x95, 0x04, 0x1a, 0x93, 0x88, 0xd2, 0x05, 0x95, 0xe0, 0x82, 0xaf, 0xd4, + 0x0d, 0xa4, 0x67, 0xc0, 0xb5, 0x8c, 0x79, 0x97, 0xf6, 0x30, 0xef, 0xf6, 0xf2, 0x43, 0x56, 0x05, 0xfa, 0x57, 0xc5, + 0x9f, 0x36, 0x8e, 0x66, 0x27, 0x4c, 0xf0, 0xaa, 0x22, 0xc1, 0x7d, 0xad, 0x2a, 0xcc, 0xc4, 0x8a, 0x93, 0x87, 0x08, + 0xe9, 0xdd, 0x31, 0xe9, 0x5a, 0xfd, 0xb1, 0xff, 0xd7, 0x43, 0x05, 0x90, 0xb9, 0xb1, 0x7d, 0xd1, 0x67, 0x0f, 0xbe, + 0x98, 0x0d, 0x66, 0x05, 0x95, 0x07, 0xc0, 0xbf, 0x84, 0x10, 0x77, 0x34, 0x3d, 0xe2, 0x35, 0x55, 0x2a, 0xc1, 0xa2, + 0x3c, 0x36, 0x5e, 0x48, 0x7f, 0x27, 0x55, 0x9a, 0xd5, 0xb5, 0x22, 0x7a, 0x0c, 0x74, 0x4f, 0x6b, 0xae, 0xca, 0xea, + 0x21, 0x32, 0x29, 0x24, 0x90, 0xcb, 0x9e, 0xe7, 0xb6, 0xf1, 0xe3, 0x88, 0x36, 0x84, 0xba, 0xed, 0x42, 0x02, 0xe0, + 0x4f, 0xe7, 0xc5, 0xb4, 0x1a, 0xdb, 0x2a, 0x6f, 0x51, 0x37, 0xdf, 0x89, 0x57, 0xaf, 0xe5, 0x90, 0xfe, 0x9e, 0xb7, + 0x1c, 0x58, 0x46, 0x42, 0x53, 0xb3, 0xb0, 0x1e, 0x8a, 0x52, 0x91, 0xf5, 0x89, 0x5b, 0xeb, 0x14, 0xd6, 0x38, 0xc3, + 0xe7, 0x7b, 0x69, 0x14, 0x03, 0x0c, 0x10, 0x43, 0xf7, 0xa3, 0xc2, 0x04, 0x3a, 0x3e, 0xe3, 0x6a, 0x8e, 0x76, 0x01, + 0x3a, 0x10, 0xe8, 0x0c, 0x18, 0x04, 0x14, 0x75, 0x90, 0x12, 0x72, 0x12, 0x0a, 0x92, 0x32, 0x76, 0x6e, 0xc2, 0xfe, + 0x76, 0x43, 0xfa, 0x59, 0x97, 0xe7, 0x64, 0x55, 0x23, 0x23, 0x60, 0x79, 0xfb, 0xe9, 0x96, 0x81, 0xa1, 0xfa, 0xb8, + 0x72, 0x04, 0x84, 0xd6, 0x1e, 0x34, 0x09, 0x28, 0x61, 0x03, 0x96, 0xfc, 0xfa, 0x92, 0xef, 0xa8, 0xcc, 0x15, 0xee, + 0x2e, 0x36, 0x17, 0x60, 0x3f, 0xfc, 0xfb, 0x18, 0xb8, 0xbb, 0x54, 0x87, 0xe9, 0x49, 0x9c, 0xa7, 0x64, 0xe9, 0x02, + 0x1d, 0x22, 0x52, 0xa0, 0xca, 0x41, 0xf3, 0x13, 0x2d, 0xd4, 0x7b, 0x18, 0xff, 0x0e, 0x17, 0x5c, 0xeb, 0xf4, 0x18, + 0x64, 0x5e, 0xe8, 0xe4, 0x14, 0xa0, 0x44, 0x12, 0x9b, 0x3a, 0x8d, 0x58, 0x23, 0x1b, 0xa4, 0x81, 0x09, 0x09, 0x3a, + 0x83, 0x10, 0xc3, 0x8e, 0xcf, 0x21, 0xc8, 0x2b, 0x21, 0xab, 0x17, 0x6a, 0x97, 0x52, 0x46, 0xe7, 0xc7, 0xd6, 0xee, + 0xfd, 0xd3, 0x7c, 0x74, 0x79, 0xe0, 0x08, 0x98, 0x0e, 0xb1, 0x5e, 0x8c, 0x2c, 0x2c, 0x37, 0x30, 0x52, 0x97, 0xb1, + 0x8a, 0xef, 0xe1, 0x1d, 0xbc, 0xc2, 0xa8, 0x12, 0xb2, 0xc6, 0xd9, 0xf9, 0xdd, 0x48, 0xf2, 0x37, 0xd5, 0x7f, 0x77, + 0x4e, 0xd5, 0x8d, 0x8a, 0x91, 0x4b, 0x45, 0xac, 0x2f, 0xd2, 0xc9, 0xe5, 0xe0, 0xf8, 0x5b, 0xe3, 0xa2, 0x74, 0x77, + 0xaa, 0xaf, 0x97, 0x76, 0xb8, 0x30, 0x06, 0x37, 0x53, 0xf0, 0x7b, 0x18, 0x34, 0x12, 0x7f, 0xeb, 0x33, 0x4a, 0x8a, + 0x1b, 0x0c, 0x8a, 0xd2, 0x18, 0xe9, 0x73, 0xbe, 0x4c, 0xa6, 0x51, 0x76, 0x10, 0xfe, 0xef, 0x22, 0x85, 0x6f, 0x8e, + 0x89, 0x14, 0x65, 0x4f, 0x8c, 0x83, 0xba, 0x66, 0x7d, 0x89, 0x1f, 0xe7, 0xcf, 0x43, 0x11, 0x3b, 0x6f, 0xda, 0x23, + 0x5f, 0xd6, 0x6b, 0xd3, 0x91, 0xf9, 0x76, 0x33, 0xfd, 0x93, 0xbf, 0x77, 0xbb, 0x76, 0x75, 0x13, 0xb7, 0x98, 0xc0, + 0x7e, 0x3a, 0x2d, 0x8f, 0xe3, 0xbe, 0xd8, 0x7b, 0xbe, 0x7b, 0x7f, 0x61, 0xec, 0xdb, 0xb9, 0xf8, 0x07, 0x77, 0x68, + 0xae, 0xbe, 0x13, 0xc2, 0xc6, 0x63, 0x73, 0xc6, 0xa3, 0xe5, 0xe5, 0x96, 0x18, 0x8f, 0x49, 0xbc, 0xdb, 0xca, 0x88, + 0x48, 0x91, 0x4f, 0x30, 0x0c, 0x9f, 0x7c, 0xe5, 0xe9, 0x79, 0xde, 0x02, 0xe4, 0xdc, 0x80, 0xb0, 0x3a, 0x40, 0x7a, + 0x52, 0xb4, 0xf0, 0x5c, 0x24, 0x85, 0x65, 0xfb, 0x12, 0x81, 0x46, 0xea, 0x6a, 0xfa, 0xbb, 0xb5, 0xad, 0x1e, 0x78, + 0x9b, 0xa5, 0x56, 0x1e, 0x3e, 0x1b, 0x41, 0xfd, 0x68, 0x31, 0x93, 0xad, 0xa2, 0x5c, 0x66, 0x3f, 0x8d, 0x48, 0x4b, + 0xeb, 0x47, 0x72, 0xc4, 0xb5, 0x05, 0xcb, 0x2c, 0xdb, 0x4a, 0x92, 0xf8, 0x31, 0x73, 0x04, 0xdf, 0x04, 0xb1, 0x44, + 0x29, 0xa5, 0x44, 0xab, 0x4e, 0x19, 0x5a, 0x7d, 0xf7, 0x97, 0xc2, 0x80, 0x5b, 0x47, 0xea, 0x6c, 0x01, 0x00, 0x00, + 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, + 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xa2, 0xa4, 0x8d, 0x48, 0x6a, 0x20, 0x65, 0x3a, 0xcf, + 0x4c, 0xa0, 0xe4, 0x8a, 0x0a, 0x6a, 0xad, 0xae, 0xfc, 0x20, 0xd8, 0x39, 0x27, 0x6e, 0xb2, 0xbd, 0xbc, 0xaf, 0xfa, + 0xbc, 0xb5, 0x38, 0x42, 0x94, 0x30, 0xcc, 0xb9, 0xd5, 0x22, 0xed, 0x88, 0xc0, 0x0f, 0xc7, 0x80, 0xf6, 0xaa, 0xcf, + 0x4e, 0xb5, 0x21, 0xc3, 0x19, 0x00, 0x80, 0x1f, 0x2b, 0xfb, 0xa7, 0xfe, 0x54, 0x32, 0x46, 0x72, 0x20, 0x9b, 0x90, + 0xb6, 0xd0, 0x2a, 0x5b, 0x55, 0x36, 0xff, 0x5d, 0x6c, 0x76, 0x0d, 0xbc, 0x15, 0x41, 0x2b, 0x92, 0x34, 0xcd, 0x57, + 0x0a, 0xf5, 0x12, 0x19, 0x6f, 0xeb, 0xda, 0x42, 0x79, 0xba, 0x52, 0x29, 0x0b, 0xb1, 0x1c, 0xd9, 0xe3, 0x55, 0xe2, + 0xd2, 0xcc, 0xc4, 0x4a, 0xfa, 0x81, 0x22, 0x60, 0x7c, 0x5e, 0xac, 0x4e, 0xe5, 0x1b, 0xf6, 0xef, 0xd9, 0xe5, 0x00, + 0xa1, 0x49, 0x69, 0xf0, 0x70, 0xb5, 0x20, 0x7d, 0x2e, 0x1a, 0xec, 0xd6, 0x0f, 0xc6, 0x6a, 0x6c, 0x37, 0xbe, 0x72, + 0x00, 0x0a, 0x8b, 0x77, 0xa0, 0x5e, 0x51, 0x59, 0xe3, 0x14, 0xbc, 0x0a, 0x0f, 0x09, 0x24, 0xc0, 0x89, 0x19, 0x40, + 0xfe, 0x0d, 0x44, 0xac, 0x50, 0x14, 0xbc, 0x1f, 0x91, 0xb9, 0x86, 0x78, 0x6b, 0x2b, 0x8f, 0x85, 0x39, 0x0e, 0xb5, + 0x9c, 0x1e, 0xf9, 0x7a, 0x0b, 0xcf, 0xc6, 0x66, 0x64, 0x1b, 0x8b, 0x33, 0x81, 0xb1, 0x2e, 0xc3, 0x53, 0x5c, 0x34, + 0xa2, 0x83, 0x87, 0x88, 0xa5, 0xfd, 0x9f, 0x32, 0x91, 0xaa, 0xe6, 0x4b, 0x63, 0x81, 0x66, 0x0d, 0xab, 0x2c, 0xbb, + 0x13, 0x13, 0xd9, 0xf8, 0xd1, 0x5a, 0x17, 0x41, 0x6f, 0x83, 0xec, 0x0f, 0xf4, 0x00, 0xc7, 0x6d, 0x35, 0x45, 0xda, + 0xca, 0x1d, 0x7a, 0x46, 0x0c, 0x79, 0x9e, 0xc9, 0x95, 0x53, 0x5d, 0x1b, 0x84, 0x9e, 0xf7, 0x6e, 0x96, 0x13, 0x5b, + 0xa8, 0xc2, 0x04, 0xf8, 0xf4, 0x5a, 0xfd, 0xf8, 0x48, 0xdb, 0xc3, 0x02, 0x15, 0xf2, 0x23, 0xcb, 0x2b, 0xe4, 0x6f, + 0x51, 0x0f, 0xb8, 0xfb, 0x0e, 0xf7, 0x5f, 0x9f, 0x77, 0xf4, 0x9c, 0x79, 0x46, 0x15, 0xe6, 0x1b, 0x55, 0x0f, 0x06, + 0xc7, 0x58, 0x16, 0x59, 0x43, 0xd1, 0x0b, 0xa2, 0xf8, 0x4e, 0xe9, 0x52, 0xe4, 0xb7, 0x91, 0xb0, 0xc7, 0x7b, 0xb5, + 0xdb, 0xd9, 0xc3, 0x29, 0xaf, 0xf4, 0x25, 0xb7, 0xdc, 0xf8, 0xfc, 0xf9, 0x49, 0xf6, 0xec, 0x9f, 0x62, 0x02, 0x2e, + 0x36, 0x6d, 0x10, 0xbe, 0x5e, 0xf8, 0xb2, 0x68, 0x2f, 0xfb, 0x01, 0x8c, 0xe4, 0x0d, 0x2e, 0x5c, 0x94, 0x2d, 0xe0, + 0x13, 0x67, 0x19, 0x21, 0x90, 0xa1, 0xb4, 0xa6, 0x05, 0x75, 0x2d, 0xcc, 0x4f, 0xf4, 0x9f, 0x39, 0xfb, 0xfc, 0x61, + 0x99, 0x8a, 0x6f, 0xf2, 0xf9, 0xef, 0x54, 0xdc, 0xe5, 0x7a, 0xe9, 0xeb, 0xaa, 0x5d, 0xa5, 0x50, 0x23, 0xb3, 0xbc, + 0x23, 0x9d, 0x1a, 0x32, 0xd1, 0xca, 0x96, 0x33, 0xb6, 0xf3, 0x27, 0xfa, 0xb2, 0x7a, 0x07, 0x89, 0x94, 0xe9, 0x32, + 0xdd, 0x2e, 0xfe, 0xb5, 0x8c, 0xd9, 0x84, 0x2e, 0xf4, 0x26, 0x28, 0x2e, 0x54, 0x19, 0x4a, 0xa3, 0x7a, 0x4f, 0xfa, + 0x99, 0xbb, 0xa5, 0x20, 0x20, 0x6d, 0x63, 0x9d, 0xf6, 0xaa, 0x6c, 0x6b, 0x80, 0x7c, 0x25, 0xe7, 0xc9, 0xaf, 0xc6, + 0x35, 0x3c, 0x45, 0x47, 0x20, 0xe7, 0x12, 0xfe, 0x58, 0x2c, 0x70, 0xcb, 0xa8, 0x3c, 0x7c, 0x0f, 0xa9, 0x6e, 0xaf, + 0x4c, 0xce, 0x93, 0xa4, 0x84, 0xfc, 0xb3, 0x23, 0x8b, 0x47, 0xb7, 0xac, 0x01, 0x27, 0x73, 0x85, 0x9c, 0x30, 0xeb, + 0x05, 0x56, 0xbb, 0x0c, 0xcc, 0xc8, 0x15, 0x9d, 0x74, 0x42, 0x50, 0x86, 0xee, 0xf1, 0x2e, 0x68, 0x76, 0x99, 0x37, + 0x6b, 0x09, 0x4a, 0x61, 0xd3, 0xcb, 0xc1, 0xe9, 0x5c, 0xa0, 0xf6, 0x8a, 0xa1, 0xdb, 0x21, 0x4f, 0x8e, 0x07, 0x9b, + 0xb6, 0x42, 0x40, 0xb7, 0xbe, 0x08, 0xf4, 0x0c, 0x82, 0xfa, 0x96, 0x4a, 0xde, 0x28, 0x78, 0x35, 0xbb, 0xec, 0x2a, + 0x14, 0x83, 0x04, 0x20, 0x98, 0x7e, 0xe0, 0x92, 0xc7, 0xae, 0x1e, 0x0f, 0x01, 0x98, 0xd7, 0x35, 0xc1, 0x66, 0x2d, + 0xdd, 0xa3, 0xca, 0xa3, 0xf1, 0xdf, 0x8a, 0x79, 0xbf, 0x58, 0xf8, 0xa6, 0x8e, 0xc9, 0xcc, 0x13, 0x26, 0x83, 0x47, + 0x28, 0x60, 0x5d, 0x79, 0x32, 0xcb, 0xbd, 0xd0, 0xc6, 0xb2, 0xe5, 0x76, 0xfc, 0x93, 0xf8, 0xac, 0x60, 0xa2, 0x65, + 0x56, 0xe3, 0x1e, 0xe6, 0x78, 0x83, 0x00, 0x89, 0x3b, 0x29, 0xdc, 0x06, 0xa8, 0x14, 0x8e, 0x93, 0x57, 0xf8, 0x4a, + 0xa4, 0xd0, 0x72, 0xfb, 0x39, 0x68, 0xb7, 0x01, 0xc4, 0xcd, 0xb3, 0x5f, 0x0d, 0x50, 0x44, 0x62, 0x8e, 0x23, 0xc5, + 0x30, 0x83, 0x1b, 0x0d, 0x59, 0x35, 0x54, 0x07, 0x7f, 0x6f, 0xa6, 0x43, 0xd0, 0xc3, 0x2d, 0x0f, 0xd0, 0x23, 0xde, + 0x26, 0x67, 0x97, 0x26, 0x1a, 0x3c, 0x26, 0xac, 0x58, 0x5b, 0xd6, 0x64, 0x0d, 0xf8, 0xcb, 0x2e, 0x30, 0x99, 0x8b, + 0x60, 0x6c, 0xd6, 0xc8, 0x34, 0xa6, 0x5d, 0x9b, 0xbe, 0xf1, 0x38, 0x3b, 0x9c, 0x7c, 0x51, 0xd8, 0x28, 0x58, 0x65, + 0x37, 0xa9, 0xed, 0x03, 0x6e, 0x4e, 0xa9, 0x26, 0xbd, 0x1e, 0x20, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, + 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, + 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xf0, 0x2b, 0xf0, 0x1c, 0x88, 0x6b, 0xa0, 0x03, 0x32, 0xe3, 0x21, 0x63, 0x66, 0x0f, + 0x2c, 0x78, 0x83, 0xe1, 0x72, 0x35, 0x83, 0x1b, 0xcf, 0xab, 0x97, 0x33, 0x17, 0x2d, 0x8b, 0x7f, 0x51, 0x18, 0x9d, + 0x61, 0x4c, 0x01, 0x8f, 0x4c, 0x1a, 0xcc, 0x0e, 0x41, 0xd5, 0x90, 0x32, 0xad, 0xbf, 0x28, 0x7f, 0xe5, 0x52, 0x71, + 0xc1, 0xe8, 0xff, 0xe2, 0xde, 0x8b, 0x4e, 0x60, 0xe4, 0x35, 0x3b, 0x38, 0xe8, 0x80, 0x98, 0xe5, 0x4c, 0x83, 0xf8, + 0x08, 0x37, 0xc1, 0x69, 0x2b, 0x5c, 0x89, 0xa1, 0x19, 0x59, 0xed, 0x19, 0x85, 0xfd, 0x0b, 0x9d, 0xa5, 0x63, 0x3f, + 0x91, 0xb3, 0xfe, 0xd0, 0x47, 0x4b, 0x19, 0x16, 0x01, 0x8b, 0x86, 0x0f, 0x1f, 0xb2, 0xbb, 0x19, 0xb6, 0x1e, 0x7e, + 0x67, 0x6a, 0x14, 0x6d, 0xb1, 0x3f, 0xf0, 0x68, 0xb0, 0xcd, 0x85, 0x1a, 0xae, 0x4e, 0xfe, 0xa7, 0x85, 0x5e, 0x0f, + 0x8c, 0x6c, 0x42, 0xcd, 0x27, 0x30, 0x93, 0x98, 0x0b, 0x0c, 0xfe, 0x69, 0x61, 0x74, 0x73, 0xaf, 0x81, 0xe8, 0xcf, + 0xbf, 0x87, 0x6c, 0xe4, 0x7f, 0xe1, 0x59, 0x20, 0xa9, 0xb9, 0x16, 0x84, 0x6c, 0xf3, 0x1e, 0x1e, 0xa1, 0x57, 0xd3, + 0x9a, 0x80, 0xd4, 0xdd, 0x86, 0x08, 0x0e, 0x83, 0x5e, 0xc5, 0xf9, 0xd3, 0x5a, 0x63, 0xaa, 0x9b, 0x01, 0x6f, 0x38, + 0xd0, 0x33, 0xe0, 0x36, 0x39, 0x70, 0x1c, 0xf4, 0x0b, 0xc7, 0x0d, 0x45, 0x27, 0x20, 0xcc, 0x55, 0x29, 0x11, 0x4a, + 0x6c, 0xb3, 0xd4, 0xe1, 0x92, 0xa6, 0xa9, 0xdc, 0xb9, 0xca, 0x9e, 0x15, 0x3f, 0x0c, 0x0e, 0x24, 0x31, 0x8e, 0x04, + 0x21, 0x2e, 0x19, 0xb0, 0x01, 0xf1, 0xa1, 0xe5, 0xab, 0x96, 0xc3, 0x35, 0x52, 0x63, 0x25, 0x92, 0x92, 0x11, 0xd7, + 0x18, 0xcb, 0x92, 0xf0, 0xc4, 0xfa, 0xa8, 0x45, 0xd8, 0x06, 0xd9, 0x74, 0x11, 0x2c, 0x55, 0x2b, 0x89, 0x00, 0xf0, + 0xed, 0x73, 0xa5, 0x50, 0xaa, 0xcc, 0x49, 0xf7, 0xdd, 0xb2, 0x32, 0x21, 0x51, 0xc8, 0x14, 0xdf, 0x23, 0xcd, 0x14, + 0xf8, 0x1c, 0x6c, 0x26, 0x57, 0x2e, 0x28, 0x4d, 0x89, 0x6c, 0x48, 0x32, 0x7f, 0x34, 0x76, 0xab, 0x5c, 0x1a, 0x6d, + 0x5e, 0xc1, 0x90, 0x55, 0xc7, 0x66, 0x89, 0xd1, 0xc9, 0x6f, 0x6c, 0x90, 0xc5, 0x77, 0x66, 0xc5, 0x04, 0x77, 0x3e, + 0xfd, 0x41, 0x4d, 0x3c, 0xe7, 0x64, 0x56, 0xe7, 0x7e, 0xc8, 0x86, 0xce, 0x50, 0x81, 0xf3, 0x81, 0x3a, 0x8a, 0x96, + 0xee, 0xd8, 0x24, 0xcc, 0x64, 0x9d, 0x11, 0x66, 0x54, 0x6f, 0xd9, 0xb3, 0xc5, 0xf4, 0x6c, 0xb5, 0x63, 0x48, 0x31, + 0xd6, 0x7e, 0xa7, 0x79, 0x14, 0xe0, 0xe2, 0x3c, 0x5c, 0x26, 0x19, 0x53, 0x53, 0xce, 0xa3, 0xb7, 0xb9, 0xab, 0x6e, + 0xe0, 0xf7, 0xf8, 0x03, 0x20, 0x0e, 0x55, 0x47, 0x49, 0xf9, 0xb1, 0x7c, 0x4a, 0xa0, 0x63, 0xe2, 0x3a, 0x16, 0xd1, + 0xf1, 0x70, 0x62, 0xdf, 0x54, 0x7b, 0x09, 0xae, 0x78, 0x55, 0x53, 0x3e, 0x14, 0x0f, 0x79, 0xd5, 0x8c, 0x30, 0x18, + 0x6e, 0x0b, 0x3c, 0xd5, 0x95, 0x35, 0xce, 0x31, 0x71, 0x48, 0xa0, 0x01, 0x61, 0xe7, 0x37, 0xa5, 0x7d, 0xe9, 0xfa, + 0xbb, 0x5a, 0x25, 0x6c, 0x9e, 0xd1, 0xb2, 0x4e, 0x41, 0xf0, 0x8a, 0x49, 0x32, 0x25, 0x00, 0x0a, 0xcd, 0x6d, 0xf6, + 0x2d, 0xd9, 0x3e, 0xec, 0xf1, 0x9a, 0x4a, 0x43, 0x8a, 0xe2, 0x91, 0xb1, 0x4f, 0x51, 0xb8, 0xa2, 0x2b, 0x95, 0x8a, + 0x0b, 0x0b, 0xd5, 0x69, 0xd1, 0x41, 0x6d, 0x4a, 0x76, 0x1c, 0x8b, 0xec, 0xb5, 0x66, 0x14, 0x1e, 0x72, 0x66, 0x1b, + 0x45, 0xef, 0xc8, 0x16, 0x0a, 0xdd, 0x05, 0x0f, 0x2c, 0x1b, 0x1e, 0x0b, 0x02, 0xa0, 0x7f, 0x0b, 0xa1, 0x3c, 0xb9, + 0xd4, 0xbd, 0x1c, 0x22, 0x1c, 0x5f, 0xc5, 0x23, 0xff, 0xbe, 0xb0, 0xfc, 0x23, 0x6f, 0x46, 0x33, 0x94, 0x46, 0xde, + 0x50, 0xcf, 0x40, 0x1e, 0x59, 0xf7, 0xe4, 0xa6, 0x51, 0xea, 0x3f, 0x88, 0x63, 0xe6, 0xfd, 0xe4, 0x03, 0x2a, 0x22, + 0x85, 0x81, 0x53, 0x5c, 0x52, 0xae, 0xee, 0x70, 0xb6, 0xc8, 0x62, 0x32, 0x06, 0x2f, 0x1f, 0x37, 0xb2, 0x9b, 0x66, + 0x69, 0x28, 0x29, 0x47, 0x06, 0x2f, 0xdb, 0x2d, 0x8b, 0xba, 0x47, 0x00, 0xaf, 0x4c, 0x45, 0x67, 0x29, 0x4d, 0xde, + 0x2a, 0x14, 0x01, 0xe1, 0x6a, 0xa2, 0x6a, 0xa4, 0x4b, 0xb2, 0xb3, 0x6f, 0xa2, 0x12, 0x6f, 0xbf, 0x2c, 0xd4, 0x9d, + 0x71, 0x29, 0xca, 0x10, 0x19, 0x95, 0x55, 0x7f, 0xe4, 0x07, 0x43, 0x93, 0x2c, 0xd4, 0x79, 0x84, 0x9c, 0x36, 0x3c, + 0xd9, 0xe9, 0x02, 0x76, 0xf0, 0xda, 0x84, 0xd2, 0x70, 0xad, 0x05, 0x4b, 0x61, 0xd1, 0x12, 0x1b, 0x72, 0x30, 0x45, + 0xf0, 0x65, 0x10, 0xa8, 0x1e, 0x4c, 0x23, 0xce, 0xd5, 0xba, 0xe5, 0x02, 0x46, 0x86, 0xcf, 0x53, 0xef, 0x9d, 0xbd, + 0x09, 0x15, 0xe2, 0xfd, 0xfe, 0x9a, 0x6c, 0x05, 0x78, 0xcb, 0x01, 0x59, 0x9d, 0x59, 0x54, 0xf0, 0xba, 0xf9, 0x5c, + 0xe7, 0x62, 0xad, 0x09, 0x1d, 0x53, 0x87, 0xb9, 0x6e, 0x96, 0x2e, 0x37, 0x23, 0xe5, 0x6a, 0x80, 0x16, 0xba, 0x9e, + 0x18, 0x15, 0xd2, 0x71, 0x99, 0x4e, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, + 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, + 0xc9, 0x4c, 0x4c, 0xee, 0xda, 0x3d, 0x0e, 0x77, 0xb6, 0x8c, 0x43, 0x90, 0x2d, 0xfb, 0xfa, 0x7e, 0xf4, 0xcf, 0x79, + 0x18, 0x23, 0x69, 0x2f, 0x9a, 0x82, 0x76, 0xbf, 0x23, 0x0f, 0x4f, 0x25, 0x5b, 0x43, 0x97, 0x46, 0xa8, 0x88, 0x6f, + 0xb8, 0xac, 0xb7, 0x87, 0x97, 0x7e, 0x8a, 0x3c, 0x54, 0x1b, 0x62, 0xda, 0x4c, 0x1f, 0x71, 0x8a, 0x16, 0xf3, 0x8f, + 0x3b, 0x9f, 0x8e, 0xd8, 0x93, 0x54, 0x6c, 0x2d, 0x57, 0x3c, 0xba, 0xb0, 0x2c, 0xe9, 0xf3, 0x5a, 0xa7, 0x92, 0x6a, + 0x55, 0x20, 0xfa, 0x09, 0x77, 0x66, 0x66, 0xdc, 0x8b, 0x18, 0x39, 0xe3, 0x2b, 0x11, 0x15, 0x72, 0x7a, 0xe9, 0xf2, + 0x27, 0x5d, 0x05, 0xaa, 0x8e, 0x5c, 0x4a, 0x06, 0x1a, 0x97, 0x0e, 0x59, 0x08, 0x30, 0xaf, 0x30, 0x30, 0x7d, 0xa5, + 0xd0, 0x36, 0xed, 0xdc, 0xdc, 0x03, 0x05, 0x6f, 0x3a, 0xb6, 0xac, 0x5a, 0xa9, 0x2b, 0x2d, 0x98, 0xb3, 0x7d, 0xdb, + 0xa1, 0xbe, 0x54, 0x51, 0x99, 0xa5, 0x39, 0x7e, 0xbb, 0x44, 0x0a, 0xf8, 0x46, 0xa2, 0x06, 0xce, 0x70, 0x38, 0xde, + 0x2a, 0x5a, 0xc2, 0x9f, 0x8a, 0xef, 0x7f, 0x2f, 0x44, 0x8b, 0x82, 0x1f, 0xd5, 0xce, 0x4a, 0xd9, 0xce, 0xca, 0xc9, + 0xc9, 0xe6, 0xb7, 0x09, 0x5c, 0x1e, 0x9b, 0xde, 0x43, 0xd2, 0x16, 0xd8, 0x47, 0x39, 0xb6, 0xa5, 0x32, 0xf6, 0x24, + 0xaa, 0x25, 0x98, 0x46, 0x84, 0xe3, 0xfb, 0x8d, 0xc8, 0x65, 0x3b, 0xf7, 0x0e, 0xb3, 0x2c, 0xef, 0x47, 0x03, 0xbf, + 0x18, 0x73, 0x8c, 0x0a, 0xf8, 0x18, 0xe6, 0xd9, 0xd8, 0xce, 0xef, 0x3c, 0xa6, 0xa6, 0x14, 0xcf, 0xe5, 0x8f, 0x40, + 0x62, 0x25, 0x59, 0x7b, 0xd7, 0x79, 0x36, 0x7d, 0x54, 0xe3, 0xa9, 0x20, 0x29, 0x80, 0x6f, 0x6e, 0xa6, 0x06, 0x9c, + 0x16, 0x78, 0x4d, 0xd9, 0xfa, 0xa8, 0x4f, 0xed, 0x4a, 0x03, 0x25, 0xad, 0xe2, 0x93, 0xfd, 0x38, 0x41, 0xf0, 0x29, + 0xbd, 0x73, 0x9e, 0x43, 0xab, 0xa6, 0xd1, 0xdf, 0xc9, 0x54, 0xf5, 0x3a, 0x82, 0xd5, 0xfd, 0x9d, 0xdf, 0x56, 0xd5, + 0xbf, 0x2c, 0x33, 0x83, 0xc2, 0xeb, 0xc7, 0x89, 0x31, 0xf6, 0x00, 0x28, 0x0c, 0xa3, 0x99, 0xf3, 0x9d, 0x64, 0x58, + 0xf3, 0x9e, 0x7d, 0x2d, 0xd5, 0x2a, 0xb7, 0x01, 0x42, 0x24, 0x23, 0xe0, 0x5f, 0x67, 0x01, 0x38, 0x22, 0xbe, 0x1e, + 0x62, 0x10, 0x58, 0x65, 0x7d, 0x80, 0x33, 0x01, 0xfc, 0xa4, 0xea, 0x51, 0x82, 0x61, 0xec, 0x24, 0x61, 0xe3, 0xcd, + 0x01, 0xab, 0xa8, 0x52, 0xfc, 0x57, 0xcc, 0xd7, 0x77, 0x51, 0x24, 0x2a, 0x54, 0xcf, 0x43, 0x6e, 0x76, 0x92, 0xd4, + 0x0a, 0x78, 0x9e, 0x5e, 0xef, 0x48, 0x9a, 0x17, 0x11, 0x1c, 0x7f, 0xfd, 0x54, 0x37, 0xe0, 0xab, 0xae, 0x2c, 0x5b, + 0x96, 0x75, 0x3f, 0x66, 0x5a, 0xc3, 0xdd, 0x4a, 0x76, 0x1a, 0x21, 0x02, 0xb1, 0xd8, 0xf5, 0xb4, 0x0d, 0x4d, 0x91, + 0x38, 0x8e, 0x43, 0x52, 0x3c, 0x91, 0xf6, 0x6c, 0x75, 0x12, 0x8f, 0xd5, 0x11, 0x25, 0xd2, 0x5d, 0x29, 0x7d, 0x01, + 0xf6, 0x20, 0x38, 0x22, 0x06, 0xfb, 0x8b, 0x5f, 0xa9, 0x2d, 0x87, 0xc5, 0x0d, 0x1d, 0xe5, 0xfb, 0xbe, 0x4f, 0xbf, + 0xda, 0xad, 0x82, 0x19, 0x27, 0x63, 0xea, 0x51, 0x3a, 0x73, 0x1f, 0x7e, 0xe4, 0x2b, 0x59, 0x8d, 0xc6, 0x11, 0xfd, + 0x6e, 0x1f, 0xf6, 0x2e, 0x7e, 0x4d, 0x5c, 0xd9, 0x15, 0xb6, 0x18, 0x9d, 0x55, 0x76, 0xb0, 0xcd, 0xf1, 0xd6, 0x28, + 0x77, 0x58, 0x30, 0xd8, 0x15, 0x6b, 0xcb, 0xdb, 0xbf, 0x13, 0x2d, 0xef, 0x3f, 0xe3, 0xf5, 0x9c, 0xae, 0xdb, 0x1a, + 0x76, 0x60, 0x10, 0xd8, 0xc6, 0xa7, 0xcf, 0xe5, 0x35, 0x3e, 0x61, 0xc5, 0x04, 0xc0, 0x08, 0x8b, 0xe5, 0x64, 0x1b, + 0x5a, 0x62, 0x0e, 0x6d, 0xda, 0xc5, 0x1b, 0xdd, 0x92, 0x12, 0x03, 0x10, 0x79, 0xa6, 0xb4, 0x41, 0x62, 0x9d, 0x66, + 0xc0, 0xcc, 0x84, 0x0c, 0xb1, 0x89, 0x57, 0x78, 0x2b, 0x23, 0x09, 0x15, 0x08, 0x23, 0x68, 0x09, 0xdf, 0x89, 0x0d, + 0xda, 0xe2, 0x70, 0xc1, 0xaf, 0x2a, 0x25, 0xf6, 0xca, 0x3d, 0xfb, 0xb8, 0x05, 0x41, 0x11, 0x01, 0x5f, 0x23, 0xf5, + 0x15, 0x72, 0x4e, 0x1b, 0x85, 0x35, 0x35, 0x18, 0xaf, 0x60, 0xee, 0x13, 0xb6, 0xc2, 0x28, 0x3b, 0x22, 0x62, 0x14, + 0xe4, 0x0b, 0xac, 0x65, 0x7e, 0x2c, 0x05, 0x9f, 0x79, 0xa1, 0x2a, 0x76, 0x64, 0xb6, 0xa2, 0x88, 0x52, 0x3e, 0x20, + 0x65, 0x47, 0xe9, 0x92, 0x2c, 0x89, 0xc5, 0xa7, 0xad, 0x19, 0x43, 0xf9, 0x2f, 0xf6, 0x9b, 0x46, 0x9a, 0xa1, 0xc9, + 0x08, 0x40, 0x6e, 0xd2, 0x3f, 0xb2, 0xaf, 0x67, 0xee, 0x12, 0x23, 0xcb, 0x21, 0x86, 0x5d, 0x3f, 0x5e, 0xee, 0x9d, + 0x9f, 0x59, 0x16, 0x85, 0x36, 0xb6, 0x91, 0x0e, 0x2a, 0xa7, 0x8b, 0x32, 0x40, 0x2f, 0x1b, 0xe4, 0x72, 0x62, 0x45, + 0x26, 0x25, 0x6e, 0xa1, 0xad, 0x0c, 0x11, 0x13, 0xd1, 0x0c, 0xca, 0xe9, 0x6d, 0xfe, 0x1f, 0x29, 0x53, 0xef, 0xbd, + 0x59, 0x3c, 0xd6, 0xa4, 0x57, 0x07, 0x09, 0x35, 0xbe, 0x98, 0xa4, 0x9a, 0xec, 0x39, 0x3b, 0x28, 0x4c, 0x13, 0xc9, + 0x69, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, + 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xb6, 0x35, 0xf0, 0xde, 0x37, + 0x17, 0xb6, 0x74, 0x3b, 0x3f, 0xa6, 0x41, 0x7c, 0xba, 0xf3, 0x5b, 0x94, 0x9f, 0x13, 0xb4, 0x2d, 0x1d, 0x29, 0xf6, + 0x39, 0xed, 0x6f, 0xc2, 0x06, 0x7c, 0x00, 0x1e, 0x4b, 0xa2, 0xc2, 0x75, 0x15, 0xc5, 0xaf, 0x2b, 0x08, 0xd4, 0x3a, + 0x0a, 0xde, 0x83, 0x97, 0xa3, 0x69, 0x82, 0xb4, 0x57, 0x14, 0xc7, 0x04, 0x9f, 0x64, 0x35, 0x6c, 0x01, 0x01, 0x91, + 0x6a, 0x62, 0xce, 0xee, 0x66, 0x75, 0xf5, 0xf9, 0x82, 0x02, 0xa6, 0x7c, 0x55, 0xd0, 0xdc, 0x62, 0x45, 0xc5, 0x87, + 0x1e, 0x2f, 0xcb, 0xdd, 0x87, 0xf2, 0x1d, 0x1b, 0x0e, 0x98, 0x88, 0xf1, 0x23, 0x43, 0x08, 0x08, 0x77, 0xc7, 0x05, + 0x03, 0x96, 0xab, 0xeb, 0xe3, 0xf7, 0x18, 0xd0, 0xf5, 0x25, 0x52, 0x60, 0x86, 0xea, 0xcd, 0x28, 0x28, 0xca, 0x0a, + 0xa1, 0x7f, 0x5e, 0xe0, 0xa6, 0x82, 0x43, 0x54, 0x23, 0xfe, 0x23, 0xba, 0xde, 0x8d, 0xb1, 0x7a, 0x42, 0xed, 0x09, + 0xd1, 0x1c, 0xc4, 0x77, 0x02, 0x42, 0x9c, 0x45, 0xaf, 0x1e, 0xd7, 0x4f, 0xe4, 0xc0, 0xf9, 0xc1, 0x76, 0xcf, 0x78, + 0x28, 0x35, 0x73, 0xcb, 0xb4, 0xec, 0x11, 0xe3, 0xad, 0x39, 0x5a, 0x4e, 0xeb, 0x8a, 0x5d, 0xb2, 0x2c, 0x25, 0xe8, + 0x62, 0x9c, 0xcf, 0xfb, 0x9a, 0xad, 0xdf, 0x16, 0x61, 0x1a, 0xa4, 0xb5, 0xaa, 0x9c, 0x08, 0x39, 0x03, 0x76, 0x83, + 0x9e, 0xf1, 0x22, 0x25, 0xc9, 0xca, 0xd4, 0x8e, 0x19, 0x83, 0x27, 0x4f, 0xe4, 0x4c, 0x74, 0x2d, 0xea, 0x5b, 0xa2, + 0x14, 0x50, 0x94, 0x8e, 0x37, 0xb7, 0xa5, 0x0d, 0xee, 0x64, 0xa0, 0x73, 0x84, 0x84, 0xf8, 0x0a, 0xcb, 0xa0, 0x24, + 0xc8, 0x8c, 0xb8, 0x9c, 0x54, 0xf6, 0x0e, 0xa1, 0xc8, 0xfc, 0xfe, 0xfe, 0x32, 0xa2, 0x51, 0x7b, 0x03, 0x8e, 0x23, + 0x71, 0x01, 0x82, 0x29, 0xa5, 0xbc, 0x60, 0x75, 0x19, 0xa8, 0xf1, 0xfd, 0x0f, 0xb8, 0x1e, 0x08, 0x29, 0x39, 0xf2, + 0x37, 0x4b, 0x6b, 0x99, 0xa6, 0x8a, 0x71, 0xbd, 0x4b, 0x1b, 0x34, 0x55, 0xdd, 0x74, 0xed, 0x7e, 0x61, 0x6c, 0x6d, + 0x75, 0x2d, 0xe7, 0x9c, 0x2c, 0xb7, 0x8e, 0x0e, 0xba, 0xb6, 0x5c, 0x87, 0xca, 0x2b, 0x61, 0x4b, 0xd8, 0x2a, 0x72, + 0xab, 0x09, 0x3d, 0xd6, 0x13, 0xc8, 0xad, 0xd6, 0xbf, 0xaa, 0x28, 0xcd, 0xfb, 0x60, 0x6f, 0x0e, 0x25, 0x22, 0x6d, + 0xfc, 0x30, 0x1e, 0x0b, 0xaa, 0xa2, 0xc4, 0x9c, 0xf5, 0x07, 0xdf, 0x0a, 0xa0, 0xac, 0x8e, 0x15, 0x56, 0x32, 0xb1, + 0xaf, 0x26, 0xf6, 0x5e, 0x42, 0xa9, 0x7d, 0x5c, 0xd7, 0x44, 0x68, 0x5c, 0xca, 0xbc, 0x44, 0x7c, 0x6e, 0xed, 0x89, + 0x21, 0xe8, 0x83, 0x1e, 0x1c, 0x3c, 0x7a, 0xf2, 0x53, 0x85, 0xc4, 0xf5, 0x21, 0xbe, 0x30, 0x1e, 0x39, 0x66, 0x6a, + 0x65, 0xd7, 0xae, 0xa8, 0x93, 0xf1, 0xa4, 0xf4, 0x4a, 0xb1, 0x92, 0x9e, 0x14, 0xcc, 0xf0, 0xe2, 0x4b, 0x71, 0xbd, + 0x7a, 0xa2, 0x8d, 0x48, 0x2d, 0x23, 0x36, 0x02, 0x62, 0x36, 0x02, 0x3d, 0x83, 0x06, 0xfc, 0x9d, 0xaa, 0x53, 0xe2, + 0x9b, 0xc5, 0x74, 0x66, 0xe5, 0x51, 0x3d, 0xa9, 0x6c, 0xc0, 0x4f, 0x54, 0x25, 0x79, 0xbf, 0xed, 0x0b, 0x2d, 0x0e, + 0xf8, 0x16, 0x28, 0xdd, 0xd1, 0x38, 0xd8, 0x94, 0x24, 0x6e, 0x7b, 0xf9, 0x6e, 0xc6, 0x72, 0xfd, 0xa1, 0x83, 0x6e, + 0x41, 0xd4, 0xb4, 0xce, 0xa4, 0xa4, 0x0a, 0xf0, 0x2a, 0x25, 0xc8, 0x5c, 0x9d, 0x12, 0xe0, 0x0d, 0x58, 0x01, 0x1f, + 0xc2, 0x39, 0xb7, 0x16, 0x2a, 0x02, 0x43, 0x68, 0x59, 0x6b, 0x8c, 0x7e, 0x86, 0x8d, 0xfe, 0xc4, 0xd5, 0xdd, 0x4a, + 0xa0, 0x20, 0x58, 0xc9, 0x70, 0x56, 0xe8, 0x38, 0x45, 0xbf, 0x1d, 0x07, 0x6c, 0xed, 0xc1, 0xa6, 0x40, 0x78, 0x4c, + 0xe6, 0x80, 0x5d, 0x04, 0x00, 0x8b, 0x79, 0x4c, 0x4f, 0xb3, 0x3f, 0xb9, 0x8c, 0x6c, 0xbd, 0xff, 0xb0, 0x22, 0x5c, + 0xa9, 0x26, 0x96, 0x07, 0x38, 0x11, 0x12, 0xea, 0x8b, 0xf3, 0xa2, 0xb1, 0x04, 0x0b, 0x65, 0x7b, 0x43, 0xf1, 0xda, + 0xc4, 0x3b, 0x7d, 0xd6, 0xac, 0x4e, 0xf0, 0x13, 0x8e, 0x89, 0xc7, 0xa9, 0xbd, 0x61, 0x81, 0xc2, 0x1d, 0x94, 0xc3, + 0x2d, 0xe7, 0xef, 0x94, 0x7b, 0xf8, 0xc6, 0xd9, 0x4b, 0xd8, 0xf8, 0x29, 0x8f, 0x5d, 0xe2, 0x1e, 0x60, 0xc5, 0xf9, + 0xc8, 0x13, 0x97, 0x62, 0x41, 0x12, 0xa6, 0x48, 0x9e, 0x26, 0x1e, 0x51, 0xdf, 0x51, 0xa4, 0xcb, 0xd0, 0x16, 0xf6, + 0xf0, 0x98, 0x98, 0x10, 0x77, 0xfc, 0x8e, 0xc3, 0xcb, 0x49, 0xcf, 0x76, 0xfc, 0xc8, 0x8d, 0x05, 0xb3, 0xf3, 0x05, + 0xd1, 0x54, 0x63, 0x09, 0xc8, 0x03, 0x7a, 0x3a, 0x9d, 0x99, 0x7e, 0x45, 0xa9, 0x40, 0x6d, 0xc2, 0x7e, 0x1f, 0x3a, + 0x85, 0x12, 0xc2, 0xfb, 0x81, 0x5a, 0x7a, 0xf4, 0xc4, 0xec, 0x2e, 0x31, 0x13, 0xa9, 0x89, 0x09, 0xc6, 0x77, 0xd3, + 0x8e, 0x4b, 0xcb, 0x82, 0xd0, 0x3b, 0x2a, 0x0f, 0x18, 0xe1, 0x00, 0xb5, 0x4f, 0x36, 0xb4, 0x61, 0xe4, 0x25, 0x30, + 0x11, 0x86, 0x4f, 0x92, 0x3c, 0x2d, 0x2b, 0x63, 0x11, 0xa8, 0xd2, 0xc7, 0xf5, 0x47, 0x54, 0x01, 0x00, 0x00, 0xc0, + 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, + 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x8a, 0x0d, 0xf8, 0xb4, 0xcc, 0xfa, 0x5c, 0x01, 0xc7, 0xa9, + 0x25, 0x66, 0xc1, 0x12, 0x98, 0x06, 0x18, 0xf0, 0x0f, 0xbe, 0x36, 0x7e, 0x7d, 0x55, 0x78, 0x32, 0x47, 0x1a, 0xf9, + 0xca, 0xd5, 0x11, 0x55, 0xee, 0xa5, 0x2f, 0x80, 0xa6, 0x76, 0xbc, 0x08, 0x6e, 0x36, 0x47, 0x4e, 0x81, 0xd9, 0xc9, + 0x3a, 0x65, 0x22, 0x1e, 0x54, 0xd0, 0x87, 0x11, 0xda, 0xb6, 0xd2, 0xbe, 0x1b, 0x0b, 0x11, 0x46, 0x6e, 0x2b, 0x6a, + 0x33, 0x52, 0x7c, 0x9f, 0x5b, 0x74, 0x8e, 0x7f, 0x4f, 0xf7, 0x2a, 0x58, 0xd7, 0x8c, 0xc6, 0xa7, 0x19, 0x6f, 0x8d, + 0x6e, 0x81, 0xc0, 0xa0, 0x8c, 0xfe, 0x60, 0x54, 0x1f, 0x21, 0x01, 0x19, 0xa6, 0x0d, 0x31, 0xd1, 0xe3, 0x99, 0x04, + 0xfa, 0x59, 0x5a, 0xd8, 0xdf, 0x3e, 0xba, 0xab, 0x68, 0x24, 0x55, 0xb7, 0x06, 0x65, 0x58, 0xc1, 0x38, 0x9f, 0xc5, + 0x52, 0xa7, 0xed, 0x73, 0xc4, 0x73, 0x1a, 0x4c, 0x72, 0x7a, 0xb2, 0x65, 0x49, 0xd2, 0x4c, 0x82, 0x01, 0xd5, 0x69, + 0xeb, 0x56, 0xb4, 0x33, 0x6e, 0x40, 0x8d, 0x3d, 0x49, 0x31, 0x07, 0xa6, 0xc3, 0x32, 0xfa, 0x46, 0x1b, 0xd3, 0x0a, + 0xd6, 0x23, 0xe1, 0x0d, 0xcb, 0x3c, 0xa8, 0x90, 0xc0, 0x27, 0x8d, 0x6b, 0xa4, 0xfc, 0x00, 0x83, 0xcb, 0x28, 0x66, + 0xf3, 0xf7, 0xc0, 0xef, 0xe7, 0xec, 0x42, 0xa3, 0x3b, 0x75, 0x14, 0xa8, 0xdf, 0x37, 0x73, 0x98, 0x06, 0xc6, 0xc3, + 0x80, 0x73, 0x11, 0x78, 0xe8, 0xa0, 0x60, 0x14, 0x1c, 0xa4, 0xb8, 0x2e, 0x36, 0xc6, 0x8b, 0x8b, 0x30, 0x91, 0xad, + 0x9c, 0xbf, 0x8e, 0x02, 0x59, 0xc1, 0xf3, 0xd5, 0x0e, 0x13, 0xaa, 0x8c, 0x65, 0xcc, 0x9b, 0x46, 0x69, 0x75, 0x5b, + 0xa4, 0xbd, 0xe9, 0x9c, 0x6f, 0x96, 0x6d, 0xed, 0xfa, 0x31, 0x5b, 0x0f, 0x05, 0x96, 0x9d, 0x72, 0x04, 0x2f, 0x12, + 0xa8, 0xe4, 0xa5, 0x1d, 0xb8, 0x84, 0x27, 0x2a, 0x4e, 0xb9, 0x51, 0x75, 0x37, 0x12, 0x72, 0x11, 0x12, 0x40, 0x40, + 0xc7, 0x56, 0xb2, 0xf5, 0xc1, 0x4d, 0xf6, 0x46, 0x3a, 0xda, 0x92, 0x5b, 0x65, 0x04, 0xeb, 0x27, 0x82, 0x00, 0x8d, + 0xfc, 0x50, 0xfe, 0xc7, 0x7f, 0x03, 0x6f, 0xa4, 0x25, 0x6c, 0x97, 0x73, 0xb7, 0x53, 0x88, 0x5b, 0xf8, 0xc9, 0x88, + 0x74, 0xd1, 0x10, 0x22, 0x76, 0x00, 0xfd, 0x4d, 0xe6, 0xd9, 0x9f, 0x17, 0x5a, 0xc9, 0x4a, 0xb2, 0xc8, 0xf4, 0x0a, + 0x64, 0x4f, 0x2c, 0x02, 0x86, 0x3c, 0xc8, 0xff, 0xc2, 0xd8, 0x94, 0xad, 0xf6, 0xc3, 0xe4, 0xa5, 0x41, 0xb0, 0x3b, + 0xd5, 0xcc, 0x9b, 0x24, 0xb5, 0xa4, 0x3a, 0x0f, 0xe0, 0x2d, 0x8e, 0x03, 0xe8, 0x1b, 0xd7, 0x3a, 0xf9, 0xd8, 0x53, + 0x07, 0xa8, 0x17, 0x49, 0xa6, 0x94, 0x7a, 0xd3, 0x34, 0xba, 0xd6, 0xd5, 0x6e, 0xb8, 0xcd, 0xfa, 0x06, 0x84, 0x39, + 0xe7, 0xaf, 0x92, 0x0b, 0xc5, 0x45, 0x13, 0x27, 0x85, 0x7f, 0x78, 0x4f, 0x3d, 0x3d, 0x93, 0x80, 0x6d, 0x3a, 0xd0, + 0xeb, 0xe8, 0xce, 0x07, 0x38, 0xd7, 0x71, 0x93, 0x60, 0x13, 0xd1, 0x5c, 0x95, 0x39, 0x37, 0x71, 0x03, 0xbb, 0x7b, + 0xcc, 0xd3, 0x41, 0x64, 0x16, 0x41, 0x0b, 0x4d, 0x25, 0x5e, 0x78, 0x5f, 0xae, 0x26, 0xd2, 0xc3, 0x51, 0xfd, 0x1f, + 0x14, 0x28, 0xac, 0x02, 0xea, 0xc2, 0x96, 0xda, 0xd9, 0x30, 0x60, 0x11, 0x1b, 0xa2, 0x98, 0x3d, 0x96, 0xcf, 0x34, + 0x4c, 0xb3, 0x13, 0x9f, 0xed, 0x7d, 0x90, 0x7b, 0x14, 0x6e, 0x7f, 0x20, 0x76, 0x3e, 0xc7, 0x15, 0x81, 0x1c, 0x0a, + 0x35, 0xa3, 0x00, 0xd8, 0x6b, 0x42, 0x12, 0x36, 0xfa, 0x25, 0xa7, 0xf9, 0x6e, 0x7f, 0xf3, 0xa3, 0xc0, 0x87, 0xeb, + 0xca, 0x1d, 0x16, 0x51, 0x5f, 0x86, 0x13, 0x23, 0x93, 0x8d, 0x5f, 0x1e, 0x7e, 0x58, 0xe0, 0x09, 0x63, 0x22, 0x66, + 0x1a, 0xa8, 0x9e, 0x5d, 0xce, 0x53, 0xe0, 0x70, 0xcd, 0x0c, 0xb6, 0x3c, 0xd8, 0x78, 0xb2, 0xcb, 0x31, 0xf1, 0x0e, + 0xf2, 0x6f, 0x1d, 0xd4, 0xab, 0x4e, 0x3b, 0x58, 0xb2, 0xbf, 0x15, 0x63, 0x32, 0x5a, 0x43, 0x85, 0x0a, 0x92, 0x8e, + 0xe2, 0x67, 0x25, 0x44, 0x9d, 0xf3, 0xf2, 0x5c, 0x3a, 0x9b, 0xb7, 0xd3, 0x00, 0x44, 0x2f, 0xb9, 0xc0, 0x81, 0x14, + 0x81, 0xca, 0xaa, 0x20, 0xe4, 0xd9, 0xe8, 0xa2, 0xf6, 0x2e, 0x94, 0xba, 0x9f, 0x2b, 0xfd, 0x4d, 0x60, 0x60, 0xa2, + 0xbd, 0x45, 0x14, 0x34, 0x97, 0xee, 0x5d, 0xbe, 0x44, 0x04, 0xaf, 0x9a, 0x01, 0x25, 0x70, 0x9d, 0xed, 0x88, 0xea, + 0x6c, 0xef, 0xec, 0x92, 0xca, 0x29, 0x49, 0x14, 0xa2, 0xe6, 0xf8, 0x47, 0x32, 0xe1, 0x96, 0xf9, 0x82, 0x31, 0x24, + 0x2c, 0x73, 0x3d, 0xf0, 0xf4, 0xc5, 0x2d, 0xba, 0x19, 0x0c, 0x23, 0xad, 0x7b, 0xe2, 0xe3, 0x1e, 0xd1, 0x1e, 0xf9, + 0x5a, 0x31, 0xac, 0x19, 0xba, 0x7c, 0xb6, 0x2f, 0x2b, 0x1c, 0xc6, 0x4c, 0xa2, 0x73, 0xc3, 0x35, 0xbc, 0xf1, 0x97, + 0xbb, 0x11, 0x4d, 0x8c, 0x0b, 0xe0, 0x9e, 0x39, 0x22, 0xc1, 0xc1, 0x9e, 0xb9, 0x16, 0x7d, 0xf5, 0x86, 0xd1, 0xc0, + 0xe8, 0x27, 0xac, 0x3c, 0xd3, 0x2b, 0x0b, 0xaa, 0x02, 0x2c, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, + 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, + 0x0c, 0x84, 0x44, 0x6a, 0xd9, 0x6b, 0x78, 0x4e, 0x0f, 0xc1, 0x78, 0x06, 0x04, 0xed, 0xc7, 0x59, 0x82, 0x0a, 0xce, + 0x83, 0xfc, 0xe7, 0xb4, 0x03, 0xc8, 0x66, 0x8c, 0x9d, 0xa5, 0x92, 0x3c, 0xc1, 0x6e, 0x7b, 0x96, 0x2c, 0x4f, 0x01, + 0xff, 0x82, 0x6f, 0x29, 0x91, 0xba, 0xb6, 0x62, 0xbb, 0x44, 0x59, 0x5d, 0x0d, 0x6c, 0x15, 0x75, 0x30, 0x02, 0x78, + 0x0a, 0x21, 0xf8, 0xfc, 0x57, 0x24, 0xa7, 0x75, 0xb0, 0xc0, 0x1a, 0xdc, 0x3c, 0x38, 0xcc, 0x49, 0xae, 0x74, 0x92, + 0xd9, 0x2f, 0xba, 0xfa, 0x70, 0x73, 0xd2, 0xbf, 0xf1, 0xac, 0x2e, 0xe1, 0x96, 0xc4, 0x8e, 0xaf, 0x04, 0x23, 0xa3, + 0xce, 0xc1, 0xa8, 0x3e, 0x42, 0x2e, 0x52, 0x76, 0xac, 0x37, 0xe9, 0x8a, 0xa6, 0xc4, 0xd4, 0x9d, 0x0e, 0xed, 0x6a, + 0x0e, 0xb8, 0x7d, 0x4d, 0x64, 0x6f, 0x4b, 0x62, 0xc7, 0x57, 0x82, 0x91, 0x51, 0xe7, 0x60, 0x54, 0x1f, 0x21, 0xe2, + 0xac, 0x63, 0xce, 0x15, 0x4b, 0x2a, 0x11, 0x25, 0xfd, 0xbf, 0xa8, 0x74, 0xe2, 0xe4, 0xba, 0xe8, 0x4d, 0x74, 0x5e, + 0x6a, 0x19, 0x52, 0x51, 0xdb, 0x2c, 0xb8, 0xd7, 0x18, 0x7d, 0xa3, 0x0d, 0x81, 0xea, 0x7a, 0x3f, 0x2a, 0x4a, 0x42, + 0x90, 0x1f, 0xa7, 0xc4, 0x85, 0xb3, 0x71, 0xa3, 0x52, 0x09, 0x89, 0x1f, 0x04, 0x08, 0xd8, 0x39, 0x33, 0x48, 0x7d, + 0x9d, 0x29, 0x53, 0xa7, 0xed, 0x73, 0x45, 0x84, 0xca, 0x9b, 0x50, 0x78, 0xaf, 0x09, 0x85, 0x21, 0x2c, 0x70, 0x8a, + 0x97, 0xf3, 0x5b, 0xb2, 0xfc, 0x9b, 0x1d, 0x74, 0x32, 0x0c, 0xbb, 0x05, 0x70, 0x4f, 0x04, 0x1e, 0x38, 0x62, 0x05, + 0x50, 0xb4, 0xea, 0x98, 0xe2, 0x8d, 0x38, 0x26, 0x75, 0x7d, 0x38, 0x09, 0xcd, 0xfe, 0xce, 0x19, 0xcc, 0xed, 0x73, + 0xab, 0x38, 0x55, 0xdc, 0x43, 0x1c, 0xcd, 0x91, 0x08, 0x6d, 0x4e, 0xa7, 0x4a, 0x04, 0x08, 0xfc, 0xff, 0xe5, 0xdd, + 0xe5, 0x40, 0xf2, 0x1c, 0x2b, 0x3b, 0x9c, 0xfc, 0xd1, 0x03, 0xe2, 0x14, 0x3b, 0x0f, 0x09, 0x1f, 0x0d, 0x30, 0x33, + 0x8d, 0xcf, 0x19, 0xe5, 0x2e, 0x30, 0x60, 0xd2, 0x34, 0x0b, 0x44, 0x30, 0xee, 0x78, 0xe7, 0x6d, 0xa2, 0x5b, 0x3d, + 0x61, 0x00, 0xc8, 0x38, 0xc6, 0x2f, 0x47, 0xcf, 0x8b, 0x17, 0xdb, 0x85, 0xfb, 0x75, 0x6f, 0xd4, 0xb8, 0x6a, 0x89, + 0x09, 0x83, 0x40, 0x3d, 0xf7, 0x24, 0x65, 0x78, 0xaa, 0xc8, 0xd8, 0xcf, 0x11, 0x25, 0xae, 0xd8, 0x6a, 0xcb, 0x77, + 0xae, 0x06, 0xdc, 0xea, 0xca, 0xe5, 0x5f, 0x6a, 0x4b, 0x94, 0xbc, 0x49, 0xb0, 0x5a, 0x4b, 0xec, 0xdf, 0x5f, 0x4d, + 0xbf, 0x55, 0x7c, 0x14, 0x74, 0x86, 0x30, 0xf4, 0xa6, 0x49, 0x25, 0x6b, 0x45, 0x60, 0x41, 0x6b, 0x5f, 0x94, 0xfb, + 0xf9, 0x75, 0x39, 0xeb, 0xe2, 0xe5, 0xe6, 0x60, 0x3f, 0x09, 0x69, 0xd3, 0xa4, 0xf9, 0x22, 0x5c, 0x43, 0x06, 0x74, + 0x82, 0xae, 0x5a, 0x93, 0x91, 0x57, 0xc1, 0xd6, 0x4e, 0x1a, 0x4f, 0x26, 0x5a, 0xc2, 0x5b, 0x60, 0x6c, 0x5e, 0x5e, + 0xbf, 0x36, 0x87, 0xb3, 0xab, 0xc4, 0x3f, 0xc6, 0xd7, 0xb3, 0xe4, 0xce, 0x5c, 0x65, 0x53, 0x5a, 0x29, 0x20, 0xcf, + 0x70, 0x75, 0xc1, 0xbb, 0xb4, 0xd4, 0x32, 0x4c, 0x13, 0x7f, 0x4c, 0x7e, 0x10, 0xe0, 0x70, 0xab, 0xa7, 0x62, 0x22, + 0x37, 0x4f, 0x5a, 0x89, 0x37, 0xed, 0xd8, 0x6f, 0xd7, 0x89, 0x2c, 0x53, 0x55, 0x5f, 0xbb, 0x2c, 0x44, 0xb8, 0xec, + 0x7a, 0x94, 0xd6, 0x14, 0x22, 0x1d, 0x63, 0x80, 0x59, 0x90, 0x2f, 0x4a, 0x37, 0xc5, 0xc4, 0x03, 0x5f, 0x66, 0x16, + 0xa8, 0x20, 0x72, 0x84, 0xb0, 0xac, 0x9f, 0x79, 0x5d, 0x79, 0xfc, 0x13, 0xf0, 0xbb, 0x08, 0xb5, 0x62, 0x3b, 0xbb, + 0xfe, 0x6b, 0x4d, 0x68, 0x7f, 0xd9, 0xc9, 0xa3, 0x0c, 0x10, 0x43, 0x23, 0x59, 0x23, 0xc8, 0x77, 0xb5, 0x78, 0x2e, + 0xeb, 0x5a, 0xd4, 0xd6, 0xdb, 0x60, 0x15, 0x09, 0x20, 0x5d, 0xbb, 0x4b, 0x4f, 0x65, 0x94, 0x6e, 0x31, 0xc3, 0x6f, + 0x8a, 0xeb, 0x13, 0xbb, 0xed, 0xbf, 0xa4, 0x73, 0x3e, 0x11, 0x7f, 0x8e, 0xb8, 0x12, 0xa3, 0x38, 0x2d, 0x5c, 0xc4, + 0x4f, 0x18, 0x10, 0x82, 0x27, 0x5e, 0x0b, 0xe2, 0x5d, 0x16, 0x2e, 0x3f, 0xe2, 0x19, 0x1f, 0x6c, 0x35, 0x46, 0xb8, + 0x8e, 0x97, 0x82, 0x90, 0xc6, 0xa0, 0x58, 0x0a, 0xe9, 0x0d, 0x94, 0x69, 0xb4, 0x32, 0xbb, 0x48, 0x53, 0x91, 0xfb, + 0x90, 0xdf, 0xbf, 0x69, 0x1e, 0x4f, 0x59, 0x32, 0xcd, 0x41, 0x22, 0xc1, 0x77, 0x70, 0x2f, 0xe6, 0xdf, 0x48, 0x32, + 0x02, 0xb4, 0x92, 0x8b, 0xc9, 0x83, 0x10, 0xe5, 0x2c, 0xb8, 0x0b, 0x36, 0x63, 0x30, 0x9a, 0xbe, 0x62, 0x10, 0x59, + 0x1a, 0x6a, 0xb1, 0x51, 0x20, 0xd7, 0xef, 0x13, 0x3f, 0xab, 0x9b, 0x65, 0xf5, 0xf9, 0x63, 0xd7, 0xa0, 0xcb, 0x7a, + 0x3b, 0xfb, 0xba, 0xb1, 0x91, 0xce, 0x62, 0x46, 0xd3, 0x52, 0x09, 0xf7, 0xfb, 0x89, 0x23, 0x8d, 0x47, 0x34, 0x1a, + 0xdb, 0xb7, 0x59, 0x15, 0x37, 0x4a, 0x9d, 0x93, 0xe9, 0xc7, 0x80, 0x7c, 0xae, 0x64, 0xa4, 0x81, 0xb5, 0x6d, 0xfb, + 0x80, 0x23, 0x22, 0xce, 0x70, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, + 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xc0, + 0x07, 0x4e, 0x2b, 0x84, 0x9d, 0x5c, 0x05, 0x64, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9b, 0x55, 0xca, 0x02, 0xa2, 0x96, 0x32, + 0xc8, 0x0e, 0x5d, 0xbb, 0xc7, 0x6c, 0x7a, 0x8a, 0x9c, 0x68, 0x1c, 0x2d, 0x4f, 0x6a, 0x1c, 0x35, 0x0f, 0x8a, 0x5c, + 0xd0, 0x0e, 0xad, 0x4c, 0x9d, 0x48, 0x40, 0xdb, 0x66, 0x56, 0x84, 0x81, 0x55, 0xb7, 0xfa, 0xaf, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5e, 0x03, 0x4a, 0xdb, 0x34, 0x96, 0x7e, 0x28, 0x95, 0x59, 0x69, 0xdb, 0x94, 0x8c, 0xa2, 0xfe, 0xdf, 0x26, 0x66, + 0x51, 0xe2, 0x26, 0x56, 0x07, 0x87, 0xb4, 0xf4, 0xb5, 0x22, 0xfd, 0x5d, 0x63, 0xb5, 0x1c, 0x02, 0xbe, 0x7c, 0x25, + 0xdf, 0xa8, 0xbe, 0xaf, 0x07, 0x00, 0x1f, 0x12, 0x83, 0xfa, 0x6a, 0x21, 0xb7, 0xe4, 0x89, 0x3f, 0x4d, 0x4b, 0x24, + 0x70, 0x4c, 0x1b, 0xbe, 0xb8, 0x18, 0x22, 0x84, 0xbf, 0x50, 0xc8, 0xa5, 0xb9, 0x11, 0xf7, 0x97, 0x74, 0xf0, 0xff, + 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, + 0x1b, 0x80, 0x46, 0x93, 0x17, 0x3b, 0x7a, 0xc5, 0x4b, 0x0f, 0xf2, 0x3a, 0xaf, 0x21, 0xdd, 0x29, 0x0e, 0x88, 0x5d, + 0x52, 0xe3, 0x22, 0x48, 0x9b, 0xb3, 0xfd, 0xcc, 0x94, 0xf1, 0xcc, 0xcd, 0xf0, 0x2d, 0x1b, 0x76, 0x71, 0x14, 0x0a, + 0xfa, 0xf7, 0x8e, 0xef, 0x62, 0x31, 0x79, 0x8e, 0xfc, 0x84, 0x33, 0x8f, 0x8e, 0x14, 0x7e, 0xe7, 0x6a, 0x6b, 0x3c, + 0x14, 0x2a, 0xd7, 0xf5, 0x1b, 0xe4, 0x35, 0x73, 0xe5, 0x1f, 0xf9, 0xb1, 0x6c, 0xf3, 0x4e, 0xe3, 0x44, 0x99, 0xb8, + 0x54, 0xf3, 0x1b, 0x84, 0x10, 0x4c, 0x17, 0x97, 0xf3, 0x76, 0xc6, 0x30, 0xb9, 0xc0, 0x77, 0x0a, 0xee, 0x77, 0xf8, + 0x77, 0x69, 0x7b, 0x90, 0x10, 0x1f, 0xe1, 0x6d, 0x8f, 0xfa, 0x18, 0x36, 0x9e, 0xbc, 0x37, 0xf5, 0x80, 0x1c, 0x92, + 0xb6, 0xae, 0xcc, 0xae, 0x15, 0x8f, 0xf8, 0xf7, 0x5c, 0x45, 0xed, 0xae, 0x95, 0x8e, 0x28, 0x50, 0xd4, 0x9a, 0x03, + 0xec, 0x89, 0x87, 0x2e, 0x54, 0x21, 0x7f, 0xd8, 0x37, 0x4a, 0x1b, 0x0e, 0x0e, 0x27, 0x54, 0x48, 0x0b, 0x0f, 0xf9, + 0x08, 0x67, 0x36, 0x5d, 0xdd, 0xbe, 0xc7, 0xdb, 0x51, 0x3c, 0xb1, 0x13, 0xdb, 0xe4, 0x5b, 0xbe, 0x85, 0x0f, 0xb9, + 0xdd, 0x12, 0x13, 0xd4, 0x2a, 0x4b, 0x0b, 0x3a, 0x8d, 0x08, 0x63, 0x8f, 0x9b, 0x3a, 0x2d, 0x7d, 0x96, 0x86, 0xfd, + 0x6d, 0xec, 0x66, 0xfc, 0x18, 0xf6, 0xd7, 0xfa, 0x53, 0xd9, 0x3e, 0xdc, 0x2b, 0xad, 0x84, 0x98, 0x46, 0xd2, 0x0e, + 0xcd, 0xb6, 0x8b, 0xf2, 0x50, 0x85, 0x95, 0x56, 0x7f, 0x3a, 0xdf, 0x10, 0x18, 0x91, 0x5c, 0x5d, 0xeb, 0x3f, 0x98, + 0xfd, 0x6c, 0x3f, 0x5d, 0x1a, 0x86, 0x91, 0x59, 0x3b, 0x7b, 0xf1, 0xb5, 0x95, 0x79, 0xb3, 0xa6, 0x3b, 0xc6, 0x31, + 0x1b, 0x3f, 0x0e, 0xeb, 0x14, 0x6b, 0xa9, 0x6d, 0x80, 0x42, 0x62, 0x4c, 0xf9, 0xb3, 0xb7, 0xa3, 0x5d, 0xe8, 0x1c, + 0xf9, 0x07, 0xd7, 0x82, 0xfb, 0x75, 0x86, 0x31, 0x0e, 0xf7, 0x6f, 0xe1, 0x1f, 0x9e, 0x7a, 0x4f, 0x20, 0x85, 0x00, + 0x92, 0x05, 0xeb, 0x2d, 0xcb, 0x10, 0xb1, 0x18, 0xd1, 0x36, 0x4f, 0xd2, 0x9b, 0x07, 0x5d, 0x68, 0x88, 0x50, 0x92, + 0x81, 0x8f, 0xa7, 0x9a, 0x8b, 0x93, 0x91, 0x54, 0xec, 0xf2, 0x75, 0x96, 0x8c, 0x09, 0x1f, 0xe3, 0x73, 0x95, 0x3c, + 0x0a, 0x70, 0xd2, 0xea, 0x57, 0x62, 0xf2, 0x52, 0xa9, 0xe2, 0xcb, 0xde, 0xbd, 0x3c, 0xf8, 0x49, 0xe9, 0xf3, 0x23, + 0x0d, 0x40, 0x98, 0x07, 0x7c, 0x04, 0xc6, 0x55, 0x58, 0x6d, 0x20, 0x9d, 0x2c, 0x6f, 0x46, 0xf0, 0x8b, 0x00, 0xc9, + 0xd1, 0xca, 0xb5, 0x3a, 0x7f, 0xdf, 0x7d, 0xc0, 0x94, 0xd2, 0x96, 0xab, 0x24, 0x1a, 0xad, 0x6f, 0xb1, 0x58, 0x50, + 0x7d, 0xb1, 0x8d, 0xc9, 0x1e, 0xcd, 0x85, 0xcf, 0x11, 0x7d, 0x75, 0x99, 0x28, 0xce, 0x29, 0xf4, 0x5a, 0xdf, 0x3f, + 0x61, 0x51, 0x8e, 0x5d, 0xa7, 0x18, 0x3d, 0xf1, 0xe6, 0x02, 0x04, 0xf6, 0xf4, 0xb4, 0x3c, 0x0b, 0xda, 0x6f, 0x58, + 0x11, 0x5f, 0xea, 0xc3, 0x52, 0xd8, 0x21, 0xca, 0x87, 0x14, 0xa2, 0x67, 0x9c, 0x9d, 0x54, 0xde, 0xcc, 0x49, 0xfd, + 0xb9, 0xe0, 0x7f, 0x73, 0x8b, 0x30, 0xad, 0x6a, 0xec, 0xf5, 0xe2, 0x0a, 0x36, 0x29, 0xef, 0x92, 0xe1, 0xdd, 0x29, + 0xfb, 0xd9, 0xa5, 0x2a, 0xb5, 0x56, 0xba, 0x22, 0x6d, 0xd0, 0x1c, 0xf6, 0xa8, 0xbb, 0xf3, 0xbc, 0x16, 0xcd, 0x2a, + 0xf6, 0xf7, 0x20, 0x5c, 0xfe, 0x37, 0x96, 0xe4, 0x0b, 0x8d, 0x84, 0xff, 0x66, 0x5b, 0xf6, 0xa9, 0x07, 0x41, 0x3c, + 0x66, 0x65, 0xb4, 0x9f, 0xc2, 0x02, 0x9d, 0x3f, 0xe6, 0x7e, 0xf5, 0x28, 0x32, 0xb7, 0xf8, 0x6b, 0xf7, 0x7a, 0x20, + 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, + 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x01, 0xc5, 0x4e, 0xec, 0xeb, 0xc4, + 0x4e, 0xec, 0xeb, 0xc0, 0x26, 0x76, 0xed, 0xc8, 0xd2, 0xf8, 0xc6, 0x66, 0xb4, 0x03, 0xc8, 0x66, 0x8c, 0x9d, 0xa5, + 0x92, 0x3c, 0xc1, 0x6e, 0x7b, 0x96, 0x2c, 0x0d, 0x21, 0x1c, 0xc2, 0x78, 0x8f, 0xf7, 0x78, 0xe6, 0x26, 0xe9, 0x97, + 0x79, 0xd3, 0xd8, 0xde, 0x22, 0xb4, 0xb9, 0x6f, 0x23, 0xb4, 0x11, 0x05, 0x2e, 0x74, 0x45, 0x5a, 0xe4, 0x6e, 0x34, + 0x18, 0x8b, 0xba, 0x6d, 0xdb, 0x23, 0x49, 0x92, 0x24, 0xb6, 0x41, 0xda, 0xb6, 0x26, 0x75, 0x87, 0xa9, 0xba, 0x75, + 0x2a, 0x99, 0xbc, 0x75, 0x72, 0xdb, 0xc5, 0xeb, 0x4b, 0x42, 0xf2, 0x52, 0xce, 0x52, 0x6e, 0xaa, 0x6d, 0xdb, 0x23, + 0x49, 0x92, 0x24, 0xb6, 0x41, 0xda, 0xb6, 0x26, 0x75, 0x87, 0xa9, 0xba, 0x75, 0x2a, 0x99, 0xbc, 0x75, 0x72, 0xdb, + 0xc5, 0xeb, 0x4b, 0x42, 0xf2, 0x52, 0xce, 0x52, 0x6e, 0xe0, 0xc3, 0xc3, 0x59, 0x5a, 0x5a, 0x5a, 0xf0, 0x08, 0xff, + 0xff, 0x3d, 0x24, 0x06, 0xf5, 0xd5, 0x42, 0x6e, 0xc9, 0x13, 0x7f, 0x9a, 0x96, 0x48, 0xe0, 0x98, 0x36, 0x7c, 0x71, + 0x31, 0x44, 0xa6, 0xa4, 0xd2, 0xd2, 0xc2, 0xc3, 0xc3, 0xc3, 0xb3, 0x74, 0xfe, 0xff, 0x2f, 0x6d, 0xa3, 0x21, 0x23, + 0x9e, 0xe3, 0xdb, 0x52, 0xcb, 0x90, 0x8a, 0xda, 0x66, 0xc1, 0xbd, 0xc6, 0xe8, 0x1b, 0x6d, 0x42, 0x61, 0x2d, 0x2d, + 0x57, 0x06, 0xa8, 0x64, 0x15, 0x9f, 0xbc, 0x86, 0x74, 0xa7, 0x38, 0x20, 0x76, 0x49, 0x8d, 0x8b, 0x20, 0x6d, 0xce, + 0xf6, 0x33, 0x53, 0xc6, 0x33, 0x37, 0xc3, 0xb7, 0x00, 0x3a, 0x6e, 0x96, 0x16, 0x7c, 0x61, 0x97, 0xab, 0xe8, 0xa4, + 0x93, 0x57, 0xa0, 0x77, 0x56, 0x84, 0x79, 0xbf, 0x04, 0x64, 0xd6, 0x43, 0x74, 0xff, 0x90, 0x9e, 0x70, 0x86, 0x45, + 0xc3, 0x04, 0x28, 0x69, 0x21, 0x56, 0xe8, 0x93, 0x54, 0x41, 0x43, 0x7d, 0x78, 0xb8, 0x20, 0x4e, 0x0b, 0xc8, 0xb6, + 0xa3, 0x6f, 0x69, 0xfd, 0xd2, 0xc6, 0x47, 0xe6, 0xdc, 0x87, 0xcf, 0x44, 0x89, 0x02, 0xff, 0x15, 0x2e, 0x29, 0xe6, + 0x53, 0x39, 0x00, 0x06, 0x1f, 0x40, 0x1c, 0x61, 0xa9, 0x6a, 0xef, 0xfb, 0x36, 0xec, 0xa8, 0x51, 0x54, 0xc6, 0x8e, + 0x2c, 0x45, 0xf0, 0x2e, 0xe3, 0x6e, 0xf7, 0x0d, 0x8d, 0x4a, 0x56, 0xef, 0x2a, 0xc5, 0x7e, 0xd7, 0x8b, 0xe3, 0xd5, + 0x14, 0xb7, 0xbc, 0xdd, 0x55, 0xd8, 0x36, 0x59, 0x9d, 0xac, 0xa1, 0x62, 0xcd, 0xf2, 0xa4, 0xbd, 0x6a, 0xdd, 0xc9, + 0x66, 0x16, 0xe5, 0x01, 0x3c, 0xb1, 0x13, 0x3b, 0x3a, 0xb1, 0x13, 0x3b, 0x3a, 0x75, 0x88, 0x9d, 0x3d, 0xed, 0x02, + 0xbd, 0xb5, 0x7b, 0x26, 0x08, 0xb8, 0x7b, 0xce, 0x8d, 0x9f, 0x42, 0x85, 0x0f, 0x5a, 0xdc, 0x17, 0x62, 0x93, 0x24, + 0x49, 0x12, 0x6d, 0xdb, 0xb6, 0xed, 0x23, 0x3b, 0x91, 0xa4, 0x6f, 0xe9, 0xf9, 0xfe, 0x27, 0x9d, 0x0c, 0xbd, 0x29, + 0x9d, 0x80, 0x45, 0x65, 0x87, 0x77, 0x08, 0xda, 0x7d, 0x86, 0x4a, 0x67, 0x66, 0x66, 0x66, 0xee, 0xee, 0xee, 0xee, + 0x76, 0x97, 0x76, 0x77, 0xdf, 0xbd, 0xfe, 0x81, 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, 0x0d, 0xd7, 0x7b, 0xed, 0x42, + 0x27, 0xf9, 0x14, 0xd4, 0x3d, 0x01, 0x00, 0x00, 0x10, 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, 0xcf, 0xc2, 0xc9, + 0x81, 0xfe, 0x84, 0xba, 0x07, 0x89, 0x87, 0x3a, 0x06, 0xb0, 0x73, 0xa5, 0x03, 0xf7, 0xdd, 0xcc, 0xae, 0x6c, 0xb5, + 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, + 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, 0x56, 0x55, 0x55, 0xd5, 0x1b, 0xc7, 0x71, + 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, 0x3a, 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, 0x76, 0x20, 0x15, 0x91, 0xc8, 0x5a, + 0xa7, 0x27, 0x08, 0x58, 0xd8, 0x46, 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca, 0x6b, 0x28, 0xc9, 0x13, 0xbb, 0x86, 0xa4, + 0x14, 0xdc, 0x41, 0x99, 0xe7, 0x70, 0x67, 0x73, 0x38, 0x5f, 0x81, 0x0e, 0xba, 0x87, 0xf1, 0xfd, 0xab, 0xd3, 0x6d, + 0xcd, 0xcc, 0xcc, 0x0c, 0x33, 0x33, 0x33, 0x73, 0x99, 0x5a, 0x99, 0xd9, 0x66, 0xa5, 0x8f, 0xcc, 0x00, 0x7a, 0x0b, + 0x9b, 0x67, 0xe0, 0x7b, 0xd4, 0xca, 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, 0xb7, 0x6d, 0xdb, 0xb6, 0xf3, 0x3c, + 0xcf, 0xf3, 0xc2, 0x08, 0x0c, 0xc3, 0x9e, 0x0f, 0x12, 0x8e, 0xc3, 0x20, 0x7d, 0x25, 0x19, 0x76, 0x42, 0x1d, 0xd6, + 0x85, 0x70, 0xa2, 0x75, 0x71, 0x0a, 0x0b, 0x01, 0x00, 0x00, 0x80, 0xd0, 0x45, 0x17, 0xdd, 0x44, 0x29, 0xe7, 0x22, + 0x1a, 0x4b, 0x4c, 0x44, 0xbf, 0x7c, 0x1a, 0xac, 0x07, 0x94, 0x2b, 0x48, 0x39, 0x83, 0xd0, 0x04, 0x5b, 0xab, 0xa8, + 0x6e, 0xb3, 0x90, 0x85, 0x2c, 0x58, 0xc8, 0x42, 0x16, 0xa6, 0x87, 0xa5, 0x37, 0xe1, 0xa4, 0x8e, 0x32, 0x8a, 0x4c, + 0x12, 0x99, 0xe5, 0x14, 0x75, 0x7a, 0xcf, 0x61, 0x03, 0xc0, 0xc2, 0xa7, 0xce, 0x64}; unsigned int constants_11_len = 56064; diff --git a/icicle/appUtils/poseidon/constants/constants_2.h b/icicle/appUtils/poseidon/constants/constants_2.h index 174b1426..4a1d0eb5 100644 --- a/icicle/appUtils/poseidon/constants/constants_2.h +++ b/icicle/appUtils/poseidon/constants/constants_2.h @@ -1,995 +1,629 @@ unsigned char constants_2[] = { - 0xd8, 0xd3, 0x6e, 0x9d, 0x00, 0x0a, 0x32, 0xa7, 0x36, 0x8b, 0x75, 0xa2, - 0x92, 0xac, 0x1e, 0x50, 0x24, 0x4a, 0xbb, 0x1d, 0x86, 0x51, 0xbd, 0x23, - 0x7a, 0xe1, 0x3a, 0xfa, 0x4b, 0x06, 0x9f, 0x66, 0x15, 0x3f, 0x9d, 0x2b, - 0x84, 0xab, 0x72, 0x6e, 0x34, 0x27, 0xac, 0x45, 0x96, 0x7c, 0xe6, 0xee, - 0x6c, 0xa6, 0x4f, 0xc8, 0xf2, 0x7f, 0x53, 0xe4, 0x36, 0xca, 0xac, 0xfb, - 0xde, 0xa8, 0x61, 0x0a, 0xd5, 0x65, 0x81, 0x12, 0x71, 0x47, 0x23, 0x1e, - 0x30, 0x49, 0xaa, 0x1a, 0x4e, 0x2b, 0x29, 0x17, 0x5b, 0x27, 0xdf, 0x45, - 0x8a, 0x1e, 0x1b, 0xf9, 0x09, 0x9d, 0xb8, 0x24, 0xfa, 0xce, 0xe9, 0x21, - 0xd1, 0xa0, 0x12, 0x2f, 0xca, 0x56, 0x5f, 0x2f, 0x1b, 0x40, 0x6c, 0x31, - 0x90, 0x55, 0x2f, 0x1f, 0x2b, 0xd0, 0xd2, 0xd2, 0xc9, 0x24, 0x26, 0x38, - 0x05, 0x18, 0x53, 0x38, 0x1d, 0x42, 0xfc, 0x0b, 0xc8, 0xc5, 0x8b, 0x5a, - 0xf3, 0x19, 0xca, 0xff, 0xf5, 0x3b, 0xef, 0x15, 0x4e, 0xf4, 0xcc, 0xbe, - 0xe8, 0x42, 0x69, 0x68, 0xf4, 0xfc, 0xd3, 0xc3, 0xf0, 0x5d, 0x03, 0x89, - 0x4a, 0xae, 0xb0, 0x13, 0x43, 0x39, 0xaa, 0x45, 0xb2, 0x41, 0x38, 0xf8, - 0x20, 0x2d, 0xd1, 0x1f, 0x3c, 0xc4, 0xaa, 0xf1, 0x40, 0xd0, 0x26, 0xe4, - 0x81, 0x74, 0x41, 0xc1, 0xb4, 0xd0, 0x64, 0x8d, 0xf9, 0xdd, 0x9a, 0x4b, - 0x38, 0x45, 0x02, 0xcc, 0x01, 0x65, 0x25, 0x72, 0x24, 0x2b, 0xba, 0x3f, - 0x2c, 0x1a, 0xbf, 0xc6, 0x3c, 0xcf, 0xa1, 0xef, 0x9c, 0xda, 0x2e, 0x9b, - 0x14, 0xc7, 0x81, 0x65, 0x85, 0xc3, 0x24, 0x2c, 0x65, 0xc6, 0x51, 0x3a, - 0xd3, 0xc1, 0xd1, 0xd5, 0x42, 0x8f, 0x2f, 0x3c, 0x0e, 0x61, 0xaf, 0xb8, - 0xf6, 0x3c, 0x32, 0x1a, 0x9f, 0x28, 0x91, 0x9d, 0x02, 0x18, 0x97, 0x47, - 0x79, 0x21, 0xf9, 0x61, 0x40, 0x5c, 0x16, 0xa9, 0xc5, 0x6e, 0xca, 0x9f, - 0x37, 0xf1, 0x2a, 0x13, 0xf1, 0xf0, 0xf0, 0xef, 0xb4, 0x56, 0xf4, 0x08, - 0x6a, 0x47, 0x52, 0x4a, 0x32, 0xbf, 0xb3, 0xab, 0xa5, 0xdf, 0x36, 0x12, - 0x63, 0x5f, 0x2e, 0xc2, 0xf4, 0x17, 0xa4, 0x0c, 0xfd, 0xeb, 0x3d, 0xe9, - 0xc7, 0x1d, 0x97, 0x5e, 0x52, 0x61, 0x75, 0x96, 0xfb, 0x11, 0x60, 0xcd, - 0xf8, 0xca, 0xa8, 0x11, 0xdc, 0x6e, 0xcd, 0x59, 0xf3, 0x37, 0x41, 0xd6, - 0x61, 0xb3, 0x74, 0xe5, 0xa8, 0xc1, 0x51, 0xf5, 0xa2, 0x57, 0x2e, 0x32, - 0xe4, 0x0e, 0xd2, 0xed, 0x73, 0xca, 0x58, 0x7a, 0x81, 0x16, 0x9c, 0xa0, - 0xa0, 0xc0, 0xaa, 0x65, 0xe0, 0x3f, 0x43, 0xb7, 0x03, 0xb0, 0x35, 0x84, - 0x61, 0xf6, 0x60, 0x0e, 0x18, 0xb3, 0x0a, 0xc0, 0x59, 0x98, 0x57, 0x80, - 0x7e, 0x26, 0x8b, 0x26, 0x0f, 0x94, 0x44, 0xbc, 0xc9, 0x71, 0xf8, 0x19, - 0x9a, 0x3b, 0x0a, 0xea, 0x9a, 0xc0, 0x41, 0x26, 0x9b, 0x50, 0xe7, 0x5d, - 0x1b, 0x59, 0x22, 0x26, 0x79, 0x3a, 0xae, 0x39, 0x61, 0x13, 0x9c, 0x8f, - 0x8e, 0xd0, 0xbf, 0x84, 0xb8, 0xca, 0x3f, 0x71, 0x41, 0x70, 0x35, 0x88, - 0x03, 0x63, 0x0d, 0xc5, 0x1a, 0xcb, 0x63, 0x11, 0x32, 0x90, 0xb6, 0xaa, - 0xfb, 0xdc, 0xd9, 0xc3, 0xa1, 0x93, 0x41, 0xe8, 0xa1, 0xfb, 0x2d, 0x88, - 0x9e, 0xe6, 0x37, 0x21, 0xb2, 0xbe, 0xfc, 0x64, 0x18, 0x37, 0x87, 0xbc, - 0x36, 0xf2, 0xe4, 0x08, 0x5e, 0x87, 0x5f, 0x78, 0xbc, 0xbd, 0x4c, 0x91, - 0x53, 0xb5, 0xf3, 0x3c, 0xe9, 0x8c, 0x1d, 0xa7, 0x0a, 0x95, 0x90, 0x55, - 0xfd, 0xfd, 0x61, 0xd1, 0x38, 0x21, 0xca, 0x5c, 0x8f, 0xc0, 0xc9, 0x39, - 0x81, 0x8e, 0x2d, 0x7c, 0xa7, 0xab, 0x84, 0xef, 0x09, 0xd3, 0x1f, 0xb2, - 0xc8, 0xe7, 0x6a, 0x9c, 0xe5, 0x0d, 0xea, 0x15, 0x0f, 0xdf, 0x55, 0x7e, - 0x25, 0x01, 0xad, 0x36, 0xdc, 0xfe, 0x2c, 0xc2, 0xf5, 0xd1, 0x57, 0xef, - 0xf2, 0x1d, 0xdd, 0x82, 0xb0, 0x20, 0xbf, 0xfe, 0x8a, 0xa8, 0x4d, 0xb5, - 0xd2, 0x03, 0x0d, 0x49, 0x43, 0xaf, 0x4a, 0xac, 0x95, 0x64, 0x6b, 0x62, - 0x6e, 0x75, 0x84, 0x85, 0x56, 0x8f, 0x99, 0x6d, 0xfa, 0xb4, 0x37, 0x30, - 0xc4, 0x06, 0x82, 0x32, 0xf0, 0x86, 0x6e, 0x5f, 0xde, 0x62, 0xa3, 0x61, - 0xdc, 0x17, 0x37, 0x5c, 0xc8, 0x9b, 0x78, 0x6a, 0xf1, 0xa2, 0x77, 0x76, - 0x44, 0x93, 0xbe, 0x6b, 0x71, 0x39, 0x0a, 0x35, 0x86, 0xa3, 0x4c, 0x84, - 0x0f, 0xb1, 0xbf, 0x51, 0x88, 0x18, 0x88, 0x57, 0x09, 0x97, 0x55, 0xdf, - 0x29, 0xe6, 0xff, 0xaa, 0xaf, 0x7b, 0x27, 0x29, 0xca, 0xf5, 0x11, 0x64, - 0xa2, 0x2e, 0xb9, 0x99, 0xc5, 0xc4, 0x56, 0x1b, 0x03, 0x0c, 0xf1, 0x7e, - 0x9b, 0xf1, 0x8b, 0x57, 0xc7, 0x4c, 0x4a, 0x05, 0x84, 0x78, 0x67, 0x3c, - 0x82, 0xee, 0xe4, 0x55, 0xfb, 0xf2, 0x2e, 0xcb, 0x3a, 0x64, 0x88, 0x44, - 0x15, 0x1b, 0x23, 0xaa, 0xe9, 0x9a, 0x04, 0xbd, 0xb4, 0xbd, 0x34, 0x28, - 0x84, 0x34, 0x55, 0x13, 0x2c, 0xbd, 0x43, 0x1c, 0x3b, 0xaf, 0x1d, 0x95, - 0x28, 0x18, 0x5f, 0xe7, 0x33, 0xa2, 0x4c, 0x58, 0xca, 0x42, 0xbe, 0x9e, - 0x8e, 0x72, 0xae, 0xf1, 0x08, 0x40, 0x8f, 0x55, 0x61, 0x68, 0xa3, 0x2e, - 0xff, 0x75, 0xe7, 0x38, 0x44, 0x68, 0x4a, 0x40, 0x05, 0x3f, 0x64, 0xf2, - 0xf3, 0xd7, 0x8d, 0xd4, 0x3d, 0x69, 0x2e, 0xc9, 0x94, 0x3f, 0xc8, 0x75, - 0xa1, 0xa1, 0xe5, 0x0b, 0x26, 0xec, 0x36, 0xe9, 0x29, 0x67, 0x4b, 0xc9, - 0x2b, 0x0f, 0x4b, 0xa0, 0x56, 0xaf, 0x8b, 0x81, 0xea, 0x11, 0xf5, 0x42, - 0xd3, 0xf2, 0x6e, 0x91, 0xf3, 0x35, 0x60, 0xe6, 0xa0, 0x80, 0x09, 0x45, - 0xfe, 0x29, 0x4c, 0xde, 0x96, 0x76, 0x6e, 0x27, 0xfc, 0x64, 0xd3, 0xf7, - 0xb4, 0xbf, 0xfa, 0x8c, 0x13, 0x68, 0x52, 0xf7, 0x9c, 0x86, 0x74, 0xe1, - 0x8a, 0x01, 0x97, 0x73, 0x69, 0x29, 0x21, 0x0d, 0xae, 0xcf, 0xa7, 0x83, - 0xf2, 0x8b, 0x93, 0x8d, 0xef, 0xf2, 0x7c, 0xc1, 0xfd, 0x50, 0xca, 0x95, - 0x53, 0x77, 0x46, 0xa8, 0xe0, 0xb9, 0x6f, 0x4e, 0xe5, 0x55, 0x35, 0x2b, - 0x6b, 0x67, 0x5e, 0x4e, 0x24, 0x51, 0x85, 0xf3, 0x19, 0x3d, 0x4c, 0x5c, - 0x94, 0x7c, 0xb4, 0xe5, 0x49, 0xe8, 0xdf, 0xdd, 0x34, 0x4c, 0x64, 0x13, - 0x6e, 0x67, 0x6a, 0xc6, 0x5e, 0x82, 0x1f, 0xdc, 0x0e, 0xf6, 0x15, 0x2a, - 0x6f, 0xdd, 0x3a, 0x5c, 0x7d, 0x20, 0xbf, 0xd5, 0x89, 0xa1, 0x25, 0x2f, - 0x59, 0xe7, 0xca, 0xa2, 0xb4, 0xde, 0x72, 0x2c, 0xe8, 0xe6, 0xc5, 0x3d, - 0x93, 0xa5, 0xe0, 0x47, 0x7d, 0xe5, 0x65, 0x58, 0x59, 0xec, 0x62, 0x79, - 0xc5, 0x69, 0x21, 0xfb, 0x12, 0x45, 0xe7, 0xb3, 0xa0, 0x5c, 0xba, 0xfb, - 0x70, 0x38, 0x8b, 0x80, 0x95, 0x90, 0x72, 0x85, 0xf8, 0x61, 0xb3, 0x6f, - 0x5f, 0x9d, 0x2d, 0x36, 0x9f, 0xe0, 0xeb, 0xc2, 0xd2, 0xcd, 0x33, 0x5a, - 0x26, 0x78, 0xa7, 0x7f, 0x24, 0x52, 0x52, 0x3a, 0xe6, 0xf6, 0xf4, 0xa0, - 0x9c, 0x52, 0x1d, 0xd5, 0x26, 0x5d, 0x9a, 0x7b, 0x9f, 0xba, 0x63, 0x6a, - 0xda, 0xb9, 0xed, 0xec, 0x37, 0x8b, 0x24, 0x76, 0xcf, 0x1d, 0xa0, 0x3e, - 0x1e, 0xc7, 0x60, 0x73, 0xc5, 0x5b, 0x7f, 0x93, 0x84, 0x62, 0x9b, 0xe8, - 0x28, 0x07, 0xac, 0x77, 0xe7, 0xb3, 0x7d, 0x6f, 0x51, 0x91, 0xc7, 0xf3, - 0x4d, 0x17, 0xeb, 0xe7, 0xc5, 0x31, 0x1e, 0x2d, 0x75, 0x2e, 0x30, 0xd8, - 0xe8, 0x75, 0x4c, 0x37, 0x7a, 0xd6, 0x5c, 0x75, 0x1d, 0xc0, 0xb4, 0x99, - 0xa2, 0x49, 0xe0, 0x72, 0xe2, 0xb3, 0x30, 0xed, 0x8b, 0xa7, 0x7e, 0x07, - 0x79, 0x36, 0x77, 0xee, 0x15, 0x71, 0x1f, 0xe0, 0x0a, 0x98, 0x0a, 0xee, - 0xcf, 0x0c, 0x59, 0xcc, 0xc7, 0x48, 0x50, 0xd3, 0xea, 0x41, 0xe1, 0x66, - 0xd4, 0x3b, 0x24, 0xe9, 0x63, 0x4c, 0x16, 0xec, 0x51, 0x8e, 0x06, 0xc2, - 0x11, 0x53, 0x58, 0x35, 0xd0, 0xd1, 0x77, 0x43, 0x59, 0x7f, 0xdb, 0x35, - 0xe6, 0xea, 0x04, 0x1b, 0x69, 0x2e, 0x03, 0x2e, 0x5e, 0xa9, 0x67, 0xc7, - 0x24, 0x52, 0xef, 0x5e, 0x1d, 0x8c, 0xe8, 0xa3, 0xa4, 0x8e, 0xc4, 0xcb, - 0x5d, 0x8a, 0x57, 0x31, 0xdf, 0x3c, 0x38, 0xdf, 0xe6, 0xaf, 0x21, 0x77, - 0x49, 0x02, 0xbc, 0x32, 0xde, 0x1e, 0x9f, 0x6a, 0x95, 0x9f, 0x94, 0x3b, - 0x84, 0xdc, 0xea, 0x0b, 0x09, 0x76, 0x2f, 0x93, 0x70, 0x12, 0x8c, 0xb6, - 0xd0, 0x20, 0xc3, 0xe2, 0x94, 0x8a, 0xb6, 0x2f, 0x9a, 0x03, 0xef, 0x5b, - 0xc0, 0x47, 0xbf, 0xd0, 0xa7, 0x90, 0xe6, 0x13, 0xac, 0xc9, 0x2e, 0x10, - 0xef, 0x10, 0xd1, 0x81, 0x65, 0x5d, 0xfa, 0x50, 0x65, 0xc0, 0xd6, 0x59, - 0x3a, 0xe0, 0x5c, 0x94, 0xbd, 0xf8, 0xc6, 0x25, 0x85, 0x61, 0x2f, 0xa5, - 0x5c, 0x0d, 0x7e, 0xe1, 0xa8, 0x04, 0x3b, 0x1f, 0x61, 0x34, 0x4b, 0x30, - 0xf3, 0x84, 0x8e, 0x89, 0xb1, 0x58, 0xe2, 0x48, 0xf4, 0x79, 0x7f, 0x5f, - 0x95, 0x1d, 0xe7, 0x71, 0x47, 0x5d, 0x43, 0x69, 0xd4, 0x7b, 0xe6, 0x87, - 0x9e, 0x11, 0x12, 0x2a, 0x4f, 0xf7, 0x0c, 0xfb, 0x3c, 0x0b, 0x1d, 0xe7, - 0xa3, 0x0b, 0xdf, 0xc7, 0xd1, 0x35, 0xdb, 0x7d, 0x58, 0x7b, 0x46, 0x40, - 0x3e, 0xf6, 0xc1, 0xb6, 0x22, 0x99, 0x13, 0xd0, 0xd9, 0x3f, 0x28, 0xc5, - 0xef, 0xeb, 0x6a, 0xda, 0xf5, 0xfb, 0x2d, 0x9d, 0x3c, 0x23, 0x23, 0x7d, - 0x1f, 0x81, 0x55, 0xaf, 0xd4, 0xec, 0x7b, 0x09, 0x79, 0xe1, 0x90, 0xde, - 0xe3, 0xff, 0x9a, 0x13, 0x2b, 0x4e, 0x70, 0x5c, 0x63, 0x72, 0x88, 0xfa, - 0x74, 0x4f, 0xb7, 0xd1, 0x33, 0x3b, 0x8a, 0xec, 0x2e, 0x9b, 0x77, 0x0b, - 0x8c, 0x3a, 0x91, 0x2c, 0x63, 0x3c, 0x03, 0x40, 0x1e, 0x78, 0x83, 0x4c, - 0xcc, 0x0a, 0x3b, 0x99, 0x8d, 0x10, 0x54, 0x79, 0x3e, 0x85, 0x9d, 0xab, - 0x2f, 0xd6, 0x9b, 0xab, 0x63, 0x85, 0x7a, 0x80, 0xe2, 0x43, 0xc0, 0x31, - 0xa9, 0x77, 0x9a, 0x12, 0xf6, 0xcb, 0x8d, 0xfb, 0x65, 0xed, 0xb7, 0x11, - 0xff, 0x5c, 0xe0, 0x8f, 0x16, 0xc6, 0x9b, 0x36, 0x56, 0x2b, 0x8a, 0xe1, - 0x9b, 0xe1, 0xfc, 0x01, 0x3f, 0xa4, 0x49, 0x5d, 0x59, 0x19, 0xbd, 0xbe, - 0x17, 0x49, 0xe5, 0xa1, 0xa7, 0xf7, 0x26, 0x19, 0xa4, 0x0f, 0xd3, 0x5b, - 0x74, 0xa9, 0xfe, 0x53, 0x88, 0x51, 0xa8, 0x9c, 0x3f, 0xde, 0xbd, 0x19, - 0xa0, 0x40, 0x31, 0x50, 0x1f, 0x8b, 0x92, 0x97, 0xb2, 0x1c, 0xc7, 0xb0, - 0xdd, 0xd5, 0xae, 0x88, 0x92, 0x00, 0x4a, 0xd7, 0xb7, 0xf8, 0x02, 0xaa, - 0x25, 0xbb, 0x05, 0x89, 0x78, 0xda, 0x9c, 0x00, 0xb5, 0x48, 0x2c, 0x0d, - 0xf3, 0xfa, 0xfc, 0x4e, 0x6f, 0x3d, 0x96, 0x74, 0x92, 0xb5, 0x16, 0x01, - 0x88, 0xb2, 0x4a, 0x9c, 0x43, 0x35, 0x75, 0xef, 0x3d, 0x6e, 0xd0, 0x92, - 0xc0, 0x24, 0xf6, 0xd6, 0xc0, 0x01, 0xef, 0x23, 0xb0, 0x6e, 0x27, 0x21, - 0x5e, 0xa1, 0x8c, 0x0f, 0x69, 0xbc, 0x09, 0x47, 0x2c, 0x13, 0x5d, 0xba, - 0x32, 0x3c, 0x37, 0x62, 0x3a, 0xdf, 0x38, 0x5a, 0x17, 0xe2, 0xfc, 0xe3, - 0x8e, 0xe2, 0xd6, 0x6d, 0x50, 0x1b, 0xd1, 0xcc, 0x4b, 0x9d, 0x66, 0x0a, - 0x90, 0x85, 0x01, 0x3b, 0xa2, 0x77, 0xd4, 0x95, 0x90, 0x63, 0x49, 0x5e, - 0x27, 0xe7, 0xab, 0xc5, 0xf1, 0xf9, 0xa8, 0xf2, 0x40, 0xb1, 0x14, 0x35, - 0x4d, 0x69, 0x4c, 0x51, 0x3b, 0x9b, 0x10, 0x50, 0x70, 0x34, 0xf4, 0xbe, - 0x14, 0x88, 0xb5, 0x40, 0x1a, 0x68, 0x74, 0x40, 0x4c, 0xa3, 0xa7, 0x0d, - 0x32, 0x64, 0xaa, 0xef, 0xf5, 0x7b, 0x1a, 0x60, 0x1d, 0xfc, 0x33, 0xf2, - 0x50, 0xc6, 0x39, 0x28, 0x53, 0xe7, 0x98, 0xbf, 0xbd, 0x1e, 0xac, 0x80, - 0x35, 0x5d, 0x7a, 0x18, 0x96, 0x8f, 0xb1, 0x41, 0xc2, 0xcb, 0x7d, 0xd0, - 0x75, 0xd4, 0xc2, 0x11, 0x78, 0xd8, 0xa1, 0x98, 0x53, 0x1c, 0x59, 0x72, - 0xac, 0xc1, 0x37, 0x0f, 0x42, 0x13, 0x0b, 0x98, 0xf9, 0x6e, 0x6f, 0x36, - 0x53, 0x8d, 0x66, 0x46, 0x65, 0xf0, 0x27, 0xd3, 0xe3, 0xf0, 0x10, 0x5d, - 0x1b, 0xae, 0x8d, 0x49, 0xec, 0xe6, 0x40, 0xfc, 0xfa, 0xbe, 0x55, 0x60, - 0x4b, 0xfe, 0xd0, 0xca, 0x6a, 0x45, 0xd0, 0xd5, 0xe1, 0x5f, 0x20, 0x67, - 0x09, 0x4e, 0x6d, 0x59, 0xef, 0xba, 0xec, 0x57, 0x41, 0xfa, 0x62, 0x1c, - 0x54, 0xa4, 0x74, 0x46, 0xd1, 0x91, 0x48, 0xc9, 0xa6, 0x07, 0x01, 0xd1, - 0x43, 0xa0, 0xe7, 0x7f, 0x35, 0xa0, 0x6f, 0xe4, 0x57, 0xb0, 0xb8, 0x99, - 0x7c, 0x93, 0x4a, 0x0d, 0x4b, 0x0a, 0xd6, 0x24, 0xb2, 0x27, 0xd1, 0xa8, - 0x2e, 0x5b, 0x3c, 0xcc, 0x17, 0xb2, 0x8a, 0x70, 0x93, 0x2b, 0x00, 0x96, - 0x2d, 0x90, 0x4d, 0x67, 0x62, 0xb8, 0xc6, 0xd1, 0x46, 0xda, 0x3b, 0x6d, - 0xdf, 0xd6, 0x03, 0xf2, 0x01, 0xa2, 0x89, 0x6c, 0x50, 0xd5, 0xf0, 0xb1, - 0xd2, 0x24, 0xdd, 0x02, 0x42, 0xde, 0x1d, 0x5b, 0x00, 0xe0, 0x5f, 0x5f, - 0x31, 0xf8, 0x59, 0x9d, 0xc8, 0xa4, 0x70, 0x4d, 0x49, 0x54, 0xc3, 0x94, - 0xbc, 0x58, 0x2e, 0x03, 0x02, 0xba, 0x43, 0x2b, 0xfd, 0x0f, 0x9c, 0x0f, - 0x91, 0x28, 0xf4, 0x3b, 0xe7, 0xb1, 0x3b, 0x69, 0xbd, 0x6a, 0x8f, 0x20, - 0xab, 0x8f, 0xd2, 0x5a, 0xf4, 0x00, 0x92, 0xcd, 0x45, 0xd5, 0x96, 0x37, - 0x31, 0x0e, 0xfd, 0x75, 0xda, 0xa4, 0x0c, 0x57, 0xcf, 0x7b, 0x1b, 0xf5, - 0xa9, 0xcd, 0xff, 0xaf, 0xe8, 0x54, 0x52, 0x8a, 0x9e, 0x03, 0x97, 0x5e, - 0x62, 0x3f, 0x09, 0x6d, 0x54, 0x61, 0x7d, 0xfc, 0x7a, 0x33, 0x85, 0x38, - 0x9a, 0x67, 0x4d, 0xb2, 0x24, 0xa7, 0x7d, 0x33, 0xff, 0x3d, 0xe5, 0x7f, - 0x7d, 0x09, 0x60, 0x87, 0xa6, 0xe4, 0x96, 0x2d, 0x3d, 0x1a, 0xa4, 0x3d, - 0x2e, 0x49, 0xcd, 0xb3, 0x62, 0x45, 0xa9, 0x84, 0xb3, 0xd8, 0xa5, 0x94, - 0x07, 0xf0, 0x67, 0x39, 0xbc, 0x85, 0x9d, 0x3f, 0x14, 0xd2, 0x53, 0x83, - 0x2e, 0x85, 0x89, 0x69, 0xc7, 0xe7, 0x88, 0xbf, 0x3e, 0x1d, 0x40, 0x53, - 0x95, 0xc8, 0x78, 0x03, 0x87, 0x80, 0x93, 0x9c, 0x88, 0x32, 0x70, 0x2e, - 0x91, 0x7b, 0x8f, 0x2b, 0x83, 0xd7, 0x32, 0x88, 0x5c, 0x94, 0x65, 0x4b, - 0x1a, 0x31, 0xe1, 0x16, 0x25, 0x03, 0x6e, 0xfd, 0x91, 0x7c, 0x33, 0x81, - 0xcd, 0x36, 0xbb, 0xf5, 0xd2, 0x7a, 0x65, 0x29, 0x34, 0xd7, 0x0e, 0x58, - 0x75, 0xef, 0xda, 0x5e, 0xc0, 0x38, 0x16, 0x02, 0xff, 0x42, 0x1a, 0xad, - 0xc5, 0x17, 0x61, 0x89, 0x83, 0xe1, 0xc0, 0x2c, 0x5f, 0xae, 0xaa, 0x4e, - 0x0f, 0x4c, 0xd6, 0xe6, 0x14, 0xf2, 0xe9, 0x06, 0xc0, 0x16, 0x05, 0x9d, - 0xd4, 0xa3, 0x32, 0x69, 0xa8, 0x8f, 0x51, 0x8c, 0x23, 0xfe, 0x66, 0x8b, - 0x79, 0x79, 0xc2, 0x6c, 0xe8, 0xff, 0x1f, 0x24, 0xf9, 0x7e, 0xe1, 0x17, - 0x23, 0x65, 0xf1, 0x53, 0x8e, 0x74, 0xd5, 0xb8, 0xc8, 0x95, 0x65, 0x00, - 0xf3, 0x5f, 0x88, 0x99, 0x77, 0x8f, 0x71, 0xe5, 0xac, 0xee, 0x85, 0x4a, - 0x22, 0x8b, 0x3b, 0xb9, 0xa6, 0x71, 0x54, 0x0a, 0x03, 0x60, 0x21, 0x82, - 0x2f, 0xd6, 0x20, 0x91, 0x5d, 0xd9, 0x33, 0x5e, 0x54, 0x48, 0xf7, 0xfb, - 0x6b, 0xd1, 0xef, 0x89, 0x0e, 0xd6, 0x4a, 0x18, 0x7d, 0x89, 0x19, 0x45, - 0xae, 0x60, 0x2c, 0x91, 0x0a, 0x2e, 0x9c, 0xae, 0x8b, 0xd4, 0xd8, 0x03, - 0x3d, 0x33, 0xc1, 0x31, 0x68, 0x7e, 0xed, 0xa8, 0xe3, 0xa8, 0x13, 0x65, - 0x64, 0xc6, 0x5c, 0x5d, 0x60, 0xef, 0xfa, 0xf1, 0x2d, 0x33, 0x32, 0xcb, - 0xc5, 0x4d, 0x0b, 0x48, 0xec, 0x84, 0x39, 0x92, 0x9a, 0xdc, 0x60, 0x0b, - 0x0a, 0x66, 0xd9, 0xaa, 0x04, 0x53, 0x84, 0xe4, 0xeb, 0x71, 0x40, 0x82, - 0xc6, 0x6c, 0xb8, 0xc0, 0xd1, 0x44, 0x9b, 0xb2, 0xb8, 0xa1, 0x5b, 0x14, - 0x3d, 0xc7, 0x13, 0x1b, 0xee, 0x19, 0xb0, 0x60, 0xc5, 0x0a, 0xc6, 0x40, - 0x7f, 0x0c, 0x2e, 0x75, 0x3c, 0x6f, 0x49, 0xba, 0x38, 0x0d, 0x03, 0x54, - 0x04, 0xa3, 0x51, 0x0e, 0xaf, 0x3e, 0x34, 0xcb, 0x13, 0x22, 0x15, 0xfa, - 0xc1, 0x16, 0x9e, 0x58, 0x78, 0x47, 0x9c, 0xad, 0x06, 0xcd, 0xf4, 0x10, - 0xee, 0x0d, 0x78, 0x64, 0x8d, 0x70, 0x45, 0x55, 0xc2, 0x76, 0x45, 0x40, - 0xf0, 0xe2, 0xfc, 0x0e, 0x8a, 0xc4, 0x78, 0x56, 0x7f, 0x8f, 0x05, 0x16, - 0x31, 0xd3, 0x42, 0xd7, 0xfe, 0xbb, 0xaa, 0x89, 0x3c, 0x53, 0xd8, 0xa6, - 0x95, 0x43, 0x72, 0xa2, 0x00, 0x15, 0xe7, 0x83, 0xea, 0x9e, 0xad, 0x69, - 0x93, 0xc5, 0x9d, 0xfc, 0xc2, 0x8d, 0x3c, 0x58, 0xd8, 0x70, 0xd7, 0xcb, - 0x65, 0x53, 0xc0, 0x9e, 0x83, 0x7e, 0x02, 0xbf, 0x6a, 0x90, 0x2f, 0xa2, - 0xbe, 0x5d, 0x68, 0xeb, 0xbd, 0xad, 0xaf, 0xee, 0x91, 0x8a, 0xeb, 0x4e, - 0x98, 0xc9, 0xed, 0x24, 0x0d, 0x0d, 0x8d, 0xdf, 0x16, 0xf6, 0x8e, 0x10, - 0x59, 0x38, 0xa4, 0xd1, 0x0c, 0x09, 0x61, 0x06, 0x63, 0xcc, 0x5a, 0x84, - 0x63, 0x1d, 0x90, 0xc8, 0xfb, 0x7b, 0x49, 0xcb, 0xcf, 0x5b, 0x34, 0x47, - 0x96, 0x4e, 0xb1, 0x13, 0x66, 0xd5, 0x1f, 0x18, 0x30, 0xdd, 0xd7, 0x9d, - 0xb8, 0x98, 0x41, 0xf2, 0x13, 0x1d, 0xc0, 0xbc, 0xf9, 0x03, 0x37, 0x48, - 0x06, 0x89, 0xcf, 0xa8, 0x2e, 0x68, 0x3f, 0x16, 0xf3, 0x41, 0x22, 0xfc, - 0x11, 0x2d, 0xb2, 0x29, 0x5c, 0x56, 0x0f, 0xf9, 0x84, 0x22, 0xee, 0x59, - 0xb3, 0x95, 0x0b, 0xc7, 0xf0, 0x3a, 0xe4, 0x08, 0xce, 0x91, 0xdc, 0xa4, - 0x1e, 0xad, 0x5e, 0x30, 0x9a, 0x0e, 0xe3, 0xb2, 0x81, 0x13, 0x97, 0x57, - 0x31, 0x8f, 0x9c, 0xe1, 0x92, 0xa3, 0xab, 0x69, 0x94, 0x02, 0x5c, 0x68, - 0xe9, 0x41, 0x1a, 0xc7, 0x17, 0xde, 0xaf, 0x77, 0xc5, 0x44, 0x2d, 0x6a, - 0x2f, 0xd0, 0x16, 0x41, 0x40, 0x74, 0x57, 0x01, 0xd0, 0xaa, 0xe6, 0x70, - 0x13, 0xf5, 0x3f, 0x0a, 0x39, 0x4d, 0xb1, 0x82, 0x87, 0x9b, 0xd6, 0x2b, - 0xbd, 0xec, 0xa7, 0xcb, 0xdb, 0x57, 0x4e, 0x49, 0xa5, 0x8a, 0xa4, 0xbe, - 0x83, 0xe6, 0x7c, 0x8b, 0x79, 0x4a, 0x7f, 0x39, 0x23, 0x07, 0xa8, 0xa9, - 0x4e, 0xbd, 0xc3, 0xbb, 0xcf, 0xbc, 0xe2, 0x48, 0xa3, 0x60, 0xc0, 0x2c, - 0x8d, 0x60, 0x26, 0x49, 0x07, 0x92, 0x78, 0xdb, 0x99, 0x94, 0x0e, 0x02, - 0x27, 0x08, 0x9c, 0xc8, 0x23, 0x03, 0xfb, 0x6d, 0x18, 0x89, 0xe7, 0x3c, - 0x08, 0xe5, 0x93, 0x31, 0xaa, 0x06, 0xa9, 0x86, 0x70, 0x40, 0x9e, 0x08, - 0x5d, 0x7d, 0x8d, 0xa8, 0xee, 0xa0, 0x31, 0x49, 0x35, 0x99, 0x78, 0xf3, - 0x97, 0x77, 0x05, 0x5f, 0xb2, 0xc8, 0xdc, 0xd8, 0xec, 0x9d, 0x48, 0xb5, - 0xa4, 0x13, 0x01, 0x45, 0xe9, 0xe3, 0x84, 0x1c, 0x01, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, - 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, - 0x37, 0x1a, 0x49, 0x4d, 0x01, 0x00, 0x00, 0x40, 0xff, 0xff, 0xff, 0x3f, - 0xff, 0xc4, 0xfe, 0x3f, 0x02, 0x3b, 0xce, 0xfe, 0x03, 0x62, 0x39, 0x07, - 0x06, 0x62, 0x6b, 0x26, 0xf6, 0x1d, 0x36, 0x5f, 0x7e, 0x3d, 0xf2, 0x56, - 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, - 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, - 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x01, 0x00, 0x00, 0x40, - 0xff, 0xff, 0xff, 0x3f, 0xff, 0xc4, 0xfe, 0x3f, 0x02, 0x3b, 0xce, 0xfe, - 0x03, 0x62, 0x39, 0x07, 0x06, 0x62, 0x6b, 0x26, 0xf6, 0x1d, 0x36, 0x5f, - 0x7e, 0x3d, 0xf2, 0x56, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x01, 0x00, 0x00, 0x80, 0x54, 0x55, 0x55, 0xd5, 0xa9, 0x4c, 0xa9, 0x2a, - 0xad, 0x08, 0x1e, 0x1b, 0xaf, 0xde, 0x06, 0x08, 0x5c, 0x89, 0x05, 0x80, - 0x11, 0x93, 0x58, 0x4d, 0xc5, 0x60, 0x9b, 0x60, 0x34, 0x33, 0x33, 0x33, - 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, - 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, - 0x98, 0x97, 0x8e, 0x45, 0x01, 0x00, 0x00, 0x80, 0x54, 0x55, 0x55, 0xd5, - 0xa9, 0x4c, 0xa9, 0x2a, 0xad, 0x08, 0x1e, 0x1b, 0xaf, 0xde, 0x06, 0x08, - 0x5c, 0x89, 0x05, 0x80, 0x11, 0x93, 0x58, 0x4d, 0xc5, 0x60, 0x9b, 0x60, - 0x25, 0x49, 0x92, 0x24, 0xdb, 0xb6, 0x6d, 0xdb, 0x48, 0x1a, 0x24, 0x49, - 0xdc, 0x2e, 0x36, 0xaa, 0x4a, 0x62, 0x77, 0x70, 0x4b, 0x62, 0xc7, 0x57, - 0x82, 0x91, 0x51, 0xe7, 0x60, 0x54, 0x1f, 0x21, 0x01, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, - 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, - 0x37, 0x1a, 0x49, 0x4d, 0x3e, 0x2c, 0xe4, 0xf5, 0x63, 0xa7, 0xf2, 0x0e, - 0x51, 0x85, 0x27, 0x20, 0x86, 0xec, 0x5b, 0x36, 0xe4, 0xea, 0xf3, 0x0c, - 0x61, 0xaa, 0xc6, 0x06, 0x74, 0xa3, 0xcc, 0xc1, 0x24, 0x1c, 0x32, 0x69, - 0x95, 0x82, 0xd1, 0xb0, 0xf9, 0x5d, 0x48, 0x7e, 0x90, 0xf2, 0x18, 0x4e, - 0xad, 0x05, 0x11, 0x3b, 0xc9, 0xfa, 0xfe, 0xf4, 0xe4, 0x3a, 0xfc, 0xd1, - 0xb8, 0x4b, 0xee, 0xab, 0x1c, 0x80, 0x90, 0x0d, 0x01, 0x00, 0x00, 0x40, - 0xff, 0xff, 0xff, 0x3f, 0xff, 0xc4, 0xfe, 0x3f, 0x02, 0x3b, 0xce, 0xfe, - 0x03, 0x62, 0x39, 0x07, 0x06, 0x62, 0x6b, 0x26, 0xf6, 0x1d, 0x36, 0x5f, - 0x7e, 0x3d, 0xf2, 0x56, 0xa5, 0xd2, 0xd6, 0x97, 0x8d, 0x8a, 0xf9, 0x2a, - 0x81, 0x39, 0xfd, 0xef, 0xe5, 0xd1, 0x41, 0x7d, 0xb2, 0xa6, 0x20, 0x46, - 0x9a, 0xc4, 0x02, 0xcc, 0x8e, 0x38, 0xd8, 0xa2, 0x2d, 0x8f, 0xa7, 0x5e, - 0xc2, 0x91, 0x1b, 0xf6, 0x2c, 0xb3, 0x21, 0xed, 0x91, 0x8c, 0x3e, 0xb5, - 0x8e, 0x10, 0x26, 0x1f, 0x86, 0x4d, 0xae, 0x08, 0x65, 0x72, 0x2b, 0x5d, - 0x7c, 0x64, 0x10, 0xfa, 0xc1, 0xa6, 0x20, 0x55, 0x34, 0x33, 0x33, 0x33, - 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, - 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, - 0x98, 0x97, 0x8e, 0x45, 0xc2, 0x91, 0x1b, 0xf6, 0x2c, 0xb3, 0x21, 0xed, - 0x91, 0x8c, 0x3e, 0xb5, 0x8e, 0x10, 0x26, 0x1f, 0x86, 0x4d, 0xae, 0x08, - 0x65, 0x72, 0x2b, 0x5d, 0x7c, 0x64, 0x10, 0xfa, 0xc1, 0xa6, 0x20, 0x55, - 0x54, 0x24, 0x25, 0x3c, 0xb1, 0x71, 0x3e, 0xfe, 0x4e, 0xcd, 0x04, 0x70, - 0xb5, 0xcd, 0x65, 0x35, 0x9b, 0xb9, 0x69, 0x70, 0xfc, 0x9e, 0xc1, 0xa4, - 0x2c, 0xe6, 0xb5, 0xd6, 0x38, 0x75, 0x07, 0x52, 0x01, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, - 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, - 0x37, 0x1a, 0x49, 0x4d, 0xa2, 0x92, 0xa6, 0xd6, 0xd4, 0x73, 0x2f, 0x8d, - 0x27, 0x96, 0x8a, 0xc6, 0xc2, 0xbe, 0x74, 0x03, 0x5f, 0x90, 0x8e, 0xac, - 0x46, 0x55, 0x68, 0x45, 0x37, 0x1a, 0xb9, 0xf9, 0x97, 0x93, 0xd3, 0x59, - 0x64, 0xe7, 0x4f, 0xee, 0x6e, 0x02, 0x20, 0x8d, 0xbb, 0xe5, 0x84, 0x23, - 0xf2, 0x41, 0x5f, 0x9f, 0xb2, 0xcf, 0xe4, 0x7d, 0xa9, 0x3a, 0xde, 0xdf, - 0xd5, 0xb6, 0x90, 0xd5, 0x24, 0xa0, 0xe0, 0x47, 0xd4, 0xfc, 0x91, 0xd8, - 0xff, 0x9b, 0x40, 0xeb, 0x00, 0x2b, 0x35, 0x8c, 0x86, 0x3c, 0x71, 0xa0, - 0x84, 0xfc, 0x18, 0xf1, 0x16, 0x08, 0x99, 0xe5, 0x0c, 0x47, 0x83, 0xcb, - 0x7e, 0x7f, 0x96, 0x58, 0x72, 0x40, 0x10, 0x59, 0x28, 0x31, 0x2f, 0x0c, - 0x1c, 0xa1, 0x19, 0x7f, 0x78, 0x5a, 0x5b, 0x8b, 0x40, 0xe2, 0x52, 0xa3, - 0xda, 0xea, 0xec, 0x8f, 0x71, 0xbc, 0x5d, 0x9a, 0xb2, 0xe8, 0x86, 0x6b, - 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, - 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, - 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0xf6, 0xd4, 0x61, 0x0e, - 0xe7, 0x6c, 0x28, 0x1a, 0x40, 0x1b, 0x06, 0x94, 0x15, 0xb8, 0x36, 0x75, - 0xd6, 0x24, 0xc8, 0x9b, 0x0d, 0xde, 0x46, 0xc4, 0x4d, 0x88, 0x8c, 0xb5, - 0x17, 0xfd, 0x3a, 0x6b, 0x8b, 0xfc, 0x1a, 0xd8, 0x20, 0x32, 0xfa, 0x3d, - 0xe4, 0xac, 0xa3, 0xc4, 0x8c, 0xce, 0xac, 0xbf, 0x42, 0x77, 0x63, 0x24, - 0x8d, 0x33, 0x7f, 0xc1, 0x04, 0x61, 0x88, 0x6e, 0xae, 0x24, 0x52, 0x2f, - 0xc6, 0xe7, 0x50, 0x37, 0x91, 0x5c, 0xb7, 0x6a, 0x69, 0xeb, 0xfc, 0x51, - 0x70, 0x80, 0xa5, 0x77, 0x83, 0xe5, 0x3e, 0xba, 0x99, 0xfa, 0x5b, 0xfa, - 0x44, 0xc2, 0x17, 0xe5, 0x7b, 0xab, 0xfe, 0x58, 0x07, 0x0a, 0x3e, 0x04, - 0x21, 0x6c, 0x74, 0x03, 0x24, 0x15, 0x15, 0x1a, 0x63, 0xa3, 0xf5, 0xaf, - 0x38, 0xf9, 0xf0, 0x3f, 0x1c, 0xf2, 0x2f, 0xba, 0x9e, 0x7d, 0xac, 0x24, - 0x16, 0xc3, 0x93, 0x1e, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, - 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, - 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, - 0x7c, 0x21, 0x29, 0xeb, 0xdd, 0xd9, 0xc2, 0xc2, 0x87, 0x30, 0x82, 0xe0, - 0xe9, 0xa7, 0x35, 0x64, 0xc9, 0x67, 0xa9, 0xed, 0xd0, 0xc5, 0x91, 0x3b, - 0xc9, 0xf2, 0xd4, 0xd9, 0xc5, 0x89, 0x91, 0x4f, 0xc3, 0xd3, 0xbe, 0x3f, - 0xb1, 0x31, 0x98, 0x25, 0x25, 0x83, 0x24, 0xcd, 0x54, 0x99, 0xdb, 0x6f, - 0xa7, 0x2d, 0x31, 0xc4, 0x53, 0xe1, 0x69, 0xa6, 0x35, 0xd5, 0x8d, 0x11, - 0x70, 0xfa, 0x26, 0x1e, 0x28, 0xbd, 0xfe, 0x69, 0x57, 0x63, 0x6c, 0x33, - 0xe6, 0xb6, 0x10, 0x41, 0xb8, 0xbe, 0x1f, 0xf6, 0x3a, 0xbe, 0xb5, 0x6a, - 0x57, 0x66, 0xd0, 0xe4, 0x2a, 0x6b, 0xc3, 0xaa, 0x4f, 0xf2, 0xba, 0x5b, - 0xd7, 0xbe, 0xb3, 0xcc, 0x01, 0x81, 0x30, 0xdc, 0x9a, 0xd6, 0xab, 0x6a, - 0x87, 0x56, 0x69, 0x23, 0xef, 0x37, 0xac, 0xbc, 0xaf, 0xec, 0x35, 0xea, - 0x74, 0xc9, 0xbf, 0x9d, 0x06, 0x76, 0xbc, 0x1d, 0x01, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, - 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, - 0x37, 0x1a, 0x49, 0x4d, 0xcb, 0xf6, 0x96, 0x28, 0xa7, 0x00, 0x6b, 0x60, - 0x4b, 0xd1, 0x5a, 0x13, 0x03, 0xa3, 0xda, 0x7d, 0xb6, 0x2d, 0xaa, 0x2b, - 0x12, 0xf8, 0x5b, 0x0c, 0x81, 0xb4, 0x61, 0x51, 0x55, 0x40, 0x5c, 0x5e, - 0xb1, 0x5a, 0x71, 0xf9, 0x06, 0x13, 0xed, 0x2b, 0x89, 0xc0, 0x01, 0x55, - 0xa8, 0xaa, 0x45, 0x36, 0xc8, 0x84, 0xfc, 0x78, 0x69, 0x40, 0x55, 0x89, - 0x88, 0xbf, 0x02, 0xd3, 0xa7, 0xd9, 0xc5, 0x48, 0x6a, 0x73, 0xaa, 0x9b, - 0x54, 0x06, 0x6c, 0x88, 0x2b, 0xef, 0x5a, 0x3f, 0x70, 0xbd, 0xb8, 0x38, - 0x75, 0x9d, 0xe1, 0xf2, 0x8a, 0x8a, 0x69, 0x26, 0x6f, 0x07, 0xf1, 0x5b, - 0x00, 0x0a, 0x28, 0x41, 0x3a, 0xb1, 0xf8, 0x8d, 0xaa, 0x7f, 0xd5, 0x90, - 0x34, 0xdf, 0xc9, 0xa0, 0x59, 0x13, 0x36, 0x53, 0x28, 0x15, 0xed, 0x06, - 0x7c, 0x1c, 0x2d, 0x43, 0xab, 0x50, 0x3c, 0xc9, 0x4b, 0x14, 0xda, 0x36, - 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, - 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, - 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x7a, 0xc0, 0x5b, 0x5c, - 0x19, 0x50, 0x23, 0xa3, 0x8b, 0x3d, 0x80, 0x09, 0x63, 0x38, 0x5e, 0x65, - 0x16, 0xd0, 0xa3, 0xa3, 0xe7, 0x28, 0x5a, 0x5f, 0xa7, 0x0a, 0x4f, 0x0c, - 0x34, 0x95, 0x26, 0x70, 0x85, 0x11, 0x97, 0x36, 0xa2, 0x76, 0x64, 0xd9, - 0x7a, 0x8e, 0xa6, 0xa1, 0x51, 0x9a, 0x89, 0xda, 0x38, 0x46, 0xd0, 0x68, - 0x30, 0xde, 0x70, 0xf8, 0x88, 0x7d, 0xa9, 0x19, 0x45, 0x62, 0xb0, 0x6f, - 0xf3, 0xc4, 0xd7, 0xfd, 0x95, 0xb9, 0xd1, 0x1c, 0x7e, 0xb5, 0x58, 0xa6, - 0x63, 0xaf, 0xcb, 0x4b, 0x52, 0x83, 0x85, 0x0e, 0xed, 0x33, 0xfa, 0xb3, - 0x61, 0x90, 0x61, 0x68, 0xc2, 0xba, 0x54, 0x5d, 0x23, 0xc8, 0xfb, 0x0e, - 0x7d, 0x7a, 0x8c, 0xa9, 0x09, 0x2a, 0x21, 0x4e, 0x23, 0x02, 0xf2, 0x0d, - 0x84, 0xd1, 0xab, 0x8a, 0x13, 0x8c, 0x9a, 0x6a, 0x20, 0xd2, 0x09, 0x82, - 0xfb, 0x1e, 0xe6, 0x17, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, - 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, - 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, - 0xd1, 0x0f, 0xb4, 0xbd, 0x0e, 0x68, 0x31, 0x1a, 0x30, 0xc8, 0x92, 0xd8, - 0xaa, 0xcd, 0x04, 0x05, 0x87, 0x5c, 0x49, 0x68, 0xd2, 0xba, 0x3e, 0xb2, - 0x09, 0xa3, 0xb0, 0x8a, 0x59, 0xcf, 0xd2, 0x4b, 0xeb, 0xf7, 0xaa, 0x35, - 0xf6, 0x48, 0x57, 0x40, 0x6b, 0x0e, 0x26, 0x37, 0x2a, 0x91, 0x0c, 0xea, - 0x3f, 0x26, 0x97, 0xc8, 0xc4, 0x4a, 0x18, 0xd3, 0x06, 0x12, 0x93, 0xa5, - 0xad, 0x9a, 0x69, 0x6a, 0xc1, 0x4d, 0x2c, 0x31, 0x45, 0x03, 0x3a, 0x2e, - 0x24, 0xd5, 0xd0, 0xdf, 0xeb, 0xdb, 0xdf, 0xd0, 0x6f, 0x3d, 0x14, 0xa8, - 0x7a, 0x5f, 0x53, 0xe3, 0x9e, 0xb8, 0x68, 0x4d, 0x91, 0xe2, 0x0a, 0x48, - 0x94, 0x73, 0xd9, 0x84, 0x9a, 0x55, 0x3e, 0x42, 0x99, 0xe7, 0x1e, 0x73, - 0x64, 0xd4, 0x8d, 0x26, 0xf0, 0x16, 0x36, 0x08, 0x7b, 0xde, 0x8c, 0xe9, - 0x0a, 0x27, 0x3a, 0x90, 0x6f, 0x6c, 0x90, 0x66, 0x01, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, - 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, - 0x37, 0x1a, 0x49, 0x4d, 0xd1, 0x81, 0xc0, 0x8c, 0xc5, 0x6d, 0x18, 0x32, - 0xd7, 0x82, 0x81, 0xb4, 0x0f, 0x0b, 0x34, 0x91, 0xe1, 0xec, 0x57, 0xf2, - 0x17, 0xca, 0x56, 0x15, 0x1f, 0x7d, 0xa7, 0x27, 0x3a, 0xaf, 0xc3, 0x24, - 0x0e, 0x26, 0x24, 0x5e, 0x31, 0x77, 0x45, 0xfb, 0x9c, 0x71, 0xaf, 0x19, - 0x73, 0xd0, 0x33, 0x0b, 0x22, 0xd8, 0xde, 0xd0, 0x42, 0x79, 0xc0, 0x40, - 0x23, 0x44, 0x1e, 0xa3, 0xdf, 0x65, 0x48, 0x50, 0x96, 0xdc, 0xc5, 0x98, - 0x9b, 0x13, 0xa8, 0x29, 0x6e, 0x79, 0x02, 0xef, 0x50, 0xd0, 0xdf, 0x71, - 0x29, 0xd3, 0xa4, 0x3a, 0xa4, 0x13, 0xc9, 0x0f, 0xa3, 0xff, 0x73, 0x25, - 0xb0, 0xb8, 0xe0, 0x07, 0x02, 0xfd, 0xb5, 0x6f, 0xb4, 0x95, 0xc5, 0x49, - 0x8b, 0x13, 0xb4, 0xb9, 0x4f, 0xba, 0xd3, 0x83, 0xc2, 0x8c, 0x7a, 0xbe, - 0x9a, 0x0b, 0x7d, 0x03, 0x75, 0xf6, 0xbd, 0x84, 0xbd, 0xc0, 0xd4, 0x33, - 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, - 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, - 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x60, 0x31, 0xd7, 0xab, - 0x48, 0x21, 0x3b, 0x89, 0xc4, 0x3f, 0xe9, 0x30, 0xf6, 0xbc, 0x55, 0xf0, - 0xcf, 0x49, 0x4d, 0xf3, 0x3f, 0x66, 0xbe, 0x39, 0x3c, 0xcd, 0x53, 0x36, - 0xc6, 0xd6, 0x04, 0x62, 0x37, 0x64, 0x6e, 0x86, 0x83, 0x2f, 0x1a, 0xe3, - 0xd8, 0xcb, 0x6b, 0xcc, 0x18, 0x8c, 0xbc, 0x89, 0x97, 0x69, 0xa7, 0xe9, - 0x61, 0x1f, 0xe6, 0x92, 0x3e, 0x34, 0x7b, 0xfa, 0xee, 0x9d, 0xcb, 0x03, - 0x26, 0x8e, 0xd5, 0xc7, 0x11, 0xfb, 0x18, 0xc6, 0xe0, 0xd0, 0x7e, 0xb7, - 0x77, 0x2c, 0x6e, 0xc0, 0x48, 0x33, 0x34, 0x11, 0x1c, 0x7d, 0x55, 0xa5, - 0xca, 0xb3, 0x2d, 0xc6, 0x06, 0x59, 0x9b, 0x27, 0x8a, 0x1a, 0xd6, 0xa4, - 0x5c, 0x48, 0x9f, 0x72, 0x20, 0x69, 0xdc, 0xbd, 0xf0, 0xba, 0x39, 0x4c, - 0x70, 0xa5, 0x78, 0xb5, 0x87, 0x9c, 0x00, 0xe0, 0xc8, 0xf1, 0x8c, 0x03, - 0x3a, 0x2c, 0x1c, 0x2e, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, - 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, - 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, - 0x83, 0x09, 0xd7, 0x49, 0xb5, 0x30, 0x90, 0x05, 0x98, 0x2a, 0x2f, 0x01, - 0x25, 0x9f, 0x29, 0xf4, 0xa1, 0x30, 0x62, 0x62, 0x05, 0xbb, 0xa6, 0xda, - 0x2f, 0x82, 0x41, 0xad, 0x2f, 0x4a, 0x49, 0x2f, 0x06, 0x35, 0xd8, 0x2f, - 0x0c, 0xfa, 0xa5, 0x8c, 0x8e, 0xe7, 0x8a, 0x31, 0x83, 0x67, 0xf4, 0x34, - 0xa2, 0xa2, 0x88, 0x6c, 0x71, 0xc7, 0xf1, 0x4c, 0xca, 0xba, 0x0d, 0x57, - 0xc8, 0xef, 0x8f, 0x42, 0x9b, 0x2d, 0x86, 0x4a, 0x6a, 0x2c, 0xe7, 0x42, - 0x56, 0xe5, 0x36, 0x46, 0xf6, 0xa6, 0x25, 0x4c, 0x83, 0xc1, 0x46, 0x19, - 0x22, 0xf9, 0xcd, 0x19, 0x31, 0x55, 0xaa, 0x2b, 0xa5, 0x59, 0x78, 0x70, - 0x90, 0x84, 0x93, 0x55, 0xb8, 0x46, 0x4d, 0x54, 0xaa, 0x13, 0x1e, 0x5f, - 0x72, 0x9a, 0xb5, 0x05, 0x48, 0x28, 0x3d, 0x78, 0xaf, 0xd3, 0x25, 0x46, - 0x9b, 0xd1, 0x06, 0x60, 0x74, 0x34, 0x4e, 0x38, 0x01, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, - 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, - 0x37, 0x1a, 0x49, 0x4d, 0x79, 0xc6, 0x8a, 0xe3, 0xae, 0xf7, 0xaf, 0x3a, - 0xb6, 0xe4, 0xd3, 0xdd, 0x69, 0x6a, 0x24, 0x45, 0x6e, 0x16, 0x97, 0x1c, - 0x3e, 0xb8, 0x34, 0x46, 0xf3, 0xd2, 0x73, 0x3f, 0x83, 0x89, 0xd2, 0x0c, - 0x5a, 0x95, 0x79, 0x68, 0x8d, 0x99, 0x66, 0xad, 0xfc, 0x2d, 0x15, 0xfb, - 0x2b, 0xce, 0x6d, 0x15, 0x95, 0x82, 0x9d, 0xae, 0x31, 0x31, 0x3b, 0xd5, - 0x7a, 0xe3, 0x66, 0x40, 0x34, 0x8b, 0xc0, 0x2f, 0x94, 0x52, 0x55, 0x33, - 0xce, 0x37, 0x27, 0xe3, 0x35, 0x3f, 0x63, 0x58, 0x7f, 0x92, 0x2a, 0x4e, - 0xbd, 0x43, 0x10, 0x6e, 0xc6, 0xc3, 0x86, 0x31, 0xd8, 0xb8, 0xe0, 0x39, - 0x48, 0xf1, 0xa0, 0x49, 0xec, 0x14, 0x25, 0x1b, 0xf1, 0x2d, 0x6f, 0x1a, - 0x96, 0xb2, 0x0c, 0x08, 0x86, 0x9b, 0x9f, 0xfa, 0xe5, 0x1a, 0x00, 0xb6, - 0x54, 0x35, 0xcd, 0x4a, 0xb2, 0x93, 0x6e, 0x09, 0xb4, 0xb1, 0x61, 0x4c, - 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, - 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, - 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0xdb, 0x04, 0x30, 0x03, - 0xcb, 0xf5, 0x5e, 0xe4, 0xbc, 0x0e, 0xcf, 0x6f, 0x40, 0x4d, 0xfa, 0x18, - 0x32, 0x71, 0x77, 0x86, 0x99, 0x1d, 0xb7, 0xb6, 0x34, 0x8a, 0x42, 0x0e, - 0x08, 0x86, 0x14, 0x50, 0x2e, 0x67, 0x22, 0x47, 0x1e, 0x39, 0xfb, 0x7d, - 0x35, 0xc4, 0x12, 0x18, 0x0e, 0x30, 0x86, 0x19, 0xfb, 0x76, 0x16, 0x19, - 0x6d, 0x8c, 0x75, 0x95, 0x23, 0x69, 0x48, 0x28, 0xfd, 0x9b, 0x0b, 0x64, - 0x91, 0xe6, 0x92, 0xd3, 0x1a, 0x8d, 0x5f, 0x08, 0xa9, 0xee, 0x34, 0x8b, - 0xe2, 0x71, 0x86, 0x8c, 0xf8, 0xa8, 0x27, 0x08, 0xd1, 0x00, 0x12, 0x77, - 0xce, 0x0b, 0xae, 0x05, 0x38, 0x38, 0x3b, 0x6f, 0xc8, 0xda, 0x82, 0x9c, - 0x50, 0x72, 0x45, 0xaf, 0xad, 0x71, 0x4a, 0x6b, 0x19, 0x6b, 0x7c, 0x1e, - 0x6e, 0xe8, 0x87, 0xaa, 0x9b, 0xe5, 0x38, 0x9a, 0x22, 0x19, 0xd2, 0x9a, - 0x94, 0x15, 0x70, 0x4c, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, - 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, - 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, - 0xd6, 0xbc, 0xf5, 0x83, 0xf1, 0xfe, 0xde, 0xf5, 0xd8, 0xae, 0xf8, 0xb3, - 0x54, 0x9d, 0x69, 0x55, 0x8b, 0x2b, 0xa9, 0x5e, 0x78, 0xaf, 0x24, 0x05, - 0x58, 0x70, 0x69, 0xcd, 0x88, 0xc4, 0x0f, 0x4f, 0x68, 0xc6, 0x43, 0x2f, - 0xa6, 0x92, 0xea, 0x6e, 0xb9, 0x77, 0x74, 0xae, 0x8c, 0xfd, 0x9f, 0x79, - 0xc4, 0xe1, 0x7a, 0x07, 0x6c, 0x38, 0x40, 0xdd, 0xf9, 0x1c, 0x6d, 0x19, - 0xc8, 0xf1, 0xe0, 0x18, 0xc2, 0xa5, 0xf2, 0x5f, 0xde, 0x70, 0x37, 0x1c, - 0x82, 0x56, 0x5e, 0xde, 0x09, 0x70, 0x48, 0xad, 0xb8, 0x73, 0xe7, 0x90, - 0x36, 0x88, 0x4d, 0x68, 0x32, 0x0b, 0x1d, 0x77, 0x71, 0x9a, 0x21, 0x1c, - 0x12, 0x3a, 0x4e, 0x82, 0x34, 0xc7, 0xfa, 0xa9, 0x2b, 0x10, 0xa1, 0x6b, - 0x9b, 0x11, 0xdb, 0x82, 0x42, 0x91, 0x02, 0x88, 0xe4, 0xba, 0x5f, 0x57, - 0xd9, 0xac, 0x30, 0x98, 0x05, 0xa8, 0x2c, 0x4d, 0x01, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, - 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, - 0x37, 0x1a, 0x49, 0x4d, 0xc5, 0xb5, 0x00, 0xde, 0x7e, 0x5c, 0xfe, 0x18, - 0xec, 0xaa, 0x55, 0x85, 0xcb, 0x66, 0x55, 0x52, 0xad, 0xcb, 0x74, 0x28, - 0x93, 0x85, 0xd8, 0x94, 0x97, 0x4d, 0x64, 0x6e, 0xd8, 0xfe, 0x99, 0x3a, - 0x57, 0x1d, 0x51, 0xc1, 0xea, 0xdd, 0xd2, 0x38, 0xdd, 0x3d, 0xba, 0x2a, - 0x71, 0x96, 0xa2, 0x97, 0xa6, 0x00, 0xc9, 0xc6, 0x65, 0xbb, 0xc6, 0x27, - 0xd6, 0x04, 0x49, 0x3a, 0x5c, 0xb3, 0xb0, 0x05, 0x05, 0xea, 0x70, 0x92, - 0xe7, 0xf2, 0x43, 0x67, 0x49, 0x6b, 0x96, 0x0f, 0x95, 0x7a, 0x15, 0x3a, - 0x4f, 0x0f, 0xf5, 0xf6, 0xf1, 0x51, 0xe7, 0x12, 0x83, 0x8d, 0x2a, 0xad, - 0xb3, 0x29, 0x0b, 0x66, 0x20, 0x30, 0xf5, 0x8f, 0xb9, 0x81, 0x61, 0x2d, - 0xb4, 0x44, 0xe7, 0x89, 0x89, 0x1b, 0x4b, 0xb8, 0x90, 0x2d, 0x54, 0xa7, - 0x8e, 0x58, 0x6c, 0x3c, 0xe1, 0x31, 0xba, 0x3e, 0xbf, 0xe2, 0xb4, 0x5c, - 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, - 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, - 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x72, 0xdc, 0xc0, 0xee, - 0x8c, 0x48, 0x9a, 0x30, 0x4b, 0x5f, 0xfc, 0x54, 0xe7, 0x0b, 0xc7, 0x1d, - 0xfc, 0x66, 0x27, 0x13, 0x6d, 0x4d, 0x0c, 0x15, 0x76, 0x71, 0x51, 0xf3, - 0x25, 0xfd, 0x2c, 0x37, 0xf7, 0xc0, 0xce, 0xcc, 0xa3, 0x90, 0x0b, 0xbd, - 0x5e, 0x6e, 0x09, 0x8a, 0xde, 0x6f, 0x9c, 0x6d, 0xdc, 0xf1, 0xeb, 0x6b, - 0xd0, 0x3d, 0x38, 0x8c, 0xd0, 0xbf, 0xaf, 0xbf, 0xe2, 0xb3, 0x95, 0x4f, - 0x4e, 0x11, 0x43, 0xe0, 0x90, 0x60, 0xca, 0x61, 0xc5, 0xab, 0xfc, 0xd5, - 0x19, 0x02, 0xe6, 0xee, 0x32, 0xd3, 0x93, 0xc1, 0x6c, 0x69, 0x07, 0xba, - 0x37, 0x7a, 0x55, 0xed, 0xb3, 0xda, 0xbf, 0x3a, 0x56, 0x67, 0xbb, 0x94, - 0xc3, 0x70, 0x3e, 0xf6, 0x35, 0xdf, 0x5d, 0xf6, 0xec, 0x4c, 0x76, 0x88, - 0x22, 0xcb, 0xb8, 0x87, 0x6f, 0x73, 0x48, 0xc5, 0xae, 0x2f, 0x89, 0x18, - 0xab, 0x89, 0x0c, 0x4e, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, - 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, - 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, - 0x62, 0x6e, 0xaf, 0x1e, 0xc0, 0xc8, 0xa0, 0x0f, 0x41, 0x9c, 0x9a, 0x41, - 0x06, 0xeb, 0x2e, 0xe5, 0x1a, 0xf4, 0x0d, 0x48, 0x40, 0x95, 0x0e, 0xb0, - 0xbb, 0xc3, 0x0c, 0x66, 0x7a, 0xd9, 0xb4, 0x0c, 0x5b, 0x03, 0x93, 0xa6, - 0xa8, 0x9a, 0xea, 0x96, 0x44, 0xcb, 0x12, 0xae, 0x40, 0x60, 0x03, 0xfc, - 0xb7, 0x1b, 0x2d, 0xa0, 0x12, 0xd3, 0x30, 0x74, 0x66, 0xcc, 0xa4, 0xfa, - 0xca, 0x5b, 0x20, 0x25, 0x7f, 0x66, 0x6d, 0xad, 0x3a, 0x65, 0x13, 0xc3, - 0x51, 0x00, 0x54, 0x5c, 0x61, 0x0c, 0x76, 0xb7, 0x8b, 0xe6, 0x97, 0xb1, - 0x94, 0x78, 0x4d, 0x2c, 0x33, 0xc7, 0xf0, 0x09, 0xba, 0x2d, 0xf5, 0x60, - 0x6d, 0x86, 0x75, 0x71, 0xed, 0xc9, 0x73, 0x2d, 0x73, 0x2d, 0x8a, 0xfb, - 0x53, 0xa3, 0x1a, 0xc0, 0xe6, 0x8c, 0xd0, 0x6f, 0x98, 0xfc, 0x00, 0xfe, - 0x8e, 0xd9, 0x2a, 0x39, 0x5c, 0xef, 0x79, 0x1b, 0x01, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, - 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, - 0x37, 0x1a, 0x49, 0x4d, 0x1b, 0x0e, 0xb3, 0x6e, 0xec, 0x41, 0x47, 0x9c, - 0x86, 0x65, 0xba, 0x43, 0xfd, 0xef, 0xb4, 0x42, 0xca, 0x96, 0x39, 0xec, - 0x62, 0x22, 0x73, 0xf7, 0xed, 0xd3, 0x27, 0xef, 0x57, 0x7f, 0x9b, 0x61, - 0x98, 0x00, 0x63, 0xbb, 0x4f, 0x68, 0x42, 0x1e, 0xe3, 0xea, 0x08, 0xf3, - 0xa4, 0xe2, 0x9e, 0x71, 0x0a, 0x45, 0x90, 0x7f, 0x93, 0x18, 0x1d, 0x1e, - 0xf1, 0x47, 0x79, 0x91, 0xe4, 0x73, 0xbf, 0x5f, 0x7e, 0xcb, 0x83, 0xde, - 0xde, 0x88, 0xa7, 0xe0, 0x65, 0x01, 0x5b, 0x94, 0x64, 0xa8, 0x12, 0xb3, - 0xde, 0x22, 0x82, 0x62, 0x5d, 0x30, 0x11, 0xc7, 0x7a, 0xa8, 0xa0, 0xd6, - 0xab, 0x70, 0x88, 0x59, 0x92, 0x3f, 0xf2, 0x6b, 0x25, 0xbb, 0x11, 0xb8, - 0xda, 0x29, 0x5e, 0xde, 0x29, 0xf0, 0x50, 0x8d, 0xf2, 0x76, 0x05, 0xc0, - 0xb8, 0x9f, 0xa1, 0xe7, 0x7e, 0x85, 0x07, 0xfa, 0xda, 0xed, 0x97, 0x0a, - 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, - 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, - 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x0e, 0xa5, 0x09, 0x60, - 0x5e, 0xeb, 0xb2, 0x0a, 0xda, 0x15, 0x84, 0xad, 0xd7, 0xf2, 0x0e, 0x1a, - 0xce, 0x93, 0xea, 0xfa, 0x1d, 0xf5, 0xfb, 0x2d, 0x45, 0x02, 0x26, 0x89, - 0xf5, 0x4a, 0x1f, 0x4a, 0x4b, 0x39, 0xfb, 0xdd, 0x38, 0xef, 0x39, 0x55, - 0x55, 0xdf, 0xc4, 0x5e, 0x23, 0x83, 0x02, 0x48, 0x60, 0xf7, 0x1b, 0xcc, - 0xe8, 0x6f, 0x86, 0xdf, 0x0e, 0xcf, 0xa1, 0x3d, 0x6e, 0xd4, 0xb4, 0x20, - 0x5d, 0xee, 0xf2, 0xe7, 0x78, 0xb8, 0x40, 0xf7, 0xad, 0xe2, 0x81, 0xe7, - 0xfa, 0x26, 0x92, 0x0f, 0x24, 0x87, 0xc9, 0x44, 0x5f, 0x90, 0x9d, 0x25, - 0xaa, 0xb7, 0x95, 0x76, 0x89, 0x53, 0xd5, 0x5f, 0xe8, 0xa6, 0x59, 0xba, - 0x77, 0xf1, 0x05, 0xe8, 0x2e, 0x5d, 0x24, 0x31, 0x59, 0xf8, 0x13, 0x02, - 0xfe, 0x9e, 0x22, 0x7b, 0xa7, 0xb1, 0xa1, 0xba, 0xb0, 0xb7, 0xbd, 0xd1, - 0x12, 0x38, 0x99, 0x61, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, - 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, - 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, - 0xb2, 0xcc, 0xab, 0x2f, 0x02, 0xe8, 0x24, 0xdd, 0x52, 0xf7, 0xe4, 0x98, - 0x90, 0x56, 0x66, 0x7c, 0xef, 0x7c, 0x42, 0xf3, 0x4a, 0x71, 0x47, 0x18, - 0x17, 0x8c, 0x37, 0xac, 0x03, 0xde, 0xf7, 0x55, 0x75, 0xd4, 0x7a, 0x60, - 0x4e, 0xc3, 0xd0, 0xc4, 0xd4, 0x29, 0xd6, 0xc2, 0x5a, 0x10, 0x42, 0x98, - 0x1f, 0xcd, 0x91, 0xe2, 0xe5, 0xc3, 0x62, 0x26, 0x01, 0xda, 0x4b, 0xde, - 0xf2, 0x37, 0xab, 0x37, 0x30, 0xaf, 0x44, 0x39, 0xb0, 0xa0, 0xa1, 0x84, - 0xbb, 0x01, 0x51, 0x77, 0x94, 0x9f, 0x1f, 0x67, 0x92, 0x39, 0x00, 0x69, - 0x7a, 0x68, 0x79, 0xf4, 0x8e, 0x28, 0xde, 0xe0, 0x4f, 0x0a, 0x4d, 0x00, - 0xf0, 0xc3, 0xf8, 0x2a, 0xd3, 0x5e, 0xc2, 0x92, 0x9d, 0x1f, 0x7e, 0x77, - 0x88, 0x25, 0x9e, 0xd7, 0xaa, 0x95, 0xbd, 0x5a, 0x85, 0x61, 0x54, 0x41, - 0xad, 0x8f, 0x8f, 0x02, 0x6b, 0xd5, 0x8d, 0x40, 0x01, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, - 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, - 0x37, 0x1a, 0x49, 0x4d, 0xc0, 0xb2, 0x14, 0x11, 0x7c, 0xd7, 0xd4, 0x99, - 0xa2, 0xd1, 0x3f, 0xf2, 0xf9, 0x9c, 0x7e, 0xd9, 0x72, 0x9b, 0x8b, 0x73, - 0xeb, 0x6c, 0x2b, 0xc0, 0x16, 0x3b, 0x8d, 0xa3, 0x36, 0x95, 0xfa, 0x44, - 0xd9, 0xd8, 0x58, 0xfd, 0x23, 0x67, 0x7f, 0xa2, 0xc4, 0x67, 0x69, 0xbb, - 0x18, 0x52, 0xc8, 0x38, 0xef, 0xad, 0x36, 0x79, 0x0e, 0x43, 0x17, 0x87, - 0x3d, 0x1e, 0x6e, 0xf7, 0x06, 0xa5, 0xc2, 0x10, 0x55, 0x73, 0x3a, 0x04, - 0x3a, 0x32, 0x33, 0xde, 0x21, 0x54, 0xbf, 0xde, 0xd0, 0x5f, 0x2d, 0xe8, - 0x3a, 0x6f, 0x9b, 0xcb, 0x59, 0x32, 0x95, 0xb7, 0x63, 0xea, 0x6a, 0x07, - 0x64, 0xa7, 0x6f, 0x3d, 0x55, 0x2a, 0x89, 0x52, 0xda, 0x87, 0xbf, 0xaa, - 0xd4, 0xbf, 0x97, 0xc0, 0xea, 0xfc, 0xc3, 0x2f, 0x2f, 0xcf, 0x8f, 0xf5, - 0x7d, 0xfe, 0x0f, 0xf3, 0x13, 0x23, 0x91, 0x76, 0xa8, 0xc5, 0x61, 0x5a, - 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, - 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, - 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x5c, 0xbf, 0x5f, 0xe9, - 0x15, 0x89, 0xfb, 0xdb, 0xaf, 0x98, 0x7b, 0x9c, 0x9d, 0x4f, 0x11, 0xba, - 0xaf, 0x71, 0x71, 0xc8, 0x09, 0x4e, 0xaa, 0xbe, 0x20, 0x14, 0x24, 0xc8, - 0x5d, 0xa1, 0x18, 0x3b, 0xf6, 0x48, 0xd9, 0x1a, 0x75, 0x26, 0x54, 0xcf, - 0xe7, 0xbe, 0xab, 0x24, 0x8f, 0x0c, 0x9c, 0xca, 0x23, 0x33, 0xb6, 0xd6, - 0x42, 0x65, 0x37, 0x5f, 0x35, 0xe9, 0x06, 0xe3, 0x0f, 0xb6, 0x73, 0x1e, - 0x4f, 0x5e, 0x94, 0x44, 0x6e, 0xdf, 0xe1, 0x2a, 0x17, 0x97, 0x9a, 0xa1, - 0x19, 0x1b, 0x3f, 0xa3, 0x25, 0x7a, 0xf1, 0x51, 0xfa, 0xdd, 0x5f, 0x80, - 0x35, 0xcc, 0x90, 0x2b, 0x8e, 0xa7, 0x5b, 0x4d, 0x9d, 0x0f, 0x13, 0xc7, - 0xa6, 0x87, 0x8a, 0xce, 0xe4, 0x45, 0xf9, 0xdc, 0xbf, 0xe8, 0xbc, 0xc1, - 0x5b, 0xfa, 0x51, 0x81, 0xa9, 0x7b, 0x26, 0xa9, 0xdd, 0xa8, 0xdf, 0xcf, - 0x29, 0xb3, 0xbe, 0x14, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, - 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, - 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, - 0x4d, 0x90, 0x6a, 0xf7, 0xb0, 0xff, 0x6a, 0xac, 0xaf, 0x33, 0xf0, 0x2d, - 0x6c, 0x58, 0x3e, 0x8d, 0x45, 0x5f, 0x8b, 0xd9, 0x08, 0x69, 0x0e, 0x8d, - 0x4f, 0x07, 0x87, 0x5b, 0xdb, 0x17, 0xb9, 0x4e, 0xcb, 0x48, 0x41, 0x0c, - 0x88, 0xa8, 0x23, 0x79, 0x4a, 0x9d, 0x9a, 0x31, 0x72, 0xe3, 0x1b, 0xd4, - 0x4d, 0xc5, 0xb1, 0x90, 0xdb, 0x9b, 0xef, 0x03, 0xff, 0x11, 0x42, 0x29, - 0xb6, 0xc6, 0xc2, 0x1e, 0x70, 0x80, 0xaf, 0xea, 0x0a, 0xd3, 0x2d, 0xb9, - 0xea, 0x6e, 0xbd, 0x5c, 0xac, 0x97, 0xa9, 0x08, 0x7d, 0x51, 0xb3, 0x72, - 0x62, 0x70, 0x4f, 0x19, 0xa9, 0xee, 0xe4, 0xc7, 0x06, 0x3f, 0xe3, 0x3d, - 0x1e, 0x02, 0x0e, 0xb5, 0x57, 0x3f, 0x14, 0x23, 0xda, 0x5b, 0xf3, 0xf3, - 0xf6, 0x62, 0x4e, 0x33, 0x72, 0x41, 0x4d, 0xb1, 0x87, 0xa6, 0xee, 0x68, - 0x62, 0xb1, 0x71, 0x7e, 0xb8, 0xa9, 0xa7, 0x6f, 0x01, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, - 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, - 0x37, 0x1a, 0x49, 0x4d, 0xa9, 0x53, 0x42, 0x6f, 0xe4, 0x79, 0xbd, 0xc7, - 0x37, 0x51, 0xc9, 0xe6, 0xfe, 0x9b, 0x63, 0x03, 0x25, 0xdb, 0xb6, 0xf9, - 0xdb, 0x80, 0x91, 0x01, 0x3f, 0xdd, 0xee, 0xe9, 0x9e, 0x60, 0xa6, 0x37, - 0x43, 0x16, 0x9b, 0x92, 0x8b, 0xf9, 0xd9, 0x21, 0xa7, 0xf9, 0x05, 0x21, - 0x00, 0xaa, 0x35, 0x9c, 0x08, 0xa5, 0x66, 0xba, 0xcb, 0xe3, 0x45, 0xfd, - 0x8e, 0xbb, 0x5e, 0x97, 0x2a, 0xf9, 0x99, 0x6c, 0x8f, 0x92, 0xe8, 0x7d, - 0x4f, 0x6d, 0x9c, 0x6d, 0xae, 0x17, 0xe1, 0x16, 0xde, 0x03, 0x35, 0x01, - 0x76, 0xe6, 0x5a, 0x3b, 0x45, 0xb5, 0x43, 0x21, 0x59, 0xa9, 0x87, 0x38, - 0x2f, 0x07, 0x94, 0x60, 0x26, 0xb9, 0xd2, 0xb5, 0xe3, 0x3b, 0x57, 0xa0, - 0xb0, 0xb6, 0xfe, 0x10, 0x2e, 0xb6, 0xbd, 0xdf, 0x24, 0xe1, 0xc3, 0x8c, - 0xbb, 0x08, 0x62, 0x84, 0x7e, 0x37, 0x25, 0x5c, 0xd1, 0x65, 0xf2, 0x45, - 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, - 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, - 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x4f, 0x72, 0x7c, 0xfb, - 0xb3, 0x7d, 0x0e, 0xa5, 0x2f, 0x39, 0x76, 0x80, 0xff, 0x08, 0xac, 0xe7, - 0x21, 0x18, 0x3f, 0x03, 0xab, 0xb2, 0xde, 0x9c, 0x83, 0x47, 0xa7, 0x90, - 0x1e, 0x2c, 0xa3, 0x11, 0x14, 0x4e, 0x27, 0x52, 0x70, 0x56, 0xa6, 0x87, - 0x1a, 0x45, 0x52, 0xf4, 0x9f, 0xed, 0x73, 0xb2, 0xa2, 0x01, 0x55, 0xbd, - 0x6a, 0x32, 0xd4, 0x15, 0x2e, 0x7e, 0x05, 0xbb, 0xb5, 0x27, 0x46, 0x58, - 0x49, 0x2b, 0xab, 0x60, 0x30, 0xbb, 0x6d, 0x8a, 0xd8, 0x85, 0x78, 0x25, - 0x19, 0x8a, 0x9d, 0xc9, 0x3e, 0xf2, 0xb0, 0x65, 0x1b, 0xe2, 0xfd, 0x30, - 0x66, 0x4b, 0xb5, 0x6b, 0xfd, 0x7e, 0xe3, 0x1c, 0x31, 0x08, 0xa6, 0xb2, - 0xda, 0x48, 0x8d, 0xeb, 0xb0, 0xac, 0xf0, 0xf5, 0x6e, 0xe5, 0x4b, 0xc7, - 0xf9, 0xfb, 0xca, 0xbd, 0x8c, 0x4e, 0x28, 0xa1, 0xe9, 0xf6, 0x7f, 0x12, - 0xd3, 0x5d, 0x88, 0x0b, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, - 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, - 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, - 0x8b, 0x4e, 0xfd, 0x3f, 0x25, 0xc1, 0xc0, 0x59, 0x5a, 0xd5, 0x46, 0xa0, - 0x79, 0x62, 0x4e, 0x29, 0xc6, 0x1f, 0x75, 0x8a, 0x8c, 0x82, 0x5e, 0x15, - 0x72, 0xd5, 0x58, 0x66, 0x81, 0x74, 0x9c, 0x40, 0x1d, 0x98, 0x69, 0x66, - 0xf6, 0xcb, 0x81, 0x16, 0xd4, 0xa4, 0xbc, 0x13, 0xd6, 0x85, 0x54, 0x5d, - 0xb3, 0x1b, 0x28, 0xa3, 0x56, 0x36, 0x46, 0xf6, 0xc2, 0x98, 0x24, 0xbb, - 0x35, 0xfe, 0xa2, 0x6a, 0x0b, 0xb7, 0x27, 0x6c, 0xb4, 0xda, 0x41, 0x1b, - 0x37, 0x2f, 0x76, 0x99, 0x63, 0x28, 0x79, 0xc0, 0xc5, 0x38, 0x5d, 0xf2, - 0x16, 0x23, 0x40, 0xa5, 0xb7, 0x36, 0x5a, 0xd1, 0x91, 0x4a, 0xbe, 0x6f, - 0x76, 0x8e, 0x06, 0x8f, 0x7c, 0x29, 0x10, 0x51, 0x6a, 0x42, 0xde, 0x5b, - 0xed, 0x80, 0x38, 0xf4, 0xf3, 0xf2, 0x5c, 0x76, 0xf2, 0x78, 0xbd, 0x0d, - 0x0c, 0xe8, 0x78, 0x68, 0xfc, 0x7c, 0x9c, 0x55, 0x01, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, - 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, - 0x37, 0x1a, 0x49, 0x4d, 0x65, 0xfe, 0xff, 0xbf, 0x05, 0x2f, 0x3c, 0x1e, - 0x02, 0xfa, 0x35, 0x81, 0xef, 0x42, 0xb9, 0xa8, 0x5f, 0x6d, 0x50, 0xaf, - 0x80, 0x74, 0xb5, 0x76, 0xad, 0xd0, 0x5a, 0xc0, 0x44, 0xb0, 0x49, 0x2a, - 0x1c, 0x35, 0x33, 0x93, 0x5f, 0x00, 0x08, 0x49, 0x94, 0xb7, 0xab, 0x66, - 0xd3, 0xd7, 0xcc, 0xfe, 0x68, 0x9e, 0xf0, 0xae, 0x7e, 0x26, 0x1d, 0x4a, - 0x85, 0xf7, 0x0c, 0xaa, 0xd6, 0x4f, 0x0c, 0x6a, 0xde, 0xd6, 0x8b, 0xb8, - 0xc0, 0xbe, 0x0b, 0xab, 0x9a, 0x3f, 0xe4, 0x8a, 0x1c, 0x1b, 0x81, 0x1b, - 0x8d, 0x6e, 0xeb, 0xa3, 0xac, 0x44, 0x9a, 0x51, 0x29, 0x50, 0x2d, 0x93, - 0xa0, 0x23, 0xb8, 0x30, 0x33, 0x15, 0xe0, 0x11, 0x8b, 0x6e, 0xe3, 0x6f, - 0x62, 0xc1, 0xba, 0x8b, 0x25, 0xac, 0xd3, 0x13, 0x47, 0xee, 0xc5, 0x56, - 0x62, 0x9e, 0xbd, 0x5e, 0x03, 0xdb, 0x78, 0xde, 0x5e, 0xf9, 0xb9, 0x4e, - 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, - 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, - 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x00, 0x00, 0x00, 0xd0, - 0x87, 0x1a, 0x49, 0x23, 0x54, 0x58, 0x48, 0x00, 0x80, 0x87, 0x16, 0x01, - 0xa0, 0xbd, 0x8c, 0x8b, 0x01, 0x1a, 0xdc, 0xfc, 0x0f, 0xe2, 0x98, 0xa5, - 0x10, 0x78, 0x25, 0x6f, 0x9b, 0x99, 0x99, 0x59, 0x82, 0xef, 0x3b, 0xc0, - 0xa7, 0xd6, 0x7c, 0xb6, 0x5e, 0xe0, 0xd5, 0x9b, 0x31, 0x32, 0xf2, 0xf9, - 0xde, 0x89, 0xa6, 0x89, 0x90, 0x6d, 0xa8, 0x10, 0xb0, 0x71, 0x7a, 0x1e, - 0x85, 0xb0, 0x81, 0x18, 0x2a, 0x71, 0xb1, 0x7b, 0xbd, 0x29, 0xdc, 0x08, - 0x0e, 0xc6, 0xc5, 0xfd, 0x4d, 0xce, 0x87, 0x98, 0xd2, 0xe6, 0x0f, 0x11, - 0x2f, 0x7e, 0xf0, 0xe0, 0xd8, 0x47, 0x1d, 0x04, 0xc6, 0x9b, 0xde, 0x35, - 0x20, 0x57, 0x3e, 0xd4, 0x57, 0xb8, 0x20, 0x9d, 0x95, 0xae, 0xb6, 0x21, - 0x82, 0xac, 0xde, 0xdd, 0x9b, 0x60, 0x94, 0xe9, 0x4b, 0xb4, 0x59, 0xef, - 0x06, 0xa7, 0xe4, 0x65, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, - 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, - 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, - 0x00, 0x00, 0x00, 0x30, 0xc2, 0x35, 0xb2, 0xc0, 0xe8, 0x0e, 0x8a, 0xaf, - 0x28, 0x09, 0x1e, 0x7e, 0x9e, 0x37, 0x96, 0x87, 0x92, 0x36, 0x29, 0xd7, - 0x70, 0xd5, 0x84, 0xef, 0xb7, 0x50, 0x42, 0x00, 0xcd, 0xcc, 0xcc, 0x04, - 0x5a, 0x14, 0xea, 0x45, 0xb8, 0x82, 0x05, 0x94, 0x10, 0x12, 0xd3, 0x2e, - 0x7d, 0x94, 0x1b, 0x04, 0x9a, 0x3c, 0x6d, 0xa5, 0x6c, 0xbb, 0xbd, 0x4e, - 0x34, 0xe1, 0xe0, 0x16, 0xcb, 0x55, 0x94, 0x0a, 0x7a, 0x18, 0xa0, 0xdd, - 0x7b, 0x74, 0xd0, 0x54, 0x3c, 0xb9, 0xcd, 0x54, 0xd0, 0x97, 0xfd, 0xfa, - 0xd5, 0x19, 0xe9, 0x34, 0x4e, 0x6c, 0xa1, 0xea, 0xf3, 0x7f, 0x31, 0x5e, - 0xf8, 0x88, 0xbe, 0xec, 0x02, 0xf0, 0xce, 0x75, 0xdb, 0x51, 0xfa, 0x68, - 0x41, 0x49, 0x10, 0x03, 0xab, 0xff, 0x7f, 0x3a, 0xf5, 0x29, 0xa9, 0x1c, - 0xc3, 0x3d, 0x5f, 0x4d, 0x66, 0x9b, 0x65, 0x04, 0x01, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, - 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, - 0x37, 0x1a, 0x49, 0x4d, 0x00, 0x00, 0x00, 0x24, 0x7a, 0x63, 0x86, 0x07, - 0x09, 0xeb, 0x71, 0x66, 0xa4, 0x43, 0x09, 0xeb, 0xbc, 0x2d, 0x8c, 0x2c, - 0xae, 0xeb, 0x7e, 0xde, 0xbf, 0x45, 0x0a, 0x22, 0x91, 0x27, 0x00, 0x00, - 0x67, 0x66, 0x66, 0x76, 0xa0, 0x3c, 0xc5, 0xd4, 0xd2, 0xcf, 0xd3, 0x0d, - 0x97, 0x92, 0x52, 0x7c, 0xf8, 0x5c, 0x73, 0x4d, 0xc5, 0x31, 0x62, 0x40, - 0x76, 0xe7, 0xb5, 0xfb, 0xaa, 0x68, 0x8e, 0x45, 0xc2, 0xf6, 0xff, 0x3b, - 0xf3, 0x53, 0xd0, 0x30, 0x9b, 0x29, 0x1d, 0x86, 0x25, 0xbd, 0x0f, 0xf9, - 0x53, 0x91, 0x10, 0x4c, 0xf5, 0x4a, 0xf3, 0x13, 0x04, 0xf4, 0x79, 0x12, - 0xc1, 0x4a, 0x58, 0x21, 0x3c, 0x74, 0xe0, 0x5d, 0x22, 0x2e, 0x60, 0x2a, - 0xca, 0x3d, 0x5f, 0xc2, 0xcb, 0xf2, 0x47, 0x71, 0xd0, 0xd6, 0x63, 0xca, - 0xf3, 0xd0, 0xe8, 0x39, 0x99, 0x3b, 0xff, 0x06, 0x3e, 0xe5, 0xcd, 0x6b, - 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, - 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, - 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x00, 0x00, 0x00, 0xac, - 0x99, 0x37, 0xb3, 0x60, 0xfa, 0x50, 0xcb, 0x16, 0x8f, 0x95, 0x6b, 0xcc, - 0x70, 0x69, 0x74, 0x2e, 0x07, 0xd5, 0x81, 0x98, 0xee, 0x16, 0x88, 0x9b, - 0x17, 0x00, 0x00, 0x00, 0x34, 0x33, 0x33, 0xa9, 0x30, 0x56, 0xe3, 0x6e, - 0x00, 0xe2, 0x23, 0x99, 0x51, 0x52, 0x76, 0xe2, 0x4c, 0x35, 0xcc, 0xf4, - 0xbe, 0x8b, 0x0f, 0xdf, 0xbf, 0xaa, 0x2a, 0xbb, 0x59, 0x1f, 0xbe, 0x5c, - 0xc0, 0x27, 0xda, 0x2d, 0x45, 0x2e, 0x95, 0x8f, 0xb7, 0x50, 0x74, 0xd9, - 0xec, 0x14, 0xb8, 0x4c, 0x0d, 0x7b, 0xc9, 0xe0, 0x02, 0xd1, 0x9e, 0x56, - 0xc9, 0x27, 0xf7, 0xa8, 0xa6, 0xa1, 0xdc, 0x38, 0x3f, 0xff, 0xf9, 0x30, - 0xfa, 0x8c, 0xc8, 0xab, 0x60, 0x86, 0xf0, 0x52, 0xc4, 0x01, 0xc2, 0x9c, - 0xb3, 0x42, 0x51, 0x52, 0x54, 0x35, 0x83, 0x05, 0xb2, 0xd5, 0xc6, 0x9b, - 0x7a, 0x43, 0xa6, 0x6c, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, - 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, - 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, - 0x00, 0x00, 0x00, 0xa5, 0xd1, 0xee, 0x7c, 0xd0, 0xba, 0xcb, 0x9d, 0x26, - 0x7f, 0xd1, 0xed, 0xba, 0xb3, 0x89, 0xf0, 0x52, 0xc2, 0x4f, 0x0c, 0xf0, - 0x23, 0xdd, 0x15, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x99, 0x99, 0xe5, - 0x87, 0xd2, 0xdc, 0x99, 0xaf, 0xaf, 0x6f, 0xca, 0x7f, 0x10, 0x1c, 0x8b, - 0x6e, 0xb8, 0xd8, 0xc5, 0x9e, 0xd0, 0x03, 0xce, 0x57, 0x95, 0xbd, 0xcc, - 0xba, 0x0f, 0x5f, 0x2e, 0xbf, 0x91, 0x50, 0x10, 0xfb, 0xe2, 0x60, 0x0a, - 0x57, 0xb1, 0xc7, 0xdb, 0xc3, 0x18, 0x08, 0x02, 0x48, 0xc8, 0xea, 0xa0, - 0x46, 0x32, 0xaa, 0x31, 0x46, 0x05, 0xbb, 0xbc, 0x03, 0x8d, 0xee, 0x36, - 0xff, 0xa5, 0x22, 0x99, 0x0d, 0xd2, 0x0a, 0x51, 0x1a, 0x45, 0x34, 0x44, - 0x68, 0x5d, 0x72, 0xde, 0x20, 0x7d, 0xa1, 0xa1, 0x77, 0xce, 0xd3, 0xc1, - 0x91, 0xa1, 0x29, 0x1e, 0xc6, 0xe3, 0x35, 0x14, 0x01, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, - 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, - 0x37, 0x1a, 0x49, 0x4d, 0x00, 0x00, 0x00, 0x83, 0x1e, 0x97, 0x8a, 0xf6, - 0x06, 0xe2, 0xcb, 0xfe, 0xa5, 0x10, 0x1f, 0x59, 0x8b, 0xd6, 0x2f, 0x75, - 0xeb, 0x3d, 0xff, 0xdf, 0x6e, 0x67, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xcd, 0xcc, 0x4c, 0xbc, 0x97, 0xb3, 0x89, 0x2c, 0x3e, 0x8b, 0x8b, 0xaf, - 0x9b, 0x36, 0xe5, 0x38, 0x1c, 0x8d, 0x76, 0x2b, 0xf5, 0x49, 0xe6, 0x15, - 0x6c, 0x21, 0xaf, 0x6e, 0xdd, 0x87, 0x2f, 0x17, 0xee, 0x4e, 0x3a, 0xda, - 0x8f, 0x49, 0x3f, 0xd1, 0xcc, 0xc1, 0xd6, 0x95, 0x9e, 0x09, 0x52, 0x40, - 0xab, 0xac, 0x43, 0xc0, 0x04, 0x7a, 0x13, 0x51, 0x40, 0xae, 0xd1, 0x27, - 0x84, 0xee, 0xf6, 0x4e, 0x8e, 0xd8, 0x03, 0x5c, 0x37, 0x93, 0x2c, 0x43, - 0x49, 0xac, 0x48, 0xd9, 0xa0, 0x82, 0x6b, 0x9f, 0x73, 0x22, 0xc6, 0x35, - 0x95, 0x41, 0x89, 0x43, 0xb1, 0x1f, 0x04, 0xfa, 0x25, 0x24, 0x59, 0x31, - 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, - 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, - 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x00, 0x00, 0x40, 0xe4, - 0x16, 0xab, 0x32, 0x30, 0xf2, 0x5a, 0x04, 0x1d, 0x4c, 0x5c, 0xea, 0xfe, - 0x39, 0xbb, 0xe4, 0x26, 0x4f, 0x5e, 0x35, 0xa6, 0x03, 0x05, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x67, 0x66, 0x66, 0xdb, 0x44, 0x0e, 0xbd, 0xc1, - 0x9b, 0x8c, 0x59, 0xb7, 0xb9, 0xc3, 0xb0, 0x7d, 0x2a, 0x27, 0x26, 0x19, - 0x9e, 0xa2, 0x35, 0xe4, 0x38, 0x45, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xbb, 0xda, 0xd7, 0xf5, 0xdc, 0xf5, 0xee, 0x05, 0x0b, 0x14, 0x99, 0x1d, - 0x2c, 0x77, 0x0b, 0xa8, 0xe0, 0x4c, 0x30, 0xd5, 0xe7, 0x25, 0xa5, 0x00, - 0x81, 0x5f, 0xbf, 0x8a, 0x0c, 0x7c, 0xdd, 0x18, 0xb0, 0x6c, 0xf4, 0x8f, - 0x59, 0x92, 0xf6, 0x79, 0xf6, 0x8d, 0x23, 0xf9, 0xaa, 0xc2, 0x33, 0xf1, - 0x15, 0xa6, 0x48, 0x92, 0x1c, 0xd8, 0x44, 0x2d, 0xe3, 0xdf, 0x33, 0x4c, - 0xab, 0x74, 0x9b, 0x1a, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, - 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, - 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, - 0x00, 0x00, 0xc0, 0x5a, 0x43, 0x4f, 0x54, 0x90, 0x5b, 0x8f, 0x29, 0xf1, - 0xbe, 0xb3, 0x8e, 0xbf, 0x2b, 0x63, 0x9b, 0xa4, 0x6d, 0x29, 0xe3, 0xfd, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x33, 0x93, 0x51, - 0xa5, 0xa4, 0x2f, 0xc2, 0xf4, 0x64, 0x4f, 0xb1, 0x7e, 0xa0, 0x7e, 0xc7, - 0x62, 0x51, 0xe8, 0xcd, 0xbb, 0xdf, 0x39, 0x36, 0x36, 0x64, 0xe4, 0xba, - 0x75, 0x1f, 0xbe, 0x5c, 0x26, 0xa3, 0x44, 0xc5, 0xda, 0xd1, 0xc0, 0x1f, - 0x86, 0x3b, 0x67, 0x70, 0xe2, 0x82, 0x02, 0x91, 0x2b, 0x40, 0xb0, 0x46, - 0xe2, 0xcf, 0xe7, 0x51, 0x2b, 0x63, 0x28, 0xac, 0x8c, 0x0d, 0x7e, 0x2f, - 0xce, 0x8f, 0x89, 0x09, 0xf4, 0x60, 0xb2, 0x30, 0xa1, 0xfd, 0x80, 0xf7, - 0xf8, 0x2d, 0xa8, 0xa8, 0x0f, 0x4d, 0x4e, 0xaa, 0x92, 0x83, 0x95, 0xa1, - 0x6b, 0x2c, 0xb2, 0x3e, 0x6f, 0x3e, 0x33, 0x5c, 0x01, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, - 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, - 0x37, 0x1a, 0x49, 0x4d, 0x00, 0x00, 0xd0, 0xb0, 0xb1, 0x11, 0x5d, 0x5f, - 0x5d, 0xc3, 0x95, 0x1a, 0x6e, 0xc2, 0xfe, 0xd5, 0xed, 0x59, 0xd2, 0x9f, - 0x2b, 0xf7, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x9a, 0x99, 0x59, 0xbf, 0xae, 0x61, 0x76, 0x5e, 0x8d, 0xfd, 0x9d, 0xc7, - 0xb2, 0xa0, 0x04, 0x7f, 0xbb, 0x90, 0x38, 0xa3, 0x7e, 0x5e, 0x2c, 0xdf, - 0x1c, 0x32, 0x72, 0xdd, 0xba, 0x0f, 0x5f, 0x2e, 0x1a, 0xc0, 0x6a, 0xe1, - 0x44, 0x05, 0x40, 0x61, 0xb6, 0x93, 0x2b, 0x00, 0x16, 0x8a, 0x70, 0x5b, - 0xbe, 0x39, 0x1f, 0x89, 0xbd, 0x8f, 0x95, 0xd9, 0xad, 0x4a, 0x11, 0xe6, - 0x30, 0xc0, 0xdb, 0x53, 0x2a, 0xb9, 0x1b, 0x91, 0x35, 0x4b, 0x6b, 0xe3, - 0x17, 0xdf, 0x05, 0x6f, 0xfd, 0xd9, 0x0a, 0xc7, 0x4d, 0x05, 0x6d, 0x5e, - 0x2d, 0xc9, 0x42, 0x0f, 0x43, 0x96, 0x20, 0xf6, 0x13, 0xd5, 0x35, 0x2d, - 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, - 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, - 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x00, 0x00, 0x30, 0x32, - 0x38, 0x7a, 0x48, 0x1a, 0x77, 0x0f, 0x63, 0xf3, 0x88, 0x03, 0x96, 0xed, - 0xc5, 0x2c, 0x20, 0xd4, 0xa5, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x84, 0x26, 0x24, 0x60, 0xdd, 0x3b, - 0x8b, 0xb9, 0x0a, 0xa7, 0x81, 0xbc, 0x27, 0xda, 0x6d, 0xbc, 0x60, 0x76, - 0xd7, 0xe7, 0xa3, 0x70, 0x0e, 0x19, 0xb9, 0x6e, 0xdd, 0x87, 0x2f, 0x17, - 0xa4, 0x2d, 0x51, 0x76, 0xad, 0x02, 0x00, 0xd3, 0xd3, 0x9a, 0x21, 0x0c, - 0x03, 0x85, 0xab, 0x50, 0x0b, 0xbf, 0x2d, 0x26, 0x8b, 0x88, 0x87, 0xdd, - 0xb0, 0xc1, 0xe5, 0x0f, 0x6a, 0xf8, 0xca, 0x23, 0x3a, 0xb0, 0xb8, 0xed, - 0x03, 0xb6, 0x19, 0x17, 0xb2, 0xd7, 0xaf, 0x25, 0x0f, 0xe8, 0x5d, 0x96, - 0x88, 0x6b, 0xd7, 0x7f, 0xe0, 0xb0, 0x41, 0x57, 0xa1, 0x14, 0x1d, 0x55, - 0x14, 0x63, 0xdb, 0x2a, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, - 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, - 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, - 0x00, 0x00, 0x64, 0x7f, 0x44, 0x75, 0xc4, 0x97, 0x37, 0x63, 0x51, 0x19, - 0x64, 0xd6, 0x26, 0x62, 0xe4, 0x5c, 0xc4, 0xac, 0xa2, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x66, 0xf6, 0x93, - 0xf5, 0xd8, 0x74, 0xee, 0xd7, 0xdd, 0xc1, 0x95, 0x0c, 0x6d, 0x23, 0x58, - 0x1b, 0x30, 0xd1, 0x7c, 0xdd, 0x80, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, - 0x98, 0x97, 0x8e, 0x45, 0xd3, 0x87, 0x93, 0x2f, 0xa7, 0x92, 0xea, 0x68, - 0xc2, 0x30, 0x3c, 0x9d, 0xfc, 0xe5, 0x9a, 0xe5, 0x63, 0x86, 0xfe, 0xd6, - 0x66, 0x52, 0x9b, 0xc9, 0x7e, 0x85, 0xd7, 0x18, 0x5e, 0x6c, 0x19, 0x6d, - 0x74, 0x08, 0x36, 0xf3, 0xae, 0xf9, 0x4c, 0xa7, 0xa7, 0x41, 0xb5, 0x25, - 0x15, 0x62, 0xff, 0xae, 0x96, 0x82, 0xd3, 0x78, 0xf7, 0x79, 0x28, 0x91, - 0xd6, 0xb7, 0xed, 0x30, 0xea, 0x73, 0x77, 0x25, 0x01, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, - 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, - 0x37, 0x1a, 0x49, 0x4d, 0x00, 0x00, 0xac, 0xba, 0x36, 0xd5, 0x4b, 0x79, - 0xf3, 0x04, 0xf5, 0x8c, 0x51, 0xd7, 0x9c, 0xc4, 0x42, 0x49, 0x0f, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x34, 0x33, 0x09, 0xd5, 0x70, 0xac, 0x80, 0x04, 0x8f, 0xd9, 0xd8, 0xe8, - 0xa6, 0xb4, 0x00, 0x28, 0x46, 0x98, 0xca, 0xc7, 0xd2, 0xac, 0x94, 0xc2, - 0x39, 0x64, 0xe4, 0xba, 0x75, 0x1f, 0xbe, 0x5c, 0xcf, 0x90, 0x68, 0xf1, - 0x6e, 0x4c, 0xca, 0x87, 0x8f, 0x21, 0x48, 0xa0, 0x16, 0x8b, 0x99, 0xd9, - 0x87, 0x24, 0x9b, 0x40, 0x22, 0xa8, 0x2f, 0x78, 0xa6, 0xa1, 0x66, 0xe9, - 0x3d, 0x18, 0x20, 0x3d, 0x8f, 0xe7, 0x2a, 0x62, 0x9d, 0x7a, 0x59, 0x9f, - 0x19, 0xad, 0x4c, 0x22, 0xf7, 0xd8, 0xff, 0x2f, 0xd1, 0x08, 0x62, 0xfa, - 0xea, 0x32, 0xde, 0xeb, 0x34, 0xb7, 0x2f, 0xce, 0x59, 0xae, 0x58, 0x5e, - 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, - 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, - 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x00, 0x00, 0xb5, 0x26, - 0x62, 0x47, 0xcf, 0x65, 0x84, 0xa1, 0x99, 0xdc, 0x4d, 0x33, 0x06, 0x56, - 0x18, 0xe9, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x9a, 0x99, 0x05, 0xdc, 0x12, 0x36, 0xab, 0x88, - 0x30, 0xba, 0x5f, 0xa0, 0xfb, 0x47, 0x07, 0x26, 0x35, 0x41, 0x2f, 0x9d, - 0x69, 0x56, 0x4a, 0xe1, 0x1c, 0x32, 0x72, 0xdd, 0xba, 0x0f, 0x5f, 0x2e, - 0x8a, 0xde, 0x53, 0x36, 0x9b, 0x28, 0xd7, 0xc2, 0x9a, 0xe9, 0x54, 0x8f, - 0x12, 0x82, 0x62, 0x7c, 0x80, 0x95, 0xb6, 0xe4, 0xb6, 0x95, 0x68, 0x3a, - 0x12, 0x91, 0xc6, 0x53, 0x8d, 0xb2, 0x5f, 0x00, 0x98, 0x26, 0x75, 0x9a, - 0x48, 0x00, 0x22, 0x78, 0xd9, 0x15, 0xe9, 0x48, 0x9c, 0x41, 0x43, 0x00, - 0x86, 0x64, 0xcf, 0xef, 0x41, 0xe0, 0x64, 0xc8, 0x06, 0xbd, 0xf3, 0x38, - 0x14, 0x4d, 0xb4, 0x29, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, - 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, - 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, - 0x00, 0x00, 0x03, 0xc6, 0x05, 0x53, 0x9b, 0xa2, 0x22, 0xa8, 0x0c, 0xfa, - 0x63, 0x9c, 0xc2, 0x5e, 0x8d, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0x4c, 0x74, 0x4a, - 0xab, 0x56, 0x10, 0x49, 0x78, 0xb6, 0xd1, 0x04, 0x5c, 0xb0, 0x7e, 0x50, - 0x06, 0xcf, 0xb9, 0xce, 0x34, 0x2b, 0xa5, 0x70, 0x0e, 0x19, 0xb9, 0x6e, - 0xdd, 0x87, 0x2f, 0x17, 0xa3, 0xd0, 0xde, 0x7e, 0x48, 0x51, 0x64, 0x73, - 0x21, 0x48, 0x05, 0xf8, 0xb9, 0xaf, 0xa6, 0xc6, 0xfa, 0xf1, 0xaa, 0xea, - 0xdc, 0x98, 0xbb, 0xb0, 0x67, 0xa5, 0xd0, 0x60, 0x25, 0x56, 0x02, 0x04, - 0x13, 0x70, 0x85, 0x7a, 0x7e, 0xf8, 0xf8, 0x6c, 0x77, 0xe5, 0x5b, 0x32, - 0x93, 0xdd, 0x77, 0x1c, 0xa8, 0x36, 0x1c, 0x19, 0x15, 0xd6, 0x65, 0x8a, - 0x9f, 0x83, 0x4a, 0xdf, 0x0f, 0x3c, 0x5c, 0x71, 0x01, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, - 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, - 0x37, 0x1a, 0x49, 0x4d, 0x00, 0x40, 0x58, 0x89, 0xea, 0xfc, 0xd4, 0xce, - 0xe7, 0xab, 0x47, 0x2a, 0x12, 0x95, 0x93, 0x9d, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x67, 0x66, 0xa3, 0xab, 0x8c, 0xef, 0x89, 0x25, 0x47, 0x52, 0x2b, 0x9e, - 0xa5, 0x3b, 0xf4, 0xbe, 0xea, 0xe7, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, - 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0xce, 0xc3, 0x34, 0xb3, - 0x70, 0x4e, 0x4d, 0xbe, 0xc5, 0x5a, 0x0c, 0x13, 0x5b, 0xee, 0x07, 0xbf, - 0x95, 0x12, 0x7e, 0xed, 0x4d, 0xa4, 0x8e, 0xc1, 0x70, 0x34, 0x9e, 0x6a, - 0x3b, 0x06, 0xa6, 0x65, 0x0f, 0x2c, 0x93, 0x88, 0xf7, 0xef, 0xc9, 0x9c, - 0x0d, 0xd3, 0xa8, 0x1f, 0x8b, 0xd7, 0x35, 0xe3, 0xcb, 0xa0, 0x72, 0x39, - 0x0b, 0xa8, 0x5a, 0x6f, 0x95, 0xeb, 0x29, 0x88, 0x52, 0x3e, 0x01, 0x12, - 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, - 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, - 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x00, 0xc0, 0x8a, 0x2f, - 0x82, 0xda, 0x05, 0x96, 0x7e, 0x40, 0x9e, 0xef, 0x9e, 0xdb, 0x4c, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x34, 0x93, 0x07, 0x17, 0x22, 0x7d, 0xc9, 0xe4, - 0xa3, 0x4b, 0x66, 0x4e, 0x3b, 0x84, 0x67, 0x34, 0x04, 0xe0, 0xe7, 0x3a, - 0xd3, 0xac, 0x94, 0xc2, 0x39, 0x64, 0xe4, 0xba, 0x75, 0x1f, 0xbe, 0x5c, - 0x0d, 0x88, 0x5f, 0xf8, 0xac, 0x4e, 0xb4, 0x30, 0x5c, 0xc6, 0xff, 0x6c, - 0x72, 0xb2, 0xcf, 0x0b, 0x70, 0xaf, 0x96, 0x28, 0xa9, 0x31, 0xaf, 0xbc, - 0x71, 0x72, 0xf3, 0xf2, 0x77, 0x8e, 0xac, 0x18, 0x59, 0xc0, 0x96, 0x6f, - 0xa6, 0xde, 0x5d, 0x3b, 0x9f, 0x66, 0x1f, 0x89, 0xf0, 0x8b, 0xe8, 0x62, - 0xe1, 0x64, 0x16, 0x30, 0xad, 0xff, 0xfd, 0xd9, 0x7f, 0xd8, 0xb0, 0x25, - 0x9b, 0x02, 0xa4, 0x00, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, - 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, - 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, - 0x00, 0xd0, 0x69, 0x1e, 0xe4, 0x15, 0x78, 0x19, 0x0a, 0xda, 0x1f, 0xdf, - 0xc2, 0x56, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x59, 0xe1, 0xb5, - 0xf5, 0x60, 0x05, 0x8f, 0x81, 0xda, 0xfd, 0xe9, 0x29, 0x5a, 0x76, 0x21, - 0x02, 0xf0, 0x73, 0x9d, 0x69, 0x56, 0x4a, 0xe1, 0x1c, 0x32, 0x72, 0xdd, - 0xba, 0x0f, 0x5f, 0x2e, 0xfd, 0xdf, 0x81, 0x19, 0x3c, 0xad, 0xc6, 0x8b, - 0x58, 0xfe, 0x51, 0x28, 0xb5, 0xf8, 0xdd, 0x10, 0x20, 0x61, 0x30, 0xb3, - 0xb5, 0xf5, 0x76, 0x71, 0xa8, 0xc3, 0x57, 0xe4, 0x0c, 0xda, 0x70, 0x11, - 0x1e, 0xbd, 0x07, 0x1a, 0xc6, 0xa1, 0x7e, 0x7c, 0xf2, 0x1c, 0xd0, 0x90, - 0x6d, 0x8f, 0x21, 0x11, 0xde, 0x84, 0x40, 0xb2, 0x19, 0x13, 0x42, 0x9c, - 0xf6, 0xc4, 0x72, 0xf5, 0x9e, 0x74, 0xbe, 0x50, 0x01, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, - 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, - 0x37, 0x1a, 0x49, 0x4d, 0x00, 0x30, 0x32, 0x71, 0x23, 0x2e, 0xdd, 0x8b, - 0xf5, 0xda, 0xc1, 0xf5, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xcd, 0x04, 0x3e, 0x2b, 0xd5, 0x66, 0x7c, 0x0c, 0x14, 0xe9, 0xcd, 0x52, - 0x02, 0x82, 0xbf, 0x10, 0x01, 0xf8, 0xb9, 0xce, 0x34, 0x2b, 0xa5, 0x70, - 0x0e, 0x19, 0xb9, 0x6e, 0xdd, 0x87, 0x2f, 0x17, 0xc0, 0x5b, 0xf8, 0x94, - 0x48, 0x19, 0xd1, 0x27, 0xe0, 0x36, 0x2a, 0x8e, 0xe7, 0x18, 0x70, 0x0f, - 0xe1, 0x8e, 0xf4, 0x48, 0x72, 0x5c, 0x8e, 0x9c, 0xfb, 0xb9, 0x62, 0xb7, - 0xa6, 0x15, 0x84, 0x5e, 0x6f, 0x6b, 0x14, 0xb3, 0x43, 0x24, 0xad, 0xe3, - 0x9e, 0x76, 0x84, 0x7a, 0x92, 0x8d, 0x04, 0x40, 0x51, 0x73, 0x6b, 0x18, - 0xc1, 0x91, 0x25, 0x20, 0x40, 0x67, 0x02, 0x0e, 0x72, 0x76, 0x27, 0x6b, - 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, - 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, - 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x00, 0xa4, 0xd8, 0x1d, - 0xa2, 0x5e, 0xa7, 0x37, 0x70, 0xad, 0xd1, 0x9c, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x67, 0x76, 0x60, 0xee, 0x6c, 0x59, 0x24, 0x5c, - 0x74, 0x80, 0x2a, 0x4d, 0x98, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x22, 0x62, 0xe0, 0xd7, 0x4f, 0x07, 0xfe, 0x3a, 0x15, 0x87, 0xb6, 0x74, - 0x37, 0x21, 0xa4, 0x0a, 0x98, 0x5e, 0x28, 0x12, 0x77, 0xf1, 0x1f, 0x50, - 0xd9, 0x8f, 0xf9, 0x40, 0x41, 0x6f, 0x0f, 0x4b, 0x87, 0x7d, 0x5e, 0x14, - 0x57, 0xf5, 0xe8, 0x74, 0xc4, 0xd4, 0x27, 0xfc, 0x86, 0xd9, 0x56, 0x66, - 0x17, 0xd6, 0x97, 0xe5, 0x69, 0x2a, 0x6b, 0x03, 0x85, 0x38, 0xda, 0x70, - 0xb2, 0xf6, 0xdd, 0x52, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, - 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, - 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, - 0x00, 0xac, 0x7f, 0x7a, 0x7f, 0xcc, 0x6b, 0x89, 0xc3, 0x0c, 0x8f, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x69, 0x13, 0xea, - 0xec, 0xb4, 0x88, 0x9c, 0xa2, 0x9b, 0x58, 0x31, 0xcf, 0x1c, 0xfe, 0x42, - 0x04, 0xe0, 0xe7, 0x3a, 0xd3, 0xac, 0x94, 0xc2, 0x39, 0x64, 0xe4, 0xba, - 0x75, 0x1f, 0xbe, 0x5c, 0x4c, 0x07, 0x42, 0x14, 0x93, 0xe2, 0x83, 0x93, - 0xa3, 0xa9, 0x72, 0x37, 0xa9, 0xb2, 0x58, 0xa7, 0x6a, 0x94, 0x53, 0xb5, - 0xeb, 0xad, 0x3b, 0x56, 0x46, 0x6b, 0x61, 0xa3, 0x8c, 0x14, 0x56, 0x32, - 0xd4, 0x10, 0xf3, 0xf6, 0x64, 0x82, 0xef, 0xb0, 0x24, 0xd2, 0xc2, 0x79, - 0xde, 0xb0, 0x42, 0x9e, 0x65, 0x05, 0x88, 0x74, 0x2f, 0x8b, 0x58, 0xd5, - 0x42, 0x1a, 0x06, 0xa3, 0xd4, 0xd1, 0xfc, 0x12, 0x01, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, - 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, - 0x37, 0x1a, 0x49, 0x4d, 0x00, 0xc5, 0x1c, 0xd9, 0xfc, 0x35, 0x0a, 0xad, - 0x17, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x9a, 0x25, 0x9e, 0xe6, 0xbc, 0xaf, 0xb1, 0x88, 0x37, 0xd7, 0x97, 0x99, - 0x67, 0x0e, 0x7f, 0x21, 0x02, 0xf0, 0x73, 0x9d, 0x69, 0x56, 0x4a, 0xe1, - 0x1c, 0x32, 0x72, 0xdd, 0xba, 0x0f, 0x5f, 0x2e, 0x5d, 0x53, 0x09, 0xab, - 0xc2, 0x58, 0x42, 0x94, 0x15, 0x71, 0x15, 0x1b, 0xfa, 0xfb, 0xcd, 0xc6, - 0xbc, 0xa4, 0x00, 0x49, 0x74, 0xd3, 0x9c, 0x04, 0x81, 0xd7, 0x09, 0x28, - 0x7d, 0x37, 0x37, 0x58, 0x8a, 0x94, 0x1a, 0x79, 0x8a, 0x7e, 0x94, 0x29, - 0xbd, 0xab, 0x65, 0x5f, 0xc6, 0x94, 0xed, 0xdd, 0x94, 0xc1, 0xf1, 0xd8, - 0xed, 0x88, 0x80, 0x47, 0x31, 0x52, 0xda, 0x94, 0x30, 0x60, 0xac, 0x0a, - 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, - 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, - 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x00, 0x83, 0x86, 0xfc, - 0xaf, 0x41, 0xb9, 0x0e, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x4d, 0xac, 0x2d, 0x08, 0x88, 0xfd, 0x14, 0x1e, - 0x24, 0x78, 0xcc, 0xcc, 0x33, 0x87, 0xbf, 0x10, 0x01, 0xf8, 0xb9, 0xce, - 0x34, 0x2b, 0xa5, 0x70, 0x0e, 0x19, 0xb9, 0x6e, 0xdd, 0x87, 0x2f, 0x17, - 0xbb, 0xc3, 0xc0, 0xea, 0xbd, 0x9b, 0xd6, 0x22, 0x75, 0x96, 0x6c, 0xca, - 0xc1, 0x2b, 0x45, 0x76, 0x2e, 0x4e, 0x2b, 0xf7, 0xfa, 0x9e, 0x64, 0x2d, - 0x4b, 0xd8, 0xd9, 0x06, 0x24, 0xa3, 0xce, 0x49, 0x17, 0xd6, 0x83, 0xe8, - 0x15, 0xc0, 0xbf, 0x4f, 0xf8, 0x85, 0x9d, 0xaf, 0xb6, 0x85, 0x62, 0x31, - 0x89, 0x06, 0x10, 0xd3, 0x0a, 0xf1, 0xd5, 0x03, 0x50, 0x2c, 0x1e, 0xf4, - 0xa8, 0xb6, 0x91, 0x2e, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, - 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, - 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, - 0x40, 0x0c, 0xab, 0x80, 0x53, 0x26, 0xc2, 0x54, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x6b, 0xbb, 0x49, - 0x36, 0x72, 0x46, 0x68, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, - 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, - 0x98, 0x97, 0x8e, 0x45, 0x80, 0x00, 0x64, 0x53, 0xae, 0xef, 0x99, 0x13, - 0xc9, 0x1c, 0x53, 0x45, 0x0c, 0xdc, 0x97, 0xd5, 0x80, 0x4b, 0x56, 0x86, - 0xa3, 0xbc, 0x78, 0xc4, 0xc2, 0x0c, 0xf7, 0xaf, 0xfd, 0x42, 0xe9, 0x1b, - 0x5f, 0x2f, 0xa6, 0x4f, 0xa5, 0x53, 0xb5, 0xec, 0x36, 0x50, 0xc6, 0xd1, - 0x3f, 0xdf, 0xaf, 0x63, 0x9f, 0x25, 0x1d, 0x40, 0xd2, 0xb5, 0x83, 0x24, - 0x67, 0x57, 0x4d, 0x0c, 0x7b, 0x8c, 0x90, 0x3d, 0x01, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, - 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, - 0x37, 0x1a, 0x49, 0x4d, 0xc0, 0xfa, 0x49, 0xea, 0x2a, 0x92, 0x32, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x94, 0x9d, 0x8c, 0xc4, 0x08, 0x6c, 0x2a, 0x66, 0x32, 0xe3, 0x31, 0x33, - 0xcf, 0x1c, 0xfe, 0x42, 0x04, 0xe0, 0xe7, 0x3a, 0xd3, 0xac, 0x94, 0xc2, - 0x39, 0x64, 0xe4, 0xba, 0x75, 0x1f, 0xbe, 0x5c, 0x57, 0x7e, 0xfd, 0x4b, - 0xb2, 0xe8, 0x7d, 0x9b, 0x0e, 0x3c, 0x51, 0xa9, 0x15, 0xcb, 0x9e, 0xfa, - 0x45, 0x73, 0x63, 0x75, 0xac, 0xb6, 0x70, 0xff, 0xcb, 0x0a, 0xb6, 0xd9, - 0xd9, 0xf6, 0x7d, 0x5e, 0x31, 0x38, 0x8e, 0xff, 0x0c, 0xba, 0x37, 0xee, - 0x71, 0x85, 0x91, 0xa1, 0xc8, 0x13, 0x11, 0xc4, 0x7c, 0x0f, 0x6e, 0xca, - 0x37, 0x32, 0xdb, 0x2a, 0x5a, 0xf3, 0x69, 0x45, 0x0f, 0x15, 0xe4, 0x1e, - 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, - 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, - 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0xd0, 0xb2, 0x9d, 0x4f, - 0x2c, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x5a, 0x83, 0xa6, 0xa4, 0x69, 0x0f, 0x33, 0x33, - 0x99, 0xf1, 0x98, 0x99, 0x67, 0x0e, 0x7f, 0x21, 0x02, 0xf0, 0x73, 0x9d, - 0x69, 0x56, 0x4a, 0xe1, 0x1c, 0x32, 0x72, 0xdd, 0xba, 0x0f, 0x5f, 0x2e, - 0xa0, 0xbc, 0x92, 0xcb, 0x0d, 0xff, 0xd0, 0xea, 0x29, 0x6b, 0x52, 0x84, - 0x98, 0xe7, 0xf8, 0xf0, 0xfb, 0x66, 0xbe, 0x18, 0xab, 0x4c, 0x1b, 0x71, - 0x16, 0xec, 0xb7, 0x81, 0x69, 0x77, 0xeb, 0x57, 0x47, 0xad, 0x0d, 0x3a, - 0x20, 0x42, 0x92, 0xf1, 0xc1, 0xd3, 0xef, 0x25, 0xf5, 0x26, 0x55, 0xc3, - 0x98, 0x49, 0x24, 0xec, 0xbe, 0x30, 0x09, 0xa8, 0x07, 0x14, 0x8f, 0xce, - 0x6f, 0xdd, 0xa9, 0x71, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, - 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, - 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, - 0x30, 0xc2, 0xb2, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0xed, 0x68, 0x0c, - 0x84, 0x99, 0x99, 0x99, 0xcc, 0x78, 0xcc, 0xcc, 0x33, 0x87, 0xbf, 0x10, - 0x01, 0xf8, 0xb9, 0xce, 0x34, 0x2b, 0xa5, 0x70, 0x0e, 0x19, 0xb9, 0x6e, - 0xdd, 0x87, 0x2f, 0x17, 0x88, 0x7c, 0xf4, 0x83, 0xfd, 0x16, 0xf9, 0xf0, - 0x1a, 0xcc, 0xc4, 0xea, 0xf5, 0xba, 0x03, 0x19, 0x4a, 0x1b, 0x5d, 0x52, - 0xe2, 0xfd, 0x78, 0xb1, 0x3d, 0xd3, 0x03, 0x25, 0x35, 0x11, 0x34, 0x47, - 0x4d, 0xd6, 0x17, 0x27, 0xbf, 0xde, 0x87, 0x2c, 0xde, 0x46, 0x07, 0xcd, - 0x2f, 0xa1, 0x31, 0x26, 0xe5, 0x8d, 0x87, 0xe1, 0xda, 0xac, 0xfe, 0x37, - 0x97, 0x79, 0x72, 0xc7, 0x3f, 0x28, 0x4a, 0x5e, 0x01, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, - 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, - 0x37, 0x1a, 0x49, 0x4d, 0xe4, 0xc5, 0xbd, 0x0a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf7, 0xec, 0x75, 0x26, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, - 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, - 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0xb3, 0xc4, 0x59, 0xb6, - 0x35, 0x71, 0xaf, 0xe7, 0x73, 0x4c, 0x03, 0xe2, 0x69, 0x50, 0x19, 0x36, - 0x65, 0x43, 0xd5, 0x33, 0x7f, 0x31, 0xf1, 0x0e, 0x89, 0xa3, 0x4f, 0x55, - 0xdd, 0xf3, 0x67, 0x57, 0xf1, 0xcb, 0xe8, 0x3c, 0x7f, 0x68, 0x6a, 0x29, - 0xe5, 0x60, 0x35, 0x3e, 0x72, 0x40, 0x3c, 0x8b, 0x39, 0x01, 0xa5, 0x9e, - 0x73, 0x99, 0x7f, 0x87, 0x18, 0xb4, 0x68, 0xc6, 0xd2, 0x7b, 0xa9, 0x71, - 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, - 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, - 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0xac, 0x68, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xca, 0xff, 0x91, 0x99, 0x65, 0x66, 0x66, 0x66, - 0x32, 0xe3, 0x31, 0x33, 0xcf, 0x1c, 0xfe, 0x42, 0x04, 0xe0, 0xe7, 0x3a, - 0xd3, 0xac, 0x94, 0xc2, 0x39, 0x64, 0xe4, 0xba, 0x75, 0x1f, 0xbe, 0x5c, - 0x71, 0x02, 0x27, 0x40, 0x1d, 0xe1, 0x11, 0xee, 0x3b, 0xc9, 0x13, 0xe2, - 0x90, 0x29, 0xf8, 0x0b, 0x70, 0x4b, 0x7b, 0xfa, 0xd2, 0xd6, 0xf5, 0x8f, - 0x45, 0xff, 0xc8, 0xc4, 0xc9, 0x4c, 0xf9, 0x5e, 0x0e, 0x66, 0x85, 0x5f, - 0x88, 0xff, 0xd3, 0xb6, 0xd8, 0x0a, 0x67, 0xd6, 0x91, 0x18, 0x5b, 0xe5, - 0xc9, 0xa9, 0xd9, 0x55, 0xb4, 0x30, 0xde, 0x83, 0xe5, 0x10, 0x9a, 0x05, - 0x55, 0x53, 0xde, 0x55, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, - 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, - 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, - 0xd5, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xc8, 0xcc, 0xcc, - 0x32, 0x33, 0x33, 0x33, 0x99, 0xf1, 0x98, 0x99, 0x67, 0x0e, 0x7f, 0x21, - 0x02, 0xf0, 0x73, 0x9d, 0x69, 0x56, 0x4a, 0xe1, 0x1c, 0x32, 0x72, 0xdd, - 0xba, 0x0f, 0x5f, 0x2e, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, - 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, - 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, - 0x08, 0x75, 0x50, 0x67, 0x4d, 0xe0, 0x04, 0xae, 0x38, 0x92, 0x4a, 0x99, - 0x8b, 0x1e, 0xbb, 0x5f, 0x89, 0x70, 0x45, 0x82, 0x02, 0xe8, 0xe3, 0xe9, - 0xea, 0x60, 0x2a, 0xd0, 0xa1, 0xe3, 0x59, 0x47, 0x01, 0x00, 0x00, 0x00, - 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, - 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, - 0x37, 0x1a, 0x49, 0x4d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x65, 0x66, 0x66, 0xe6, 0x98, 0x99, 0x99, 0x19, 0xcc, 0xa6, 0xcb, 0x4c, - 0x35, 0x59, 0x9e, 0xba, 0x03, 0xe4, 0x8a, 0xd3, 0x38, 0x17, 0x42, 0x8a, - 0xb2, 0xd7, 0x87, 0x03, 0x87, 0x5b, 0x26, 0x51, 0x01, 0x00, 0x00, 0x40, - 0xff, 0xff, 0xff, 0x3f, 0xff, 0xc4, 0xfe, 0x3f, 0x02, 0x3b, 0xce, 0xfe, - 0x03, 0x62, 0x39, 0x07, 0x06, 0x62, 0x6b, 0x26, 0xf6, 0x1d, 0x36, 0x5f, - 0x7e, 0x3d, 0xf2, 0x56, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45 -}; + 0xd8, 0xd3, 0x6e, 0x9d, 0x00, 0x0a, 0x32, 0xa7, 0x36, 0x8b, 0x75, 0xa2, 0x92, 0xac, 0x1e, 0x50, 0x24, 0x4a, 0xbb, + 0x1d, 0x86, 0x51, 0xbd, 0x23, 0x7a, 0xe1, 0x3a, 0xfa, 0x4b, 0x06, 0x9f, 0x66, 0x15, 0x3f, 0x9d, 0x2b, 0x84, 0xab, + 0x72, 0x6e, 0x34, 0x27, 0xac, 0x45, 0x96, 0x7c, 0xe6, 0xee, 0x6c, 0xa6, 0x4f, 0xc8, 0xf2, 0x7f, 0x53, 0xe4, 0x36, + 0xca, 0xac, 0xfb, 0xde, 0xa8, 0x61, 0x0a, 0xd5, 0x65, 0x81, 0x12, 0x71, 0x47, 0x23, 0x1e, 0x30, 0x49, 0xaa, 0x1a, + 0x4e, 0x2b, 0x29, 0x17, 0x5b, 0x27, 0xdf, 0x45, 0x8a, 0x1e, 0x1b, 0xf9, 0x09, 0x9d, 0xb8, 0x24, 0xfa, 0xce, 0xe9, + 0x21, 0xd1, 0xa0, 0x12, 0x2f, 0xca, 0x56, 0x5f, 0x2f, 0x1b, 0x40, 0x6c, 0x31, 0x90, 0x55, 0x2f, 0x1f, 0x2b, 0xd0, + 0xd2, 0xd2, 0xc9, 0x24, 0x26, 0x38, 0x05, 0x18, 0x53, 0x38, 0x1d, 0x42, 0xfc, 0x0b, 0xc8, 0xc5, 0x8b, 0x5a, 0xf3, + 0x19, 0xca, 0xff, 0xf5, 0x3b, 0xef, 0x15, 0x4e, 0xf4, 0xcc, 0xbe, 0xe8, 0x42, 0x69, 0x68, 0xf4, 0xfc, 0xd3, 0xc3, + 0xf0, 0x5d, 0x03, 0x89, 0x4a, 0xae, 0xb0, 0x13, 0x43, 0x39, 0xaa, 0x45, 0xb2, 0x41, 0x38, 0xf8, 0x20, 0x2d, 0xd1, + 0x1f, 0x3c, 0xc4, 0xaa, 0xf1, 0x40, 0xd0, 0x26, 0xe4, 0x81, 0x74, 0x41, 0xc1, 0xb4, 0xd0, 0x64, 0x8d, 0xf9, 0xdd, + 0x9a, 0x4b, 0x38, 0x45, 0x02, 0xcc, 0x01, 0x65, 0x25, 0x72, 0x24, 0x2b, 0xba, 0x3f, 0x2c, 0x1a, 0xbf, 0xc6, 0x3c, + 0xcf, 0xa1, 0xef, 0x9c, 0xda, 0x2e, 0x9b, 0x14, 0xc7, 0x81, 0x65, 0x85, 0xc3, 0x24, 0x2c, 0x65, 0xc6, 0x51, 0x3a, + 0xd3, 0xc1, 0xd1, 0xd5, 0x42, 0x8f, 0x2f, 0x3c, 0x0e, 0x61, 0xaf, 0xb8, 0xf6, 0x3c, 0x32, 0x1a, 0x9f, 0x28, 0x91, + 0x9d, 0x02, 0x18, 0x97, 0x47, 0x79, 0x21, 0xf9, 0x61, 0x40, 0x5c, 0x16, 0xa9, 0xc5, 0x6e, 0xca, 0x9f, 0x37, 0xf1, + 0x2a, 0x13, 0xf1, 0xf0, 0xf0, 0xef, 0xb4, 0x56, 0xf4, 0x08, 0x6a, 0x47, 0x52, 0x4a, 0x32, 0xbf, 0xb3, 0xab, 0xa5, + 0xdf, 0x36, 0x12, 0x63, 0x5f, 0x2e, 0xc2, 0xf4, 0x17, 0xa4, 0x0c, 0xfd, 0xeb, 0x3d, 0xe9, 0xc7, 0x1d, 0x97, 0x5e, + 0x52, 0x61, 0x75, 0x96, 0xfb, 0x11, 0x60, 0xcd, 0xf8, 0xca, 0xa8, 0x11, 0xdc, 0x6e, 0xcd, 0x59, 0xf3, 0x37, 0x41, + 0xd6, 0x61, 0xb3, 0x74, 0xe5, 0xa8, 0xc1, 0x51, 0xf5, 0xa2, 0x57, 0x2e, 0x32, 0xe4, 0x0e, 0xd2, 0xed, 0x73, 0xca, + 0x58, 0x7a, 0x81, 0x16, 0x9c, 0xa0, 0xa0, 0xc0, 0xaa, 0x65, 0xe0, 0x3f, 0x43, 0xb7, 0x03, 0xb0, 0x35, 0x84, 0x61, + 0xf6, 0x60, 0x0e, 0x18, 0xb3, 0x0a, 0xc0, 0x59, 0x98, 0x57, 0x80, 0x7e, 0x26, 0x8b, 0x26, 0x0f, 0x94, 0x44, 0xbc, + 0xc9, 0x71, 0xf8, 0x19, 0x9a, 0x3b, 0x0a, 0xea, 0x9a, 0xc0, 0x41, 0x26, 0x9b, 0x50, 0xe7, 0x5d, 0x1b, 0x59, 0x22, + 0x26, 0x79, 0x3a, 0xae, 0x39, 0x61, 0x13, 0x9c, 0x8f, 0x8e, 0xd0, 0xbf, 0x84, 0xb8, 0xca, 0x3f, 0x71, 0x41, 0x70, + 0x35, 0x88, 0x03, 0x63, 0x0d, 0xc5, 0x1a, 0xcb, 0x63, 0x11, 0x32, 0x90, 0xb6, 0xaa, 0xfb, 0xdc, 0xd9, 0xc3, 0xa1, + 0x93, 0x41, 0xe8, 0xa1, 0xfb, 0x2d, 0x88, 0x9e, 0xe6, 0x37, 0x21, 0xb2, 0xbe, 0xfc, 0x64, 0x18, 0x37, 0x87, 0xbc, + 0x36, 0xf2, 0xe4, 0x08, 0x5e, 0x87, 0x5f, 0x78, 0xbc, 0xbd, 0x4c, 0x91, 0x53, 0xb5, 0xf3, 0x3c, 0xe9, 0x8c, 0x1d, + 0xa7, 0x0a, 0x95, 0x90, 0x55, 0xfd, 0xfd, 0x61, 0xd1, 0x38, 0x21, 0xca, 0x5c, 0x8f, 0xc0, 0xc9, 0x39, 0x81, 0x8e, + 0x2d, 0x7c, 0xa7, 0xab, 0x84, 0xef, 0x09, 0xd3, 0x1f, 0xb2, 0xc8, 0xe7, 0x6a, 0x9c, 0xe5, 0x0d, 0xea, 0x15, 0x0f, + 0xdf, 0x55, 0x7e, 0x25, 0x01, 0xad, 0x36, 0xdc, 0xfe, 0x2c, 0xc2, 0xf5, 0xd1, 0x57, 0xef, 0xf2, 0x1d, 0xdd, 0x82, + 0xb0, 0x20, 0xbf, 0xfe, 0x8a, 0xa8, 0x4d, 0xb5, 0xd2, 0x03, 0x0d, 0x49, 0x43, 0xaf, 0x4a, 0xac, 0x95, 0x64, 0x6b, + 0x62, 0x6e, 0x75, 0x84, 0x85, 0x56, 0x8f, 0x99, 0x6d, 0xfa, 0xb4, 0x37, 0x30, 0xc4, 0x06, 0x82, 0x32, 0xf0, 0x86, + 0x6e, 0x5f, 0xde, 0x62, 0xa3, 0x61, 0xdc, 0x17, 0x37, 0x5c, 0xc8, 0x9b, 0x78, 0x6a, 0xf1, 0xa2, 0x77, 0x76, 0x44, + 0x93, 0xbe, 0x6b, 0x71, 0x39, 0x0a, 0x35, 0x86, 0xa3, 0x4c, 0x84, 0x0f, 0xb1, 0xbf, 0x51, 0x88, 0x18, 0x88, 0x57, + 0x09, 0x97, 0x55, 0xdf, 0x29, 0xe6, 0xff, 0xaa, 0xaf, 0x7b, 0x27, 0x29, 0xca, 0xf5, 0x11, 0x64, 0xa2, 0x2e, 0xb9, + 0x99, 0xc5, 0xc4, 0x56, 0x1b, 0x03, 0x0c, 0xf1, 0x7e, 0x9b, 0xf1, 0x8b, 0x57, 0xc7, 0x4c, 0x4a, 0x05, 0x84, 0x78, + 0x67, 0x3c, 0x82, 0xee, 0xe4, 0x55, 0xfb, 0xf2, 0x2e, 0xcb, 0x3a, 0x64, 0x88, 0x44, 0x15, 0x1b, 0x23, 0xaa, 0xe9, + 0x9a, 0x04, 0xbd, 0xb4, 0xbd, 0x34, 0x28, 0x84, 0x34, 0x55, 0x13, 0x2c, 0xbd, 0x43, 0x1c, 0x3b, 0xaf, 0x1d, 0x95, + 0x28, 0x18, 0x5f, 0xe7, 0x33, 0xa2, 0x4c, 0x58, 0xca, 0x42, 0xbe, 0x9e, 0x8e, 0x72, 0xae, 0xf1, 0x08, 0x40, 0x8f, + 0x55, 0x61, 0x68, 0xa3, 0x2e, 0xff, 0x75, 0xe7, 0x38, 0x44, 0x68, 0x4a, 0x40, 0x05, 0x3f, 0x64, 0xf2, 0xf3, 0xd7, + 0x8d, 0xd4, 0x3d, 0x69, 0x2e, 0xc9, 0x94, 0x3f, 0xc8, 0x75, 0xa1, 0xa1, 0xe5, 0x0b, 0x26, 0xec, 0x36, 0xe9, 0x29, + 0x67, 0x4b, 0xc9, 0x2b, 0x0f, 0x4b, 0xa0, 0x56, 0xaf, 0x8b, 0x81, 0xea, 0x11, 0xf5, 0x42, 0xd3, 0xf2, 0x6e, 0x91, + 0xf3, 0x35, 0x60, 0xe6, 0xa0, 0x80, 0x09, 0x45, 0xfe, 0x29, 0x4c, 0xde, 0x96, 0x76, 0x6e, 0x27, 0xfc, 0x64, 0xd3, + 0xf7, 0xb4, 0xbf, 0xfa, 0x8c, 0x13, 0x68, 0x52, 0xf7, 0x9c, 0x86, 0x74, 0xe1, 0x8a, 0x01, 0x97, 0x73, 0x69, 0x29, + 0x21, 0x0d, 0xae, 0xcf, 0xa7, 0x83, 0xf2, 0x8b, 0x93, 0x8d, 0xef, 0xf2, 0x7c, 0xc1, 0xfd, 0x50, 0xca, 0x95, 0x53, + 0x77, 0x46, 0xa8, 0xe0, 0xb9, 0x6f, 0x4e, 0xe5, 0x55, 0x35, 0x2b, 0x6b, 0x67, 0x5e, 0x4e, 0x24, 0x51, 0x85, 0xf3, + 0x19, 0x3d, 0x4c, 0x5c, 0x94, 0x7c, 0xb4, 0xe5, 0x49, 0xe8, 0xdf, 0xdd, 0x34, 0x4c, 0x64, 0x13, 0x6e, 0x67, 0x6a, + 0xc6, 0x5e, 0x82, 0x1f, 0xdc, 0x0e, 0xf6, 0x15, 0x2a, 0x6f, 0xdd, 0x3a, 0x5c, 0x7d, 0x20, 0xbf, 0xd5, 0x89, 0xa1, + 0x25, 0x2f, 0x59, 0xe7, 0xca, 0xa2, 0xb4, 0xde, 0x72, 0x2c, 0xe8, 0xe6, 0xc5, 0x3d, 0x93, 0xa5, 0xe0, 0x47, 0x7d, + 0xe5, 0x65, 0x58, 0x59, 0xec, 0x62, 0x79, 0xc5, 0x69, 0x21, 0xfb, 0x12, 0x45, 0xe7, 0xb3, 0xa0, 0x5c, 0xba, 0xfb, + 0x70, 0x38, 0x8b, 0x80, 0x95, 0x90, 0x72, 0x85, 0xf8, 0x61, 0xb3, 0x6f, 0x5f, 0x9d, 0x2d, 0x36, 0x9f, 0xe0, 0xeb, + 0xc2, 0xd2, 0xcd, 0x33, 0x5a, 0x26, 0x78, 0xa7, 0x7f, 0x24, 0x52, 0x52, 0x3a, 0xe6, 0xf6, 0xf4, 0xa0, 0x9c, 0x52, + 0x1d, 0xd5, 0x26, 0x5d, 0x9a, 0x7b, 0x9f, 0xba, 0x63, 0x6a, 0xda, 0xb9, 0xed, 0xec, 0x37, 0x8b, 0x24, 0x76, 0xcf, + 0x1d, 0xa0, 0x3e, 0x1e, 0xc7, 0x60, 0x73, 0xc5, 0x5b, 0x7f, 0x93, 0x84, 0x62, 0x9b, 0xe8, 0x28, 0x07, 0xac, 0x77, + 0xe7, 0xb3, 0x7d, 0x6f, 0x51, 0x91, 0xc7, 0xf3, 0x4d, 0x17, 0xeb, 0xe7, 0xc5, 0x31, 0x1e, 0x2d, 0x75, 0x2e, 0x30, + 0xd8, 0xe8, 0x75, 0x4c, 0x37, 0x7a, 0xd6, 0x5c, 0x75, 0x1d, 0xc0, 0xb4, 0x99, 0xa2, 0x49, 0xe0, 0x72, 0xe2, 0xb3, + 0x30, 0xed, 0x8b, 0xa7, 0x7e, 0x07, 0x79, 0x36, 0x77, 0xee, 0x15, 0x71, 0x1f, 0xe0, 0x0a, 0x98, 0x0a, 0xee, 0xcf, + 0x0c, 0x59, 0xcc, 0xc7, 0x48, 0x50, 0xd3, 0xea, 0x41, 0xe1, 0x66, 0xd4, 0x3b, 0x24, 0xe9, 0x63, 0x4c, 0x16, 0xec, + 0x51, 0x8e, 0x06, 0xc2, 0x11, 0x53, 0x58, 0x35, 0xd0, 0xd1, 0x77, 0x43, 0x59, 0x7f, 0xdb, 0x35, 0xe6, 0xea, 0x04, + 0x1b, 0x69, 0x2e, 0x03, 0x2e, 0x5e, 0xa9, 0x67, 0xc7, 0x24, 0x52, 0xef, 0x5e, 0x1d, 0x8c, 0xe8, 0xa3, 0xa4, 0x8e, + 0xc4, 0xcb, 0x5d, 0x8a, 0x57, 0x31, 0xdf, 0x3c, 0x38, 0xdf, 0xe6, 0xaf, 0x21, 0x77, 0x49, 0x02, 0xbc, 0x32, 0xde, + 0x1e, 0x9f, 0x6a, 0x95, 0x9f, 0x94, 0x3b, 0x84, 0xdc, 0xea, 0x0b, 0x09, 0x76, 0x2f, 0x93, 0x70, 0x12, 0x8c, 0xb6, + 0xd0, 0x20, 0xc3, 0xe2, 0x94, 0x8a, 0xb6, 0x2f, 0x9a, 0x03, 0xef, 0x5b, 0xc0, 0x47, 0xbf, 0xd0, 0xa7, 0x90, 0xe6, + 0x13, 0xac, 0xc9, 0x2e, 0x10, 0xef, 0x10, 0xd1, 0x81, 0x65, 0x5d, 0xfa, 0x50, 0x65, 0xc0, 0xd6, 0x59, 0x3a, 0xe0, + 0x5c, 0x94, 0xbd, 0xf8, 0xc6, 0x25, 0x85, 0x61, 0x2f, 0xa5, 0x5c, 0x0d, 0x7e, 0xe1, 0xa8, 0x04, 0x3b, 0x1f, 0x61, + 0x34, 0x4b, 0x30, 0xf3, 0x84, 0x8e, 0x89, 0xb1, 0x58, 0xe2, 0x48, 0xf4, 0x79, 0x7f, 0x5f, 0x95, 0x1d, 0xe7, 0x71, + 0x47, 0x5d, 0x43, 0x69, 0xd4, 0x7b, 0xe6, 0x87, 0x9e, 0x11, 0x12, 0x2a, 0x4f, 0xf7, 0x0c, 0xfb, 0x3c, 0x0b, 0x1d, + 0xe7, 0xa3, 0x0b, 0xdf, 0xc7, 0xd1, 0x35, 0xdb, 0x7d, 0x58, 0x7b, 0x46, 0x40, 0x3e, 0xf6, 0xc1, 0xb6, 0x22, 0x99, + 0x13, 0xd0, 0xd9, 0x3f, 0x28, 0xc5, 0xef, 0xeb, 0x6a, 0xda, 0xf5, 0xfb, 0x2d, 0x9d, 0x3c, 0x23, 0x23, 0x7d, 0x1f, + 0x81, 0x55, 0xaf, 0xd4, 0xec, 0x7b, 0x09, 0x79, 0xe1, 0x90, 0xde, 0xe3, 0xff, 0x9a, 0x13, 0x2b, 0x4e, 0x70, 0x5c, + 0x63, 0x72, 0x88, 0xfa, 0x74, 0x4f, 0xb7, 0xd1, 0x33, 0x3b, 0x8a, 0xec, 0x2e, 0x9b, 0x77, 0x0b, 0x8c, 0x3a, 0x91, + 0x2c, 0x63, 0x3c, 0x03, 0x40, 0x1e, 0x78, 0x83, 0x4c, 0xcc, 0x0a, 0x3b, 0x99, 0x8d, 0x10, 0x54, 0x79, 0x3e, 0x85, + 0x9d, 0xab, 0x2f, 0xd6, 0x9b, 0xab, 0x63, 0x85, 0x7a, 0x80, 0xe2, 0x43, 0xc0, 0x31, 0xa9, 0x77, 0x9a, 0x12, 0xf6, + 0xcb, 0x8d, 0xfb, 0x65, 0xed, 0xb7, 0x11, 0xff, 0x5c, 0xe0, 0x8f, 0x16, 0xc6, 0x9b, 0x36, 0x56, 0x2b, 0x8a, 0xe1, + 0x9b, 0xe1, 0xfc, 0x01, 0x3f, 0xa4, 0x49, 0x5d, 0x59, 0x19, 0xbd, 0xbe, 0x17, 0x49, 0xe5, 0xa1, 0xa7, 0xf7, 0x26, + 0x19, 0xa4, 0x0f, 0xd3, 0x5b, 0x74, 0xa9, 0xfe, 0x53, 0x88, 0x51, 0xa8, 0x9c, 0x3f, 0xde, 0xbd, 0x19, 0xa0, 0x40, + 0x31, 0x50, 0x1f, 0x8b, 0x92, 0x97, 0xb2, 0x1c, 0xc7, 0xb0, 0xdd, 0xd5, 0xae, 0x88, 0x92, 0x00, 0x4a, 0xd7, 0xb7, + 0xf8, 0x02, 0xaa, 0x25, 0xbb, 0x05, 0x89, 0x78, 0xda, 0x9c, 0x00, 0xb5, 0x48, 0x2c, 0x0d, 0xf3, 0xfa, 0xfc, 0x4e, + 0x6f, 0x3d, 0x96, 0x74, 0x92, 0xb5, 0x16, 0x01, 0x88, 0xb2, 0x4a, 0x9c, 0x43, 0x35, 0x75, 0xef, 0x3d, 0x6e, 0xd0, + 0x92, 0xc0, 0x24, 0xf6, 0xd6, 0xc0, 0x01, 0xef, 0x23, 0xb0, 0x6e, 0x27, 0x21, 0x5e, 0xa1, 0x8c, 0x0f, 0x69, 0xbc, + 0x09, 0x47, 0x2c, 0x13, 0x5d, 0xba, 0x32, 0x3c, 0x37, 0x62, 0x3a, 0xdf, 0x38, 0x5a, 0x17, 0xe2, 0xfc, 0xe3, 0x8e, + 0xe2, 0xd6, 0x6d, 0x50, 0x1b, 0xd1, 0xcc, 0x4b, 0x9d, 0x66, 0x0a, 0x90, 0x85, 0x01, 0x3b, 0xa2, 0x77, 0xd4, 0x95, + 0x90, 0x63, 0x49, 0x5e, 0x27, 0xe7, 0xab, 0xc5, 0xf1, 0xf9, 0xa8, 0xf2, 0x40, 0xb1, 0x14, 0x35, 0x4d, 0x69, 0x4c, + 0x51, 0x3b, 0x9b, 0x10, 0x50, 0x70, 0x34, 0xf4, 0xbe, 0x14, 0x88, 0xb5, 0x40, 0x1a, 0x68, 0x74, 0x40, 0x4c, 0xa3, + 0xa7, 0x0d, 0x32, 0x64, 0xaa, 0xef, 0xf5, 0x7b, 0x1a, 0x60, 0x1d, 0xfc, 0x33, 0xf2, 0x50, 0xc6, 0x39, 0x28, 0x53, + 0xe7, 0x98, 0xbf, 0xbd, 0x1e, 0xac, 0x80, 0x35, 0x5d, 0x7a, 0x18, 0x96, 0x8f, 0xb1, 0x41, 0xc2, 0xcb, 0x7d, 0xd0, + 0x75, 0xd4, 0xc2, 0x11, 0x78, 0xd8, 0xa1, 0x98, 0x53, 0x1c, 0x59, 0x72, 0xac, 0xc1, 0x37, 0x0f, 0x42, 0x13, 0x0b, + 0x98, 0xf9, 0x6e, 0x6f, 0x36, 0x53, 0x8d, 0x66, 0x46, 0x65, 0xf0, 0x27, 0xd3, 0xe3, 0xf0, 0x10, 0x5d, 0x1b, 0xae, + 0x8d, 0x49, 0xec, 0xe6, 0x40, 0xfc, 0xfa, 0xbe, 0x55, 0x60, 0x4b, 0xfe, 0xd0, 0xca, 0x6a, 0x45, 0xd0, 0xd5, 0xe1, + 0x5f, 0x20, 0x67, 0x09, 0x4e, 0x6d, 0x59, 0xef, 0xba, 0xec, 0x57, 0x41, 0xfa, 0x62, 0x1c, 0x54, 0xa4, 0x74, 0x46, + 0xd1, 0x91, 0x48, 0xc9, 0xa6, 0x07, 0x01, 0xd1, 0x43, 0xa0, 0xe7, 0x7f, 0x35, 0xa0, 0x6f, 0xe4, 0x57, 0xb0, 0xb8, + 0x99, 0x7c, 0x93, 0x4a, 0x0d, 0x4b, 0x0a, 0xd6, 0x24, 0xb2, 0x27, 0xd1, 0xa8, 0x2e, 0x5b, 0x3c, 0xcc, 0x17, 0xb2, + 0x8a, 0x70, 0x93, 0x2b, 0x00, 0x96, 0x2d, 0x90, 0x4d, 0x67, 0x62, 0xb8, 0xc6, 0xd1, 0x46, 0xda, 0x3b, 0x6d, 0xdf, + 0xd6, 0x03, 0xf2, 0x01, 0xa2, 0x89, 0x6c, 0x50, 0xd5, 0xf0, 0xb1, 0xd2, 0x24, 0xdd, 0x02, 0x42, 0xde, 0x1d, 0x5b, + 0x00, 0xe0, 0x5f, 0x5f, 0x31, 0xf8, 0x59, 0x9d, 0xc8, 0xa4, 0x70, 0x4d, 0x49, 0x54, 0xc3, 0x94, 0xbc, 0x58, 0x2e, + 0x03, 0x02, 0xba, 0x43, 0x2b, 0xfd, 0x0f, 0x9c, 0x0f, 0x91, 0x28, 0xf4, 0x3b, 0xe7, 0xb1, 0x3b, 0x69, 0xbd, 0x6a, + 0x8f, 0x20, 0xab, 0x8f, 0xd2, 0x5a, 0xf4, 0x00, 0x92, 0xcd, 0x45, 0xd5, 0x96, 0x37, 0x31, 0x0e, 0xfd, 0x75, 0xda, + 0xa4, 0x0c, 0x57, 0xcf, 0x7b, 0x1b, 0xf5, 0xa9, 0xcd, 0xff, 0xaf, 0xe8, 0x54, 0x52, 0x8a, 0x9e, 0x03, 0x97, 0x5e, + 0x62, 0x3f, 0x09, 0x6d, 0x54, 0x61, 0x7d, 0xfc, 0x7a, 0x33, 0x85, 0x38, 0x9a, 0x67, 0x4d, 0xb2, 0x24, 0xa7, 0x7d, + 0x33, 0xff, 0x3d, 0xe5, 0x7f, 0x7d, 0x09, 0x60, 0x87, 0xa6, 0xe4, 0x96, 0x2d, 0x3d, 0x1a, 0xa4, 0x3d, 0x2e, 0x49, + 0xcd, 0xb3, 0x62, 0x45, 0xa9, 0x84, 0xb3, 0xd8, 0xa5, 0x94, 0x07, 0xf0, 0x67, 0x39, 0xbc, 0x85, 0x9d, 0x3f, 0x14, + 0xd2, 0x53, 0x83, 0x2e, 0x85, 0x89, 0x69, 0xc7, 0xe7, 0x88, 0xbf, 0x3e, 0x1d, 0x40, 0x53, 0x95, 0xc8, 0x78, 0x03, + 0x87, 0x80, 0x93, 0x9c, 0x88, 0x32, 0x70, 0x2e, 0x91, 0x7b, 0x8f, 0x2b, 0x83, 0xd7, 0x32, 0x88, 0x5c, 0x94, 0x65, + 0x4b, 0x1a, 0x31, 0xe1, 0x16, 0x25, 0x03, 0x6e, 0xfd, 0x91, 0x7c, 0x33, 0x81, 0xcd, 0x36, 0xbb, 0xf5, 0xd2, 0x7a, + 0x65, 0x29, 0x34, 0xd7, 0x0e, 0x58, 0x75, 0xef, 0xda, 0x5e, 0xc0, 0x38, 0x16, 0x02, 0xff, 0x42, 0x1a, 0xad, 0xc5, + 0x17, 0x61, 0x89, 0x83, 0xe1, 0xc0, 0x2c, 0x5f, 0xae, 0xaa, 0x4e, 0x0f, 0x4c, 0xd6, 0xe6, 0x14, 0xf2, 0xe9, 0x06, + 0xc0, 0x16, 0x05, 0x9d, 0xd4, 0xa3, 0x32, 0x69, 0xa8, 0x8f, 0x51, 0x8c, 0x23, 0xfe, 0x66, 0x8b, 0x79, 0x79, 0xc2, + 0x6c, 0xe8, 0xff, 0x1f, 0x24, 0xf9, 0x7e, 0xe1, 0x17, 0x23, 0x65, 0xf1, 0x53, 0x8e, 0x74, 0xd5, 0xb8, 0xc8, 0x95, + 0x65, 0x00, 0xf3, 0x5f, 0x88, 0x99, 0x77, 0x8f, 0x71, 0xe5, 0xac, 0xee, 0x85, 0x4a, 0x22, 0x8b, 0x3b, 0xb9, 0xa6, + 0x71, 0x54, 0x0a, 0x03, 0x60, 0x21, 0x82, 0x2f, 0xd6, 0x20, 0x91, 0x5d, 0xd9, 0x33, 0x5e, 0x54, 0x48, 0xf7, 0xfb, + 0x6b, 0xd1, 0xef, 0x89, 0x0e, 0xd6, 0x4a, 0x18, 0x7d, 0x89, 0x19, 0x45, 0xae, 0x60, 0x2c, 0x91, 0x0a, 0x2e, 0x9c, + 0xae, 0x8b, 0xd4, 0xd8, 0x03, 0x3d, 0x33, 0xc1, 0x31, 0x68, 0x7e, 0xed, 0xa8, 0xe3, 0xa8, 0x13, 0x65, 0x64, 0xc6, + 0x5c, 0x5d, 0x60, 0xef, 0xfa, 0xf1, 0x2d, 0x33, 0x32, 0xcb, 0xc5, 0x4d, 0x0b, 0x48, 0xec, 0x84, 0x39, 0x92, 0x9a, + 0xdc, 0x60, 0x0b, 0x0a, 0x66, 0xd9, 0xaa, 0x04, 0x53, 0x84, 0xe4, 0xeb, 0x71, 0x40, 0x82, 0xc6, 0x6c, 0xb8, 0xc0, + 0xd1, 0x44, 0x9b, 0xb2, 0xb8, 0xa1, 0x5b, 0x14, 0x3d, 0xc7, 0x13, 0x1b, 0xee, 0x19, 0xb0, 0x60, 0xc5, 0x0a, 0xc6, + 0x40, 0x7f, 0x0c, 0x2e, 0x75, 0x3c, 0x6f, 0x49, 0xba, 0x38, 0x0d, 0x03, 0x54, 0x04, 0xa3, 0x51, 0x0e, 0xaf, 0x3e, + 0x34, 0xcb, 0x13, 0x22, 0x15, 0xfa, 0xc1, 0x16, 0x9e, 0x58, 0x78, 0x47, 0x9c, 0xad, 0x06, 0xcd, 0xf4, 0x10, 0xee, + 0x0d, 0x78, 0x64, 0x8d, 0x70, 0x45, 0x55, 0xc2, 0x76, 0x45, 0x40, 0xf0, 0xe2, 0xfc, 0x0e, 0x8a, 0xc4, 0x78, 0x56, + 0x7f, 0x8f, 0x05, 0x16, 0x31, 0xd3, 0x42, 0xd7, 0xfe, 0xbb, 0xaa, 0x89, 0x3c, 0x53, 0xd8, 0xa6, 0x95, 0x43, 0x72, + 0xa2, 0x00, 0x15, 0xe7, 0x83, 0xea, 0x9e, 0xad, 0x69, 0x93, 0xc5, 0x9d, 0xfc, 0xc2, 0x8d, 0x3c, 0x58, 0xd8, 0x70, + 0xd7, 0xcb, 0x65, 0x53, 0xc0, 0x9e, 0x83, 0x7e, 0x02, 0xbf, 0x6a, 0x90, 0x2f, 0xa2, 0xbe, 0x5d, 0x68, 0xeb, 0xbd, + 0xad, 0xaf, 0xee, 0x91, 0x8a, 0xeb, 0x4e, 0x98, 0xc9, 0xed, 0x24, 0x0d, 0x0d, 0x8d, 0xdf, 0x16, 0xf6, 0x8e, 0x10, + 0x59, 0x38, 0xa4, 0xd1, 0x0c, 0x09, 0x61, 0x06, 0x63, 0xcc, 0x5a, 0x84, 0x63, 0x1d, 0x90, 0xc8, 0xfb, 0x7b, 0x49, + 0xcb, 0xcf, 0x5b, 0x34, 0x47, 0x96, 0x4e, 0xb1, 0x13, 0x66, 0xd5, 0x1f, 0x18, 0x30, 0xdd, 0xd7, 0x9d, 0xb8, 0x98, + 0x41, 0xf2, 0x13, 0x1d, 0xc0, 0xbc, 0xf9, 0x03, 0x37, 0x48, 0x06, 0x89, 0xcf, 0xa8, 0x2e, 0x68, 0x3f, 0x16, 0xf3, + 0x41, 0x22, 0xfc, 0x11, 0x2d, 0xb2, 0x29, 0x5c, 0x56, 0x0f, 0xf9, 0x84, 0x22, 0xee, 0x59, 0xb3, 0x95, 0x0b, 0xc7, + 0xf0, 0x3a, 0xe4, 0x08, 0xce, 0x91, 0xdc, 0xa4, 0x1e, 0xad, 0x5e, 0x30, 0x9a, 0x0e, 0xe3, 0xb2, 0x81, 0x13, 0x97, + 0x57, 0x31, 0x8f, 0x9c, 0xe1, 0x92, 0xa3, 0xab, 0x69, 0x94, 0x02, 0x5c, 0x68, 0xe9, 0x41, 0x1a, 0xc7, 0x17, 0xde, + 0xaf, 0x77, 0xc5, 0x44, 0x2d, 0x6a, 0x2f, 0xd0, 0x16, 0x41, 0x40, 0x74, 0x57, 0x01, 0xd0, 0xaa, 0xe6, 0x70, 0x13, + 0xf5, 0x3f, 0x0a, 0x39, 0x4d, 0xb1, 0x82, 0x87, 0x9b, 0xd6, 0x2b, 0xbd, 0xec, 0xa7, 0xcb, 0xdb, 0x57, 0x4e, 0x49, + 0xa5, 0x8a, 0xa4, 0xbe, 0x83, 0xe6, 0x7c, 0x8b, 0x79, 0x4a, 0x7f, 0x39, 0x23, 0x07, 0xa8, 0xa9, 0x4e, 0xbd, 0xc3, + 0xbb, 0xcf, 0xbc, 0xe2, 0x48, 0xa3, 0x60, 0xc0, 0x2c, 0x8d, 0x60, 0x26, 0x49, 0x07, 0x92, 0x78, 0xdb, 0x99, 0x94, + 0x0e, 0x02, 0x27, 0x08, 0x9c, 0xc8, 0x23, 0x03, 0xfb, 0x6d, 0x18, 0x89, 0xe7, 0x3c, 0x08, 0xe5, 0x93, 0x31, 0xaa, + 0x06, 0xa9, 0x86, 0x70, 0x40, 0x9e, 0x08, 0x5d, 0x7d, 0x8d, 0xa8, 0xee, 0xa0, 0x31, 0x49, 0x35, 0x99, 0x78, 0xf3, + 0x97, 0x77, 0x05, 0x5f, 0xb2, 0xc8, 0xdc, 0xd8, 0xec, 0x9d, 0x48, 0xb5, 0xa4, 0x13, 0x01, 0x45, 0xe9, 0xe3, 0x84, + 0x1c, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, + 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x01, 0x00, 0x00, 0x40, 0xff, + 0xff, 0xff, 0x3f, 0xff, 0xc4, 0xfe, 0x3f, 0x02, 0x3b, 0xce, 0xfe, 0x03, 0x62, 0x39, 0x07, 0x06, 0x62, 0x6b, 0x26, + 0xf6, 0x1d, 0x36, 0x5f, 0x7e, 0x3d, 0xf2, 0x56, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, + 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, + 0x8e, 0x45, 0x01, 0x00, 0x00, 0x40, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xc4, 0xfe, 0x3f, 0x02, 0x3b, 0xce, 0xfe, 0x03, + 0x62, 0x39, 0x07, 0x06, 0x62, 0x6b, 0x26, 0xf6, 0x1d, 0x36, 0x5f, 0x7e, 0x3d, 0xf2, 0x56, 0x34, 0x33, 0x33, 0x33, + 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, + 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x01, 0x00, 0x00, 0x80, 0x54, 0x55, 0x55, 0xd5, 0xa9, 0x4c, + 0xa9, 0x2a, 0xad, 0x08, 0x1e, 0x1b, 0xaf, 0xde, 0x06, 0x08, 0x5c, 0x89, 0x05, 0x80, 0x11, 0x93, 0x58, 0x4d, 0xc5, + 0x60, 0x9b, 0x60, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, + 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x01, 0x00, 0x00, + 0x80, 0x54, 0x55, 0x55, 0xd5, 0xa9, 0x4c, 0xa9, 0x2a, 0xad, 0x08, 0x1e, 0x1b, 0xaf, 0xde, 0x06, 0x08, 0x5c, 0x89, + 0x05, 0x80, 0x11, 0x93, 0x58, 0x4d, 0xc5, 0x60, 0x9b, 0x60, 0x25, 0x49, 0x92, 0x24, 0xdb, 0xb6, 0x6d, 0xdb, 0x48, + 0x1a, 0x24, 0x49, 0xdc, 0x2e, 0x36, 0xaa, 0x4a, 0x62, 0x77, 0x70, 0x4b, 0x62, 0xc7, 0x57, 0x82, 0x91, 0x51, 0xe7, + 0x60, 0x54, 0x1f, 0x21, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, + 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x3e, 0x2c, + 0xe4, 0xf5, 0x63, 0xa7, 0xf2, 0x0e, 0x51, 0x85, 0x27, 0x20, 0x86, 0xec, 0x5b, 0x36, 0xe4, 0xea, 0xf3, 0x0c, 0x61, + 0xaa, 0xc6, 0x06, 0x74, 0xa3, 0xcc, 0xc1, 0x24, 0x1c, 0x32, 0x69, 0x95, 0x82, 0xd1, 0xb0, 0xf9, 0x5d, 0x48, 0x7e, + 0x90, 0xf2, 0x18, 0x4e, 0xad, 0x05, 0x11, 0x3b, 0xc9, 0xfa, 0xfe, 0xf4, 0xe4, 0x3a, 0xfc, 0xd1, 0xb8, 0x4b, 0xee, + 0xab, 0x1c, 0x80, 0x90, 0x0d, 0x01, 0x00, 0x00, 0x40, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xc4, 0xfe, 0x3f, 0x02, 0x3b, + 0xce, 0xfe, 0x03, 0x62, 0x39, 0x07, 0x06, 0x62, 0x6b, 0x26, 0xf6, 0x1d, 0x36, 0x5f, 0x7e, 0x3d, 0xf2, 0x56, 0xa5, + 0xd2, 0xd6, 0x97, 0x8d, 0x8a, 0xf9, 0x2a, 0x81, 0x39, 0xfd, 0xef, 0xe5, 0xd1, 0x41, 0x7d, 0xb2, 0xa6, 0x20, 0x46, + 0x9a, 0xc4, 0x02, 0xcc, 0x8e, 0x38, 0xd8, 0xa2, 0x2d, 0x8f, 0xa7, 0x5e, 0xc2, 0x91, 0x1b, 0xf6, 0x2c, 0xb3, 0x21, + 0xed, 0x91, 0x8c, 0x3e, 0xb5, 0x8e, 0x10, 0x26, 0x1f, 0x86, 0x4d, 0xae, 0x08, 0x65, 0x72, 0x2b, 0x5d, 0x7c, 0x64, + 0x10, 0xfa, 0xc1, 0xa6, 0x20, 0x55, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, + 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, + 0xc2, 0x91, 0x1b, 0xf6, 0x2c, 0xb3, 0x21, 0xed, 0x91, 0x8c, 0x3e, 0xb5, 0x8e, 0x10, 0x26, 0x1f, 0x86, 0x4d, 0xae, + 0x08, 0x65, 0x72, 0x2b, 0x5d, 0x7c, 0x64, 0x10, 0xfa, 0xc1, 0xa6, 0x20, 0x55, 0x54, 0x24, 0x25, 0x3c, 0xb1, 0x71, + 0x3e, 0xfe, 0x4e, 0xcd, 0x04, 0x70, 0xb5, 0xcd, 0x65, 0x35, 0x9b, 0xb9, 0x69, 0x70, 0xfc, 0x9e, 0xc1, 0xa4, 0x2c, + 0xe6, 0xb5, 0xd6, 0x38, 0x75, 0x07, 0x52, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, + 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, + 0x4d, 0xa2, 0x92, 0xa6, 0xd6, 0xd4, 0x73, 0x2f, 0x8d, 0x27, 0x96, 0x8a, 0xc6, 0xc2, 0xbe, 0x74, 0x03, 0x5f, 0x90, + 0x8e, 0xac, 0x46, 0x55, 0x68, 0x45, 0x37, 0x1a, 0xb9, 0xf9, 0x97, 0x93, 0xd3, 0x59, 0x64, 0xe7, 0x4f, 0xee, 0x6e, + 0x02, 0x20, 0x8d, 0xbb, 0xe5, 0x84, 0x23, 0xf2, 0x41, 0x5f, 0x9f, 0xb2, 0xcf, 0xe4, 0x7d, 0xa9, 0x3a, 0xde, 0xdf, + 0xd5, 0xb6, 0x90, 0xd5, 0x24, 0xa0, 0xe0, 0x47, 0xd4, 0xfc, 0x91, 0xd8, 0xff, 0x9b, 0x40, 0xeb, 0x00, 0x2b, 0x35, + 0x8c, 0x86, 0x3c, 0x71, 0xa0, 0x84, 0xfc, 0x18, 0xf1, 0x16, 0x08, 0x99, 0xe5, 0x0c, 0x47, 0x83, 0xcb, 0x7e, 0x7f, + 0x96, 0x58, 0x72, 0x40, 0x10, 0x59, 0x28, 0x31, 0x2f, 0x0c, 0x1c, 0xa1, 0x19, 0x7f, 0x78, 0x5a, 0x5b, 0x8b, 0x40, + 0xe2, 0x52, 0xa3, 0xda, 0xea, 0xec, 0x8f, 0x71, 0xbc, 0x5d, 0x9a, 0xb2, 0xe8, 0x86, 0x6b, 0x01, 0x00, 0x00, 0x00, + 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, + 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0xf6, 0xd4, 0x61, 0x0e, 0xe7, 0x6c, 0x28, 0x1a, 0x40, 0x1b, + 0x06, 0x94, 0x15, 0xb8, 0x36, 0x75, 0xd6, 0x24, 0xc8, 0x9b, 0x0d, 0xde, 0x46, 0xc4, 0x4d, 0x88, 0x8c, 0xb5, 0x17, + 0xfd, 0x3a, 0x6b, 0x8b, 0xfc, 0x1a, 0xd8, 0x20, 0x32, 0xfa, 0x3d, 0xe4, 0xac, 0xa3, 0xc4, 0x8c, 0xce, 0xac, 0xbf, + 0x42, 0x77, 0x63, 0x24, 0x8d, 0x33, 0x7f, 0xc1, 0x04, 0x61, 0x88, 0x6e, 0xae, 0x24, 0x52, 0x2f, 0xc6, 0xe7, 0x50, + 0x37, 0x91, 0x5c, 0xb7, 0x6a, 0x69, 0xeb, 0xfc, 0x51, 0x70, 0x80, 0xa5, 0x77, 0x83, 0xe5, 0x3e, 0xba, 0x99, 0xfa, + 0x5b, 0xfa, 0x44, 0xc2, 0x17, 0xe5, 0x7b, 0xab, 0xfe, 0x58, 0x07, 0x0a, 0x3e, 0x04, 0x21, 0x6c, 0x74, 0x03, 0x24, + 0x15, 0x15, 0x1a, 0x63, 0xa3, 0xf5, 0xaf, 0x38, 0xf9, 0xf0, 0x3f, 0x1c, 0xf2, 0x2f, 0xba, 0x9e, 0x7d, 0xac, 0x24, + 0x16, 0xc3, 0x93, 0x1e, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, + 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x7c, 0x21, + 0x29, 0xeb, 0xdd, 0xd9, 0xc2, 0xc2, 0x87, 0x30, 0x82, 0xe0, 0xe9, 0xa7, 0x35, 0x64, 0xc9, 0x67, 0xa9, 0xed, 0xd0, + 0xc5, 0x91, 0x3b, 0xc9, 0xf2, 0xd4, 0xd9, 0xc5, 0x89, 0x91, 0x4f, 0xc3, 0xd3, 0xbe, 0x3f, 0xb1, 0x31, 0x98, 0x25, + 0x25, 0x83, 0x24, 0xcd, 0x54, 0x99, 0xdb, 0x6f, 0xa7, 0x2d, 0x31, 0xc4, 0x53, 0xe1, 0x69, 0xa6, 0x35, 0xd5, 0x8d, + 0x11, 0x70, 0xfa, 0x26, 0x1e, 0x28, 0xbd, 0xfe, 0x69, 0x57, 0x63, 0x6c, 0x33, 0xe6, 0xb6, 0x10, 0x41, 0xb8, 0xbe, + 0x1f, 0xf6, 0x3a, 0xbe, 0xb5, 0x6a, 0x57, 0x66, 0xd0, 0xe4, 0x2a, 0x6b, 0xc3, 0xaa, 0x4f, 0xf2, 0xba, 0x5b, 0xd7, + 0xbe, 0xb3, 0xcc, 0x01, 0x81, 0x30, 0xdc, 0x9a, 0xd6, 0xab, 0x6a, 0x87, 0x56, 0x69, 0x23, 0xef, 0x37, 0xac, 0xbc, + 0xaf, 0xec, 0x35, 0xea, 0x74, 0xc9, 0xbf, 0x9d, 0x06, 0x76, 0xbc, 0x1d, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, + 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, + 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0xcb, 0xf6, 0x96, 0x28, 0xa7, 0x00, 0x6b, 0x60, 0x4b, 0xd1, 0x5a, 0x13, 0x03, + 0xa3, 0xda, 0x7d, 0xb6, 0x2d, 0xaa, 0x2b, 0x12, 0xf8, 0x5b, 0x0c, 0x81, 0xb4, 0x61, 0x51, 0x55, 0x40, 0x5c, 0x5e, + 0xb1, 0x5a, 0x71, 0xf9, 0x06, 0x13, 0xed, 0x2b, 0x89, 0xc0, 0x01, 0x55, 0xa8, 0xaa, 0x45, 0x36, 0xc8, 0x84, 0xfc, + 0x78, 0x69, 0x40, 0x55, 0x89, 0x88, 0xbf, 0x02, 0xd3, 0xa7, 0xd9, 0xc5, 0x48, 0x6a, 0x73, 0xaa, 0x9b, 0x54, 0x06, + 0x6c, 0x88, 0x2b, 0xef, 0x5a, 0x3f, 0x70, 0xbd, 0xb8, 0x38, 0x75, 0x9d, 0xe1, 0xf2, 0x8a, 0x8a, 0x69, 0x26, 0x6f, + 0x07, 0xf1, 0x5b, 0x00, 0x0a, 0x28, 0x41, 0x3a, 0xb1, 0xf8, 0x8d, 0xaa, 0x7f, 0xd5, 0x90, 0x34, 0xdf, 0xc9, 0xa0, + 0x59, 0x13, 0x36, 0x53, 0x28, 0x15, 0xed, 0x06, 0x7c, 0x1c, 0x2d, 0x43, 0xab, 0x50, 0x3c, 0xc9, 0x4b, 0x14, 0xda, + 0x36, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, + 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x7a, 0xc0, 0x5b, 0x5c, 0x19, + 0x50, 0x23, 0xa3, 0x8b, 0x3d, 0x80, 0x09, 0x63, 0x38, 0x5e, 0x65, 0x16, 0xd0, 0xa3, 0xa3, 0xe7, 0x28, 0x5a, 0x5f, + 0xa7, 0x0a, 0x4f, 0x0c, 0x34, 0x95, 0x26, 0x70, 0x85, 0x11, 0x97, 0x36, 0xa2, 0x76, 0x64, 0xd9, 0x7a, 0x8e, 0xa6, + 0xa1, 0x51, 0x9a, 0x89, 0xda, 0x38, 0x46, 0xd0, 0x68, 0x30, 0xde, 0x70, 0xf8, 0x88, 0x7d, 0xa9, 0x19, 0x45, 0x62, + 0xb0, 0x6f, 0xf3, 0xc4, 0xd7, 0xfd, 0x95, 0xb9, 0xd1, 0x1c, 0x7e, 0xb5, 0x58, 0xa6, 0x63, 0xaf, 0xcb, 0x4b, 0x52, + 0x83, 0x85, 0x0e, 0xed, 0x33, 0xfa, 0xb3, 0x61, 0x90, 0x61, 0x68, 0xc2, 0xba, 0x54, 0x5d, 0x23, 0xc8, 0xfb, 0x0e, + 0x7d, 0x7a, 0x8c, 0xa9, 0x09, 0x2a, 0x21, 0x4e, 0x23, 0x02, 0xf2, 0x0d, 0x84, 0xd1, 0xab, 0x8a, 0x13, 0x8c, 0x9a, + 0x6a, 0x20, 0xd2, 0x09, 0x82, 0xfb, 0x1e, 0xe6, 0x17, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, + 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, + 0x1a, 0x49, 0x4d, 0xd1, 0x0f, 0xb4, 0xbd, 0x0e, 0x68, 0x31, 0x1a, 0x30, 0xc8, 0x92, 0xd8, 0xaa, 0xcd, 0x04, 0x05, + 0x87, 0x5c, 0x49, 0x68, 0xd2, 0xba, 0x3e, 0xb2, 0x09, 0xa3, 0xb0, 0x8a, 0x59, 0xcf, 0xd2, 0x4b, 0xeb, 0xf7, 0xaa, + 0x35, 0xf6, 0x48, 0x57, 0x40, 0x6b, 0x0e, 0x26, 0x37, 0x2a, 0x91, 0x0c, 0xea, 0x3f, 0x26, 0x97, 0xc8, 0xc4, 0x4a, + 0x18, 0xd3, 0x06, 0x12, 0x93, 0xa5, 0xad, 0x9a, 0x69, 0x6a, 0xc1, 0x4d, 0x2c, 0x31, 0x45, 0x03, 0x3a, 0x2e, 0x24, + 0xd5, 0xd0, 0xdf, 0xeb, 0xdb, 0xdf, 0xd0, 0x6f, 0x3d, 0x14, 0xa8, 0x7a, 0x5f, 0x53, 0xe3, 0x9e, 0xb8, 0x68, 0x4d, + 0x91, 0xe2, 0x0a, 0x48, 0x94, 0x73, 0xd9, 0x84, 0x9a, 0x55, 0x3e, 0x42, 0x99, 0xe7, 0x1e, 0x73, 0x64, 0xd4, 0x8d, + 0x26, 0xf0, 0x16, 0x36, 0x08, 0x7b, 0xde, 0x8c, 0xe9, 0x0a, 0x27, 0x3a, 0x90, 0x6f, 0x6c, 0x90, 0x66, 0x01, 0x00, + 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, + 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0xd1, 0x81, 0xc0, 0x8c, 0xc5, 0x6d, 0x18, 0x32, + 0xd7, 0x82, 0x81, 0xb4, 0x0f, 0x0b, 0x34, 0x91, 0xe1, 0xec, 0x57, 0xf2, 0x17, 0xca, 0x56, 0x15, 0x1f, 0x7d, 0xa7, + 0x27, 0x3a, 0xaf, 0xc3, 0x24, 0x0e, 0x26, 0x24, 0x5e, 0x31, 0x77, 0x45, 0xfb, 0x9c, 0x71, 0xaf, 0x19, 0x73, 0xd0, + 0x33, 0x0b, 0x22, 0xd8, 0xde, 0xd0, 0x42, 0x79, 0xc0, 0x40, 0x23, 0x44, 0x1e, 0xa3, 0xdf, 0x65, 0x48, 0x50, 0x96, + 0xdc, 0xc5, 0x98, 0x9b, 0x13, 0xa8, 0x29, 0x6e, 0x79, 0x02, 0xef, 0x50, 0xd0, 0xdf, 0x71, 0x29, 0xd3, 0xa4, 0x3a, + 0xa4, 0x13, 0xc9, 0x0f, 0xa3, 0xff, 0x73, 0x25, 0xb0, 0xb8, 0xe0, 0x07, 0x02, 0xfd, 0xb5, 0x6f, 0xb4, 0x95, 0xc5, + 0x49, 0x8b, 0x13, 0xb4, 0xb9, 0x4f, 0xba, 0xd3, 0x83, 0xc2, 0x8c, 0x7a, 0xbe, 0x9a, 0x0b, 0x7d, 0x03, 0x75, 0xf6, + 0xbd, 0x84, 0xbd, 0xc0, 0xd4, 0x33, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, + 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, + 0x60, 0x31, 0xd7, 0xab, 0x48, 0x21, 0x3b, 0x89, 0xc4, 0x3f, 0xe9, 0x30, 0xf6, 0xbc, 0x55, 0xf0, 0xcf, 0x49, 0x4d, + 0xf3, 0x3f, 0x66, 0xbe, 0x39, 0x3c, 0xcd, 0x53, 0x36, 0xc6, 0xd6, 0x04, 0x62, 0x37, 0x64, 0x6e, 0x86, 0x83, 0x2f, + 0x1a, 0xe3, 0xd8, 0xcb, 0x6b, 0xcc, 0x18, 0x8c, 0xbc, 0x89, 0x97, 0x69, 0xa7, 0xe9, 0x61, 0x1f, 0xe6, 0x92, 0x3e, + 0x34, 0x7b, 0xfa, 0xee, 0x9d, 0xcb, 0x03, 0x26, 0x8e, 0xd5, 0xc7, 0x11, 0xfb, 0x18, 0xc6, 0xe0, 0xd0, 0x7e, 0xb7, + 0x77, 0x2c, 0x6e, 0xc0, 0x48, 0x33, 0x34, 0x11, 0x1c, 0x7d, 0x55, 0xa5, 0xca, 0xb3, 0x2d, 0xc6, 0x06, 0x59, 0x9b, + 0x27, 0x8a, 0x1a, 0xd6, 0xa4, 0x5c, 0x48, 0x9f, 0x72, 0x20, 0x69, 0xdc, 0xbd, 0xf0, 0xba, 0x39, 0x4c, 0x70, 0xa5, + 0x78, 0xb5, 0x87, 0x9c, 0x00, 0xe0, 0xc8, 0xf1, 0x8c, 0x03, 0x3a, 0x2c, 0x1c, 0x2e, 0x01, 0x00, 0x00, 0x00, 0xaa, + 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, + 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x83, 0x09, 0xd7, 0x49, 0xb5, 0x30, 0x90, 0x05, 0x98, 0x2a, 0x2f, + 0x01, 0x25, 0x9f, 0x29, 0xf4, 0xa1, 0x30, 0x62, 0x62, 0x05, 0xbb, 0xa6, 0xda, 0x2f, 0x82, 0x41, 0xad, 0x2f, 0x4a, + 0x49, 0x2f, 0x06, 0x35, 0xd8, 0x2f, 0x0c, 0xfa, 0xa5, 0x8c, 0x8e, 0xe7, 0x8a, 0x31, 0x83, 0x67, 0xf4, 0x34, 0xa2, + 0xa2, 0x88, 0x6c, 0x71, 0xc7, 0xf1, 0x4c, 0xca, 0xba, 0x0d, 0x57, 0xc8, 0xef, 0x8f, 0x42, 0x9b, 0x2d, 0x86, 0x4a, + 0x6a, 0x2c, 0xe7, 0x42, 0x56, 0xe5, 0x36, 0x46, 0xf6, 0xa6, 0x25, 0x4c, 0x83, 0xc1, 0x46, 0x19, 0x22, 0xf9, 0xcd, + 0x19, 0x31, 0x55, 0xaa, 0x2b, 0xa5, 0x59, 0x78, 0x70, 0x90, 0x84, 0x93, 0x55, 0xb8, 0x46, 0x4d, 0x54, 0xaa, 0x13, + 0x1e, 0x5f, 0x72, 0x9a, 0xb5, 0x05, 0x48, 0x28, 0x3d, 0x78, 0xaf, 0xd3, 0x25, 0x46, 0x9b, 0xd1, 0x06, 0x60, 0x74, + 0x34, 0x4e, 0x38, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, + 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x79, 0xc6, 0x8a, + 0xe3, 0xae, 0xf7, 0xaf, 0x3a, 0xb6, 0xe4, 0xd3, 0xdd, 0x69, 0x6a, 0x24, 0x45, 0x6e, 0x16, 0x97, 0x1c, 0x3e, 0xb8, + 0x34, 0x46, 0xf3, 0xd2, 0x73, 0x3f, 0x83, 0x89, 0xd2, 0x0c, 0x5a, 0x95, 0x79, 0x68, 0x8d, 0x99, 0x66, 0xad, 0xfc, + 0x2d, 0x15, 0xfb, 0x2b, 0xce, 0x6d, 0x15, 0x95, 0x82, 0x9d, 0xae, 0x31, 0x31, 0x3b, 0xd5, 0x7a, 0xe3, 0x66, 0x40, + 0x34, 0x8b, 0xc0, 0x2f, 0x94, 0x52, 0x55, 0x33, 0xce, 0x37, 0x27, 0xe3, 0x35, 0x3f, 0x63, 0x58, 0x7f, 0x92, 0x2a, + 0x4e, 0xbd, 0x43, 0x10, 0x6e, 0xc6, 0xc3, 0x86, 0x31, 0xd8, 0xb8, 0xe0, 0x39, 0x48, 0xf1, 0xa0, 0x49, 0xec, 0x14, + 0x25, 0x1b, 0xf1, 0x2d, 0x6f, 0x1a, 0x96, 0xb2, 0x0c, 0x08, 0x86, 0x9b, 0x9f, 0xfa, 0xe5, 0x1a, 0x00, 0xb6, 0x54, + 0x35, 0xcd, 0x4a, 0xb2, 0x93, 0x6e, 0x09, 0xb4, 0xb1, 0x61, 0x4c, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, + 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, + 0x71, 0x37, 0x1a, 0x49, 0x4d, 0xdb, 0x04, 0x30, 0x03, 0xcb, 0xf5, 0x5e, 0xe4, 0xbc, 0x0e, 0xcf, 0x6f, 0x40, 0x4d, + 0xfa, 0x18, 0x32, 0x71, 0x77, 0x86, 0x99, 0x1d, 0xb7, 0xb6, 0x34, 0x8a, 0x42, 0x0e, 0x08, 0x86, 0x14, 0x50, 0x2e, + 0x67, 0x22, 0x47, 0x1e, 0x39, 0xfb, 0x7d, 0x35, 0xc4, 0x12, 0x18, 0x0e, 0x30, 0x86, 0x19, 0xfb, 0x76, 0x16, 0x19, + 0x6d, 0x8c, 0x75, 0x95, 0x23, 0x69, 0x48, 0x28, 0xfd, 0x9b, 0x0b, 0x64, 0x91, 0xe6, 0x92, 0xd3, 0x1a, 0x8d, 0x5f, + 0x08, 0xa9, 0xee, 0x34, 0x8b, 0xe2, 0x71, 0x86, 0x8c, 0xf8, 0xa8, 0x27, 0x08, 0xd1, 0x00, 0x12, 0x77, 0xce, 0x0b, + 0xae, 0x05, 0x38, 0x38, 0x3b, 0x6f, 0xc8, 0xda, 0x82, 0x9c, 0x50, 0x72, 0x45, 0xaf, 0xad, 0x71, 0x4a, 0x6b, 0x19, + 0x6b, 0x7c, 0x1e, 0x6e, 0xe8, 0x87, 0xaa, 0x9b, 0xe5, 0x38, 0x9a, 0x22, 0x19, 0xd2, 0x9a, 0x94, 0x15, 0x70, 0x4c, + 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, + 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0xd6, 0xbc, 0xf5, 0x83, 0xf1, 0xfe, + 0xde, 0xf5, 0xd8, 0xae, 0xf8, 0xb3, 0x54, 0x9d, 0x69, 0x55, 0x8b, 0x2b, 0xa9, 0x5e, 0x78, 0xaf, 0x24, 0x05, 0x58, + 0x70, 0x69, 0xcd, 0x88, 0xc4, 0x0f, 0x4f, 0x68, 0xc6, 0x43, 0x2f, 0xa6, 0x92, 0xea, 0x6e, 0xb9, 0x77, 0x74, 0xae, + 0x8c, 0xfd, 0x9f, 0x79, 0xc4, 0xe1, 0x7a, 0x07, 0x6c, 0x38, 0x40, 0xdd, 0xf9, 0x1c, 0x6d, 0x19, 0xc8, 0xf1, 0xe0, + 0x18, 0xc2, 0xa5, 0xf2, 0x5f, 0xde, 0x70, 0x37, 0x1c, 0x82, 0x56, 0x5e, 0xde, 0x09, 0x70, 0x48, 0xad, 0xb8, 0x73, + 0xe7, 0x90, 0x36, 0x88, 0x4d, 0x68, 0x32, 0x0b, 0x1d, 0x77, 0x71, 0x9a, 0x21, 0x1c, 0x12, 0x3a, 0x4e, 0x82, 0x34, + 0xc7, 0xfa, 0xa9, 0x2b, 0x10, 0xa1, 0x6b, 0x9b, 0x11, 0xdb, 0x82, 0x42, 0x91, 0x02, 0x88, 0xe4, 0xba, 0x5f, 0x57, + 0xd9, 0xac, 0x30, 0x98, 0x05, 0xa8, 0x2c, 0x4d, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, + 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, + 0x49, 0x4d, 0xc5, 0xb5, 0x00, 0xde, 0x7e, 0x5c, 0xfe, 0x18, 0xec, 0xaa, 0x55, 0x85, 0xcb, 0x66, 0x55, 0x52, 0xad, + 0xcb, 0x74, 0x28, 0x93, 0x85, 0xd8, 0x94, 0x97, 0x4d, 0x64, 0x6e, 0xd8, 0xfe, 0x99, 0x3a, 0x57, 0x1d, 0x51, 0xc1, + 0xea, 0xdd, 0xd2, 0x38, 0xdd, 0x3d, 0xba, 0x2a, 0x71, 0x96, 0xa2, 0x97, 0xa6, 0x00, 0xc9, 0xc6, 0x65, 0xbb, 0xc6, + 0x27, 0xd6, 0x04, 0x49, 0x3a, 0x5c, 0xb3, 0xb0, 0x05, 0x05, 0xea, 0x70, 0x92, 0xe7, 0xf2, 0x43, 0x67, 0x49, 0x6b, + 0x96, 0x0f, 0x95, 0x7a, 0x15, 0x3a, 0x4f, 0x0f, 0xf5, 0xf6, 0xf1, 0x51, 0xe7, 0x12, 0x83, 0x8d, 0x2a, 0xad, 0xb3, + 0x29, 0x0b, 0x66, 0x20, 0x30, 0xf5, 0x8f, 0xb9, 0x81, 0x61, 0x2d, 0xb4, 0x44, 0xe7, 0x89, 0x89, 0x1b, 0x4b, 0xb8, + 0x90, 0x2d, 0x54, 0xa7, 0x8e, 0x58, 0x6c, 0x3c, 0xe1, 0x31, 0xba, 0x3e, 0xbf, 0xe2, 0xb4, 0x5c, 0x01, 0x00, 0x00, + 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, + 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x72, 0xdc, 0xc0, 0xee, 0x8c, 0x48, 0x9a, 0x30, 0x4b, + 0x5f, 0xfc, 0x54, 0xe7, 0x0b, 0xc7, 0x1d, 0xfc, 0x66, 0x27, 0x13, 0x6d, 0x4d, 0x0c, 0x15, 0x76, 0x71, 0x51, 0xf3, + 0x25, 0xfd, 0x2c, 0x37, 0xf7, 0xc0, 0xce, 0xcc, 0xa3, 0x90, 0x0b, 0xbd, 0x5e, 0x6e, 0x09, 0x8a, 0xde, 0x6f, 0x9c, + 0x6d, 0xdc, 0xf1, 0xeb, 0x6b, 0xd0, 0x3d, 0x38, 0x8c, 0xd0, 0xbf, 0xaf, 0xbf, 0xe2, 0xb3, 0x95, 0x4f, 0x4e, 0x11, + 0x43, 0xe0, 0x90, 0x60, 0xca, 0x61, 0xc5, 0xab, 0xfc, 0xd5, 0x19, 0x02, 0xe6, 0xee, 0x32, 0xd3, 0x93, 0xc1, 0x6c, + 0x69, 0x07, 0xba, 0x37, 0x7a, 0x55, 0xed, 0xb3, 0xda, 0xbf, 0x3a, 0x56, 0x67, 0xbb, 0x94, 0xc3, 0x70, 0x3e, 0xf6, + 0x35, 0xdf, 0x5d, 0xf6, 0xec, 0x4c, 0x76, 0x88, 0x22, 0xcb, 0xb8, 0x87, 0x6f, 0x73, 0x48, 0xc5, 0xae, 0x2f, 0x89, + 0x18, 0xab, 0x89, 0x0c, 0x4e, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, + 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x62, + 0x6e, 0xaf, 0x1e, 0xc0, 0xc8, 0xa0, 0x0f, 0x41, 0x9c, 0x9a, 0x41, 0x06, 0xeb, 0x2e, 0xe5, 0x1a, 0xf4, 0x0d, 0x48, + 0x40, 0x95, 0x0e, 0xb0, 0xbb, 0xc3, 0x0c, 0x66, 0x7a, 0xd9, 0xb4, 0x0c, 0x5b, 0x03, 0x93, 0xa6, 0xa8, 0x9a, 0xea, + 0x96, 0x44, 0xcb, 0x12, 0xae, 0x40, 0x60, 0x03, 0xfc, 0xb7, 0x1b, 0x2d, 0xa0, 0x12, 0xd3, 0x30, 0x74, 0x66, 0xcc, + 0xa4, 0xfa, 0xca, 0x5b, 0x20, 0x25, 0x7f, 0x66, 0x6d, 0xad, 0x3a, 0x65, 0x13, 0xc3, 0x51, 0x00, 0x54, 0x5c, 0x61, + 0x0c, 0x76, 0xb7, 0x8b, 0xe6, 0x97, 0xb1, 0x94, 0x78, 0x4d, 0x2c, 0x33, 0xc7, 0xf0, 0x09, 0xba, 0x2d, 0xf5, 0x60, + 0x6d, 0x86, 0x75, 0x71, 0xed, 0xc9, 0x73, 0x2d, 0x73, 0x2d, 0x8a, 0xfb, 0x53, 0xa3, 0x1a, 0xc0, 0xe6, 0x8c, 0xd0, + 0x6f, 0x98, 0xfc, 0x00, 0xfe, 0x8e, 0xd9, 0x2a, 0x39, 0x5c, 0xef, 0x79, 0x1b, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, + 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, + 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x1b, 0x0e, 0xb3, 0x6e, 0xec, 0x41, 0x47, 0x9c, 0x86, 0x65, 0xba, 0x43, + 0xfd, 0xef, 0xb4, 0x42, 0xca, 0x96, 0x39, 0xec, 0x62, 0x22, 0x73, 0xf7, 0xed, 0xd3, 0x27, 0xef, 0x57, 0x7f, 0x9b, + 0x61, 0x98, 0x00, 0x63, 0xbb, 0x4f, 0x68, 0x42, 0x1e, 0xe3, 0xea, 0x08, 0xf3, 0xa4, 0xe2, 0x9e, 0x71, 0x0a, 0x45, + 0x90, 0x7f, 0x93, 0x18, 0x1d, 0x1e, 0xf1, 0x47, 0x79, 0x91, 0xe4, 0x73, 0xbf, 0x5f, 0x7e, 0xcb, 0x83, 0xde, 0xde, + 0x88, 0xa7, 0xe0, 0x65, 0x01, 0x5b, 0x94, 0x64, 0xa8, 0x12, 0xb3, 0xde, 0x22, 0x82, 0x62, 0x5d, 0x30, 0x11, 0xc7, + 0x7a, 0xa8, 0xa0, 0xd6, 0xab, 0x70, 0x88, 0x59, 0x92, 0x3f, 0xf2, 0x6b, 0x25, 0xbb, 0x11, 0xb8, 0xda, 0x29, 0x5e, + 0xde, 0x29, 0xf0, 0x50, 0x8d, 0xf2, 0x76, 0x05, 0xc0, 0xb8, 0x9f, 0xa1, 0xe7, 0x7e, 0x85, 0x07, 0xfa, 0xda, 0xed, + 0x97, 0x0a, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, + 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x0e, 0xa5, 0x09, 0x60, + 0x5e, 0xeb, 0xb2, 0x0a, 0xda, 0x15, 0x84, 0xad, 0xd7, 0xf2, 0x0e, 0x1a, 0xce, 0x93, 0xea, 0xfa, 0x1d, 0xf5, 0xfb, + 0x2d, 0x45, 0x02, 0x26, 0x89, 0xf5, 0x4a, 0x1f, 0x4a, 0x4b, 0x39, 0xfb, 0xdd, 0x38, 0xef, 0x39, 0x55, 0x55, 0xdf, + 0xc4, 0x5e, 0x23, 0x83, 0x02, 0x48, 0x60, 0xf7, 0x1b, 0xcc, 0xe8, 0x6f, 0x86, 0xdf, 0x0e, 0xcf, 0xa1, 0x3d, 0x6e, + 0xd4, 0xb4, 0x20, 0x5d, 0xee, 0xf2, 0xe7, 0x78, 0xb8, 0x40, 0xf7, 0xad, 0xe2, 0x81, 0xe7, 0xfa, 0x26, 0x92, 0x0f, + 0x24, 0x87, 0xc9, 0x44, 0x5f, 0x90, 0x9d, 0x25, 0xaa, 0xb7, 0x95, 0x76, 0x89, 0x53, 0xd5, 0x5f, 0xe8, 0xa6, 0x59, + 0xba, 0x77, 0xf1, 0x05, 0xe8, 0x2e, 0x5d, 0x24, 0x31, 0x59, 0xf8, 0x13, 0x02, 0xfe, 0x9e, 0x22, 0x7b, 0xa7, 0xb1, + 0xa1, 0xba, 0xb0, 0xb7, 0xbd, 0xd1, 0x12, 0x38, 0x99, 0x61, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, + 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, + 0x37, 0x1a, 0x49, 0x4d, 0xb2, 0xcc, 0xab, 0x2f, 0x02, 0xe8, 0x24, 0xdd, 0x52, 0xf7, 0xe4, 0x98, 0x90, 0x56, 0x66, + 0x7c, 0xef, 0x7c, 0x42, 0xf3, 0x4a, 0x71, 0x47, 0x18, 0x17, 0x8c, 0x37, 0xac, 0x03, 0xde, 0xf7, 0x55, 0x75, 0xd4, + 0x7a, 0x60, 0x4e, 0xc3, 0xd0, 0xc4, 0xd4, 0x29, 0xd6, 0xc2, 0x5a, 0x10, 0x42, 0x98, 0x1f, 0xcd, 0x91, 0xe2, 0xe5, + 0xc3, 0x62, 0x26, 0x01, 0xda, 0x4b, 0xde, 0xf2, 0x37, 0xab, 0x37, 0x30, 0xaf, 0x44, 0x39, 0xb0, 0xa0, 0xa1, 0x84, + 0xbb, 0x01, 0x51, 0x77, 0x94, 0x9f, 0x1f, 0x67, 0x92, 0x39, 0x00, 0x69, 0x7a, 0x68, 0x79, 0xf4, 0x8e, 0x28, 0xde, + 0xe0, 0x4f, 0x0a, 0x4d, 0x00, 0xf0, 0xc3, 0xf8, 0x2a, 0xd3, 0x5e, 0xc2, 0x92, 0x9d, 0x1f, 0x7e, 0x77, 0x88, 0x25, + 0x9e, 0xd7, 0xaa, 0x95, 0xbd, 0x5a, 0x85, 0x61, 0x54, 0x41, 0xad, 0x8f, 0x8f, 0x02, 0x6b, 0xd5, 0x8d, 0x40, 0x01, + 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, + 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0xc0, 0xb2, 0x14, 0x11, 0x7c, 0xd7, 0xd4, + 0x99, 0xa2, 0xd1, 0x3f, 0xf2, 0xf9, 0x9c, 0x7e, 0xd9, 0x72, 0x9b, 0x8b, 0x73, 0xeb, 0x6c, 0x2b, 0xc0, 0x16, 0x3b, + 0x8d, 0xa3, 0x36, 0x95, 0xfa, 0x44, 0xd9, 0xd8, 0x58, 0xfd, 0x23, 0x67, 0x7f, 0xa2, 0xc4, 0x67, 0x69, 0xbb, 0x18, + 0x52, 0xc8, 0x38, 0xef, 0xad, 0x36, 0x79, 0x0e, 0x43, 0x17, 0x87, 0x3d, 0x1e, 0x6e, 0xf7, 0x06, 0xa5, 0xc2, 0x10, + 0x55, 0x73, 0x3a, 0x04, 0x3a, 0x32, 0x33, 0xde, 0x21, 0x54, 0xbf, 0xde, 0xd0, 0x5f, 0x2d, 0xe8, 0x3a, 0x6f, 0x9b, + 0xcb, 0x59, 0x32, 0x95, 0xb7, 0x63, 0xea, 0x6a, 0x07, 0x64, 0xa7, 0x6f, 0x3d, 0x55, 0x2a, 0x89, 0x52, 0xda, 0x87, + 0xbf, 0xaa, 0xd4, 0xbf, 0x97, 0xc0, 0xea, 0xfc, 0xc3, 0x2f, 0x2f, 0xcf, 0x8f, 0xf5, 0x7d, 0xfe, 0x0f, 0xf3, 0x13, + 0x23, 0x91, 0x76, 0xa8, 0xc5, 0x61, 0x5a, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, + 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, + 0x4d, 0x5c, 0xbf, 0x5f, 0xe9, 0x15, 0x89, 0xfb, 0xdb, 0xaf, 0x98, 0x7b, 0x9c, 0x9d, 0x4f, 0x11, 0xba, 0xaf, 0x71, + 0x71, 0xc8, 0x09, 0x4e, 0xaa, 0xbe, 0x20, 0x14, 0x24, 0xc8, 0x5d, 0xa1, 0x18, 0x3b, 0xf6, 0x48, 0xd9, 0x1a, 0x75, + 0x26, 0x54, 0xcf, 0xe7, 0xbe, 0xab, 0x24, 0x8f, 0x0c, 0x9c, 0xca, 0x23, 0x33, 0xb6, 0xd6, 0x42, 0x65, 0x37, 0x5f, + 0x35, 0xe9, 0x06, 0xe3, 0x0f, 0xb6, 0x73, 0x1e, 0x4f, 0x5e, 0x94, 0x44, 0x6e, 0xdf, 0xe1, 0x2a, 0x17, 0x97, 0x9a, + 0xa1, 0x19, 0x1b, 0x3f, 0xa3, 0x25, 0x7a, 0xf1, 0x51, 0xfa, 0xdd, 0x5f, 0x80, 0x35, 0xcc, 0x90, 0x2b, 0x8e, 0xa7, + 0x5b, 0x4d, 0x9d, 0x0f, 0x13, 0xc7, 0xa6, 0x87, 0x8a, 0xce, 0xe4, 0x45, 0xf9, 0xdc, 0xbf, 0xe8, 0xbc, 0xc1, 0x5b, + 0xfa, 0x51, 0x81, 0xa9, 0x7b, 0x26, 0xa9, 0xdd, 0xa8, 0xdf, 0xcf, 0x29, 0xb3, 0xbe, 0x14, 0x01, 0x00, 0x00, 0x00, + 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, + 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x4d, 0x90, 0x6a, 0xf7, 0xb0, 0xff, 0x6a, 0xac, 0xaf, 0x33, + 0xf0, 0x2d, 0x6c, 0x58, 0x3e, 0x8d, 0x45, 0x5f, 0x8b, 0xd9, 0x08, 0x69, 0x0e, 0x8d, 0x4f, 0x07, 0x87, 0x5b, 0xdb, + 0x17, 0xb9, 0x4e, 0xcb, 0x48, 0x41, 0x0c, 0x88, 0xa8, 0x23, 0x79, 0x4a, 0x9d, 0x9a, 0x31, 0x72, 0xe3, 0x1b, 0xd4, + 0x4d, 0xc5, 0xb1, 0x90, 0xdb, 0x9b, 0xef, 0x03, 0xff, 0x11, 0x42, 0x29, 0xb6, 0xc6, 0xc2, 0x1e, 0x70, 0x80, 0xaf, + 0xea, 0x0a, 0xd3, 0x2d, 0xb9, 0xea, 0x6e, 0xbd, 0x5c, 0xac, 0x97, 0xa9, 0x08, 0x7d, 0x51, 0xb3, 0x72, 0x62, 0x70, + 0x4f, 0x19, 0xa9, 0xee, 0xe4, 0xc7, 0x06, 0x3f, 0xe3, 0x3d, 0x1e, 0x02, 0x0e, 0xb5, 0x57, 0x3f, 0x14, 0x23, 0xda, + 0x5b, 0xf3, 0xf3, 0xf6, 0x62, 0x4e, 0x33, 0x72, 0x41, 0x4d, 0xb1, 0x87, 0xa6, 0xee, 0x68, 0x62, 0xb1, 0x71, 0x7e, + 0xb8, 0xa9, 0xa7, 0x6f, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, + 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0xa9, 0x53, + 0x42, 0x6f, 0xe4, 0x79, 0xbd, 0xc7, 0x37, 0x51, 0xc9, 0xe6, 0xfe, 0x9b, 0x63, 0x03, 0x25, 0xdb, 0xb6, 0xf9, 0xdb, + 0x80, 0x91, 0x01, 0x3f, 0xdd, 0xee, 0xe9, 0x9e, 0x60, 0xa6, 0x37, 0x43, 0x16, 0x9b, 0x92, 0x8b, 0xf9, 0xd9, 0x21, + 0xa7, 0xf9, 0x05, 0x21, 0x00, 0xaa, 0x35, 0x9c, 0x08, 0xa5, 0x66, 0xba, 0xcb, 0xe3, 0x45, 0xfd, 0x8e, 0xbb, 0x5e, + 0x97, 0x2a, 0xf9, 0x99, 0x6c, 0x8f, 0x92, 0xe8, 0x7d, 0x4f, 0x6d, 0x9c, 0x6d, 0xae, 0x17, 0xe1, 0x16, 0xde, 0x03, + 0x35, 0x01, 0x76, 0xe6, 0x5a, 0x3b, 0x45, 0xb5, 0x43, 0x21, 0x59, 0xa9, 0x87, 0x38, 0x2f, 0x07, 0x94, 0x60, 0x26, + 0xb9, 0xd2, 0xb5, 0xe3, 0x3b, 0x57, 0xa0, 0xb0, 0xb6, 0xfe, 0x10, 0x2e, 0xb6, 0xbd, 0xdf, 0x24, 0xe1, 0xc3, 0x8c, + 0xbb, 0x08, 0x62, 0x84, 0x7e, 0x37, 0x25, 0x5c, 0xd1, 0x65, 0xf2, 0x45, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, + 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, + 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x4f, 0x72, 0x7c, 0xfb, 0xb3, 0x7d, 0x0e, 0xa5, 0x2f, 0x39, 0x76, 0x80, 0xff, + 0x08, 0xac, 0xe7, 0x21, 0x18, 0x3f, 0x03, 0xab, 0xb2, 0xde, 0x9c, 0x83, 0x47, 0xa7, 0x90, 0x1e, 0x2c, 0xa3, 0x11, + 0x14, 0x4e, 0x27, 0x52, 0x70, 0x56, 0xa6, 0x87, 0x1a, 0x45, 0x52, 0xf4, 0x9f, 0xed, 0x73, 0xb2, 0xa2, 0x01, 0x55, + 0xbd, 0x6a, 0x32, 0xd4, 0x15, 0x2e, 0x7e, 0x05, 0xbb, 0xb5, 0x27, 0x46, 0x58, 0x49, 0x2b, 0xab, 0x60, 0x30, 0xbb, + 0x6d, 0x8a, 0xd8, 0x85, 0x78, 0x25, 0x19, 0x8a, 0x9d, 0xc9, 0x3e, 0xf2, 0xb0, 0x65, 0x1b, 0xe2, 0xfd, 0x30, 0x66, + 0x4b, 0xb5, 0x6b, 0xfd, 0x7e, 0xe3, 0x1c, 0x31, 0x08, 0xa6, 0xb2, 0xda, 0x48, 0x8d, 0xeb, 0xb0, 0xac, 0xf0, 0xf5, + 0x6e, 0xe5, 0x4b, 0xc7, 0xf9, 0xfb, 0xca, 0xbd, 0x8c, 0x4e, 0x28, 0xa1, 0xe9, 0xf6, 0x7f, 0x12, 0xd3, 0x5d, 0x88, + 0x0b, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, + 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x8b, 0x4e, 0xfd, 0x3f, 0x25, + 0xc1, 0xc0, 0x59, 0x5a, 0xd5, 0x46, 0xa0, 0x79, 0x62, 0x4e, 0x29, 0xc6, 0x1f, 0x75, 0x8a, 0x8c, 0x82, 0x5e, 0x15, + 0x72, 0xd5, 0x58, 0x66, 0x81, 0x74, 0x9c, 0x40, 0x1d, 0x98, 0x69, 0x66, 0xf6, 0xcb, 0x81, 0x16, 0xd4, 0xa4, 0xbc, + 0x13, 0xd6, 0x85, 0x54, 0x5d, 0xb3, 0x1b, 0x28, 0xa3, 0x56, 0x36, 0x46, 0xf6, 0xc2, 0x98, 0x24, 0xbb, 0x35, 0xfe, + 0xa2, 0x6a, 0x0b, 0xb7, 0x27, 0x6c, 0xb4, 0xda, 0x41, 0x1b, 0x37, 0x2f, 0x76, 0x99, 0x63, 0x28, 0x79, 0xc0, 0xc5, + 0x38, 0x5d, 0xf2, 0x16, 0x23, 0x40, 0xa5, 0xb7, 0x36, 0x5a, 0xd1, 0x91, 0x4a, 0xbe, 0x6f, 0x76, 0x8e, 0x06, 0x8f, + 0x7c, 0x29, 0x10, 0x51, 0x6a, 0x42, 0xde, 0x5b, 0xed, 0x80, 0x38, 0xf4, 0xf3, 0xf2, 0x5c, 0x76, 0xf2, 0x78, 0xbd, + 0x0d, 0x0c, 0xe8, 0x78, 0x68, 0xfc, 0x7c, 0x9c, 0x55, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, + 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, + 0x1a, 0x49, 0x4d, 0x65, 0xfe, 0xff, 0xbf, 0x05, 0x2f, 0x3c, 0x1e, 0x02, 0xfa, 0x35, 0x81, 0xef, 0x42, 0xb9, 0xa8, + 0x5f, 0x6d, 0x50, 0xaf, 0x80, 0x74, 0xb5, 0x76, 0xad, 0xd0, 0x5a, 0xc0, 0x44, 0xb0, 0x49, 0x2a, 0x1c, 0x35, 0x33, + 0x93, 0x5f, 0x00, 0x08, 0x49, 0x94, 0xb7, 0xab, 0x66, 0xd3, 0xd7, 0xcc, 0xfe, 0x68, 0x9e, 0xf0, 0xae, 0x7e, 0x26, + 0x1d, 0x4a, 0x85, 0xf7, 0x0c, 0xaa, 0xd6, 0x4f, 0x0c, 0x6a, 0xde, 0xd6, 0x8b, 0xb8, 0xc0, 0xbe, 0x0b, 0xab, 0x9a, + 0x3f, 0xe4, 0x8a, 0x1c, 0x1b, 0x81, 0x1b, 0x8d, 0x6e, 0xeb, 0xa3, 0xac, 0x44, 0x9a, 0x51, 0x29, 0x50, 0x2d, 0x93, + 0xa0, 0x23, 0xb8, 0x30, 0x33, 0x15, 0xe0, 0x11, 0x8b, 0x6e, 0xe3, 0x6f, 0x62, 0xc1, 0xba, 0x8b, 0x25, 0xac, 0xd3, + 0x13, 0x47, 0xee, 0xc5, 0x56, 0x62, 0x9e, 0xbd, 0x5e, 0x03, 0xdb, 0x78, 0xde, 0x5e, 0xf9, 0xb9, 0x4e, 0x01, 0x00, + 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, + 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x00, 0x00, 0x00, 0xd0, 0x87, 0x1a, 0x49, 0x23, + 0x54, 0x58, 0x48, 0x00, 0x80, 0x87, 0x16, 0x01, 0xa0, 0xbd, 0x8c, 0x8b, 0x01, 0x1a, 0xdc, 0xfc, 0x0f, 0xe2, 0x98, + 0xa5, 0x10, 0x78, 0x25, 0x6f, 0x9b, 0x99, 0x99, 0x59, 0x82, 0xef, 0x3b, 0xc0, 0xa7, 0xd6, 0x7c, 0xb6, 0x5e, 0xe0, + 0xd5, 0x9b, 0x31, 0x32, 0xf2, 0xf9, 0xde, 0x89, 0xa6, 0x89, 0x90, 0x6d, 0xa8, 0x10, 0xb0, 0x71, 0x7a, 0x1e, 0x85, + 0xb0, 0x81, 0x18, 0x2a, 0x71, 0xb1, 0x7b, 0xbd, 0x29, 0xdc, 0x08, 0x0e, 0xc6, 0xc5, 0xfd, 0x4d, 0xce, 0x87, 0x98, + 0xd2, 0xe6, 0x0f, 0x11, 0x2f, 0x7e, 0xf0, 0xe0, 0xd8, 0x47, 0x1d, 0x04, 0xc6, 0x9b, 0xde, 0x35, 0x20, 0x57, 0x3e, + 0xd4, 0x57, 0xb8, 0x20, 0x9d, 0x95, 0xae, 0xb6, 0x21, 0x82, 0xac, 0xde, 0xdd, 0x9b, 0x60, 0x94, 0xe9, 0x4b, 0xb4, + 0x59, 0xef, 0x06, 0xa7, 0xe4, 0x65, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, + 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, + 0x00, 0x00, 0x00, 0x30, 0xc2, 0x35, 0xb2, 0xc0, 0xe8, 0x0e, 0x8a, 0xaf, 0x28, 0x09, 0x1e, 0x7e, 0x9e, 0x37, 0x96, + 0x87, 0x92, 0x36, 0x29, 0xd7, 0x70, 0xd5, 0x84, 0xef, 0xb7, 0x50, 0x42, 0x00, 0xcd, 0xcc, 0xcc, 0x04, 0x5a, 0x14, + 0xea, 0x45, 0xb8, 0x82, 0x05, 0x94, 0x10, 0x12, 0xd3, 0x2e, 0x7d, 0x94, 0x1b, 0x04, 0x9a, 0x3c, 0x6d, 0xa5, 0x6c, + 0xbb, 0xbd, 0x4e, 0x34, 0xe1, 0xe0, 0x16, 0xcb, 0x55, 0x94, 0x0a, 0x7a, 0x18, 0xa0, 0xdd, 0x7b, 0x74, 0xd0, 0x54, + 0x3c, 0xb9, 0xcd, 0x54, 0xd0, 0x97, 0xfd, 0xfa, 0xd5, 0x19, 0xe9, 0x34, 0x4e, 0x6c, 0xa1, 0xea, 0xf3, 0x7f, 0x31, + 0x5e, 0xf8, 0x88, 0xbe, 0xec, 0x02, 0xf0, 0xce, 0x75, 0xdb, 0x51, 0xfa, 0x68, 0x41, 0x49, 0x10, 0x03, 0xab, 0xff, + 0x7f, 0x3a, 0xf5, 0x29, 0xa9, 0x1c, 0xc3, 0x3d, 0x5f, 0x4d, 0x66, 0x9b, 0x65, 0x04, 0x01, 0x00, 0x00, 0x00, 0xaa, + 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, + 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x00, 0x00, 0x00, 0x24, 0x7a, 0x63, 0x86, 0x07, 0x09, 0xeb, 0x71, + 0x66, 0xa4, 0x43, 0x09, 0xeb, 0xbc, 0x2d, 0x8c, 0x2c, 0xae, 0xeb, 0x7e, 0xde, 0xbf, 0x45, 0x0a, 0x22, 0x91, 0x27, + 0x00, 0x00, 0x67, 0x66, 0x66, 0x76, 0xa0, 0x3c, 0xc5, 0xd4, 0xd2, 0xcf, 0xd3, 0x0d, 0x97, 0x92, 0x52, 0x7c, 0xf8, + 0x5c, 0x73, 0x4d, 0xc5, 0x31, 0x62, 0x40, 0x76, 0xe7, 0xb5, 0xfb, 0xaa, 0x68, 0x8e, 0x45, 0xc2, 0xf6, 0xff, 0x3b, + 0xf3, 0x53, 0xd0, 0x30, 0x9b, 0x29, 0x1d, 0x86, 0x25, 0xbd, 0x0f, 0xf9, 0x53, 0x91, 0x10, 0x4c, 0xf5, 0x4a, 0xf3, + 0x13, 0x04, 0xf4, 0x79, 0x12, 0xc1, 0x4a, 0x58, 0x21, 0x3c, 0x74, 0xe0, 0x5d, 0x22, 0x2e, 0x60, 0x2a, 0xca, 0x3d, + 0x5f, 0xc2, 0xcb, 0xf2, 0x47, 0x71, 0xd0, 0xd6, 0x63, 0xca, 0xf3, 0xd0, 0xe8, 0x39, 0x99, 0x3b, 0xff, 0x06, 0x3e, + 0xe5, 0xcd, 0x6b, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, + 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x00, 0x00, 0x00, + 0xac, 0x99, 0x37, 0xb3, 0x60, 0xfa, 0x50, 0xcb, 0x16, 0x8f, 0x95, 0x6b, 0xcc, 0x70, 0x69, 0x74, 0x2e, 0x07, 0xd5, + 0x81, 0x98, 0xee, 0x16, 0x88, 0x9b, 0x17, 0x00, 0x00, 0x00, 0x34, 0x33, 0x33, 0xa9, 0x30, 0x56, 0xe3, 0x6e, 0x00, + 0xe2, 0x23, 0x99, 0x51, 0x52, 0x76, 0xe2, 0x4c, 0x35, 0xcc, 0xf4, 0xbe, 0x8b, 0x0f, 0xdf, 0xbf, 0xaa, 0x2a, 0xbb, + 0x59, 0x1f, 0xbe, 0x5c, 0xc0, 0x27, 0xda, 0x2d, 0x45, 0x2e, 0x95, 0x8f, 0xb7, 0x50, 0x74, 0xd9, 0xec, 0x14, 0xb8, + 0x4c, 0x0d, 0x7b, 0xc9, 0xe0, 0x02, 0xd1, 0x9e, 0x56, 0xc9, 0x27, 0xf7, 0xa8, 0xa6, 0xa1, 0xdc, 0x38, 0x3f, 0xff, + 0xf9, 0x30, 0xfa, 0x8c, 0xc8, 0xab, 0x60, 0x86, 0xf0, 0x52, 0xc4, 0x01, 0xc2, 0x9c, 0xb3, 0x42, 0x51, 0x52, 0x54, + 0x35, 0x83, 0x05, 0xb2, 0xd5, 0xc6, 0x9b, 0x7a, 0x43, 0xa6, 0x6c, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, + 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, + 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x00, 0x00, 0x00, 0xa5, 0xd1, 0xee, 0x7c, 0xd0, 0xba, 0xcb, 0x9d, 0x26, 0x7f, 0xd1, + 0xed, 0xba, 0xb3, 0x89, 0xf0, 0x52, 0xc2, 0x4f, 0x0c, 0xf0, 0x23, 0xdd, 0x15, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x9a, + 0x99, 0x99, 0xe5, 0x87, 0xd2, 0xdc, 0x99, 0xaf, 0xaf, 0x6f, 0xca, 0x7f, 0x10, 0x1c, 0x8b, 0x6e, 0xb8, 0xd8, 0xc5, + 0x9e, 0xd0, 0x03, 0xce, 0x57, 0x95, 0xbd, 0xcc, 0xba, 0x0f, 0x5f, 0x2e, 0xbf, 0x91, 0x50, 0x10, 0xfb, 0xe2, 0x60, + 0x0a, 0x57, 0xb1, 0xc7, 0xdb, 0xc3, 0x18, 0x08, 0x02, 0x48, 0xc8, 0xea, 0xa0, 0x46, 0x32, 0xaa, 0x31, 0x46, 0x05, + 0xbb, 0xbc, 0x03, 0x8d, 0xee, 0x36, 0xff, 0xa5, 0x22, 0x99, 0x0d, 0xd2, 0x0a, 0x51, 0x1a, 0x45, 0x34, 0x44, 0x68, + 0x5d, 0x72, 0xde, 0x20, 0x7d, 0xa1, 0xa1, 0x77, 0xce, 0xd3, 0xc1, 0x91, 0xa1, 0x29, 0x1e, 0xc6, 0xe3, 0x35, 0x14, + 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, + 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x00, 0x00, 0x00, 0x83, 0x1e, 0x97, + 0x8a, 0xf6, 0x06, 0xe2, 0xcb, 0xfe, 0xa5, 0x10, 0x1f, 0x59, 0x8b, 0xd6, 0x2f, 0x75, 0xeb, 0x3d, 0xff, 0xdf, 0x6e, + 0x67, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0xbc, 0x97, 0xb3, 0x89, 0x2c, 0x3e, 0x8b, 0x8b, 0xaf, + 0x9b, 0x36, 0xe5, 0x38, 0x1c, 0x8d, 0x76, 0x2b, 0xf5, 0x49, 0xe6, 0x15, 0x6c, 0x21, 0xaf, 0x6e, 0xdd, 0x87, 0x2f, + 0x17, 0xee, 0x4e, 0x3a, 0xda, 0x8f, 0x49, 0x3f, 0xd1, 0xcc, 0xc1, 0xd6, 0x95, 0x9e, 0x09, 0x52, 0x40, 0xab, 0xac, + 0x43, 0xc0, 0x04, 0x7a, 0x13, 0x51, 0x40, 0xae, 0xd1, 0x27, 0x84, 0xee, 0xf6, 0x4e, 0x8e, 0xd8, 0x03, 0x5c, 0x37, + 0x93, 0x2c, 0x43, 0x49, 0xac, 0x48, 0xd9, 0xa0, 0x82, 0x6b, 0x9f, 0x73, 0x22, 0xc6, 0x35, 0x95, 0x41, 0x89, 0x43, + 0xb1, 0x1f, 0x04, 0xfa, 0x25, 0x24, 0x59, 0x31, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, + 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, + 0x49, 0x4d, 0x00, 0x00, 0x40, 0xe4, 0x16, 0xab, 0x32, 0x30, 0xf2, 0x5a, 0x04, 0x1d, 0x4c, 0x5c, 0xea, 0xfe, 0x39, + 0xbb, 0xe4, 0x26, 0x4f, 0x5e, 0x35, 0xa6, 0x03, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x66, 0x66, 0xdb, + 0x44, 0x0e, 0xbd, 0xc1, 0x9b, 0x8c, 0x59, 0xb7, 0xb9, 0xc3, 0xb0, 0x7d, 0x2a, 0x27, 0x26, 0x19, 0x9e, 0xa2, 0x35, + 0xe4, 0x38, 0x45, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0xbb, 0xda, 0xd7, 0xf5, 0xdc, 0xf5, 0xee, 0x05, 0x0b, 0x14, + 0x99, 0x1d, 0x2c, 0x77, 0x0b, 0xa8, 0xe0, 0x4c, 0x30, 0xd5, 0xe7, 0x25, 0xa5, 0x00, 0x81, 0x5f, 0xbf, 0x8a, 0x0c, + 0x7c, 0xdd, 0x18, 0xb0, 0x6c, 0xf4, 0x8f, 0x59, 0x92, 0xf6, 0x79, 0xf6, 0x8d, 0x23, 0xf9, 0xaa, 0xc2, 0x33, 0xf1, + 0x15, 0xa6, 0x48, 0x92, 0x1c, 0xd8, 0x44, 0x2d, 0xe3, 0xdf, 0x33, 0x4c, 0xab, 0x74, 0x9b, 0x1a, 0x01, 0x00, 0x00, + 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, + 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x00, 0x00, 0xc0, 0x5a, 0x43, 0x4f, 0x54, 0x90, 0x5b, + 0x8f, 0x29, 0xf1, 0xbe, 0xb3, 0x8e, 0xbf, 0x2b, 0x63, 0x9b, 0xa4, 0x6d, 0x29, 0xe3, 0xfd, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x34, 0x33, 0x93, 0x51, 0xa5, 0xa4, 0x2f, 0xc2, 0xf4, 0x64, 0x4f, 0xb1, 0x7e, 0xa0, 0x7e, + 0xc7, 0x62, 0x51, 0xe8, 0xcd, 0xbb, 0xdf, 0x39, 0x36, 0x36, 0x64, 0xe4, 0xba, 0x75, 0x1f, 0xbe, 0x5c, 0x26, 0xa3, + 0x44, 0xc5, 0xda, 0xd1, 0xc0, 0x1f, 0x86, 0x3b, 0x67, 0x70, 0xe2, 0x82, 0x02, 0x91, 0x2b, 0x40, 0xb0, 0x46, 0xe2, + 0xcf, 0xe7, 0x51, 0x2b, 0x63, 0x28, 0xac, 0x8c, 0x0d, 0x7e, 0x2f, 0xce, 0x8f, 0x89, 0x09, 0xf4, 0x60, 0xb2, 0x30, + 0xa1, 0xfd, 0x80, 0xf7, 0xf8, 0x2d, 0xa8, 0xa8, 0x0f, 0x4d, 0x4e, 0xaa, 0x92, 0x83, 0x95, 0xa1, 0x6b, 0x2c, 0xb2, + 0x3e, 0x6f, 0x3e, 0x33, 0x5c, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, + 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x00, + 0x00, 0xd0, 0xb0, 0xb1, 0x11, 0x5d, 0x5f, 0x5d, 0xc3, 0x95, 0x1a, 0x6e, 0xc2, 0xfe, 0xd5, 0xed, 0x59, 0xd2, 0x9f, + 0x2b, 0xf7, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x99, 0x59, 0xbf, 0xae, 0x61, 0x76, + 0x5e, 0x8d, 0xfd, 0x9d, 0xc7, 0xb2, 0xa0, 0x04, 0x7f, 0xbb, 0x90, 0x38, 0xa3, 0x7e, 0x5e, 0x2c, 0xdf, 0x1c, 0x32, + 0x72, 0xdd, 0xba, 0x0f, 0x5f, 0x2e, 0x1a, 0xc0, 0x6a, 0xe1, 0x44, 0x05, 0x40, 0x61, 0xb6, 0x93, 0x2b, 0x00, 0x16, + 0x8a, 0x70, 0x5b, 0xbe, 0x39, 0x1f, 0x89, 0xbd, 0x8f, 0x95, 0xd9, 0xad, 0x4a, 0x11, 0xe6, 0x30, 0xc0, 0xdb, 0x53, + 0x2a, 0xb9, 0x1b, 0x91, 0x35, 0x4b, 0x6b, 0xe3, 0x17, 0xdf, 0x05, 0x6f, 0xfd, 0xd9, 0x0a, 0xc7, 0x4d, 0x05, 0x6d, + 0x5e, 0x2d, 0xc9, 0x42, 0x0f, 0x43, 0x96, 0x20, 0xf6, 0x13, 0xd5, 0x35, 0x2d, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, + 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, + 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x00, 0x00, 0x30, 0x32, 0x38, 0x7a, 0x48, 0x1a, 0x77, 0x0f, 0x63, 0xf3, + 0x88, 0x03, 0x96, 0xed, 0xc5, 0x2c, 0x20, 0xd4, 0xa5, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xcd, 0xcc, 0x84, 0x26, 0x24, 0x60, 0xdd, 0x3b, 0x8b, 0xb9, 0x0a, 0xa7, 0x81, 0xbc, 0x27, 0xda, 0x6d, 0xbc, + 0x60, 0x76, 0xd7, 0xe7, 0xa3, 0x70, 0x0e, 0x19, 0xb9, 0x6e, 0xdd, 0x87, 0x2f, 0x17, 0xa4, 0x2d, 0x51, 0x76, 0xad, + 0x02, 0x00, 0xd3, 0xd3, 0x9a, 0x21, 0x0c, 0x03, 0x85, 0xab, 0x50, 0x0b, 0xbf, 0x2d, 0x26, 0x8b, 0x88, 0x87, 0xdd, + 0xb0, 0xc1, 0xe5, 0x0f, 0x6a, 0xf8, 0xca, 0x23, 0x3a, 0xb0, 0xb8, 0xed, 0x03, 0xb6, 0x19, 0x17, 0xb2, 0xd7, 0xaf, + 0x25, 0x0f, 0xe8, 0x5d, 0x96, 0x88, 0x6b, 0xd7, 0x7f, 0xe0, 0xb0, 0x41, 0x57, 0xa1, 0x14, 0x1d, 0x55, 0x14, 0x63, + 0xdb, 0x2a, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, + 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x00, 0x00, 0x64, 0x7f, + 0x44, 0x75, 0xc4, 0x97, 0x37, 0x63, 0x51, 0x19, 0x64, 0xd6, 0x26, 0x62, 0xe4, 0x5c, 0xc4, 0xac, 0xa2, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x66, 0xf6, 0x93, 0xf5, 0xd8, 0x74, 0xee, 0xd7, 0xdd, + 0xc1, 0x95, 0x0c, 0x6d, 0x23, 0x58, 0x1b, 0x30, 0xd1, 0x7c, 0xdd, 0x80, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, + 0x97, 0x8e, 0x45, 0xd3, 0x87, 0x93, 0x2f, 0xa7, 0x92, 0xea, 0x68, 0xc2, 0x30, 0x3c, 0x9d, 0xfc, 0xe5, 0x9a, 0xe5, + 0x63, 0x86, 0xfe, 0xd6, 0x66, 0x52, 0x9b, 0xc9, 0x7e, 0x85, 0xd7, 0x18, 0x5e, 0x6c, 0x19, 0x6d, 0x74, 0x08, 0x36, + 0xf3, 0xae, 0xf9, 0x4c, 0xa7, 0xa7, 0x41, 0xb5, 0x25, 0x15, 0x62, 0xff, 0xae, 0x96, 0x82, 0xd3, 0x78, 0xf7, 0x79, + 0x28, 0x91, 0xd6, 0xb7, 0xed, 0x30, 0xea, 0x73, 0x77, 0x25, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, + 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, + 0x37, 0x1a, 0x49, 0x4d, 0x00, 0x00, 0xac, 0xba, 0x36, 0xd5, 0x4b, 0x79, 0xf3, 0x04, 0xf5, 0x8c, 0x51, 0xd7, 0x9c, + 0xc4, 0x42, 0x49, 0x0f, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x33, + 0x09, 0xd5, 0x70, 0xac, 0x80, 0x04, 0x8f, 0xd9, 0xd8, 0xe8, 0xa6, 0xb4, 0x00, 0x28, 0x46, 0x98, 0xca, 0xc7, 0xd2, + 0xac, 0x94, 0xc2, 0x39, 0x64, 0xe4, 0xba, 0x75, 0x1f, 0xbe, 0x5c, 0xcf, 0x90, 0x68, 0xf1, 0x6e, 0x4c, 0xca, 0x87, + 0x8f, 0x21, 0x48, 0xa0, 0x16, 0x8b, 0x99, 0xd9, 0x87, 0x24, 0x9b, 0x40, 0x22, 0xa8, 0x2f, 0x78, 0xa6, 0xa1, 0x66, + 0xe9, 0x3d, 0x18, 0x20, 0x3d, 0x8f, 0xe7, 0x2a, 0x62, 0x9d, 0x7a, 0x59, 0x9f, 0x19, 0xad, 0x4c, 0x22, 0xf7, 0xd8, + 0xff, 0x2f, 0xd1, 0x08, 0x62, 0xfa, 0xea, 0x32, 0xde, 0xeb, 0x34, 0xb7, 0x2f, 0xce, 0x59, 0xae, 0x58, 0x5e, 0x01, + 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, + 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x00, 0x00, 0xb5, 0x26, 0x62, 0x47, 0xcf, + 0x65, 0x84, 0xa1, 0x99, 0xdc, 0x4d, 0x33, 0x06, 0x56, 0x18, 0xe9, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x99, 0x05, 0xdc, 0x12, 0x36, 0xab, 0x88, 0x30, 0xba, 0x5f, 0xa0, 0xfb, + 0x47, 0x07, 0x26, 0x35, 0x41, 0x2f, 0x9d, 0x69, 0x56, 0x4a, 0xe1, 0x1c, 0x32, 0x72, 0xdd, 0xba, 0x0f, 0x5f, 0x2e, + 0x8a, 0xde, 0x53, 0x36, 0x9b, 0x28, 0xd7, 0xc2, 0x9a, 0xe9, 0x54, 0x8f, 0x12, 0x82, 0x62, 0x7c, 0x80, 0x95, 0xb6, + 0xe4, 0xb6, 0x95, 0x68, 0x3a, 0x12, 0x91, 0xc6, 0x53, 0x8d, 0xb2, 0x5f, 0x00, 0x98, 0x26, 0x75, 0x9a, 0x48, 0x00, + 0x22, 0x78, 0xd9, 0x15, 0xe9, 0x48, 0x9c, 0x41, 0x43, 0x00, 0x86, 0x64, 0xcf, 0xef, 0x41, 0xe0, 0x64, 0xc8, 0x06, + 0xbd, 0xf3, 0x38, 0x14, 0x4d, 0xb4, 0x29, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, + 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, + 0x4d, 0x00, 0x00, 0x03, 0xc6, 0x05, 0x53, 0x9b, 0xa2, 0x22, 0xa8, 0x0c, 0xfa, 0x63, 0x9c, 0xc2, 0x5e, 0x8d, 0x22, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0x4c, 0x74, 0x4a, 0xab, + 0x56, 0x10, 0x49, 0x78, 0xb6, 0xd1, 0x04, 0x5c, 0xb0, 0x7e, 0x50, 0x06, 0xcf, 0xb9, 0xce, 0x34, 0x2b, 0xa5, 0x70, + 0x0e, 0x19, 0xb9, 0x6e, 0xdd, 0x87, 0x2f, 0x17, 0xa3, 0xd0, 0xde, 0x7e, 0x48, 0x51, 0x64, 0x73, 0x21, 0x48, 0x05, + 0xf8, 0xb9, 0xaf, 0xa6, 0xc6, 0xfa, 0xf1, 0xaa, 0xea, 0xdc, 0x98, 0xbb, 0xb0, 0x67, 0xa5, 0xd0, 0x60, 0x25, 0x56, + 0x02, 0x04, 0x13, 0x70, 0x85, 0x7a, 0x7e, 0xf8, 0xf8, 0x6c, 0x77, 0xe5, 0x5b, 0x32, 0x93, 0xdd, 0x77, 0x1c, 0xa8, + 0x36, 0x1c, 0x19, 0x15, 0xd6, 0x65, 0x8a, 0x9f, 0x83, 0x4a, 0xdf, 0x0f, 0x3c, 0x5c, 0x71, 0x01, 0x00, 0x00, 0x00, + 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, + 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x00, 0x40, 0x58, 0x89, 0xea, 0xfc, 0xd4, 0xce, 0xe7, 0xab, + 0x47, 0x2a, 0x12, 0x95, 0x93, 0x9d, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x67, 0x66, 0xa3, 0xab, 0x8c, 0xef, 0x89, 0x25, 0x47, 0x52, 0x2b, 0x9e, 0xa5, 0x3b, 0xf4, 0xbe, + 0xea, 0xe7, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0xce, 0xc3, 0x34, + 0xb3, 0x70, 0x4e, 0x4d, 0xbe, 0xc5, 0x5a, 0x0c, 0x13, 0x5b, 0xee, 0x07, 0xbf, 0x95, 0x12, 0x7e, 0xed, 0x4d, 0xa4, + 0x8e, 0xc1, 0x70, 0x34, 0x9e, 0x6a, 0x3b, 0x06, 0xa6, 0x65, 0x0f, 0x2c, 0x93, 0x88, 0xf7, 0xef, 0xc9, 0x9c, 0x0d, + 0xd3, 0xa8, 0x1f, 0x8b, 0xd7, 0x35, 0xe3, 0xcb, 0xa0, 0x72, 0x39, 0x0b, 0xa8, 0x5a, 0x6f, 0x95, 0xeb, 0x29, 0x88, + 0x52, 0x3e, 0x01, 0x12, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, + 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x00, 0xc0, + 0x8a, 0x2f, 0x82, 0xda, 0x05, 0x96, 0x7e, 0x40, 0x9e, 0xef, 0x9e, 0xdb, 0x4c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x93, 0x07, 0x17, 0x22, 0x7d, 0xc9, 0xe4, + 0xa3, 0x4b, 0x66, 0x4e, 0x3b, 0x84, 0x67, 0x34, 0x04, 0xe0, 0xe7, 0x3a, 0xd3, 0xac, 0x94, 0xc2, 0x39, 0x64, 0xe4, + 0xba, 0x75, 0x1f, 0xbe, 0x5c, 0x0d, 0x88, 0x5f, 0xf8, 0xac, 0x4e, 0xb4, 0x30, 0x5c, 0xc6, 0xff, 0x6c, 0x72, 0xb2, + 0xcf, 0x0b, 0x70, 0xaf, 0x96, 0x28, 0xa9, 0x31, 0xaf, 0xbc, 0x71, 0x72, 0xf3, 0xf2, 0x77, 0x8e, 0xac, 0x18, 0x59, + 0xc0, 0x96, 0x6f, 0xa6, 0xde, 0x5d, 0x3b, 0x9f, 0x66, 0x1f, 0x89, 0xf0, 0x8b, 0xe8, 0x62, 0xe1, 0x64, 0x16, 0x30, + 0xad, 0xff, 0xfd, 0xd9, 0x7f, 0xd8, 0xb0, 0x25, 0x9b, 0x02, 0xa4, 0x00, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, + 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, + 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x00, 0xd0, 0x69, 0x1e, 0xe4, 0x15, 0x78, 0x19, 0x0a, 0xda, 0x1f, 0xdf, 0xc2, + 0x56, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x9a, 0x59, 0xe1, 0xb5, 0xf5, 0x60, 0x05, 0x8f, 0x81, 0xda, 0xfd, 0xe9, 0x29, 0x5a, 0x76, 0x21, 0x02, 0xf0, 0x73, + 0x9d, 0x69, 0x56, 0x4a, 0xe1, 0x1c, 0x32, 0x72, 0xdd, 0xba, 0x0f, 0x5f, 0x2e, 0xfd, 0xdf, 0x81, 0x19, 0x3c, 0xad, + 0xc6, 0x8b, 0x58, 0xfe, 0x51, 0x28, 0xb5, 0xf8, 0xdd, 0x10, 0x20, 0x61, 0x30, 0xb3, 0xb5, 0xf5, 0x76, 0x71, 0xa8, + 0xc3, 0x57, 0xe4, 0x0c, 0xda, 0x70, 0x11, 0x1e, 0xbd, 0x07, 0x1a, 0xc6, 0xa1, 0x7e, 0x7c, 0xf2, 0x1c, 0xd0, 0x90, + 0x6d, 0x8f, 0x21, 0x11, 0xde, 0x84, 0x40, 0xb2, 0x19, 0x13, 0x42, 0x9c, 0xf6, 0xc4, 0x72, 0xf5, 0x9e, 0x74, 0xbe, + 0x50, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, + 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x00, 0x30, 0x32, 0x71, 0x23, + 0x2e, 0xdd, 0x8b, 0xf5, 0xda, 0xc1, 0xf5, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0x04, 0x3e, 0x2b, 0xd5, 0x66, 0x7c, 0x0c, 0x14, 0xe9, 0xcd, + 0x52, 0x02, 0x82, 0xbf, 0x10, 0x01, 0xf8, 0xb9, 0xce, 0x34, 0x2b, 0xa5, 0x70, 0x0e, 0x19, 0xb9, 0x6e, 0xdd, 0x87, + 0x2f, 0x17, 0xc0, 0x5b, 0xf8, 0x94, 0x48, 0x19, 0xd1, 0x27, 0xe0, 0x36, 0x2a, 0x8e, 0xe7, 0x18, 0x70, 0x0f, 0xe1, + 0x8e, 0xf4, 0x48, 0x72, 0x5c, 0x8e, 0x9c, 0xfb, 0xb9, 0x62, 0xb7, 0xa6, 0x15, 0x84, 0x5e, 0x6f, 0x6b, 0x14, 0xb3, + 0x43, 0x24, 0xad, 0xe3, 0x9e, 0x76, 0x84, 0x7a, 0x92, 0x8d, 0x04, 0x40, 0x51, 0x73, 0x6b, 0x18, 0xc1, 0x91, 0x25, + 0x20, 0x40, 0x67, 0x02, 0x0e, 0x72, 0x76, 0x27, 0x6b, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, + 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, + 0x1a, 0x49, 0x4d, 0x00, 0xa4, 0xd8, 0x1d, 0xa2, 0x5e, 0xa7, 0x37, 0x70, 0xad, 0xd1, 0x9c, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x76, 0x60, + 0xee, 0x6c, 0x59, 0x24, 0x5c, 0x74, 0x80, 0x2a, 0x4d, 0x98, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, + 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x22, 0x62, 0xe0, 0xd7, 0x4f, 0x07, 0xfe, 0x3a, 0x15, + 0x87, 0xb6, 0x74, 0x37, 0x21, 0xa4, 0x0a, 0x98, 0x5e, 0x28, 0x12, 0x77, 0xf1, 0x1f, 0x50, 0xd9, 0x8f, 0xf9, 0x40, + 0x41, 0x6f, 0x0f, 0x4b, 0x87, 0x7d, 0x5e, 0x14, 0x57, 0xf5, 0xe8, 0x74, 0xc4, 0xd4, 0x27, 0xfc, 0x86, 0xd9, 0x56, + 0x66, 0x17, 0xd6, 0x97, 0xe5, 0x69, 0x2a, 0x6b, 0x03, 0x85, 0x38, 0xda, 0x70, 0xb2, 0xf6, 0xdd, 0x52, 0x01, 0x00, + 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, + 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x00, 0xac, 0x7f, 0x7a, 0x7f, 0xcc, 0x6b, 0x89, + 0xc3, 0x0c, 0x8f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x69, 0x13, 0xea, 0xec, 0xb4, 0x88, 0x9c, 0xa2, 0x9b, 0x58, 0x31, 0xcf, 0x1c, + 0xfe, 0x42, 0x04, 0xe0, 0xe7, 0x3a, 0xd3, 0xac, 0x94, 0xc2, 0x39, 0x64, 0xe4, 0xba, 0x75, 0x1f, 0xbe, 0x5c, 0x4c, + 0x07, 0x42, 0x14, 0x93, 0xe2, 0x83, 0x93, 0xa3, 0xa9, 0x72, 0x37, 0xa9, 0xb2, 0x58, 0xa7, 0x6a, 0x94, 0x53, 0xb5, + 0xeb, 0xad, 0x3b, 0x56, 0x46, 0x6b, 0x61, 0xa3, 0x8c, 0x14, 0x56, 0x32, 0xd4, 0x10, 0xf3, 0xf6, 0x64, 0x82, 0xef, + 0xb0, 0x24, 0xd2, 0xc2, 0x79, 0xde, 0xb0, 0x42, 0x9e, 0x65, 0x05, 0x88, 0x74, 0x2f, 0x8b, 0x58, 0xd5, 0x42, 0x1a, + 0x06, 0xa3, 0xd4, 0xd1, 0xfc, 0x12, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, + 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, + 0x00, 0xc5, 0x1c, 0xd9, 0xfc, 0x35, 0x0a, 0xad, 0x17, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x25, 0x9e, 0xe6, 0xbc, 0xaf, + 0xb1, 0x88, 0x37, 0xd7, 0x97, 0x99, 0x67, 0x0e, 0x7f, 0x21, 0x02, 0xf0, 0x73, 0x9d, 0x69, 0x56, 0x4a, 0xe1, 0x1c, + 0x32, 0x72, 0xdd, 0xba, 0x0f, 0x5f, 0x2e, 0x5d, 0x53, 0x09, 0xab, 0xc2, 0x58, 0x42, 0x94, 0x15, 0x71, 0x15, 0x1b, + 0xfa, 0xfb, 0xcd, 0xc6, 0xbc, 0xa4, 0x00, 0x49, 0x74, 0xd3, 0x9c, 0x04, 0x81, 0xd7, 0x09, 0x28, 0x7d, 0x37, 0x37, + 0x58, 0x8a, 0x94, 0x1a, 0x79, 0x8a, 0x7e, 0x94, 0x29, 0xbd, 0xab, 0x65, 0x5f, 0xc6, 0x94, 0xed, 0xdd, 0x94, 0xc1, + 0xf1, 0xd8, 0xed, 0x88, 0x80, 0x47, 0x31, 0x52, 0xda, 0x94, 0x30, 0x60, 0xac, 0x0a, 0x01, 0x00, 0x00, 0x00, 0xaa, + 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, + 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x00, 0x83, 0x86, 0xfc, 0xaf, 0x41, 0xb9, 0x0e, 0x8e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4d, 0xac, 0x2d, 0x08, 0x88, 0xfd, 0x14, 0x1e, 0x24, 0x78, 0xcc, 0xcc, 0x33, 0x87, 0xbf, 0x10, 0x01, + 0xf8, 0xb9, 0xce, 0x34, 0x2b, 0xa5, 0x70, 0x0e, 0x19, 0xb9, 0x6e, 0xdd, 0x87, 0x2f, 0x17, 0xbb, 0xc3, 0xc0, 0xea, + 0xbd, 0x9b, 0xd6, 0x22, 0x75, 0x96, 0x6c, 0xca, 0xc1, 0x2b, 0x45, 0x76, 0x2e, 0x4e, 0x2b, 0xf7, 0xfa, 0x9e, 0x64, + 0x2d, 0x4b, 0xd8, 0xd9, 0x06, 0x24, 0xa3, 0xce, 0x49, 0x17, 0xd6, 0x83, 0xe8, 0x15, 0xc0, 0xbf, 0x4f, 0xf8, 0x85, + 0x9d, 0xaf, 0xb6, 0x85, 0x62, 0x31, 0x89, 0x06, 0x10, 0xd3, 0x0a, 0xf1, 0xd5, 0x03, 0x50, 0x2c, 0x1e, 0xf4, 0xa8, + 0xb6, 0x91, 0x2e, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, + 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x40, 0x0c, 0xab, + 0x80, 0x53, 0x26, 0xc2, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x6b, 0xbb, 0x49, 0x36, 0x72, 0x46, 0x68, 0x65, + 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, + 0x98, 0x97, 0x8e, 0x45, 0x80, 0x00, 0x64, 0x53, 0xae, 0xef, 0x99, 0x13, 0xc9, 0x1c, 0x53, 0x45, 0x0c, 0xdc, 0x97, + 0xd5, 0x80, 0x4b, 0x56, 0x86, 0xa3, 0xbc, 0x78, 0xc4, 0xc2, 0x0c, 0xf7, 0xaf, 0xfd, 0x42, 0xe9, 0x1b, 0x5f, 0x2f, + 0xa6, 0x4f, 0xa5, 0x53, 0xb5, 0xec, 0x36, 0x50, 0xc6, 0xd1, 0x3f, 0xdf, 0xaf, 0x63, 0x9f, 0x25, 0x1d, 0x40, 0xd2, + 0xb5, 0x83, 0x24, 0x67, 0x57, 0x4d, 0x0c, 0x7b, 0x8c, 0x90, 0x3d, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, + 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, + 0x71, 0x37, 0x1a, 0x49, 0x4d, 0xc0, 0xfa, 0x49, 0xea, 0x2a, 0x92, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, + 0x9d, 0x8c, 0xc4, 0x08, 0x6c, 0x2a, 0x66, 0x32, 0xe3, 0x31, 0x33, 0xcf, 0x1c, 0xfe, 0x42, 0x04, 0xe0, 0xe7, 0x3a, + 0xd3, 0xac, 0x94, 0xc2, 0x39, 0x64, 0xe4, 0xba, 0x75, 0x1f, 0xbe, 0x5c, 0x57, 0x7e, 0xfd, 0x4b, 0xb2, 0xe8, 0x7d, + 0x9b, 0x0e, 0x3c, 0x51, 0xa9, 0x15, 0xcb, 0x9e, 0xfa, 0x45, 0x73, 0x63, 0x75, 0xac, 0xb6, 0x70, 0xff, 0xcb, 0x0a, + 0xb6, 0xd9, 0xd9, 0xf6, 0x7d, 0x5e, 0x31, 0x38, 0x8e, 0xff, 0x0c, 0xba, 0x37, 0xee, 0x71, 0x85, 0x91, 0xa1, 0xc8, + 0x13, 0x11, 0xc4, 0x7c, 0x0f, 0x6e, 0xca, 0x37, 0x32, 0xdb, 0x2a, 0x5a, 0xf3, 0x69, 0x45, 0x0f, 0x15, 0xe4, 0x1e, + 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, + 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0xd0, 0xb2, 0x9d, 0x4f, 0x2c, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x83, 0xa6, 0xa4, 0x69, 0x0f, 0x33, 0x33, 0x99, 0xf1, 0x98, 0x99, + 0x67, 0x0e, 0x7f, 0x21, 0x02, 0xf0, 0x73, 0x9d, 0x69, 0x56, 0x4a, 0xe1, 0x1c, 0x32, 0x72, 0xdd, 0xba, 0x0f, 0x5f, + 0x2e, 0xa0, 0xbc, 0x92, 0xcb, 0x0d, 0xff, 0xd0, 0xea, 0x29, 0x6b, 0x52, 0x84, 0x98, 0xe7, 0xf8, 0xf0, 0xfb, 0x66, + 0xbe, 0x18, 0xab, 0x4c, 0x1b, 0x71, 0x16, 0xec, 0xb7, 0x81, 0x69, 0x77, 0xeb, 0x57, 0x47, 0xad, 0x0d, 0x3a, 0x20, + 0x42, 0x92, 0xf1, 0xc1, 0xd3, 0xef, 0x25, 0xf5, 0x26, 0x55, 0xc3, 0x98, 0x49, 0x24, 0xec, 0xbe, 0x30, 0x09, 0xa8, + 0x07, 0x14, 0x8f, 0xce, 0x6f, 0xdd, 0xa9, 0x71, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, + 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, + 0x49, 0x4d, 0x30, 0xc2, 0xb2, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0xed, 0x68, 0x0c, + 0x84, 0x99, 0x99, 0x99, 0xcc, 0x78, 0xcc, 0xcc, 0x33, 0x87, 0xbf, 0x10, 0x01, 0xf8, 0xb9, 0xce, 0x34, 0x2b, 0xa5, + 0x70, 0x0e, 0x19, 0xb9, 0x6e, 0xdd, 0x87, 0x2f, 0x17, 0x88, 0x7c, 0xf4, 0x83, 0xfd, 0x16, 0xf9, 0xf0, 0x1a, 0xcc, + 0xc4, 0xea, 0xf5, 0xba, 0x03, 0x19, 0x4a, 0x1b, 0x5d, 0x52, 0xe2, 0xfd, 0x78, 0xb1, 0x3d, 0xd3, 0x03, 0x25, 0x35, + 0x11, 0x34, 0x47, 0x4d, 0xd6, 0x17, 0x27, 0xbf, 0xde, 0x87, 0x2c, 0xde, 0x46, 0x07, 0xcd, 0x2f, 0xa1, 0x31, 0x26, + 0xe5, 0x8d, 0x87, 0xe1, 0xda, 0xac, 0xfe, 0x37, 0x97, 0x79, 0x72, 0xc7, 0x3f, 0x28, 0x4a, 0x5e, 0x01, 0x00, 0x00, + 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, + 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0xe4, 0xc5, 0xbd, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf7, 0xec, 0x75, 0x26, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, + 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0xb3, 0xc4, + 0x59, 0xb6, 0x35, 0x71, 0xaf, 0xe7, 0x73, 0x4c, 0x03, 0xe2, 0x69, 0x50, 0x19, 0x36, 0x65, 0x43, 0xd5, 0x33, 0x7f, + 0x31, 0xf1, 0x0e, 0x89, 0xa3, 0x4f, 0x55, 0xdd, 0xf3, 0x67, 0x57, 0xf1, 0xcb, 0xe8, 0x3c, 0x7f, 0x68, 0x6a, 0x29, + 0xe5, 0x60, 0x35, 0x3e, 0x72, 0x40, 0x3c, 0x8b, 0x39, 0x01, 0xa5, 0x9e, 0x73, 0x99, 0x7f, 0x87, 0x18, 0xb4, 0x68, + 0xc6, 0xd2, 0x7b, 0xa9, 0x71, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, + 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0xac, + 0x68, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0xff, 0x91, 0x99, 0x65, 0x66, 0x66, + 0x66, 0x32, 0xe3, 0x31, 0x33, 0xcf, 0x1c, 0xfe, 0x42, 0x04, 0xe0, 0xe7, 0x3a, 0xd3, 0xac, 0x94, 0xc2, 0x39, 0x64, + 0xe4, 0xba, 0x75, 0x1f, 0xbe, 0x5c, 0x71, 0x02, 0x27, 0x40, 0x1d, 0xe1, 0x11, 0xee, 0x3b, 0xc9, 0x13, 0xe2, 0x90, + 0x29, 0xf8, 0x0b, 0x70, 0x4b, 0x7b, 0xfa, 0xd2, 0xd6, 0xf5, 0x8f, 0x45, 0xff, 0xc8, 0xc4, 0xc9, 0x4c, 0xf9, 0x5e, + 0x0e, 0x66, 0x85, 0x5f, 0x88, 0xff, 0xd3, 0xb6, 0xd8, 0x0a, 0x67, 0xd6, 0x91, 0x18, 0x5b, 0xe5, 0xc9, 0xa9, 0xd9, + 0x55, 0xb4, 0x30, 0xde, 0x83, 0xe5, 0x10, 0x9a, 0x05, 0x55, 0x53, 0xde, 0x55, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, + 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, + 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0xd5, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x46, 0xc8, 0xcc, 0xcc, 0x32, 0x33, 0x33, 0x33, 0x99, 0xf1, 0x98, 0x99, 0x67, 0x0e, 0x7f, 0x21, 0x02, 0xf0, + 0x73, 0x9d, 0x69, 0x56, 0x4a, 0xe1, 0x1c, 0x32, 0x72, 0xdd, 0xba, 0x0f, 0x5f, 0x2e, 0x01, 0x00, 0x00, 0xc0, 0xa9, + 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, + 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x08, 0x75, 0x50, 0x67, 0x4d, 0xe0, 0x04, 0xae, 0x38, 0x92, 0x4a, + 0x99, 0x8b, 0x1e, 0xbb, 0x5f, 0x89, 0x70, 0x45, 0x82, 0x02, 0xe8, 0xe3, 0xe9, 0xea, 0x60, 0x2a, 0xd0, 0xa1, 0xe3, + 0x59, 0x47, 0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x3d, 0x54, 0x55, 0x57, 0x6d, 0x7e, 0xe2, 0x58, + 0xe5, 0x6b, 0x06, 0xb0, 0x3a, 0xd1, 0xcc, 0xda, 0xa8, 0x13, 0x71, 0x37, 0x1a, 0x49, 0x4d, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x66, 0x66, 0xe6, 0x98, 0x99, 0x99, 0x19, 0xcc, 0xa6, + 0xcb, 0x4c, 0x35, 0x59, 0x9e, 0xba, 0x03, 0xe4, 0x8a, 0xd3, 0x38, 0x17, 0x42, 0x8a, 0xb2, 0xd7, 0x87, 0x03, 0x87, + 0x5b, 0x26, 0x51, 0x01, 0x00, 0x00, 0x40, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xc4, 0xfe, 0x3f, 0x02, 0x3b, 0xce, 0xfe, + 0x03, 0x62, 0x39, 0x07, 0x06, 0x62, 0x6b, 0x26, 0xf6, 0x1d, 0x36, 0x5f, 0x7e, 0x3d, 0xf2, 0x56, 0x34, 0x33, 0x33, + 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, + 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45}; unsigned int constants_2_len = 11904; diff --git a/icicle/appUtils/poseidon/constants/constants_4.h b/icicle/appUtils/poseidon/constants/constants_4.h index 72dbbb3a..0425d126 100644 --- a/icicle/appUtils/poseidon/constants/constants_4.h +++ b/icicle/appUtils/poseidon/constants/constants_4.h @@ -1,1737 +1,1097 @@ unsigned char constants_4[] = { - 0xca, 0x15, 0xe2, 0xc7, 0x85, 0x22, 0x07, 0x21, 0x09, 0x58, 0xb7, 0x17, - 0xe3, 0xd9, 0xd3, 0xfe, 0xb1, 0x8e, 0x33, 0x0a, 0x7d, 0x4c, 0x2c, 0xf3, - 0x2e, 0x5f, 0x0e, 0x6a, 0x73, 0x19, 0xc9, 0x45, 0xbc, 0xca, 0x96, 0x1d, - 0x03, 0x9f, 0x02, 0x71, 0xa2, 0x89, 0x5b, 0xa0, 0xfb, 0xda, 0x01, 0xa7, - 0x9b, 0x80, 0xc3, 0x8f, 0x0f, 0xd5, 0x67, 0x4b, 0xd5, 0x41, 0xb3, 0x56, - 0x12, 0x83, 0x8b, 0x3c, 0x51, 0xc5, 0xc0, 0xa5, 0xa2, 0x2d, 0xb2, 0x3b, - 0x29, 0xfc, 0x61, 0x9b, 0x16, 0x3e, 0x9d, 0xab, 0x79, 0xa3, 0xea, 0x87, - 0xfc, 0x95, 0x76, 0x26, 0x56, 0xc3, 0x9e, 0x46, 0xb0, 0x20, 0x7a, 0x16, - 0x50, 0x5f, 0x2a, 0x87, 0x5d, 0x9f, 0x80, 0xf0, 0x46, 0x35, 0x5d, 0xb4, - 0xac, 0xbd, 0x7f, 0x74, 0x5b, 0xa2, 0x70, 0x00, 0xb4, 0x89, 0x6e, 0x38, - 0x7b, 0xe7, 0x97, 0x47, 0x98, 0x8b, 0x34, 0x1f, 0xdc, 0xa5, 0x24, 0x0c, - 0x1e, 0x23, 0xa8, 0xb1, 0x6d, 0x4a, 0xa4, 0x25, 0x0f, 0x1a, 0xb9, 0x39, - 0x36, 0xa2, 0xdc, 0x4f, 0x3c, 0x93, 0x19, 0x04, 0x7e, 0xc5, 0xae, 0xe6, - 0xac, 0xe8, 0xab, 0x57, 0x63, 0xec, 0x54, 0xf9, 0x96, 0x64, 0x7b, 0x58, - 0xc1, 0x3d, 0xb6, 0x93, 0x57, 0x81, 0x82, 0x46, 0x98, 0xd1, 0x5a, 0xeb, - 0x2d, 0x6d, 0x9c, 0x3e, 0x44, 0x90, 0x73, 0x64, 0x83, 0xd0, 0x5e, 0x72, - 0x43, 0x46, 0xee, 0x29, 0xa9, 0x2d, 0x98, 0x1d, 0x0d, 0xed, 0x4d, 0xc8, - 0xf6, 0x5f, 0x0c, 0x0c, 0x35, 0xd3, 0x55, 0x4b, 0x86, 0xc2, 0x83, 0xd1, - 0x6b, 0x83, 0x4a, 0x35, 0xe7, 0x4f, 0xb3, 0x46, 0x31, 0x4f, 0x69, 0xef, - 0x6a, 0x94, 0xca, 0x19, 0xed, 0x06, 0x1e, 0x6c, 0x50, 0x7a, 0x45, 0xf5, - 0x7b, 0xb0, 0xb0, 0x12, 0x3f, 0x18, 0xeb, 0x79, 0x49, 0x92, 0xd8, 0xc1, - 0xad, 0x44, 0xb7, 0x54, 0xa8, 0x86, 0x03, 0xad, 0x0e, 0xc0, 0x3a, 0x8b, - 0x81, 0x23, 0xe2, 0xf9, 0xae, 0xfd, 0xe4, 0xd9, 0x2f, 0x27, 0x00, 0xff, - 0x17, 0x04, 0x56, 0xa4, 0x4f, 0xc9, 0xad, 0x7c, 0x1f, 0x39, 0x9e, 0x47, - 0xf9, 0x6b, 0x04, 0xd2, 0xe7, 0x9e, 0x98, 0xdc, 0x13, 0x59, 0x1b, 0xa2, - 0x07, 0xc5, 0xff, 0xbb, 0x8c, 0x75, 0xa2, 0x9e, 0xb5, 0xd5, 0xe8, 0xdd, - 0xf0, 0xde, 0xa1, 0x24, 0x6a, 0xc1, 0xe0, 0x71, 0xd4, 0x8b, 0x02, 0x3d, - 0xcd, 0xf9, 0xf0, 0xa7, 0x8f, 0x7f, 0xfb, 0xa7, 0x03, 0xc2, 0x74, 0x49, - 0x89, 0xb0, 0x69, 0xe8, 0x52, 0x23, 0x5e, 0xde, 0x9f, 0xd3, 0xf4, 0x3d, - 0xd7, 0x25, 0xef, 0x34, 0x16, 0x65, 0xdf, 0x16, 0x74, 0xef, 0x08, 0xac, - 0x52, 0xda, 0x79, 0x96, 0x17, 0x7e, 0xca, 0x5f, 0xe5, 0x57, 0x25, 0x2e, - 0x0a, 0xfa, 0xb8, 0xc5, 0x95, 0xf1, 0x3a, 0xc2, 0x17, 0x13, 0x36, 0x25, - 0x0b, 0xeb, 0x06, 0x57, 0xe5, 0x05, 0x25, 0xbc, 0x48, 0xc0, 0x04, 0xfd, - 0xe4, 0x6c, 0xcb, 0x29, 0x6e, 0x6d, 0xf2, 0x04, 0x8e, 0x93, 0x77, 0x90, - 0x09, 0xf3, 0x67, 0x36, 0x73, 0xd5, 0xf5, 0x04, 0x35, 0xe0, 0x3d, 0x0d, - 0xf4, 0x85, 0xdb, 0x8c, 0xc8, 0x55, 0x5d, 0x12, 0xd6, 0x7e, 0xe1, 0xdf, - 0x5f, 0xd5, 0x4d, 0x9e, 0x19, 0x3f, 0x20, 0xd5, 0xf2, 0x0e, 0x3a, 0xfa, - 0x05, 0xa9, 0x35, 0x49, 0xd7, 0x29, 0x24, 0x31, 0x9b, 0x0e, 0x43, 0x8c, - 0xfa, 0x48, 0x06, 0xe0, 0x3c, 0x76, 0x98, 0x2a, 0xeb, 0x36, 0x99, 0x08, - 0x12, 0xf6, 0xe6, 0xc6, 0x9a, 0x40, 0xce, 0xdc, 0x20, 0x72, 0x7c, 0x5d, - 0x02, 0x2e, 0xda, 0x67, 0x5e, 0x7c, 0x66, 0x91, 0x38, 0x6a, 0xa0, 0x6c, - 0x80, 0xd0, 0xc4, 0x63, 0xe1, 0x19, 0x32, 0xd3, 0x92, 0x02, 0x61, 0x94, - 0xe9, 0x1f, 0x03, 0x9c, 0x50, 0xf9, 0x5d, 0x2a, 0x7d, 0x75, 0x28, 0x2d, - 0x7a, 0xc4, 0x80, 0x77, 0xbd, 0xee, 0x39, 0x6c, 0x98, 0x80, 0x9e, 0x49, - 0xc9, 0x26, 0xcf, 0xa0, 0x13, 0x1c, 0xea, 0x65, 0x73, 0xf3, 0x1b, 0x2a, - 0xc6, 0x2a, 0x4f, 0x35, 0x19, 0x57, 0xc8, 0x1b, 0x8e, 0xf0, 0xa9, 0x12, - 0x0c, 0xa9, 0x69, 0xf3, 0x70, 0x11, 0x6a, 0x46, 0xb7, 0x7c, 0xfd, 0x80, - 0x60, 0xbc, 0x99, 0xdc, 0x81, 0xbb, 0x59, 0x78, 0xca, 0x4a, 0x1d, 0x11, - 0xc6, 0x20, 0x81, 0x68, 0x2e, 0x84, 0xb9, 0xf4, 0x9b, 0x78, 0xe1, 0x44, - 0x7b, 0xcb, 0xd5, 0x96, 0x71, 0x6c, 0x69, 0x4b, 0xd8, 0x8e, 0x38, 0x92, - 0xb0, 0xf0, 0xc6, 0xbc, 0x09, 0x7a, 0xc4, 0x47, 0xb4, 0x11, 0xd5, 0x0f, - 0x7c, 0xa2, 0xa5, 0x36, 0xb9, 0x5a, 0x97, 0x1a, 0xa8, 0xe3, 0x05, 0x71, - 0x41, 0x08, 0x92, 0xf2, 0x93, 0xe2, 0x11, 0x03, 0x0c, 0x46, 0x54, 0xaf, - 0xc0, 0x0b, 0x60, 0x3b, 0x42, 0xb0, 0x47, 0xba, 0x1c, 0x9a, 0x41, 0x6d, - 0x74, 0xd6, 0x2a, 0x70, 0x3d, 0x0b, 0x17, 0x75, 0xaf, 0x86, 0x64, 0xf9, - 0x54, 0x61, 0x94, 0x8b, 0xa1, 0x7b, 0xb6, 0x58, 0x25, 0x69, 0x1c, 0x2c, - 0xf5, 0x67, 0x1a, 0x31, 0x4a, 0x87, 0x29, 0xd1, 0xf6, 0xb3, 0x00, 0x04, - 0x43, 0xa6, 0x33, 0x17, 0x1f, 0x32, 0x5c, 0xac, 0xbf, 0x5f, 0x6b, 0x13, - 0x6e, 0x82, 0x7c, 0x89, 0x01, 0x17, 0x5e, 0x68, 0x75, 0x24, 0x47, 0x49, - 0xc4, 0xe0, 0xa7, 0x0d, 0xd4, 0x2c, 0x83, 0xb5, 0xf9, 0xbf, 0xa5, 0x29, - 0x0d, 0xc5, 0x59, 0xbe, 0x34, 0xda, 0x2b, 0x84, 0xea, 0x34, 0x15, 0xf7, - 0x4e, 0xec, 0x94, 0x12, 0xeb, 0x41, 0xc5, 0x2d, 0xa0, 0xe8, 0x60, 0x5a, - 0xc6, 0x71, 0xbb, 0xa4, 0xf1, 0x34, 0xac, 0x45, 0x73, 0xa1, 0x8a, 0x72, - 0x2b, 0x63, 0x5c, 0x94, 0xff, 0xb4, 0xb5, 0x8a, 0x03, 0x1d, 0x14, 0x1f, - 0x9f, 0x09, 0x94, 0x23, 0xc9, 0x19, 0x62, 0x67, 0x7a, 0x80, 0x0b, 0xd1, - 0xa1, 0x24, 0x50, 0xfa, 0x91, 0x8c, 0x45, 0x47, 0xb4, 0xdc, 0x31, 0x70, - 0x00, 0xd7, 0xf1, 0x65, 0xa7, 0x89, 0x69, 0x3e, 0x54, 0x1c, 0xa9, 0x13, - 0x6d, 0x03, 0xbd, 0xfc, 0xfc, 0x2f, 0x64, 0x28, 0x4a, 0xb8, 0xb3, 0xdd, - 0xff, 0xd4, 0x79, 0xbc, 0x3e, 0x85, 0xd2, 0x21, 0xba, 0xf4, 0xfb, 0x74, - 0x28, 0x35, 0x01, 0x31, 0x3e, 0x2a, 0x4a, 0x34, 0x8d, 0x79, 0x41, 0x13, - 0x4a, 0x90, 0x14, 0x0a, 0xee, 0xa3, 0x5f, 0x15, 0x15, 0x73, 0x81, 0x84, - 0x34, 0xec, 0x0b, 0x2b, 0x37, 0x6d, 0x9c, 0x3f, 0x9a, 0xcd, 0xa4, 0x3b, - 0x29, 0x24, 0xcd, 0xc9, 0x51, 0x44, 0x3c, 0xac, 0xb9, 0x73, 0x97, 0xfe, - 0xd0, 0x6d, 0x77, 0xcd, 0xec, 0xfa, 0xfa, 0x43, 0x9e, 0x5d, 0x2c, 0x53, - 0x89, 0x8a, 0xcb, 0x99, 0xf4, 0xa8, 0xaa, 0x39, 0xae, 0x93, 0x99, 0xc3, - 0x1e, 0x78, 0x66, 0xaf, 0x77, 0xd7, 0x2e, 0x58, 0x29, 0xd1, 0xef, 0x68, - 0xd5, 0xc1, 0x81, 0xb9, 0xcc, 0xb5, 0xe7, 0xda, 0xef, 0x25, 0x8c, 0xc3, - 0x84, 0xe9, 0x4d, 0x55, 0x79, 0x97, 0x99, 0xb4, 0xfd, 0x2a, 0xb6, 0x82, - 0x03, 0x2b, 0x85, 0x25, 0x2a, 0x83, 0x79, 0x3c, 0x40, 0x9a, 0x86, 0xb0, - 0x94, 0x25, 0x3d, 0x70, 0x39, 0xf8, 0xeb, 0x76, 0xf3, 0xe4, 0xe7, 0x61, - 0x9c, 0x08, 0x5e, 0xaa, 0x47, 0x80, 0x21, 0x68, 0x4b, 0xb7, 0x4b, 0xcb, - 0x18, 0xd5, 0xfa, 0x5f, 0x5e, 0xe9, 0x32, 0x66, 0x4a, 0xf9, 0xf0, 0xb5, - 0xc9, 0xf1, 0x20, 0xc6, 0xb1, 0x21, 0xb7, 0x02, 0x9c, 0xb7, 0x0b, 0x0c, - 0xdb, 0x75, 0x28, 0x39, 0xec, 0xf5, 0x41, 0x59, 0xd7, 0x5b, 0x56, 0xa1, - 0x34, 0x90, 0xab, 0x1a, 0xbd, 0x6a, 0x61, 0x14, 0x56, 0xaf, 0xdf, 0xf7, - 0x0e, 0x86, 0x1d, 0x0b, 0xb5, 0x8f, 0x6e, 0x4d, 0x0c, 0x35, 0x5e, 0x6c, - 0x5b, 0x12, 0x86, 0x50, 0x33, 0x5a, 0x59, 0xd3, 0x81, 0xc9, 0x3f, 0xf5, - 0xfe, 0x12, 0x5f, 0x08, 0x81, 0x7c, 0x02, 0x10, 0xca, 0x5a, 0x2c, 0x1f, - 0x48, 0x27, 0x80, 0x53, 0xe9, 0x62, 0xe3, 0x75, 0x73, 0xec, 0x03, 0xae, - 0x6c, 0x9b, 0x68, 0xf0, 0xd3, 0x69, 0x8d, 0x92, 0x6d, 0x78, 0x4b, 0x4f, - 0x39, 0x94, 0x3d, 0x0a, 0x83, 0xa0, 0x87, 0x3d, 0x17, 0xa1, 0xab, 0x83, - 0xa5, 0xa1, 0x06, 0x9f, 0xbc, 0xfd, 0x52, 0x6f, 0xca, 0xb3, 0xc2, 0xa9, - 0x19, 0x69, 0xf2, 0x44, 0x96, 0xbe, 0x56, 0x5e, 0xfc, 0x96, 0x59, 0x0e, - 0x57, 0xb1, 0x15, 0x55, 0x53, 0x4b, 0x3a, 0x51, 0x7a, 0x52, 0x25, 0x74, - 0x4d, 0xfd, 0x75, 0x43, 0x87, 0xf4, 0xfa, 0x8f, 0x64, 0x87, 0x3a, 0xd6, - 0x5b, 0x8e, 0x86, 0x76, 0xc3, 0xd1, 0xbf, 0x5a, 0xda, 0xe9, 0x77, 0x4f, - 0xdd, 0xef, 0xc9, 0xcb, 0x71, 0x9d, 0x2f, 0xd0, 0x24, 0xcc, 0xa2, 0x39, - 0x71, 0xb3, 0xaf, 0xb4, 0x1e, 0x6c, 0x71, 0x33, 0xf6, 0xd5, 0xd7, 0x26, - 0xb8, 0xc7, 0xcb, 0x01, 0x76, 0x9b, 0x96, 0x13, 0x17, 0xcb, 0x3c, 0xc5, - 0x7b, 0xa9, 0x01, 0x64, 0x8a, 0x3f, 0x7a, 0x0d, 0x96, 0x66, 0x29, 0xd2, - 0xa6, 0xc9, 0x73, 0xb2, 0x97, 0xe7, 0xae, 0x40, 0x1f, 0x8c, 0x9d, 0xf8, - 0xb4, 0xfd, 0x89, 0x31, 0x9b, 0x3d, 0x71, 0x42, 0x6b, 0x20, 0x56, 0x84, - 0x75, 0x04, 0xfa, 0x16, 0x42, 0x9f, 0xcf, 0xcb, 0xc3, 0x33, 0xff, 0xa3, - 0xfb, 0x04, 0xa4, 0xf3, 0xde, 0xea, 0xfc, 0x25, 0xa4, 0xbd, 0x6b, 0x07, - 0xfe, 0x04, 0x9c, 0xcc, 0x37, 0xda, 0x5e, 0xf0, 0x38, 0x97, 0xa8, 0xe9, - 0x6b, 0xc3, 0xdf, 0xc2, 0x78, 0x23, 0x07, 0x84, 0xe3, 0x31, 0x66, 0xd3, - 0x9b, 0x2f, 0x38, 0x7b, 0x58, 0x85, 0x60, 0x25, 0x85, 0x71, 0xdc, 0xb2, - 0xfb, 0x1f, 0x30, 0x7d, 0xed, 0x75, 0x1f, 0xa1, 0x5e, 0xcf, 0x4a, 0xa5, - 0xc1, 0xee, 0x17, 0xc9, 0xe4, 0x60, 0x5f, 0xa9, 0x75, 0xe0, 0x4b, 0x3b, - 0x11, 0x15, 0x34, 0x1d, 0x5f, 0x82, 0x09, 0x00, 0x81, 0x38, 0xd0, 0x71, - 0x12, 0xe4, 0xa8, 0xe0, 0x50, 0xe7, 0xfb, 0xe0, 0xbd, 0x69, 0x66, 0x3d, - 0x26, 0x94, 0x9c, 0x67, 0x95, 0xf9, 0x6a, 0x09, 0x5b, 0xc8, 0xdc, 0x2d, - 0xcf, 0xbb, 0x13, 0x7a, 0x7f, 0xb6, 0xf0, 0xe8, 0x2b, 0x81, 0x06, 0xda, - 0xab, 0x10, 0xa0, 0xd0, 0x73, 0xf6, 0x31, 0x43, 0x89, 0x6e, 0x5a, 0xb5, - 0x41, 0xa0, 0xe0, 0xf2, 0x0b, 0xe7, 0xc9, 0x45, 0xcb, 0x9f, 0xaa, 0x88, - 0xb6, 0xf4, 0xfa, 0xdb, 0x8a, 0x11, 0x1a, 0xd3, 0xd0, 0x29, 0xb9, 0x53, - 0x2a, 0xd6, 0xf4, 0x2b, 0xae, 0xaa, 0xd9, 0x5e, 0xf1, 0xa9, 0x8c, 0xbf, - 0xe0, 0x20, 0x9f, 0x67, 0xc2, 0xb8, 0x01, 0xc7, 0xec, 0x62, 0x07, 0x8c, - 0xee, 0xaf, 0x12, 0x5a, 0x6e, 0x0a, 0x83, 0x1c, 0x73, 0xe6, 0x08, 0x48, - 0xce, 0x91, 0x07, 0x9c, 0x5a, 0x8c, 0x69, 0x93, 0xae, 0x02, 0xd9, 0x2e, - 0xc3, 0xce, 0x2e, 0x10, 0x9d, 0x0b, 0xe6, 0x67, 0xa0, 0x9e, 0x64, 0xc8, - 0xb3, 0xdd, 0x0a, 0xea, 0xb4, 0x79, 0x04, 0x4a, 0xfe, 0x7e, 0x3f, 0xc1, - 0xcc, 0x5e, 0xcc, 0x4b, 0xfd, 0xc6, 0x21, 0x52, 0x95, 0x88, 0x90, 0x08, - 0x63, 0xef, 0x0a, 0x7b, 0x01, 0x11, 0xc3, 0xf1, 0xd0, 0xfe, 0x5c, 0x90, - 0xf9, 0xe3, 0x4b, 0xe2, 0xbd, 0x7d, 0x48, 0x0b, 0x51, 0xe3, 0xb3, 0xb7, - 0xf5, 0x70, 0x63, 0x4e, 0x83, 0x9d, 0xc6, 0x63, 0x0e, 0xc6, 0xc0, 0x6f, - 0xc3, 0xf8, 0x5f, 0x60, 0x86, 0x20, 0x79, 0xe1, 0x1a, 0x36, 0x47, 0xc6, - 0x5f, 0x37, 0x63, 0x16, 0x84, 0x7c, 0xfd, 0xca, 0xe4, 0xa3, 0x96, 0x14, - 0xf6, 0x52, 0x31, 0xee, 0x10, 0xa6, 0x1e, 0xe1, 0x7e, 0xc1, 0xef, 0xff, - 0x53, 0x9d, 0xd9, 0x03, 0xd7, 0xce, 0xb2, 0x11, 0x3a, 0xbb, 0x97, 0x5f, - 0x8b, 0xd9, 0x33, 0x18, 0x86, 0x17, 0x40, 0x61, 0x04, 0x22, 0x45, 0xea, - 0x25, 0x05, 0x89, 0x76, 0x6d, 0x85, 0xeb, 0x9e, 0x72, 0x83, 0xca, 0xb3, - 0x15, 0x11, 0xb5, 0x5d, 0x56, 0xb2, 0x92, 0xe8, 0xe3, 0x7a, 0x8d, 0x50, - 0x7e, 0x45, 0x37, 0x48, 0x4f, 0x6d, 0x91, 0x11, 0x91, 0x52, 0xbc, 0x8f, - 0x5c, 0x83, 0x02, 0xf4, 0x6b, 0xed, 0x4c, 0x16, 0x74, 0x80, 0x07, 0xf7, - 0x77, 0xff, 0xf9, 0xb0, 0x93, 0x15, 0x72, 0x9b, 0x7f, 0xfc, 0x20, 0x6d, - 0x40, 0xd0, 0xe5, 0x10, 0x17, 0x62, 0x54, 0xa2, 0x5c, 0x95, 0x46, 0x97, - 0x70, 0x47, 0x4e, 0x73, 0x59, 0x80, 0x48, 0x15, 0x0f, 0xfe, 0x66, 0xbd, - 0x6e, 0x59, 0xdc, 0x54, 0x73, 0x7e, 0x0c, 0x46, 0xc3, 0xe5, 0x0d, 0xaf, - 0x9e, 0xb2, 0x24, 0xef, 0xb9, 0x82, 0xc5, 0x7f, 0x44, 0x86, 0xfb, 0x85, - 0x33, 0x0b, 0x3f, 0x83, 0xf2, 0x10, 0x00, 0xe1, 0x1a, 0xa8, 0x92, 0x95, - 0x87, 0x77, 0xbd, 0x4d, 0xc3, 0x71, 0x8f, 0x84, 0xc9, 0x2b, 0xed, 0x89, - 0x97, 0x4b, 0x2b, 0xda, 0x33, 0x84, 0xd7, 0x0c, 0x1d, 0x03, 0x95, 0x1d, - 0x89, 0x69, 0xb0, 0x7b, 0xe8, 0x9c, 0x33, 0x2a, 0xa2, 0x4d, 0xd9, 0x60, - 0x23, 0xb8, 0xe3, 0x5f, 0xa8, 0xf9, 0x30, 0x1c, 0x66, 0xbd, 0xa5, 0x49, - 0x5e, 0x90, 0x0c, 0x11, 0xe8, 0x21, 0xd1, 0xc2, 0xec, 0x53, 0x61, 0x69, - 0xb8, 0x69, 0x93, 0x15, 0x06, 0x0a, 0xab, 0x58, 0xee, 0xa6, 0xd2, 0xf1, - 0x6e, 0x3c, 0xd0, 0x53, 0xa1, 0x0c, 0x96, 0x45, 0x7d, 0x4e, 0x0a, 0xc9, - 0x90, 0x6f, 0x75, 0xb6, 0x95, 0x8a, 0x61, 0x4b, 0x32, 0x74, 0x7f, 0x9e, - 0x5c, 0x34, 0x8a, 0x2f, 0xff, 0x68, 0x1d, 0x73, 0xae, 0x7f, 0x83, 0x80, - 0x32, 0xbc, 0x21, 0x34, 0x2c, 0x64, 0xcb, 0xae, 0x0f, 0x7a, 0x44, 0x3a, - 0x95, 0xec, 0x9c, 0xc2, 0xc6, 0x13, 0x16, 0xfc, 0x45, 0x8a, 0x22, 0x6d, - 0x61, 0x5e, 0x07, 0x70, 0x97, 0x61, 0x21, 0x09, 0x5f, 0x96, 0x0c, 0x0c, - 0x7a, 0x1d, 0x15, 0xc9, 0xf9, 0x97, 0x9e, 0x1b, 0x23, 0xec, 0xec, 0xd3, - 0x43, 0xe9, 0x27, 0xfb, 0x1c, 0xd3, 0xa1, 0x04, 0x71, 0xcc, 0xb6, 0x3a, - 0x20, 0x92, 0xfd, 0x80, 0xf2, 0x57, 0x8e, 0x64, 0x4a, 0x82, 0x9f, 0x8a, - 0x54, 0xa6, 0x65, 0x87, 0xed, 0x0a, 0xd6, 0x85, 0x9b, 0xe6, 0xd3, 0x52, - 0x46, 0x3e, 0x09, 0x2d, 0xe8, 0xc4, 0xeb, 0x3d, 0xa7, 0xd7, 0xb3, 0x06, - 0x22, 0x91, 0xc6, 0xb0, 0x7c, 0xa6, 0xc9, 0x79, 0x72, 0xdd, 0x13, 0xf5, - 0xae, 0x85, 0x2f, 0xe9, 0xd8, 0x4d, 0x8d, 0xcc, 0x45, 0xbb, 0xa2, 0x47, - 0x44, 0x84, 0x84, 0x75, 0xc6, 0x58, 0x0e, 0xd1, 0xa6, 0xe5, 0x43, 0x3a, - 0x73, 0x85, 0x2b, 0xbe, 0x8f, 0x48, 0xfe, 0x84, 0xca, 0xf8, 0x1d, 0x6d, - 0x40, 0xa4, 0xfe, 0x9f, 0x70, 0xb3, 0x39, 0x05, 0xde, 0x98, 0x00, 0xb7, - 0x2f, 0x6b, 0x05, 0xef, 0xf6, 0x47, 0xea, 0x4c, 0x87, 0x9c, 0xcf, 0xa6, - 0x04, 0x4c, 0x9e, 0x3c, 0xd0, 0xda, 0xe9, 0x13, 0xae, 0x7e, 0x2f, 0x6a, - 0x9c, 0x5e, 0xc1, 0x39, 0x6b, 0x20, 0x25, 0x04, 0x46, 0xad, 0x4c, 0xb8, - 0x71, 0x81, 0x7c, 0xfc, 0xb4, 0x57, 0x2f, 0x94, 0xe9, 0xcb, 0x41, 0x22, - 0x8b, 0x05, 0x83, 0x8c, 0xc7, 0xf7, 0xe0, 0xf9, 0xbe, 0x17, 0xd6, 0x66, - 0x07, 0x6e, 0x05, 0x32, 0x27, 0xb8, 0x10, 0x82, 0xb8, 0x47, 0x57, 0xb1, - 0xf8, 0x78, 0x2a, 0x46, 0x1c, 0x20, 0xc4, 0x12, 0xe0, 0x49, 0x76, 0xcd, - 0x18, 0xc3, 0x9b, 0x20, 0xa4, 0xba, 0xad, 0x22, 0xeb, 0x6e, 0xcc, 0x4e, - 0xf5, 0x0d, 0x0a, 0x28, 0x3b, 0xa2, 0x86, 0xa8, 0xfb, 0x13, 0x8b, 0x1e, - 0x6b, 0xbc, 0x76, 0xfa, 0x6c, 0x5b, 0x70, 0x87, 0x9a, 0x70, 0x93, 0xad, - 0x82, 0xfd, 0x08, 0x69, 0x7f, 0x02, 0x2a, 0x64, 0x30, 0x5f, 0x9c, 0x60, - 0x23, 0x44, 0x5d, 0xe4, 0xf9, 0xd8, 0x9c, 0xb7, 0x39, 0x1c, 0x55, 0x32, - 0x4f, 0x67, 0x6d, 0xca, 0x4e, 0x63, 0x6d, 0x0a, 0x7e, 0x2d, 0xf4, 0x52, - 0xd7, 0x26, 0x2c, 0x6d, 0x45, 0xcc, 0x6c, 0xc1, 0xfe, 0xad, 0xb3, 0x69, - 0x6c, 0x7e, 0x70, 0xc1, 0x06, 0xa6, 0x72, 0x6e, 0xd1, 0xe6, 0xbb, 0xe6, - 0x27, 0x4c, 0xa8, 0x10, 0x2e, 0x6e, 0x4d, 0x3f, 0xf5, 0xaf, 0xdb, 0x99, - 0xf7, 0xc0, 0xc6, 0x7e, 0x69, 0xa2, 0x4e, 0x78, 0xff, 0xff, 0xcb, 0x56, - 0x1b, 0x75, 0xe6, 0xec, 0x08, 0x74, 0xfe, 0xa7, 0x9f, 0x1b, 0xb8, 0x60, - 0x0a, 0xbd, 0x1c, 0x0e, 0x75, 0x17, 0x0b, 0x5c, 0xac, 0x4b, 0xbf, 0xf5, - 0x89, 0xe9, 0x09, 0x34, 0xe8, 0xdd, 0xc0, 0xeb, 0x36, 0x03, 0x94, 0xf8, - 0x07, 0x2a, 0xd7, 0x62, 0xb4, 0xd9, 0x61, 0xa3, 0xd0, 0xab, 0x05, 0x5e, - 0x20, 0x8b, 0xe0, 0x0d, 0xd7, 0xae, 0xc0, 0x0f, 0x87, 0x99, 0xf3, 0x40, - 0xa9, 0x4b, 0x6b, 0x96, 0xd8, 0x1d, 0x26, 0x39, 0xdd, 0x5d, 0x27, 0x42, - 0xb6, 0x04, 0xce, 0xf3, 0x7d, 0x57, 0xf3, 0x37, 0xf8, 0xa0, 0x8d, 0x5e, - 0x54, 0xd3, 0xf3, 0x21, 0x5a, 0x94, 0xf1, 0x7d, 0x97, 0xb8, 0x92, 0xa0, - 0x0e, 0x43, 0x56, 0xfd, 0x7b, 0x0b, 0xad, 0x4a, 0xbb, 0xe9, 0x1c, 0x2c, - 0x42, 0x87, 0xd5, 0x69, 0xae, 0x23, 0x63, 0x14, 0x9b, 0xfa, 0x44, 0x6e, - 0x26, 0x15, 0xf0, 0xaf, 0xa5, 0x87, 0x3c, 0x01, 0xf5, 0x4c, 0x87, 0xd7, - 0xa4, 0xd8, 0xfc, 0x80, 0xf1, 0x61, 0xf1, 0x3c, 0x10, 0x70, 0x5c, 0x27, - 0xb0, 0x2d, 0x7f, 0x85, 0x26, 0x57, 0xd2, 0x80, 0x33, 0xd7, 0x80, 0x77, - 0xd2, 0xa2, 0xab, 0x4d, 0x6b, 0x57, 0x2f, 0xd1, 0x15, 0x8b, 0x12, 0xc6, - 0x64, 0xfb, 0xeb, 0x90, 0x49, 0x36, 0xf5, 0x6b, 0xa0, 0xb1, 0x04, 0x2c, - 0x0b, 0x12, 0xa1, 0x58, 0x32, 0xf0, 0xc1, 0xb4, 0x4f, 0xdf, 0xb6, 0xeb, - 0xae, 0xd5, 0x47, 0x72, 0x17, 0x88, 0xc2, 0xd1, 0x6b, 0x22, 0xca, 0x4c, - 0x48, 0x4c, 0xfe, 0x28, 0x3b, 0x2f, 0x14, 0xfe, 0x31, 0x32, 0x69, 0xf1, - 0x32, 0xd3, 0xc0, 0x5a, 0x90, 0x13, 0x80, 0x37, 0x31, 0x9f, 0x28, 0x2b, - 0x39, 0x8f, 0xce, 0x4e, 0x26, 0xdc, 0x9c, 0xba, 0x03, 0x70, 0x7b, 0x50, - 0xb0, 0x29, 0x01, 0xb7, 0xa3, 0x53, 0xc8, 0x65, 0xb2, 0x1c, 0x09, 0x96, - 0x59, 0x23, 0x23, 0x6b, 0xda, 0x94, 0x8c, 0x35, 0x82, 0x09, 0xc6, 0xed, - 0xcb, 0xba, 0x29, 0x6b, 0xd2, 0x3e, 0x76, 0x32, 0x96, 0x17, 0xf4, 0xd5, - 0xf9, 0xc6, 0xfa, 0xc7, 0xc4, 0xf3, 0xff, 0x4c, 0x98, 0xe3, 0x09, 0xbb, - 0x3c, 0x07, 0x4d, 0xc0, 0xb8, 0x04, 0xa2, 0x02, 0x80, 0x65, 0x71, 0xf1, - 0x96, 0xc8, 0x4e, 0x0d, 0x2e, 0x14, 0x0f, 0x86, 0x30, 0xc9, 0xe3, 0xe2, - 0x5a, 0xf4, 0x58, 0x27, 0xfe, 0x17, 0xa3, 0x68, 0x70, 0x9d, 0x1f, 0x13, - 0x72, 0x06, 0xe3, 0x47, 0xdb, 0xae, 0x88, 0x9e, 0xc4, 0x22, 0x2e, 0x34, - 0x04, 0x42, 0x19, 0x18, 0x0c, 0xa2, 0x17, 0xea, 0x12, 0xe4, 0xbf, 0xc0, - 0x8e, 0x02, 0x1e, 0x6b, 0x14, 0x7a, 0xc7, 0x95, 0xf2, 0x47, 0x16, 0xcf, - 0x0f, 0xdf, 0xd0, 0x13, 0x67, 0xb3, 0x89, 0x5f, 0xc0, 0xe8, 0xc1, 0x36, - 0x87, 0x46, 0x6e, 0x35, 0x6f, 0x56, 0x4b, 0xc9, 0xa3, 0x7c, 0x5f, 0x83, - 0xf0, 0x7b, 0x56, 0x65, 0x2d, 0x63, 0x1c, 0xab, 0xbd, 0x3a, 0x75, 0x00, - 0x4a, 0xf0, 0x95, 0x41, 0x68, 0x38, 0xf3, 0x0c, 0x91, 0xa8, 0x39, 0xa9, - 0xd1, 0x69, 0x66, 0x3f, 0xba, 0x94, 0xbe, 0x47, 0x66, 0xfa, 0x06, 0x86, - 0x7a, 0x0a, 0x59, 0x99, 0x66, 0xe9, 0xe1, 0xcb, 0x73, 0x04, 0x30, 0x24, - 0x56, 0xb5, 0xf9, 0xb6, 0x1f, 0xa4, 0x67, 0x5f, 0xa7, 0x49, 0x08, 0xc7, - 0xb4, 0x43, 0x38, 0xba, 0x58, 0x48, 0x4c, 0x2a, 0xa3, 0x51, 0xac, 0xde, - 0x1c, 0xaa, 0xf1, 0xbb, 0xc7, 0x79, 0xba, 0x6a, 0x2a, 0xb2, 0x00, 0x61, - 0x60, 0xc4, 0x30, 0xb0, 0xdc, 0xc9, 0x73, 0xda, 0x2c, 0xa5, 0x0b, 0xff, - 0xe4, 0x63, 0xd4, 0x04, 0x22, 0xb0, 0x96, 0xf9, 0x47, 0x4f, 0xdf, 0xc9, - 0xd7, 0xc5, 0x85, 0x39, 0x89, 0x02, 0x63, 0x0f, 0x3b, 0x89, 0x2f, 0x6f, - 0x43, 0x73, 0x59, 0x1c, 0x04, 0xa3, 0x31, 0x33, 0xaf, 0xe4, 0xe1, 0xb7, - 0xc0, 0xa1, 0x95, 0xc9, 0x6c, 0xd3, 0x4f, 0xb2, 0x73, 0x1a, 0xae, 0x2a, - 0x6e, 0x9b, 0xa9, 0x73, 0x73, 0x99, 0x45, 0x19, 0xc0, 0x87, 0x64, 0x4c, - 0x99, 0x72, 0x0d, 0x5a, 0x1b, 0x53, 0x14, 0x05, 0x01, 0x56, 0x23, 0x03, - 0xde, 0xc1, 0x14, 0xcf, 0x43, 0xfc, 0x02, 0x68, 0x2b, 0xc5, 0x44, 0x92, - 0x11, 0x65, 0x36, 0x09, 0xf9, 0x41, 0x3b, 0x7d, 0x58, 0xe4, 0x06, 0xfb, - 0x8b, 0xa5, 0x82, 0x32, 0xaf, 0xd9, 0x2f, 0xef, 0xf0, 0x84, 0x39, 0x9a, - 0x2a, 0x99, 0x69, 0x43, 0x43, 0xf0, 0xa9, 0xa2, 0x5d, 0x09, 0x74, 0xcb, - 0x39, 0x46, 0x1e, 0x4f, 0xd9, 0xbd, 0x63, 0x5b, 0x74, 0xec, 0xce, 0x5a, - 0xb5, 0x61, 0x57, 0x22, 0xec, 0xf6, 0x93, 0xee, 0xb9, 0xbe, 0xc6, 0x57, - 0x25, 0x6c, 0x08, 0xa9, 0x11, 0x20, 0x56, 0xf8, 0x2c, 0xba, 0x99, 0x7c, - 0xf1, 0x9e, 0x85, 0xd8, 0xf0, 0x1d, 0x9a, 0x8e, 0x6e, 0x5b, 0xc2, 0x28, - 0x40, 0x33, 0xab, 0x79, 0x30, 0xd3, 0x13, 0x4a, 0xa4, 0xde, 0x90, 0x63, - 0xde, 0x1c, 0xf5, 0xed, 0xb9, 0x6a, 0xbd, 0xef, 0xb8, 0x1d, 0x06, 0x21, - 0xbc, 0x1a, 0xf2, 0x3d, 0x78, 0x48, 0xe7, 0xdc, 0xb3, 0xcd, 0x5b, 0x53, - 0xd5, 0x3d, 0x11, 0x53, 0xb3, 0xed, 0x3b, 0x61, 0x4e, 0x37, 0x64, 0x24, - 0xd8, 0xc8, 0xfb, 0xf2, 0x03, 0x28, 0x90, 0xe1, 0x6e, 0xe2, 0x56, 0xce, - 0xc2, 0xe0, 0xa0, 0xb3, 0x57, 0x40, 0x9a, 0x91, 0x23, 0xa9, 0x8d, 0x5a, - 0x03, 0x54, 0x29, 0xe2, 0x78, 0x5a, 0xd6, 0xe7, 0x44, 0x2d, 0xa5, 0x62, - 0xe1, 0xf8, 0x77, 0xae, 0x6f, 0x8a, 0x73, 0x29, 0x6f, 0x9e, 0x00, 0x7f, - 0x75, 0xf1, 0xea, 0x49, 0x07, 0xd3, 0xc1, 0x30, 0xed, 0x1d, 0xa0, 0x4c, - 0x5a, 0x63, 0x67, 0xa4, 0xa1, 0x7e, 0x86, 0x07, 0x0a, 0x8d, 0x0e, 0x1c, - 0xbd, 0x36, 0x16, 0x9e, 0xc1, 0xd6, 0x74, 0xc3, 0xec, 0x57, 0x21, 0x7c, - 0xd1, 0xa0, 0x31, 0x3c, 0xa3, 0x3c, 0xf5, 0xdf, 0xd7, 0xdb, 0x1f, 0x9f, - 0x35, 0x93, 0xb9, 0x21, 0x94, 0x6b, 0xc1, 0x3c, 0xb7, 0xc9, 0x49, 0xff, - 0xf1, 0xf1, 0x17, 0xc9, 0x0c, 0x14, 0x93, 0xdb, 0xd7, 0x97, 0xf7, 0x53, - 0x1e, 0x18, 0x77, 0xad, 0x32, 0x7d, 0x6d, 0x33, 0x4f, 0x9b, 0x60, 0x77, - 0x64, 0xc2, 0x3c, 0xd3, 0x5d, 0xdb, 0x2d, 0xac, 0x37, 0x09, 0xdd, 0x3f, - 0x7e, 0x74, 0xbe, 0xab, 0xad, 0xec, 0x28, 0x15, 0xd0, 0xef, 0x7f, 0x69, - 0x83, 0x81, 0x1e, 0xf6, 0xe1, 0x22, 0xe7, 0x98, 0x0b, 0xae, 0xd0, 0xe0, - 0xdb, 0x00, 0x50, 0x71, 0x9c, 0x84, 0xd6, 0xf5, 0x13, 0xc7, 0xcf, 0x8c, - 0x95, 0x60, 0x77, 0x03, 0x2d, 0x0e, 0xf3, 0x2a, 0x2c, 0x57, 0x96, 0xd2, - 0x09, 0x5c, 0xb3, 0xbb, 0x82, 0x28, 0x81, 0xee, 0xdb, 0xbf, 0x3a, 0x5c, - 0x00, 0x77, 0xdf, 0x46, 0xda, 0x5a, 0xf9, 0xe9, 0x9d, 0x3b, 0x7d, 0x10, - 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, - 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, - 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x01, 0x00, 0x00, 0x80, - 0x54, 0x55, 0x55, 0xd5, 0xa9, 0x4c, 0xa9, 0x2a, 0xad, 0x08, 0x1e, 0x1b, - 0xaf, 0xde, 0x06, 0x08, 0x5c, 0x89, 0x05, 0x80, 0x11, 0x93, 0x58, 0x4d, - 0xc5, 0x60, 0x9b, 0x60, 0x25, 0x49, 0x92, 0x24, 0xdb, 0xb6, 0x6d, 0xdb, - 0x48, 0x1a, 0x24, 0x49, 0xdc, 0x2e, 0x36, 0xaa, 0x4a, 0x62, 0x77, 0x70, - 0x4b, 0x62, 0xc7, 0x57, 0x82, 0x91, 0x51, 0xe7, 0x60, 0x54, 0x1f, 0x21, - 0x01, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0x1f, 0x7f, 0x90, 0xfe, 0x9f, - 0x82, 0xef, 0x45, 0xa9, 0x04, 0x9d, 0x6d, 0x08, 0x07, 0x9d, 0xd2, 0x2c, - 0x9f, 0xcd, 0x69, 0xc4, 0x68, 0xf2, 0x6f, 0x65, 0xab, 0xaa, 0xaa, 0xaa, - 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, - 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, - 0xbd, 0x08, 0xc3, 0x19, 0x01, 0x00, 0x00, 0x80, 0x54, 0x55, 0x55, 0xd5, - 0xa9, 0x4c, 0xa9, 0x2a, 0xad, 0x08, 0x1e, 0x1b, 0xaf, 0xde, 0x06, 0x08, - 0x5c, 0x89, 0x05, 0x80, 0x11, 0x93, 0x58, 0x4d, 0xc5, 0x60, 0x9b, 0x60, - 0x25, 0x49, 0x92, 0x24, 0xdb, 0xb6, 0x6d, 0xdb, 0x48, 0x1a, 0x24, 0x49, - 0xdc, 0x2e, 0x36, 0xaa, 0x4a, 0x62, 0x77, 0x70, 0x4b, 0x62, 0xc7, 0x57, - 0x82, 0x91, 0x51, 0xe7, 0x60, 0x54, 0x1f, 0x21, 0x01, 0x00, 0x00, 0x20, - 0xff, 0xff, 0xff, 0x1f, 0x7f, 0x90, 0xfe, 0x9f, 0x82, 0xef, 0x45, 0xa9, - 0x04, 0x9d, 0x6d, 0x08, 0x07, 0x9d, 0xd2, 0x2c, 0x9f, 0xcd, 0x69, 0xc4, - 0x68, 0xf2, 0x6f, 0x65, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, - 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, - 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, - 0x9a, 0x99, 0x99, 0x19, 0x66, 0x66, 0x66, 0xe6, 0x32, 0xb5, 0x32, 0xb3, - 0xcd, 0x4a, 0x1f, 0x99, 0x01, 0xf4, 0x16, 0x36, 0xcf, 0xc0, 0xf7, 0xa8, - 0x95, 0xa5, 0x15, 0x26, 0xcc, 0x4b, 0xc7, 0x22, 0x25, 0x49, 0x92, 0x24, - 0xdb, 0xb6, 0x6d, 0xdb, 0x48, 0x1a, 0x24, 0x49, 0xdc, 0x2e, 0x36, 0xaa, - 0x4a, 0x62, 0x77, 0x70, 0x4b, 0x62, 0xc7, 0x57, 0x82, 0x91, 0x51, 0xe7, - 0x60, 0x54, 0x1f, 0x21, 0x01, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0x1f, - 0x7f, 0x90, 0xfe, 0x9f, 0x82, 0xef, 0x45, 0xa9, 0x04, 0x9d, 0x6d, 0x08, - 0x07, 0x9d, 0xd2, 0x2c, 0x9f, 0xcd, 0x69, 0xc4, 0x68, 0xf2, 0x6f, 0x65, - 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, - 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, - 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x9a, 0x99, 0x99, 0x19, - 0x66, 0x66, 0x66, 0xe6, 0x32, 0xb5, 0x32, 0xb3, 0xcd, 0x4a, 0x1f, 0x99, - 0x01, 0xf4, 0x16, 0x36, 0xcf, 0xc0, 0xf7, 0xa8, 0x95, 0xa5, 0x15, 0x26, - 0xcc, 0x4b, 0xc7, 0x22, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x8b, 0x2e, 0xba, - 0x8a, 0xf6, 0xcf, 0x45, 0x31, 0xf2, 0xda, 0x34, 0x79, 0x21, 0x93, 0x4e, - 0x07, 0x50, 0x1d, 0x5d, 0x2a, 0x89, 0x03, 0xe0, 0x62, 0xaf, 0x63, 0x69, - 0x01, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0x1f, 0x7f, 0x90, 0xfe, 0x9f, - 0x82, 0xef, 0x45, 0xa9, 0x04, 0x9d, 0x6d, 0x08, 0x07, 0x9d, 0xd2, 0x2c, - 0x9f, 0xcd, 0x69, 0xc4, 0x68, 0xf2, 0x6f, 0x65, 0xab, 0xaa, 0xaa, 0xaa, - 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, - 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, - 0xbd, 0x08, 0xc3, 0x19, 0x9a, 0x99, 0x99, 0x19, 0x66, 0x66, 0x66, 0xe6, - 0x32, 0xb5, 0x32, 0xb3, 0xcd, 0x4a, 0x1f, 0x99, 0x01, 0xf4, 0x16, 0x36, - 0xcf, 0xc0, 0xf7, 0xa8, 0x95, 0xa5, 0x15, 0x26, 0xcc, 0x4b, 0xc7, 0x22, - 0x01, 0x00, 0x00, 0x00, 0xa2, 0x8b, 0x2e, 0xba, 0x8a, 0xf6, 0xcf, 0x45, - 0x31, 0xf2, 0xda, 0x34, 0x79, 0x21, 0x93, 0x4e, 0x07, 0x50, 0x1d, 0x5d, - 0x2a, 0x89, 0x03, 0xe0, 0x62, 0xaf, 0x63, 0x69, 0x01, 0x00, 0x00, 0xc0, - 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, - 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, - 0x0c, 0x84, 0x44, 0x6a, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, - 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, - 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, - 0x9a, 0x99, 0x99, 0x19, 0x66, 0x66, 0x66, 0xe6, 0x32, 0xb5, 0x32, 0xb3, - 0xcd, 0x4a, 0x1f, 0x99, 0x01, 0xf4, 0x16, 0x36, 0xcf, 0xc0, 0xf7, 0xa8, - 0x95, 0xa5, 0x15, 0x26, 0xcc, 0x4b, 0xc7, 0x22, 0x01, 0x00, 0x00, 0x00, - 0xa2, 0x8b, 0x2e, 0xba, 0x8a, 0xf6, 0xcf, 0x45, 0x31, 0xf2, 0xda, 0x34, - 0x79, 0x21, 0x93, 0x4e, 0x07, 0x50, 0x1d, 0x5d, 0x2a, 0x89, 0x03, 0xe0, - 0x62, 0xaf, 0x63, 0x69, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, - 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, - 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, - 0x3c, 0xb1, 0x13, 0x3b, 0x3a, 0xb1, 0x13, 0x3b, 0x3a, 0x75, 0x88, 0x9d, - 0x3d, 0xed, 0x02, 0xbd, 0xb5, 0x7b, 0x26, 0x08, 0xb8, 0x7b, 0xce, 0x8d, - 0x9f, 0x42, 0x85, 0x0f, 0x5a, 0xdc, 0x17, 0x62, 0x34, 0x33, 0x33, 0x33, - 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, - 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, - 0x98, 0x97, 0x8e, 0x45, 0x88, 0x4e, 0xa0, 0x71, 0x26, 0x46, 0x00, 0xc1, - 0x59, 0x47, 0xcc, 0xa7, 0x68, 0x77, 0x19, 0xb2, 0x1c, 0x68, 0x59, 0x52, - 0xd9, 0xd0, 0xa0, 0x30, 0x43, 0x6a, 0x13, 0x2f, 0x8d, 0x56, 0x7a, 0x4f, - 0xb9, 0xaf, 0x7e, 0xcb, 0x0a, 0x6b, 0x2a, 0xad, 0xce, 0x26, 0x8e, 0xd2, - 0xce, 0xf6, 0x0e, 0xba, 0x00, 0x13, 0x62, 0xe4, 0x85, 0x6b, 0xf5, 0xca, - 0x0a, 0xa7, 0x1f, 0xfd, 0xe6, 0xda, 0x5e, 0x3e, 0x72, 0x19, 0xe9, 0x3a, - 0x5d, 0x8e, 0x41, 0x50, 0x5b, 0x2b, 0xce, 0x04, 0xb8, 0xe9, 0xef, 0x01, - 0x2f, 0x62, 0xbb, 0x89, 0xba, 0xb1, 0x6d, 0x53, 0x9b, 0xb1, 0x98, 0xdd, - 0xd9, 0xbe, 0x69, 0x6b, 0x75, 0x46, 0x4f, 0x3a, 0x21, 0x81, 0x45, 0x49, - 0x16, 0x7c, 0x39, 0x2b, 0xe6, 0x8c, 0xfb, 0xb4, 0x55, 0x7a, 0x7c, 0x7b, - 0x85, 0x5c, 0x22, 0x17, 0x87, 0x18, 0x05, 0x6e, 0x53, 0xb1, 0x25, 0x59, - 0x01, 0x00, 0x00, 0x80, 0x54, 0x55, 0x55, 0xd5, 0xa9, 0x4c, 0xa9, 0x2a, - 0xad, 0x08, 0x1e, 0x1b, 0xaf, 0xde, 0x06, 0x08, 0x5c, 0x89, 0x05, 0x80, - 0x11, 0x93, 0x58, 0x4d, 0xc5, 0x60, 0x9b, 0x60, 0x26, 0xe6, 0xe2, 0x34, - 0x5c, 0xbd, 0xad, 0x11, 0x0a, 0x09, 0x9c, 0x1b, 0x31, 0x7e, 0x6b, 0x7e, - 0xa3, 0x6a, 0x29, 0xa9, 0xc1, 0x7b, 0xb7, 0x3a, 0x21, 0x2e, 0x89, 0x04, - 0x27, 0x5c, 0x04, 0x3d, 0x97, 0x6a, 0x95, 0x25, 0x73, 0xc6, 0x37, 0xe7, - 0x05, 0x30, 0xa9, 0x2d, 0x7f, 0x72, 0x97, 0x03, 0xc6, 0xbd, 0x1c, 0x9b, - 0x80, 0xd2, 0xc8, 0xad, 0xa9, 0x1e, 0xa4, 0xa3, 0xcd, 0xf4, 0x82, 0x57, - 0x7c, 0x96, 0xc1, 0x7c, 0x11, 0xc6, 0xec, 0x76, 0xd5, 0xc9, 0x49, 0x70, - 0xf1, 0x25, 0x83, 0x60, 0x68, 0xe4, 0x11, 0x9b, 0x62, 0xf2, 0xf5, 0x0b, - 0x82, 0x1f, 0x4e, 0x1f, 0xb2, 0x93, 0xd3, 0x20, 0x85, 0x3c, 0xe5, 0x5f, - 0x7f, 0xa2, 0x82, 0xd9, 0x2a, 0x32, 0xa0, 0xb0, 0x4d, 0x8a, 0x61, 0xee, - 0x30, 0xf5, 0xbd, 0xe0, 0x33, 0x84, 0x93, 0x58, 0xf6, 0x80, 0xef, 0xac, - 0x2a, 0x5d, 0xcb, 0x0b, 0x25, 0x49, 0x92, 0x24, 0xdb, 0xb6, 0x6d, 0xdb, - 0x48, 0x1a, 0x24, 0x49, 0xdc, 0x2e, 0x36, 0xaa, 0x4a, 0x62, 0x77, 0x70, - 0x4b, 0x62, 0xc7, 0x57, 0x82, 0x91, 0x51, 0xe7, 0x60, 0x54, 0x1f, 0x21, - 0x97, 0x6a, 0x95, 0x25, 0x73, 0xc6, 0x37, 0xe7, 0x05, 0x30, 0xa9, 0x2d, - 0x7f, 0x72, 0x97, 0x03, 0xc6, 0xbd, 0x1c, 0x9b, 0x80, 0xd2, 0xc8, 0xad, - 0xa9, 0x1e, 0xa4, 0xa3, 0xcd, 0xf4, 0x82, 0x57, 0xf9, 0xf6, 0xa6, 0xbd, - 0xdc, 0x5b, 0x1a, 0x48, 0x9f, 0xed, 0x92, 0x4d, 0x76, 0x34, 0x9b, 0xfb, - 0x4c, 0x73, 0x0e, 0xb8, 0x0d, 0x33, 0x36, 0xac, 0xd4, 0x35, 0x0e, 0xb7, - 0x14, 0x4b, 0xb5, 0x06, 0x6a, 0x99, 0xe6, 0xa5, 0x0f, 0x89, 0x3f, 0x1f, - 0x9b, 0x64, 0x4d, 0x0f, 0x5c, 0xab, 0x39, 0x9f, 0x3e, 0xd1, 0x73, 0x28, - 0x88, 0x5c, 0x51, 0xd1, 0xa7, 0x85, 0x7d, 0xca, 0xe2, 0x17, 0xda, 0x03, - 0x8a, 0x26, 0x84, 0x6f, 0x00, 0x30, 0xb2, 0xd2, 0xcf, 0xce, 0x9c, 0x31, - 0x82, 0x46, 0x62, 0x63, 0x4d, 0x19, 0x74, 0x2f, 0x92, 0x0b, 0xd9, 0x42, - 0x6b, 0xa3, 0x0c, 0x6e, 0x21, 0x2b, 0xb3, 0x2b, 0x01, 0x00, 0x00, 0x20, - 0xff, 0xff, 0xff, 0x1f, 0x7f, 0x90, 0xfe, 0x9f, 0x82, 0xef, 0x45, 0xa9, - 0x04, 0x9d, 0x6d, 0x08, 0x07, 0x9d, 0xd2, 0x2c, 0x9f, 0xcd, 0x69, 0xc4, - 0x68, 0xf2, 0x6f, 0x65, 0x7c, 0x96, 0xc1, 0x7c, 0x11, 0xc6, 0xec, 0x76, - 0xd5, 0xc9, 0x49, 0x70, 0xf1, 0x25, 0x83, 0x60, 0x68, 0xe4, 0x11, 0x9b, - 0x62, 0xf2, 0xf5, 0x0b, 0x82, 0x1f, 0x4e, 0x1f, 0xb2, 0x93, 0xd3, 0x20, - 0x6a, 0x99, 0xe6, 0xa5, 0x0f, 0x89, 0x3f, 0x1f, 0x9b, 0x64, 0x4d, 0x0f, - 0x5c, 0xab, 0x39, 0x9f, 0x3e, 0xd1, 0x73, 0x28, 0x88, 0x5c, 0x51, 0xd1, - 0xa7, 0x85, 0x7d, 0xca, 0xe2, 0x17, 0xda, 0x03, 0x69, 0x90, 0x62, 0x7b, - 0x48, 0x4d, 0xc2, 0x2d, 0xab, 0x47, 0x20, 0xcd, 0x2d, 0xc3, 0xdf, 0x11, - 0x75, 0xe1, 0x3a, 0x86, 0xce, 0x50, 0xf3, 0x2d, 0x59, 0xc0, 0xa5, 0x0d, - 0x48, 0xad, 0x9d, 0x4b, 0x3d, 0xed, 0x2d, 0x35, 0xb2, 0x93, 0x6d, 0x06, - 0x4c, 0x93, 0x7d, 0xd5, 0xcd, 0xec, 0xe7, 0x8a, 0xbf, 0x92, 0x09, 0x74, - 0x81, 0xc1, 0x8d, 0xab, 0x7e, 0x57, 0x96, 0xb7, 0xc1, 0xe0, 0x71, 0x42, - 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, - 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, - 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x85, 0x3c, 0xe5, 0x5f, - 0x7f, 0xa2, 0x82, 0xd9, 0x2a, 0x32, 0xa0, 0xb0, 0x4d, 0x8a, 0x61, 0xee, - 0x30, 0xf5, 0xbd, 0xe0, 0x33, 0x84, 0x93, 0x58, 0xf6, 0x80, 0xef, 0xac, - 0x2a, 0x5d, 0xcb, 0x0b, 0x8a, 0x26, 0x84, 0x6f, 0x00, 0x30, 0xb2, 0xd2, - 0xcf, 0xce, 0x9c, 0x31, 0x82, 0x46, 0x62, 0x63, 0x4d, 0x19, 0x74, 0x2f, - 0x92, 0x0b, 0xd9, 0x42, 0x6b, 0xa3, 0x0c, 0x6e, 0x21, 0x2b, 0xb3, 0x2b, - 0x3d, 0xed, 0x2d, 0x35, 0xb2, 0x93, 0x6d, 0x06, 0x4c, 0x93, 0x7d, 0xd5, - 0xcd, 0xec, 0xe7, 0x8a, 0xbf, 0x92, 0x09, 0x74, 0x81, 0xc1, 0x8d, 0xab, - 0x7e, 0x57, 0x96, 0xb7, 0xc1, 0xe0, 0x71, 0x42, 0x20, 0x3d, 0x54, 0xa5, - 0x4f, 0xa5, 0xcb, 0x7b, 0xaa, 0x7f, 0x02, 0x97, 0xb6, 0x7c, 0x11, 0x88, - 0xa1, 0xfc, 0x32, 0x3e, 0x9e, 0x32, 0xae, 0x1a, 0x73, 0x54, 0xae, 0xe3, - 0x70, 0xf5, 0xda, 0x6a, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x14, 0xb3, 0x04, 0x7b, 0x4b, 0x5d, 0x64, 0x29, 0xcb, 0x18, 0x15, 0x95, - 0x27, 0x80, 0x5d, 0x71, 0x4b, 0x4e, 0xc1, 0x18, 0xc5, 0xd0, 0x38, 0x18, - 0x89, 0xeb, 0x73, 0x2b, 0x9e, 0x8e, 0xa1, 0x18, 0x40, 0x14, 0xbd, 0x68, - 0x82, 0x94, 0x89, 0xae, 0x3e, 0xbe, 0xbb, 0xaf, 0x50, 0x42, 0xe6, 0xf7, - 0x36, 0x92, 0xb8, 0xc7, 0x70, 0xab, 0x95, 0x61, 0x0f, 0x12, 0x71, 0xd5, - 0x82, 0x51, 0x01, 0x21, 0x1d, 0x4c, 0x48, 0x56, 0xcc, 0x48, 0x57, 0x07, - 0xc7, 0xb3, 0x0d, 0x36, 0xe9, 0xf1, 0x8c, 0xf0, 0x83, 0xb6, 0xf1, 0x87, - 0x85, 0x04, 0x7b, 0x66, 0x31, 0x8f, 0xa5, 0x3d, 0x39, 0x85, 0x2f, 0x38, - 0x30, 0xca, 0xf4, 0x7f, 0xba, 0x3b, 0x5c, 0x8a, 0x59, 0x30, 0x3b, 0x3f, - 0xfd, 0xa5, 0xb5, 0x7e, 0xfa, 0x1d, 0x1d, 0x8e, 0xc3, 0x29, 0x37, 0x69, - 0xe0, 0x8e, 0xae, 0xd4, 0x5d, 0xc5, 0xf6, 0x50, 0x96, 0x78, 0x5c, 0x4d, - 0x48, 0x94, 0xfb, 0x0b, 0x75, 0x0a, 0x77, 0x06, 0xb4, 0x44, 0xde, 0x32, - 0xcb, 0xdc, 0xb8, 0xf6, 0x28, 0x5d, 0xe4, 0x99, 0x19, 0xaf, 0xf3, 0xb3, - 0x1d, 0x68, 0x25, 0x40, 0x76, 0x54, 0x06, 0x7e, 0xef, 0xd5, 0x24, 0xeb, - 0xfb, 0xf2, 0x50, 0xf3, 0xd0, 0x40, 0xa5, 0xf6, 0x25, 0xc1, 0x5f, 0x16, - 0x94, 0xcd, 0xac, 0xa8, 0xa6, 0xd7, 0x21, 0x6e, 0x7e, 0x14, 0x8d, 0x53, - 0x44, 0x4b, 0x76, 0x8a, 0xcd, 0xc0, 0xdc, 0x39, 0x00, 0xfb, 0x0e, 0xce, - 0x08, 0xbd, 0x09, 0x02, 0xba, 0xa4, 0xd6, 0x08, 0x11, 0xbe, 0x80, 0xdc, - 0x8f, 0xd1, 0x3b, 0x3f, 0x30, 0x46, 0xf0, 0x51, 0xf4, 0x2f, 0xd8, 0x28, - 0xf6, 0xc2, 0xa7, 0x91, 0x74, 0x15, 0xfd, 0x03, 0x78, 0x4b, 0xc6, 0x99, - 0xa8, 0x01, 0x2c, 0x30, 0x3e, 0x4b, 0x18, 0x10, 0x75, 0x4d, 0x60, 0xdc, - 0x18, 0x3d, 0x25, 0x1e, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x83, 0x60, 0xa9, 0x42, 0x6a, 0xb8, 0x29, 0xe9, 0xc0, 0xc0, 0x9d, 0x1f, - 0x5f, 0x7a, 0x04, 0x47, 0xc3, 0xa5, 0x77, 0x66, 0x12, 0x10, 0x09, 0x91, - 0xde, 0xec, 0x42, 0xb7, 0xe0, 0x25, 0x69, 0x41, 0x25, 0xb3, 0x96, 0x7a, - 0xb9, 0x6f, 0x90, 0x29, 0x5f, 0x20, 0x2b, 0xc9, 0x64, 0xfd, 0x78, 0xf3, - 0x16, 0x25, 0x84, 0x4e, 0xe5, 0xd7, 0xea, 0x16, 0xed, 0x67, 0x11, 0xb0, - 0x64, 0x45, 0x0e, 0x25, 0x0d, 0x40, 0xd3, 0x91, 0xc5, 0xd0, 0x65, 0x9b, - 0x20, 0xe6, 0x1d, 0xd7, 0xf2, 0x5d, 0xfe, 0x5f, 0x60, 0x48, 0x37, 0x28, - 0xba, 0xf0, 0x1a, 0x1c, 0x3a, 0x53, 0xc7, 0xc4, 0x8b, 0xd6, 0xda, 0x19, - 0xb8, 0x6c, 0x49, 0xec, 0x34, 0xc1, 0x76, 0x0c, 0x99, 0x3b, 0xaf, 0xa5, - 0xf7, 0x78, 0x40, 0x3c, 0x83, 0x65, 0x37, 0x45, 0x3b, 0x21, 0x9f, 0x3b, - 0x08, 0xcd, 0x59, 0x9b, 0x7c, 0x03, 0x4d, 0x33, 0x85, 0x7a, 0x74, 0x37, - 0x23, 0xf6, 0xe0, 0xc0, 0x17, 0x67, 0xc8, 0x67, 0xfa, 0x92, 0xe5, 0x53, - 0xff, 0xc3, 0xb9, 0x95, 0xec, 0xa9, 0xc7, 0x25, 0x93, 0x17, 0x50, 0x5a, - 0x53, 0x75, 0xcf, 0x4f, 0x66, 0xee, 0x29, 0x6f, 0x57, 0x8f, 0xd3, 0xb8, - 0xea, 0x01, 0x65, 0xfe, 0xb8, 0x2e, 0x92, 0xa2, 0x7a, 0x77, 0xdc, 0xb0, - 0x13, 0x20, 0x88, 0x53, 0x3a, 0x4f, 0x98, 0x60, 0x46, 0xb7, 0xaf, 0x47, - 0xbc, 0x51, 0x9e, 0x8d, 0xee, 0x26, 0x22, 0xa1, 0x6c, 0x10, 0x88, 0x4c, - 0x21, 0xfc, 0x9a, 0x6e, 0x53, 0x9f, 0xb3, 0x67, 0x82, 0x68, 0xd0, 0x7e, - 0xde, 0x01, 0x00, 0x23, 0x42, 0x8a, 0x5e, 0x33, 0xc5, 0x72, 0xaf, 0xf4, - 0xb1, 0x87, 0x84, 0x9d, 0x3f, 0x5c, 0xda, 0x37, 0xad, 0xa0, 0x63, 0x02, - 0x8b, 0xff, 0xc2, 0x22, 0xd7, 0xe2, 0x19, 0x6d, 0x51, 0x68, 0xee, 0xae, - 0x99, 0xb4, 0x19, 0x59, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x73, 0xee, 0xdb, 0xe5, 0x66, 0x84, 0x56, 0x5a, 0xeb, 0x0e, 0x91, 0x5b, - 0xbd, 0x81, 0xf3, 0x0d, 0xd8, 0x67, 0x06, 0xcb, 0x7b, 0xe7, 0xa5, 0xcf, - 0x56, 0xb5, 0xb5, 0x9e, 0xbb, 0xc4, 0xd7, 0x2c, 0xca, 0x76, 0x54, 0xc5, - 0x72, 0x27, 0x4f, 0xc3, 0xd0, 0xf4, 0xd4, 0xb9, 0x6c, 0xc9, 0x68, 0x37, - 0x13, 0xdb, 0x10, 0x5b, 0x36, 0x93, 0x21, 0x68, 0x6f, 0xfa, 0x48, 0xda, - 0xe8, 0x8f, 0x7e, 0x56, 0xe3, 0x5f, 0x8b, 0x32, 0xe0, 0xd5, 0x21, 0xbd, - 0x82, 0x9a, 0x37, 0x5a, 0xb6, 0x1c, 0x43, 0xe8, 0x7b, 0x88, 0x5e, 0xbd, - 0x26, 0x6f, 0x94, 0xba, 0x0c, 0xb0, 0xb3, 0xa8, 0xb3, 0x89, 0x25, 0x59, - 0x1a, 0xeb, 0x98, 0x58, 0x9f, 0x4f, 0x61, 0x41, 0xea, 0xab, 0x1f, 0x64, - 0xb3, 0xd8, 0x77, 0xa4, 0x0e, 0x2c, 0xdc, 0x51, 0x51, 0x7f, 0x00, 0x54, - 0xc4, 0xc7, 0x4c, 0x56, 0x93, 0x14, 0x41, 0x66, 0xb1, 0xc2, 0xd6, 0x9a, - 0xa6, 0x17, 0x63, 0x84, 0xc0, 0x85, 0xb1, 0xe8, 0x43, 0x46, 0x48, 0xfb, - 0xba, 0x88, 0x4d, 0xc4, 0x31, 0x3c, 0x48, 0x12, 0xab, 0x54, 0xa3, 0x4a, - 0xb8, 0x04, 0x99, 0x28, 0x53, 0x1d, 0x3a, 0x44, 0xd0, 0x62, 0x3f, 0xae, - 0xfe, 0xb3, 0x7a, 0x3f, 0x5e, 0x7a, 0x09, 0xfd, 0x56, 0xe3, 0x25, 0x84, - 0x97, 0x20, 0x33, 0x54, 0x75, 0xbe, 0x31, 0x17, 0x4e, 0x1b, 0x1f, 0x54, - 0x8a, 0x34, 0x83, 0xce, 0x58, 0xc4, 0x40, 0x3e, 0xcd, 0xc6, 0x9e, 0x23, - 0xc2, 0x97, 0x19, 0x56, 0xba, 0x0f, 0xb3, 0xfc, 0x36, 0xd9, 0x5b, 0x43, - 0x53, 0xe0, 0xce, 0x97, 0x6e, 0xb6, 0x72, 0x3c, 0xec, 0x4d, 0x6f, 0x87, - 0xa7, 0x14, 0xb3, 0xad, 0x20, 0x8c, 0xaa, 0x94, 0x50, 0x41, 0x29, 0x66, - 0xb0, 0x92, 0xc4, 0x75, 0xf0, 0x96, 0x28, 0xf0, 0x9d, 0x88, 0xb2, 0xfa, - 0x33, 0x8f, 0x89, 0x68, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xdd, 0x5e, 0xc3, 0xd3, 0x43, 0xb7, 0x8e, 0x79, 0xea, 0x94, 0xd6, 0x64, - 0x52, 0x8a, 0x44, 0xdc, 0x4b, 0x7c, 0x9f, 0x64, 0x2b, 0x58, 0xce, 0x30, - 0x89, 0x9c, 0xde, 0xd9, 0x6d, 0x49, 0x01, 0x64, 0x46, 0x51, 0x6b, 0xf3, - 0x95, 0x9f, 0x24, 0xfb, 0x86, 0x5d, 0x80, 0xe0, 0x81, 0x5e, 0x20, 0xb7, - 0xd8, 0x5c, 0x73, 0x71, 0x31, 0x90, 0x36, 0x9c, 0x23, 0x1c, 0x43, 0x24, - 0x90, 0xb9, 0x12, 0x5a, 0xcb, 0x18, 0x87, 0xf2, 0x5c, 0x25, 0xd3, 0x64, - 0x04, 0x78, 0xbf, 0xeb, 0xd1, 0xb4, 0x65, 0x49, 0x2c, 0x6a, 0xf4, 0x6b, - 0xc7, 0xd6, 0x2e, 0x3d, 0x9b, 0xc2, 0x47, 0xf8, 0x7e, 0x5a, 0xf1, 0x54, - 0xd3, 0x39, 0xda, 0x89, 0x89, 0xa6, 0x2e, 0xc3, 0x43, 0x31, 0xaf, 0x54, - 0x8e, 0xd2, 0xb6, 0x8f, 0x2a, 0x04, 0xfa, 0xb9, 0x2a, 0xcd, 0x01, 0x65, - 0x07, 0x5e, 0x3a, 0xe3, 0x8b, 0xe1, 0xf4, 0x02, 0x4f, 0xda, 0x58, 0xd4, - 0x04, 0x9f, 0xdd, 0xad, 0xd2, 0x9d, 0x1b, 0x02, 0x91, 0x45, 0x55, 0xf7, - 0x4d, 0x5f, 0x7f, 0xf1, 0x31, 0x1f, 0x65, 0x95, 0x4a, 0x1b, 0x29, 0x21, - 0xbd, 0xd2, 0x4c, 0x63, 0x84, 0x28, 0x4a, 0x35, 0x08, 0x57, 0x00, 0x36, - 0xb5, 0x94, 0x9f, 0x3b, 0x9e, 0x21, 0x59, 0x19, 0x7c, 0xcc, 0x3c, 0x97, - 0xd2, 0xe1, 0x1a, 0xcb, 0x47, 0xc2, 0x1f, 0xbd, 0x68, 0x22, 0x17, 0x6d, - 0x30, 0xd8, 0x85, 0xcf, 0xb7, 0x7c, 0x88, 0x2a, 0x54, 0x3e, 0x97, 0xa8, - 0x0d, 0xf2, 0xb3, 0xec, 0xc8, 0xee, 0x39, 0x67, 0x3c, 0x13, 0xa1, 0x73, - 0x63, 0x3a, 0x37, 0x1f, 0x76, 0x09, 0x2b, 0x6b, 0x9b, 0x5a, 0x39, 0xcc, - 0x3d, 0x63, 0xd3, 0x06, 0xdf, 0x15, 0xa8, 0xf3, 0x51, 0xe5, 0x9b, 0x00, - 0xcb, 0x29, 0xf1, 0xf1, 0x1d, 0x16, 0x01, 0xed, 0xb8, 0x4f, 0x5c, 0xae, - 0xb3, 0x9c, 0x1f, 0x26, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x0d, 0x5a, 0x47, 0xa3, 0x51, 0xe8, 0x22, 0x53, 0xae, 0x93, 0x2f, 0x8a, - 0xd3, 0x65, 0x0d, 0x4f, 0x82, 0xd7, 0x23, 0x82, 0xc3, 0x27, 0xdc, 0x42, - 0x0d, 0xa5, 0x22, 0x60, 0x33, 0x76, 0x7f, 0x0f, 0x7e, 0xda, 0x04, 0x0e, - 0x5f, 0xa4, 0x5a, 0x3b, 0xfa, 0xad, 0xc4, 0x2a, 0xb3, 0x76, 0x2d, 0xc3, - 0x59, 0x8f, 0x62, 0x56, 0xa2, 0xc8, 0xc0, 0x89, 0x43, 0x91, 0x42, 0xc3, - 0x8c, 0x4e, 0x6e, 0x42, 0xde, 0x68, 0xe8, 0x49, 0x7d, 0xd0, 0xc3, 0x11, - 0x97, 0x8c, 0xe1, 0x1b, 0x82, 0x93, 0x68, 0x12, 0x5f, 0xcd, 0xbd, 0x75, - 0xc9, 0x26, 0x77, 0xbf, 0xeb, 0xa5, 0xac, 0x37, 0x9d, 0x95, 0xab, 0x10, - 0x9f, 0x29, 0xb1, 0xdf, 0x04, 0x5e, 0x26, 0x79, 0x8c, 0xe0, 0x80, 0x32, - 0xea, 0xf1, 0x9d, 0x29, 0xc2, 0x89, 0x9b, 0xe9, 0x89, 0x25, 0x34, 0x0e, - 0x5d, 0xe1, 0x93, 0xc3, 0x76, 0x78, 0x03, 0x51, 0x57, 0x4b, 0x68, 0xb2, - 0x8f, 0x1f, 0x19, 0xfd, 0xa7, 0x2e, 0xa8, 0xc6, 0x2c, 0x6e, 0x37, 0x2e, - 0x29, 0x02, 0xad, 0x57, 0x2f, 0x54, 0x9f, 0x4d, 0x56, 0xa7, 0x64, 0x19, - 0x4e, 0x0e, 0xae, 0x63, 0x4e, 0x87, 0x0d, 0xc8, 0xff, 0xfa, 0x74, 0x9f, - 0xf7, 0xf9, 0x2e, 0x5f, 0x76, 0xb4, 0x6b, 0x8c, 0x6d, 0xc9, 0xcf, 0x86, - 0x81, 0x3f, 0xb6, 0xa9, 0x92, 0x59, 0x18, 0x3c, 0xec, 0x8c, 0xb1, 0x73, - 0xb3, 0x24, 0xfe, 0x90, 0xe9, 0x2e, 0x07, 0x60, 0x15, 0xa8, 0x1d, 0x69, - 0xa1, 0xfb, 0x71, 0x90, 0x8b, 0x88, 0x94, 0xf5, 0xf0, 0x02, 0x75, 0x4a, - 0xc0, 0x28, 0xfa, 0x27, 0x79, 0xd8, 0xc2, 0x2f, 0x3e, 0x77, 0x46, 0xe7, - 0x06, 0x0d, 0x26, 0x34, 0xc7, 0x57, 0x8b, 0x0d, 0x57, 0xaa, 0x78, 0x85, - 0xb4, 0xfd, 0xe1, 0x27, 0x9b, 0xa0, 0x3f, 0x80, 0x90, 0x00, 0xd7, 0x29, - 0xb2, 0xee, 0x6d, 0x02, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x4a, 0xfe, 0xec, 0x9b, 0x0e, 0xad, 0x47, 0xf4, 0xe4, 0x71, 0x1f, 0xfa, - 0xa3, 0x21, 0xdc, 0xfb, 0xcf, 0xff, 0x59, 0x4e, 0xff, 0xa1, 0x95, 0x0e, - 0x2e, 0x23, 0x4a, 0x7d, 0xcb, 0x7c, 0x8a, 0x29, 0x8d, 0x64, 0x04, 0x12, - 0x83, 0x7f, 0x32, 0xce, 0x7f, 0x23, 0xfb, 0xea, 0x2e, 0xdc, 0x0b, 0xeb, - 0x1d, 0xc4, 0xe5, 0x83, 0xa8, 0x30, 0xc4, 0xcd, 0x33, 0x1c, 0x64, 0x57, - 0xaa, 0x81, 0x51, 0x06, 0x08, 0xf2, 0xd9, 0x72, 0x1f, 0x40, 0x6b, 0xd4, - 0x8f, 0x39, 0x09, 0x05, 0x85, 0xdb, 0x81, 0x5e, 0x2e, 0x53, 0x8c, 0xe4, - 0x5b, 0x74, 0x11, 0xc0, 0x19, 0x06, 0x36, 0x06, 0x04, 0x50, 0xb4, 0x65, - 0x67, 0x35, 0x53, 0x4c, 0xc4, 0x37, 0xac, 0x99, 0xdf, 0xa5, 0x61, 0xe6, - 0x9b, 0xea, 0xe0, 0x3d, 0x21, 0x04, 0xb3, 0x1c, 0xc5, 0x6e, 0xda, 0x7e, - 0x78, 0xb4, 0x56, 0x80, 0x21, 0x67, 0xa1, 0x5d, 0xc3, 0xa8, 0x0d, 0xe0, - 0x8d, 0xc0, 0x45, 0xf2, 0x3b, 0x18, 0xd1, 0xbd, 0x6f, 0xc7, 0x09, 0x81, - 0x09, 0x97, 0x78, 0x5e, 0x09, 0x03, 0x85, 0x0c, 0x49, 0x96, 0xa3, 0x5d, - 0x3e, 0xa5, 0xb2, 0x5c, 0xc2, 0x37, 0x0f, 0x6a, 0x9a, 0x8a, 0xa8, 0xa1, - 0x12, 0xdc, 0xf6, 0x56, 0xd4, 0xf6, 0x72, 0x93, 0xee, 0x6d, 0x2b, 0x29, - 0xbb, 0x8c, 0x8f, 0x62, 0xef, 0x61, 0xbb, 0xfc, 0x87, 0x94, 0x98, 0x56, - 0x03, 0x26, 0xcb, 0x07, 0x6b, 0x59, 0x68, 0xef, 0xf3, 0xfa, 0xdf, 0xf3, - 0xba, 0x8f, 0x5e, 0xd0, 0x61, 0x0c, 0xa6, 0x63, 0x68, 0x75, 0x04, 0xd6, - 0x5e, 0xa6, 0x05, 0x66, 0x2b, 0xa1, 0xcd, 0x24, 0x94, 0x5e, 0x76, 0x57, - 0x79, 0x79, 0x31, 0x0e, 0xbc, 0x60, 0x24, 0xd0, 0x9d, 0xf3, 0x5c, 0x5c, - 0x0f, 0xf3, 0x7b, 0x7e, 0x18, 0x47, 0x42, 0x51, 0x9c, 0x8e, 0xbd, 0xce, - 0x63, 0xe5, 0x96, 0x42, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x8d, 0x12, 0x98, 0x71, 0x8e, 0x8e, 0x4b, 0x5a, 0x67, 0x67, 0xd3, 0x33, - 0x99, 0xe9, 0xb5, 0xb8, 0x06, 0xa6, 0xe5, 0xbd, 0x5b, 0x02, 0x6a, 0x84, - 0x2f, 0xaa, 0x1b, 0x80, 0xfc, 0xdd, 0x8f, 0x1e, 0x96, 0xc2, 0x3a, 0x93, - 0xbb, 0x7e, 0xe6, 0x90, 0x84, 0x8c, 0x6d, 0xdb, 0x72, 0x42, 0xa1, 0x76, - 0x2d, 0x44, 0x98, 0xbb, 0xbd, 0xfd, 0x22, 0x8f, 0xc1, 0x22, 0xf3, 0x24, - 0xe3, 0x2f, 0x0f, 0x16, 0xd5, 0x91, 0xbe, 0xb8, 0xd2, 0x71, 0x58, 0x47, - 0xc4, 0xea, 0x87, 0x2b, 0x74, 0x30, 0xcc, 0xd7, 0x4b, 0x5e, 0x10, 0x0d, - 0xec, 0x67, 0xfe, 0x53, 0x88, 0xa8, 0xbb, 0x33, 0xe7, 0x19, 0xa8, 0x6c, - 0x8b, 0xe9, 0xd6, 0x3a, 0x58, 0x93, 0x56, 0xe7, 0xa0, 0xa4, 0x2f, 0xfe, - 0x2b, 0x45, 0x86, 0xfb, 0xbc, 0x48, 0xed, 0x8c, 0xab, 0xda, 0x57, 0x73, - 0x8a, 0x0d, 0x69, 0x9b, 0x04, 0xb4, 0xfe, 0x3a, 0xe1, 0x70, 0x65, 0x32, - 0x14, 0xb3, 0x77, 0xdd, 0x34, 0xfe, 0x7f, 0xc9, 0x7e, 0x59, 0x42, 0xdd, - 0xd9, 0xa2, 0x7f, 0x1d, 0x81, 0xd0, 0xfb, 0xe9, 0x56, 0xe1, 0x02, 0xdf, - 0x4e, 0x0b, 0x57, 0x59, 0x7f, 0x57, 0x88, 0xa8, 0xdc, 0xde, 0xaa, 0x5f, - 0x46, 0x9b, 0x4f, 0x2a, 0xc2, 0xaa, 0xf6, 0xc8, 0x86, 0x1c, 0xd5, 0x53, - 0x19, 0x84, 0x1e, 0x7e, 0x9e, 0xb1, 0x15, 0x32, 0x51, 0x0e, 0xe9, 0x68, - 0x27, 0xe0, 0xb6, 0xe7, 0xf4, 0xa4, 0xc4, 0x4a, 0xe9, 0x72, 0x8d, 0xb3, - 0x75, 0xe3, 0x05, 0x09, 0x6d, 0xeb, 0x87, 0xa4, 0x04, 0x21, 0xff, 0x96, - 0xea, 0x0c, 0xe9, 0xd7, 0x0a, 0xb2, 0xee, 0x48, 0x6c, 0xb0, 0xaa, 0xf4, - 0x50, 0x54, 0xd7, 0xb9, 0xf5, 0x0b, 0x9a, 0x77, 0x87, 0xe3, 0x66, 0x2c, - 0x08, 0x20, 0xd5, 0xe2, 0x2f, 0x36, 0xd0, 0x11, 0xa9, 0x44, 0xcd, 0xf2, - 0x46, 0xa5, 0xac, 0x0b, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x89, 0x8f, 0xdc, 0xf7, 0xad, 0x78, 0xd2, 0xfa, 0xda, 0xa2, 0xd2, 0x09, - 0x49, 0x89, 0xc4, 0xc2, 0x78, 0x42, 0xc6, 0x60, 0x4a, 0x01, 0xf1, 0xac, - 0xb2, 0x29, 0x90, 0xe9, 0x5b, 0x69, 0x01, 0x30, 0xf6, 0x50, 0x0b, 0xdf, - 0x61, 0x17, 0xa3, 0xc1, 0x91, 0xc0, 0xbc, 0xbb, 0xdd, 0x7c, 0x6a, 0xb0, - 0xe0, 0x0c, 0x2e, 0xc2, 0x44, 0xe8, 0xad, 0x37, 0x2a, 0xbc, 0x28, 0xb1, - 0x7f, 0x53, 0xc2, 0x6f, 0xb9, 0xb5, 0xd6, 0xdb, 0x5c, 0x32, 0x05, 0x2e, - 0xd9, 0x7f, 0xf6, 0x21, 0x33, 0x16, 0x07, 0x19, 0xbb, 0xec, 0xc2, 0x5a, - 0x62, 0x63, 0x8c, 0x1a, 0x88, 0x65, 0x01, 0x13, 0x69, 0x87, 0x20, 0x28, - 0xab, 0xc6, 0x02, 0xe8, 0x10, 0x1e, 0x34, 0x5f, 0x64, 0x44, 0x46, 0xbc, - 0xc5, 0x55, 0x1f, 0xa9, 0x6f, 0xce, 0x8e, 0xd2, 0x2f, 0xe6, 0x19, 0x7b, - 0x38, 0x85, 0x86, 0x5a, 0xa6, 0x36, 0x04, 0x25, 0x94, 0xe4, 0x59, 0xb0, - 0x6b, 0xe9, 0x54, 0x71, 0x8d, 0x8f, 0x59, 0xb3, 0x8b, 0x94, 0x12, 0x12, - 0x1f, 0x1e, 0xd0, 0x25, 0x17, 0x32, 0x44, 0xf7, 0x92, 0x8a, 0x73, 0x07, - 0xc8, 0xf7, 0x0e, 0x3e, 0xe0, 0x01, 0x6f, 0x93, 0x0a, 0x62, 0xd4, 0x46, - 0x14, 0x2a, 0x44, 0xfc, 0x7f, 0xf7, 0xd4, 0x48, 0xd9, 0x5e, 0xfa, 0x5d, - 0x31, 0x9f, 0xf8, 0x4f, 0xe3, 0x1a, 0x42, 0x0b, 0x06, 0xb6, 0x54, 0x3a, - 0xee, 0x67, 0xce, 0x7c, 0x58, 0x5e, 0x1b, 0xb3, 0x24, 0xda, 0xb1, 0x3f, - 0x9e, 0x48, 0xb2, 0x4d, 0xa4, 0x92, 0xb8, 0xfa, 0x8b, 0xaf, 0x72, 0x15, - 0x05, 0x26, 0x0b, 0x8c, 0x92, 0xb2, 0xbf, 0x3f, 0x85, 0xb3, 0x39, 0xc3, - 0x14, 0x95, 0xfd, 0x15, 0x75, 0x99, 0xc2, 0x5f, 0x3a, 0x07, 0xa7, 0x24, - 0x8c, 0xaa, 0x14, 0x63, 0xb7, 0x96, 0xc8, 0x40, 0xde, 0xc0, 0xed, 0xd8, - 0x25, 0xea, 0xb7, 0x58, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xf4, 0xf7, 0xac, 0xf2, 0x79, 0xdd, 0xcc, 0xbf, 0x57, 0xd9, 0x4c, 0xd1, - 0x5c, 0xd0, 0xc1, 0xba, 0x14, 0x49, 0x97, 0x3e, 0x18, 0x47, 0x9c, 0xbe, - 0x1c, 0xaf, 0x42, 0xc9, 0x0d, 0x6a, 0x3d, 0x1b, 0xd9, 0x2d, 0x5a, 0xd0, - 0xde, 0xa9, 0x25, 0xfd, 0x34, 0xc0, 0x35, 0x1b, 0x42, 0x79, 0x63, 0x72, - 0xcd, 0xc3, 0xa3, 0xdb, 0x74, 0x55, 0x22, 0xb5, 0x0d, 0x9b, 0x05, 0x7c, - 0x55, 0xcd, 0xf7, 0x5f, 0x69, 0xe7, 0xbc, 0x75, 0x0f, 0xda, 0x05, 0x79, - 0x2a, 0x85, 0xad, 0x7a, 0x86, 0x8a, 0x4e, 0xb8, 0xe0, 0x3f, 0xaf, 0xc9, - 0x01, 0x02, 0x46, 0xbe, 0x60, 0xb7, 0x9c, 0x9f, 0xc1, 0x44, 0x6c, 0x6e, - 0xd0, 0xd2, 0x7c, 0x48, 0xee, 0xaa, 0xd5, 0xc9, 0x9d, 0x7a, 0x41, 0xa4, - 0x9e, 0x39, 0x45, 0x30, 0xe3, 0x80, 0xe8, 0x7a, 0x1d, 0xa6, 0xb1, 0x69, - 0x4d, 0xcf, 0x4a, 0x21, 0x25, 0x4d, 0xcf, 0x30, 0x55, 0x9e, 0x12, 0x90, - 0x85, 0x55, 0x6a, 0x30, 0x62, 0xcd, 0xd0, 0x88, 0x43, 0x3f, 0x75, 0x60, - 0x41, 0x35, 0x36, 0x12, 0x33, 0x2c, 0xd1, 0xea, 0xe7, 0x98, 0x71, 0xc0, - 0xe1, 0x90, 0xc9, 0x66, 0x84, 0x40, 0xb0, 0xc0, 0xde, 0x26, 0xb2, 0x4a, - 0x27, 0xdb, 0x2f, 0xe5, 0x43, 0xd1, 0x7c, 0x71, 0x69, 0x61, 0x1a, 0x59, - 0x23, 0x37, 0xb2, 0x7b, 0x35, 0x68, 0x8f, 0xbb, 0xae, 0x10, 0x8e, 0x6d, - 0xc4, 0xcd, 0x62, 0xbc, 0xcd, 0x69, 0x73, 0x7c, 0xa0, 0x5b, 0xeb, 0x81, - 0x24, 0x6a, 0x7e, 0xad, 0xdd, 0x90, 0x52, 0xf0, 0x8c, 0xea, 0xe0, 0x58, - 0x44, 0x74, 0x23, 0x93, 0xab, 0x26, 0x23, 0x61, 0x79, 0x60, 0x67, 0x0c, - 0x9f, 0x2c, 0x13, 0xa5, 0xb5, 0xa3, 0xe6, 0xba, 0x93, 0x69, 0xf6, 0x5e, - 0x54, 0x23, 0x88, 0x50, 0x1e, 0x88, 0x34, 0x9c, 0x59, 0x31, 0x8d, 0x97, - 0x4e, 0x53, 0x94, 0x3b, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x6c, 0x29, 0x99, 0x14, 0xfa, 0x09, 0x1b, 0x65, 0xd9, 0x37, 0xae, 0x5a, - 0x8e, 0xe8, 0xb5, 0x6d, 0xe5, 0xad, 0xd3, 0xde, 0xa2, 0x60, 0x5c, 0x99, - 0xb9, 0x0f, 0x92, 0x9d, 0xfc, 0x52, 0x58, 0x6c, 0xbd, 0xd8, 0xed, 0x8f, - 0x2b, 0x98, 0x9a, 0xbb, 0x0d, 0xae, 0x3a, 0x3b, 0x85, 0xa9, 0x01, 0x31, - 0x26, 0x43, 0x25, 0x8d, 0x17, 0x01, 0x85, 0xea, 0x56, 0x1c, 0x3a, 0x61, - 0x5c, 0xff, 0x53, 0x33, 0x1f, 0x34, 0xda, 0x49, 0xc0, 0x06, 0xcc, 0x67, - 0xc2, 0xeb, 0x46, 0xe6, 0x7d, 0x52, 0x61, 0xd4, 0xd3, 0x01, 0x66, 0x41, - 0xf0, 0x5d, 0xb7, 0x9b, 0xe0, 0x36, 0xae, 0x63, 0x04, 0x7c, 0x05, 0x02, - 0x55, 0xf9, 0x90, 0xfa, 0x3c, 0x28, 0x94, 0x67, 0xa3, 0xab, 0xed, 0xfb, - 0xad, 0xfe, 0xe4, 0x1b, 0x13, 0xe3, 0x44, 0x0e, 0x86, 0x6f, 0xfb, 0x11, - 0xf7, 0x69, 0x84, 0x41, 0x4b, 0xea, 0x72, 0x01, 0xf2, 0xcc, 0x68, 0x82, - 0x7b, 0xeb, 0x85, 0x6b, 0x7c, 0x30, 0xc2, 0x27, 0x8e, 0xcd, 0x5c, 0x70, - 0xa8, 0x68, 0x8e, 0x67, 0xff, 0x3a, 0xbc, 0x43, 0x16, 0x8b, 0x5c, 0xcf, - 0xee, 0x19, 0x28, 0x2f, 0xac, 0x7f, 0x42, 0x6b, 0xde, 0x40, 0xee, 0xc4, - 0xdf, 0x54, 0x3b, 0x31, 0xe5, 0xbe, 0x84, 0x3f, 0x0c, 0x93, 0x16, 0x08, - 0xb0, 0xa0, 0xee, 0xfb, 0xee, 0x32, 0x21, 0xd4, 0xea, 0xba, 0x98, 0x62, - 0x2d, 0x2e, 0x60, 0x72, 0x2f, 0x4f, 0xdb, 0xd3, 0x4e, 0x53, 0x9b, 0x85, - 0x12, 0xbf, 0xa2, 0x3b, 0x16, 0xe5, 0x9c, 0xb7, 0x8e, 0x0e, 0xbc, 0x05, - 0xeb, 0x1e, 0xb1, 0x71, 0x4f, 0x8d, 0x5d, 0x0c, 0x29, 0x5a, 0x9e, 0xf7, - 0x11, 0xb1, 0xd4, 0x1e, 0x7a, 0x2c, 0xe6, 0xec, 0x77, 0xde, 0x7d, 0xe1, - 0x62, 0x9d, 0xc3, 0x1f, 0x7f, 0x6d, 0xd3, 0xf4, 0x0b, 0x89, 0x1f, 0x0e, - 0x43, 0x5b, 0xd4, 0x5e, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x5b, 0xc7, 0x08, 0x1f, 0x6f, 0xcd, 0x31, 0x09, 0x8d, 0x14, 0xdd, 0xb5, - 0x17, 0xe7, 0x6d, 0x98, 0xc0, 0x1c, 0x36, 0x79, 0x1d, 0x13, 0x1c, 0xd5, - 0x72, 0x95, 0xe2, 0x2c, 0xf4, 0xd2, 0x35, 0x5a, 0xe5, 0x6f, 0x3d, 0xad, - 0xf1, 0x38, 0x50, 0x56, 0x9e, 0xe4, 0xb8, 0x12, 0x8d, 0x0f, 0x9e, 0xe8, - 0x43, 0x98, 0xd5, 0x95, 0x2d, 0x4a, 0xd0, 0x78, 0x37, 0xb9, 0x56, 0xd3, - 0x20, 0x59, 0xf9, 0x23, 0x06, 0x06, 0x7f, 0x89, 0x38, 0x21, 0x90, 0xa8, - 0x3e, 0x76, 0x2b, 0xa3, 0xc9, 0x60, 0x07, 0x94, 0x70, 0x68, 0x83, 0xaf, - 0xc4, 0x36, 0xdc, 0xb3, 0xc1, 0x31, 0xfb, 0xeb, 0x59, 0x79, 0xef, 0x2c, - 0x9f, 0x76, 0xac, 0x90, 0xf2, 0x36, 0xf1, 0x55, 0x61, 0x43, 0x34, 0xa5, - 0xba, 0x95, 0xcf, 0x94, 0xd0, 0x0d, 0x59, 0xb6, 0x26, 0x73, 0xb1, 0xc6, - 0x71, 0x73, 0x21, 0xe1, 0xa5, 0x07, 0x00, 0x53, 0xf0, 0xc8, 0xc6, 0xb7, - 0xa7, 0xa3, 0x2d, 0x0b, 0xd4, 0xb2, 0x95, 0x97, 0xcb, 0x1d, 0x24, 0x59, - 0x5b, 0xd4, 0x1f, 0x80, 0xde, 0x0a, 0x6d, 0xdf, 0x0f, 0x99, 0x6f, 0x22, - 0xd2, 0x36, 0x4e, 0x53, 0x6f, 0x39, 0x17, 0x49, 0x05, 0x13, 0x88, 0x3e, - 0xfd, 0xd4, 0x15, 0x3a, 0x2d, 0x2d, 0x14, 0x59, 0x44, 0x80, 0xca, 0x81, - 0x95, 0x1c, 0x41, 0x20, 0x3e, 0x05, 0xc1, 0x07, 0x1d, 0xac, 0xf3, 0x29, - 0xaf, 0x95, 0xa0, 0x09, 0x2b, 0xa0, 0x37, 0x9f, 0x7f, 0xb5, 0xac, 0x58, - 0x53, 0x7b, 0x4c, 0x9f, 0x20, 0xf3, 0x68, 0x2f, 0xcf, 0x9b, 0xd8, 0x2a, - 0x70, 0x54, 0xa5, 0x8b, 0x4a, 0xe3, 0x60, 0x1b, 0xf0, 0x9d, 0xaf, 0xb7, - 0xb9, 0x5a, 0xa2, 0x40, 0x9b, 0xad, 0x01, 0x90, 0x2b, 0x33, 0x71, 0xbb, - 0x67, 0x67, 0x35, 0xa1, 0xe6, 0x45, 0xe5, 0x46, 0x4c, 0x71, 0xbe, 0x22, - 0xe8, 0xa5, 0x06, 0x63, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x37, 0x4b, 0xc8, 0xa7, 0xa5, 0xa0, 0x0f, 0xb0, 0x5f, 0xb5, 0xe3, 0x39, - 0xd5, 0x8f, 0x65, 0x13, 0x12, 0xd5, 0x01, 0x75, 0x46, 0xc3, 0x40, 0x2f, - 0x17, 0xe0, 0xe3, 0x72, 0x14, 0x9f, 0xdc, 0x48, 0xd1, 0x67, 0x96, 0x46, - 0x00, 0xa8, 0x3a, 0x5a, 0x5b, 0x97, 0xc4, 0x8a, 0x62, 0xf3, 0x35, 0x37, - 0x4b, 0x71, 0x48, 0x37, 0x62, 0x94, 0x54, 0xb4, 0x19, 0x38, 0x72, 0x10, - 0x5d, 0x06, 0xe6, 0x08, 0x8f, 0xe1, 0x32, 0xad, 0x4e, 0x71, 0x21, 0xdc, - 0x8c, 0x24, 0x47, 0x9b, 0xf9, 0xc0, 0xe9, 0xef, 0x19, 0x74, 0x59, 0x70, - 0xc6, 0xd4, 0x6e, 0x9c, 0xe9, 0xbe, 0x7a, 0xf4, 0xb6, 0x5d, 0x90, 0x18, - 0x42, 0x08, 0x7c, 0xa8, 0x18, 0xed, 0x0f, 0x25, 0xa6, 0x08, 0x38, 0xf4, - 0x64, 0xea, 0x3e, 0xef, 0xd7, 0x64, 0xca, 0xbc, 0xe0, 0x95, 0x2f, 0x80, - 0x64, 0x72, 0x34, 0x4a, 0xa5, 0xfb, 0x2b, 0x3b, 0x15, 0xce, 0xdc, 0xee, - 0x20, 0x1a, 0xe3, 0x54, 0xa5, 0x0f, 0xc2, 0x5b, 0x49, 0x17, 0x8e, 0x32, - 0x48, 0x3b, 0x8c, 0xfc, 0xa6, 0x1d, 0xf5, 0x41, 0x3a, 0x92, 0x81, 0x03, - 0x64, 0x91, 0xbf, 0x63, 0x57, 0x79, 0x69, 0xeb, 0xa3, 0x41, 0xc9, 0xe3, - 0xa2, 0x5b, 0xb1, 0x7c, 0x68, 0x4f, 0x98, 0x2e, 0x98, 0x6d, 0x4f, 0x2f, - 0x12, 0x0d, 0xd4, 0x4c, 0x1b, 0x7f, 0x84, 0xe9, 0x02, 0x14, 0x05, 0x4f, - 0x93, 0x07, 0xda, 0x62, 0x37, 0x6a, 0xe9, 0x82, 0x20, 0x4b, 0xf4, 0x34, - 0x53, 0xdc, 0xcc, 0x02, 0x4c, 0x86, 0x14, 0x78, 0xd8, 0xaf, 0xde, 0xe7, - 0xb2, 0x59, 0xe8, 0x92, 0xb1, 0x1e, 0x84, 0x4c, 0xf2, 0x17, 0xc4, 0x19, - 0xf3, 0xa8, 0xac, 0x9e, 0xb8, 0x6f, 0x6f, 0x68, 0x72, 0xcb, 0xa4, 0x2f, - 0x71, 0xa1, 0x32, 0x5a, 0xa4, 0xca, 0x4d, 0xa3, 0xdd, 0x49, 0x8a, 0xe3, - 0xa9, 0x0f, 0x5a, 0x2d, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x79, 0xb5, 0xd0, 0x46, 0xa2, 0x42, 0x01, 0x4e, 0xe4, 0x33, 0x87, 0xff, - 0x2b, 0x34, 0x67, 0x3a, 0xd5, 0x3a, 0x39, 0x14, 0x9e, 0xeb, 0x32, 0xfc, - 0x8c, 0x3b, 0xec, 0x1d, 0x0c, 0x54, 0x44, 0x5d, 0xbf, 0x95, 0xe4, 0x77, - 0x71, 0x29, 0xfb, 0x11, 0xdf, 0xc3, 0xee, 0x5b, 0x2f, 0xc5, 0x25, 0x82, - 0xe9, 0x60, 0x27, 0x43, 0xf0, 0x31, 0xf6, 0xac, 0x5a, 0x10, 0xfd, 0xf6, - 0x81, 0x14, 0x90, 0x02, 0x51, 0x06, 0xf1, 0x08, 0x9e, 0x23, 0xe0, 0xb1, - 0xd6, 0x8e, 0xdf, 0x66, 0xe8, 0x5e, 0xa6, 0x7d, 0xa6, 0x22, 0x9d, 0xa6, - 0xd0, 0xf8, 0x25, 0xd9, 0x30, 0xc7, 0x0d, 0x35, 0x06, 0xeb, 0x68, 0x17, - 0x5e, 0x1e, 0xde, 0xdc, 0xea, 0xeb, 0x8b, 0x63, 0x1f, 0xbd, 0xe8, 0x60, - 0x3e, 0xf4, 0x3b, 0x71, 0xd1, 0xf3, 0xe6, 0xb8, 0xe7, 0xf7, 0xd9, 0x91, - 0xf9, 0x29, 0xcb, 0x98, 0x8f, 0x86, 0x57, 0x6b, 0xc8, 0xf0, 0xf0, 0x69, - 0xeb, 0x36, 0x97, 0x83, 0xe1, 0xa1, 0x9f, 0x51, 0x54, 0xdb, 0x8a, 0xae, - 0x24, 0xb6, 0x7d, 0xda, 0xb2, 0x60, 0x5a, 0x3c, 0xb4, 0xb0, 0xf6, 0x3b, - 0x1f, 0x46, 0xdd, 0x0b, 0x10, 0xb6, 0x25, 0x1f, 0x03, 0xc2, 0x74, 0x6c, - 0x9c, 0x59, 0x06, 0xf3, 0xf1, 0x14, 0x04, 0x53, 0xff, 0xd2, 0xb0, 0xcc, - 0x8e, 0x0e, 0x3e, 0x94, 0xb6, 0x9f, 0xac, 0xcc, 0x3f, 0xd3, 0x3d, 0x73, - 0x5f, 0x4e, 0xb9, 0xd1, 0x23, 0xc4, 0xcc, 0x52, 0xbd, 0x5d, 0x2a, 0x8a, - 0x4a, 0x88, 0x93, 0x28, 0x7b, 0xf6, 0x7f, 0xf8, 0xad, 0xc5, 0x27, 0xdd, - 0x61, 0x61, 0xa7, 0x2a, 0x6d, 0x1b, 0xfa, 0x55, 0xa1, 0x97, 0xfc, 0x97, - 0x05, 0xd2, 0x23, 0xe6, 0xec, 0x50, 0x34, 0xf7, 0x34, 0x98, 0xb4, 0xdc, - 0x95, 0x77, 0xb4, 0x21, 0xcc, 0x23, 0x43, 0x53, 0xcd, 0xcf, 0x2c, 0x74, - 0xc4, 0x46, 0x1b, 0x6a, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x43, 0xc2, 0x56, 0xad, 0xcd, 0xed, 0x36, 0x18, 0xf9, 0x00, 0x61, 0xbc, - 0xf2, 0x95, 0x2e, 0x7f, 0x0a, 0xde, 0x89, 0xd0, 0x5f, 0x4c, 0xb5, 0x01, - 0x07, 0x25, 0x10, 0x3c, 0x6b, 0x53, 0x3f, 0x35, 0x5f, 0xaf, 0xef, 0x22, - 0xac, 0x10, 0x5d, 0xb8, 0x4b, 0x71, 0xd3, 0x0a, 0xb2, 0xd9, 0xea, 0xdf, - 0x83, 0xa2, 0x4f, 0x11, 0x75, 0x0f, 0xd6, 0x94, 0xa0, 0x39, 0xd6, 0x34, - 0x79, 0x8b, 0x02, 0x4b, 0x3f, 0x97, 0x52, 0x01, 0x76, 0x6a, 0x66, 0x4b, - 0xd8, 0xec, 0x7a, 0x9f, 0xce, 0xaa, 0x89, 0x4c, 0x7b, 0x32, 0x45, 0x62, - 0xe2, 0x64, 0xa6, 0x95, 0xe0, 0x45, 0x23, 0x4a, 0x21, 0x7b, 0xe7, 0x33, - 0xfd, 0x31, 0xd0, 0x72, 0xe5, 0x92, 0x00, 0xe6, 0x3a, 0x88, 0xf2, 0xfe, - 0x3d, 0x0b, 0xf8, 0x37, 0xcc, 0xe2, 0x51, 0x12, 0x03, 0xd9, 0xa2, 0x48, - 0x84, 0xac, 0x7c, 0x68, 0xb4, 0x7e, 0xcf, 0x03, 0x8e, 0xab, 0xa9, 0x80, - 0x7f, 0x3e, 0xf0, 0xf3, 0x78, 0x87, 0x35, 0x56, 0x5f, 0x4f, 0x43, 0x3d, - 0x02, 0xc2, 0xdf, 0xd1, 0x5e, 0x84, 0x11, 0xeb, 0xfe, 0x3a, 0xb1, 0xa5, - 0xa2, 0x73, 0x63, 0x07, 0x3d, 0x8a, 0x50, 0xb0, 0xfc, 0xdb, 0xc1, 0xc5, - 0x42, 0x9c, 0x16, 0x4f, 0x22, 0x3a, 0xb0, 0x73, 0xad, 0x88, 0x80, 0x4e, - 0x7e, 0xb4, 0x80, 0xd2, 0xcc, 0xac, 0xe9, 0x30, 0xd1, 0xe0, 0xa3, 0x27, - 0x26, 0xe5, 0xf3, 0xd0, 0x9f, 0xab, 0x22, 0xd2, 0x04, 0x4e, 0xfb, 0xd2, - 0x12, 0xce, 0x56, 0xd7, 0x7f, 0x42, 0x89, 0xaa, 0x94, 0xce, 0x48, 0x8c, - 0x88, 0xfa, 0x9a, 0xa5, 0xe3, 0x0e, 0xca, 0x1b, 0xa1, 0x9a, 0x13, 0xe9, - 0x27, 0x75, 0x0f, 0x3b, 0xb9, 0x97, 0xcf, 0xe8, 0x68, 0xf8, 0x18, 0x98, - 0xab, 0x89, 0x43, 0x95, 0xc0, 0xf1, 0xdb, 0xe4, 0x1c, 0xba, 0xf7, 0xce, - 0xf8, 0xc2, 0xb8, 0x20, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x16, 0xe8, 0x6b, 0x26, 0x00, 0xad, 0x42, 0x05, 0x3e, 0x32, 0x7e, 0x1b, - 0x14, 0xf2, 0x55, 0x9a, 0x6d, 0xe9, 0x9b, 0x49, 0x50, 0x77, 0xa6, 0xeb, - 0x8f, 0x0b, 0x5e, 0xc5, 0x2b, 0x80, 0x6b, 0x05, 0x07, 0xf3, 0x0e, 0x66, - 0x54, 0x1d, 0xcc, 0xf2, 0x56, 0xcf, 0x5a, 0xdf, 0x96, 0x45, 0x6b, 0x56, - 0x23, 0x3c, 0x3f, 0x3e, 0x98, 0x82, 0x4b, 0xc0, 0x21, 0x81, 0xb8, 0xe7, - 0x0f, 0x98, 0x17, 0x52, 0xd8, 0x67, 0x7c, 0xd6, 0x7c, 0xc0, 0x10, 0xd6, - 0xc0, 0x80, 0x12, 0xf8, 0x85, 0x4d, 0x02, 0x8a, 0xe6, 0x2d, 0x6a, 0x73, - 0xc6, 0x8e, 0x03, 0x30, 0xd7, 0x5c, 0x22, 0x49, 0xc6, 0x0b, 0x80, 0x60, - 0xf8, 0xef, 0xa5, 0x18, 0xe5, 0x99, 0x42, 0x0f, 0xb8, 0x39, 0x7a, 0x25, - 0x3e, 0x3b, 0xe6, 0xdc, 0x44, 0xcc, 0xd2, 0x7d, 0xc5, 0xc5, 0x9c, 0xc2, - 0x54, 0x29, 0x3a, 0x3f, 0x1e, 0xec, 0x27, 0x05, 0x83, 0x8c, 0x41, 0xe5, - 0xdd, 0xc2, 0x3e, 0xc7, 0xb8, 0xd8, 0x21, 0xff, 0xdb, 0xb8, 0xe0, 0xbf, - 0x0f, 0x7e, 0x88, 0xe1, 0x62, 0x08, 0x20, 0xa1, 0xbd, 0xbf, 0x54, 0xc7, - 0x59, 0x9a, 0xaa, 0x07, 0x03, 0x7b, 0xd3, 0xb7, 0x7d, 0x5c, 0xd8, 0x27, - 0x7a, 0xb7, 0xd6, 0x73, 0x49, 0x8a, 0x8b, 0x48, 0x12, 0x2d, 0x7f, 0xfe, - 0xe3, 0xb2, 0x8e, 0x46, 0xed, 0x76, 0x1a, 0xaf, 0xf3, 0x9e, 0x2c, 0x46, - 0xdc, 0xca, 0xfb, 0x16, 0x54, 0x32, 0xcd, 0xb9, 0xdd, 0x0d, 0xf3, 0x36, - 0x3c, 0xb5, 0x78, 0x70, 0x61, 0x93, 0x5c, 0x9d, 0x47, 0x6d, 0xd2, 0xe0, - 0xa5, 0xe4, 0x2e, 0x3f, 0xa3, 0x11, 0xc0, 0x2e, 0x90, 0x29, 0xf1, 0x08, - 0x07, 0x2d, 0xcc, 0xfd, 0x1f, 0xb2, 0xb4, 0x60, 0xc6, 0x90, 0xdc, 0xa5, - 0xbe, 0xf1, 0x2a, 0x1d, 0xb4, 0x7e, 0xaa, 0x64, 0xb1, 0xa0, 0x87, 0x05, - 0x49, 0xe1, 0xb3, 0x60, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x66, 0xde, 0xa0, 0x6b, 0x01, 0x5e, 0xd2, 0x65, 0x18, 0x13, 0x3e, 0xcb, - 0x65, 0x68, 0x17, 0x30, 0xb5, 0x18, 0x5b, 0x6a, 0xad, 0x17, 0x8c, 0x2b, - 0x3e, 0xd9, 0xb5, 0x87, 0x46, 0x59, 0x52, 0x6a, 0xf1, 0xaf, 0x90, 0xa3, - 0x09, 0xe1, 0xd9, 0x73, 0x11, 0x73, 0x14, 0x1a, 0x86, 0xd7, 0x7f, 0x7d, - 0xfd, 0x22, 0x24, 0xf1, 0x2c, 0x06, 0x51, 0x67, 0xb3, 0xfd, 0xb3, 0x00, - 0xe5, 0xb2, 0xc8, 0x62, 0xe4, 0x92, 0x8e, 0x0a, 0x38, 0x34, 0x5d, 0x6a, - 0x96, 0x28, 0x2c, 0x09, 0x87, 0xea, 0x3a, 0x53, 0x7f, 0x6c, 0xec, 0xc9, - 0x10, 0xde, 0xde, 0x1c, 0xcf, 0xd3, 0x20, 0xdb, 0xc5, 0x9c, 0xf6, 0x35, - 0xda, 0xc1, 0x86, 0xac, 0xac, 0x1b, 0x10, 0xc1, 0xbc, 0x23, 0x69, 0x96, - 0xb6, 0xe4, 0xb4, 0x47, 0x40, 0x6a, 0x20, 0xfa, 0x3b, 0x35, 0xf4, 0x77, - 0x04, 0xc5, 0xcc, 0x99, 0xc8, 0xa4, 0x08, 0x2b, 0xb7, 0x75, 0x6d, 0x03, - 0x2f, 0xc8, 0xb4, 0xda, 0x53, 0x8f, 0xd4, 0xc6, 0xcd, 0x79, 0x58, 0xbd, - 0xb1, 0xeb, 0x22, 0xde, 0x86, 0x8c, 0x6c, 0x2f, 0xbf, 0x31, 0x2b, 0xb7, - 0xcf, 0xae, 0x79, 0x54, 0xca, 0xed, 0x6a, 0x1d, 0xb7, 0x53, 0x00, 0x8d, - 0x64, 0x93, 0x65, 0xc1, 0x61, 0x9f, 0x87, 0x20, 0x1c, 0x3f, 0x1f, 0x76, - 0x0d, 0x13, 0x28, 0x11, 0xa0, 0xca, 0x9e, 0x7f, 0xde, 0x92, 0xee, 0x0f, - 0x79, 0x5a, 0x8a, 0xbc, 0xe9, 0xf1, 0x86, 0x87, 0xfd, 0x05, 0x29, 0x1e, - 0x4f, 0xeb, 0xb7, 0xbe, 0xd3, 0x39, 0x45, 0x68, 0x8e, 0xb1, 0x1e, 0xef, - 0x8f, 0x80, 0xda, 0x6d, 0xf0, 0x4d, 0x40, 0x31, 0x8c, 0x5d, 0xbc, 0x0e, - 0x58, 0x8f, 0x7e, 0xdd, 0x5a, 0xd4, 0xfa, 0x85, 0xa3, 0xf5, 0xd9, 0x17, - 0x06, 0x17, 0x8d, 0xe3, 0x90, 0x0a, 0x48, 0x60, 0xfd, 0xa4, 0x65, 0xe6, - 0x52, 0x74, 0xc2, 0x3c, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xac, 0x8c, 0x4a, 0x2c, 0xd8, 0xcc, 0xe1, 0x2a, 0xeb, 0xac, 0xc8, 0x78, - 0xbd, 0xf8, 0x46, 0xbc, 0xd8, 0xdb, 0x0a, 0x1f, 0xba, 0x6c, 0x65, 0xd3, - 0xbd, 0x2c, 0x29, 0x6d, 0x47, 0x7e, 0x03, 0x57, 0x9f, 0x7b, 0xb6, 0x0b, - 0x27, 0xc4, 0x09, 0xb2, 0x8a, 0xb8, 0x7f, 0x77, 0xb8, 0xaa, 0x00, 0xd9, - 0x54, 0xdb, 0xa7, 0xb4, 0x88, 0x2b, 0x19, 0xa4, 0x3e, 0xf6, 0xa1, 0x4d, - 0xc7, 0x06, 0xd4, 0x36, 0xa2, 0xfe, 0x5c, 0x0c, 0x66, 0x2c, 0xc8, 0x0e, - 0x8a, 0x24, 0xd9, 0x45, 0xc0, 0x0e, 0x63, 0x70, 0xe0, 0x6f, 0x6c, 0x5a, - 0xa1, 0x75, 0x34, 0x84, 0x7f, 0xe4, 0x35, 0xde, 0x3c, 0xad, 0x99, 0x10, - 0xaf, 0xa8, 0xc3, 0x70, 0xb4, 0x50, 0x8c, 0xac, 0xf6, 0xb0, 0xff, 0x3f, - 0xa1, 0x12, 0x03, 0xd4, 0xbd, 0xb2, 0x60, 0x96, 0x1c, 0x52, 0xf3, 0xb3, - 0x97, 0x7d, 0x33, 0x64, 0x22, 0xad, 0xca, 0x45, 0x89, 0xcb, 0x5c, 0x1c, - 0xcf, 0xd5, 0x61, 0xf3, 0x5b, 0x07, 0xb9, 0x06, 0xb1, 0x0b, 0x7b, 0xa1, - 0x3d, 0xba, 0xb1, 0x25, 0xd4, 0x55, 0x86, 0x01, 0x83, 0x92, 0x0b, 0x22, - 0xb4, 0x47, 0x66, 0x55, 0xea, 0x9f, 0x6c, 0x80, 0x60, 0xf5, 0x09, 0x67, - 0x99, 0x19, 0xf5, 0x48, 0xc0, 0x52, 0x99, 0x66, 0x24, 0x94, 0xff, 0x40, - 0x55, 0x73, 0x65, 0x24, 0xe2, 0x49, 0x28, 0xe9, 0x21, 0x27, 0xaf, 0x34, - 0x34, 0x26, 0x36, 0xed, 0x6a, 0x01, 0x40, 0x85, 0xe9, 0x98, 0x88, 0xed, - 0xae, 0xb7, 0x02, 0x5a, 0xee, 0xa3, 0x0d, 0x7f, 0x56, 0xd0, 0x1a, 0x2f, - 0x4d, 0x45, 0xdb, 0xe2, 0x20, 0xc5, 0x7d, 0x04, 0x53, 0x57, 0x0e, 0x2b, - 0xc5, 0x95, 0xf6, 0x76, 0x90, 0x82, 0xed, 0xeb, 0xb9, 0xea, 0x71, 0x95, - 0x42, 0x83, 0xa0, 0x5a, 0xee, 0x64, 0x8a, 0xac, 0x85, 0x94, 0x29, 0x09, - 0x13, 0x41, 0x8b, 0x22, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x92, 0x54, 0x2a, 0xe9, 0xf9, 0x6e, 0x71, 0x73, 0x03, 0x93, 0xe7, 0x64, - 0xa5, 0x65, 0x7d, 0x9e, 0x47, 0xd3, 0xf9, 0x2d, 0x36, 0x3e, 0x04, 0x60, - 0x81, 0xe2, 0x6a, 0x5f, 0x7d, 0x2b, 0x6a, 0x2a, 0x2b, 0x20, 0xd5, 0xdd, - 0x4a, 0xf5, 0x1f, 0x50, 0x6d, 0x65, 0xcf, 0xe3, 0x9b, 0x80, 0x6e, 0xa6, - 0xba, 0x51, 0x91, 0x28, 0xb6, 0xd6, 0xef, 0xf2, 0x26, 0xf0, 0xeb, 0x02, - 0x7b, 0xa8, 0x81, 0x4a, 0xac, 0xbc, 0xc0, 0x45, 0x9a, 0x3b, 0x31, 0x45, - 0xef, 0x14, 0x4f, 0x43, 0xfc, 0x72, 0x54, 0x1d, 0x57, 0x0c, 0x3c, 0x9f, - 0x5d, 0x26, 0xe5, 0x28, 0x57, 0x2b, 0x70, 0x99, 0x4b, 0x47, 0xda, 0x04, - 0xe5, 0xce, 0x3c, 0x3b, 0x3b, 0x41, 0x55, 0x0a, 0x1c, 0xa6, 0xd3, 0x92, - 0xca, 0xf9, 0x23, 0xf4, 0xc0, 0x2d, 0xee, 0x05, 0x27, 0x50, 0xef, 0x4a, - 0x94, 0xd8, 0xd5, 0x69, 0x5f, 0x8c, 0x3f, 0x16, 0x8f, 0x62, 0x8a, 0x5c, - 0x2d, 0x23, 0x27, 0x0b, 0x55, 0xd1, 0x0c, 0x59, 0xfa, 0x06, 0x42, 0x69, - 0x6c, 0xd5, 0xb1, 0xd8, 0xe5, 0x12, 0x5f, 0x2c, 0x35, 0x30, 0xd9, 0xbc, - 0xcf, 0xe9, 0x07, 0x2c, 0x52, 0xd6, 0x6e, 0xd2, 0x9d, 0xb1, 0xad, 0x59, - 0x20, 0xe1, 0x45, 0x4a, 0xcc, 0x08, 0x00, 0xf1, 0x46, 0xe4, 0x7c, 0x3e, - 0x41, 0xd6, 0xb6, 0x35, 0x3b, 0x61, 0x6e, 0x0e, 0x92, 0x29, 0x22, 0x26, - 0x55, 0x8a, 0xe6, 0xc5, 0x89, 0xf7, 0x0a, 0x3a, 0x9c, 0xe4, 0xf5, 0xd8, - 0xcb, 0xb4, 0x28, 0x93, 0xf8, 0xfa, 0x91, 0x60, 0xed, 0x23, 0xc1, 0xff, - 0x1e, 0x65, 0xb0, 0xa6, 0x92, 0xf2, 0xab, 0x14, 0x9c, 0x2c, 0xb7, 0x82, - 0x97, 0xa9, 0xd6, 0xe3, 0xbc, 0x4a, 0x7a, 0x4b, 0x12, 0xbe, 0x46, 0xe3, - 0x0a, 0xe4, 0x0f, 0xee, 0xe1, 0x38, 0x7a, 0xa9, 0xf8, 0x91, 0x75, 0x25, - 0xc2, 0x39, 0x91, 0x05, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xf6, 0x19, 0x0a, 0x26, 0x31, 0x24, 0x45, 0x4c, 0xba, 0x15, 0x31, 0x4a, - 0x58, 0x16, 0x2e, 0xd7, 0x92, 0x8d, 0xc4, 0x2e, 0x27, 0x70, 0xc6, 0x36, - 0xbe, 0xc6, 0x50, 0xa8, 0x16, 0x06, 0x5c, 0x56, 0x08, 0x6b, 0x25, 0xde, - 0x11, 0x40, 0x72, 0xdd, 0x07, 0xcf, 0x01, 0xed, 0x75, 0xb9, 0x65, 0x5f, - 0x87, 0xfd, 0xb6, 0xe2, 0x2a, 0xc9, 0xe2, 0x3f, 0x8b, 0x0a, 0x85, 0xb0, - 0xe1, 0xd0, 0xe2, 0x47, 0xe0, 0x7d, 0x38, 0x02, 0x4f, 0x36, 0x78, 0xf9, - 0x6d, 0xa5, 0xd4, 0x73, 0xf9, 0xc3, 0x95, 0x7a, 0x5f, 0xef, 0xac, 0x29, - 0x6d, 0x2c, 0x69, 0xbf, 0xf7, 0x4d, 0x32, 0xc7, 0xe5, 0x97, 0x0a, 0x03, - 0x2d, 0x42, 0xea, 0xef, 0x53, 0x57, 0xfb, 0x82, 0xfe, 0xaf, 0x55, 0x3b, - 0xa6, 0x44, 0xdf, 0x7b, 0x0c, 0x1a, 0xc3, 0x71, 0x81, 0xd6, 0xf8, 0xf9, - 0x70, 0xbd, 0x9a, 0x3c, 0x9a, 0xbb, 0xb5, 0x71, 0xd0, 0xbd, 0xa0, 0xb7, - 0x86, 0x55, 0x96, 0xc4, 0x5c, 0xb5, 0xaa, 0xa8, 0x2b, 0x6e, 0x8b, 0x26, - 0x4c, 0xd5, 0x30, 0x51, 0xf2, 0xe2, 0x3c, 0x9b, 0x8e, 0xb7, 0x8f, 0xec, - 0x57, 0x62, 0x12, 0x05, 0xde, 0x53, 0x62, 0xe0, 0x5f, 0x99, 0x53, 0x94, - 0xfc, 0xdb, 0x1f, 0x6e, 0x88, 0x27, 0x2b, 0xf5, 0x60, 0xd3, 0xca, 0x1c, - 0xd5, 0x0e, 0xb6, 0xec, 0x62, 0x69, 0xb7, 0xc0, 0x69, 0xa4, 0xdf, 0x27, - 0x05, 0xdb, 0x24, 0x0c, 0xd6, 0x8a, 0x61, 0x8a, 0x1c, 0x58, 0xf6, 0xfa, - 0xeb, 0x5b, 0xa6, 0xb0, 0xee, 0x63, 0xe4, 0x3e, 0x26, 0x1d, 0xd9, 0x1a, - 0x51, 0xe2, 0xd5, 0x33, 0x87, 0x94, 0x73, 0x5f, 0xd5, 0x94, 0x6c, 0x45, - 0xdb, 0x9a, 0xd3, 0x56, 0x73, 0x91, 0x43, 0xb6, 0xd1, 0x3a, 0xe2, 0xb8, - 0xb7, 0x89, 0xec, 0x83, 0x6a, 0x6a, 0xef, 0xbb, 0xfd, 0xef, 0x53, 0xb9, - 0x1b, 0xd9, 0x1b, 0x3b, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x25, 0x09, 0xcb, 0xfc, 0x8b, 0x75, 0xd2, 0x8a, 0x00, 0x77, 0xcf, 0xd9, - 0xfb, 0xe7, 0x53, 0x26, 0x37, 0x55, 0x16, 0x03, 0x3c, 0xa0, 0xc4, 0x78, - 0xcc, 0x97, 0x4d, 0xa6, 0x82, 0x58, 0x22, 0x0b, 0xbb, 0xac, 0xe9, 0xbe, - 0x00, 0x04, 0xc9, 0xcf, 0x48, 0xb8, 0x15, 0xfc, 0xfa, 0xde, 0x18, 0x41, - 0xd9, 0x06, 0x02, 0x5d, 0x74, 0x41, 0x1c, 0xf7, 0xfa, 0x72, 0xc2, 0x83, - 0xad, 0xae, 0xe3, 0x11, 0xe8, 0xa1, 0x24, 0xfa, 0xc8, 0x3c, 0xc2, 0x2e, - 0x39, 0x0a, 0x6a, 0x1c, 0xfa, 0xba, 0x56, 0xb9, 0x5d, 0x17, 0x8e, 0x8e, - 0x48, 0xf8, 0x38, 0xd2, 0xf3, 0xd4, 0x94, 0x29, 0x51, 0x4c, 0xb7, 0x00, - 0x8a, 0x92, 0x5a, 0xce, 0xe4, 0x75, 0x69, 0xdf, 0x11, 0xd8, 0x0a, 0xd1, - 0x86, 0xdc, 0x8e, 0x9e, 0xbd, 0x99, 0x37, 0x5e, 0xc2, 0xaa, 0xdb, 0x06, - 0x06, 0x7f, 0x07, 0x38, 0xd6, 0x4f, 0x68, 0x47, 0x2f, 0xa5, 0xd9, 0xb0, - 0xe4, 0xf9, 0xec, 0x88, 0xe4, 0x93, 0xb0, 0x22, 0xfb, 0x33, 0x36, 0xd2, - 0x7d, 0xfb, 0xba, 0x13, 0xab, 0x8c, 0xc0, 0x71, 0xa0, 0x79, 0xf2, 0x9a, - 0x2a, 0xaf, 0x4f, 0x4a, 0x0a, 0x40, 0xe1, 0x82, 0x07, 0xe0, 0xe9, 0x37, - 0xf1, 0x92, 0x96, 0x73, 0xb3, 0x59, 0x27, 0x38, 0x05, 0x0e, 0x61, 0x2f, - 0xf4, 0x36, 0x69, 0x9e, 0x63, 0x9e, 0x35, 0x7b, 0xe0, 0x9e, 0xf4, 0x55, - 0x6a, 0x7f, 0x8e, 0x1d, 0xdf, 0x6f, 0x43, 0x25, 0x54, 0x87, 0x9b, 0x05, - 0x09, 0xb7, 0x4e, 0x16, 0x8c, 0x27, 0xd8, 0xe7, 0xea, 0xb4, 0xa8, 0xaf, - 0xf3, 0x5e, 0x0d, 0x50, 0x27, 0x48, 0x9b, 0x4d, 0xc3, 0xee, 0x2d, 0xea, - 0x1c, 0x2a, 0x86, 0x9e, 0x9c, 0xe2, 0x2f, 0x82, 0x8d, 0xd2, 0xc7, 0xb9, - 0xf5, 0xfe, 0x6b, 0xbd, 0xbe, 0x61, 0x5d, 0x58, 0x3b, 0xed, 0x62, 0x2e, - 0x37, 0x4d, 0x59, 0x4f, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xff, 0x9a, 0x3e, 0x35, 0xb1, 0x7a, 0x41, 0xca, 0x0b, 0x17, 0x98, 0xfd, - 0xae, 0x69, 0x83, 0x03, 0x14, 0x79, 0x38, 0xd5, 0xfc, 0xa3, 0xcb, 0xb7, - 0xc9, 0x93, 0xcc, 0xb3, 0x91, 0x06, 0xb5, 0x27, 0xd5, 0x09, 0x9b, 0xca, - 0x23, 0x66, 0xef, 0x9d, 0x67, 0xa7, 0x72, 0x23, 0x2e, 0x45, 0x00, 0xdf, - 0x4c, 0x40, 0x90, 0x51, 0xc3, 0xb0, 0xb6, 0x47, 0xb6, 0x05, 0x44, 0xc1, - 0xf9, 0xfe, 0x9b, 0x18, 0xbc, 0x4b, 0x7c, 0x9e, 0xac, 0x49, 0xb6, 0x68, - 0xae, 0x72, 0x3b, 0xed, 0x1b, 0xc8, 0x53, 0xba, 0x17, 0x26, 0xb5, 0xf7, - 0x4f, 0xd6, 0x3c, 0xbd, 0xa7, 0x21, 0x3a, 0x85, 0x39, 0x67, 0x70, 0x3e, - 0x8c, 0x66, 0x97, 0x91, 0x7c, 0x85, 0x30, 0xa6, 0xc2, 0xe4, 0x01, 0x29, - 0x24, 0xf4, 0x26, 0x81, 0x44, 0x41, 0x28, 0x61, 0x7c, 0x2f, 0x6d, 0x43, - 0x40, 0x52, 0x78, 0xfd, 0x25, 0x61, 0x36, 0x00, 0x78, 0x49, 0xf8, 0x05, - 0x57, 0xb8, 0x41, 0x47, 0x08, 0x24, 0xc3, 0x14, 0xa1, 0x26, 0x2f, 0x14, - 0x4d, 0x64, 0xa1, 0xb1, 0xd5, 0xe0, 0xd4, 0x13, 0x07, 0x3c, 0x36, 0xca, - 0xf7, 0xc7, 0x11, 0x46, 0x54, 0xd8, 0x76, 0xf1, 0xce, 0xf7, 0xa0, 0xdf, - 0x1b, 0x22, 0xbe, 0xc2, 0xf1, 0xa7, 0xc5, 0x39, 0xff, 0xa8, 0xf5, 0x3c, - 0x73, 0x92, 0x64, 0x56, 0xd5, 0xf1, 0x8c, 0x74, 0xad, 0x39, 0xa2, 0x61, - 0x95, 0x6f, 0xa1, 0x61, 0x01, 0x06, 0xe8, 0xd6, 0x8a, 0x1b, 0x0d, 0x0d, - 0x70, 0xa0, 0x99, 0xaf, 0x06, 0x84, 0x5a, 0x49, 0x85, 0xf3, 0x7f, 0x1c, - 0x90, 0xda, 0x03, 0x3b, 0x10, 0x54, 0x6c, 0x41, 0x9b, 0x08, 0xe3, 0x53, - 0x2b, 0x7f, 0x81, 0x04, 0x8b, 0xde, 0xdd, 0x9d, 0x03, 0xf4, 0xb6, 0xcc, - 0x7e, 0x95, 0x2f, 0x79, 0xa8, 0xf1, 0xc7, 0xc4, 0xc4, 0x18, 0xa7, 0xa3, - 0x17, 0x39, 0xf9, 0x5e, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xc1, 0x6a, 0x42, 0xcb, 0x0c, 0xa2, 0xd6, 0xfc, 0x60, 0xe8, 0x7f, 0x4c, - 0x45, 0x81, 0x28, 0x92, 0x8f, 0x2d, 0xf8, 0xf5, 0xcb, 0x6f, 0x26, 0x70, - 0x11, 0x7c, 0xd7, 0x4c, 0x1e, 0x56, 0x53, 0x47, 0x23, 0x84, 0xf9, 0x40, - 0x44, 0xf6, 0xe3, 0x92, 0x71, 0x84, 0x19, 0x76, 0xd8, 0x28, 0x5f, 0x04, - 0xda, 0x40, 0x3a, 0x7a, 0x7d, 0xff, 0x6f, 0x15, 0x66, 0xb4, 0x9d, 0x60, - 0xd6, 0x25, 0x1a, 0x4e, 0x95, 0x76, 0x69, 0x0d, 0x69, 0x1a, 0x4b, 0xa4, - 0xce, 0xd7, 0xc6, 0x9c, 0x58, 0x13, 0x8b, 0x2a, 0xd1, 0xc5, 0x9a, 0x1b, - 0xb5, 0xea, 0x5b, 0x89, 0x86, 0x4e, 0xe6, 0xf4, 0x31, 0xfd, 0x4c, 0x2c, - 0x2e, 0xbb, 0x4c, 0xae, 0x37, 0xbc, 0xbd, 0x8a, 0x3c, 0xb4, 0x1f, 0x1b, - 0x9d, 0x26, 0x31, 0x84, 0xe5, 0xe5, 0xc5, 0x33, 0xd4, 0xdc, 0xa0, 0x01, - 0x59, 0x83, 0x24, 0x53, 0xd0, 0xdb, 0x0f, 0x69, 0x82, 0xe8, 0x5f, 0x9d, - 0x02, 0x3f, 0x37, 0x5d, 0x33, 0xed, 0x54, 0x0c, 0x7c, 0x31, 0xff, 0x97, - 0x4f, 0xd1, 0x7b, 0x13, 0xfa, 0x6a, 0xb9, 0xee, 0x76, 0x46, 0x73, 0x88, - 0x89, 0xa2, 0xb9, 0x59, 0x44, 0x68, 0x04, 0x46, 0x33, 0x24, 0x6f, 0x5b, - 0xf9, 0xb9, 0x90, 0x4f, 0x8f, 0xf5, 0xe6, 0xe0, 0xc9, 0xd8, 0xb7, 0xfe, - 0xc5, 0xfe, 0x6e, 0x62, 0x42, 0xd7, 0xcf, 0x74, 0x8e, 0x2d, 0x1b, 0x46, - 0x80, 0x90, 0xc2, 0x9f, 0xc5, 0x18, 0xd2, 0xde, 0x93, 0x61, 0x5b, 0x95, - 0x0d, 0xcc, 0x17, 0xd4, 0x1b, 0xb0, 0xf9, 0x45, 0xe2, 0x67, 0xfe, 0x47, - 0x69, 0x9d, 0x93, 0x8a, 0x27, 0x36, 0x6d, 0x04, 0xa2, 0x6f, 0x1d, 0xe3, - 0xb7, 0x56, 0xe9, 0xb1, 0xec, 0xe9, 0xc2, 0x3d, 0x48, 0x2b, 0xd5, 0xab, - 0x90, 0x08, 0x96, 0x49, 0x41, 0xb4, 0x9d, 0x76, 0xfa, 0xcf, 0x9d, 0x9e, - 0x63, 0x5d, 0xb2, 0x5b, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x3b, 0x77, 0x95, 0xab, 0x53, 0x61, 0x10, 0x1a, 0x22, 0x0b, 0xff, 0x58, - 0x0c, 0x64, 0x99, 0x86, 0x2f, 0x97, 0x2c, 0xd6, 0x10, 0x28, 0x8b, 0xb3, - 0x5c, 0x8d, 0xa2, 0x86, 0xcc, 0xd6, 0x9f, 0x3b, 0xae, 0x6a, 0xe4, 0x88, - 0x1f, 0xa9, 0x3d, 0x04, 0xa9, 0xaa, 0xe8, 0x81, 0xe5, 0xd3, 0xcb, 0x21, - 0xb0, 0x47, 0x46, 0x5d, 0x0e, 0x8b, 0xb1, 0x81, 0x87, 0x19, 0x29, 0x4d, - 0x9b, 0x5e, 0x6d, 0x45, 0x85, 0xd3, 0xce, 0xf3, 0x6a, 0x28, 0x67, 0x32, - 0xb6, 0xf2, 0x90, 0x46, 0x37, 0x4a, 0x47, 0x26, 0x30, 0x6d, 0x03, 0x4f, - 0x5f, 0xa9, 0xef, 0x89, 0x1b, 0xb9, 0x94, 0x04, 0xf2, 0xd2, 0x69, 0x3f, - 0x8a, 0x69, 0xda, 0xdc, 0x3e, 0x6d, 0x83, 0xd4, 0x66, 0x0f, 0x47, 0xaa, - 0xb2, 0xc5, 0x3d, 0x40, 0x08, 0x5b, 0xf6, 0x92, 0xf5, 0xde, 0x57, 0xb4, - 0x18, 0x61, 0x36, 0x60, 0x6e, 0x4c, 0xc5, 0x3f, 0xd1, 0x62, 0x39, 0x0f, - 0x19, 0xf2, 0x2a, 0xec, 0x5c, 0x05, 0xb3, 0x81, 0xbe, 0x09, 0xf2, 0xf8, - 0x05, 0xd5, 0x0e, 0x04, 0x25, 0x26, 0xfb, 0x4f, 0x82, 0xa7, 0xc7, 0xe6, - 0x31, 0x2f, 0x7d, 0x1f, 0x0f, 0x23, 0xec, 0xf9, 0x7b, 0x91, 0xbe, 0x8a, - 0x95, 0xa1, 0xe2, 0x13, 0x01, 0x27, 0xdd, 0x80, 0x03, 0x68, 0xdc, 0x8a, - 0x83, 0xf0, 0xf7, 0x2c, 0xb6, 0x11, 0x28, 0x42, 0x38, 0xb4, 0x06, 0x4f, - 0x0a, 0x99, 0x5a, 0x21, 0x4f, 0x0c, 0xc0, 0xc7, 0xac, 0x18, 0x28, 0xb4, - 0x27, 0x64, 0xee, 0x77, 0xc1, 0xcd, 0x97, 0xdb, 0x2e, 0xa2, 0x52, 0x19, - 0x6f, 0xd4, 0xdf, 0xc1, 0x9f, 0xe0, 0xc3, 0x26, 0x7c, 0x0f, 0x54, 0xe5, - 0x4a, 0xbc, 0x35, 0xbb, 0x1c, 0x55, 0xc4, 0x8f, 0x85, 0xf8, 0x34, 0xea, - 0xc5, 0x06, 0x3f, 0x1f, 0xd9, 0x7d, 0x79, 0x71, 0xc2, 0x36, 0xb7, 0xc5, - 0x75, 0x0a, 0x63, 0x53, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x12, 0x10, 0xc1, 0x44, 0xd4, 0x43, 0x70, 0x54, 0xa4, 0x4d, 0x76, 0xe5, - 0xa2, 0x4d, 0x7d, 0x50, 0x41, 0xf8, 0x30, 0xaa, 0xd7, 0x61, 0xda, 0x52, - 0x18, 0x58, 0xcf, 0x2d, 0x74, 0x07, 0x34, 0x57, 0xe1, 0xf3, 0x02, 0x9d, - 0x06, 0xec, 0x57, 0xda, 0xcb, 0x6b, 0x8d, 0x52, 0x2a, 0xb4, 0xb3, 0x39, - 0x74, 0x56, 0x5a, 0x6a, 0x88, 0x8c, 0x15, 0x96, 0x2d, 0x75, 0x41, 0x4d, - 0x35, 0xed, 0x44, 0x10, 0xd5, 0xdd, 0x49, 0xc8, 0x8e, 0x53, 0xd1, 0x9f, - 0x26, 0x60, 0x4d, 0xe2, 0xca, 0x6a, 0x59, 0xdb, 0x57, 0xde, 0xaa, 0x78, - 0xdf, 0xb5, 0x5c, 0x1d, 0x0a, 0xa8, 0x2d, 0xd0, 0x10, 0xd2, 0xcf, 0x40, - 0x2f, 0x7d, 0xb1, 0xb1, 0x3c, 0x9f, 0xb8, 0x91, 0xe5, 0x40, 0x25, 0x69, - 0xab, 0x20, 0xd2, 0x8a, 0xeb, 0x78, 0x06, 0x1a, 0xd1, 0x6a, 0x24, 0xe6, - 0xa2, 0xf8, 0x5c, 0x88, 0x17, 0x7d, 0x3f, 0x6d, 0x93, 0xf3, 0x0f, 0x8d, - 0xfc, 0x20, 0xf4, 0xfd, 0x07, 0xc7, 0x6f, 0x62, 0x19, 0x1b, 0x31, 0xf4, - 0x7d, 0x29, 0x38, 0xed, 0xdb, 0x06, 0x83, 0xfb, 0x0d, 0x7c, 0x70, 0xa9, - 0x91, 0xa2, 0xac, 0x72, 0x3b, 0xc1, 0x14, 0xd4, 0x2b, 0xe4, 0x11, 0xbe, - 0x58, 0xc1, 0x76, 0x96, 0x85, 0x52, 0xac, 0x57, 0xd7, 0xea, 0xdc, 0x3b, - 0x1c, 0xbe, 0x1f, 0xa3, 0x5e, 0xee, 0x8d, 0xf0, 0x3a, 0xa0, 0x57, 0x11, - 0x95, 0xbf, 0x3c, 0x8c, 0x0e, 0x4c, 0x23, 0x84, 0x8b, 0x57, 0xab, 0x4f, - 0x05, 0x67, 0x05, 0xa7, 0x3b, 0x16, 0xf7, 0x2a, 0xca, 0x8c, 0x71, 0x4f, - 0x9e, 0xc4, 0x7c, 0xf7, 0xb5, 0x0b, 0x39, 0x62, 0x39, 0x95, 0x06, 0x38, - 0xe5, 0xc4, 0xfc, 0xae, 0x43, 0x96, 0x09, 0xc1, 0x0b, 0xc8, 0xa5, 0x72, - 0x2e, 0xf9, 0xb3, 0xa0, 0x3e, 0x56, 0x2a, 0x23, 0x7e, 0xc1, 0xec, 0x01, - 0xbd, 0x4f, 0x3c, 0x1a, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x50, 0xdd, 0xac, 0xe5, 0xfc, 0x85, 0x69, 0x69, 0x40, 0xa4, 0xb6, 0x78, - 0x8a, 0xa3, 0x81, 0x62, 0xd4, 0xcf, 0x5a, 0x54, 0x2d, 0xcd, 0x5d, 0x5d, - 0x44, 0xd0, 0x8a, 0x68, 0x5b, 0x57, 0x8b, 0x2d, 0xed, 0x6d, 0xbd, 0x7e, - 0x34, 0x55, 0xa1, 0x82, 0x86, 0x8e, 0x09, 0x82, 0x59, 0x3a, 0xef, 0x80, - 0x94, 0x84, 0x0e, 0xc7, 0xc0, 0x15, 0xec, 0x64, 0x95, 0x21, 0x1e, 0x8b, - 0xa6, 0x4c, 0x94, 0x06, 0x45, 0x8f, 0x83, 0x66, 0xdb, 0xfa, 0x4b, 0x64, - 0x79, 0x00, 0x49, 0x72, 0x9f, 0xff, 0xb9, 0x1f, 0x58, 0x40, 0xdf, 0xf4, - 0xd9, 0xe9, 0xae, 0x86, 0x07, 0x62, 0xe4, 0xc7, 0x30, 0xac, 0x1d, 0x2b, - 0xf3, 0x7f, 0xed, 0x10, 0x52, 0xc5, 0x7c, 0x1f, 0x29, 0x84, 0xc4, 0x59, - 0x11, 0xa4, 0x42, 0x87, 0xae, 0x91, 0x69, 0x05, 0x16, 0x8a, 0x46, 0x92, - 0x66, 0xdf, 0xfb, 0x49, 0x65, 0x2e, 0x17, 0x4d, 0x85, 0x96, 0x0e, 0xff, - 0x84, 0xf5, 0xa3, 0x8a, 0x9c, 0xfd, 0xda, 0xbf, 0x13, 0xdc, 0xc8, 0x3c, - 0xb8, 0xdb, 0xc8, 0xd8, 0x03, 0x87, 0x75, 0xdb, 0x04, 0x85, 0x46, 0x84, - 0xe7, 0xc2, 0x87, 0x23, 0xac, 0x91, 0xe1, 0x86, 0xd3, 0xff, 0x7c, 0xa6, - 0x6b, 0x26, 0xc9, 0x72, 0x38, 0xb7, 0x18, 0xcd, 0x35, 0x47, 0x41, 0x8b, - 0x03, 0xd4, 0x6b, 0x62, 0x9c, 0x2f, 0xfc, 0x72, 0x8c, 0xa8, 0x6b, 0x0c, - 0xd8, 0xc9, 0x96, 0x52, 0x61, 0x95, 0x44, 0x7f, 0xfb, 0xc1, 0xc3, 0x0c, - 0x41, 0x25, 0x5c, 0x4c, 0xae, 0xd6, 0x65, 0xcc, 0x55, 0x4a, 0x27, 0x87, - 0x19, 0x24, 0x01, 0x62, 0xc0, 0x41, 0x26, 0x3d, 0xe1, 0xb9, 0x2c, 0xe4, - 0xbd, 0x9b, 0x36, 0x18, 0x5e, 0xad, 0x9b, 0x24, 0xe1, 0x18, 0xd8, 0x3d, - 0x3b, 0x17, 0x9e, 0xec, 0xba, 0x1f, 0x94, 0x79, 0xe2, 0xc7, 0x05, 0xc7, - 0xb5, 0x2a, 0x88, 0x72, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xd9, 0xce, 0x27, 0x92, 0x66, 0x87, 0xdc, 0x72, 0xfc, 0xa7, 0x79, 0x57, - 0xf4, 0x14, 0xfb, 0x80, 0x72, 0x14, 0x3c, 0x79, 0x40, 0xa2, 0xe4, 0xe8, - 0xec, 0x09, 0x9a, 0xba, 0x31, 0x23, 0x08, 0x5e, 0x09, 0x84, 0xa5, 0xd6, - 0xd6, 0x7e, 0x9b, 0x74, 0x8e, 0xed, 0x9b, 0x70, 0x8f, 0x32, 0x5c, 0x2f, - 0x2f, 0xe2, 0x94, 0x65, 0x93, 0x46, 0x71, 0xcf, 0x5f, 0xf9, 0xc8, 0x9f, - 0x61, 0xee, 0xbd, 0x1e, 0x22, 0x86, 0x3a, 0x98, 0x32, 0xfc, 0x94, 0xc4, - 0xfe, 0xa3, 0x8d, 0x52, 0x99, 0xfc, 0xef, 0xc5, 0x1d, 0xb7, 0xc4, 0xb4, - 0xa4, 0xf6, 0x4d, 0x27, 0x64, 0x99, 0x3f, 0x1c, 0xf7, 0x21, 0xab, 0x57, - 0x5d, 0xe8, 0xd7, 0x68, 0xaa, 0x07, 0x67, 0x48, 0x72, 0x62, 0xe7, 0xbc, - 0xcd, 0x5c, 0xc0, 0xb9, 0xdf, 0x75, 0x85, 0x75, 0x2a, 0x89, 0x34, 0xd1, - 0x20, 0x32, 0x2f, 0x5d, 0x4f, 0xa0, 0x52, 0x71, 0xd9, 0x93, 0x29, 0x5d, - 0x60, 0x9e, 0x47, 0x2c, 0xfb, 0x1e, 0xe4, 0x09, 0x47, 0x29, 0x51, 0xd7, - 0xb2, 0xf6, 0x12, 0xb8, 0x29, 0x18, 0x91, 0xe0, 0x85, 0x4d, 0xee, 0x28, - 0xd5, 0x45, 0x55, 0x4a, 0x1e, 0x1b, 0xa6, 0x7d, 0x3a, 0x44, 0xe9, 0x23, - 0x7a, 0xd6, 0x78, 0xf6, 0x4c, 0xd8, 0xe4, 0x7f, 0xb9, 0x7e, 0x8d, 0xac, - 0x7e, 0xe8, 0x7a, 0x16, 0xf9, 0x44, 0x6b, 0x4b, 0x8d, 0xf1, 0xd6, 0x71, - 0xde, 0xf4, 0x86, 0x8e, 0xbb, 0x5b, 0xe5, 0xaa, 0xf7, 0x7a, 0x53, 0x4a, - 0xbc, 0x2a, 0x1b, 0xfa, 0x90, 0xce, 0x34, 0x9f, 0x5f, 0x1e, 0xc1, 0xd7, - 0x5a, 0x25, 0x85, 0xd4, 0x18, 0xa6, 0x41, 0x47, 0xbf, 0x0a, 0xfa, 0xf0, - 0x03, 0x4c, 0x3b, 0xf7, 0x44, 0x4e, 0x61, 0x92, 0xaa, 0xaf, 0xc0, 0x0c, - 0x4a, 0x18, 0x1b, 0xf9, 0x30, 0xa5, 0x3a, 0xa3, 0xb7, 0x39, 0x6f, 0x37, - 0x1e, 0x79, 0xaf, 0x6b, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x5f, 0x4c, 0x38, 0x72, 0xf9, 0xeb, 0xc8, 0x16, 0x44, 0xee, 0x6a, 0x35, - 0x21, 0x17, 0xf0, 0xfe, 0x8a, 0xf1, 0x25, 0xa0, 0x2b, 0x77, 0x62, 0x18, - 0x44, 0xb5, 0x8c, 0xad, 0xa4, 0xae, 0x0c, 0x11, 0x8e, 0xee, 0xfa, 0x07, - 0x04, 0x61, 0xab, 0x7e, 0xe0, 0x7f, 0x77, 0xa6, 0x26, 0xc1, 0xc1, 0x87, - 0x5b, 0x2c, 0x29, 0xbb, 0x69, 0xd3, 0xc2, 0x4a, 0xac, 0x96, 0x29, 0xaf, - 0x22, 0x69, 0x34, 0x23, 0x5b, 0x43, 0xe0, 0xb3, 0x50, 0x5d, 0xf8, 0x4e, - 0x40, 0x56, 0x45, 0x71, 0xaf, 0x71, 0x2b, 0x77, 0x18, 0xbc, 0x59, 0xee, - 0xc9, 0x1d, 0x47, 0x88, 0x77, 0x24, 0xd6, 0xa4, 0x8a, 0xbe, 0xfa, 0x08, - 0x12, 0x1f, 0x70, 0x49, 0xc3, 0xb0, 0x3f, 0x68, 0xb6, 0xd4, 0x00, 0x87, - 0xde, 0xe4, 0xbb, 0x1a, 0x00, 0xf0, 0xc2, 0xb6, 0xb9, 0x61, 0x42, 0x5e, - 0x3d, 0x59, 0xd8, 0xb5, 0xc0, 0xd7, 0xb1, 0x6e, 0x73, 0x2f, 0x3c, 0x4b, - 0x3d, 0x19, 0xa6, 0x95, 0xc5, 0xe8, 0x94, 0x5a, 0x8f, 0x3b, 0x40, 0x2c, - 0xa6, 0xb9, 0x49, 0x98, 0x5c, 0x6d, 0x36, 0xa2, 0x19, 0x41, 0x86, 0xe6, - 0x8a, 0xca, 0xbc, 0x33, 0xb7, 0x72, 0x7f, 0x99, 0x62, 0x77, 0x19, 0xb2, - 0x71, 0x21, 0x93, 0x97, 0x3f, 0x3f, 0x8f, 0xab, 0xe8, 0x92, 0xf2, 0xce, - 0x20, 0x03, 0x37, 0x19, 0x0c, 0xc6, 0x55, 0x0c, 0x46, 0x6f, 0xb1, 0x64, - 0xe1, 0x66, 0xc0, 0x0e, 0xde, 0x4a, 0xc9, 0xf3, 0xa6, 0x3d, 0xbc, 0x7e, - 0xf3, 0x2b, 0xbc, 0x74, 0x0e, 0xe1, 0xf5, 0xdf, 0x1f, 0xe3, 0xdf, 0x8d, - 0x92, 0x21, 0x83, 0xf8, 0x35, 0x80, 0x41, 0x72, 0x88, 0xa4, 0x90, 0x13, - 0x6a, 0xaa, 0x6f, 0xb2, 0x55, 0x5e, 0xf5, 0x84, 0xc5, 0x3b, 0x55, 0x15, - 0x67, 0x73, 0x2c, 0x44, 0x80, 0xe5, 0x65, 0x27, 0x31, 0xf0, 0xaa, 0x16, - 0x40, 0xd6, 0x27, 0x24, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xbe, 0x34, 0x56, 0xff, 0x22, 0x3a, 0x43, 0x7e, 0x2b, 0x68, 0x8c, 0x11, - 0x68, 0x63, 0x9f, 0x28, 0xa2, 0x2b, 0xce, 0x06, 0xa8, 0x3e, 0xff, 0x74, - 0xa9, 0xfa, 0xd0, 0x70, 0x0f, 0x22, 0x17, 0x04, 0x27, 0x89, 0x12, 0x91, - 0x10, 0x02, 0x8a, 0xfa, 0xf3, 0xcc, 0x86, 0xd6, 0x45, 0xe4, 0xd9, 0x23, - 0xac, 0x43, 0x3f, 0xda, 0xbe, 0x35, 0x1a, 0x5b, 0x3c, 0x07, 0x15, 0x54, - 0xa2, 0x69, 0xdd, 0x1b, 0x44, 0x11, 0xd7, 0x67, 0x8b, 0x07, 0x85, 0xf0, - 0xae, 0x7b, 0x60, 0xe8, 0x6a, 0xec, 0x5e, 0xb7, 0xf6, 0x07, 0x99, 0x4d, - 0x0c, 0x1d, 0x4c, 0x93, 0x7f, 0xbc, 0x26, 0x87, 0x79, 0x73, 0xa7, 0x49, - 0x1b, 0xc3, 0x08, 0xcd, 0xa3, 0x75, 0xe3, 0x97, 0x3a, 0x1c, 0x1a, 0x8a, - 0xe6, 0x59, 0xcf, 0x11, 0xe2, 0x7b, 0x1a, 0x3a, 0x1a, 0xa8, 0xba, 0x15, - 0x01, 0xbd, 0x4b, 0xc3, 0x84, 0x5b, 0xb7, 0x38, 0xae, 0x98, 0x89, 0x92, - 0x41, 0x4d, 0x1c, 0x33, 0xa8, 0xc9, 0x0a, 0xdc, 0x89, 0x51, 0xde, 0xb7, - 0x91, 0xdc, 0x22, 0x79, 0x25, 0x02, 0x46, 0x45, 0x02, 0x35, 0x5f, 0xc8, - 0x11, 0x76, 0xae, 0x03, 0xca, 0xed, 0xd3, 0x97, 0xc0, 0x5b, 0x27, 0x0c, - 0x2e, 0x52, 0x5c, 0x1b, 0x93, 0xc8, 0xd1, 0x40, 0xdf, 0x9e, 0x3e, 0x8f, - 0x37, 0x9a, 0x15, 0x99, 0x3f, 0x70, 0x3e, 0x77, 0x7b, 0xaf, 0x4c, 0x02, - 0x13, 0xd2, 0xc6, 0x2f, 0xcf, 0xc2, 0xee, 0x5a, 0xdc, 0x5a, 0x1f, 0x53, - 0xde, 0xb8, 0xb0, 0xd7, 0x56, 0xc5, 0x9f, 0xc9, 0xe4, 0xb4, 0xde, 0x6d, - 0x00, 0x83, 0xf5, 0x56, 0xb6, 0x87, 0xfe, 0x59, 0xfc, 0x7e, 0x71, 0x7f, - 0x7f, 0x29, 0xa0, 0x33, 0xdf, 0xe3, 0x12, 0xda, 0x65, 0xb5, 0x81, 0xb2, - 0xce, 0xc4, 0x62, 0x33, 0x6c, 0xb3, 0xba, 0xb1, 0xfb, 0x85, 0x03, 0x7e, - 0x1f, 0xe4, 0x61, 0x3e, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x12, 0xd2, 0x6e, 0xb5, 0x8b, 0xed, 0xbc, 0x9f, 0x72, 0x15, 0xf1, 0x9d, - 0x18, 0x0a, 0xb2, 0xb4, 0x78, 0x11, 0x95, 0x0b, 0x10, 0x09, 0x47, 0x01, - 0xa8, 0x06, 0x9c, 0x21, 0xad, 0xa6, 0x2a, 0x2a, 0x9b, 0x72, 0x8c, 0x9f, - 0x83, 0x6d, 0x69, 0x6f, 0x0c, 0xb5, 0x30, 0x45, 0xd3, 0x7e, 0xd6, 0x5e, - 0x40, 0x31, 0xdb, 0x3c, 0x00, 0xff, 0xc8, 0x94, 0x87, 0xda, 0x02, 0x89, - 0xbe, 0x13, 0xc0, 0x2e, 0x30, 0x79, 0x58, 0xf8, 0x77, 0x2d, 0x8e, 0x80, - 0xa8, 0xd9, 0xb8, 0xfd, 0x6c, 0xa7, 0x09, 0x68, 0x76, 0x34, 0xf4, 0x79, - 0xc1, 0xb9, 0x11, 0x84, 0xa6, 0x4b, 0xb1, 0xb5, 0x57, 0x65, 0x78, 0x44, - 0x76, 0x3f, 0x37, 0x0c, 0x29, 0x65, 0xe2, 0x10, 0xfa, 0xd2, 0x2a, 0x95, - 0x44, 0xac, 0x73, 0xd1, 0xa3, 0x18, 0x87, 0xd5, 0x2a, 0xe4, 0xca, 0x3f, - 0x49, 0x95, 0x22, 0x4f, 0xf4, 0xfb, 0x53, 0x39, 0x7b, 0xbc, 0xaa, 0x2d, - 0x1b, 0xea, 0xca, 0x0d, 0xd4, 0xa7, 0x47, 0xdb, 0x6d, 0x65, 0xd4, 0x93, - 0xd4, 0xa3, 0x35, 0x62, 0x8d, 0xe3, 0xb9, 0x8d, 0xce, 0x9d, 0x35, 0xaf, - 0x6d, 0xe7, 0x09, 0x51, 0xe4, 0x21, 0x6b, 0xda, 0x5d, 0xe2, 0x77, 0x7a, - 0x7d, 0xc5, 0x46, 0x36, 0xa3, 0xce, 0x6c, 0x69, 0x95, 0x22, 0xd1, 0xb1, - 0xbf, 0x42, 0xe5, 0x96, 0xdb, 0xc3, 0x9f, 0x41, 0x57, 0xa4, 0x06, 0x0a, - 0x58, 0xe1, 0x15, 0x51, 0xf7, 0xdf, 0x55, 0x68, 0xa8, 0x15, 0x6d, 0x79, - 0xf3, 0x93, 0x6d, 0x50, 0x7b, 0xa2, 0x50, 0xfc, 0x07, 0xcd, 0x22, 0xcc, - 0x55, 0x86, 0x7a, 0xda, 0xeb, 0x45, 0xbd, 0x6f, 0x4c, 0xe4, 0x51, 0xa0, - 0xc7, 0x80, 0xac, 0x30, 0x42, 0xde, 0xd7, 0x31, 0xdd, 0x15, 0xe5, 0x7a, - 0x7f, 0x1f, 0x54, 0xc8, 0x46, 0xc4, 0x0d, 0xee, 0xd9, 0x19, 0x96, 0xcb, - 0xd4, 0xbd, 0x0f, 0x6e, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xff, 0xcf, 0x2e, 0x9e, 0x50, 0xc0, 0x84, 0xe1, 0x8e, 0x5a, 0xac, 0x3a, - 0xea, 0xc5, 0xd2, 0xce, 0x05, 0x86, 0xb3, 0x85, 0x71, 0xaa, 0x92, 0xed, - 0x11, 0xb1, 0xe8, 0x95, 0x15, 0x5d, 0x03, 0x42, 0x64, 0x44, 0x8d, 0x95, - 0x8b, 0x5b, 0x87, 0xb7, 0x88, 0x8e, 0xbd, 0x6f, 0xb2, 0xb8, 0x57, 0x8c, - 0x49, 0xb1, 0x83, 0xb0, 0x9f, 0xbb, 0x7e, 0x52, 0x6d, 0xac, 0x10, 0x03, - 0xf9, 0x8e, 0x88, 0x6c, 0x52, 0x5b, 0x75, 0xbf, 0x5b, 0x12, 0x21, 0x72, - 0x7f, 0x99, 0xaa, 0x3a, 0xcc, 0x05, 0x5f, 0x3a, 0xd7, 0x80, 0x23, 0xf2, - 0xde, 0xa7, 0x4a, 0x73, 0xdf, 0xf5, 0x7a, 0x34, 0xc8, 0x2f, 0x3b, 0x6f, - 0x61, 0xcd, 0x00, 0x4e, 0x15, 0xd1, 0x95, 0x53, 0x73, 0xc8, 0xcf, 0x04, - 0x2f, 0x67, 0x7f, 0x95, 0x9e, 0x49, 0x12, 0xc4, 0xda, 0xaa, 0x0c, 0x75, - 0x75, 0x96, 0x8f, 0x86, 0x5e, 0xe5, 0xde, 0x4d, 0xec, 0xe7, 0x0a, 0x7b, - 0x20, 0x5d, 0xca, 0xa4, 0x61, 0xb7, 0xa0, 0xd3, 0x19, 0xbb, 0x78, 0x74, - 0x9e, 0xc9, 0xe0, 0xbc, 0xf9, 0xd4, 0xb9, 0x70, 0xa0, 0x7b, 0xf4, 0x45, - 0xa0, 0xad, 0xaa, 0x30, 0xf1, 0xe6, 0x14, 0x82, 0x3e, 0x35, 0x64, 0xf2, - 0xaa, 0xf8, 0xf5, 0xca, 0xf6, 0x71, 0x14, 0xab, 0x49, 0xd1, 0x54, 0x52, - 0x97, 0x0b, 0xf5, 0xef, 0x9b, 0xba, 0xce, 0xab, 0xa6, 0x39, 0xe1, 0x28, - 0xc2, 0xdc, 0x11, 0xf0, 0x98, 0xdc, 0xd2, 0xcd, 0x3f, 0x1a, 0x3a, 0xe0, - 0x46, 0x34, 0x7d, 0x46, 0x44, 0x5d, 0xb0, 0x4f, 0xf0, 0x5e, 0x54, 0x73, - 0x4f, 0xec, 0x8d, 0x42, 0x68, 0x9c, 0x06, 0x0d, 0x91, 0xff, 0xf9, 0x86, - 0x9a, 0xf6, 0x41, 0xa6, 0x0f, 0x0a, 0x7e, 0xe0, 0xd3, 0x96, 0xe6, 0x30, - 0x31, 0xc0, 0x70, 0x0b, 0x91, 0xad, 0x6d, 0xbe, 0xaf, 0xfa, 0x23, 0x5c, - 0xab, 0xcc, 0x76, 0x22, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x1e, 0x96, 0xb3, 0x88, 0x42, 0xf7, 0x64, 0xf2, 0x58, 0x90, 0x6e, 0x3c, - 0x1b, 0xd0, 0x86, 0x12, 0x4a, 0xd8, 0x1e, 0xe5, 0x02, 0xe4, 0x81, 0xaa, - 0x99, 0xe6, 0xd7, 0x17, 0x59, 0x97, 0x23, 0x60, 0x2e, 0xef, 0x9f, 0xad, - 0x46, 0xc5, 0x38, 0x2b, 0x3d, 0xb5, 0xd6, 0xef, 0x58, 0x19, 0xbd, 0x37, - 0x95, 0x84, 0xb5, 0x3e, 0x08, 0xd9, 0x28, 0xed, 0x78, 0x63, 0x3c, 0x8e, - 0x42, 0x73, 0x48, 0x38, 0x4f, 0x79, 0x39, 0x5f, 0x70, 0x7b, 0x79, 0x43, - 0x0b, 0xfe, 0x07, 0x75, 0xc1, 0x1e, 0xba, 0xbe, 0x74, 0x23, 0xdc, 0xb1, - 0xe0, 0x66, 0x37, 0x87, 0x59, 0x18, 0xdc, 0x2d, 0x9b, 0x95, 0x0f, 0x73, - 0xc9, 0x6e, 0x2a, 0xa7, 0x05, 0x84, 0x8b, 0xa1, 0x37, 0x4d, 0x45, 0xf3, - 0x86, 0x1b, 0xd5, 0xc7, 0xc8, 0x05, 0x81, 0x69, 0xa0, 0xa7, 0x95, 0x9d, - 0x9b, 0x2f, 0x24, 0xb7, 0x8b, 0x91, 0xf8, 0x1c, 0x34, 0x25, 0xf3, 0x03, - 0xf5, 0xfa, 0xff, 0x01, 0x8c, 0x2e, 0x14, 0x50, 0x64, 0x56, 0xbd, 0x85, - 0xd6, 0x92, 0xdb, 0xfb, 0x2a, 0x71, 0x0a, 0xf5, 0xf4, 0x9c, 0x0f, 0x8d, - 0xc7, 0x9c, 0x14, 0x6b, 0x28, 0x84, 0x56, 0xd6, 0xe8, 0x79, 0x15, 0x7c, - 0xb6, 0xca, 0xae, 0x09, 0xed, 0x4c, 0x6b, 0x74, 0xc5, 0xb8, 0xe0, 0xd5, - 0xb4, 0x5f, 0x21, 0xf3, 0xdd, 0x2d, 0x60, 0x08, 0xa4, 0x94, 0xa4, 0x4a, - 0x46, 0x5f, 0xc3, 0x63, 0x5f, 0x78, 0x58, 0x4a, 0xa6, 0x23, 0x80, 0xba, - 0xb8, 0xfc, 0xc1, 0xbc, 0xd0, 0x5b, 0x13, 0x2c, 0x0d, 0xc8, 0x56, 0x14, - 0x67, 0x45, 0x57, 0xd1, 0xb1, 0xad, 0x0e, 0x1a, 0xb2, 0x36, 0xfb, 0xcb, - 0x9c, 0x9d, 0xf0, 0xa5, 0x31, 0x3a, 0x09, 0x55, 0xf8, 0x30, 0x76, 0xdd, - 0x15, 0x6c, 0x3e, 0x8a, 0x65, 0x2a, 0x59, 0x7b, 0x2a, 0x64, 0xc0, 0xd8, - 0xd0, 0x96, 0xab, 0x5d, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xe8, 0x45, 0x4b, 0x02, 0x25, 0xc0, 0x8f, 0xb1, 0x27, 0x7e, 0x6b, 0x2a, - 0xfc, 0xe7, 0x27, 0xe7, 0xc9, 0xd2, 0x39, 0x89, 0x1f, 0x32, 0xcb, 0x52, - 0x8e, 0xe3, 0x03, 0x7f, 0x45, 0xe7, 0xdc, 0x20, 0xd7, 0x95, 0x9b, 0xf9, - 0x71, 0x55, 0x48, 0x4b, 0xf4, 0x39, 0xd1, 0x30, 0x2b, 0x23, 0x63, 0x7b, - 0x5b, 0xea, 0x55, 0x40, 0x69, 0x5b, 0xf5, 0x33, 0x12, 0x7d, 0x2e, 0x09, - 0xb3, 0xf2, 0x3d, 0x6a, 0x71, 0x4e, 0x95, 0xd3, 0xab, 0x5f, 0xf8, 0x3d, - 0x38, 0x24, 0x2d, 0x16, 0xe9, 0x30, 0x92, 0x04, 0x66, 0x17, 0xa7, 0x39, - 0x63, 0x8b, 0x8b, 0x65, 0xa7, 0x27, 0x94, 0x67, 0xdf, 0xa8, 0x19, 0x16, - 0xb9, 0x06, 0x2f, 0xdd, 0x7e, 0x33, 0x87, 0x75, 0xa9, 0x2c, 0xf8, 0xf6, - 0xec, 0x54, 0xc2, 0x5c, 0xf1, 0x2a, 0x84, 0x4a, 0x1f, 0x35, 0x95, 0x8d, - 0xa1, 0x23, 0x4d, 0x00, 0x3e, 0x50, 0xe9, 0x20, 0xb4, 0x33, 0xb8, 0x6b, - 0xed, 0x60, 0xaf, 0x84, 0x5c, 0x8e, 0x3b, 0x34, 0x13, 0x1e, 0xbb, 0xc5, - 0x11, 0x6e, 0xc7, 0xba, 0x0f, 0x66, 0x80, 0xcf, 0x4f, 0x96, 0x62, 0x43, - 0x2c, 0x4f, 0xee, 0x04, 0x46, 0x43, 0xe2, 0x02, 0x40, 0xcf, 0xb6, 0x73, - 0x79, 0xc5, 0x84, 0xb0, 0xed, 0xdb, 0x8c, 0xcc, 0x3d, 0x49, 0x5b, 0x1f, - 0xfe, 0x44, 0xd9, 0xfe, 0xc8, 0x70, 0x08, 0xc0, 0xab, 0xac, 0x8d, 0x0c, - 0x0c, 0x5f, 0xa9, 0xb1, 0xaf, 0x15, 0x01, 0x55, 0xc4, 0x5f, 0x88, 0xfc, - 0x54, 0xbe, 0x9a, 0x74, 0xc5, 0x60, 0x00, 0x59, 0x97, 0x3a, 0x6e, 0x04, - 0x6b, 0x9d, 0x94, 0x0e, 0x57, 0x39, 0x1d, 0x1e, 0xbd, 0xbf, 0x7e, 0x7d, - 0xfe, 0xe8, 0x36, 0x5e, 0xc0, 0x5a, 0xc7, 0xd3, 0x08, 0xb5, 0x8c, 0x23, - 0x1b, 0xb2, 0xd1, 0x21, 0x0f, 0x41, 0x9c, 0x15, 0x89, 0x37, 0xc9, 0xea, - 0xad, 0x80, 0x04, 0x14, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xb4, 0x92, 0x18, 0xd6, 0xd0, 0x3c, 0xd6, 0x56, 0xf3, 0xa6, 0xe2, 0x71, - 0xc2, 0x73, 0x5b, 0x75, 0x0a, 0xf0, 0xb9, 0xf0, 0xe6, 0xac, 0x11, 0xf3, - 0x07, 0x6f, 0x7b, 0x2f, 0xd9, 0x09, 0x33, 0x4b, 0xfa, 0x32, 0x51, 0x04, - 0x87, 0xbd, 0x4b, 0xc7, 0x77, 0x8b, 0x8c, 0x11, 0xa4, 0x58, 0x23, 0x79, - 0x19, 0x87, 0xac, 0x01, 0xce, 0xa4, 0x02, 0x70, 0xc2, 0x81, 0xb5, 0x34, - 0x0e, 0x43, 0x5f, 0x68, 0x7b, 0xc1, 0x82, 0x46, 0x24, 0xeb, 0x56, 0x2f, - 0x55, 0x06, 0x37, 0x3b, 0x79, 0xfe, 0xa0, 0x34, 0x60, 0xa3, 0xc9, 0xbf, - 0xb7, 0x7e, 0x55, 0x2e, 0x67, 0xec, 0x30, 0x2d, 0xe4, 0xf8, 0xa0, 0x03, - 0xd7, 0x8c, 0x69, 0x85, 0x8a, 0x25, 0x62, 0xee, 0x9e, 0x83, 0xe2, 0xb2, - 0x2f, 0x3f, 0x57, 0x31, 0x8e, 0x40, 0xb1, 0xf8, 0x2c, 0x88, 0x90, 0xf6, - 0x99, 0x43, 0x10, 0x79, 0xa2, 0xb4, 0xc7, 0x58, 0x1f, 0xe1, 0xef, 0xad, - 0xa6, 0xb5, 0xf4, 0x9f, 0x0d, 0xea, 0xdb, 0x51, 0xa2, 0x42, 0xbe, 0x68, - 0x4c, 0xeb, 0x90, 0xf6, 0xa7, 0xc0, 0x25, 0xd2, 0x5b, 0xee, 0x67, 0x44, - 0x89, 0xde, 0x10, 0x1b, 0xb0, 0xc7, 0xf9, 0x1f, 0x89, 0x2b, 0x42, 0x4d, - 0xbc, 0x09, 0x71, 0xb8, 0x78, 0x19, 0x50, 0x45, 0x64, 0x44, 0xad, 0x25, - 0xce, 0xe5, 0xf3, 0xf7, 0xe1, 0x46, 0x0b, 0x1e, 0x94, 0xbf, 0x47, 0x5d, - 0x57, 0x50, 0x4e, 0xc8, 0xe9, 0xdd, 0xd0, 0x5b, 0xc6, 0xbf, 0x64, 0xd5, - 0xa6, 0xf8, 0x74, 0xc6, 0x42, 0xe1, 0x86, 0x34, 0x4d, 0x6c, 0xda, 0x3f, - 0x0c, 0x7d, 0x80, 0x2f, 0x9c, 0x24, 0xe4, 0x2e, 0xa8, 0xb6, 0x73, 0x47, - 0xf3, 0xe3, 0x9f, 0x7b, 0x98, 0x16, 0x56, 0xa9, 0x5d, 0xc3, 0x49, 0xaf, - 0xfc, 0x57, 0xd8, 0x54, 0x8e, 0xde, 0x4c, 0x94, 0xe9, 0x98, 0x8f, 0x7b, - 0x89, 0xa7, 0x65, 0x37, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x7c, 0x03, 0x78, 0x85, 0x40, 0x84, 0xa6, 0xa4, 0xff, 0x0a, 0x9e, 0xf0, - 0x48, 0x85, 0xc2, 0xb0, 0x85, 0xa3, 0xd9, 0x23, 0x1a, 0xb8, 0x9d, 0x86, - 0x49, 0x80, 0x9a, 0x55, 0xd5, 0x0c, 0xc6, 0x4c, 0xf6, 0xd7, 0x99, 0xf7, - 0x55, 0x3b, 0x36, 0xac, 0x47, 0xda, 0x1c, 0x48, 0x3c, 0x91, 0x66, 0x66, - 0x7e, 0x8e, 0x77, 0x94, 0x3e, 0xb9, 0xf2, 0xd7, 0xb4, 0xaf, 0xed, 0x31, - 0xa0, 0x0f, 0xab, 0x42, 0x84, 0x8a, 0xa3, 0x93, 0x37, 0x14, 0x33, 0x56, - 0xf6, 0x72, 0x06, 0x16, 0x4c, 0x97, 0x20, 0xff, 0x14, 0x95, 0xc4, 0x8e, - 0x42, 0x10, 0x85, 0x1d, 0x6e, 0xfb, 0xb0, 0x60, 0x4d, 0x49, 0xf5, 0x53, - 0x2b, 0x17, 0x63, 0xe8, 0x9f, 0x99, 0xbf, 0xdf, 0x43, 0x59, 0x5b, 0xb2, - 0x15, 0x85, 0x2b, 0x49, 0x57, 0xf6, 0xba, 0x59, 0x32, 0x3b, 0x11, 0x1d, - 0x2e, 0x73, 0x90, 0x2c, 0x68, 0x44, 0xdb, 0x15, 0x15, 0xd3, 0x9a, 0x6b, - 0x99, 0x50, 0xd2, 0xcf, 0xcd, 0x8c, 0x2e, 0x69, 0xcf, 0x9e, 0x9e, 0xea, - 0x9c, 0xfc, 0x81, 0xa2, 0xfe, 0x80, 0xca, 0xeb, 0xa9, 0xf3, 0x97, 0x08, - 0x5f, 0xf0, 0x20, 0x3c, 0x81, 0x37, 0x37, 0x84, 0xf2, 0x3b, 0x7e, 0x2f, - 0x1a, 0x93, 0xe9, 0x8f, 0xf6, 0x65, 0x65, 0x41, 0x6f, 0xd3, 0xd7, 0x41, - 0x09, 0xd3, 0x52, 0x23, 0x27, 0xf8, 0xfc, 0xd0, 0xa5, 0xde, 0x40, 0x59, - 0x56, 0xfd, 0xbe, 0xf3, 0xc4, 0x5b, 0x66, 0x9f, 0x54, 0xde, 0x27, 0x54, - 0x23, 0x2b, 0x8b, 0xb7, 0x7b, 0x27, 0x42, 0x65, 0xc1, 0xc5, 0x8b, 0x73, - 0xe3, 0xdf, 0x7b, 0xad, 0x9e, 0x8c, 0x45, 0x42, 0x70, 0xa7, 0xb9, 0x88, - 0xf1, 0x12, 0xd0, 0x51, 0x74, 0xce, 0x4b, 0xa2, 0x4f, 0xb3, 0x26, 0x8f, - 0xc3, 0xf5, 0x5e, 0x20, 0x58, 0xbd, 0xdf, 0x0f, 0x3a, 0x19, 0x69, 0xa8, - 0xf9, 0x4e, 0xc8, 0x30, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xc7, 0x0b, 0x93, 0x5a, 0x99, 0x4a, 0x70, 0xef, 0xc9, 0x8c, 0x64, 0x07, - 0x0a, 0x80, 0xc5, 0x42, 0xe7, 0xe9, 0x93, 0x27, 0xc9, 0xdb, 0x10, 0x9c, - 0xda, 0x8f, 0xc7, 0x66, 0xe6, 0x70, 0xd3, 0x08, 0x7b, 0x14, 0x4e, 0xed, - 0xdd, 0x6e, 0xc2, 0x3d, 0xf5, 0xc8, 0xb4, 0xcd, 0x0a, 0x7a, 0xfe, 0x6a, - 0xef, 0xc0, 0x14, 0x3b, 0x9e, 0xdb, 0x97, 0x2a, 0x5e, 0x82, 0x2c, 0xfd, - 0xb2, 0x07, 0x7e, 0x69, 0x71, 0xd3, 0x3a, 0x8f, 0xb8, 0x34, 0xf9, 0xf1, - 0x07, 0x30, 0x87, 0x57, 0x1e, 0xdd, 0x22, 0xd1, 0x14, 0xd8, 0xcf, 0x7e, - 0xb3, 0x89, 0xd4, 0xc5, 0xe1, 0xf1, 0x19, 0xf8, 0x4b, 0x36, 0x0b, 0x4f, - 0x73, 0x31, 0x4f, 0xb6, 0x4a, 0xf0, 0xa0, 0x65, 0xaf, 0x86, 0xcb, 0x13, - 0xba, 0xae, 0x04, 0xb5, 0xa2, 0xfe, 0x0d, 0xe8, 0x06, 0x90, 0x21, 0x5f, - 0xde, 0x4c, 0x7e, 0x09, 0x12, 0x1e, 0xc3, 0x37, 0x6f, 0xde, 0x18, 0xa9, - 0x21, 0x4e, 0x30, 0xa1, 0x83, 0x92, 0x0a, 0xd4, 0xe2, 0xf3, 0x8f, 0x4b, - 0x5f, 0x59, 0xf6, 0x56, 0xa6, 0x74, 0x45, 0xc8, 0x28, 0x17, 0x3f, 0xb8, - 0x22, 0x85, 0xad, 0x0c, 0x99, 0x10, 0xf2, 0xab, 0x7c, 0x5e, 0x30, 0xa5, - 0x12, 0x28, 0xdb, 0xd0, 0xcc, 0x04, 0xb0, 0x2e, 0x9b, 0x0d, 0x06, 0x29, - 0xf3, 0xa3, 0x61, 0x59, 0xbe, 0xab, 0x3e, 0x33, 0xfd, 0x10, 0xb6, 0x51, - 0x54, 0x61, 0x30, 0xc6, 0x90, 0x6a, 0x83, 0x2a, 0xf7, 0x0e, 0x44, 0x06, - 0xde, 0x8e, 0x87, 0x91, 0xfe, 0x6c, 0x0f, 0xe2, 0xe8, 0x6f, 0x37, 0x28, - 0x98, 0x51, 0x88, 0x2e, 0x5b, 0x58, 0x48, 0x62, 0x59, 0x0c, 0x6f, 0xd5, - 0xf3, 0x0e, 0x3d, 0xbb, 0xd1, 0xd5, 0xb6, 0xd5, 0xe6, 0x7a, 0x13, 0x20, - 0x8d, 0xdb, 0xfe, 0x43, 0x2b, 0xdf, 0x9c, 0xe7, 0x45, 0xe1, 0x9b, 0x77, - 0xe0, 0x0c, 0xca, 0x20, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xcd, 0x41, 0x5c, 0x9a, 0x65, 0x69, 0xf9, 0x4e, 0xa6, 0xbf, 0xf4, 0x8b, - 0x3e, 0x43, 0xbf, 0xda, 0x72, 0x4e, 0x43, 0x30, 0x27, 0xff, 0x52, 0x86, - 0xc8, 0xdd, 0x6a, 0xa3, 0x7f, 0xc0, 0x3c, 0x63, 0x34, 0xe1, 0x67, 0xfb, - 0xbb, 0x64, 0xcf, 0x66, 0xcf, 0xe9, 0x43, 0x22, 0x70, 0x22, 0x49, 0x6f, - 0x81, 0x86, 0x93, 0xe4, 0x7e, 0xe6, 0x65, 0x5a, 0x21, 0xf5, 0xd2, 0xa8, - 0x05, 0x3a, 0xc5, 0x4b, 0x28, 0x1d, 0x8e, 0x1d, 0x4c, 0x20, 0x79, 0x2f, - 0x9f, 0x83, 0x95, 0x61, 0x30, 0xed, 0x58, 0x7d, 0x29, 0x53, 0xf7, 0x30, - 0xc5, 0x19, 0xe2, 0x3c, 0x5e, 0xd3, 0xb5, 0x19, 0xd3, 0xec, 0x23, 0x21, - 0x97, 0xce, 0x8a, 0xbf, 0x48, 0xbe, 0xd3, 0x72, 0xf5, 0x52, 0x58, 0x56, - 0xd5, 0xd8, 0x54, 0xd9, 0xa0, 0x7b, 0xad, 0xbd, 0xac, 0x5f, 0x6b, 0x73, - 0x9e, 0xd8, 0xcf, 0xca, 0x81, 0x2e, 0xad, 0x5a, 0x8b, 0xe3, 0x63, 0x8b, - 0x72, 0x8c, 0x0f, 0x65, 0x2e, 0xb3, 0x7e, 0x5f, 0x37, 0x5b, 0xd5, 0x0c, - 0x94, 0x0d, 0x45, 0xa1, 0x0e, 0x06, 0x3c, 0xf4, 0xe6, 0xaa, 0x26, 0x7a, - 0xcc, 0x6d, 0x97, 0x51, 0xae, 0x42, 0x16, 0xa5, 0x24, 0xe6, 0xf5, 0x34, - 0xf4, 0x77, 0x35, 0x9d, 0x90, 0x35, 0x80, 0x03, 0x6f, 0x4f, 0xc5, 0xac, - 0x16, 0xd8, 0x71, 0x52, 0x8b, 0xa9, 0x45, 0x0b, 0x78, 0x55, 0x48, 0x62, - 0x6c, 0xb3, 0x41, 0x7a, 0xc2, 0xfc, 0xae, 0x55, 0xed, 0x04, 0x54, 0xec, - 0xc3, 0xc9, 0xac, 0x5e, 0x70, 0x43, 0xc7, 0xe6, 0xb8, 0x43, 0xfc, 0xc5, - 0x9c, 0x27, 0x7b, 0x98, 0x02, 0xf6, 0x12, 0x01, 0x11, 0xb0, 0x26, 0x1e, - 0x9b, 0x29, 0xdf, 0xca, 0x89, 0x46, 0xfe, 0x3b, 0x8b, 0xf2, 0x17, 0xeb, - 0x06, 0x71, 0x10, 0xef, 0x7e, 0xe5, 0xc0, 0xfb, 0x8a, 0x6a, 0x37, 0x4a, - 0x88, 0xf8, 0x06, 0x5f, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x09, 0x76, 0x19, 0x9e, 0xb3, 0x94, 0x6c, 0x11, 0xf2, 0x48, 0xde, 0x8c, - 0x98, 0xc8, 0x44, 0xb7, 0xa8, 0x69, 0x30, 0xb9, 0x43, 0x41, 0xb2, 0xb7, - 0xf0, 0x78, 0x4b, 0xd4, 0x76, 0xd0, 0x8b, 0x5e, 0x32, 0x73, 0x20, 0x2a, - 0x7d, 0x93, 0xc2, 0xee, 0x6e, 0x4f, 0x0c, 0xfc, 0x9b, 0x1d, 0xee, 0xbc, - 0x5d, 0xe1, 0xa7, 0x7a, 0xeb, 0x10, 0xa1, 0xf9, 0xf1, 0xa2, 0x04, 0x8d, - 0x43, 0x79, 0xcb, 0x32, 0xe5, 0x82, 0xbc, 0xe7, 0x6e, 0x11, 0xf9, 0xb0, - 0x6e, 0x50, 0x9d, 0x8e, 0xd4, 0x80, 0x39, 0x8b, 0xcd, 0xc7, 0x83, 0x3d, - 0x36, 0x73, 0x17, 0xcb, 0x4d, 0x93, 0x47, 0x8b, 0x72, 0x52, 0x23, 0x31, - 0xff, 0x7d, 0xc0, 0x41, 0x57, 0x1c, 0xd4, 0x53, 0x32, 0xbc, 0xed, 0x37, - 0x1f, 0xe4, 0x9c, 0x36, 0x63, 0xd3, 0x81, 0xe9, 0x23, 0xcb, 0xc1, 0x04, - 0x64, 0x81, 0xf2, 0x43, 0xb6, 0x18, 0xf8, 0x69, 0x4c, 0x0c, 0xc9, 0xa8, - 0xb2, 0x42, 0x5d, 0x25, 0xd9, 0xc1, 0x4c, 0x06, 0xa6, 0x6a, 0xd8, 0x8c, - 0xcd, 0x1c, 0xf0, 0x73, 0x4d, 0x9d, 0xbf, 0x7f, 0x25, 0xe7, 0x2d, 0x56, - 0x2e, 0x20, 0x76, 0x20, 0xfc, 0xd6, 0xe2, 0x71, 0xef, 0x5e, 0x50, 0xcb, - 0x8c, 0xc9, 0x71, 0xeb, 0x3e, 0xad, 0x79, 0x58, 0xc7, 0x64, 0x33, 0x09, - 0x41, 0xb0, 0x97, 0xfd, 0xe6, 0x8a, 0x37, 0xf2, 0x0c, 0xfc, 0x33, 0x63, - 0x48, 0x5f, 0x03, 0x30, 0x63, 0x9a, 0x4a, 0x8b, 0xf6, 0x4d, 0xe5, 0xfc, - 0x48, 0x8a, 0xad, 0x56, 0x29, 0xfe, 0xe0, 0xb5, 0xb6, 0x2e, 0x31, 0xde, - 0xb7, 0xd5, 0x0e, 0x60, 0x78, 0xc5, 0xa1, 0x59, 0x27, 0x55, 0xa5, 0x21, - 0x30, 0x07, 0xa7, 0x79, 0x36, 0xa0, 0x53, 0x5c, 0x64, 0x6b, 0x4b, 0x97, - 0x85, 0xbc, 0x2c, 0x13, 0xa0, 0xb3, 0x7d, 0x21, 0x85, 0xe2, 0x36, 0x96, - 0x30, 0x9a, 0xca, 0x34, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xde, 0x97, 0x36, 0xb8, 0x06, 0xab, 0xc8, 0x2f, 0x33, 0x45, 0x43, 0x0f, - 0xb3, 0xd0, 0x56, 0xdf, 0x58, 0x18, 0xcd, 0xa4, 0xa2, 0x83, 0x19, 0x4a, - 0x16, 0xd6, 0x42, 0x9f, 0xe4, 0x14, 0xa8, 0x5a, 0xe9, 0xc6, 0xe7, 0x2f, - 0x08, 0xc5, 0x2f, 0x66, 0xf0, 0xf7, 0xc7, 0x88, 0x1b, 0x3f, 0xc2, 0x78, - 0xf2, 0x45, 0x78, 0x93, 0x3b, 0xfd, 0x8c, 0x8c, 0xf3, 0xe2, 0xd3, 0x23, - 0xa8, 0xf7, 0x60, 0x2f, 0x93, 0x8a, 0x86, 0x63, 0x43, 0xca, 0xfe, 0xc6, - 0x26, 0xe2, 0xb1, 0x04, 0x63, 0x1f, 0xa0, 0x4b, 0xff, 0x87, 0xcc, 0x4d, - 0x10, 0xf6, 0xab, 0xfc, 0x67, 0x28, 0x6f, 0xd5, 0x88, 0x9f, 0x7e, 0x3d, - 0x17, 0x84, 0x2c, 0xca, 0xf1, 0x13, 0x49, 0x8d, 0x18, 0x75, 0xe1, 0x3e, - 0x7f, 0xf0, 0xdf, 0xb1, 0xe1, 0x42, 0x88, 0xf9, 0xef, 0xb5, 0x7f, 0xd2, - 0x64, 0x5f, 0x83, 0xd1, 0xe0, 0xc6, 0x4b, 0x56, 0x68, 0xac, 0xcd, 0x51, - 0x5f, 0x3e, 0x62, 0x9e, 0x8f, 0x0c, 0x3e, 0x80, 0xc5, 0x8c, 0xf2, 0x53, - 0x37, 0xed, 0x95, 0x9c, 0x83, 0x4c, 0xe5, 0x71, 0x4c, 0x41, 0xd4, 0xd6, - 0x2e, 0xb4, 0x38, 0x6e, 0x39, 0x7b, 0x42, 0x30, 0x91, 0xdc, 0xdf, 0x3c, - 0x15, 0x92, 0x47, 0x17, 0x1b, 0x2e, 0x3f, 0xb5, 0x4f, 0x37, 0xe6, 0xa4, - 0x25, 0xda, 0x49, 0x79, 0x47, 0x93, 0xf6, 0xce, 0x67, 0x4a, 0x8f, 0x58, - 0xda, 0x70, 0xa9, 0x7d, 0x32, 0x28, 0xcf, 0xeb, 0x5f, 0x0f, 0xba, 0x4d, - 0xb8, 0xef, 0x64, 0x47, 0x20, 0xe5, 0x70, 0x96, 0x00, 0x2a, 0xe2, 0x4c, - 0x3a, 0xb8, 0x42, 0x14, 0x98, 0xa9, 0x3f, 0x62, 0xe5, 0x15, 0x58, 0xae, - 0x42, 0x72, 0x26, 0xb9, 0xd4, 0x2e, 0xd1, 0xf3, 0x3b, 0x1b, 0x18, 0xfb, - 0xb3, 0x4f, 0xf6, 0x62, 0x7f, 0xf4, 0x65, 0xfc, 0xc7, 0xe1, 0x94, 0x61, - 0x3d, 0xd3, 0x51, 0x4f, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x56, 0xdc, 0x1d, 0xf5, 0x56, 0xaa, 0x13, 0xa7, 0xa2, 0xb9, 0xe8, 0x4e, - 0x0d, 0x17, 0x3b, 0x87, 0x41, 0xf1, 0xec, 0xe6, 0x3d, 0x49, 0x39, 0x34, - 0x23, 0x56, 0x05, 0x7b, 0x95, 0xa6, 0xfc, 0x6b, 0x20, 0xf9, 0xbd, 0xf6, - 0xa4, 0x87, 0xa6, 0x01, 0x6f, 0x56, 0xd6, 0x56, 0xcf, 0x0a, 0x01, 0x0e, - 0x69, 0x73, 0xc2, 0x85, 0x51, 0x73, 0x15, 0x42, 0x9e, 0x17, 0xbf, 0x9b, - 0xc2, 0xb8, 0x9b, 0x40, 0x6f, 0xeb, 0xd9, 0x7c, 0x12, 0x48, 0x42, 0xcb, - 0xfe, 0x8e, 0xca, 0xc9, 0x41, 0xc0, 0x2d, 0xe2, 0x74, 0xf6, 0x2c, 0x1f, - 0x0c, 0xca, 0x3a, 0xab, 0xf4, 0x08, 0x57, 0x4c, 0x90, 0xd4, 0xac, 0x2f, - 0x4b, 0x93, 0x3b, 0xd1, 0xf4, 0x15, 0xd0, 0x33, 0xc0, 0x00, 0x31, 0x8f, - 0x5a, 0xf3, 0xd7, 0xa7, 0x44, 0x77, 0x2b, 0x32, 0x9b, 0x25, 0xf0, 0x99, - 0x21, 0x72, 0x47, 0x5d, 0x5e, 0xe7, 0xa9, 0x11, 0xbc, 0xa6, 0x36, 0x46, - 0x53, 0xe9, 0x30, 0x9c, 0xa0, 0x53, 0xe9, 0x60, 0xc2, 0xf6, 0xf3, 0x77, - 0x1f, 0x88, 0xae, 0xb4, 0xeb, 0x84, 0xb4, 0x73, 0x30, 0xbe, 0x9e, 0xdf, - 0xd3, 0x58, 0xba, 0x5d, 0xb0, 0xab, 0x77, 0xb2, 0xf2, 0xff, 0xc2, 0xa1, - 0x59, 0x02, 0x66, 0x3c, 0x46, 0xda, 0x2b, 0x66, 0x3b, 0x3c, 0xce, 0x59, - 0xe6, 0xdb, 0x0e, 0x18, 0x61, 0x30, 0xcb, 0xdc, 0xd7, 0x1a, 0xed, 0x6e, - 0x25, 0xa1, 0xb4, 0x00, 0x2b, 0x69, 0x34, 0x62, 0xa2, 0xde, 0x23, 0xc5, - 0x35, 0x82, 0x65, 0xc2, 0x04, 0x7c, 0x01, 0xd9, 0x71, 0x5e, 0xae, 0x96, - 0x83, 0x5e, 0x3c, 0x2e, 0x63, 0xcd, 0x39, 0x1f, 0x50, 0x8c, 0xa7, 0x20, - 0xc0, 0xb4, 0x2a, 0x4b, 0x2d, 0x48, 0x62, 0x4b, 0x20, 0x77, 0x17, 0x3b, - 0x91, 0xc2, 0x39, 0x12, 0x7c, 0x63, 0x9f, 0xd6, 0xbb, 0xd8, 0x0b, 0x5c, - 0x2b, 0xd8, 0x6d, 0x12, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x67, 0xda, 0x31, 0x07, 0x41, 0x24, 0x50, 0x25, 0x97, 0x1b, 0x25, 0x13, - 0xcb, 0x35, 0x00, 0xfe, 0x4d, 0xfa, 0x90, 0x49, 0x56, 0xfe, 0xf2, 0xbe, - 0xac, 0x36, 0xcc, 0xe7, 0x61, 0x12, 0x21, 0x46, 0xfc, 0x76, 0xc2, 0x9b, - 0x41, 0x93, 0x90, 0x52, 0x9e, 0xe7, 0x3a, 0x77, 0x80, 0x73, 0x46, 0x1e, - 0x80, 0x90, 0x62, 0x60, 0xa7, 0x2e, 0x0f, 0x37, 0xa9, 0x1a, 0xe5, 0x00, - 0xf2, 0x60, 0x88, 0x18, 0x21, 0x6f, 0xf9, 0x7a, 0x03, 0x0f, 0x22, 0x47, - 0xfb, 0x95, 0x1d, 0x30, 0xcd, 0xc6, 0x48, 0x9b, 0xf6, 0x85, 0xd5, 0x34, - 0x2e, 0x55, 0x0e, 0x83, 0x46, 0xce, 0xde, 0x5b, 0x5c, 0x83, 0x1f, 0x2a, - 0x88, 0x46, 0xba, 0x84, 0x3f, 0x8d, 0x1a, 0x53, 0xe8, 0x3b, 0xfd, 0xe2, - 0x78, 0xd9, 0xd4, 0xf1, 0xe7, 0x89, 0x5d, 0x9c, 0xad, 0xa2, 0x3c, 0x8b, - 0x32, 0xda, 0x9e, 0xc3, 0x57, 0x1a, 0x39, 0x5b, 0x47, 0xd9, 0xec, 0x31, - 0x7d, 0x76, 0xbc, 0x11, 0x94, 0xf1, 0xb6, 0xe0, 0x76, 0x36, 0x49, 0x12, - 0x09, 0x81, 0xb9, 0xbe, 0xc2, 0xee, 0x54, 0xb2, 0x79, 0xfb, 0x22, 0xd0, - 0x8c, 0xaf, 0x86, 0x00, 0xe3, 0xb0, 0x8e, 0x29, 0x72, 0xa6, 0x82, 0xc7, - 0x6e, 0xf8, 0xb8, 0x58, 0xff, 0xb7, 0xba, 0x39, 0x20, 0x2f, 0xa1, 0xdb, - 0xf8, 0x9a, 0x18, 0xdc, 0x59, 0x8a, 0xe3, 0xb4, 0xa4, 0x53, 0xfa, 0x27, - 0xf1, 0x8d, 0xbd, 0xd4, 0xcc, 0x56, 0x90, 0x03, 0xc1, 0x79, 0xd9, 0x34, - 0x99, 0xdf, 0x71, 0xd3, 0xb4, 0x30, 0xc9, 0x42, 0xe2, 0x3f, 0xd8, 0xc0, - 0xd0, 0xea, 0x10, 0xf1, 0xf7, 0xd1, 0x0d, 0x02, 0x15, 0x11, 0x44, 0x88, - 0x8a, 0x45, 0x1d, 0xfc, 0x9a, 0x51, 0x5b, 0xd4, 0xbc, 0x40, 0x50, 0xda, - 0xe7, 0xf5, 0x93, 0xf5, 0x08, 0x4b, 0x3e, 0xa5, 0xa0, 0x05, 0x78, 0x6f, - 0xd8, 0x9f, 0x6e, 0x24, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xcc, 0xa2, 0x7e, 0x46, 0x36, 0x83, 0xba, 0x30, 0xbb, 0x5f, 0x93, 0x00, - 0x68, 0x9b, 0x3b, 0xa4, 0xba, 0xdc, 0x2a, 0x43, 0xe5, 0x11, 0xe1, 0x5f, - 0x58, 0x1d, 0x64, 0xd9, 0x8e, 0x39, 0x88, 0x58, 0x7c, 0x23, 0xe7, 0x7f, - 0x62, 0xcd, 0x1e, 0x0d, 0x92, 0xe6, 0x63, 0x1f, 0x5d, 0x56, 0x17, 0xd8, - 0x26, 0x01, 0x09, 0x75, 0x41, 0xe4, 0xf5, 0xce, 0xb3, 0x73, 0x4a, 0x7b, - 0xe3, 0x95, 0x8f, 0x23, 0x2f, 0xa6, 0x45, 0xdc, 0xb8, 0x6d, 0x64, 0xc2, - 0xf6, 0x8f, 0x4c, 0x42, 0x5f, 0xa9, 0x0e, 0x96, 0x23, 0x1c, 0xf9, 0xbb, - 0xac, 0xe6, 0xaa, 0x1a, 0xc3, 0x3a, 0xca, 0xbc, 0xda, 0xe3, 0x27, 0x46, - 0x0f, 0xb2, 0xcc, 0x43, 0xa2, 0xe1, 0x29, 0x84, 0x81, 0x21, 0xf4, 0xc4, - 0x30, 0x54, 0xa5, 0x2c, 0x78, 0x1e, 0x0a, 0xa5, 0x28, 0xba, 0x26, 0xdb, - 0x45, 0x12, 0x5f, 0xfa, 0x1c, 0x9b, 0x67, 0x1a, 0xe8, 0xd9, 0x5e, 0xc5, - 0x56, 0xbf, 0x6f, 0x85, 0xbb, 0x8d, 0x55, 0x12, 0x0c, 0x81, 0xb8, 0xdf, - 0x65, 0x81, 0x67, 0xf1, 0x49, 0xcb, 0x82, 0x76, 0xd3, 0x6d, 0x4c, 0x28, - 0x3a, 0xa2, 0x64, 0x64, 0x43, 0xe8, 0xb9, 0x96, 0xb9, 0x54, 0x62, 0x49, - 0x15, 0x5d, 0x82, 0xd7, 0x5c, 0xa7, 0x80, 0xf0, 0xc1, 0x8d, 0x45, 0x12, - 0x4e, 0xc1, 0xfd, 0x9a, 0x7a, 0x7b, 0x1b, 0xbf, 0x3f, 0xb6, 0xbd, 0x02, - 0xd2, 0x71, 0x6f, 0x1e, 0x8c, 0xd7, 0xa4, 0x1d, 0xc1, 0x84, 0xe9, 0xcd, - 0x94, 0x83, 0x04, 0xb1, 0xae, 0xc2, 0xff, 0xc6, 0x51, 0x1b, 0x5c, 0x76, - 0xaa, 0x7a, 0xc6, 0x89, 0xa4, 0x05, 0x53, 0x3c, 0xb2, 0x64, 0xbc, 0xa5, - 0xe5, 0xe6, 0x09, 0xf4, 0x8c, 0xbd, 0x1b, 0x91, 0x50, 0x85, 0x48, 0x03, - 0x96, 0x14, 0x94, 0xb4, 0x22, 0x41, 0xdb, 0x96, 0x7f, 0x59, 0xa0, 0x92, - 0x33, 0x16, 0x5a, 0x6c, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xb2, 0xce, 0x85, 0xd3, 0x48, 0x63, 0x8a, 0xe6, 0x27, 0x0d, 0x69, 0x48, - 0xfa, 0xfc, 0x3d, 0x31, 0x65, 0x5e, 0x37, 0xed, 0xdd, 0xb5, 0x14, 0x43, - 0xf5, 0x91, 0xc9, 0x79, 0x9d, 0x6d, 0x09, 0x5d, 0x18, 0xa6, 0xaa, 0xd3, - 0x59, 0xc7, 0x97, 0x6b, 0xf2, 0x4f, 0xbb, 0x09, 0x1c, 0xe9, 0x04, 0x6f, - 0x82, 0x92, 0x9d, 0x09, 0x04, 0xdf, 0xea, 0x08, 0xa0, 0x1c, 0x6e, 0xf2, - 0xee, 0xa8, 0x73, 0x53, 0xca, 0xc8, 0xe4, 0xa5, 0x22, 0xf8, 0xd2, 0x2f, - 0x53, 0xd8, 0x7b, 0x5c, 0x70, 0x18, 0xd0, 0xab, 0x12, 0xb8, 0x45, 0x56, - 0x07, 0x89, 0x54, 0x1b, 0x4c, 0x8f, 0xac, 0x89, 0xae, 0xe1, 0x12, 0x58, - 0xd9, 0xc3, 0x33, 0xad, 0x05, 0x5d, 0x50, 0xdc, 0x4e, 0x1d, 0xe7, 0xef, - 0x7c, 0x75, 0x78, 0x60, 0x2c, 0x1f, 0x42, 0x5e, 0x0c, 0xbb, 0x9b, 0x27, - 0xaa, 0x23, 0x3c, 0x39, 0x31, 0x37, 0xc9, 0x1f, 0x58, 0x72, 0x6e, 0x09, - 0xe9, 0x40, 0x22, 0x57, 0x3b, 0x33, 0xfa, 0xee, 0x1d, 0xec, 0x46, 0x9d, - 0xbd, 0x04, 0x5f, 0xe7, 0x7e, 0x18, 0xe7, 0xa2, 0xe5, 0x2a, 0xc0, 0x30, - 0x7a, 0xfa, 0xcf, 0x1e, 0xc3, 0xe5, 0xf1, 0x4c, 0x2c, 0xec, 0xe9, 0x4a, - 0xf1, 0x02, 0x6d, 0xea, 0xad, 0x2f, 0x23, 0x3c, 0x60, 0xf7, 0xdb, 0x7c, - 0xde, 0x3c, 0xe2, 0x5b, 0x64, 0x1b, 0xff, 0x65, 0xf7, 0x58, 0xb8, 0x06, - 0xbb, 0x2e, 0xf9, 0xe2, 0xc1, 0x39, 0x34, 0x33, 0xf1, 0x54, 0x9e, 0xe0, - 0x16, 0xa6, 0x83, 0xa0, 0x72, 0x93, 0x6c, 0xb8, 0x3a, 0xa3, 0x7c, 0x70, - 0x61, 0x7c, 0x43, 0x0f, 0x67, 0xb0, 0x88, 0x38, 0x5f, 0x40, 0x04, 0x16, - 0x8d, 0x85, 0xe8, 0x06, 0x91, 0x00, 0x9f, 0x12, 0x59, 0x9a, 0x47, 0x7b, - 0x9c, 0xf6, 0x3a, 0x0a, 0xbe, 0x8f, 0x14, 0xf6, 0x26, 0xe4, 0x30, 0xc3, - 0xd6, 0x32, 0xf0, 0x3e, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x12, 0x48, 0xf6, 0x04, 0x4a, 0x33, 0x58, 0xe4, 0x0a, 0x25, 0xaa, 0x96, - 0x9a, 0xb5, 0x23, 0x59, 0x35, 0x0c, 0x89, 0x2d, 0xc7, 0xaf, 0xc5, 0xf7, - 0x96, 0xf1, 0xb9, 0x30, 0xc5, 0x5a, 0x12, 0x2e, 0x67, 0x53, 0x8a, 0x6c, - 0x20, 0xf6, 0x02, 0x76, 0x6f, 0xa6, 0xd7, 0xcb, 0x40, 0xaf, 0x03, 0x78, - 0xd7, 0xc8, 0xa4, 0x13, 0x87, 0x2c, 0x9f, 0xcd, 0x92, 0xec, 0x02, 0x23, - 0x01, 0xce, 0x51, 0x04, 0x0f, 0x2d, 0xaa, 0x58, 0x0c, 0x5c, 0xc5, 0x80, - 0xd8, 0xb9, 0x30, 0x84, 0xcb, 0xb4, 0xee, 0x49, 0x96, 0xcc, 0x3e, 0xb9, - 0x8b, 0xb9, 0x44, 0xc3, 0xd2, 0x1c, 0xcf, 0xfe, 0xee, 0xbf, 0x30, 0x17, - 0xbe, 0x09, 0x45, 0x2c, 0xb0, 0xbe, 0x6e, 0xa4, 0x36, 0x01, 0xcc, 0xde, - 0x9b, 0xe6, 0xfd, 0x4c, 0x3d, 0x13, 0x8d, 0xe9, 0x91, 0x9a, 0xbc, 0xb4, - 0x2c, 0x14, 0x0a, 0x6f, 0x35, 0x2a, 0x1c, 0x08, 0x8c, 0xce, 0x1d, 0x40, - 0xdc, 0x56, 0xfb, 0x47, 0x62, 0x94, 0x7a, 0xbd, 0x86, 0x40, 0xf2, 0x13, - 0x46, 0x21, 0xda, 0x74, 0x8a, 0xc3, 0x97, 0x8f, 0x9e, 0x79, 0x4f, 0x71, - 0x07, 0xfc, 0xa6, 0x61, 0x54, 0x0e, 0x02, 0x06, 0xa1, 0x16, 0x69, 0xe1, - 0xdc, 0xda, 0xc6, 0x2e, 0x8d, 0x62, 0x7a, 0xb3, 0x10, 0x7e, 0x6f, 0xe9, - 0xbf, 0x57, 0x1f, 0x99, 0xf3, 0xb9, 0x07, 0x4a, 0xb4, 0xd2, 0xa7, 0x6c, - 0xeb, 0x2c, 0x63, 0x42, 0x6a, 0x0e, 0x38, 0x91, 0xe2, 0x37, 0x3c, 0xb5, - 0xfc, 0x65, 0x3a, 0x4d, 0x38, 0x15, 0x8c, 0xc6, 0x15, 0xda, 0xd6, 0xb2, - 0xfb, 0x61, 0xc2, 0x4c, 0x9d, 0x1c, 0xc9, 0x1f, 0x71, 0xc5, 0x9e, 0x3c, - 0xe7, 0xac, 0x63, 0x45, 0x0c, 0xb5, 0xc8, 0xa5, 0xf5, 0xce, 0xd8, 0x44, - 0x46, 0xee, 0x91, 0x94, 0x81, 0x76, 0x48, 0x36, 0xac, 0x05, 0x38, 0x14, - 0xf5, 0x1d, 0xed, 0x1a, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xf2, 0xb6, 0xa9, 0xb6, 0xb2, 0x7d, 0x35, 0x6d, 0xdf, 0xe6, 0x10, 0xc7, - 0x29, 0x87, 0x24, 0x83, 0x72, 0xc8, 0xb5, 0x5c, 0xe0, 0x8f, 0x6e, 0x3c, - 0x9c, 0xc5, 0xd0, 0xc8, 0xda, 0xce, 0xa0, 0x4d, 0xbb, 0x06, 0x04, 0x36, - 0xe0, 0xfa, 0xd0, 0x8b, 0x70, 0xfd, 0x9d, 0x93, 0x1b, 0x4b, 0xf3, 0x2f, - 0xa9, 0xf1, 0x54, 0x1e, 0xf6, 0xa6, 0x06, 0x37, 0xa9, 0x84, 0x88, 0xce, - 0x9b, 0x11, 0x81, 0x1b, 0xc5, 0xf3, 0xd5, 0x58, 0x63, 0xfc, 0x49, 0xbd, - 0x9f, 0xbc, 0xb4, 0x92, 0xd4, 0x8b, 0xcd, 0x2c, 0x16, 0x65, 0x61, 0x0e, - 0x9f, 0x4d, 0xbf, 0xf4, 0x30, 0x04, 0x32, 0x4e, 0x67, 0x3f, 0x4c, 0x10, - 0xee, 0x85, 0x49, 0x7f, 0xc4, 0x6c, 0xc8, 0x8e, 0x4a, 0x9a, 0xe0, 0x04, - 0x49, 0x44, 0xd7, 0x90, 0xf7, 0x44, 0xea, 0x94, 0x2c, 0xa6, 0xdc, 0xcd, - 0xa9, 0x0b, 0x63, 0x78, 0x53, 0x62, 0xcc, 0x67, 0xe7, 0x0f, 0x10, 0x71, - 0x02, 0x60, 0x1a, 0x20, 0x38, 0x01, 0x09, 0xf4, 0x8c, 0xa0, 0x67, 0x2a, - 0x03, 0x11, 0x7a, 0xf0, 0x6f, 0x62, 0xb3, 0xd2, 0xbd, 0xcd, 0x74, 0x42, - 0xcb, 0xaf, 0x97, 0x4c, 0x83, 0xd1, 0x34, 0x67, 0x50, 0x19, 0x0f, 0xf0, - 0x46, 0x61, 0x39, 0x58, 0x70, 0x48, 0xfb, 0xa4, 0x14, 0xa8, 0x13, 0x91, - 0xab, 0x84, 0xd8, 0x58, 0x8d, 0xc5, 0x2e, 0xef, 0x4c, 0x86, 0xca, 0x63, - 0x4b, 0xd1, 0x69, 0xb7, 0x97, 0x83, 0xb7, 0x03, 0xb8, 0x9d, 0xef, 0x19, - 0x98, 0xfb, 0xef, 0x9a, 0x11, 0x90, 0x98, 0x32, 0x43, 0x6b, 0xee, 0xcd, - 0xeb, 0xe0, 0x31, 0x53, 0xdf, 0x9f, 0x69, 0x41, 0x06, 0xbb, 0xe8, 0xd6, - 0xf9, 0x40, 0xe1, 0x39, 0x06, 0x92, 0xb4, 0x65, 0x14, 0x82, 0x15, 0x53, - 0x83, 0x53, 0xec, 0x13, 0x65, 0x26, 0x6d, 0xae, 0xe7, 0xe7, 0x57, 0x87, - 0xe0, 0xd9, 0xe6, 0x3e, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xab, 0xaa, 0x2a, 0x1f, 0x6d, 0x64, 0x75, 0xc2, 0x52, 0x8f, 0x49, 0xc0, - 0x33, 0xa3, 0xdb, 0x0a, 0xb5, 0xa7, 0xeb, 0xa8, 0xd5, 0xc5, 0x51, 0xfe, - 0x7b, 0x34, 0x5e, 0x69, 0xf5, 0xe1, 0xeb, 0x27, 0x93, 0x24, 0x49, 0xcf, - 0x78, 0x67, 0xdb, 0x46, 0xf1, 0xe6, 0x91, 0x0e, 0x58, 0x44, 0x71, 0xe8, - 0x0a, 0x15, 0x98, 0x99, 0x28, 0x68, 0xac, 0xa7, 0x12, 0x32, 0x88, 0xb7, - 0xe3, 0x02, 0x66, 0x4d, 0x6e, 0xdb, 0xd6, 0xdf, 0x02, 0xbe, 0x7c, 0x0a, - 0xea, 0xf9, 0x84, 0x6f, 0xb4, 0xe3, 0x62, 0xe7, 0x25, 0x93, 0xae, 0x87, - 0x4c, 0xdc, 0x24, 0x71, 0xe2, 0x09, 0x5e, 0xf2, 0x57, 0x33, 0x7a, 0x28, - 0x97, 0x65, 0x59, 0xb7, 0xfe, 0x66, 0x59, 0x27, 0x70, 0xd9, 0x3d, 0x25, - 0x70, 0x99, 0xe4, 0xcd, 0x62, 0xf7, 0xb6, 0xb0, 0x48, 0xf4, 0xc9, 0xc4, - 0x7a, 0x18, 0x7d, 0x64, 0x8e, 0xb9, 0x34, 0x48, 0x10, 0xa0, 0xde, 0x95, - 0x16, 0xf6, 0x3a, 0xe9, 0x68, 0x57, 0xe4, 0x5a, 0x92, 0x0c, 0x28, 0x18, - 0xfa, 0x32, 0x7e, 0x54, 0xae, 0x0d, 0xaa, 0x73, 0x9a, 0x86, 0x99, 0x33, - 0x9f, 0xb1, 0xe2, 0x64, 0x48, 0xcf, 0x1e, 0xda, 0x88, 0xb7, 0x6a, 0xbf, - 0x08, 0x96, 0xde, 0x60, 0x87, 0x52, 0x34, 0x91, 0xd2, 0xdb, 0xb0, 0xc5, - 0xd6, 0x52, 0xd2, 0x59, 0xa5, 0x90, 0x86, 0xda, 0xbd, 0x34, 0x51, 0x05, - 0x75, 0xdd, 0x9b, 0x7c, 0x01, 0x23, 0x93, 0xd1, 0x01, 0x94, 0xf5, 0xa9, - 0x81, 0x63, 0xe8, 0x3f, 0xd8, 0x5c, 0xdb, 0x61, 0xf3, 0x2e, 0x1f, 0x55, - 0x6f, 0xff, 0x64, 0x67, 0xa4, 0x53, 0x46, 0x3f, 0x53, 0x8a, 0x78, 0xbc, - 0x15, 0x4a, 0x34, 0xfb, 0xa8, 0xff, 0x89, 0x0c, 0x0b, 0x73, 0x5e, 0x0e, - 0x11, 0x32, 0xb0, 0x9e, 0x27, 0x0c, 0xb2, 0xbf, 0x23, 0xd1, 0x44, 0xfc, - 0xf2, 0x5d, 0x37, 0x39, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xab, 0xaa, 0x6a, 0xb9, 0x94, 0x53, 0xcb, 0x13, 0xa7, 0xf4, 0x0b, 0xd0, - 0x4e, 0x9d, 0xbe, 0x2e, 0x9f, 0x54, 0x20, 0xb9, 0x0a, 0xf2, 0x0f, 0x53, - 0x8a, 0x61, 0x55, 0x83, 0x1f, 0x8d, 0xa4, 0x26, 0xb7, 0x6d, 0x3b, 0xef, - 0x35, 0xbf, 0xc9, 0x4b, 0x53, 0x9d, 0x75, 0xac, 0x88, 0x6e, 0x77, 0x14, - 0xd9, 0x5d, 0x59, 0xf7, 0x54, 0x21, 0x41, 0x7f, 0xd2, 0x66, 0x15, 0x6a, - 0x20, 0xaa, 0x8f, 0x10, 0x25, 0x49, 0xb2, 0x0e, 0xa9, 0xc3, 0xc0, 0x5b, - 0x13, 0xdf, 0x67, 0xee, 0x9a, 0xd0, 0xfd, 0x92, 0xfd, 0x82, 0x16, 0x33, - 0xed, 0x3a, 0xf0, 0x95, 0x1f, 0xbc, 0x2b, 0x2b, 0xa7, 0xfe, 0xae, 0x31, - 0xbb, 0xae, 0x03, 0x3b, 0xdb, 0xf9, 0x88, 0x1c, 0x0d, 0x55, 0x7a, 0x56, - 0x2b, 0xc8, 0xdb, 0xa2, 0x2e, 0x2b, 0xe6, 0x66, 0x7f, 0x86, 0xc1, 0xdf, - 0xc5, 0xcf, 0x7e, 0x16, 0x83, 0x5e, 0x33, 0x09, 0x0d, 0xe9, 0xb6, 0xea, - 0x0e, 0x30, 0x0e, 0x69, 0xaf, 0xf3, 0x5c, 0xc7, 0xc5, 0xb4, 0xb5, 0xaf, - 0x0b, 0xaf, 0xb8, 0x1d, 0x0f, 0xee, 0x90, 0xfa, 0x83, 0x58, 0xd1, 0x7f, - 0xeb, 0x54, 0x50, 0x23, 0x5d, 0x42, 0x26, 0x34, 0x71, 0x89, 0xb0, 0x90, - 0x38, 0x54, 0xb5, 0x2f, 0xb8, 0xcd, 0xa3, 0x62, 0xf9, 0x16, 0x88, 0x88, - 0xc5, 0xad, 0x95, 0x25, 0x9f, 0x4b, 0xaf, 0x91, 0x23, 0xae, 0xbd, 0x61, - 0xd4, 0x6e, 0xea, 0x8c, 0x6f, 0x15, 0x35, 0x87, 0x42, 0x10, 0x7c, 0x4c, - 0xf1, 0x8a, 0x5e, 0x63, 0xaf, 0x6f, 0x8b, 0x10, 0x33, 0x4c, 0x6a, 0x12, - 0x55, 0x88, 0x61, 0x53, 0xf5, 0x23, 0x0f, 0x1f, 0xd0, 0x74, 0x6c, 0xe0, - 0xea, 0x26, 0x7f, 0xd2, 0x3e, 0xa7, 0x95, 0x62, 0x37, 0xc7, 0xcf, 0x41, - 0x55, 0xf5, 0x55, 0xf5, 0x64, 0x1c, 0xae, 0xda, 0x6c, 0xf4, 0xa6, 0x11, - 0x1f, 0x9b, 0x3f, 0x4c, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xab, 0xaa, 0xb2, 0x17, 0x65, 0xb4, 0xe7, 0x3c, 0x19, 0x5c, 0x09, 0xab, - 0xae, 0xfd, 0x23, 0x9c, 0xb1, 0x54, 0x69, 0xda, 0xb4, 0x48, 0x27, 0x92, - 0xac, 0xdf, 0x89, 0xb8, 0x1b, 0x8d, 0xa4, 0x26, 0x25, 0x49, 0xe2, 0xa8, - 0xd3, 0xe1, 0xde, 0x5c, 0x8f, 0x09, 0xd8, 0x20, 0x26, 0xb6, 0x7e, 0x5e, - 0x81, 0x71, 0xe7, 0xfb, 0x1f, 0xe9, 0x0c, 0x41, 0xb3, 0x2a, 0xfa, 0x5a, - 0x91, 0xfe, 0xae, 0x31, 0xb7, 0x6d, 0x6d, 0xe4, 0x64, 0xce, 0xd9, 0xd3, - 0xac, 0x0b, 0x34, 0x62, 0x86, 0xc9, 0x58, 0x06, 0x10, 0x0d, 0x92, 0xf6, - 0x21, 0xc5, 0xbb, 0xb1, 0x72, 0x09, 0xa9, 0x73, 0x30, 0xaa, 0x8f, 0x10, - 0x05, 0x41, 0x60, 0x3c, 0xd5, 0xf5, 0xa0, 0x21, 0x53, 0x22, 0xf2, 0x8b, - 0x80, 0x54, 0x98, 0x83, 0xe8, 0xc3, 0xe5, 0x38, 0x97, 0x57, 0xe1, 0x53, - 0x90, 0x07, 0xfd, 0x67, 0xaf, 0x5b, 0x91, 0x6c, 0x64, 0x36, 0xf3, 0xd1, - 0xd3, 0xde, 0x1d, 0x77, 0x60, 0xc3, 0xfc, 0xc5, 0x0f, 0xb3, 0xf9, 0xc8, - 0x00, 0xe7, 0x6e, 0x91, 0xa6, 0xca, 0xee, 0xe6, 0xba, 0x1e, 0xbf, 0x21, - 0x6c, 0xca, 0x72, 0x2c, 0x70, 0x68, 0xce, 0xd0, 0xea, 0x51, 0x3e, 0x97, - 0xb7, 0x24, 0x59, 0xed, 0x34, 0x9e, 0x12, 0x56, 0x4e, 0x6c, 0x4e, 0x2c, - 0x18, 0xf5, 0x0b, 0x0d, 0xc7, 0x18, 0x35, 0xe3, 0xd1, 0x2b, 0x9a, 0x4a, - 0x7f, 0x09, 0x3e, 0x9c, 0x9a, 0xc1, 0x0a, 0x25, 0xcb, 0x64, 0xfb, 0x93, - 0x82, 0x0a, 0x7b, 0x5f, 0x4e, 0x3b, 0x34, 0xc5, 0x28, 0x77, 0x24, 0xd8, - 0xdc, 0xf7, 0x36, 0x58, 0x99, 0xa1, 0xc7, 0x22, 0x22, 0x9b, 0xbb, 0xd4, - 0xaf, 0xe0, 0xaa, 0xa9, 0xe3, 0xa9, 0x77, 0x53, 0xc2, 0xb8, 0x7c, 0xa8, - 0x7f, 0x49, 0x01, 0x13, 0x49, 0x24, 0xb1, 0xa7, 0xd1, 0xc9, 0xd6, 0x50, - 0x54, 0xcc, 0x92, 0x15, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xab, 0xaa, 0x76, 0x01, 0x09, 0x7a, 0xe6, 0xb4, 0x69, 0x2e, 0x70, 0x7b, - 0x3a, 0xd2, 0xf7, 0x34, 0x88, 0xf7, 0xaf, 0x6f, 0x59, 0xf8, 0x89, 0x66, - 0x6d, 0xd4, 0x89, 0xb8, 0x1b, 0x8d, 0xa4, 0x26, 0x4a, 0x92, 0x7a, 0x82, - 0xd1, 0x29, 0xb5, 0xb2, 0xd6, 0x2d, 0xea, 0x3b, 0xd6, 0x7e, 0x1c, 0x05, - 0x16, 0x15, 0xdb, 0xbe, 0xb2, 0x16, 0xc9, 0x06, 0x87, 0xb4, 0xf4, 0xb5, - 0x22, 0xfd, 0x5d, 0x63, 0xdc, 0xb6, 0x8f, 0xa5, 0xf9, 0x63, 0xe8, 0x2e, - 0xd6, 0xa8, 0x49, 0x77, 0xd8, 0xdc, 0x2c, 0xfa, 0x1f, 0xd2, 0x9d, 0xe7, - 0x86, 0xa2, 0x4e, 0xb0, 0x04, 0x23, 0xa3, 0xce, 0xc1, 0xa8, 0x3e, 0x42, - 0x4e, 0x53, 0x8a, 0xe2, 0xef, 0xfb, 0x1f, 0x73, 0x1f, 0x08, 0x27, 0xa9, - 0x71, 0x78, 0x5f, 0x0d, 0x4d, 0x65, 0xcf, 0xc1, 0xaa, 0xab, 0x2a, 0x9e, - 0x4d, 0x5b, 0x54, 0xf4, 0x7e, 0xb1, 0x01, 0x5c, 0x2d, 0x21, 0xd3, 0x95, - 0x99, 0x1e, 0x30, 0x8c, 0x61, 0xf8, 0x0f, 0xf9, 0x48, 0xe7, 0x7d, 0xc4, - 0x38, 0x7a, 0xed, 0xab, 0xa5, 0x82, 0x95, 0xce, 0xb6, 0x21, 0x8b, 0xe4, - 0x29, 0xca, 0x4a, 0x46, 0x4b, 0x25, 0xc5, 0xe9, 0xcd, 0x3f, 0xc4, 0x48, - 0xf5, 0xed, 0xe0, 0xe7, 0xac, 0x8f, 0x0d, 0xe0, 0x8f, 0x3b, 0x80, 0xb5, - 0xd0, 0xee, 0x78, 0x63, 0xa7, 0x04, 0x2c, 0xd4, 0xaa, 0x23, 0x20, 0x1f, - 0xd6, 0xf5, 0x07, 0x02, 0x42, 0x19, 0x79, 0x9a, 0x1f, 0x59, 0x2b, 0xe5, - 0x80, 0x43, 0x00, 0xcc, 0xef, 0xf6, 0xc6, 0xd4, 0x76, 0x1e, 0x94, 0xd2, - 0x8c, 0x9f, 0x0c, 0x54, 0x57, 0x4a, 0x1e, 0x42, 0x50, 0x95, 0xa9, 0xe1, - 0x54, 0x82, 0x04, 0x46, 0x90, 0xe1, 0x6f, 0xed, 0x3f, 0x36, 0x0a, 0xcf, - 0xe1, 0xd7, 0xad, 0xdf, 0x3e, 0x5f, 0x9c, 0x67, 0x24, 0x85, 0x6b, 0xc4, - 0x33, 0xf1, 0x62, 0x72, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xab, 0x2a, 0xf7, 0x72, 0x74, 0x3a, 0x4a, 0xe6, 0xc1, 0x05, 0x39, 0x99, - 0x0f, 0xd4, 0x8c, 0xa9, 0x4e, 0xd0, 0x22, 0x66, 0x58, 0x9d, 0x68, 0x66, - 0x6d, 0xd4, 0x89, 0xb8, 0x1b, 0x8d, 0xa4, 0x26, 0x25, 0x49, 0x1f, 0xc4, - 0x3b, 0x6b, 0x20, 0x32, 0x23, 0x9e, 0x2e, 0x69, 0xeb, 0xc9, 0xc2, 0x4e, - 0xbb, 0x0c, 0x56, 0x86, 0x6f, 0x13, 0xab, 0x83, 0x43, 0x5a, 0xfa, 0x5a, - 0x91, 0xfe, 0xae, 0x31, 0xb7, 0x8d, 0xa3, 0xf6, 0x61, 0xc4, 0x3f, 0xc4, - 0x3a, 0x7d, 0x04, 0xb4, 0x63, 0x28, 0x96, 0xc0, 0xa8, 0xff, 0x44, 0xf1, - 0x27, 0xb1, 0xe3, 0x2b, 0xc1, 0xc8, 0xa8, 0x73, 0x30, 0xaa, 0x8f, 0x10, - 0xbb, 0xae, 0x54, 0x55, 0xf2, 0x1e, 0xba, 0x10, 0x90, 0x5e, 0xad, 0x97, - 0x18, 0x41, 0x3c, 0x9b, 0x29, 0x53, 0x9c, 0xa4, 0xbe, 0xb7, 0x0c, 0xc3, - 0x87, 0x6f, 0x08, 0xb2, 0x8c, 0x5e, 0x33, 0x09, 0x41, 0x97, 0x4e, 0x34, - 0x77, 0xee, 0x27, 0xaa, 0x68, 0xcb, 0x67, 0x6b, 0x75, 0x6f, 0x7f, 0xc9, - 0x58, 0xd2, 0xe4, 0xde, 0xdc, 0x1d, 0xd2, 0x66, 0x12, 0x88, 0xb1, 0x7f, - 0x17, 0xa6, 0x93, 0x59, 0xd6, 0x48, 0x12, 0x22, 0xdb, 0xd3, 0x46, 0xf0, - 0xb9, 0x05, 0xd6, 0x68, 0x95, 0x2f, 0x99, 0xf5, 0xed, 0x07, 0x46, 0x3d, - 0xe5, 0xd0, 0xa3, 0x45, 0xaa, 0x11, 0x33, 0x8f, 0x0f, 0x20, 0x6a, 0x14, - 0x74, 0xc7, 0x31, 0x4e, 0x0c, 0xf5, 0xb8, 0x49, 0x6b, 0x0d, 0xfc, 0x90, - 0x4f, 0xf7, 0x55, 0x67, 0xe2, 0xf2, 0x2d, 0xe1, 0x99, 0x37, 0x5d, 0x19, - 0xbc, 0x69, 0x1e, 0xc3, 0xb9, 0x30, 0x2a, 0x30, 0x4b, 0x4d, 0x1d, 0xd2, - 0x89, 0xd6, 0x30, 0xb2, 0x0f, 0x1a, 0xc5, 0x69, 0x6c, 0xbc, 0x8f, 0x12, - 0x1a, 0x6d, 0x6f, 0xcf, 0x19, 0x5c, 0x95, 0x55, 0x1e, 0x97, 0x48, 0xc1, - 0xc3, 0x4c, 0x21, 0x4f, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xab, 0x6a, 0x25, 0x1e, 0x3b, 0x2c, 0x83, 0xa9, 0xd0, 0xc4, 0x92, 0x2a, - 0xe4, 0x10, 0x63, 0xd5, 0xd1, 0xf3, 0x35, 0x03, 0x58, 0x9d, 0x68, 0x66, - 0x6d, 0xd4, 0x89, 0xb8, 0x1b, 0x8d, 0xa4, 0x26, 0xb7, 0xcd, 0x85, 0xe6, - 0x17, 0xba, 0xf4, 0x08, 0x64, 0x29, 0x06, 0x92, 0x78, 0x5a, 0x59, 0x8e, - 0x4c, 0xac, 0x3b, 0xb8, 0x25, 0xb1, 0xe3, 0x2b, 0xc1, 0xc8, 0xa8, 0x73, - 0x30, 0xaa, 0x8f, 0x10, 0x00, 0x20, 0x52, 0x55, 0xdc, 0x8d, 0x28, 0x12, - 0x70, 0x0b, 0x08, 0x78, 0x60, 0xe7, 0xe5, 0xa3, 0x97, 0x06, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x97, 0xfd, 0x89, 0x2a, 0xda, 0x12, 0x02, 0xe2, 0x92, 0x47, 0x5e, 0x58, - 0x2d, 0xc9, 0xd4, 0xa4, 0xfb, 0x5c, 0x2c, 0x80, 0x56, 0x7c, 0x9b, 0x72, - 0x8c, 0x92, 0xab, 0x80, 0x4e, 0x07, 0x72, 0x4b, 0x34, 0xb3, 0xf3, 0xff, - 0xdc, 0xd6, 0x1b, 0x68, 0xf7, 0x83, 0x69, 0xcc, 0xd7, 0xfb, 0xce, 0x8e, - 0xfe, 0x1d, 0x2f, 0xe7, 0x57, 0xf3, 0xee, 0x85, 0xf2, 0xe1, 0x8c, 0xaa, - 0x18, 0xf5, 0x67, 0x5e, 0xe8, 0xa9, 0xb2, 0xe8, 0xfd, 0xa9, 0x39, 0x15, - 0x17, 0xc0, 0xb5, 0xb3, 0x7e, 0xe3, 0xe8, 0x39, 0xc7, 0x8a, 0xe4, 0x31, - 0x1e, 0x5b, 0x7b, 0xa6, 0xc1, 0x49, 0x75, 0xe9, 0x83, 0xa9, 0x19, 0x61, - 0x93, 0x25, 0xee, 0xd2, 0x4d, 0x43, 0x09, 0xbc, 0x22, 0xfa, 0x21, 0xb1, - 0xfe, 0xa7, 0xc2, 0xf1, 0x0f, 0xdb, 0xc3, 0x1e, 0x9f, 0x33, 0x9c, 0xda, - 0x84, 0x7b, 0xf6, 0xbd, 0xf8, 0xbf, 0x37, 0x18, 0x83, 0x72, 0xb5, 0xb1, - 0xc5, 0xd2, 0x3e, 0x5d, 0xb7, 0x96, 0x68, 0x9b, 0x0f, 0x95, 0x41, 0x9a, - 0x8d, 0xbd, 0x72, 0x7e, 0xd9, 0x4b, 0x74, 0x7b, 0x40, 0x07, 0xe9, 0x2d, - 0x5d, 0xcc, 0xd1, 0x50, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xab, 0x32, 0x2d, 0x90, 0x08, 0x96, 0xe5, 0x27, 0xdf, 0xb5, 0x1e, 0x5c, - 0xce, 0x9c, 0x42, 0x71, 0xac, 0xf2, 0x35, 0x03, 0x58, 0x9d, 0x68, 0x66, - 0x6d, 0xd4, 0x89, 0xb8, 0x1b, 0x8d, 0xa4, 0x26, 0x25, 0x99, 0xcb, 0x80, - 0x03, 0x2d, 0x5a, 0x2c, 0xa6, 0x26, 0xeb, 0xc0, 0x69, 0xe6, 0x42, 0xff, - 0x6f, 0x13, 0xb3, 0x28, 0x71, 0x13, 0xab, 0x83, 0x43, 0x5a, 0xfa, 0x5a, - 0x91, 0xfe, 0xae, 0x31, 0x00, 0xf2, 0xcf, 0xbb, 0x62, 0x39, 0x78, 0x06, - 0x2e, 0x9b, 0x62, 0x26, 0x2e, 0x8d, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xbb, 0x7e, 0x28, 0xa5, 0xb0, 0x3c, 0x1d, 0x1f, 0x75, 0x7b, 0x9f, 0xd3, - 0x80, 0x70, 0x06, 0xa1, 0x4d, 0x9b, 0x3d, 0x9f, 0xbf, 0xb7, 0x0c, 0xc3, - 0x87, 0x6f, 0x08, 0xb2, 0x8c, 0x5e, 0x33, 0x09, 0x6b, 0xbd, 0x9e, 0x0b, - 0x35, 0x4b, 0xec, 0x3e, 0x22, 0x79, 0x04, 0xe3, 0xa1, 0x04, 0x2c, 0x59, - 0xc3, 0xaf, 0x7e, 0x3c, 0x71, 0x96, 0x6e, 0x3f, 0x55, 0x55, 0xca, 0x0b, - 0x8e, 0x05, 0x0b, 0x28, 0x6c, 0x3d, 0x3a, 0x21, 0x3d, 0x83, 0xb3, 0x9e, - 0x23, 0x60, 0x6a, 0x62, 0xe7, 0x16, 0x93, 0x89, 0xa7, 0xef, 0x27, 0x6c, - 0xb3, 0x1d, 0x18, 0x83, 0xfa, 0x26, 0x7e, 0xc7, 0x06, 0x87, 0xde, 0x41, - 0x32, 0x49, 0x98, 0x9d, 0x16, 0x13, 0x75, 0xde, 0xe3, 0x45, 0xb8, 0xa3, - 0x1e, 0x6a, 0x49, 0x44, 0x6d, 0x4d, 0x3e, 0x32, 0x84, 0x45, 0x21, 0x73, - 0x37, 0x68, 0xe9, 0x02, 0x3a, 0xd8, 0xe8, 0x3a, 0x87, 0x61, 0xfa, 0x02, - 0x0a, 0xc5, 0x7c, 0xaf, 0xe3, 0x09, 0xd7, 0x81, 0x3b, 0x6f, 0x87, 0xd5, - 0x41, 0x97, 0xca, 0xd7, 0x77, 0xf8, 0xb4, 0x38, 0x96, 0x8e, 0x38, 0xec, - 0xdb, 0x88, 0xd0, 0x27, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xab, 0x36, 0x2b, 0x36, 0xfa, 0x78, 0x2a, 0xe8, 0x7b, 0xc1, 0xbe, 0xb4, - 0xab, 0x36, 0x3f, 0x71, 0xac, 0xf2, 0x35, 0x03, 0x58, 0x9d, 0x68, 0x66, - 0x6d, 0xd4, 0x89, 0xb8, 0x1b, 0x8d, 0xa4, 0x26, 0x25, 0x3f, 0x3c, 0x87, - 0xc3, 0xe8, 0x42, 0x0d, 0x5e, 0x6c, 0x14, 0x43, 0x4a, 0x46, 0x51, 0xff, - 0x6f, 0x13, 0xb3, 0x28, 0x71, 0x13, 0xab, 0x83, 0x43, 0x5a, 0xfa, 0x5a, - 0x91, 0xfe, 0xae, 0x31, 0x93, 0xc6, 0x98, 0x86, 0x15, 0x4d, 0x9a, 0x7e, - 0x42, 0x8d, 0xd6, 0xf0, 0x26, 0x75, 0x87, 0xa9, 0xba, 0x75, 0x2a, 0x99, - 0xbc, 0x75, 0x72, 0xdb, 0xc5, 0xeb, 0x4b, 0x42, 0xf2, 0x52, 0xce, 0x52, - 0xf2, 0x39, 0x7b, 0xd7, 0xc1, 0x16, 0x5a, 0x16, 0x5f, 0xa1, 0x3c, 0x58, - 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, - 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x7f, 0x14, 0xc3, 0x58, - 0x68, 0x9b, 0xe9, 0xa3, 0x2e, 0x7b, 0xd5, 0xbb, 0xfd, 0x17, 0xf1, 0x51, - 0xe2, 0x60, 0x12, 0x13, 0xa8, 0x81, 0x9d, 0xf1, 0xa7, 0x53, 0x82, 0x15, - 0xe8, 0xb9, 0xb2, 0x0c, 0x81, 0x94, 0x78, 0xe2, 0x26, 0xbd, 0xf5, 0x8a, - 0x97, 0x10, 0xaf, 0xb4, 0xcc, 0x46, 0x83, 0xb5, 0x2b, 0x75, 0x6f, 0x16, - 0x8b, 0x12, 0xc0, 0xa6, 0x80, 0x4f, 0x7c, 0x09, 0x38, 0x61, 0xff, 0x5d, - 0x6e, 0xcf, 0xd9, 0x81, 0x7f, 0x7d, 0x88, 0x38, 0x8b, 0xcf, 0xcf, 0x90, - 0xec, 0xff, 0xcd, 0x17, 0x44, 0x0d, 0x36, 0x0f, 0x2b, 0xa4, 0x68, 0xc1, - 0x6e, 0xf0, 0x2d, 0xbf, 0xee, 0x85, 0xe0, 0x27, 0x74, 0x53, 0xaa, 0xb2, - 0x47, 0xe0, 0x81, 0xdb, 0x67, 0x2b, 0xaa, 0x33, 0x1c, 0x10, 0xfd, 0xf4, - 0x11, 0xa5, 0x5f, 0x3e, 0x78, 0x41, 0xce, 0x21, 0x72, 0x5b, 0x65, 0x7f, - 0xf6, 0xa7, 0xe4, 0x30, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x2b, 0xdf, 0x75, 0xc4, 0x4d, 0xd8, 0xf2, 0x3a, 0xc8, 0x1e, 0xaa, 0xaa, - 0xab, 0x36, 0x3f, 0x71, 0xac, 0xf2, 0x35, 0x03, 0x58, 0x9d, 0x68, 0x66, - 0x6d, 0xd4, 0x89, 0xb8, 0x1b, 0x8d, 0xa4, 0x26, 0x6e, 0x58, 0x94, 0x92, - 0xa7, 0x8d, 0xa2, 0x6b, 0xca, 0x19, 0x24, 0x49, 0xdc, 0x2e, 0x36, 0xaa, - 0x4a, 0x62, 0x77, 0x70, 0x4b, 0x62, 0xc7, 0x57, 0x82, 0x91, 0x51, 0xe7, - 0x60, 0x54, 0x1f, 0x21, 0xfc, 0xb4, 0xe9, 0x49, 0x04, 0x32, 0xdd, 0xaf, - 0x3d, 0x35, 0x48, 0x92, 0xb8, 0x5d, 0x6c, 0x54, 0x95, 0xc4, 0xee, 0xe0, - 0x96, 0xc4, 0x8e, 0xaf, 0x04, 0x23, 0xa3, 0xce, 0xc1, 0xa8, 0x3e, 0x42, - 0x72, 0xcd, 0x99, 0x9b, 0x39, 0xe5, 0x3b, 0x7a, 0xd0, 0xbe, 0xc6, 0x71, - 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, - 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xb8, 0x7e, 0x6a, 0x83, - 0x7d, 0x05, 0x21, 0xfb, 0xa2, 0x39, 0x2e, 0x70, 0x97, 0x39, 0x85, 0xbd, - 0xc7, 0x12, 0x1a, 0x37, 0x48, 0xf0, 0xae, 0x61, 0x87, 0x81, 0xbf, 0x76, - 0x6d, 0x4b, 0xb4, 0x45, 0x7a, 0xbf, 0x44, 0xe3, 0xf2, 0x74, 0xcd, 0xb8, - 0x5f, 0x58, 0x58, 0x2b, 0x0a, 0x16, 0x5c, 0x75, 0x0b, 0x3c, 0xe4, 0x5d, - 0xd6, 0x82, 0xe2, 0x76, 0x9f, 0xc2, 0x80, 0x1d, 0x0e, 0xed, 0x82, 0x36, - 0xdf, 0x4d, 0x4f, 0x72, 0x00, 0x26, 0xdd, 0xc3, 0x0b, 0x5e, 0x2a, 0x2b, - 0x5b, 0x63, 0x85, 0xce, 0x6c, 0x88, 0x6e, 0x47, 0x84, 0x9c, 0xba, 0x89, - 0x3f, 0x9c, 0xeb, 0x33, 0x60, 0xb9, 0xe2, 0x29, 0x5f, 0xa5, 0x1a, 0x35, - 0x02, 0x1a, 0xea, 0xca, 0xe9, 0x71, 0xb9, 0x02, 0x47, 0xc6, 0x8e, 0xb8, - 0x75, 0x23, 0x52, 0xb4, 0x07, 0x85, 0x17, 0xfd, 0xc5, 0x78, 0xe6, 0x06, - 0xf1, 0x78, 0x22, 0x2e, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x6b, 0x95, 0xb6, 0x3c, 0x00, 0xae, 0x55, 0x55, 0xaa, 0x1e, 0xaa, 0xaa, - 0xab, 0x36, 0x3f, 0x71, 0xac, 0xf2, 0x35, 0x03, 0x58, 0x9d, 0x68, 0x66, - 0x6d, 0xd4, 0x89, 0xb8, 0x1b, 0x8d, 0xa4, 0x26, 0x61, 0xee, 0xc7, 0xa4, - 0x02, 0x89, 0xfe, 0xff, 0xfe, 0x5b, 0xfe, 0xff, 0x02, 0xa4, 0xbd, 0x53, - 0x05, 0xd8, 0xa1, 0x09, 0x08, 0xd8, 0x39, 0x33, 0x48, 0x7d, 0x9d, 0x29, - 0x53, 0xa7, 0xed, 0x73, 0xfc, 0xb0, 0x47, 0xdd, 0xbe, 0x6b, 0xdd, 0xb6, - 0x91, 0x34, 0x48, 0x92, 0xb8, 0x5d, 0x6c, 0x54, 0x95, 0xc4, 0xee, 0xe0, - 0x96, 0xc4, 0x8e, 0xaf, 0x04, 0x23, 0xa3, 0xce, 0xc1, 0xa8, 0x3e, 0x42, - 0xf8, 0x48, 0x70, 0x9d, 0x6f, 0x64, 0x50, 0x14, 0x65, 0xd9, 0xea, 0xba, - 0x4e, 0x53, 0x60, 0xa0, 0xbd, 0xae, 0xf0, 0xc7, 0x30, 0xcb, 0xb7, 0x46, - 0xcb, 0xc9, 0x02, 0x0d, 0x1e, 0x5d, 0xe2, 0x3a, 0x1e, 0x4c, 0x39, 0x78, - 0x7a, 0xff, 0x3c, 0x62, 0x7d, 0x7d, 0xee, 0x06, 0x8e, 0x9f, 0x26, 0xd7, - 0x1f, 0x42, 0xd4, 0x0c, 0x4f, 0xa9, 0x3a, 0x80, 0x02, 0xd2, 0x7c, 0x93, - 0x2a, 0xa4, 0x09, 0x4f, 0x4c, 0x9a, 0xdc, 0xed, 0x73, 0xf5, 0x35, 0xcb, - 0xc5, 0x6c, 0x2c, 0xba, 0x68, 0x67, 0xc3, 0xb6, 0x7e, 0xce, 0xec, 0xd5, - 0xc5, 0x51, 0x54, 0x53, 0xbe, 0xf9, 0xb4, 0x60, 0x91, 0x60, 0x85, 0x00, - 0xa2, 0xf8, 0x3a, 0x08, 0x21, 0xe7, 0x96, 0x8d, 0x66, 0x86, 0x0a, 0xf5, - 0x6c, 0x36, 0xa8, 0xd0, 0xc7, 0x5c, 0x8a, 0x55, 0x99, 0xa7, 0x29, 0x1e, - 0xb9, 0x10, 0xd9, 0xe4, 0x28, 0xb6, 0x98, 0x2e, 0x11, 0xe2, 0x45, 0xd9, - 0xec, 0xfc, 0xc9, 0x32, 0x86, 0x3d, 0xb4, 0x8f, 0xde, 0x28, 0xba, 0x96, - 0xbc, 0x9f, 0x36, 0x63, 0x3d, 0x86, 0x7d, 0xdd, 0xc6, 0xb2, 0xc5, 0xd9, - 0x10, 0xc3, 0xcb, 0x68, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0xf3, 0xb0, 0x07, 0x01, 0x55, 0x55, 0x55, 0x55, 0xaa, 0x1e, 0xaa, 0xaa, - 0xab, 0x36, 0x3f, 0x71, 0xac, 0xf2, 0x35, 0x03, 0x58, 0x9d, 0x68, 0x66, - 0x6d, 0xd4, 0x89, 0xb8, 0x1b, 0x8d, 0xa4, 0x26, 0xf5, 0x29, 0x82, 0xb2, - 0x48, 0x92, 0x24, 0x49, 0x6d, 0x27, 0xb6, 0x6d, 0x4a, 0x46, 0x51, 0xff, - 0x6f, 0x13, 0xb3, 0x28, 0x71, 0x13, 0xab, 0x83, 0x43, 0x5a, 0xfa, 0x5a, - 0x91, 0xfe, 0xae, 0x31, 0x52, 0x1f, 0xe8, 0x05, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe7, 0xd6, 0xec, 0x5e, 0x81, 0x20, 0x08, 0x82, 0x89, 0xe6, 0x7c, 0xdf, - 0xbc, 0x6a, 0x7b, 0xf5, 0xe2, 0x5f, 0x2c, 0x80, 0x56, 0x7c, 0x9b, 0x72, - 0x8c, 0x92, 0xab, 0x80, 0x4e, 0x07, 0x72, 0x4b, 0x67, 0x66, 0x66, 0x66, - 0xee, 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, 0xdf, 0xbd, 0xfe, 0x81, - 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, 0x0d, 0xd7, 0x7b, 0xed, 0x42, 0x27, - 0xf9, 0x14, 0xd4, 0x3d, 0xc6, 0x57, 0x7c, 0x45, 0x13, 0x0d, 0x17, 0x08, - 0x9a, 0x8b, 0x64, 0xbd, 0x46, 0xcf, 0x8b, 0x25, 0xc2, 0x01, 0xbb, 0x7e, - 0x6c, 0xd9, 0x78, 0x02, 0x8e, 0x39, 0x17, 0x2c, 0xa5, 0xb0, 0xbe, 0x34, - 0x2f, 0xe5, 0x52, 0x4e, 0x7e, 0x7a, 0xd6, 0x41, 0x1f, 0x65, 0x7b, 0xac, - 0x93, 0x1e, 0x8f, 0x05, 0xbc, 0x09, 0x3b, 0x02, 0x12, 0x7d, 0x1f, 0xd9, - 0x9c, 0x3c, 0x3e, 0xae, 0xa8, 0x27, 0x32, 0x48, 0x3f, 0xea, 0xa3, 0x56, - 0x1e, 0xd3, 0xd4, 0xf0, 0x4f, 0x1e, 0x6c, 0xf6, 0xbb, 0x24, 0x75, 0x52, - 0x7c, 0xfb, 0x80, 0xd5, 0x18, 0x19, 0x20, 0xfb, 0xdf, 0xaa, 0x39, 0x48, - 0xd7, 0x68, 0x10, 0x24, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, - 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, - 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, - 0x07, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xaa, 0x1e, 0xaa, 0xaa, - 0xab, 0x36, 0x3f, 0x71, 0xac, 0xf2, 0x35, 0x03, 0x58, 0x9d, 0x68, 0x66, - 0x6d, 0xd4, 0x89, 0xb8, 0x1b, 0x8d, 0xa4, 0x26, 0x3a, 0x92, 0x24, 0x49, - 0xb6, 0x6d, 0xdb, 0xb6, 0x91, 0x34, 0x48, 0x92, 0xb8, 0x5d, 0x6c, 0x54, - 0x95, 0xc4, 0xee, 0xe0, 0x96, 0xc4, 0x8e, 0xaf, 0x04, 0x23, 0xa3, 0xce, - 0xc1, 0xa8, 0x3e, 0x42, 0xc7, 0x6d, 0xdb, 0xb6, 0x48, 0x92, 0x24, 0x49, - 0x6d, 0x27, 0xb6, 0x6d, 0x4a, 0x46, 0x51, 0xff, 0x6f, 0x13, 0xb3, 0x28, - 0x71, 0x13, 0xab, 0x83, 0x43, 0x5a, 0xfa, 0x5a, 0x91, 0xfe, 0xae, 0x31, - 0x5c, 0x18, 0x86, 0xe1, 0x81, 0x20, 0x08, 0x02, 0x8a, 0xb8, 0x7d, 0x5f, - 0xbb, 0x98, 0x9c, 0x4b, 0xe0, 0x73, 0x5b, 0x7b, 0x52, 0x90, 0xfe, 0x58, - 0xe8, 0xd3, 0xdc, 0xeb, 0xa4, 0x33, 0x7b, 0x11, 0x01, 0x00, 0x00, 0x80, - 0x54, 0x55, 0x55, 0xd5, 0xa9, 0x4c, 0xa9, 0x2a, 0xad, 0x08, 0x1e, 0x1b, - 0xaf, 0xde, 0x06, 0x08, 0x5c, 0x89, 0x05, 0x80, 0x11, 0x93, 0x58, 0x4d, - 0xc5, 0x60, 0x9b, 0x60, 0x25, 0x49, 0x92, 0x24, 0xdb, 0xb6, 0x6d, 0xdb, - 0x48, 0x1a, 0x24, 0x49, 0xdc, 0x2e, 0x36, 0xaa, 0x4a, 0x62, 0x77, 0x70, - 0x4b, 0x62, 0xc7, 0x57, 0x82, 0x91, 0x51, 0xe7, 0x60, 0x54, 0x1f, 0x21, - 0x01, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0x1f, 0x7f, 0x90, 0xfe, 0x9f, - 0x82, 0xef, 0x45, 0xa9, 0x04, 0x9d, 0x6d, 0x08, 0x07, 0x9d, 0xd2, 0x2c, - 0x9f, 0xcd, 0x69, 0xc4, 0x68, 0xf2, 0x6f, 0x65, 0xab, 0xaa, 0xaa, 0xaa, - 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, - 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, - 0xbd, 0x08, 0xc3, 0x19 -}; + 0xca, 0x15, 0xe2, 0xc7, 0x85, 0x22, 0x07, 0x21, 0x09, 0x58, 0xb7, 0x17, 0xe3, 0xd9, 0xd3, 0xfe, 0xb1, 0x8e, 0x33, + 0x0a, 0x7d, 0x4c, 0x2c, 0xf3, 0x2e, 0x5f, 0x0e, 0x6a, 0x73, 0x19, 0xc9, 0x45, 0xbc, 0xca, 0x96, 0x1d, 0x03, 0x9f, + 0x02, 0x71, 0xa2, 0x89, 0x5b, 0xa0, 0xfb, 0xda, 0x01, 0xa7, 0x9b, 0x80, 0xc3, 0x8f, 0x0f, 0xd5, 0x67, 0x4b, 0xd5, + 0x41, 0xb3, 0x56, 0x12, 0x83, 0x8b, 0x3c, 0x51, 0xc5, 0xc0, 0xa5, 0xa2, 0x2d, 0xb2, 0x3b, 0x29, 0xfc, 0x61, 0x9b, + 0x16, 0x3e, 0x9d, 0xab, 0x79, 0xa3, 0xea, 0x87, 0xfc, 0x95, 0x76, 0x26, 0x56, 0xc3, 0x9e, 0x46, 0xb0, 0x20, 0x7a, + 0x16, 0x50, 0x5f, 0x2a, 0x87, 0x5d, 0x9f, 0x80, 0xf0, 0x46, 0x35, 0x5d, 0xb4, 0xac, 0xbd, 0x7f, 0x74, 0x5b, 0xa2, + 0x70, 0x00, 0xb4, 0x89, 0x6e, 0x38, 0x7b, 0xe7, 0x97, 0x47, 0x98, 0x8b, 0x34, 0x1f, 0xdc, 0xa5, 0x24, 0x0c, 0x1e, + 0x23, 0xa8, 0xb1, 0x6d, 0x4a, 0xa4, 0x25, 0x0f, 0x1a, 0xb9, 0x39, 0x36, 0xa2, 0xdc, 0x4f, 0x3c, 0x93, 0x19, 0x04, + 0x7e, 0xc5, 0xae, 0xe6, 0xac, 0xe8, 0xab, 0x57, 0x63, 0xec, 0x54, 0xf9, 0x96, 0x64, 0x7b, 0x58, 0xc1, 0x3d, 0xb6, + 0x93, 0x57, 0x81, 0x82, 0x46, 0x98, 0xd1, 0x5a, 0xeb, 0x2d, 0x6d, 0x9c, 0x3e, 0x44, 0x90, 0x73, 0x64, 0x83, 0xd0, + 0x5e, 0x72, 0x43, 0x46, 0xee, 0x29, 0xa9, 0x2d, 0x98, 0x1d, 0x0d, 0xed, 0x4d, 0xc8, 0xf6, 0x5f, 0x0c, 0x0c, 0x35, + 0xd3, 0x55, 0x4b, 0x86, 0xc2, 0x83, 0xd1, 0x6b, 0x83, 0x4a, 0x35, 0xe7, 0x4f, 0xb3, 0x46, 0x31, 0x4f, 0x69, 0xef, + 0x6a, 0x94, 0xca, 0x19, 0xed, 0x06, 0x1e, 0x6c, 0x50, 0x7a, 0x45, 0xf5, 0x7b, 0xb0, 0xb0, 0x12, 0x3f, 0x18, 0xeb, + 0x79, 0x49, 0x92, 0xd8, 0xc1, 0xad, 0x44, 0xb7, 0x54, 0xa8, 0x86, 0x03, 0xad, 0x0e, 0xc0, 0x3a, 0x8b, 0x81, 0x23, + 0xe2, 0xf9, 0xae, 0xfd, 0xe4, 0xd9, 0x2f, 0x27, 0x00, 0xff, 0x17, 0x04, 0x56, 0xa4, 0x4f, 0xc9, 0xad, 0x7c, 0x1f, + 0x39, 0x9e, 0x47, 0xf9, 0x6b, 0x04, 0xd2, 0xe7, 0x9e, 0x98, 0xdc, 0x13, 0x59, 0x1b, 0xa2, 0x07, 0xc5, 0xff, 0xbb, + 0x8c, 0x75, 0xa2, 0x9e, 0xb5, 0xd5, 0xe8, 0xdd, 0xf0, 0xde, 0xa1, 0x24, 0x6a, 0xc1, 0xe0, 0x71, 0xd4, 0x8b, 0x02, + 0x3d, 0xcd, 0xf9, 0xf0, 0xa7, 0x8f, 0x7f, 0xfb, 0xa7, 0x03, 0xc2, 0x74, 0x49, 0x89, 0xb0, 0x69, 0xe8, 0x52, 0x23, + 0x5e, 0xde, 0x9f, 0xd3, 0xf4, 0x3d, 0xd7, 0x25, 0xef, 0x34, 0x16, 0x65, 0xdf, 0x16, 0x74, 0xef, 0x08, 0xac, 0x52, + 0xda, 0x79, 0x96, 0x17, 0x7e, 0xca, 0x5f, 0xe5, 0x57, 0x25, 0x2e, 0x0a, 0xfa, 0xb8, 0xc5, 0x95, 0xf1, 0x3a, 0xc2, + 0x17, 0x13, 0x36, 0x25, 0x0b, 0xeb, 0x06, 0x57, 0xe5, 0x05, 0x25, 0xbc, 0x48, 0xc0, 0x04, 0xfd, 0xe4, 0x6c, 0xcb, + 0x29, 0x6e, 0x6d, 0xf2, 0x04, 0x8e, 0x93, 0x77, 0x90, 0x09, 0xf3, 0x67, 0x36, 0x73, 0xd5, 0xf5, 0x04, 0x35, 0xe0, + 0x3d, 0x0d, 0xf4, 0x85, 0xdb, 0x8c, 0xc8, 0x55, 0x5d, 0x12, 0xd6, 0x7e, 0xe1, 0xdf, 0x5f, 0xd5, 0x4d, 0x9e, 0x19, + 0x3f, 0x20, 0xd5, 0xf2, 0x0e, 0x3a, 0xfa, 0x05, 0xa9, 0x35, 0x49, 0xd7, 0x29, 0x24, 0x31, 0x9b, 0x0e, 0x43, 0x8c, + 0xfa, 0x48, 0x06, 0xe0, 0x3c, 0x76, 0x98, 0x2a, 0xeb, 0x36, 0x99, 0x08, 0x12, 0xf6, 0xe6, 0xc6, 0x9a, 0x40, 0xce, + 0xdc, 0x20, 0x72, 0x7c, 0x5d, 0x02, 0x2e, 0xda, 0x67, 0x5e, 0x7c, 0x66, 0x91, 0x38, 0x6a, 0xa0, 0x6c, 0x80, 0xd0, + 0xc4, 0x63, 0xe1, 0x19, 0x32, 0xd3, 0x92, 0x02, 0x61, 0x94, 0xe9, 0x1f, 0x03, 0x9c, 0x50, 0xf9, 0x5d, 0x2a, 0x7d, + 0x75, 0x28, 0x2d, 0x7a, 0xc4, 0x80, 0x77, 0xbd, 0xee, 0x39, 0x6c, 0x98, 0x80, 0x9e, 0x49, 0xc9, 0x26, 0xcf, 0xa0, + 0x13, 0x1c, 0xea, 0x65, 0x73, 0xf3, 0x1b, 0x2a, 0xc6, 0x2a, 0x4f, 0x35, 0x19, 0x57, 0xc8, 0x1b, 0x8e, 0xf0, 0xa9, + 0x12, 0x0c, 0xa9, 0x69, 0xf3, 0x70, 0x11, 0x6a, 0x46, 0xb7, 0x7c, 0xfd, 0x80, 0x60, 0xbc, 0x99, 0xdc, 0x81, 0xbb, + 0x59, 0x78, 0xca, 0x4a, 0x1d, 0x11, 0xc6, 0x20, 0x81, 0x68, 0x2e, 0x84, 0xb9, 0xf4, 0x9b, 0x78, 0xe1, 0x44, 0x7b, + 0xcb, 0xd5, 0x96, 0x71, 0x6c, 0x69, 0x4b, 0xd8, 0x8e, 0x38, 0x92, 0xb0, 0xf0, 0xc6, 0xbc, 0x09, 0x7a, 0xc4, 0x47, + 0xb4, 0x11, 0xd5, 0x0f, 0x7c, 0xa2, 0xa5, 0x36, 0xb9, 0x5a, 0x97, 0x1a, 0xa8, 0xe3, 0x05, 0x71, 0x41, 0x08, 0x92, + 0xf2, 0x93, 0xe2, 0x11, 0x03, 0x0c, 0x46, 0x54, 0xaf, 0xc0, 0x0b, 0x60, 0x3b, 0x42, 0xb0, 0x47, 0xba, 0x1c, 0x9a, + 0x41, 0x6d, 0x74, 0xd6, 0x2a, 0x70, 0x3d, 0x0b, 0x17, 0x75, 0xaf, 0x86, 0x64, 0xf9, 0x54, 0x61, 0x94, 0x8b, 0xa1, + 0x7b, 0xb6, 0x58, 0x25, 0x69, 0x1c, 0x2c, 0xf5, 0x67, 0x1a, 0x31, 0x4a, 0x87, 0x29, 0xd1, 0xf6, 0xb3, 0x00, 0x04, + 0x43, 0xa6, 0x33, 0x17, 0x1f, 0x32, 0x5c, 0xac, 0xbf, 0x5f, 0x6b, 0x13, 0x6e, 0x82, 0x7c, 0x89, 0x01, 0x17, 0x5e, + 0x68, 0x75, 0x24, 0x47, 0x49, 0xc4, 0xe0, 0xa7, 0x0d, 0xd4, 0x2c, 0x83, 0xb5, 0xf9, 0xbf, 0xa5, 0x29, 0x0d, 0xc5, + 0x59, 0xbe, 0x34, 0xda, 0x2b, 0x84, 0xea, 0x34, 0x15, 0xf7, 0x4e, 0xec, 0x94, 0x12, 0xeb, 0x41, 0xc5, 0x2d, 0xa0, + 0xe8, 0x60, 0x5a, 0xc6, 0x71, 0xbb, 0xa4, 0xf1, 0x34, 0xac, 0x45, 0x73, 0xa1, 0x8a, 0x72, 0x2b, 0x63, 0x5c, 0x94, + 0xff, 0xb4, 0xb5, 0x8a, 0x03, 0x1d, 0x14, 0x1f, 0x9f, 0x09, 0x94, 0x23, 0xc9, 0x19, 0x62, 0x67, 0x7a, 0x80, 0x0b, + 0xd1, 0xa1, 0x24, 0x50, 0xfa, 0x91, 0x8c, 0x45, 0x47, 0xb4, 0xdc, 0x31, 0x70, 0x00, 0xd7, 0xf1, 0x65, 0xa7, 0x89, + 0x69, 0x3e, 0x54, 0x1c, 0xa9, 0x13, 0x6d, 0x03, 0xbd, 0xfc, 0xfc, 0x2f, 0x64, 0x28, 0x4a, 0xb8, 0xb3, 0xdd, 0xff, + 0xd4, 0x79, 0xbc, 0x3e, 0x85, 0xd2, 0x21, 0xba, 0xf4, 0xfb, 0x74, 0x28, 0x35, 0x01, 0x31, 0x3e, 0x2a, 0x4a, 0x34, + 0x8d, 0x79, 0x41, 0x13, 0x4a, 0x90, 0x14, 0x0a, 0xee, 0xa3, 0x5f, 0x15, 0x15, 0x73, 0x81, 0x84, 0x34, 0xec, 0x0b, + 0x2b, 0x37, 0x6d, 0x9c, 0x3f, 0x9a, 0xcd, 0xa4, 0x3b, 0x29, 0x24, 0xcd, 0xc9, 0x51, 0x44, 0x3c, 0xac, 0xb9, 0x73, + 0x97, 0xfe, 0xd0, 0x6d, 0x77, 0xcd, 0xec, 0xfa, 0xfa, 0x43, 0x9e, 0x5d, 0x2c, 0x53, 0x89, 0x8a, 0xcb, 0x99, 0xf4, + 0xa8, 0xaa, 0x39, 0xae, 0x93, 0x99, 0xc3, 0x1e, 0x78, 0x66, 0xaf, 0x77, 0xd7, 0x2e, 0x58, 0x29, 0xd1, 0xef, 0x68, + 0xd5, 0xc1, 0x81, 0xb9, 0xcc, 0xb5, 0xe7, 0xda, 0xef, 0x25, 0x8c, 0xc3, 0x84, 0xe9, 0x4d, 0x55, 0x79, 0x97, 0x99, + 0xb4, 0xfd, 0x2a, 0xb6, 0x82, 0x03, 0x2b, 0x85, 0x25, 0x2a, 0x83, 0x79, 0x3c, 0x40, 0x9a, 0x86, 0xb0, 0x94, 0x25, + 0x3d, 0x70, 0x39, 0xf8, 0xeb, 0x76, 0xf3, 0xe4, 0xe7, 0x61, 0x9c, 0x08, 0x5e, 0xaa, 0x47, 0x80, 0x21, 0x68, 0x4b, + 0xb7, 0x4b, 0xcb, 0x18, 0xd5, 0xfa, 0x5f, 0x5e, 0xe9, 0x32, 0x66, 0x4a, 0xf9, 0xf0, 0xb5, 0xc9, 0xf1, 0x20, 0xc6, + 0xb1, 0x21, 0xb7, 0x02, 0x9c, 0xb7, 0x0b, 0x0c, 0xdb, 0x75, 0x28, 0x39, 0xec, 0xf5, 0x41, 0x59, 0xd7, 0x5b, 0x56, + 0xa1, 0x34, 0x90, 0xab, 0x1a, 0xbd, 0x6a, 0x61, 0x14, 0x56, 0xaf, 0xdf, 0xf7, 0x0e, 0x86, 0x1d, 0x0b, 0xb5, 0x8f, + 0x6e, 0x4d, 0x0c, 0x35, 0x5e, 0x6c, 0x5b, 0x12, 0x86, 0x50, 0x33, 0x5a, 0x59, 0xd3, 0x81, 0xc9, 0x3f, 0xf5, 0xfe, + 0x12, 0x5f, 0x08, 0x81, 0x7c, 0x02, 0x10, 0xca, 0x5a, 0x2c, 0x1f, 0x48, 0x27, 0x80, 0x53, 0xe9, 0x62, 0xe3, 0x75, + 0x73, 0xec, 0x03, 0xae, 0x6c, 0x9b, 0x68, 0xf0, 0xd3, 0x69, 0x8d, 0x92, 0x6d, 0x78, 0x4b, 0x4f, 0x39, 0x94, 0x3d, + 0x0a, 0x83, 0xa0, 0x87, 0x3d, 0x17, 0xa1, 0xab, 0x83, 0xa5, 0xa1, 0x06, 0x9f, 0xbc, 0xfd, 0x52, 0x6f, 0xca, 0xb3, + 0xc2, 0xa9, 0x19, 0x69, 0xf2, 0x44, 0x96, 0xbe, 0x56, 0x5e, 0xfc, 0x96, 0x59, 0x0e, 0x57, 0xb1, 0x15, 0x55, 0x53, + 0x4b, 0x3a, 0x51, 0x7a, 0x52, 0x25, 0x74, 0x4d, 0xfd, 0x75, 0x43, 0x87, 0xf4, 0xfa, 0x8f, 0x64, 0x87, 0x3a, 0xd6, + 0x5b, 0x8e, 0x86, 0x76, 0xc3, 0xd1, 0xbf, 0x5a, 0xda, 0xe9, 0x77, 0x4f, 0xdd, 0xef, 0xc9, 0xcb, 0x71, 0x9d, 0x2f, + 0xd0, 0x24, 0xcc, 0xa2, 0x39, 0x71, 0xb3, 0xaf, 0xb4, 0x1e, 0x6c, 0x71, 0x33, 0xf6, 0xd5, 0xd7, 0x26, 0xb8, 0xc7, + 0xcb, 0x01, 0x76, 0x9b, 0x96, 0x13, 0x17, 0xcb, 0x3c, 0xc5, 0x7b, 0xa9, 0x01, 0x64, 0x8a, 0x3f, 0x7a, 0x0d, 0x96, + 0x66, 0x29, 0xd2, 0xa6, 0xc9, 0x73, 0xb2, 0x97, 0xe7, 0xae, 0x40, 0x1f, 0x8c, 0x9d, 0xf8, 0xb4, 0xfd, 0x89, 0x31, + 0x9b, 0x3d, 0x71, 0x42, 0x6b, 0x20, 0x56, 0x84, 0x75, 0x04, 0xfa, 0x16, 0x42, 0x9f, 0xcf, 0xcb, 0xc3, 0x33, 0xff, + 0xa3, 0xfb, 0x04, 0xa4, 0xf3, 0xde, 0xea, 0xfc, 0x25, 0xa4, 0xbd, 0x6b, 0x07, 0xfe, 0x04, 0x9c, 0xcc, 0x37, 0xda, + 0x5e, 0xf0, 0x38, 0x97, 0xa8, 0xe9, 0x6b, 0xc3, 0xdf, 0xc2, 0x78, 0x23, 0x07, 0x84, 0xe3, 0x31, 0x66, 0xd3, 0x9b, + 0x2f, 0x38, 0x7b, 0x58, 0x85, 0x60, 0x25, 0x85, 0x71, 0xdc, 0xb2, 0xfb, 0x1f, 0x30, 0x7d, 0xed, 0x75, 0x1f, 0xa1, + 0x5e, 0xcf, 0x4a, 0xa5, 0xc1, 0xee, 0x17, 0xc9, 0xe4, 0x60, 0x5f, 0xa9, 0x75, 0xe0, 0x4b, 0x3b, 0x11, 0x15, 0x34, + 0x1d, 0x5f, 0x82, 0x09, 0x00, 0x81, 0x38, 0xd0, 0x71, 0x12, 0xe4, 0xa8, 0xe0, 0x50, 0xe7, 0xfb, 0xe0, 0xbd, 0x69, + 0x66, 0x3d, 0x26, 0x94, 0x9c, 0x67, 0x95, 0xf9, 0x6a, 0x09, 0x5b, 0xc8, 0xdc, 0x2d, 0xcf, 0xbb, 0x13, 0x7a, 0x7f, + 0xb6, 0xf0, 0xe8, 0x2b, 0x81, 0x06, 0xda, 0xab, 0x10, 0xa0, 0xd0, 0x73, 0xf6, 0x31, 0x43, 0x89, 0x6e, 0x5a, 0xb5, + 0x41, 0xa0, 0xe0, 0xf2, 0x0b, 0xe7, 0xc9, 0x45, 0xcb, 0x9f, 0xaa, 0x88, 0xb6, 0xf4, 0xfa, 0xdb, 0x8a, 0x11, 0x1a, + 0xd3, 0xd0, 0x29, 0xb9, 0x53, 0x2a, 0xd6, 0xf4, 0x2b, 0xae, 0xaa, 0xd9, 0x5e, 0xf1, 0xa9, 0x8c, 0xbf, 0xe0, 0x20, + 0x9f, 0x67, 0xc2, 0xb8, 0x01, 0xc7, 0xec, 0x62, 0x07, 0x8c, 0xee, 0xaf, 0x12, 0x5a, 0x6e, 0x0a, 0x83, 0x1c, 0x73, + 0xe6, 0x08, 0x48, 0xce, 0x91, 0x07, 0x9c, 0x5a, 0x8c, 0x69, 0x93, 0xae, 0x02, 0xd9, 0x2e, 0xc3, 0xce, 0x2e, 0x10, + 0x9d, 0x0b, 0xe6, 0x67, 0xa0, 0x9e, 0x64, 0xc8, 0xb3, 0xdd, 0x0a, 0xea, 0xb4, 0x79, 0x04, 0x4a, 0xfe, 0x7e, 0x3f, + 0xc1, 0xcc, 0x5e, 0xcc, 0x4b, 0xfd, 0xc6, 0x21, 0x52, 0x95, 0x88, 0x90, 0x08, 0x63, 0xef, 0x0a, 0x7b, 0x01, 0x11, + 0xc3, 0xf1, 0xd0, 0xfe, 0x5c, 0x90, 0xf9, 0xe3, 0x4b, 0xe2, 0xbd, 0x7d, 0x48, 0x0b, 0x51, 0xe3, 0xb3, 0xb7, 0xf5, + 0x70, 0x63, 0x4e, 0x83, 0x9d, 0xc6, 0x63, 0x0e, 0xc6, 0xc0, 0x6f, 0xc3, 0xf8, 0x5f, 0x60, 0x86, 0x20, 0x79, 0xe1, + 0x1a, 0x36, 0x47, 0xc6, 0x5f, 0x37, 0x63, 0x16, 0x84, 0x7c, 0xfd, 0xca, 0xe4, 0xa3, 0x96, 0x14, 0xf6, 0x52, 0x31, + 0xee, 0x10, 0xa6, 0x1e, 0xe1, 0x7e, 0xc1, 0xef, 0xff, 0x53, 0x9d, 0xd9, 0x03, 0xd7, 0xce, 0xb2, 0x11, 0x3a, 0xbb, + 0x97, 0x5f, 0x8b, 0xd9, 0x33, 0x18, 0x86, 0x17, 0x40, 0x61, 0x04, 0x22, 0x45, 0xea, 0x25, 0x05, 0x89, 0x76, 0x6d, + 0x85, 0xeb, 0x9e, 0x72, 0x83, 0xca, 0xb3, 0x15, 0x11, 0xb5, 0x5d, 0x56, 0xb2, 0x92, 0xe8, 0xe3, 0x7a, 0x8d, 0x50, + 0x7e, 0x45, 0x37, 0x48, 0x4f, 0x6d, 0x91, 0x11, 0x91, 0x52, 0xbc, 0x8f, 0x5c, 0x83, 0x02, 0xf4, 0x6b, 0xed, 0x4c, + 0x16, 0x74, 0x80, 0x07, 0xf7, 0x77, 0xff, 0xf9, 0xb0, 0x93, 0x15, 0x72, 0x9b, 0x7f, 0xfc, 0x20, 0x6d, 0x40, 0xd0, + 0xe5, 0x10, 0x17, 0x62, 0x54, 0xa2, 0x5c, 0x95, 0x46, 0x97, 0x70, 0x47, 0x4e, 0x73, 0x59, 0x80, 0x48, 0x15, 0x0f, + 0xfe, 0x66, 0xbd, 0x6e, 0x59, 0xdc, 0x54, 0x73, 0x7e, 0x0c, 0x46, 0xc3, 0xe5, 0x0d, 0xaf, 0x9e, 0xb2, 0x24, 0xef, + 0xb9, 0x82, 0xc5, 0x7f, 0x44, 0x86, 0xfb, 0x85, 0x33, 0x0b, 0x3f, 0x83, 0xf2, 0x10, 0x00, 0xe1, 0x1a, 0xa8, 0x92, + 0x95, 0x87, 0x77, 0xbd, 0x4d, 0xc3, 0x71, 0x8f, 0x84, 0xc9, 0x2b, 0xed, 0x89, 0x97, 0x4b, 0x2b, 0xda, 0x33, 0x84, + 0xd7, 0x0c, 0x1d, 0x03, 0x95, 0x1d, 0x89, 0x69, 0xb0, 0x7b, 0xe8, 0x9c, 0x33, 0x2a, 0xa2, 0x4d, 0xd9, 0x60, 0x23, + 0xb8, 0xe3, 0x5f, 0xa8, 0xf9, 0x30, 0x1c, 0x66, 0xbd, 0xa5, 0x49, 0x5e, 0x90, 0x0c, 0x11, 0xe8, 0x21, 0xd1, 0xc2, + 0xec, 0x53, 0x61, 0x69, 0xb8, 0x69, 0x93, 0x15, 0x06, 0x0a, 0xab, 0x58, 0xee, 0xa6, 0xd2, 0xf1, 0x6e, 0x3c, 0xd0, + 0x53, 0xa1, 0x0c, 0x96, 0x45, 0x7d, 0x4e, 0x0a, 0xc9, 0x90, 0x6f, 0x75, 0xb6, 0x95, 0x8a, 0x61, 0x4b, 0x32, 0x74, + 0x7f, 0x9e, 0x5c, 0x34, 0x8a, 0x2f, 0xff, 0x68, 0x1d, 0x73, 0xae, 0x7f, 0x83, 0x80, 0x32, 0xbc, 0x21, 0x34, 0x2c, + 0x64, 0xcb, 0xae, 0x0f, 0x7a, 0x44, 0x3a, 0x95, 0xec, 0x9c, 0xc2, 0xc6, 0x13, 0x16, 0xfc, 0x45, 0x8a, 0x22, 0x6d, + 0x61, 0x5e, 0x07, 0x70, 0x97, 0x61, 0x21, 0x09, 0x5f, 0x96, 0x0c, 0x0c, 0x7a, 0x1d, 0x15, 0xc9, 0xf9, 0x97, 0x9e, + 0x1b, 0x23, 0xec, 0xec, 0xd3, 0x43, 0xe9, 0x27, 0xfb, 0x1c, 0xd3, 0xa1, 0x04, 0x71, 0xcc, 0xb6, 0x3a, 0x20, 0x92, + 0xfd, 0x80, 0xf2, 0x57, 0x8e, 0x64, 0x4a, 0x82, 0x9f, 0x8a, 0x54, 0xa6, 0x65, 0x87, 0xed, 0x0a, 0xd6, 0x85, 0x9b, + 0xe6, 0xd3, 0x52, 0x46, 0x3e, 0x09, 0x2d, 0xe8, 0xc4, 0xeb, 0x3d, 0xa7, 0xd7, 0xb3, 0x06, 0x22, 0x91, 0xc6, 0xb0, + 0x7c, 0xa6, 0xc9, 0x79, 0x72, 0xdd, 0x13, 0xf5, 0xae, 0x85, 0x2f, 0xe9, 0xd8, 0x4d, 0x8d, 0xcc, 0x45, 0xbb, 0xa2, + 0x47, 0x44, 0x84, 0x84, 0x75, 0xc6, 0x58, 0x0e, 0xd1, 0xa6, 0xe5, 0x43, 0x3a, 0x73, 0x85, 0x2b, 0xbe, 0x8f, 0x48, + 0xfe, 0x84, 0xca, 0xf8, 0x1d, 0x6d, 0x40, 0xa4, 0xfe, 0x9f, 0x70, 0xb3, 0x39, 0x05, 0xde, 0x98, 0x00, 0xb7, 0x2f, + 0x6b, 0x05, 0xef, 0xf6, 0x47, 0xea, 0x4c, 0x87, 0x9c, 0xcf, 0xa6, 0x04, 0x4c, 0x9e, 0x3c, 0xd0, 0xda, 0xe9, 0x13, + 0xae, 0x7e, 0x2f, 0x6a, 0x9c, 0x5e, 0xc1, 0x39, 0x6b, 0x20, 0x25, 0x04, 0x46, 0xad, 0x4c, 0xb8, 0x71, 0x81, 0x7c, + 0xfc, 0xb4, 0x57, 0x2f, 0x94, 0xe9, 0xcb, 0x41, 0x22, 0x8b, 0x05, 0x83, 0x8c, 0xc7, 0xf7, 0xe0, 0xf9, 0xbe, 0x17, + 0xd6, 0x66, 0x07, 0x6e, 0x05, 0x32, 0x27, 0xb8, 0x10, 0x82, 0xb8, 0x47, 0x57, 0xb1, 0xf8, 0x78, 0x2a, 0x46, 0x1c, + 0x20, 0xc4, 0x12, 0xe0, 0x49, 0x76, 0xcd, 0x18, 0xc3, 0x9b, 0x20, 0xa4, 0xba, 0xad, 0x22, 0xeb, 0x6e, 0xcc, 0x4e, + 0xf5, 0x0d, 0x0a, 0x28, 0x3b, 0xa2, 0x86, 0xa8, 0xfb, 0x13, 0x8b, 0x1e, 0x6b, 0xbc, 0x76, 0xfa, 0x6c, 0x5b, 0x70, + 0x87, 0x9a, 0x70, 0x93, 0xad, 0x82, 0xfd, 0x08, 0x69, 0x7f, 0x02, 0x2a, 0x64, 0x30, 0x5f, 0x9c, 0x60, 0x23, 0x44, + 0x5d, 0xe4, 0xf9, 0xd8, 0x9c, 0xb7, 0x39, 0x1c, 0x55, 0x32, 0x4f, 0x67, 0x6d, 0xca, 0x4e, 0x63, 0x6d, 0x0a, 0x7e, + 0x2d, 0xf4, 0x52, 0xd7, 0x26, 0x2c, 0x6d, 0x45, 0xcc, 0x6c, 0xc1, 0xfe, 0xad, 0xb3, 0x69, 0x6c, 0x7e, 0x70, 0xc1, + 0x06, 0xa6, 0x72, 0x6e, 0xd1, 0xe6, 0xbb, 0xe6, 0x27, 0x4c, 0xa8, 0x10, 0x2e, 0x6e, 0x4d, 0x3f, 0xf5, 0xaf, 0xdb, + 0x99, 0xf7, 0xc0, 0xc6, 0x7e, 0x69, 0xa2, 0x4e, 0x78, 0xff, 0xff, 0xcb, 0x56, 0x1b, 0x75, 0xe6, 0xec, 0x08, 0x74, + 0xfe, 0xa7, 0x9f, 0x1b, 0xb8, 0x60, 0x0a, 0xbd, 0x1c, 0x0e, 0x75, 0x17, 0x0b, 0x5c, 0xac, 0x4b, 0xbf, 0xf5, 0x89, + 0xe9, 0x09, 0x34, 0xe8, 0xdd, 0xc0, 0xeb, 0x36, 0x03, 0x94, 0xf8, 0x07, 0x2a, 0xd7, 0x62, 0xb4, 0xd9, 0x61, 0xa3, + 0xd0, 0xab, 0x05, 0x5e, 0x20, 0x8b, 0xe0, 0x0d, 0xd7, 0xae, 0xc0, 0x0f, 0x87, 0x99, 0xf3, 0x40, 0xa9, 0x4b, 0x6b, + 0x96, 0xd8, 0x1d, 0x26, 0x39, 0xdd, 0x5d, 0x27, 0x42, 0xb6, 0x04, 0xce, 0xf3, 0x7d, 0x57, 0xf3, 0x37, 0xf8, 0xa0, + 0x8d, 0x5e, 0x54, 0xd3, 0xf3, 0x21, 0x5a, 0x94, 0xf1, 0x7d, 0x97, 0xb8, 0x92, 0xa0, 0x0e, 0x43, 0x56, 0xfd, 0x7b, + 0x0b, 0xad, 0x4a, 0xbb, 0xe9, 0x1c, 0x2c, 0x42, 0x87, 0xd5, 0x69, 0xae, 0x23, 0x63, 0x14, 0x9b, 0xfa, 0x44, 0x6e, + 0x26, 0x15, 0xf0, 0xaf, 0xa5, 0x87, 0x3c, 0x01, 0xf5, 0x4c, 0x87, 0xd7, 0xa4, 0xd8, 0xfc, 0x80, 0xf1, 0x61, 0xf1, + 0x3c, 0x10, 0x70, 0x5c, 0x27, 0xb0, 0x2d, 0x7f, 0x85, 0x26, 0x57, 0xd2, 0x80, 0x33, 0xd7, 0x80, 0x77, 0xd2, 0xa2, + 0xab, 0x4d, 0x6b, 0x57, 0x2f, 0xd1, 0x15, 0x8b, 0x12, 0xc6, 0x64, 0xfb, 0xeb, 0x90, 0x49, 0x36, 0xf5, 0x6b, 0xa0, + 0xb1, 0x04, 0x2c, 0x0b, 0x12, 0xa1, 0x58, 0x32, 0xf0, 0xc1, 0xb4, 0x4f, 0xdf, 0xb6, 0xeb, 0xae, 0xd5, 0x47, 0x72, + 0x17, 0x88, 0xc2, 0xd1, 0x6b, 0x22, 0xca, 0x4c, 0x48, 0x4c, 0xfe, 0x28, 0x3b, 0x2f, 0x14, 0xfe, 0x31, 0x32, 0x69, + 0xf1, 0x32, 0xd3, 0xc0, 0x5a, 0x90, 0x13, 0x80, 0x37, 0x31, 0x9f, 0x28, 0x2b, 0x39, 0x8f, 0xce, 0x4e, 0x26, 0xdc, + 0x9c, 0xba, 0x03, 0x70, 0x7b, 0x50, 0xb0, 0x29, 0x01, 0xb7, 0xa3, 0x53, 0xc8, 0x65, 0xb2, 0x1c, 0x09, 0x96, 0x59, + 0x23, 0x23, 0x6b, 0xda, 0x94, 0x8c, 0x35, 0x82, 0x09, 0xc6, 0xed, 0xcb, 0xba, 0x29, 0x6b, 0xd2, 0x3e, 0x76, 0x32, + 0x96, 0x17, 0xf4, 0xd5, 0xf9, 0xc6, 0xfa, 0xc7, 0xc4, 0xf3, 0xff, 0x4c, 0x98, 0xe3, 0x09, 0xbb, 0x3c, 0x07, 0x4d, + 0xc0, 0xb8, 0x04, 0xa2, 0x02, 0x80, 0x65, 0x71, 0xf1, 0x96, 0xc8, 0x4e, 0x0d, 0x2e, 0x14, 0x0f, 0x86, 0x30, 0xc9, + 0xe3, 0xe2, 0x5a, 0xf4, 0x58, 0x27, 0xfe, 0x17, 0xa3, 0x68, 0x70, 0x9d, 0x1f, 0x13, 0x72, 0x06, 0xe3, 0x47, 0xdb, + 0xae, 0x88, 0x9e, 0xc4, 0x22, 0x2e, 0x34, 0x04, 0x42, 0x19, 0x18, 0x0c, 0xa2, 0x17, 0xea, 0x12, 0xe4, 0xbf, 0xc0, + 0x8e, 0x02, 0x1e, 0x6b, 0x14, 0x7a, 0xc7, 0x95, 0xf2, 0x47, 0x16, 0xcf, 0x0f, 0xdf, 0xd0, 0x13, 0x67, 0xb3, 0x89, + 0x5f, 0xc0, 0xe8, 0xc1, 0x36, 0x87, 0x46, 0x6e, 0x35, 0x6f, 0x56, 0x4b, 0xc9, 0xa3, 0x7c, 0x5f, 0x83, 0xf0, 0x7b, + 0x56, 0x65, 0x2d, 0x63, 0x1c, 0xab, 0xbd, 0x3a, 0x75, 0x00, 0x4a, 0xf0, 0x95, 0x41, 0x68, 0x38, 0xf3, 0x0c, 0x91, + 0xa8, 0x39, 0xa9, 0xd1, 0x69, 0x66, 0x3f, 0xba, 0x94, 0xbe, 0x47, 0x66, 0xfa, 0x06, 0x86, 0x7a, 0x0a, 0x59, 0x99, + 0x66, 0xe9, 0xe1, 0xcb, 0x73, 0x04, 0x30, 0x24, 0x56, 0xb5, 0xf9, 0xb6, 0x1f, 0xa4, 0x67, 0x5f, 0xa7, 0x49, 0x08, + 0xc7, 0xb4, 0x43, 0x38, 0xba, 0x58, 0x48, 0x4c, 0x2a, 0xa3, 0x51, 0xac, 0xde, 0x1c, 0xaa, 0xf1, 0xbb, 0xc7, 0x79, + 0xba, 0x6a, 0x2a, 0xb2, 0x00, 0x61, 0x60, 0xc4, 0x30, 0xb0, 0xdc, 0xc9, 0x73, 0xda, 0x2c, 0xa5, 0x0b, 0xff, 0xe4, + 0x63, 0xd4, 0x04, 0x22, 0xb0, 0x96, 0xf9, 0x47, 0x4f, 0xdf, 0xc9, 0xd7, 0xc5, 0x85, 0x39, 0x89, 0x02, 0x63, 0x0f, + 0x3b, 0x89, 0x2f, 0x6f, 0x43, 0x73, 0x59, 0x1c, 0x04, 0xa3, 0x31, 0x33, 0xaf, 0xe4, 0xe1, 0xb7, 0xc0, 0xa1, 0x95, + 0xc9, 0x6c, 0xd3, 0x4f, 0xb2, 0x73, 0x1a, 0xae, 0x2a, 0x6e, 0x9b, 0xa9, 0x73, 0x73, 0x99, 0x45, 0x19, 0xc0, 0x87, + 0x64, 0x4c, 0x99, 0x72, 0x0d, 0x5a, 0x1b, 0x53, 0x14, 0x05, 0x01, 0x56, 0x23, 0x03, 0xde, 0xc1, 0x14, 0xcf, 0x43, + 0xfc, 0x02, 0x68, 0x2b, 0xc5, 0x44, 0x92, 0x11, 0x65, 0x36, 0x09, 0xf9, 0x41, 0x3b, 0x7d, 0x58, 0xe4, 0x06, 0xfb, + 0x8b, 0xa5, 0x82, 0x32, 0xaf, 0xd9, 0x2f, 0xef, 0xf0, 0x84, 0x39, 0x9a, 0x2a, 0x99, 0x69, 0x43, 0x43, 0xf0, 0xa9, + 0xa2, 0x5d, 0x09, 0x74, 0xcb, 0x39, 0x46, 0x1e, 0x4f, 0xd9, 0xbd, 0x63, 0x5b, 0x74, 0xec, 0xce, 0x5a, 0xb5, 0x61, + 0x57, 0x22, 0xec, 0xf6, 0x93, 0xee, 0xb9, 0xbe, 0xc6, 0x57, 0x25, 0x6c, 0x08, 0xa9, 0x11, 0x20, 0x56, 0xf8, 0x2c, + 0xba, 0x99, 0x7c, 0xf1, 0x9e, 0x85, 0xd8, 0xf0, 0x1d, 0x9a, 0x8e, 0x6e, 0x5b, 0xc2, 0x28, 0x40, 0x33, 0xab, 0x79, + 0x30, 0xd3, 0x13, 0x4a, 0xa4, 0xde, 0x90, 0x63, 0xde, 0x1c, 0xf5, 0xed, 0xb9, 0x6a, 0xbd, 0xef, 0xb8, 0x1d, 0x06, + 0x21, 0xbc, 0x1a, 0xf2, 0x3d, 0x78, 0x48, 0xe7, 0xdc, 0xb3, 0xcd, 0x5b, 0x53, 0xd5, 0x3d, 0x11, 0x53, 0xb3, 0xed, + 0x3b, 0x61, 0x4e, 0x37, 0x64, 0x24, 0xd8, 0xc8, 0xfb, 0xf2, 0x03, 0x28, 0x90, 0xe1, 0x6e, 0xe2, 0x56, 0xce, 0xc2, + 0xe0, 0xa0, 0xb3, 0x57, 0x40, 0x9a, 0x91, 0x23, 0xa9, 0x8d, 0x5a, 0x03, 0x54, 0x29, 0xe2, 0x78, 0x5a, 0xd6, 0xe7, + 0x44, 0x2d, 0xa5, 0x62, 0xe1, 0xf8, 0x77, 0xae, 0x6f, 0x8a, 0x73, 0x29, 0x6f, 0x9e, 0x00, 0x7f, 0x75, 0xf1, 0xea, + 0x49, 0x07, 0xd3, 0xc1, 0x30, 0xed, 0x1d, 0xa0, 0x4c, 0x5a, 0x63, 0x67, 0xa4, 0xa1, 0x7e, 0x86, 0x07, 0x0a, 0x8d, + 0x0e, 0x1c, 0xbd, 0x36, 0x16, 0x9e, 0xc1, 0xd6, 0x74, 0xc3, 0xec, 0x57, 0x21, 0x7c, 0xd1, 0xa0, 0x31, 0x3c, 0xa3, + 0x3c, 0xf5, 0xdf, 0xd7, 0xdb, 0x1f, 0x9f, 0x35, 0x93, 0xb9, 0x21, 0x94, 0x6b, 0xc1, 0x3c, 0xb7, 0xc9, 0x49, 0xff, + 0xf1, 0xf1, 0x17, 0xc9, 0x0c, 0x14, 0x93, 0xdb, 0xd7, 0x97, 0xf7, 0x53, 0x1e, 0x18, 0x77, 0xad, 0x32, 0x7d, 0x6d, + 0x33, 0x4f, 0x9b, 0x60, 0x77, 0x64, 0xc2, 0x3c, 0xd3, 0x5d, 0xdb, 0x2d, 0xac, 0x37, 0x09, 0xdd, 0x3f, 0x7e, 0x74, + 0xbe, 0xab, 0xad, 0xec, 0x28, 0x15, 0xd0, 0xef, 0x7f, 0x69, 0x83, 0x81, 0x1e, 0xf6, 0xe1, 0x22, 0xe7, 0x98, 0x0b, + 0xae, 0xd0, 0xe0, 0xdb, 0x00, 0x50, 0x71, 0x9c, 0x84, 0xd6, 0xf5, 0x13, 0xc7, 0xcf, 0x8c, 0x95, 0x60, 0x77, 0x03, + 0x2d, 0x0e, 0xf3, 0x2a, 0x2c, 0x57, 0x96, 0xd2, 0x09, 0x5c, 0xb3, 0xbb, 0x82, 0x28, 0x81, 0xee, 0xdb, 0xbf, 0x3a, + 0x5c, 0x00, 0x77, 0xdf, 0x46, 0xda, 0x5a, 0xf9, 0xe9, 0x9d, 0x3b, 0x7d, 0x10, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, + 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, + 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x01, 0x00, 0x00, 0x80, 0x54, 0x55, 0x55, 0xd5, 0xa9, 0x4c, 0xa9, 0x2a, + 0xad, 0x08, 0x1e, 0x1b, 0xaf, 0xde, 0x06, 0x08, 0x5c, 0x89, 0x05, 0x80, 0x11, 0x93, 0x58, 0x4d, 0xc5, 0x60, 0x9b, + 0x60, 0x25, 0x49, 0x92, 0x24, 0xdb, 0xb6, 0x6d, 0xdb, 0x48, 0x1a, 0x24, 0x49, 0xdc, 0x2e, 0x36, 0xaa, 0x4a, 0x62, + 0x77, 0x70, 0x4b, 0x62, 0xc7, 0x57, 0x82, 0x91, 0x51, 0xe7, 0x60, 0x54, 0x1f, 0x21, 0x01, 0x00, 0x00, 0x20, 0xff, + 0xff, 0xff, 0x1f, 0x7f, 0x90, 0xfe, 0x9f, 0x82, 0xef, 0x45, 0xa9, 0x04, 0x9d, 0x6d, 0x08, 0x07, 0x9d, 0xd2, 0x2c, + 0x9f, 0xcd, 0x69, 0xc4, 0x68, 0xf2, 0x6f, 0x65, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, + 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, + 0xc3, 0x19, 0x01, 0x00, 0x00, 0x80, 0x54, 0x55, 0x55, 0xd5, 0xa9, 0x4c, 0xa9, 0x2a, 0xad, 0x08, 0x1e, 0x1b, 0xaf, + 0xde, 0x06, 0x08, 0x5c, 0x89, 0x05, 0x80, 0x11, 0x93, 0x58, 0x4d, 0xc5, 0x60, 0x9b, 0x60, 0x25, 0x49, 0x92, 0x24, + 0xdb, 0xb6, 0x6d, 0xdb, 0x48, 0x1a, 0x24, 0x49, 0xdc, 0x2e, 0x36, 0xaa, 0x4a, 0x62, 0x77, 0x70, 0x4b, 0x62, 0xc7, + 0x57, 0x82, 0x91, 0x51, 0xe7, 0x60, 0x54, 0x1f, 0x21, 0x01, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0x1f, 0x7f, 0x90, + 0xfe, 0x9f, 0x82, 0xef, 0x45, 0xa9, 0x04, 0x9d, 0x6d, 0x08, 0x07, 0x9d, 0xd2, 0x2c, 0x9f, 0xcd, 0x69, 0xc4, 0x68, + 0xf2, 0x6f, 0x65, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, + 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x9a, 0x99, 0x99, + 0x19, 0x66, 0x66, 0x66, 0xe6, 0x32, 0xb5, 0x32, 0xb3, 0xcd, 0x4a, 0x1f, 0x99, 0x01, 0xf4, 0x16, 0x36, 0xcf, 0xc0, + 0xf7, 0xa8, 0x95, 0xa5, 0x15, 0x26, 0xcc, 0x4b, 0xc7, 0x22, 0x25, 0x49, 0x92, 0x24, 0xdb, 0xb6, 0x6d, 0xdb, 0x48, + 0x1a, 0x24, 0x49, 0xdc, 0x2e, 0x36, 0xaa, 0x4a, 0x62, 0x77, 0x70, 0x4b, 0x62, 0xc7, 0x57, 0x82, 0x91, 0x51, 0xe7, + 0x60, 0x54, 0x1f, 0x21, 0x01, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0x1f, 0x7f, 0x90, 0xfe, 0x9f, 0x82, 0xef, 0x45, + 0xa9, 0x04, 0x9d, 0x6d, 0x08, 0x07, 0x9d, 0xd2, 0x2c, 0x9f, 0xcd, 0x69, 0xc4, 0x68, 0xf2, 0x6f, 0x65, 0xab, 0xaa, + 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, + 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x9a, 0x99, 0x99, 0x19, 0x66, 0x66, 0x66, 0xe6, + 0x32, 0xb5, 0x32, 0xb3, 0xcd, 0x4a, 0x1f, 0x99, 0x01, 0xf4, 0x16, 0x36, 0xcf, 0xc0, 0xf7, 0xa8, 0x95, 0xa5, 0x15, + 0x26, 0xcc, 0x4b, 0xc7, 0x22, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x8b, 0x2e, 0xba, 0x8a, 0xf6, 0xcf, 0x45, 0x31, 0xf2, + 0xda, 0x34, 0x79, 0x21, 0x93, 0x4e, 0x07, 0x50, 0x1d, 0x5d, 0x2a, 0x89, 0x03, 0xe0, 0x62, 0xaf, 0x63, 0x69, 0x01, + 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0x1f, 0x7f, 0x90, 0xfe, 0x9f, 0x82, 0xef, 0x45, 0xa9, 0x04, 0x9d, 0x6d, 0x08, + 0x07, 0x9d, 0xd2, 0x2c, 0x9f, 0xcd, 0x69, 0xc4, 0x68, 0xf2, 0x6f, 0x65, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, + 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, + 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x9a, 0x99, 0x99, 0x19, 0x66, 0x66, 0x66, 0xe6, 0x32, 0xb5, 0x32, 0xb3, 0xcd, + 0x4a, 0x1f, 0x99, 0x01, 0xf4, 0x16, 0x36, 0xcf, 0xc0, 0xf7, 0xa8, 0x95, 0xa5, 0x15, 0x26, 0xcc, 0x4b, 0xc7, 0x22, + 0x01, 0x00, 0x00, 0x00, 0xa2, 0x8b, 0x2e, 0xba, 0x8a, 0xf6, 0xcf, 0x45, 0x31, 0xf2, 0xda, 0x34, 0x79, 0x21, 0x93, + 0x4e, 0x07, 0x50, 0x1d, 0x5d, 0x2a, 0x89, 0x03, 0xe0, 0x62, 0xaf, 0x63, 0x69, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, + 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, + 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, + 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, + 0x19, 0x9a, 0x99, 0x99, 0x19, 0x66, 0x66, 0x66, 0xe6, 0x32, 0xb5, 0x32, 0xb3, 0xcd, 0x4a, 0x1f, 0x99, 0x01, 0xf4, + 0x16, 0x36, 0xcf, 0xc0, 0xf7, 0xa8, 0x95, 0xa5, 0x15, 0x26, 0xcc, 0x4b, 0xc7, 0x22, 0x01, 0x00, 0x00, 0x00, 0xa2, + 0x8b, 0x2e, 0xba, 0x8a, 0xf6, 0xcf, 0x45, 0x31, 0xf2, 0xda, 0x34, 0x79, 0x21, 0x93, 0x4e, 0x07, 0x50, 0x1d, 0x5d, + 0x2a, 0x89, 0x03, 0xe0, 0x62, 0xaf, 0x63, 0x69, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, + 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, + 0x44, 0x6a, 0x3c, 0xb1, 0x13, 0x3b, 0x3a, 0xb1, 0x13, 0x3b, 0x3a, 0x75, 0x88, 0x9d, 0x3d, 0xed, 0x02, 0xbd, 0xb5, + 0x7b, 0x26, 0x08, 0xb8, 0x7b, 0xce, 0x8d, 0x9f, 0x42, 0x85, 0x0f, 0x5a, 0xdc, 0x17, 0x62, 0x34, 0x33, 0x33, 0x33, + 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, + 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x88, 0x4e, 0xa0, 0x71, 0x26, 0x46, 0x00, 0xc1, 0x59, 0x47, + 0xcc, 0xa7, 0x68, 0x77, 0x19, 0xb2, 0x1c, 0x68, 0x59, 0x52, 0xd9, 0xd0, 0xa0, 0x30, 0x43, 0x6a, 0x13, 0x2f, 0x8d, + 0x56, 0x7a, 0x4f, 0xb9, 0xaf, 0x7e, 0xcb, 0x0a, 0x6b, 0x2a, 0xad, 0xce, 0x26, 0x8e, 0xd2, 0xce, 0xf6, 0x0e, 0xba, + 0x00, 0x13, 0x62, 0xe4, 0x85, 0x6b, 0xf5, 0xca, 0x0a, 0xa7, 0x1f, 0xfd, 0xe6, 0xda, 0x5e, 0x3e, 0x72, 0x19, 0xe9, + 0x3a, 0x5d, 0x8e, 0x41, 0x50, 0x5b, 0x2b, 0xce, 0x04, 0xb8, 0xe9, 0xef, 0x01, 0x2f, 0x62, 0xbb, 0x89, 0xba, 0xb1, + 0x6d, 0x53, 0x9b, 0xb1, 0x98, 0xdd, 0xd9, 0xbe, 0x69, 0x6b, 0x75, 0x46, 0x4f, 0x3a, 0x21, 0x81, 0x45, 0x49, 0x16, + 0x7c, 0x39, 0x2b, 0xe6, 0x8c, 0xfb, 0xb4, 0x55, 0x7a, 0x7c, 0x7b, 0x85, 0x5c, 0x22, 0x17, 0x87, 0x18, 0x05, 0x6e, + 0x53, 0xb1, 0x25, 0x59, 0x01, 0x00, 0x00, 0x80, 0x54, 0x55, 0x55, 0xd5, 0xa9, 0x4c, 0xa9, 0x2a, 0xad, 0x08, 0x1e, + 0x1b, 0xaf, 0xde, 0x06, 0x08, 0x5c, 0x89, 0x05, 0x80, 0x11, 0x93, 0x58, 0x4d, 0xc5, 0x60, 0x9b, 0x60, 0x26, 0xe6, + 0xe2, 0x34, 0x5c, 0xbd, 0xad, 0x11, 0x0a, 0x09, 0x9c, 0x1b, 0x31, 0x7e, 0x6b, 0x7e, 0xa3, 0x6a, 0x29, 0xa9, 0xc1, + 0x7b, 0xb7, 0x3a, 0x21, 0x2e, 0x89, 0x04, 0x27, 0x5c, 0x04, 0x3d, 0x97, 0x6a, 0x95, 0x25, 0x73, 0xc6, 0x37, 0xe7, + 0x05, 0x30, 0xa9, 0x2d, 0x7f, 0x72, 0x97, 0x03, 0xc6, 0xbd, 0x1c, 0x9b, 0x80, 0xd2, 0xc8, 0xad, 0xa9, 0x1e, 0xa4, + 0xa3, 0xcd, 0xf4, 0x82, 0x57, 0x7c, 0x96, 0xc1, 0x7c, 0x11, 0xc6, 0xec, 0x76, 0xd5, 0xc9, 0x49, 0x70, 0xf1, 0x25, + 0x83, 0x60, 0x68, 0xe4, 0x11, 0x9b, 0x62, 0xf2, 0xf5, 0x0b, 0x82, 0x1f, 0x4e, 0x1f, 0xb2, 0x93, 0xd3, 0x20, 0x85, + 0x3c, 0xe5, 0x5f, 0x7f, 0xa2, 0x82, 0xd9, 0x2a, 0x32, 0xa0, 0xb0, 0x4d, 0x8a, 0x61, 0xee, 0x30, 0xf5, 0xbd, 0xe0, + 0x33, 0x84, 0x93, 0x58, 0xf6, 0x80, 0xef, 0xac, 0x2a, 0x5d, 0xcb, 0x0b, 0x25, 0x49, 0x92, 0x24, 0xdb, 0xb6, 0x6d, + 0xdb, 0x48, 0x1a, 0x24, 0x49, 0xdc, 0x2e, 0x36, 0xaa, 0x4a, 0x62, 0x77, 0x70, 0x4b, 0x62, 0xc7, 0x57, 0x82, 0x91, + 0x51, 0xe7, 0x60, 0x54, 0x1f, 0x21, 0x97, 0x6a, 0x95, 0x25, 0x73, 0xc6, 0x37, 0xe7, 0x05, 0x30, 0xa9, 0x2d, 0x7f, + 0x72, 0x97, 0x03, 0xc6, 0xbd, 0x1c, 0x9b, 0x80, 0xd2, 0xc8, 0xad, 0xa9, 0x1e, 0xa4, 0xa3, 0xcd, 0xf4, 0x82, 0x57, + 0xf9, 0xf6, 0xa6, 0xbd, 0xdc, 0x5b, 0x1a, 0x48, 0x9f, 0xed, 0x92, 0x4d, 0x76, 0x34, 0x9b, 0xfb, 0x4c, 0x73, 0x0e, + 0xb8, 0x0d, 0x33, 0x36, 0xac, 0xd4, 0x35, 0x0e, 0xb7, 0x14, 0x4b, 0xb5, 0x06, 0x6a, 0x99, 0xe6, 0xa5, 0x0f, 0x89, + 0x3f, 0x1f, 0x9b, 0x64, 0x4d, 0x0f, 0x5c, 0xab, 0x39, 0x9f, 0x3e, 0xd1, 0x73, 0x28, 0x88, 0x5c, 0x51, 0xd1, 0xa7, + 0x85, 0x7d, 0xca, 0xe2, 0x17, 0xda, 0x03, 0x8a, 0x26, 0x84, 0x6f, 0x00, 0x30, 0xb2, 0xd2, 0xcf, 0xce, 0x9c, 0x31, + 0x82, 0x46, 0x62, 0x63, 0x4d, 0x19, 0x74, 0x2f, 0x92, 0x0b, 0xd9, 0x42, 0x6b, 0xa3, 0x0c, 0x6e, 0x21, 0x2b, 0xb3, + 0x2b, 0x01, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0x1f, 0x7f, 0x90, 0xfe, 0x9f, 0x82, 0xef, 0x45, 0xa9, 0x04, 0x9d, + 0x6d, 0x08, 0x07, 0x9d, 0xd2, 0x2c, 0x9f, 0xcd, 0x69, 0xc4, 0x68, 0xf2, 0x6f, 0x65, 0x7c, 0x96, 0xc1, 0x7c, 0x11, + 0xc6, 0xec, 0x76, 0xd5, 0xc9, 0x49, 0x70, 0xf1, 0x25, 0x83, 0x60, 0x68, 0xe4, 0x11, 0x9b, 0x62, 0xf2, 0xf5, 0x0b, + 0x82, 0x1f, 0x4e, 0x1f, 0xb2, 0x93, 0xd3, 0x20, 0x6a, 0x99, 0xe6, 0xa5, 0x0f, 0x89, 0x3f, 0x1f, 0x9b, 0x64, 0x4d, + 0x0f, 0x5c, 0xab, 0x39, 0x9f, 0x3e, 0xd1, 0x73, 0x28, 0x88, 0x5c, 0x51, 0xd1, 0xa7, 0x85, 0x7d, 0xca, 0xe2, 0x17, + 0xda, 0x03, 0x69, 0x90, 0x62, 0x7b, 0x48, 0x4d, 0xc2, 0x2d, 0xab, 0x47, 0x20, 0xcd, 0x2d, 0xc3, 0xdf, 0x11, 0x75, + 0xe1, 0x3a, 0x86, 0xce, 0x50, 0xf3, 0x2d, 0x59, 0xc0, 0xa5, 0x0d, 0x48, 0xad, 0x9d, 0x4b, 0x3d, 0xed, 0x2d, 0x35, + 0xb2, 0x93, 0x6d, 0x06, 0x4c, 0x93, 0x7d, 0xd5, 0xcd, 0xec, 0xe7, 0x8a, 0xbf, 0x92, 0x09, 0x74, 0x81, 0xc1, 0x8d, + 0xab, 0x7e, 0x57, 0x96, 0xb7, 0xc1, 0xe0, 0x71, 0x42, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, + 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, + 0x08, 0xc3, 0x19, 0x85, 0x3c, 0xe5, 0x5f, 0x7f, 0xa2, 0x82, 0xd9, 0x2a, 0x32, 0xa0, 0xb0, 0x4d, 0x8a, 0x61, 0xee, + 0x30, 0xf5, 0xbd, 0xe0, 0x33, 0x84, 0x93, 0x58, 0xf6, 0x80, 0xef, 0xac, 0x2a, 0x5d, 0xcb, 0x0b, 0x8a, 0x26, 0x84, + 0x6f, 0x00, 0x30, 0xb2, 0xd2, 0xcf, 0xce, 0x9c, 0x31, 0x82, 0x46, 0x62, 0x63, 0x4d, 0x19, 0x74, 0x2f, 0x92, 0x0b, + 0xd9, 0x42, 0x6b, 0xa3, 0x0c, 0x6e, 0x21, 0x2b, 0xb3, 0x2b, 0x3d, 0xed, 0x2d, 0x35, 0xb2, 0x93, 0x6d, 0x06, 0x4c, + 0x93, 0x7d, 0xd5, 0xcd, 0xec, 0xe7, 0x8a, 0xbf, 0x92, 0x09, 0x74, 0x81, 0xc1, 0x8d, 0xab, 0x7e, 0x57, 0x96, 0xb7, + 0xc1, 0xe0, 0x71, 0x42, 0x20, 0x3d, 0x54, 0xa5, 0x4f, 0xa5, 0xcb, 0x7b, 0xaa, 0x7f, 0x02, 0x97, 0xb6, 0x7c, 0x11, + 0x88, 0xa1, 0xfc, 0x32, 0x3e, 0x9e, 0x32, 0xae, 0x1a, 0x73, 0x54, 0xae, 0xe3, 0x70, 0xf5, 0xda, 0x6a, 0x34, 0x33, + 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, + 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x14, 0xb3, 0x04, 0x7b, 0x4b, 0x5d, 0x64, 0x29, + 0xcb, 0x18, 0x15, 0x95, 0x27, 0x80, 0x5d, 0x71, 0x4b, 0x4e, 0xc1, 0x18, 0xc5, 0xd0, 0x38, 0x18, 0x89, 0xeb, 0x73, + 0x2b, 0x9e, 0x8e, 0xa1, 0x18, 0x40, 0x14, 0xbd, 0x68, 0x82, 0x94, 0x89, 0xae, 0x3e, 0xbe, 0xbb, 0xaf, 0x50, 0x42, + 0xe6, 0xf7, 0x36, 0x92, 0xb8, 0xc7, 0x70, 0xab, 0x95, 0x61, 0x0f, 0x12, 0x71, 0xd5, 0x82, 0x51, 0x01, 0x21, 0x1d, + 0x4c, 0x48, 0x56, 0xcc, 0x48, 0x57, 0x07, 0xc7, 0xb3, 0x0d, 0x36, 0xe9, 0xf1, 0x8c, 0xf0, 0x83, 0xb6, 0xf1, 0x87, + 0x85, 0x04, 0x7b, 0x66, 0x31, 0x8f, 0xa5, 0x3d, 0x39, 0x85, 0x2f, 0x38, 0x30, 0xca, 0xf4, 0x7f, 0xba, 0x3b, 0x5c, + 0x8a, 0x59, 0x30, 0x3b, 0x3f, 0xfd, 0xa5, 0xb5, 0x7e, 0xfa, 0x1d, 0x1d, 0x8e, 0xc3, 0x29, 0x37, 0x69, 0xe0, 0x8e, + 0xae, 0xd4, 0x5d, 0xc5, 0xf6, 0x50, 0x96, 0x78, 0x5c, 0x4d, 0x48, 0x94, 0xfb, 0x0b, 0x75, 0x0a, 0x77, 0x06, 0xb4, + 0x44, 0xde, 0x32, 0xcb, 0xdc, 0xb8, 0xf6, 0x28, 0x5d, 0xe4, 0x99, 0x19, 0xaf, 0xf3, 0xb3, 0x1d, 0x68, 0x25, 0x40, + 0x76, 0x54, 0x06, 0x7e, 0xef, 0xd5, 0x24, 0xeb, 0xfb, 0xf2, 0x50, 0xf3, 0xd0, 0x40, 0xa5, 0xf6, 0x25, 0xc1, 0x5f, + 0x16, 0x94, 0xcd, 0xac, 0xa8, 0xa6, 0xd7, 0x21, 0x6e, 0x7e, 0x14, 0x8d, 0x53, 0x44, 0x4b, 0x76, 0x8a, 0xcd, 0xc0, + 0xdc, 0x39, 0x00, 0xfb, 0x0e, 0xce, 0x08, 0xbd, 0x09, 0x02, 0xba, 0xa4, 0xd6, 0x08, 0x11, 0xbe, 0x80, 0xdc, 0x8f, + 0xd1, 0x3b, 0x3f, 0x30, 0x46, 0xf0, 0x51, 0xf4, 0x2f, 0xd8, 0x28, 0xf6, 0xc2, 0xa7, 0x91, 0x74, 0x15, 0xfd, 0x03, + 0x78, 0x4b, 0xc6, 0x99, 0xa8, 0x01, 0x2c, 0x30, 0x3e, 0x4b, 0x18, 0x10, 0x75, 0x4d, 0x60, 0xdc, 0x18, 0x3d, 0x25, + 0x1e, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, + 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x83, 0x60, 0xa9, 0x42, 0x6a, + 0xb8, 0x29, 0xe9, 0xc0, 0xc0, 0x9d, 0x1f, 0x5f, 0x7a, 0x04, 0x47, 0xc3, 0xa5, 0x77, 0x66, 0x12, 0x10, 0x09, 0x91, + 0xde, 0xec, 0x42, 0xb7, 0xe0, 0x25, 0x69, 0x41, 0x25, 0xb3, 0x96, 0x7a, 0xb9, 0x6f, 0x90, 0x29, 0x5f, 0x20, 0x2b, + 0xc9, 0x64, 0xfd, 0x78, 0xf3, 0x16, 0x25, 0x84, 0x4e, 0xe5, 0xd7, 0xea, 0x16, 0xed, 0x67, 0x11, 0xb0, 0x64, 0x45, + 0x0e, 0x25, 0x0d, 0x40, 0xd3, 0x91, 0xc5, 0xd0, 0x65, 0x9b, 0x20, 0xe6, 0x1d, 0xd7, 0xf2, 0x5d, 0xfe, 0x5f, 0x60, + 0x48, 0x37, 0x28, 0xba, 0xf0, 0x1a, 0x1c, 0x3a, 0x53, 0xc7, 0xc4, 0x8b, 0xd6, 0xda, 0x19, 0xb8, 0x6c, 0x49, 0xec, + 0x34, 0xc1, 0x76, 0x0c, 0x99, 0x3b, 0xaf, 0xa5, 0xf7, 0x78, 0x40, 0x3c, 0x83, 0x65, 0x37, 0x45, 0x3b, 0x21, 0x9f, + 0x3b, 0x08, 0xcd, 0x59, 0x9b, 0x7c, 0x03, 0x4d, 0x33, 0x85, 0x7a, 0x74, 0x37, 0x23, 0xf6, 0xe0, 0xc0, 0x17, 0x67, + 0xc8, 0x67, 0xfa, 0x92, 0xe5, 0x53, 0xff, 0xc3, 0xb9, 0x95, 0xec, 0xa9, 0xc7, 0x25, 0x93, 0x17, 0x50, 0x5a, 0x53, + 0x75, 0xcf, 0x4f, 0x66, 0xee, 0x29, 0x6f, 0x57, 0x8f, 0xd3, 0xb8, 0xea, 0x01, 0x65, 0xfe, 0xb8, 0x2e, 0x92, 0xa2, + 0x7a, 0x77, 0xdc, 0xb0, 0x13, 0x20, 0x88, 0x53, 0x3a, 0x4f, 0x98, 0x60, 0x46, 0xb7, 0xaf, 0x47, 0xbc, 0x51, 0x9e, + 0x8d, 0xee, 0x26, 0x22, 0xa1, 0x6c, 0x10, 0x88, 0x4c, 0x21, 0xfc, 0x9a, 0x6e, 0x53, 0x9f, 0xb3, 0x67, 0x82, 0x68, + 0xd0, 0x7e, 0xde, 0x01, 0x00, 0x23, 0x42, 0x8a, 0x5e, 0x33, 0xc5, 0x72, 0xaf, 0xf4, 0xb1, 0x87, 0x84, 0x9d, 0x3f, + 0x5c, 0xda, 0x37, 0xad, 0xa0, 0x63, 0x02, 0x8b, 0xff, 0xc2, 0x22, 0xd7, 0xe2, 0x19, 0x6d, 0x51, 0x68, 0xee, 0xae, + 0x99, 0xb4, 0x19, 0x59, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, + 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x73, 0xee, + 0xdb, 0xe5, 0x66, 0x84, 0x56, 0x5a, 0xeb, 0x0e, 0x91, 0x5b, 0xbd, 0x81, 0xf3, 0x0d, 0xd8, 0x67, 0x06, 0xcb, 0x7b, + 0xe7, 0xa5, 0xcf, 0x56, 0xb5, 0xb5, 0x9e, 0xbb, 0xc4, 0xd7, 0x2c, 0xca, 0x76, 0x54, 0xc5, 0x72, 0x27, 0x4f, 0xc3, + 0xd0, 0xf4, 0xd4, 0xb9, 0x6c, 0xc9, 0x68, 0x37, 0x13, 0xdb, 0x10, 0x5b, 0x36, 0x93, 0x21, 0x68, 0x6f, 0xfa, 0x48, + 0xda, 0xe8, 0x8f, 0x7e, 0x56, 0xe3, 0x5f, 0x8b, 0x32, 0xe0, 0xd5, 0x21, 0xbd, 0x82, 0x9a, 0x37, 0x5a, 0xb6, 0x1c, + 0x43, 0xe8, 0x7b, 0x88, 0x5e, 0xbd, 0x26, 0x6f, 0x94, 0xba, 0x0c, 0xb0, 0xb3, 0xa8, 0xb3, 0x89, 0x25, 0x59, 0x1a, + 0xeb, 0x98, 0x58, 0x9f, 0x4f, 0x61, 0x41, 0xea, 0xab, 0x1f, 0x64, 0xb3, 0xd8, 0x77, 0xa4, 0x0e, 0x2c, 0xdc, 0x51, + 0x51, 0x7f, 0x00, 0x54, 0xc4, 0xc7, 0x4c, 0x56, 0x93, 0x14, 0x41, 0x66, 0xb1, 0xc2, 0xd6, 0x9a, 0xa6, 0x17, 0x63, + 0x84, 0xc0, 0x85, 0xb1, 0xe8, 0x43, 0x46, 0x48, 0xfb, 0xba, 0x88, 0x4d, 0xc4, 0x31, 0x3c, 0x48, 0x12, 0xab, 0x54, + 0xa3, 0x4a, 0xb8, 0x04, 0x99, 0x28, 0x53, 0x1d, 0x3a, 0x44, 0xd0, 0x62, 0x3f, 0xae, 0xfe, 0xb3, 0x7a, 0x3f, 0x5e, + 0x7a, 0x09, 0xfd, 0x56, 0xe3, 0x25, 0x84, 0x97, 0x20, 0x33, 0x54, 0x75, 0xbe, 0x31, 0x17, 0x4e, 0x1b, 0x1f, 0x54, + 0x8a, 0x34, 0x83, 0xce, 0x58, 0xc4, 0x40, 0x3e, 0xcd, 0xc6, 0x9e, 0x23, 0xc2, 0x97, 0x19, 0x56, 0xba, 0x0f, 0xb3, + 0xfc, 0x36, 0xd9, 0x5b, 0x43, 0x53, 0xe0, 0xce, 0x97, 0x6e, 0xb6, 0x72, 0x3c, 0xec, 0x4d, 0x6f, 0x87, 0xa7, 0x14, + 0xb3, 0xad, 0x20, 0x8c, 0xaa, 0x94, 0x50, 0x41, 0x29, 0x66, 0xb0, 0x92, 0xc4, 0x75, 0xf0, 0x96, 0x28, 0xf0, 0x9d, + 0x88, 0xb2, 0xfa, 0x33, 0x8f, 0x89, 0x68, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, + 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, + 0x45, 0xdd, 0x5e, 0xc3, 0xd3, 0x43, 0xb7, 0x8e, 0x79, 0xea, 0x94, 0xd6, 0x64, 0x52, 0x8a, 0x44, 0xdc, 0x4b, 0x7c, + 0x9f, 0x64, 0x2b, 0x58, 0xce, 0x30, 0x89, 0x9c, 0xde, 0xd9, 0x6d, 0x49, 0x01, 0x64, 0x46, 0x51, 0x6b, 0xf3, 0x95, + 0x9f, 0x24, 0xfb, 0x86, 0x5d, 0x80, 0xe0, 0x81, 0x5e, 0x20, 0xb7, 0xd8, 0x5c, 0x73, 0x71, 0x31, 0x90, 0x36, 0x9c, + 0x23, 0x1c, 0x43, 0x24, 0x90, 0xb9, 0x12, 0x5a, 0xcb, 0x18, 0x87, 0xf2, 0x5c, 0x25, 0xd3, 0x64, 0x04, 0x78, 0xbf, + 0xeb, 0xd1, 0xb4, 0x65, 0x49, 0x2c, 0x6a, 0xf4, 0x6b, 0xc7, 0xd6, 0x2e, 0x3d, 0x9b, 0xc2, 0x47, 0xf8, 0x7e, 0x5a, + 0xf1, 0x54, 0xd3, 0x39, 0xda, 0x89, 0x89, 0xa6, 0x2e, 0xc3, 0x43, 0x31, 0xaf, 0x54, 0x8e, 0xd2, 0xb6, 0x8f, 0x2a, + 0x04, 0xfa, 0xb9, 0x2a, 0xcd, 0x01, 0x65, 0x07, 0x5e, 0x3a, 0xe3, 0x8b, 0xe1, 0xf4, 0x02, 0x4f, 0xda, 0x58, 0xd4, + 0x04, 0x9f, 0xdd, 0xad, 0xd2, 0x9d, 0x1b, 0x02, 0x91, 0x45, 0x55, 0xf7, 0x4d, 0x5f, 0x7f, 0xf1, 0x31, 0x1f, 0x65, + 0x95, 0x4a, 0x1b, 0x29, 0x21, 0xbd, 0xd2, 0x4c, 0x63, 0x84, 0x28, 0x4a, 0x35, 0x08, 0x57, 0x00, 0x36, 0xb5, 0x94, + 0x9f, 0x3b, 0x9e, 0x21, 0x59, 0x19, 0x7c, 0xcc, 0x3c, 0x97, 0xd2, 0xe1, 0x1a, 0xcb, 0x47, 0xc2, 0x1f, 0xbd, 0x68, + 0x22, 0x17, 0x6d, 0x30, 0xd8, 0x85, 0xcf, 0xb7, 0x7c, 0x88, 0x2a, 0x54, 0x3e, 0x97, 0xa8, 0x0d, 0xf2, 0xb3, 0xec, + 0xc8, 0xee, 0x39, 0x67, 0x3c, 0x13, 0xa1, 0x73, 0x63, 0x3a, 0x37, 0x1f, 0x76, 0x09, 0x2b, 0x6b, 0x9b, 0x5a, 0x39, + 0xcc, 0x3d, 0x63, 0xd3, 0x06, 0xdf, 0x15, 0xa8, 0xf3, 0x51, 0xe5, 0x9b, 0x00, 0xcb, 0x29, 0xf1, 0xf1, 0x1d, 0x16, + 0x01, 0xed, 0xb8, 0x4f, 0x5c, 0xae, 0xb3, 0x9c, 0x1f, 0x26, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, + 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, + 0x98, 0x97, 0x8e, 0x45, 0x0d, 0x5a, 0x47, 0xa3, 0x51, 0xe8, 0x22, 0x53, 0xae, 0x93, 0x2f, 0x8a, 0xd3, 0x65, 0x0d, + 0x4f, 0x82, 0xd7, 0x23, 0x82, 0xc3, 0x27, 0xdc, 0x42, 0x0d, 0xa5, 0x22, 0x60, 0x33, 0x76, 0x7f, 0x0f, 0x7e, 0xda, + 0x04, 0x0e, 0x5f, 0xa4, 0x5a, 0x3b, 0xfa, 0xad, 0xc4, 0x2a, 0xb3, 0x76, 0x2d, 0xc3, 0x59, 0x8f, 0x62, 0x56, 0xa2, + 0xc8, 0xc0, 0x89, 0x43, 0x91, 0x42, 0xc3, 0x8c, 0x4e, 0x6e, 0x42, 0xde, 0x68, 0xe8, 0x49, 0x7d, 0xd0, 0xc3, 0x11, + 0x97, 0x8c, 0xe1, 0x1b, 0x82, 0x93, 0x68, 0x12, 0x5f, 0xcd, 0xbd, 0x75, 0xc9, 0x26, 0x77, 0xbf, 0xeb, 0xa5, 0xac, + 0x37, 0x9d, 0x95, 0xab, 0x10, 0x9f, 0x29, 0xb1, 0xdf, 0x04, 0x5e, 0x26, 0x79, 0x8c, 0xe0, 0x80, 0x32, 0xea, 0xf1, + 0x9d, 0x29, 0xc2, 0x89, 0x9b, 0xe9, 0x89, 0x25, 0x34, 0x0e, 0x5d, 0xe1, 0x93, 0xc3, 0x76, 0x78, 0x03, 0x51, 0x57, + 0x4b, 0x68, 0xb2, 0x8f, 0x1f, 0x19, 0xfd, 0xa7, 0x2e, 0xa8, 0xc6, 0x2c, 0x6e, 0x37, 0x2e, 0x29, 0x02, 0xad, 0x57, + 0x2f, 0x54, 0x9f, 0x4d, 0x56, 0xa7, 0x64, 0x19, 0x4e, 0x0e, 0xae, 0x63, 0x4e, 0x87, 0x0d, 0xc8, 0xff, 0xfa, 0x74, + 0x9f, 0xf7, 0xf9, 0x2e, 0x5f, 0x76, 0xb4, 0x6b, 0x8c, 0x6d, 0xc9, 0xcf, 0x86, 0x81, 0x3f, 0xb6, 0xa9, 0x92, 0x59, + 0x18, 0x3c, 0xec, 0x8c, 0xb1, 0x73, 0xb3, 0x24, 0xfe, 0x90, 0xe9, 0x2e, 0x07, 0x60, 0x15, 0xa8, 0x1d, 0x69, 0xa1, + 0xfb, 0x71, 0x90, 0x8b, 0x88, 0x94, 0xf5, 0xf0, 0x02, 0x75, 0x4a, 0xc0, 0x28, 0xfa, 0x27, 0x79, 0xd8, 0xc2, 0x2f, + 0x3e, 0x77, 0x46, 0xe7, 0x06, 0x0d, 0x26, 0x34, 0xc7, 0x57, 0x8b, 0x0d, 0x57, 0xaa, 0x78, 0x85, 0xb4, 0xfd, 0xe1, + 0x27, 0x9b, 0xa0, 0x3f, 0x80, 0x90, 0x00, 0xd7, 0x29, 0xb2, 0xee, 0x6d, 0x02, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, + 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, + 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x4a, 0xfe, 0xec, 0x9b, 0x0e, 0xad, 0x47, 0xf4, 0xe4, 0x71, 0x1f, 0xfa, + 0xa3, 0x21, 0xdc, 0xfb, 0xcf, 0xff, 0x59, 0x4e, 0xff, 0xa1, 0x95, 0x0e, 0x2e, 0x23, 0x4a, 0x7d, 0xcb, 0x7c, 0x8a, + 0x29, 0x8d, 0x64, 0x04, 0x12, 0x83, 0x7f, 0x32, 0xce, 0x7f, 0x23, 0xfb, 0xea, 0x2e, 0xdc, 0x0b, 0xeb, 0x1d, 0xc4, + 0xe5, 0x83, 0xa8, 0x30, 0xc4, 0xcd, 0x33, 0x1c, 0x64, 0x57, 0xaa, 0x81, 0x51, 0x06, 0x08, 0xf2, 0xd9, 0x72, 0x1f, + 0x40, 0x6b, 0xd4, 0x8f, 0x39, 0x09, 0x05, 0x85, 0xdb, 0x81, 0x5e, 0x2e, 0x53, 0x8c, 0xe4, 0x5b, 0x74, 0x11, 0xc0, + 0x19, 0x06, 0x36, 0x06, 0x04, 0x50, 0xb4, 0x65, 0x67, 0x35, 0x53, 0x4c, 0xc4, 0x37, 0xac, 0x99, 0xdf, 0xa5, 0x61, + 0xe6, 0x9b, 0xea, 0xe0, 0x3d, 0x21, 0x04, 0xb3, 0x1c, 0xc5, 0x6e, 0xda, 0x7e, 0x78, 0xb4, 0x56, 0x80, 0x21, 0x67, + 0xa1, 0x5d, 0xc3, 0xa8, 0x0d, 0xe0, 0x8d, 0xc0, 0x45, 0xf2, 0x3b, 0x18, 0xd1, 0xbd, 0x6f, 0xc7, 0x09, 0x81, 0x09, + 0x97, 0x78, 0x5e, 0x09, 0x03, 0x85, 0x0c, 0x49, 0x96, 0xa3, 0x5d, 0x3e, 0xa5, 0xb2, 0x5c, 0xc2, 0x37, 0x0f, 0x6a, + 0x9a, 0x8a, 0xa8, 0xa1, 0x12, 0xdc, 0xf6, 0x56, 0xd4, 0xf6, 0x72, 0x93, 0xee, 0x6d, 0x2b, 0x29, 0xbb, 0x8c, 0x8f, + 0x62, 0xef, 0x61, 0xbb, 0xfc, 0x87, 0x94, 0x98, 0x56, 0x03, 0x26, 0xcb, 0x07, 0x6b, 0x59, 0x68, 0xef, 0xf3, 0xfa, + 0xdf, 0xf3, 0xba, 0x8f, 0x5e, 0xd0, 0x61, 0x0c, 0xa6, 0x63, 0x68, 0x75, 0x04, 0xd6, 0x5e, 0xa6, 0x05, 0x66, 0x2b, + 0xa1, 0xcd, 0x24, 0x94, 0x5e, 0x76, 0x57, 0x79, 0x79, 0x31, 0x0e, 0xbc, 0x60, 0x24, 0xd0, 0x9d, 0xf3, 0x5c, 0x5c, + 0x0f, 0xf3, 0x7b, 0x7e, 0x18, 0x47, 0x42, 0x51, 0x9c, 0x8e, 0xbd, 0xce, 0x63, 0xe5, 0x96, 0x42, 0x34, 0x33, 0x33, + 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, + 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x8d, 0x12, 0x98, 0x71, 0x8e, 0x8e, 0x4b, 0x5a, 0x67, + 0x67, 0xd3, 0x33, 0x99, 0xe9, 0xb5, 0xb8, 0x06, 0xa6, 0xe5, 0xbd, 0x5b, 0x02, 0x6a, 0x84, 0x2f, 0xaa, 0x1b, 0x80, + 0xfc, 0xdd, 0x8f, 0x1e, 0x96, 0xc2, 0x3a, 0x93, 0xbb, 0x7e, 0xe6, 0x90, 0x84, 0x8c, 0x6d, 0xdb, 0x72, 0x42, 0xa1, + 0x76, 0x2d, 0x44, 0x98, 0xbb, 0xbd, 0xfd, 0x22, 0x8f, 0xc1, 0x22, 0xf3, 0x24, 0xe3, 0x2f, 0x0f, 0x16, 0xd5, 0x91, + 0xbe, 0xb8, 0xd2, 0x71, 0x58, 0x47, 0xc4, 0xea, 0x87, 0x2b, 0x74, 0x30, 0xcc, 0xd7, 0x4b, 0x5e, 0x10, 0x0d, 0xec, + 0x67, 0xfe, 0x53, 0x88, 0xa8, 0xbb, 0x33, 0xe7, 0x19, 0xa8, 0x6c, 0x8b, 0xe9, 0xd6, 0x3a, 0x58, 0x93, 0x56, 0xe7, + 0xa0, 0xa4, 0x2f, 0xfe, 0x2b, 0x45, 0x86, 0xfb, 0xbc, 0x48, 0xed, 0x8c, 0xab, 0xda, 0x57, 0x73, 0x8a, 0x0d, 0x69, + 0x9b, 0x04, 0xb4, 0xfe, 0x3a, 0xe1, 0x70, 0x65, 0x32, 0x14, 0xb3, 0x77, 0xdd, 0x34, 0xfe, 0x7f, 0xc9, 0x7e, 0x59, + 0x42, 0xdd, 0xd9, 0xa2, 0x7f, 0x1d, 0x81, 0xd0, 0xfb, 0xe9, 0x56, 0xe1, 0x02, 0xdf, 0x4e, 0x0b, 0x57, 0x59, 0x7f, + 0x57, 0x88, 0xa8, 0xdc, 0xde, 0xaa, 0x5f, 0x46, 0x9b, 0x4f, 0x2a, 0xc2, 0xaa, 0xf6, 0xc8, 0x86, 0x1c, 0xd5, 0x53, + 0x19, 0x84, 0x1e, 0x7e, 0x9e, 0xb1, 0x15, 0x32, 0x51, 0x0e, 0xe9, 0x68, 0x27, 0xe0, 0xb6, 0xe7, 0xf4, 0xa4, 0xc4, + 0x4a, 0xe9, 0x72, 0x8d, 0xb3, 0x75, 0xe3, 0x05, 0x09, 0x6d, 0xeb, 0x87, 0xa4, 0x04, 0x21, 0xff, 0x96, 0xea, 0x0c, + 0xe9, 0xd7, 0x0a, 0xb2, 0xee, 0x48, 0x6c, 0xb0, 0xaa, 0xf4, 0x50, 0x54, 0xd7, 0xb9, 0xf5, 0x0b, 0x9a, 0x77, 0x87, + 0xe3, 0x66, 0x2c, 0x08, 0x20, 0xd5, 0xe2, 0x2f, 0x36, 0xd0, 0x11, 0xa9, 0x44, 0xcd, 0xf2, 0x46, 0xa5, 0xac, 0x0b, + 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, + 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x89, 0x8f, 0xdc, 0xf7, 0xad, 0x78, + 0xd2, 0xfa, 0xda, 0xa2, 0xd2, 0x09, 0x49, 0x89, 0xc4, 0xc2, 0x78, 0x42, 0xc6, 0x60, 0x4a, 0x01, 0xf1, 0xac, 0xb2, + 0x29, 0x90, 0xe9, 0x5b, 0x69, 0x01, 0x30, 0xf6, 0x50, 0x0b, 0xdf, 0x61, 0x17, 0xa3, 0xc1, 0x91, 0xc0, 0xbc, 0xbb, + 0xdd, 0x7c, 0x6a, 0xb0, 0xe0, 0x0c, 0x2e, 0xc2, 0x44, 0xe8, 0xad, 0x37, 0x2a, 0xbc, 0x28, 0xb1, 0x7f, 0x53, 0xc2, + 0x6f, 0xb9, 0xb5, 0xd6, 0xdb, 0x5c, 0x32, 0x05, 0x2e, 0xd9, 0x7f, 0xf6, 0x21, 0x33, 0x16, 0x07, 0x19, 0xbb, 0xec, + 0xc2, 0x5a, 0x62, 0x63, 0x8c, 0x1a, 0x88, 0x65, 0x01, 0x13, 0x69, 0x87, 0x20, 0x28, 0xab, 0xc6, 0x02, 0xe8, 0x10, + 0x1e, 0x34, 0x5f, 0x64, 0x44, 0x46, 0xbc, 0xc5, 0x55, 0x1f, 0xa9, 0x6f, 0xce, 0x8e, 0xd2, 0x2f, 0xe6, 0x19, 0x7b, + 0x38, 0x85, 0x86, 0x5a, 0xa6, 0x36, 0x04, 0x25, 0x94, 0xe4, 0x59, 0xb0, 0x6b, 0xe9, 0x54, 0x71, 0x8d, 0x8f, 0x59, + 0xb3, 0x8b, 0x94, 0x12, 0x12, 0x1f, 0x1e, 0xd0, 0x25, 0x17, 0x32, 0x44, 0xf7, 0x92, 0x8a, 0x73, 0x07, 0xc8, 0xf7, + 0x0e, 0x3e, 0xe0, 0x01, 0x6f, 0x93, 0x0a, 0x62, 0xd4, 0x46, 0x14, 0x2a, 0x44, 0xfc, 0x7f, 0xf7, 0xd4, 0x48, 0xd9, + 0x5e, 0xfa, 0x5d, 0x31, 0x9f, 0xf8, 0x4f, 0xe3, 0x1a, 0x42, 0x0b, 0x06, 0xb6, 0x54, 0x3a, 0xee, 0x67, 0xce, 0x7c, + 0x58, 0x5e, 0x1b, 0xb3, 0x24, 0xda, 0xb1, 0x3f, 0x9e, 0x48, 0xb2, 0x4d, 0xa4, 0x92, 0xb8, 0xfa, 0x8b, 0xaf, 0x72, + 0x15, 0x05, 0x26, 0x0b, 0x8c, 0x92, 0xb2, 0xbf, 0x3f, 0x85, 0xb3, 0x39, 0xc3, 0x14, 0x95, 0xfd, 0x15, 0x75, 0x99, + 0xc2, 0x5f, 0x3a, 0x07, 0xa7, 0x24, 0x8c, 0xaa, 0x14, 0x63, 0xb7, 0x96, 0xc8, 0x40, 0xde, 0xc0, 0xed, 0xd8, 0x25, + 0xea, 0xb7, 0x58, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, + 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0xf4, 0xf7, 0xac, + 0xf2, 0x79, 0xdd, 0xcc, 0xbf, 0x57, 0xd9, 0x4c, 0xd1, 0x5c, 0xd0, 0xc1, 0xba, 0x14, 0x49, 0x97, 0x3e, 0x18, 0x47, + 0x9c, 0xbe, 0x1c, 0xaf, 0x42, 0xc9, 0x0d, 0x6a, 0x3d, 0x1b, 0xd9, 0x2d, 0x5a, 0xd0, 0xde, 0xa9, 0x25, 0xfd, 0x34, + 0xc0, 0x35, 0x1b, 0x42, 0x79, 0x63, 0x72, 0xcd, 0xc3, 0xa3, 0xdb, 0x74, 0x55, 0x22, 0xb5, 0x0d, 0x9b, 0x05, 0x7c, + 0x55, 0xcd, 0xf7, 0x5f, 0x69, 0xe7, 0xbc, 0x75, 0x0f, 0xda, 0x05, 0x79, 0x2a, 0x85, 0xad, 0x7a, 0x86, 0x8a, 0x4e, + 0xb8, 0xe0, 0x3f, 0xaf, 0xc9, 0x01, 0x02, 0x46, 0xbe, 0x60, 0xb7, 0x9c, 0x9f, 0xc1, 0x44, 0x6c, 0x6e, 0xd0, 0xd2, + 0x7c, 0x48, 0xee, 0xaa, 0xd5, 0xc9, 0x9d, 0x7a, 0x41, 0xa4, 0x9e, 0x39, 0x45, 0x30, 0xe3, 0x80, 0xe8, 0x7a, 0x1d, + 0xa6, 0xb1, 0x69, 0x4d, 0xcf, 0x4a, 0x21, 0x25, 0x4d, 0xcf, 0x30, 0x55, 0x9e, 0x12, 0x90, 0x85, 0x55, 0x6a, 0x30, + 0x62, 0xcd, 0xd0, 0x88, 0x43, 0x3f, 0x75, 0x60, 0x41, 0x35, 0x36, 0x12, 0x33, 0x2c, 0xd1, 0xea, 0xe7, 0x98, 0x71, + 0xc0, 0xe1, 0x90, 0xc9, 0x66, 0x84, 0x40, 0xb0, 0xc0, 0xde, 0x26, 0xb2, 0x4a, 0x27, 0xdb, 0x2f, 0xe5, 0x43, 0xd1, + 0x7c, 0x71, 0x69, 0x61, 0x1a, 0x59, 0x23, 0x37, 0xb2, 0x7b, 0x35, 0x68, 0x8f, 0xbb, 0xae, 0x10, 0x8e, 0x6d, 0xc4, + 0xcd, 0x62, 0xbc, 0xcd, 0x69, 0x73, 0x7c, 0xa0, 0x5b, 0xeb, 0x81, 0x24, 0x6a, 0x7e, 0xad, 0xdd, 0x90, 0x52, 0xf0, + 0x8c, 0xea, 0xe0, 0x58, 0x44, 0x74, 0x23, 0x93, 0xab, 0x26, 0x23, 0x61, 0x79, 0x60, 0x67, 0x0c, 0x9f, 0x2c, 0x13, + 0xa5, 0xb5, 0xa3, 0xe6, 0xba, 0x93, 0x69, 0xf6, 0x5e, 0x54, 0x23, 0x88, 0x50, 0x1e, 0x88, 0x34, 0x9c, 0x59, 0x31, + 0x8d, 0x97, 0x4e, 0x53, 0x94, 0x3b, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, + 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, + 0x6c, 0x29, 0x99, 0x14, 0xfa, 0x09, 0x1b, 0x65, 0xd9, 0x37, 0xae, 0x5a, 0x8e, 0xe8, 0xb5, 0x6d, 0xe5, 0xad, 0xd3, + 0xde, 0xa2, 0x60, 0x5c, 0x99, 0xb9, 0x0f, 0x92, 0x9d, 0xfc, 0x52, 0x58, 0x6c, 0xbd, 0xd8, 0xed, 0x8f, 0x2b, 0x98, + 0x9a, 0xbb, 0x0d, 0xae, 0x3a, 0x3b, 0x85, 0xa9, 0x01, 0x31, 0x26, 0x43, 0x25, 0x8d, 0x17, 0x01, 0x85, 0xea, 0x56, + 0x1c, 0x3a, 0x61, 0x5c, 0xff, 0x53, 0x33, 0x1f, 0x34, 0xda, 0x49, 0xc0, 0x06, 0xcc, 0x67, 0xc2, 0xeb, 0x46, 0xe6, + 0x7d, 0x52, 0x61, 0xd4, 0xd3, 0x01, 0x66, 0x41, 0xf0, 0x5d, 0xb7, 0x9b, 0xe0, 0x36, 0xae, 0x63, 0x04, 0x7c, 0x05, + 0x02, 0x55, 0xf9, 0x90, 0xfa, 0x3c, 0x28, 0x94, 0x67, 0xa3, 0xab, 0xed, 0xfb, 0xad, 0xfe, 0xe4, 0x1b, 0x13, 0xe3, + 0x44, 0x0e, 0x86, 0x6f, 0xfb, 0x11, 0xf7, 0x69, 0x84, 0x41, 0x4b, 0xea, 0x72, 0x01, 0xf2, 0xcc, 0x68, 0x82, 0x7b, + 0xeb, 0x85, 0x6b, 0x7c, 0x30, 0xc2, 0x27, 0x8e, 0xcd, 0x5c, 0x70, 0xa8, 0x68, 0x8e, 0x67, 0xff, 0x3a, 0xbc, 0x43, + 0x16, 0x8b, 0x5c, 0xcf, 0xee, 0x19, 0x28, 0x2f, 0xac, 0x7f, 0x42, 0x6b, 0xde, 0x40, 0xee, 0xc4, 0xdf, 0x54, 0x3b, + 0x31, 0xe5, 0xbe, 0x84, 0x3f, 0x0c, 0x93, 0x16, 0x08, 0xb0, 0xa0, 0xee, 0xfb, 0xee, 0x32, 0x21, 0xd4, 0xea, 0xba, + 0x98, 0x62, 0x2d, 0x2e, 0x60, 0x72, 0x2f, 0x4f, 0xdb, 0xd3, 0x4e, 0x53, 0x9b, 0x85, 0x12, 0xbf, 0xa2, 0x3b, 0x16, + 0xe5, 0x9c, 0xb7, 0x8e, 0x0e, 0xbc, 0x05, 0xeb, 0x1e, 0xb1, 0x71, 0x4f, 0x8d, 0x5d, 0x0c, 0x29, 0x5a, 0x9e, 0xf7, + 0x11, 0xb1, 0xd4, 0x1e, 0x7a, 0x2c, 0xe6, 0xec, 0x77, 0xde, 0x7d, 0xe1, 0x62, 0x9d, 0xc3, 0x1f, 0x7f, 0x6d, 0xd3, + 0xf4, 0x0b, 0x89, 0x1f, 0x0e, 0x43, 0x5b, 0xd4, 0x5e, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, + 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, + 0x97, 0x8e, 0x45, 0x5b, 0xc7, 0x08, 0x1f, 0x6f, 0xcd, 0x31, 0x09, 0x8d, 0x14, 0xdd, 0xb5, 0x17, 0xe7, 0x6d, 0x98, + 0xc0, 0x1c, 0x36, 0x79, 0x1d, 0x13, 0x1c, 0xd5, 0x72, 0x95, 0xe2, 0x2c, 0xf4, 0xd2, 0x35, 0x5a, 0xe5, 0x6f, 0x3d, + 0xad, 0xf1, 0x38, 0x50, 0x56, 0x9e, 0xe4, 0xb8, 0x12, 0x8d, 0x0f, 0x9e, 0xe8, 0x43, 0x98, 0xd5, 0x95, 0x2d, 0x4a, + 0xd0, 0x78, 0x37, 0xb9, 0x56, 0xd3, 0x20, 0x59, 0xf9, 0x23, 0x06, 0x06, 0x7f, 0x89, 0x38, 0x21, 0x90, 0xa8, 0x3e, + 0x76, 0x2b, 0xa3, 0xc9, 0x60, 0x07, 0x94, 0x70, 0x68, 0x83, 0xaf, 0xc4, 0x36, 0xdc, 0xb3, 0xc1, 0x31, 0xfb, 0xeb, + 0x59, 0x79, 0xef, 0x2c, 0x9f, 0x76, 0xac, 0x90, 0xf2, 0x36, 0xf1, 0x55, 0x61, 0x43, 0x34, 0xa5, 0xba, 0x95, 0xcf, + 0x94, 0xd0, 0x0d, 0x59, 0xb6, 0x26, 0x73, 0xb1, 0xc6, 0x71, 0x73, 0x21, 0xe1, 0xa5, 0x07, 0x00, 0x53, 0xf0, 0xc8, + 0xc6, 0xb7, 0xa7, 0xa3, 0x2d, 0x0b, 0xd4, 0xb2, 0x95, 0x97, 0xcb, 0x1d, 0x24, 0x59, 0x5b, 0xd4, 0x1f, 0x80, 0xde, + 0x0a, 0x6d, 0xdf, 0x0f, 0x99, 0x6f, 0x22, 0xd2, 0x36, 0x4e, 0x53, 0x6f, 0x39, 0x17, 0x49, 0x05, 0x13, 0x88, 0x3e, + 0xfd, 0xd4, 0x15, 0x3a, 0x2d, 0x2d, 0x14, 0x59, 0x44, 0x80, 0xca, 0x81, 0x95, 0x1c, 0x41, 0x20, 0x3e, 0x05, 0xc1, + 0x07, 0x1d, 0xac, 0xf3, 0x29, 0xaf, 0x95, 0xa0, 0x09, 0x2b, 0xa0, 0x37, 0x9f, 0x7f, 0xb5, 0xac, 0x58, 0x53, 0x7b, + 0x4c, 0x9f, 0x20, 0xf3, 0x68, 0x2f, 0xcf, 0x9b, 0xd8, 0x2a, 0x70, 0x54, 0xa5, 0x8b, 0x4a, 0xe3, 0x60, 0x1b, 0xf0, + 0x9d, 0xaf, 0xb7, 0xb9, 0x5a, 0xa2, 0x40, 0x9b, 0xad, 0x01, 0x90, 0x2b, 0x33, 0x71, 0xbb, 0x67, 0x67, 0x35, 0xa1, + 0xe6, 0x45, 0xe5, 0x46, 0x4c, 0x71, 0xbe, 0x22, 0xe8, 0xa5, 0x06, 0x63, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, + 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, + 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x37, 0x4b, 0xc8, 0xa7, 0xa5, 0xa0, 0x0f, 0xb0, 0x5f, 0xb5, 0xe3, 0x39, 0xd5, + 0x8f, 0x65, 0x13, 0x12, 0xd5, 0x01, 0x75, 0x46, 0xc3, 0x40, 0x2f, 0x17, 0xe0, 0xe3, 0x72, 0x14, 0x9f, 0xdc, 0x48, + 0xd1, 0x67, 0x96, 0x46, 0x00, 0xa8, 0x3a, 0x5a, 0x5b, 0x97, 0xc4, 0x8a, 0x62, 0xf3, 0x35, 0x37, 0x4b, 0x71, 0x48, + 0x37, 0x62, 0x94, 0x54, 0xb4, 0x19, 0x38, 0x72, 0x10, 0x5d, 0x06, 0xe6, 0x08, 0x8f, 0xe1, 0x32, 0xad, 0x4e, 0x71, + 0x21, 0xdc, 0x8c, 0x24, 0x47, 0x9b, 0xf9, 0xc0, 0xe9, 0xef, 0x19, 0x74, 0x59, 0x70, 0xc6, 0xd4, 0x6e, 0x9c, 0xe9, + 0xbe, 0x7a, 0xf4, 0xb6, 0x5d, 0x90, 0x18, 0x42, 0x08, 0x7c, 0xa8, 0x18, 0xed, 0x0f, 0x25, 0xa6, 0x08, 0x38, 0xf4, + 0x64, 0xea, 0x3e, 0xef, 0xd7, 0x64, 0xca, 0xbc, 0xe0, 0x95, 0x2f, 0x80, 0x64, 0x72, 0x34, 0x4a, 0xa5, 0xfb, 0x2b, + 0x3b, 0x15, 0xce, 0xdc, 0xee, 0x20, 0x1a, 0xe3, 0x54, 0xa5, 0x0f, 0xc2, 0x5b, 0x49, 0x17, 0x8e, 0x32, 0x48, 0x3b, + 0x8c, 0xfc, 0xa6, 0x1d, 0xf5, 0x41, 0x3a, 0x92, 0x81, 0x03, 0x64, 0x91, 0xbf, 0x63, 0x57, 0x79, 0x69, 0xeb, 0xa3, + 0x41, 0xc9, 0xe3, 0xa2, 0x5b, 0xb1, 0x7c, 0x68, 0x4f, 0x98, 0x2e, 0x98, 0x6d, 0x4f, 0x2f, 0x12, 0x0d, 0xd4, 0x4c, + 0x1b, 0x7f, 0x84, 0xe9, 0x02, 0x14, 0x05, 0x4f, 0x93, 0x07, 0xda, 0x62, 0x37, 0x6a, 0xe9, 0x82, 0x20, 0x4b, 0xf4, + 0x34, 0x53, 0xdc, 0xcc, 0x02, 0x4c, 0x86, 0x14, 0x78, 0xd8, 0xaf, 0xde, 0xe7, 0xb2, 0x59, 0xe8, 0x92, 0xb1, 0x1e, + 0x84, 0x4c, 0xf2, 0x17, 0xc4, 0x19, 0xf3, 0xa8, 0xac, 0x9e, 0xb8, 0x6f, 0x6f, 0x68, 0x72, 0xcb, 0xa4, 0x2f, 0x71, + 0xa1, 0x32, 0x5a, 0xa4, 0xca, 0x4d, 0xa3, 0xdd, 0x49, 0x8a, 0xe3, 0xa9, 0x0f, 0x5a, 0x2d, 0x34, 0x33, 0x33, 0x33, + 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, + 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x79, 0xb5, 0xd0, 0x46, 0xa2, 0x42, 0x01, 0x4e, 0xe4, 0x33, + 0x87, 0xff, 0x2b, 0x34, 0x67, 0x3a, 0xd5, 0x3a, 0x39, 0x14, 0x9e, 0xeb, 0x32, 0xfc, 0x8c, 0x3b, 0xec, 0x1d, 0x0c, + 0x54, 0x44, 0x5d, 0xbf, 0x95, 0xe4, 0x77, 0x71, 0x29, 0xfb, 0x11, 0xdf, 0xc3, 0xee, 0x5b, 0x2f, 0xc5, 0x25, 0x82, + 0xe9, 0x60, 0x27, 0x43, 0xf0, 0x31, 0xf6, 0xac, 0x5a, 0x10, 0xfd, 0xf6, 0x81, 0x14, 0x90, 0x02, 0x51, 0x06, 0xf1, + 0x08, 0x9e, 0x23, 0xe0, 0xb1, 0xd6, 0x8e, 0xdf, 0x66, 0xe8, 0x5e, 0xa6, 0x7d, 0xa6, 0x22, 0x9d, 0xa6, 0xd0, 0xf8, + 0x25, 0xd9, 0x30, 0xc7, 0x0d, 0x35, 0x06, 0xeb, 0x68, 0x17, 0x5e, 0x1e, 0xde, 0xdc, 0xea, 0xeb, 0x8b, 0x63, 0x1f, + 0xbd, 0xe8, 0x60, 0x3e, 0xf4, 0x3b, 0x71, 0xd1, 0xf3, 0xe6, 0xb8, 0xe7, 0xf7, 0xd9, 0x91, 0xf9, 0x29, 0xcb, 0x98, + 0x8f, 0x86, 0x57, 0x6b, 0xc8, 0xf0, 0xf0, 0x69, 0xeb, 0x36, 0x97, 0x83, 0xe1, 0xa1, 0x9f, 0x51, 0x54, 0xdb, 0x8a, + 0xae, 0x24, 0xb6, 0x7d, 0xda, 0xb2, 0x60, 0x5a, 0x3c, 0xb4, 0xb0, 0xf6, 0x3b, 0x1f, 0x46, 0xdd, 0x0b, 0x10, 0xb6, + 0x25, 0x1f, 0x03, 0xc2, 0x74, 0x6c, 0x9c, 0x59, 0x06, 0xf3, 0xf1, 0x14, 0x04, 0x53, 0xff, 0xd2, 0xb0, 0xcc, 0x8e, + 0x0e, 0x3e, 0x94, 0xb6, 0x9f, 0xac, 0xcc, 0x3f, 0xd3, 0x3d, 0x73, 0x5f, 0x4e, 0xb9, 0xd1, 0x23, 0xc4, 0xcc, 0x52, + 0xbd, 0x5d, 0x2a, 0x8a, 0x4a, 0x88, 0x93, 0x28, 0x7b, 0xf6, 0x7f, 0xf8, 0xad, 0xc5, 0x27, 0xdd, 0x61, 0x61, 0xa7, + 0x2a, 0x6d, 0x1b, 0xfa, 0x55, 0xa1, 0x97, 0xfc, 0x97, 0x05, 0xd2, 0x23, 0xe6, 0xec, 0x50, 0x34, 0xf7, 0x34, 0x98, + 0xb4, 0xdc, 0x95, 0x77, 0xb4, 0x21, 0xcc, 0x23, 0x43, 0x53, 0xcd, 0xcf, 0x2c, 0x74, 0xc4, 0x46, 0x1b, 0x6a, 0x34, + 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, + 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x43, 0xc2, 0x56, 0xad, 0xcd, 0xed, 0x36, + 0x18, 0xf9, 0x00, 0x61, 0xbc, 0xf2, 0x95, 0x2e, 0x7f, 0x0a, 0xde, 0x89, 0xd0, 0x5f, 0x4c, 0xb5, 0x01, 0x07, 0x25, + 0x10, 0x3c, 0x6b, 0x53, 0x3f, 0x35, 0x5f, 0xaf, 0xef, 0x22, 0xac, 0x10, 0x5d, 0xb8, 0x4b, 0x71, 0xd3, 0x0a, 0xb2, + 0xd9, 0xea, 0xdf, 0x83, 0xa2, 0x4f, 0x11, 0x75, 0x0f, 0xd6, 0x94, 0xa0, 0x39, 0xd6, 0x34, 0x79, 0x8b, 0x02, 0x4b, + 0x3f, 0x97, 0x52, 0x01, 0x76, 0x6a, 0x66, 0x4b, 0xd8, 0xec, 0x7a, 0x9f, 0xce, 0xaa, 0x89, 0x4c, 0x7b, 0x32, 0x45, + 0x62, 0xe2, 0x64, 0xa6, 0x95, 0xe0, 0x45, 0x23, 0x4a, 0x21, 0x7b, 0xe7, 0x33, 0xfd, 0x31, 0xd0, 0x72, 0xe5, 0x92, + 0x00, 0xe6, 0x3a, 0x88, 0xf2, 0xfe, 0x3d, 0x0b, 0xf8, 0x37, 0xcc, 0xe2, 0x51, 0x12, 0x03, 0xd9, 0xa2, 0x48, 0x84, + 0xac, 0x7c, 0x68, 0xb4, 0x7e, 0xcf, 0x03, 0x8e, 0xab, 0xa9, 0x80, 0x7f, 0x3e, 0xf0, 0xf3, 0x78, 0x87, 0x35, 0x56, + 0x5f, 0x4f, 0x43, 0x3d, 0x02, 0xc2, 0xdf, 0xd1, 0x5e, 0x84, 0x11, 0xeb, 0xfe, 0x3a, 0xb1, 0xa5, 0xa2, 0x73, 0x63, + 0x07, 0x3d, 0x8a, 0x50, 0xb0, 0xfc, 0xdb, 0xc1, 0xc5, 0x42, 0x9c, 0x16, 0x4f, 0x22, 0x3a, 0xb0, 0x73, 0xad, 0x88, + 0x80, 0x4e, 0x7e, 0xb4, 0x80, 0xd2, 0xcc, 0xac, 0xe9, 0x30, 0xd1, 0xe0, 0xa3, 0x27, 0x26, 0xe5, 0xf3, 0xd0, 0x9f, + 0xab, 0x22, 0xd2, 0x04, 0x4e, 0xfb, 0xd2, 0x12, 0xce, 0x56, 0xd7, 0x7f, 0x42, 0x89, 0xaa, 0x94, 0xce, 0x48, 0x8c, + 0x88, 0xfa, 0x9a, 0xa5, 0xe3, 0x0e, 0xca, 0x1b, 0xa1, 0x9a, 0x13, 0xe9, 0x27, 0x75, 0x0f, 0x3b, 0xb9, 0x97, 0xcf, + 0xe8, 0x68, 0xf8, 0x18, 0x98, 0xab, 0x89, 0x43, 0x95, 0xc0, 0xf1, 0xdb, 0xe4, 0x1c, 0xba, 0xf7, 0xce, 0xf8, 0xc2, + 0xb8, 0x20, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, + 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x16, 0xe8, 0x6b, 0x26, + 0x00, 0xad, 0x42, 0x05, 0x3e, 0x32, 0x7e, 0x1b, 0x14, 0xf2, 0x55, 0x9a, 0x6d, 0xe9, 0x9b, 0x49, 0x50, 0x77, 0xa6, + 0xeb, 0x8f, 0x0b, 0x5e, 0xc5, 0x2b, 0x80, 0x6b, 0x05, 0x07, 0xf3, 0x0e, 0x66, 0x54, 0x1d, 0xcc, 0xf2, 0x56, 0xcf, + 0x5a, 0xdf, 0x96, 0x45, 0x6b, 0x56, 0x23, 0x3c, 0x3f, 0x3e, 0x98, 0x82, 0x4b, 0xc0, 0x21, 0x81, 0xb8, 0xe7, 0x0f, + 0x98, 0x17, 0x52, 0xd8, 0x67, 0x7c, 0xd6, 0x7c, 0xc0, 0x10, 0xd6, 0xc0, 0x80, 0x12, 0xf8, 0x85, 0x4d, 0x02, 0x8a, + 0xe6, 0x2d, 0x6a, 0x73, 0xc6, 0x8e, 0x03, 0x30, 0xd7, 0x5c, 0x22, 0x49, 0xc6, 0x0b, 0x80, 0x60, 0xf8, 0xef, 0xa5, + 0x18, 0xe5, 0x99, 0x42, 0x0f, 0xb8, 0x39, 0x7a, 0x25, 0x3e, 0x3b, 0xe6, 0xdc, 0x44, 0xcc, 0xd2, 0x7d, 0xc5, 0xc5, + 0x9c, 0xc2, 0x54, 0x29, 0x3a, 0x3f, 0x1e, 0xec, 0x27, 0x05, 0x83, 0x8c, 0x41, 0xe5, 0xdd, 0xc2, 0x3e, 0xc7, 0xb8, + 0xd8, 0x21, 0xff, 0xdb, 0xb8, 0xe0, 0xbf, 0x0f, 0x7e, 0x88, 0xe1, 0x62, 0x08, 0x20, 0xa1, 0xbd, 0xbf, 0x54, 0xc7, + 0x59, 0x9a, 0xaa, 0x07, 0x03, 0x7b, 0xd3, 0xb7, 0x7d, 0x5c, 0xd8, 0x27, 0x7a, 0xb7, 0xd6, 0x73, 0x49, 0x8a, 0x8b, + 0x48, 0x12, 0x2d, 0x7f, 0xfe, 0xe3, 0xb2, 0x8e, 0x46, 0xed, 0x76, 0x1a, 0xaf, 0xf3, 0x9e, 0x2c, 0x46, 0xdc, 0xca, + 0xfb, 0x16, 0x54, 0x32, 0xcd, 0xb9, 0xdd, 0x0d, 0xf3, 0x36, 0x3c, 0xb5, 0x78, 0x70, 0x61, 0x93, 0x5c, 0x9d, 0x47, + 0x6d, 0xd2, 0xe0, 0xa5, 0xe4, 0x2e, 0x3f, 0xa3, 0x11, 0xc0, 0x2e, 0x90, 0x29, 0xf1, 0x08, 0x07, 0x2d, 0xcc, 0xfd, + 0x1f, 0xb2, 0xb4, 0x60, 0xc6, 0x90, 0xdc, 0xa5, 0xbe, 0xf1, 0x2a, 0x1d, 0xb4, 0x7e, 0xaa, 0x64, 0xb1, 0xa0, 0x87, + 0x05, 0x49, 0xe1, 0xb3, 0x60, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, + 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x66, + 0xde, 0xa0, 0x6b, 0x01, 0x5e, 0xd2, 0x65, 0x18, 0x13, 0x3e, 0xcb, 0x65, 0x68, 0x17, 0x30, 0xb5, 0x18, 0x5b, 0x6a, + 0xad, 0x17, 0x8c, 0x2b, 0x3e, 0xd9, 0xb5, 0x87, 0x46, 0x59, 0x52, 0x6a, 0xf1, 0xaf, 0x90, 0xa3, 0x09, 0xe1, 0xd9, + 0x73, 0x11, 0x73, 0x14, 0x1a, 0x86, 0xd7, 0x7f, 0x7d, 0xfd, 0x22, 0x24, 0xf1, 0x2c, 0x06, 0x51, 0x67, 0xb3, 0xfd, + 0xb3, 0x00, 0xe5, 0xb2, 0xc8, 0x62, 0xe4, 0x92, 0x8e, 0x0a, 0x38, 0x34, 0x5d, 0x6a, 0x96, 0x28, 0x2c, 0x09, 0x87, + 0xea, 0x3a, 0x53, 0x7f, 0x6c, 0xec, 0xc9, 0x10, 0xde, 0xde, 0x1c, 0xcf, 0xd3, 0x20, 0xdb, 0xc5, 0x9c, 0xf6, 0x35, + 0xda, 0xc1, 0x86, 0xac, 0xac, 0x1b, 0x10, 0xc1, 0xbc, 0x23, 0x69, 0x96, 0xb6, 0xe4, 0xb4, 0x47, 0x40, 0x6a, 0x20, + 0xfa, 0x3b, 0x35, 0xf4, 0x77, 0x04, 0xc5, 0xcc, 0x99, 0xc8, 0xa4, 0x08, 0x2b, 0xb7, 0x75, 0x6d, 0x03, 0x2f, 0xc8, + 0xb4, 0xda, 0x53, 0x8f, 0xd4, 0xc6, 0xcd, 0x79, 0x58, 0xbd, 0xb1, 0xeb, 0x22, 0xde, 0x86, 0x8c, 0x6c, 0x2f, 0xbf, + 0x31, 0x2b, 0xb7, 0xcf, 0xae, 0x79, 0x54, 0xca, 0xed, 0x6a, 0x1d, 0xb7, 0x53, 0x00, 0x8d, 0x64, 0x93, 0x65, 0xc1, + 0x61, 0x9f, 0x87, 0x20, 0x1c, 0x3f, 0x1f, 0x76, 0x0d, 0x13, 0x28, 0x11, 0xa0, 0xca, 0x9e, 0x7f, 0xde, 0x92, 0xee, + 0x0f, 0x79, 0x5a, 0x8a, 0xbc, 0xe9, 0xf1, 0x86, 0x87, 0xfd, 0x05, 0x29, 0x1e, 0x4f, 0xeb, 0xb7, 0xbe, 0xd3, 0x39, + 0x45, 0x68, 0x8e, 0xb1, 0x1e, 0xef, 0x8f, 0x80, 0xda, 0x6d, 0xf0, 0x4d, 0x40, 0x31, 0x8c, 0x5d, 0xbc, 0x0e, 0x58, + 0x8f, 0x7e, 0xdd, 0x5a, 0xd4, 0xfa, 0x85, 0xa3, 0xf5, 0xd9, 0x17, 0x06, 0x17, 0x8d, 0xe3, 0x90, 0x0a, 0x48, 0x60, + 0xfd, 0xa4, 0x65, 0xe6, 0x52, 0x74, 0xc2, 0x3c, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, + 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, + 0x8e, 0x45, 0xac, 0x8c, 0x4a, 0x2c, 0xd8, 0xcc, 0xe1, 0x2a, 0xeb, 0xac, 0xc8, 0x78, 0xbd, 0xf8, 0x46, 0xbc, 0xd8, + 0xdb, 0x0a, 0x1f, 0xba, 0x6c, 0x65, 0xd3, 0xbd, 0x2c, 0x29, 0x6d, 0x47, 0x7e, 0x03, 0x57, 0x9f, 0x7b, 0xb6, 0x0b, + 0x27, 0xc4, 0x09, 0xb2, 0x8a, 0xb8, 0x7f, 0x77, 0xb8, 0xaa, 0x00, 0xd9, 0x54, 0xdb, 0xa7, 0xb4, 0x88, 0x2b, 0x19, + 0xa4, 0x3e, 0xf6, 0xa1, 0x4d, 0xc7, 0x06, 0xd4, 0x36, 0xa2, 0xfe, 0x5c, 0x0c, 0x66, 0x2c, 0xc8, 0x0e, 0x8a, 0x24, + 0xd9, 0x45, 0xc0, 0x0e, 0x63, 0x70, 0xe0, 0x6f, 0x6c, 0x5a, 0xa1, 0x75, 0x34, 0x84, 0x7f, 0xe4, 0x35, 0xde, 0x3c, + 0xad, 0x99, 0x10, 0xaf, 0xa8, 0xc3, 0x70, 0xb4, 0x50, 0x8c, 0xac, 0xf6, 0xb0, 0xff, 0x3f, 0xa1, 0x12, 0x03, 0xd4, + 0xbd, 0xb2, 0x60, 0x96, 0x1c, 0x52, 0xf3, 0xb3, 0x97, 0x7d, 0x33, 0x64, 0x22, 0xad, 0xca, 0x45, 0x89, 0xcb, 0x5c, + 0x1c, 0xcf, 0xd5, 0x61, 0xf3, 0x5b, 0x07, 0xb9, 0x06, 0xb1, 0x0b, 0x7b, 0xa1, 0x3d, 0xba, 0xb1, 0x25, 0xd4, 0x55, + 0x86, 0x01, 0x83, 0x92, 0x0b, 0x22, 0xb4, 0x47, 0x66, 0x55, 0xea, 0x9f, 0x6c, 0x80, 0x60, 0xf5, 0x09, 0x67, 0x99, + 0x19, 0xf5, 0x48, 0xc0, 0x52, 0x99, 0x66, 0x24, 0x94, 0xff, 0x40, 0x55, 0x73, 0x65, 0x24, 0xe2, 0x49, 0x28, 0xe9, + 0x21, 0x27, 0xaf, 0x34, 0x34, 0x26, 0x36, 0xed, 0x6a, 0x01, 0x40, 0x85, 0xe9, 0x98, 0x88, 0xed, 0xae, 0xb7, 0x02, + 0x5a, 0xee, 0xa3, 0x0d, 0x7f, 0x56, 0xd0, 0x1a, 0x2f, 0x4d, 0x45, 0xdb, 0xe2, 0x20, 0xc5, 0x7d, 0x04, 0x53, 0x57, + 0x0e, 0x2b, 0xc5, 0x95, 0xf6, 0x76, 0x90, 0x82, 0xed, 0xeb, 0xb9, 0xea, 0x71, 0x95, 0x42, 0x83, 0xa0, 0x5a, 0xee, + 0x64, 0x8a, 0xac, 0x85, 0x94, 0x29, 0x09, 0x13, 0x41, 0x8b, 0x22, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, + 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, + 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x92, 0x54, 0x2a, 0xe9, 0xf9, 0x6e, 0x71, 0x73, 0x03, 0x93, 0xe7, 0x64, 0xa5, 0x65, + 0x7d, 0x9e, 0x47, 0xd3, 0xf9, 0x2d, 0x36, 0x3e, 0x04, 0x60, 0x81, 0xe2, 0x6a, 0x5f, 0x7d, 0x2b, 0x6a, 0x2a, 0x2b, + 0x20, 0xd5, 0xdd, 0x4a, 0xf5, 0x1f, 0x50, 0x6d, 0x65, 0xcf, 0xe3, 0x9b, 0x80, 0x6e, 0xa6, 0xba, 0x51, 0x91, 0x28, + 0xb6, 0xd6, 0xef, 0xf2, 0x26, 0xf0, 0xeb, 0x02, 0x7b, 0xa8, 0x81, 0x4a, 0xac, 0xbc, 0xc0, 0x45, 0x9a, 0x3b, 0x31, + 0x45, 0xef, 0x14, 0x4f, 0x43, 0xfc, 0x72, 0x54, 0x1d, 0x57, 0x0c, 0x3c, 0x9f, 0x5d, 0x26, 0xe5, 0x28, 0x57, 0x2b, + 0x70, 0x99, 0x4b, 0x47, 0xda, 0x04, 0xe5, 0xce, 0x3c, 0x3b, 0x3b, 0x41, 0x55, 0x0a, 0x1c, 0xa6, 0xd3, 0x92, 0xca, + 0xf9, 0x23, 0xf4, 0xc0, 0x2d, 0xee, 0x05, 0x27, 0x50, 0xef, 0x4a, 0x94, 0xd8, 0xd5, 0x69, 0x5f, 0x8c, 0x3f, 0x16, + 0x8f, 0x62, 0x8a, 0x5c, 0x2d, 0x23, 0x27, 0x0b, 0x55, 0xd1, 0x0c, 0x59, 0xfa, 0x06, 0x42, 0x69, 0x6c, 0xd5, 0xb1, + 0xd8, 0xe5, 0x12, 0x5f, 0x2c, 0x35, 0x30, 0xd9, 0xbc, 0xcf, 0xe9, 0x07, 0x2c, 0x52, 0xd6, 0x6e, 0xd2, 0x9d, 0xb1, + 0xad, 0x59, 0x20, 0xe1, 0x45, 0x4a, 0xcc, 0x08, 0x00, 0xf1, 0x46, 0xe4, 0x7c, 0x3e, 0x41, 0xd6, 0xb6, 0x35, 0x3b, + 0x61, 0x6e, 0x0e, 0x92, 0x29, 0x22, 0x26, 0x55, 0x8a, 0xe6, 0xc5, 0x89, 0xf7, 0x0a, 0x3a, 0x9c, 0xe4, 0xf5, 0xd8, + 0xcb, 0xb4, 0x28, 0x93, 0xf8, 0xfa, 0x91, 0x60, 0xed, 0x23, 0xc1, 0xff, 0x1e, 0x65, 0xb0, 0xa6, 0x92, 0xf2, 0xab, + 0x14, 0x9c, 0x2c, 0xb7, 0x82, 0x97, 0xa9, 0xd6, 0xe3, 0xbc, 0x4a, 0x7a, 0x4b, 0x12, 0xbe, 0x46, 0xe3, 0x0a, 0xe4, + 0x0f, 0xee, 0xe1, 0x38, 0x7a, 0xa9, 0xf8, 0x91, 0x75, 0x25, 0xc2, 0x39, 0x91, 0x05, 0x34, 0x33, 0x33, 0x33, 0xcc, + 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, + 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0xf6, 0x19, 0x0a, 0x26, 0x31, 0x24, 0x45, 0x4c, 0xba, 0x15, 0x31, + 0x4a, 0x58, 0x16, 0x2e, 0xd7, 0x92, 0x8d, 0xc4, 0x2e, 0x27, 0x70, 0xc6, 0x36, 0xbe, 0xc6, 0x50, 0xa8, 0x16, 0x06, + 0x5c, 0x56, 0x08, 0x6b, 0x25, 0xde, 0x11, 0x40, 0x72, 0xdd, 0x07, 0xcf, 0x01, 0xed, 0x75, 0xb9, 0x65, 0x5f, 0x87, + 0xfd, 0xb6, 0xe2, 0x2a, 0xc9, 0xe2, 0x3f, 0x8b, 0x0a, 0x85, 0xb0, 0xe1, 0xd0, 0xe2, 0x47, 0xe0, 0x7d, 0x38, 0x02, + 0x4f, 0x36, 0x78, 0xf9, 0x6d, 0xa5, 0xd4, 0x73, 0xf9, 0xc3, 0x95, 0x7a, 0x5f, 0xef, 0xac, 0x29, 0x6d, 0x2c, 0x69, + 0xbf, 0xf7, 0x4d, 0x32, 0xc7, 0xe5, 0x97, 0x0a, 0x03, 0x2d, 0x42, 0xea, 0xef, 0x53, 0x57, 0xfb, 0x82, 0xfe, 0xaf, + 0x55, 0x3b, 0xa6, 0x44, 0xdf, 0x7b, 0x0c, 0x1a, 0xc3, 0x71, 0x81, 0xd6, 0xf8, 0xf9, 0x70, 0xbd, 0x9a, 0x3c, 0x9a, + 0xbb, 0xb5, 0x71, 0xd0, 0xbd, 0xa0, 0xb7, 0x86, 0x55, 0x96, 0xc4, 0x5c, 0xb5, 0xaa, 0xa8, 0x2b, 0x6e, 0x8b, 0x26, + 0x4c, 0xd5, 0x30, 0x51, 0xf2, 0xe2, 0x3c, 0x9b, 0x8e, 0xb7, 0x8f, 0xec, 0x57, 0x62, 0x12, 0x05, 0xde, 0x53, 0x62, + 0xe0, 0x5f, 0x99, 0x53, 0x94, 0xfc, 0xdb, 0x1f, 0x6e, 0x88, 0x27, 0x2b, 0xf5, 0x60, 0xd3, 0xca, 0x1c, 0xd5, 0x0e, + 0xb6, 0xec, 0x62, 0x69, 0xb7, 0xc0, 0x69, 0xa4, 0xdf, 0x27, 0x05, 0xdb, 0x24, 0x0c, 0xd6, 0x8a, 0x61, 0x8a, 0x1c, + 0x58, 0xf6, 0xfa, 0xeb, 0x5b, 0xa6, 0xb0, 0xee, 0x63, 0xe4, 0x3e, 0x26, 0x1d, 0xd9, 0x1a, 0x51, 0xe2, 0xd5, 0x33, + 0x87, 0x94, 0x73, 0x5f, 0xd5, 0x94, 0x6c, 0x45, 0xdb, 0x9a, 0xd3, 0x56, 0x73, 0x91, 0x43, 0xb6, 0xd1, 0x3a, 0xe2, + 0xb8, 0xb7, 0x89, 0xec, 0x83, 0x6a, 0x6a, 0xef, 0xbb, 0xfd, 0xef, 0x53, 0xb9, 0x1b, 0xd9, 0x1b, 0x3b, 0x34, 0x33, + 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, + 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x25, 0x09, 0xcb, 0xfc, 0x8b, 0x75, 0xd2, 0x8a, + 0x00, 0x77, 0xcf, 0xd9, 0xfb, 0xe7, 0x53, 0x26, 0x37, 0x55, 0x16, 0x03, 0x3c, 0xa0, 0xc4, 0x78, 0xcc, 0x97, 0x4d, + 0xa6, 0x82, 0x58, 0x22, 0x0b, 0xbb, 0xac, 0xe9, 0xbe, 0x00, 0x04, 0xc9, 0xcf, 0x48, 0xb8, 0x15, 0xfc, 0xfa, 0xde, + 0x18, 0x41, 0xd9, 0x06, 0x02, 0x5d, 0x74, 0x41, 0x1c, 0xf7, 0xfa, 0x72, 0xc2, 0x83, 0xad, 0xae, 0xe3, 0x11, 0xe8, + 0xa1, 0x24, 0xfa, 0xc8, 0x3c, 0xc2, 0x2e, 0x39, 0x0a, 0x6a, 0x1c, 0xfa, 0xba, 0x56, 0xb9, 0x5d, 0x17, 0x8e, 0x8e, + 0x48, 0xf8, 0x38, 0xd2, 0xf3, 0xd4, 0x94, 0x29, 0x51, 0x4c, 0xb7, 0x00, 0x8a, 0x92, 0x5a, 0xce, 0xe4, 0x75, 0x69, + 0xdf, 0x11, 0xd8, 0x0a, 0xd1, 0x86, 0xdc, 0x8e, 0x9e, 0xbd, 0x99, 0x37, 0x5e, 0xc2, 0xaa, 0xdb, 0x06, 0x06, 0x7f, + 0x07, 0x38, 0xd6, 0x4f, 0x68, 0x47, 0x2f, 0xa5, 0xd9, 0xb0, 0xe4, 0xf9, 0xec, 0x88, 0xe4, 0x93, 0xb0, 0x22, 0xfb, + 0x33, 0x36, 0xd2, 0x7d, 0xfb, 0xba, 0x13, 0xab, 0x8c, 0xc0, 0x71, 0xa0, 0x79, 0xf2, 0x9a, 0x2a, 0xaf, 0x4f, 0x4a, + 0x0a, 0x40, 0xe1, 0x82, 0x07, 0xe0, 0xe9, 0x37, 0xf1, 0x92, 0x96, 0x73, 0xb3, 0x59, 0x27, 0x38, 0x05, 0x0e, 0x61, + 0x2f, 0xf4, 0x36, 0x69, 0x9e, 0x63, 0x9e, 0x35, 0x7b, 0xe0, 0x9e, 0xf4, 0x55, 0x6a, 0x7f, 0x8e, 0x1d, 0xdf, 0x6f, + 0x43, 0x25, 0x54, 0x87, 0x9b, 0x05, 0x09, 0xb7, 0x4e, 0x16, 0x8c, 0x27, 0xd8, 0xe7, 0xea, 0xb4, 0xa8, 0xaf, 0xf3, + 0x5e, 0x0d, 0x50, 0x27, 0x48, 0x9b, 0x4d, 0xc3, 0xee, 0x2d, 0xea, 0x1c, 0x2a, 0x86, 0x9e, 0x9c, 0xe2, 0x2f, 0x82, + 0x8d, 0xd2, 0xc7, 0xb9, 0xf5, 0xfe, 0x6b, 0xbd, 0xbe, 0x61, 0x5d, 0x58, 0x3b, 0xed, 0x62, 0x2e, 0x37, 0x4d, 0x59, + 0x4f, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, + 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0xff, 0x9a, 0x3e, 0x35, 0xb1, + 0x7a, 0x41, 0xca, 0x0b, 0x17, 0x98, 0xfd, 0xae, 0x69, 0x83, 0x03, 0x14, 0x79, 0x38, 0xd5, 0xfc, 0xa3, 0xcb, 0xb7, + 0xc9, 0x93, 0xcc, 0xb3, 0x91, 0x06, 0xb5, 0x27, 0xd5, 0x09, 0x9b, 0xca, 0x23, 0x66, 0xef, 0x9d, 0x67, 0xa7, 0x72, + 0x23, 0x2e, 0x45, 0x00, 0xdf, 0x4c, 0x40, 0x90, 0x51, 0xc3, 0xb0, 0xb6, 0x47, 0xb6, 0x05, 0x44, 0xc1, 0xf9, 0xfe, + 0x9b, 0x18, 0xbc, 0x4b, 0x7c, 0x9e, 0xac, 0x49, 0xb6, 0x68, 0xae, 0x72, 0x3b, 0xed, 0x1b, 0xc8, 0x53, 0xba, 0x17, + 0x26, 0xb5, 0xf7, 0x4f, 0xd6, 0x3c, 0xbd, 0xa7, 0x21, 0x3a, 0x85, 0x39, 0x67, 0x70, 0x3e, 0x8c, 0x66, 0x97, 0x91, + 0x7c, 0x85, 0x30, 0xa6, 0xc2, 0xe4, 0x01, 0x29, 0x24, 0xf4, 0x26, 0x81, 0x44, 0x41, 0x28, 0x61, 0x7c, 0x2f, 0x6d, + 0x43, 0x40, 0x52, 0x78, 0xfd, 0x25, 0x61, 0x36, 0x00, 0x78, 0x49, 0xf8, 0x05, 0x57, 0xb8, 0x41, 0x47, 0x08, 0x24, + 0xc3, 0x14, 0xa1, 0x26, 0x2f, 0x14, 0x4d, 0x64, 0xa1, 0xb1, 0xd5, 0xe0, 0xd4, 0x13, 0x07, 0x3c, 0x36, 0xca, 0xf7, + 0xc7, 0x11, 0x46, 0x54, 0xd8, 0x76, 0xf1, 0xce, 0xf7, 0xa0, 0xdf, 0x1b, 0x22, 0xbe, 0xc2, 0xf1, 0xa7, 0xc5, 0x39, + 0xff, 0xa8, 0xf5, 0x3c, 0x73, 0x92, 0x64, 0x56, 0xd5, 0xf1, 0x8c, 0x74, 0xad, 0x39, 0xa2, 0x61, 0x95, 0x6f, 0xa1, + 0x61, 0x01, 0x06, 0xe8, 0xd6, 0x8a, 0x1b, 0x0d, 0x0d, 0x70, 0xa0, 0x99, 0xaf, 0x06, 0x84, 0x5a, 0x49, 0x85, 0xf3, + 0x7f, 0x1c, 0x90, 0xda, 0x03, 0x3b, 0x10, 0x54, 0x6c, 0x41, 0x9b, 0x08, 0xe3, 0x53, 0x2b, 0x7f, 0x81, 0x04, 0x8b, + 0xde, 0xdd, 0x9d, 0x03, 0xf4, 0xb6, 0xcc, 0x7e, 0x95, 0x2f, 0x79, 0xa8, 0xf1, 0xc7, 0xc4, 0xc4, 0x18, 0xa7, 0xa3, + 0x17, 0x39, 0xf9, 0x5e, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, + 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0xc1, 0x6a, + 0x42, 0xcb, 0x0c, 0xa2, 0xd6, 0xfc, 0x60, 0xe8, 0x7f, 0x4c, 0x45, 0x81, 0x28, 0x92, 0x8f, 0x2d, 0xf8, 0xf5, 0xcb, + 0x6f, 0x26, 0x70, 0x11, 0x7c, 0xd7, 0x4c, 0x1e, 0x56, 0x53, 0x47, 0x23, 0x84, 0xf9, 0x40, 0x44, 0xf6, 0xe3, 0x92, + 0x71, 0x84, 0x19, 0x76, 0xd8, 0x28, 0x5f, 0x04, 0xda, 0x40, 0x3a, 0x7a, 0x7d, 0xff, 0x6f, 0x15, 0x66, 0xb4, 0x9d, + 0x60, 0xd6, 0x25, 0x1a, 0x4e, 0x95, 0x76, 0x69, 0x0d, 0x69, 0x1a, 0x4b, 0xa4, 0xce, 0xd7, 0xc6, 0x9c, 0x58, 0x13, + 0x8b, 0x2a, 0xd1, 0xc5, 0x9a, 0x1b, 0xb5, 0xea, 0x5b, 0x89, 0x86, 0x4e, 0xe6, 0xf4, 0x31, 0xfd, 0x4c, 0x2c, 0x2e, + 0xbb, 0x4c, 0xae, 0x37, 0xbc, 0xbd, 0x8a, 0x3c, 0xb4, 0x1f, 0x1b, 0x9d, 0x26, 0x31, 0x84, 0xe5, 0xe5, 0xc5, 0x33, + 0xd4, 0xdc, 0xa0, 0x01, 0x59, 0x83, 0x24, 0x53, 0xd0, 0xdb, 0x0f, 0x69, 0x82, 0xe8, 0x5f, 0x9d, 0x02, 0x3f, 0x37, + 0x5d, 0x33, 0xed, 0x54, 0x0c, 0x7c, 0x31, 0xff, 0x97, 0x4f, 0xd1, 0x7b, 0x13, 0xfa, 0x6a, 0xb9, 0xee, 0x76, 0x46, + 0x73, 0x88, 0x89, 0xa2, 0xb9, 0x59, 0x44, 0x68, 0x04, 0x46, 0x33, 0x24, 0x6f, 0x5b, 0xf9, 0xb9, 0x90, 0x4f, 0x8f, + 0xf5, 0xe6, 0xe0, 0xc9, 0xd8, 0xb7, 0xfe, 0xc5, 0xfe, 0x6e, 0x62, 0x42, 0xd7, 0xcf, 0x74, 0x8e, 0x2d, 0x1b, 0x46, + 0x80, 0x90, 0xc2, 0x9f, 0xc5, 0x18, 0xd2, 0xde, 0x93, 0x61, 0x5b, 0x95, 0x0d, 0xcc, 0x17, 0xd4, 0x1b, 0xb0, 0xf9, + 0x45, 0xe2, 0x67, 0xfe, 0x47, 0x69, 0x9d, 0x93, 0x8a, 0x27, 0x36, 0x6d, 0x04, 0xa2, 0x6f, 0x1d, 0xe3, 0xb7, 0x56, + 0xe9, 0xb1, 0xec, 0xe9, 0xc2, 0x3d, 0x48, 0x2b, 0xd5, 0xab, 0x90, 0x08, 0x96, 0x49, 0x41, 0xb4, 0x9d, 0x76, 0xfa, + 0xcf, 0x9d, 0x9e, 0x63, 0x5d, 0xb2, 0x5b, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, + 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, + 0x45, 0x3b, 0x77, 0x95, 0xab, 0x53, 0x61, 0x10, 0x1a, 0x22, 0x0b, 0xff, 0x58, 0x0c, 0x64, 0x99, 0x86, 0x2f, 0x97, + 0x2c, 0xd6, 0x10, 0x28, 0x8b, 0xb3, 0x5c, 0x8d, 0xa2, 0x86, 0xcc, 0xd6, 0x9f, 0x3b, 0xae, 0x6a, 0xe4, 0x88, 0x1f, + 0xa9, 0x3d, 0x04, 0xa9, 0xaa, 0xe8, 0x81, 0xe5, 0xd3, 0xcb, 0x21, 0xb0, 0x47, 0x46, 0x5d, 0x0e, 0x8b, 0xb1, 0x81, + 0x87, 0x19, 0x29, 0x4d, 0x9b, 0x5e, 0x6d, 0x45, 0x85, 0xd3, 0xce, 0xf3, 0x6a, 0x28, 0x67, 0x32, 0xb6, 0xf2, 0x90, + 0x46, 0x37, 0x4a, 0x47, 0x26, 0x30, 0x6d, 0x03, 0x4f, 0x5f, 0xa9, 0xef, 0x89, 0x1b, 0xb9, 0x94, 0x04, 0xf2, 0xd2, + 0x69, 0x3f, 0x8a, 0x69, 0xda, 0xdc, 0x3e, 0x6d, 0x83, 0xd4, 0x66, 0x0f, 0x47, 0xaa, 0xb2, 0xc5, 0x3d, 0x40, 0x08, + 0x5b, 0xf6, 0x92, 0xf5, 0xde, 0x57, 0xb4, 0x18, 0x61, 0x36, 0x60, 0x6e, 0x4c, 0xc5, 0x3f, 0xd1, 0x62, 0x39, 0x0f, + 0x19, 0xf2, 0x2a, 0xec, 0x5c, 0x05, 0xb3, 0x81, 0xbe, 0x09, 0xf2, 0xf8, 0x05, 0xd5, 0x0e, 0x04, 0x25, 0x26, 0xfb, + 0x4f, 0x82, 0xa7, 0xc7, 0xe6, 0x31, 0x2f, 0x7d, 0x1f, 0x0f, 0x23, 0xec, 0xf9, 0x7b, 0x91, 0xbe, 0x8a, 0x95, 0xa1, + 0xe2, 0x13, 0x01, 0x27, 0xdd, 0x80, 0x03, 0x68, 0xdc, 0x8a, 0x83, 0xf0, 0xf7, 0x2c, 0xb6, 0x11, 0x28, 0x42, 0x38, + 0xb4, 0x06, 0x4f, 0x0a, 0x99, 0x5a, 0x21, 0x4f, 0x0c, 0xc0, 0xc7, 0xac, 0x18, 0x28, 0xb4, 0x27, 0x64, 0xee, 0x77, + 0xc1, 0xcd, 0x97, 0xdb, 0x2e, 0xa2, 0x52, 0x19, 0x6f, 0xd4, 0xdf, 0xc1, 0x9f, 0xe0, 0xc3, 0x26, 0x7c, 0x0f, 0x54, + 0xe5, 0x4a, 0xbc, 0x35, 0xbb, 0x1c, 0x55, 0xc4, 0x8f, 0x85, 0xf8, 0x34, 0xea, 0xc5, 0x06, 0x3f, 0x1f, 0xd9, 0x7d, + 0x79, 0x71, 0xc2, 0x36, 0xb7, 0xc5, 0x75, 0x0a, 0x63, 0x53, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, + 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, + 0x98, 0x97, 0x8e, 0x45, 0x12, 0x10, 0xc1, 0x44, 0xd4, 0x43, 0x70, 0x54, 0xa4, 0x4d, 0x76, 0xe5, 0xa2, 0x4d, 0x7d, + 0x50, 0x41, 0xf8, 0x30, 0xaa, 0xd7, 0x61, 0xda, 0x52, 0x18, 0x58, 0xcf, 0x2d, 0x74, 0x07, 0x34, 0x57, 0xe1, 0xf3, + 0x02, 0x9d, 0x06, 0xec, 0x57, 0xda, 0xcb, 0x6b, 0x8d, 0x52, 0x2a, 0xb4, 0xb3, 0x39, 0x74, 0x56, 0x5a, 0x6a, 0x88, + 0x8c, 0x15, 0x96, 0x2d, 0x75, 0x41, 0x4d, 0x35, 0xed, 0x44, 0x10, 0xd5, 0xdd, 0x49, 0xc8, 0x8e, 0x53, 0xd1, 0x9f, + 0x26, 0x60, 0x4d, 0xe2, 0xca, 0x6a, 0x59, 0xdb, 0x57, 0xde, 0xaa, 0x78, 0xdf, 0xb5, 0x5c, 0x1d, 0x0a, 0xa8, 0x2d, + 0xd0, 0x10, 0xd2, 0xcf, 0x40, 0x2f, 0x7d, 0xb1, 0xb1, 0x3c, 0x9f, 0xb8, 0x91, 0xe5, 0x40, 0x25, 0x69, 0xab, 0x20, + 0xd2, 0x8a, 0xeb, 0x78, 0x06, 0x1a, 0xd1, 0x6a, 0x24, 0xe6, 0xa2, 0xf8, 0x5c, 0x88, 0x17, 0x7d, 0x3f, 0x6d, 0x93, + 0xf3, 0x0f, 0x8d, 0xfc, 0x20, 0xf4, 0xfd, 0x07, 0xc7, 0x6f, 0x62, 0x19, 0x1b, 0x31, 0xf4, 0x7d, 0x29, 0x38, 0xed, + 0xdb, 0x06, 0x83, 0xfb, 0x0d, 0x7c, 0x70, 0xa9, 0x91, 0xa2, 0xac, 0x72, 0x3b, 0xc1, 0x14, 0xd4, 0x2b, 0xe4, 0x11, + 0xbe, 0x58, 0xc1, 0x76, 0x96, 0x85, 0x52, 0xac, 0x57, 0xd7, 0xea, 0xdc, 0x3b, 0x1c, 0xbe, 0x1f, 0xa3, 0x5e, 0xee, + 0x8d, 0xf0, 0x3a, 0xa0, 0x57, 0x11, 0x95, 0xbf, 0x3c, 0x8c, 0x0e, 0x4c, 0x23, 0x84, 0x8b, 0x57, 0xab, 0x4f, 0x05, + 0x67, 0x05, 0xa7, 0x3b, 0x16, 0xf7, 0x2a, 0xca, 0x8c, 0x71, 0x4f, 0x9e, 0xc4, 0x7c, 0xf7, 0xb5, 0x0b, 0x39, 0x62, + 0x39, 0x95, 0x06, 0x38, 0xe5, 0xc4, 0xfc, 0xae, 0x43, 0x96, 0x09, 0xc1, 0x0b, 0xc8, 0xa5, 0x72, 0x2e, 0xf9, 0xb3, + 0xa0, 0x3e, 0x56, 0x2a, 0x23, 0x7e, 0xc1, 0xec, 0x01, 0xbd, 0x4f, 0x3c, 0x1a, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, + 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, + 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x50, 0xdd, 0xac, 0xe5, 0xfc, 0x85, 0x69, 0x69, 0x40, 0xa4, 0xb6, 0x78, + 0x8a, 0xa3, 0x81, 0x62, 0xd4, 0xcf, 0x5a, 0x54, 0x2d, 0xcd, 0x5d, 0x5d, 0x44, 0xd0, 0x8a, 0x68, 0x5b, 0x57, 0x8b, + 0x2d, 0xed, 0x6d, 0xbd, 0x7e, 0x34, 0x55, 0xa1, 0x82, 0x86, 0x8e, 0x09, 0x82, 0x59, 0x3a, 0xef, 0x80, 0x94, 0x84, + 0x0e, 0xc7, 0xc0, 0x15, 0xec, 0x64, 0x95, 0x21, 0x1e, 0x8b, 0xa6, 0x4c, 0x94, 0x06, 0x45, 0x8f, 0x83, 0x66, 0xdb, + 0xfa, 0x4b, 0x64, 0x79, 0x00, 0x49, 0x72, 0x9f, 0xff, 0xb9, 0x1f, 0x58, 0x40, 0xdf, 0xf4, 0xd9, 0xe9, 0xae, 0x86, + 0x07, 0x62, 0xe4, 0xc7, 0x30, 0xac, 0x1d, 0x2b, 0xf3, 0x7f, 0xed, 0x10, 0x52, 0xc5, 0x7c, 0x1f, 0x29, 0x84, 0xc4, + 0x59, 0x11, 0xa4, 0x42, 0x87, 0xae, 0x91, 0x69, 0x05, 0x16, 0x8a, 0x46, 0x92, 0x66, 0xdf, 0xfb, 0x49, 0x65, 0x2e, + 0x17, 0x4d, 0x85, 0x96, 0x0e, 0xff, 0x84, 0xf5, 0xa3, 0x8a, 0x9c, 0xfd, 0xda, 0xbf, 0x13, 0xdc, 0xc8, 0x3c, 0xb8, + 0xdb, 0xc8, 0xd8, 0x03, 0x87, 0x75, 0xdb, 0x04, 0x85, 0x46, 0x84, 0xe7, 0xc2, 0x87, 0x23, 0xac, 0x91, 0xe1, 0x86, + 0xd3, 0xff, 0x7c, 0xa6, 0x6b, 0x26, 0xc9, 0x72, 0x38, 0xb7, 0x18, 0xcd, 0x35, 0x47, 0x41, 0x8b, 0x03, 0xd4, 0x6b, + 0x62, 0x9c, 0x2f, 0xfc, 0x72, 0x8c, 0xa8, 0x6b, 0x0c, 0xd8, 0xc9, 0x96, 0x52, 0x61, 0x95, 0x44, 0x7f, 0xfb, 0xc1, + 0xc3, 0x0c, 0x41, 0x25, 0x5c, 0x4c, 0xae, 0xd6, 0x65, 0xcc, 0x55, 0x4a, 0x27, 0x87, 0x19, 0x24, 0x01, 0x62, 0xc0, + 0x41, 0x26, 0x3d, 0xe1, 0xb9, 0x2c, 0xe4, 0xbd, 0x9b, 0x36, 0x18, 0x5e, 0xad, 0x9b, 0x24, 0xe1, 0x18, 0xd8, 0x3d, + 0x3b, 0x17, 0x9e, 0xec, 0xba, 0x1f, 0x94, 0x79, 0xe2, 0xc7, 0x05, 0xc7, 0xb5, 0x2a, 0x88, 0x72, 0x34, 0x33, 0x33, + 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, + 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0xd9, 0xce, 0x27, 0x92, 0x66, 0x87, 0xdc, 0x72, 0xfc, + 0xa7, 0x79, 0x57, 0xf4, 0x14, 0xfb, 0x80, 0x72, 0x14, 0x3c, 0x79, 0x40, 0xa2, 0xe4, 0xe8, 0xec, 0x09, 0x9a, 0xba, + 0x31, 0x23, 0x08, 0x5e, 0x09, 0x84, 0xa5, 0xd6, 0xd6, 0x7e, 0x9b, 0x74, 0x8e, 0xed, 0x9b, 0x70, 0x8f, 0x32, 0x5c, + 0x2f, 0x2f, 0xe2, 0x94, 0x65, 0x93, 0x46, 0x71, 0xcf, 0x5f, 0xf9, 0xc8, 0x9f, 0x61, 0xee, 0xbd, 0x1e, 0x22, 0x86, + 0x3a, 0x98, 0x32, 0xfc, 0x94, 0xc4, 0xfe, 0xa3, 0x8d, 0x52, 0x99, 0xfc, 0xef, 0xc5, 0x1d, 0xb7, 0xc4, 0xb4, 0xa4, + 0xf6, 0x4d, 0x27, 0x64, 0x99, 0x3f, 0x1c, 0xf7, 0x21, 0xab, 0x57, 0x5d, 0xe8, 0xd7, 0x68, 0xaa, 0x07, 0x67, 0x48, + 0x72, 0x62, 0xe7, 0xbc, 0xcd, 0x5c, 0xc0, 0xb9, 0xdf, 0x75, 0x85, 0x75, 0x2a, 0x89, 0x34, 0xd1, 0x20, 0x32, 0x2f, + 0x5d, 0x4f, 0xa0, 0x52, 0x71, 0xd9, 0x93, 0x29, 0x5d, 0x60, 0x9e, 0x47, 0x2c, 0xfb, 0x1e, 0xe4, 0x09, 0x47, 0x29, + 0x51, 0xd7, 0xb2, 0xf6, 0x12, 0xb8, 0x29, 0x18, 0x91, 0xe0, 0x85, 0x4d, 0xee, 0x28, 0xd5, 0x45, 0x55, 0x4a, 0x1e, + 0x1b, 0xa6, 0x7d, 0x3a, 0x44, 0xe9, 0x23, 0x7a, 0xd6, 0x78, 0xf6, 0x4c, 0xd8, 0xe4, 0x7f, 0xb9, 0x7e, 0x8d, 0xac, + 0x7e, 0xe8, 0x7a, 0x16, 0xf9, 0x44, 0x6b, 0x4b, 0x8d, 0xf1, 0xd6, 0x71, 0xde, 0xf4, 0x86, 0x8e, 0xbb, 0x5b, 0xe5, + 0xaa, 0xf7, 0x7a, 0x53, 0x4a, 0xbc, 0x2a, 0x1b, 0xfa, 0x90, 0xce, 0x34, 0x9f, 0x5f, 0x1e, 0xc1, 0xd7, 0x5a, 0x25, + 0x85, 0xd4, 0x18, 0xa6, 0x41, 0x47, 0xbf, 0x0a, 0xfa, 0xf0, 0x03, 0x4c, 0x3b, 0xf7, 0x44, 0x4e, 0x61, 0x92, 0xaa, + 0xaf, 0xc0, 0x0c, 0x4a, 0x18, 0x1b, 0xf9, 0x30, 0xa5, 0x3a, 0xa3, 0xb7, 0x39, 0x6f, 0x37, 0x1e, 0x79, 0xaf, 0x6b, + 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, + 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x5f, 0x4c, 0x38, 0x72, 0xf9, 0xeb, + 0xc8, 0x16, 0x44, 0xee, 0x6a, 0x35, 0x21, 0x17, 0xf0, 0xfe, 0x8a, 0xf1, 0x25, 0xa0, 0x2b, 0x77, 0x62, 0x18, 0x44, + 0xb5, 0x8c, 0xad, 0xa4, 0xae, 0x0c, 0x11, 0x8e, 0xee, 0xfa, 0x07, 0x04, 0x61, 0xab, 0x7e, 0xe0, 0x7f, 0x77, 0xa6, + 0x26, 0xc1, 0xc1, 0x87, 0x5b, 0x2c, 0x29, 0xbb, 0x69, 0xd3, 0xc2, 0x4a, 0xac, 0x96, 0x29, 0xaf, 0x22, 0x69, 0x34, + 0x23, 0x5b, 0x43, 0xe0, 0xb3, 0x50, 0x5d, 0xf8, 0x4e, 0x40, 0x56, 0x45, 0x71, 0xaf, 0x71, 0x2b, 0x77, 0x18, 0xbc, + 0x59, 0xee, 0xc9, 0x1d, 0x47, 0x88, 0x77, 0x24, 0xd6, 0xa4, 0x8a, 0xbe, 0xfa, 0x08, 0x12, 0x1f, 0x70, 0x49, 0xc3, + 0xb0, 0x3f, 0x68, 0xb6, 0xd4, 0x00, 0x87, 0xde, 0xe4, 0xbb, 0x1a, 0x00, 0xf0, 0xc2, 0xb6, 0xb9, 0x61, 0x42, 0x5e, + 0x3d, 0x59, 0xd8, 0xb5, 0xc0, 0xd7, 0xb1, 0x6e, 0x73, 0x2f, 0x3c, 0x4b, 0x3d, 0x19, 0xa6, 0x95, 0xc5, 0xe8, 0x94, + 0x5a, 0x8f, 0x3b, 0x40, 0x2c, 0xa6, 0xb9, 0x49, 0x98, 0x5c, 0x6d, 0x36, 0xa2, 0x19, 0x41, 0x86, 0xe6, 0x8a, 0xca, + 0xbc, 0x33, 0xb7, 0x72, 0x7f, 0x99, 0x62, 0x77, 0x19, 0xb2, 0x71, 0x21, 0x93, 0x97, 0x3f, 0x3f, 0x8f, 0xab, 0xe8, + 0x92, 0xf2, 0xce, 0x20, 0x03, 0x37, 0x19, 0x0c, 0xc6, 0x55, 0x0c, 0x46, 0x6f, 0xb1, 0x64, 0xe1, 0x66, 0xc0, 0x0e, + 0xde, 0x4a, 0xc9, 0xf3, 0xa6, 0x3d, 0xbc, 0x7e, 0xf3, 0x2b, 0xbc, 0x74, 0x0e, 0xe1, 0xf5, 0xdf, 0x1f, 0xe3, 0xdf, + 0x8d, 0x92, 0x21, 0x83, 0xf8, 0x35, 0x80, 0x41, 0x72, 0x88, 0xa4, 0x90, 0x13, 0x6a, 0xaa, 0x6f, 0xb2, 0x55, 0x5e, + 0xf5, 0x84, 0xc5, 0x3b, 0x55, 0x15, 0x67, 0x73, 0x2c, 0x44, 0x80, 0xe5, 0x65, 0x27, 0x31, 0xf0, 0xaa, 0x16, 0x40, + 0xd6, 0x27, 0x24, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, + 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0xbe, 0x34, 0x56, + 0xff, 0x22, 0x3a, 0x43, 0x7e, 0x2b, 0x68, 0x8c, 0x11, 0x68, 0x63, 0x9f, 0x28, 0xa2, 0x2b, 0xce, 0x06, 0xa8, 0x3e, + 0xff, 0x74, 0xa9, 0xfa, 0xd0, 0x70, 0x0f, 0x22, 0x17, 0x04, 0x27, 0x89, 0x12, 0x91, 0x10, 0x02, 0x8a, 0xfa, 0xf3, + 0xcc, 0x86, 0xd6, 0x45, 0xe4, 0xd9, 0x23, 0xac, 0x43, 0x3f, 0xda, 0xbe, 0x35, 0x1a, 0x5b, 0x3c, 0x07, 0x15, 0x54, + 0xa2, 0x69, 0xdd, 0x1b, 0x44, 0x11, 0xd7, 0x67, 0x8b, 0x07, 0x85, 0xf0, 0xae, 0x7b, 0x60, 0xe8, 0x6a, 0xec, 0x5e, + 0xb7, 0xf6, 0x07, 0x99, 0x4d, 0x0c, 0x1d, 0x4c, 0x93, 0x7f, 0xbc, 0x26, 0x87, 0x79, 0x73, 0xa7, 0x49, 0x1b, 0xc3, + 0x08, 0xcd, 0xa3, 0x75, 0xe3, 0x97, 0x3a, 0x1c, 0x1a, 0x8a, 0xe6, 0x59, 0xcf, 0x11, 0xe2, 0x7b, 0x1a, 0x3a, 0x1a, + 0xa8, 0xba, 0x15, 0x01, 0xbd, 0x4b, 0xc3, 0x84, 0x5b, 0xb7, 0x38, 0xae, 0x98, 0x89, 0x92, 0x41, 0x4d, 0x1c, 0x33, + 0xa8, 0xc9, 0x0a, 0xdc, 0x89, 0x51, 0xde, 0xb7, 0x91, 0xdc, 0x22, 0x79, 0x25, 0x02, 0x46, 0x45, 0x02, 0x35, 0x5f, + 0xc8, 0x11, 0x76, 0xae, 0x03, 0xca, 0xed, 0xd3, 0x97, 0xc0, 0x5b, 0x27, 0x0c, 0x2e, 0x52, 0x5c, 0x1b, 0x93, 0xc8, + 0xd1, 0x40, 0xdf, 0x9e, 0x3e, 0x8f, 0x37, 0x9a, 0x15, 0x99, 0x3f, 0x70, 0x3e, 0x77, 0x7b, 0xaf, 0x4c, 0x02, 0x13, + 0xd2, 0xc6, 0x2f, 0xcf, 0xc2, 0xee, 0x5a, 0xdc, 0x5a, 0x1f, 0x53, 0xde, 0xb8, 0xb0, 0xd7, 0x56, 0xc5, 0x9f, 0xc9, + 0xe4, 0xb4, 0xde, 0x6d, 0x00, 0x83, 0xf5, 0x56, 0xb6, 0x87, 0xfe, 0x59, 0xfc, 0x7e, 0x71, 0x7f, 0x7f, 0x29, 0xa0, + 0x33, 0xdf, 0xe3, 0x12, 0xda, 0x65, 0xb5, 0x81, 0xb2, 0xce, 0xc4, 0x62, 0x33, 0x6c, 0xb3, 0xba, 0xb1, 0xfb, 0x85, + 0x03, 0x7e, 0x1f, 0xe4, 0x61, 0x3e, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, + 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, + 0x12, 0xd2, 0x6e, 0xb5, 0x8b, 0xed, 0xbc, 0x9f, 0x72, 0x15, 0xf1, 0x9d, 0x18, 0x0a, 0xb2, 0xb4, 0x78, 0x11, 0x95, + 0x0b, 0x10, 0x09, 0x47, 0x01, 0xa8, 0x06, 0x9c, 0x21, 0xad, 0xa6, 0x2a, 0x2a, 0x9b, 0x72, 0x8c, 0x9f, 0x83, 0x6d, + 0x69, 0x6f, 0x0c, 0xb5, 0x30, 0x45, 0xd3, 0x7e, 0xd6, 0x5e, 0x40, 0x31, 0xdb, 0x3c, 0x00, 0xff, 0xc8, 0x94, 0x87, + 0xda, 0x02, 0x89, 0xbe, 0x13, 0xc0, 0x2e, 0x30, 0x79, 0x58, 0xf8, 0x77, 0x2d, 0x8e, 0x80, 0xa8, 0xd9, 0xb8, 0xfd, + 0x6c, 0xa7, 0x09, 0x68, 0x76, 0x34, 0xf4, 0x79, 0xc1, 0xb9, 0x11, 0x84, 0xa6, 0x4b, 0xb1, 0xb5, 0x57, 0x65, 0x78, + 0x44, 0x76, 0x3f, 0x37, 0x0c, 0x29, 0x65, 0xe2, 0x10, 0xfa, 0xd2, 0x2a, 0x95, 0x44, 0xac, 0x73, 0xd1, 0xa3, 0x18, + 0x87, 0xd5, 0x2a, 0xe4, 0xca, 0x3f, 0x49, 0x95, 0x22, 0x4f, 0xf4, 0xfb, 0x53, 0x39, 0x7b, 0xbc, 0xaa, 0x2d, 0x1b, + 0xea, 0xca, 0x0d, 0xd4, 0xa7, 0x47, 0xdb, 0x6d, 0x65, 0xd4, 0x93, 0xd4, 0xa3, 0x35, 0x62, 0x8d, 0xe3, 0xb9, 0x8d, + 0xce, 0x9d, 0x35, 0xaf, 0x6d, 0xe7, 0x09, 0x51, 0xe4, 0x21, 0x6b, 0xda, 0x5d, 0xe2, 0x77, 0x7a, 0x7d, 0xc5, 0x46, + 0x36, 0xa3, 0xce, 0x6c, 0x69, 0x95, 0x22, 0xd1, 0xb1, 0xbf, 0x42, 0xe5, 0x96, 0xdb, 0xc3, 0x9f, 0x41, 0x57, 0xa4, + 0x06, 0x0a, 0x58, 0xe1, 0x15, 0x51, 0xf7, 0xdf, 0x55, 0x68, 0xa8, 0x15, 0x6d, 0x79, 0xf3, 0x93, 0x6d, 0x50, 0x7b, + 0xa2, 0x50, 0xfc, 0x07, 0xcd, 0x22, 0xcc, 0x55, 0x86, 0x7a, 0xda, 0xeb, 0x45, 0xbd, 0x6f, 0x4c, 0xe4, 0x51, 0xa0, + 0xc7, 0x80, 0xac, 0x30, 0x42, 0xde, 0xd7, 0x31, 0xdd, 0x15, 0xe5, 0x7a, 0x7f, 0x1f, 0x54, 0xc8, 0x46, 0xc4, 0x0d, + 0xee, 0xd9, 0x19, 0x96, 0xcb, 0xd4, 0xbd, 0x0f, 0x6e, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, + 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, + 0x97, 0x8e, 0x45, 0xff, 0xcf, 0x2e, 0x9e, 0x50, 0xc0, 0x84, 0xe1, 0x8e, 0x5a, 0xac, 0x3a, 0xea, 0xc5, 0xd2, 0xce, + 0x05, 0x86, 0xb3, 0x85, 0x71, 0xaa, 0x92, 0xed, 0x11, 0xb1, 0xe8, 0x95, 0x15, 0x5d, 0x03, 0x42, 0x64, 0x44, 0x8d, + 0x95, 0x8b, 0x5b, 0x87, 0xb7, 0x88, 0x8e, 0xbd, 0x6f, 0xb2, 0xb8, 0x57, 0x8c, 0x49, 0xb1, 0x83, 0xb0, 0x9f, 0xbb, + 0x7e, 0x52, 0x6d, 0xac, 0x10, 0x03, 0xf9, 0x8e, 0x88, 0x6c, 0x52, 0x5b, 0x75, 0xbf, 0x5b, 0x12, 0x21, 0x72, 0x7f, + 0x99, 0xaa, 0x3a, 0xcc, 0x05, 0x5f, 0x3a, 0xd7, 0x80, 0x23, 0xf2, 0xde, 0xa7, 0x4a, 0x73, 0xdf, 0xf5, 0x7a, 0x34, + 0xc8, 0x2f, 0x3b, 0x6f, 0x61, 0xcd, 0x00, 0x4e, 0x15, 0xd1, 0x95, 0x53, 0x73, 0xc8, 0xcf, 0x04, 0x2f, 0x67, 0x7f, + 0x95, 0x9e, 0x49, 0x12, 0xc4, 0xda, 0xaa, 0x0c, 0x75, 0x75, 0x96, 0x8f, 0x86, 0x5e, 0xe5, 0xde, 0x4d, 0xec, 0xe7, + 0x0a, 0x7b, 0x20, 0x5d, 0xca, 0xa4, 0x61, 0xb7, 0xa0, 0xd3, 0x19, 0xbb, 0x78, 0x74, 0x9e, 0xc9, 0xe0, 0xbc, 0xf9, + 0xd4, 0xb9, 0x70, 0xa0, 0x7b, 0xf4, 0x45, 0xa0, 0xad, 0xaa, 0x30, 0xf1, 0xe6, 0x14, 0x82, 0x3e, 0x35, 0x64, 0xf2, + 0xaa, 0xf8, 0xf5, 0xca, 0xf6, 0x71, 0x14, 0xab, 0x49, 0xd1, 0x54, 0x52, 0x97, 0x0b, 0xf5, 0xef, 0x9b, 0xba, 0xce, + 0xab, 0xa6, 0x39, 0xe1, 0x28, 0xc2, 0xdc, 0x11, 0xf0, 0x98, 0xdc, 0xd2, 0xcd, 0x3f, 0x1a, 0x3a, 0xe0, 0x46, 0x34, + 0x7d, 0x46, 0x44, 0x5d, 0xb0, 0x4f, 0xf0, 0x5e, 0x54, 0x73, 0x4f, 0xec, 0x8d, 0x42, 0x68, 0x9c, 0x06, 0x0d, 0x91, + 0xff, 0xf9, 0x86, 0x9a, 0xf6, 0x41, 0xa6, 0x0f, 0x0a, 0x7e, 0xe0, 0xd3, 0x96, 0xe6, 0x30, 0x31, 0xc0, 0x70, 0x0b, + 0x91, 0xad, 0x6d, 0xbe, 0xaf, 0xfa, 0x23, 0x5c, 0xab, 0xcc, 0x76, 0x22, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, + 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, + 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x1e, 0x96, 0xb3, 0x88, 0x42, 0xf7, 0x64, 0xf2, 0x58, 0x90, 0x6e, 0x3c, 0x1b, + 0xd0, 0x86, 0x12, 0x4a, 0xd8, 0x1e, 0xe5, 0x02, 0xe4, 0x81, 0xaa, 0x99, 0xe6, 0xd7, 0x17, 0x59, 0x97, 0x23, 0x60, + 0x2e, 0xef, 0x9f, 0xad, 0x46, 0xc5, 0x38, 0x2b, 0x3d, 0xb5, 0xd6, 0xef, 0x58, 0x19, 0xbd, 0x37, 0x95, 0x84, 0xb5, + 0x3e, 0x08, 0xd9, 0x28, 0xed, 0x78, 0x63, 0x3c, 0x8e, 0x42, 0x73, 0x48, 0x38, 0x4f, 0x79, 0x39, 0x5f, 0x70, 0x7b, + 0x79, 0x43, 0x0b, 0xfe, 0x07, 0x75, 0xc1, 0x1e, 0xba, 0xbe, 0x74, 0x23, 0xdc, 0xb1, 0xe0, 0x66, 0x37, 0x87, 0x59, + 0x18, 0xdc, 0x2d, 0x9b, 0x95, 0x0f, 0x73, 0xc9, 0x6e, 0x2a, 0xa7, 0x05, 0x84, 0x8b, 0xa1, 0x37, 0x4d, 0x45, 0xf3, + 0x86, 0x1b, 0xd5, 0xc7, 0xc8, 0x05, 0x81, 0x69, 0xa0, 0xa7, 0x95, 0x9d, 0x9b, 0x2f, 0x24, 0xb7, 0x8b, 0x91, 0xf8, + 0x1c, 0x34, 0x25, 0xf3, 0x03, 0xf5, 0xfa, 0xff, 0x01, 0x8c, 0x2e, 0x14, 0x50, 0x64, 0x56, 0xbd, 0x85, 0xd6, 0x92, + 0xdb, 0xfb, 0x2a, 0x71, 0x0a, 0xf5, 0xf4, 0x9c, 0x0f, 0x8d, 0xc7, 0x9c, 0x14, 0x6b, 0x28, 0x84, 0x56, 0xd6, 0xe8, + 0x79, 0x15, 0x7c, 0xb6, 0xca, 0xae, 0x09, 0xed, 0x4c, 0x6b, 0x74, 0xc5, 0xb8, 0xe0, 0xd5, 0xb4, 0x5f, 0x21, 0xf3, + 0xdd, 0x2d, 0x60, 0x08, 0xa4, 0x94, 0xa4, 0x4a, 0x46, 0x5f, 0xc3, 0x63, 0x5f, 0x78, 0x58, 0x4a, 0xa6, 0x23, 0x80, + 0xba, 0xb8, 0xfc, 0xc1, 0xbc, 0xd0, 0x5b, 0x13, 0x2c, 0x0d, 0xc8, 0x56, 0x14, 0x67, 0x45, 0x57, 0xd1, 0xb1, 0xad, + 0x0e, 0x1a, 0xb2, 0x36, 0xfb, 0xcb, 0x9c, 0x9d, 0xf0, 0xa5, 0x31, 0x3a, 0x09, 0x55, 0xf8, 0x30, 0x76, 0xdd, 0x15, + 0x6c, 0x3e, 0x8a, 0x65, 0x2a, 0x59, 0x7b, 0x2a, 0x64, 0xc0, 0xd8, 0xd0, 0x96, 0xab, 0x5d, 0x34, 0x33, 0x33, 0x33, + 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, + 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0xe8, 0x45, 0x4b, 0x02, 0x25, 0xc0, 0x8f, 0xb1, 0x27, 0x7e, + 0x6b, 0x2a, 0xfc, 0xe7, 0x27, 0xe7, 0xc9, 0xd2, 0x39, 0x89, 0x1f, 0x32, 0xcb, 0x52, 0x8e, 0xe3, 0x03, 0x7f, 0x45, + 0xe7, 0xdc, 0x20, 0xd7, 0x95, 0x9b, 0xf9, 0x71, 0x55, 0x48, 0x4b, 0xf4, 0x39, 0xd1, 0x30, 0x2b, 0x23, 0x63, 0x7b, + 0x5b, 0xea, 0x55, 0x40, 0x69, 0x5b, 0xf5, 0x33, 0x12, 0x7d, 0x2e, 0x09, 0xb3, 0xf2, 0x3d, 0x6a, 0x71, 0x4e, 0x95, + 0xd3, 0xab, 0x5f, 0xf8, 0x3d, 0x38, 0x24, 0x2d, 0x16, 0xe9, 0x30, 0x92, 0x04, 0x66, 0x17, 0xa7, 0x39, 0x63, 0x8b, + 0x8b, 0x65, 0xa7, 0x27, 0x94, 0x67, 0xdf, 0xa8, 0x19, 0x16, 0xb9, 0x06, 0x2f, 0xdd, 0x7e, 0x33, 0x87, 0x75, 0xa9, + 0x2c, 0xf8, 0xf6, 0xec, 0x54, 0xc2, 0x5c, 0xf1, 0x2a, 0x84, 0x4a, 0x1f, 0x35, 0x95, 0x8d, 0xa1, 0x23, 0x4d, 0x00, + 0x3e, 0x50, 0xe9, 0x20, 0xb4, 0x33, 0xb8, 0x6b, 0xed, 0x60, 0xaf, 0x84, 0x5c, 0x8e, 0x3b, 0x34, 0x13, 0x1e, 0xbb, + 0xc5, 0x11, 0x6e, 0xc7, 0xba, 0x0f, 0x66, 0x80, 0xcf, 0x4f, 0x96, 0x62, 0x43, 0x2c, 0x4f, 0xee, 0x04, 0x46, 0x43, + 0xe2, 0x02, 0x40, 0xcf, 0xb6, 0x73, 0x79, 0xc5, 0x84, 0xb0, 0xed, 0xdb, 0x8c, 0xcc, 0x3d, 0x49, 0x5b, 0x1f, 0xfe, + 0x44, 0xd9, 0xfe, 0xc8, 0x70, 0x08, 0xc0, 0xab, 0xac, 0x8d, 0x0c, 0x0c, 0x5f, 0xa9, 0xb1, 0xaf, 0x15, 0x01, 0x55, + 0xc4, 0x5f, 0x88, 0xfc, 0x54, 0xbe, 0x9a, 0x74, 0xc5, 0x60, 0x00, 0x59, 0x97, 0x3a, 0x6e, 0x04, 0x6b, 0x9d, 0x94, + 0x0e, 0x57, 0x39, 0x1d, 0x1e, 0xbd, 0xbf, 0x7e, 0x7d, 0xfe, 0xe8, 0x36, 0x5e, 0xc0, 0x5a, 0xc7, 0xd3, 0x08, 0xb5, + 0x8c, 0x23, 0x1b, 0xb2, 0xd1, 0x21, 0x0f, 0x41, 0x9c, 0x15, 0x89, 0x37, 0xc9, 0xea, 0xad, 0x80, 0x04, 0x14, 0x34, + 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, + 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0xb4, 0x92, 0x18, 0xd6, 0xd0, 0x3c, 0xd6, + 0x56, 0xf3, 0xa6, 0xe2, 0x71, 0xc2, 0x73, 0x5b, 0x75, 0x0a, 0xf0, 0xb9, 0xf0, 0xe6, 0xac, 0x11, 0xf3, 0x07, 0x6f, + 0x7b, 0x2f, 0xd9, 0x09, 0x33, 0x4b, 0xfa, 0x32, 0x51, 0x04, 0x87, 0xbd, 0x4b, 0xc7, 0x77, 0x8b, 0x8c, 0x11, 0xa4, + 0x58, 0x23, 0x79, 0x19, 0x87, 0xac, 0x01, 0xce, 0xa4, 0x02, 0x70, 0xc2, 0x81, 0xb5, 0x34, 0x0e, 0x43, 0x5f, 0x68, + 0x7b, 0xc1, 0x82, 0x46, 0x24, 0xeb, 0x56, 0x2f, 0x55, 0x06, 0x37, 0x3b, 0x79, 0xfe, 0xa0, 0x34, 0x60, 0xa3, 0xc9, + 0xbf, 0xb7, 0x7e, 0x55, 0x2e, 0x67, 0xec, 0x30, 0x2d, 0xe4, 0xf8, 0xa0, 0x03, 0xd7, 0x8c, 0x69, 0x85, 0x8a, 0x25, + 0x62, 0xee, 0x9e, 0x83, 0xe2, 0xb2, 0x2f, 0x3f, 0x57, 0x31, 0x8e, 0x40, 0xb1, 0xf8, 0x2c, 0x88, 0x90, 0xf6, 0x99, + 0x43, 0x10, 0x79, 0xa2, 0xb4, 0xc7, 0x58, 0x1f, 0xe1, 0xef, 0xad, 0xa6, 0xb5, 0xf4, 0x9f, 0x0d, 0xea, 0xdb, 0x51, + 0xa2, 0x42, 0xbe, 0x68, 0x4c, 0xeb, 0x90, 0xf6, 0xa7, 0xc0, 0x25, 0xd2, 0x5b, 0xee, 0x67, 0x44, 0x89, 0xde, 0x10, + 0x1b, 0xb0, 0xc7, 0xf9, 0x1f, 0x89, 0x2b, 0x42, 0x4d, 0xbc, 0x09, 0x71, 0xb8, 0x78, 0x19, 0x50, 0x45, 0x64, 0x44, + 0xad, 0x25, 0xce, 0xe5, 0xf3, 0xf7, 0xe1, 0x46, 0x0b, 0x1e, 0x94, 0xbf, 0x47, 0x5d, 0x57, 0x50, 0x4e, 0xc8, 0xe9, + 0xdd, 0xd0, 0x5b, 0xc6, 0xbf, 0x64, 0xd5, 0xa6, 0xf8, 0x74, 0xc6, 0x42, 0xe1, 0x86, 0x34, 0x4d, 0x6c, 0xda, 0x3f, + 0x0c, 0x7d, 0x80, 0x2f, 0x9c, 0x24, 0xe4, 0x2e, 0xa8, 0xb6, 0x73, 0x47, 0xf3, 0xe3, 0x9f, 0x7b, 0x98, 0x16, 0x56, + 0xa9, 0x5d, 0xc3, 0x49, 0xaf, 0xfc, 0x57, 0xd8, 0x54, 0x8e, 0xde, 0x4c, 0x94, 0xe9, 0x98, 0x8f, 0x7b, 0x89, 0xa7, + 0x65, 0x37, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, + 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x7c, 0x03, 0x78, 0x85, + 0x40, 0x84, 0xa6, 0xa4, 0xff, 0x0a, 0x9e, 0xf0, 0x48, 0x85, 0xc2, 0xb0, 0x85, 0xa3, 0xd9, 0x23, 0x1a, 0xb8, 0x9d, + 0x86, 0x49, 0x80, 0x9a, 0x55, 0xd5, 0x0c, 0xc6, 0x4c, 0xf6, 0xd7, 0x99, 0xf7, 0x55, 0x3b, 0x36, 0xac, 0x47, 0xda, + 0x1c, 0x48, 0x3c, 0x91, 0x66, 0x66, 0x7e, 0x8e, 0x77, 0x94, 0x3e, 0xb9, 0xf2, 0xd7, 0xb4, 0xaf, 0xed, 0x31, 0xa0, + 0x0f, 0xab, 0x42, 0x84, 0x8a, 0xa3, 0x93, 0x37, 0x14, 0x33, 0x56, 0xf6, 0x72, 0x06, 0x16, 0x4c, 0x97, 0x20, 0xff, + 0x14, 0x95, 0xc4, 0x8e, 0x42, 0x10, 0x85, 0x1d, 0x6e, 0xfb, 0xb0, 0x60, 0x4d, 0x49, 0xf5, 0x53, 0x2b, 0x17, 0x63, + 0xe8, 0x9f, 0x99, 0xbf, 0xdf, 0x43, 0x59, 0x5b, 0xb2, 0x15, 0x85, 0x2b, 0x49, 0x57, 0xf6, 0xba, 0x59, 0x32, 0x3b, + 0x11, 0x1d, 0x2e, 0x73, 0x90, 0x2c, 0x68, 0x44, 0xdb, 0x15, 0x15, 0xd3, 0x9a, 0x6b, 0x99, 0x50, 0xd2, 0xcf, 0xcd, + 0x8c, 0x2e, 0x69, 0xcf, 0x9e, 0x9e, 0xea, 0x9c, 0xfc, 0x81, 0xa2, 0xfe, 0x80, 0xca, 0xeb, 0xa9, 0xf3, 0x97, 0x08, + 0x5f, 0xf0, 0x20, 0x3c, 0x81, 0x37, 0x37, 0x84, 0xf2, 0x3b, 0x7e, 0x2f, 0x1a, 0x93, 0xe9, 0x8f, 0xf6, 0x65, 0x65, + 0x41, 0x6f, 0xd3, 0xd7, 0x41, 0x09, 0xd3, 0x52, 0x23, 0x27, 0xf8, 0xfc, 0xd0, 0xa5, 0xde, 0x40, 0x59, 0x56, 0xfd, + 0xbe, 0xf3, 0xc4, 0x5b, 0x66, 0x9f, 0x54, 0xde, 0x27, 0x54, 0x23, 0x2b, 0x8b, 0xb7, 0x7b, 0x27, 0x42, 0x65, 0xc1, + 0xc5, 0x8b, 0x73, 0xe3, 0xdf, 0x7b, 0xad, 0x9e, 0x8c, 0x45, 0x42, 0x70, 0xa7, 0xb9, 0x88, 0xf1, 0x12, 0xd0, 0x51, + 0x74, 0xce, 0x4b, 0xa2, 0x4f, 0xb3, 0x26, 0x8f, 0xc3, 0xf5, 0x5e, 0x20, 0x58, 0xbd, 0xdf, 0x0f, 0x3a, 0x19, 0x69, + 0xa8, 0xf9, 0x4e, 0xc8, 0x30, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, + 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0xc7, + 0x0b, 0x93, 0x5a, 0x99, 0x4a, 0x70, 0xef, 0xc9, 0x8c, 0x64, 0x07, 0x0a, 0x80, 0xc5, 0x42, 0xe7, 0xe9, 0x93, 0x27, + 0xc9, 0xdb, 0x10, 0x9c, 0xda, 0x8f, 0xc7, 0x66, 0xe6, 0x70, 0xd3, 0x08, 0x7b, 0x14, 0x4e, 0xed, 0xdd, 0x6e, 0xc2, + 0x3d, 0xf5, 0xc8, 0xb4, 0xcd, 0x0a, 0x7a, 0xfe, 0x6a, 0xef, 0xc0, 0x14, 0x3b, 0x9e, 0xdb, 0x97, 0x2a, 0x5e, 0x82, + 0x2c, 0xfd, 0xb2, 0x07, 0x7e, 0x69, 0x71, 0xd3, 0x3a, 0x8f, 0xb8, 0x34, 0xf9, 0xf1, 0x07, 0x30, 0x87, 0x57, 0x1e, + 0xdd, 0x22, 0xd1, 0x14, 0xd8, 0xcf, 0x7e, 0xb3, 0x89, 0xd4, 0xc5, 0xe1, 0xf1, 0x19, 0xf8, 0x4b, 0x36, 0x0b, 0x4f, + 0x73, 0x31, 0x4f, 0xb6, 0x4a, 0xf0, 0xa0, 0x65, 0xaf, 0x86, 0xcb, 0x13, 0xba, 0xae, 0x04, 0xb5, 0xa2, 0xfe, 0x0d, + 0xe8, 0x06, 0x90, 0x21, 0x5f, 0xde, 0x4c, 0x7e, 0x09, 0x12, 0x1e, 0xc3, 0x37, 0x6f, 0xde, 0x18, 0xa9, 0x21, 0x4e, + 0x30, 0xa1, 0x83, 0x92, 0x0a, 0xd4, 0xe2, 0xf3, 0x8f, 0x4b, 0x5f, 0x59, 0xf6, 0x56, 0xa6, 0x74, 0x45, 0xc8, 0x28, + 0x17, 0x3f, 0xb8, 0x22, 0x85, 0xad, 0x0c, 0x99, 0x10, 0xf2, 0xab, 0x7c, 0x5e, 0x30, 0xa5, 0x12, 0x28, 0xdb, 0xd0, + 0xcc, 0x04, 0xb0, 0x2e, 0x9b, 0x0d, 0x06, 0x29, 0xf3, 0xa3, 0x61, 0x59, 0xbe, 0xab, 0x3e, 0x33, 0xfd, 0x10, 0xb6, + 0x51, 0x54, 0x61, 0x30, 0xc6, 0x90, 0x6a, 0x83, 0x2a, 0xf7, 0x0e, 0x44, 0x06, 0xde, 0x8e, 0x87, 0x91, 0xfe, 0x6c, + 0x0f, 0xe2, 0xe8, 0x6f, 0x37, 0x28, 0x98, 0x51, 0x88, 0x2e, 0x5b, 0x58, 0x48, 0x62, 0x59, 0x0c, 0x6f, 0xd5, 0xf3, + 0x0e, 0x3d, 0xbb, 0xd1, 0xd5, 0xb6, 0xd5, 0xe6, 0x7a, 0x13, 0x20, 0x8d, 0xdb, 0xfe, 0x43, 0x2b, 0xdf, 0x9c, 0xe7, + 0x45, 0xe1, 0x9b, 0x77, 0xe0, 0x0c, 0xca, 0x20, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, + 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, + 0x8e, 0x45, 0xcd, 0x41, 0x5c, 0x9a, 0x65, 0x69, 0xf9, 0x4e, 0xa6, 0xbf, 0xf4, 0x8b, 0x3e, 0x43, 0xbf, 0xda, 0x72, + 0x4e, 0x43, 0x30, 0x27, 0xff, 0x52, 0x86, 0xc8, 0xdd, 0x6a, 0xa3, 0x7f, 0xc0, 0x3c, 0x63, 0x34, 0xe1, 0x67, 0xfb, + 0xbb, 0x64, 0xcf, 0x66, 0xcf, 0xe9, 0x43, 0x22, 0x70, 0x22, 0x49, 0x6f, 0x81, 0x86, 0x93, 0xe4, 0x7e, 0xe6, 0x65, + 0x5a, 0x21, 0xf5, 0xd2, 0xa8, 0x05, 0x3a, 0xc5, 0x4b, 0x28, 0x1d, 0x8e, 0x1d, 0x4c, 0x20, 0x79, 0x2f, 0x9f, 0x83, + 0x95, 0x61, 0x30, 0xed, 0x58, 0x7d, 0x29, 0x53, 0xf7, 0x30, 0xc5, 0x19, 0xe2, 0x3c, 0x5e, 0xd3, 0xb5, 0x19, 0xd3, + 0xec, 0x23, 0x21, 0x97, 0xce, 0x8a, 0xbf, 0x48, 0xbe, 0xd3, 0x72, 0xf5, 0x52, 0x58, 0x56, 0xd5, 0xd8, 0x54, 0xd9, + 0xa0, 0x7b, 0xad, 0xbd, 0xac, 0x5f, 0x6b, 0x73, 0x9e, 0xd8, 0xcf, 0xca, 0x81, 0x2e, 0xad, 0x5a, 0x8b, 0xe3, 0x63, + 0x8b, 0x72, 0x8c, 0x0f, 0x65, 0x2e, 0xb3, 0x7e, 0x5f, 0x37, 0x5b, 0xd5, 0x0c, 0x94, 0x0d, 0x45, 0xa1, 0x0e, 0x06, + 0x3c, 0xf4, 0xe6, 0xaa, 0x26, 0x7a, 0xcc, 0x6d, 0x97, 0x51, 0xae, 0x42, 0x16, 0xa5, 0x24, 0xe6, 0xf5, 0x34, 0xf4, + 0x77, 0x35, 0x9d, 0x90, 0x35, 0x80, 0x03, 0x6f, 0x4f, 0xc5, 0xac, 0x16, 0xd8, 0x71, 0x52, 0x8b, 0xa9, 0x45, 0x0b, + 0x78, 0x55, 0x48, 0x62, 0x6c, 0xb3, 0x41, 0x7a, 0xc2, 0xfc, 0xae, 0x55, 0xed, 0x04, 0x54, 0xec, 0xc3, 0xc9, 0xac, + 0x5e, 0x70, 0x43, 0xc7, 0xe6, 0xb8, 0x43, 0xfc, 0xc5, 0x9c, 0x27, 0x7b, 0x98, 0x02, 0xf6, 0x12, 0x01, 0x11, 0xb0, + 0x26, 0x1e, 0x9b, 0x29, 0xdf, 0xca, 0x89, 0x46, 0xfe, 0x3b, 0x8b, 0xf2, 0x17, 0xeb, 0x06, 0x71, 0x10, 0xef, 0x7e, + 0xe5, 0xc0, 0xfb, 0x8a, 0x6a, 0x37, 0x4a, 0x88, 0xf8, 0x06, 0x5f, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, + 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, + 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x09, 0x76, 0x19, 0x9e, 0xb3, 0x94, 0x6c, 0x11, 0xf2, 0x48, 0xde, 0x8c, 0x98, 0xc8, + 0x44, 0xb7, 0xa8, 0x69, 0x30, 0xb9, 0x43, 0x41, 0xb2, 0xb7, 0xf0, 0x78, 0x4b, 0xd4, 0x76, 0xd0, 0x8b, 0x5e, 0x32, + 0x73, 0x20, 0x2a, 0x7d, 0x93, 0xc2, 0xee, 0x6e, 0x4f, 0x0c, 0xfc, 0x9b, 0x1d, 0xee, 0xbc, 0x5d, 0xe1, 0xa7, 0x7a, + 0xeb, 0x10, 0xa1, 0xf9, 0xf1, 0xa2, 0x04, 0x8d, 0x43, 0x79, 0xcb, 0x32, 0xe5, 0x82, 0xbc, 0xe7, 0x6e, 0x11, 0xf9, + 0xb0, 0x6e, 0x50, 0x9d, 0x8e, 0xd4, 0x80, 0x39, 0x8b, 0xcd, 0xc7, 0x83, 0x3d, 0x36, 0x73, 0x17, 0xcb, 0x4d, 0x93, + 0x47, 0x8b, 0x72, 0x52, 0x23, 0x31, 0xff, 0x7d, 0xc0, 0x41, 0x57, 0x1c, 0xd4, 0x53, 0x32, 0xbc, 0xed, 0x37, 0x1f, + 0xe4, 0x9c, 0x36, 0x63, 0xd3, 0x81, 0xe9, 0x23, 0xcb, 0xc1, 0x04, 0x64, 0x81, 0xf2, 0x43, 0xb6, 0x18, 0xf8, 0x69, + 0x4c, 0x0c, 0xc9, 0xa8, 0xb2, 0x42, 0x5d, 0x25, 0xd9, 0xc1, 0x4c, 0x06, 0xa6, 0x6a, 0xd8, 0x8c, 0xcd, 0x1c, 0xf0, + 0x73, 0x4d, 0x9d, 0xbf, 0x7f, 0x25, 0xe7, 0x2d, 0x56, 0x2e, 0x20, 0x76, 0x20, 0xfc, 0xd6, 0xe2, 0x71, 0xef, 0x5e, + 0x50, 0xcb, 0x8c, 0xc9, 0x71, 0xeb, 0x3e, 0xad, 0x79, 0x58, 0xc7, 0x64, 0x33, 0x09, 0x41, 0xb0, 0x97, 0xfd, 0xe6, + 0x8a, 0x37, 0xf2, 0x0c, 0xfc, 0x33, 0x63, 0x48, 0x5f, 0x03, 0x30, 0x63, 0x9a, 0x4a, 0x8b, 0xf6, 0x4d, 0xe5, 0xfc, + 0x48, 0x8a, 0xad, 0x56, 0x29, 0xfe, 0xe0, 0xb5, 0xb6, 0x2e, 0x31, 0xde, 0xb7, 0xd5, 0x0e, 0x60, 0x78, 0xc5, 0xa1, + 0x59, 0x27, 0x55, 0xa5, 0x21, 0x30, 0x07, 0xa7, 0x79, 0x36, 0xa0, 0x53, 0x5c, 0x64, 0x6b, 0x4b, 0x97, 0x85, 0xbc, + 0x2c, 0x13, 0xa0, 0xb3, 0x7d, 0x21, 0x85, 0xe2, 0x36, 0x96, 0x30, 0x9a, 0xca, 0x34, 0x34, 0x33, 0x33, 0x33, 0xcc, + 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, + 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0xde, 0x97, 0x36, 0xb8, 0x06, 0xab, 0xc8, 0x2f, 0x33, 0x45, 0x43, + 0x0f, 0xb3, 0xd0, 0x56, 0xdf, 0x58, 0x18, 0xcd, 0xa4, 0xa2, 0x83, 0x19, 0x4a, 0x16, 0xd6, 0x42, 0x9f, 0xe4, 0x14, + 0xa8, 0x5a, 0xe9, 0xc6, 0xe7, 0x2f, 0x08, 0xc5, 0x2f, 0x66, 0xf0, 0xf7, 0xc7, 0x88, 0x1b, 0x3f, 0xc2, 0x78, 0xf2, + 0x45, 0x78, 0x93, 0x3b, 0xfd, 0x8c, 0x8c, 0xf3, 0xe2, 0xd3, 0x23, 0xa8, 0xf7, 0x60, 0x2f, 0x93, 0x8a, 0x86, 0x63, + 0x43, 0xca, 0xfe, 0xc6, 0x26, 0xe2, 0xb1, 0x04, 0x63, 0x1f, 0xa0, 0x4b, 0xff, 0x87, 0xcc, 0x4d, 0x10, 0xf6, 0xab, + 0xfc, 0x67, 0x28, 0x6f, 0xd5, 0x88, 0x9f, 0x7e, 0x3d, 0x17, 0x84, 0x2c, 0xca, 0xf1, 0x13, 0x49, 0x8d, 0x18, 0x75, + 0xe1, 0x3e, 0x7f, 0xf0, 0xdf, 0xb1, 0xe1, 0x42, 0x88, 0xf9, 0xef, 0xb5, 0x7f, 0xd2, 0x64, 0x5f, 0x83, 0xd1, 0xe0, + 0xc6, 0x4b, 0x56, 0x68, 0xac, 0xcd, 0x51, 0x5f, 0x3e, 0x62, 0x9e, 0x8f, 0x0c, 0x3e, 0x80, 0xc5, 0x8c, 0xf2, 0x53, + 0x37, 0xed, 0x95, 0x9c, 0x83, 0x4c, 0xe5, 0x71, 0x4c, 0x41, 0xd4, 0xd6, 0x2e, 0xb4, 0x38, 0x6e, 0x39, 0x7b, 0x42, + 0x30, 0x91, 0xdc, 0xdf, 0x3c, 0x15, 0x92, 0x47, 0x17, 0x1b, 0x2e, 0x3f, 0xb5, 0x4f, 0x37, 0xe6, 0xa4, 0x25, 0xda, + 0x49, 0x79, 0x47, 0x93, 0xf6, 0xce, 0x67, 0x4a, 0x8f, 0x58, 0xda, 0x70, 0xa9, 0x7d, 0x32, 0x28, 0xcf, 0xeb, 0x5f, + 0x0f, 0xba, 0x4d, 0xb8, 0xef, 0x64, 0x47, 0x20, 0xe5, 0x70, 0x96, 0x00, 0x2a, 0xe2, 0x4c, 0x3a, 0xb8, 0x42, 0x14, + 0x98, 0xa9, 0x3f, 0x62, 0xe5, 0x15, 0x58, 0xae, 0x42, 0x72, 0x26, 0xb9, 0xd4, 0x2e, 0xd1, 0xf3, 0x3b, 0x1b, 0x18, + 0xfb, 0xb3, 0x4f, 0xf6, 0x62, 0x7f, 0xf4, 0x65, 0xfc, 0xc7, 0xe1, 0x94, 0x61, 0x3d, 0xd3, 0x51, 0x4f, 0x34, 0x33, + 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, + 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x56, 0xdc, 0x1d, 0xf5, 0x56, 0xaa, 0x13, 0xa7, + 0xa2, 0xb9, 0xe8, 0x4e, 0x0d, 0x17, 0x3b, 0x87, 0x41, 0xf1, 0xec, 0xe6, 0x3d, 0x49, 0x39, 0x34, 0x23, 0x56, 0x05, + 0x7b, 0x95, 0xa6, 0xfc, 0x6b, 0x20, 0xf9, 0xbd, 0xf6, 0xa4, 0x87, 0xa6, 0x01, 0x6f, 0x56, 0xd6, 0x56, 0xcf, 0x0a, + 0x01, 0x0e, 0x69, 0x73, 0xc2, 0x85, 0x51, 0x73, 0x15, 0x42, 0x9e, 0x17, 0xbf, 0x9b, 0xc2, 0xb8, 0x9b, 0x40, 0x6f, + 0xeb, 0xd9, 0x7c, 0x12, 0x48, 0x42, 0xcb, 0xfe, 0x8e, 0xca, 0xc9, 0x41, 0xc0, 0x2d, 0xe2, 0x74, 0xf6, 0x2c, 0x1f, + 0x0c, 0xca, 0x3a, 0xab, 0xf4, 0x08, 0x57, 0x4c, 0x90, 0xd4, 0xac, 0x2f, 0x4b, 0x93, 0x3b, 0xd1, 0xf4, 0x15, 0xd0, + 0x33, 0xc0, 0x00, 0x31, 0x8f, 0x5a, 0xf3, 0xd7, 0xa7, 0x44, 0x77, 0x2b, 0x32, 0x9b, 0x25, 0xf0, 0x99, 0x21, 0x72, + 0x47, 0x5d, 0x5e, 0xe7, 0xa9, 0x11, 0xbc, 0xa6, 0x36, 0x46, 0x53, 0xe9, 0x30, 0x9c, 0xa0, 0x53, 0xe9, 0x60, 0xc2, + 0xf6, 0xf3, 0x77, 0x1f, 0x88, 0xae, 0xb4, 0xeb, 0x84, 0xb4, 0x73, 0x30, 0xbe, 0x9e, 0xdf, 0xd3, 0x58, 0xba, 0x5d, + 0xb0, 0xab, 0x77, 0xb2, 0xf2, 0xff, 0xc2, 0xa1, 0x59, 0x02, 0x66, 0x3c, 0x46, 0xda, 0x2b, 0x66, 0x3b, 0x3c, 0xce, + 0x59, 0xe6, 0xdb, 0x0e, 0x18, 0x61, 0x30, 0xcb, 0xdc, 0xd7, 0x1a, 0xed, 0x6e, 0x25, 0xa1, 0xb4, 0x00, 0x2b, 0x69, + 0x34, 0x62, 0xa2, 0xde, 0x23, 0xc5, 0x35, 0x82, 0x65, 0xc2, 0x04, 0x7c, 0x01, 0xd9, 0x71, 0x5e, 0xae, 0x96, 0x83, + 0x5e, 0x3c, 0x2e, 0x63, 0xcd, 0x39, 0x1f, 0x50, 0x8c, 0xa7, 0x20, 0xc0, 0xb4, 0x2a, 0x4b, 0x2d, 0x48, 0x62, 0x4b, + 0x20, 0x77, 0x17, 0x3b, 0x91, 0xc2, 0x39, 0x12, 0x7c, 0x63, 0x9f, 0xd6, 0xbb, 0xd8, 0x0b, 0x5c, 0x2b, 0xd8, 0x6d, + 0x12, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, + 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x67, 0xda, 0x31, 0x07, 0x41, + 0x24, 0x50, 0x25, 0x97, 0x1b, 0x25, 0x13, 0xcb, 0x35, 0x00, 0xfe, 0x4d, 0xfa, 0x90, 0x49, 0x56, 0xfe, 0xf2, 0xbe, + 0xac, 0x36, 0xcc, 0xe7, 0x61, 0x12, 0x21, 0x46, 0xfc, 0x76, 0xc2, 0x9b, 0x41, 0x93, 0x90, 0x52, 0x9e, 0xe7, 0x3a, + 0x77, 0x80, 0x73, 0x46, 0x1e, 0x80, 0x90, 0x62, 0x60, 0xa7, 0x2e, 0x0f, 0x37, 0xa9, 0x1a, 0xe5, 0x00, 0xf2, 0x60, + 0x88, 0x18, 0x21, 0x6f, 0xf9, 0x7a, 0x03, 0x0f, 0x22, 0x47, 0xfb, 0x95, 0x1d, 0x30, 0xcd, 0xc6, 0x48, 0x9b, 0xf6, + 0x85, 0xd5, 0x34, 0x2e, 0x55, 0x0e, 0x83, 0x46, 0xce, 0xde, 0x5b, 0x5c, 0x83, 0x1f, 0x2a, 0x88, 0x46, 0xba, 0x84, + 0x3f, 0x8d, 0x1a, 0x53, 0xe8, 0x3b, 0xfd, 0xe2, 0x78, 0xd9, 0xd4, 0xf1, 0xe7, 0x89, 0x5d, 0x9c, 0xad, 0xa2, 0x3c, + 0x8b, 0x32, 0xda, 0x9e, 0xc3, 0x57, 0x1a, 0x39, 0x5b, 0x47, 0xd9, 0xec, 0x31, 0x7d, 0x76, 0xbc, 0x11, 0x94, 0xf1, + 0xb6, 0xe0, 0x76, 0x36, 0x49, 0x12, 0x09, 0x81, 0xb9, 0xbe, 0xc2, 0xee, 0x54, 0xb2, 0x79, 0xfb, 0x22, 0xd0, 0x8c, + 0xaf, 0x86, 0x00, 0xe3, 0xb0, 0x8e, 0x29, 0x72, 0xa6, 0x82, 0xc7, 0x6e, 0xf8, 0xb8, 0x58, 0xff, 0xb7, 0xba, 0x39, + 0x20, 0x2f, 0xa1, 0xdb, 0xf8, 0x9a, 0x18, 0xdc, 0x59, 0x8a, 0xe3, 0xb4, 0xa4, 0x53, 0xfa, 0x27, 0xf1, 0x8d, 0xbd, + 0xd4, 0xcc, 0x56, 0x90, 0x03, 0xc1, 0x79, 0xd9, 0x34, 0x99, 0xdf, 0x71, 0xd3, 0xb4, 0x30, 0xc9, 0x42, 0xe2, 0x3f, + 0xd8, 0xc0, 0xd0, 0xea, 0x10, 0xf1, 0xf7, 0xd1, 0x0d, 0x02, 0x15, 0x11, 0x44, 0x88, 0x8a, 0x45, 0x1d, 0xfc, 0x9a, + 0x51, 0x5b, 0xd4, 0xbc, 0x40, 0x50, 0xda, 0xe7, 0xf5, 0x93, 0xf5, 0x08, 0x4b, 0x3e, 0xa5, 0xa0, 0x05, 0x78, 0x6f, + 0xd8, 0x9f, 0x6e, 0x24, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, + 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0xcc, 0xa2, + 0x7e, 0x46, 0x36, 0x83, 0xba, 0x30, 0xbb, 0x5f, 0x93, 0x00, 0x68, 0x9b, 0x3b, 0xa4, 0xba, 0xdc, 0x2a, 0x43, 0xe5, + 0x11, 0xe1, 0x5f, 0x58, 0x1d, 0x64, 0xd9, 0x8e, 0x39, 0x88, 0x58, 0x7c, 0x23, 0xe7, 0x7f, 0x62, 0xcd, 0x1e, 0x0d, + 0x92, 0xe6, 0x63, 0x1f, 0x5d, 0x56, 0x17, 0xd8, 0x26, 0x01, 0x09, 0x75, 0x41, 0xe4, 0xf5, 0xce, 0xb3, 0x73, 0x4a, + 0x7b, 0xe3, 0x95, 0x8f, 0x23, 0x2f, 0xa6, 0x45, 0xdc, 0xb8, 0x6d, 0x64, 0xc2, 0xf6, 0x8f, 0x4c, 0x42, 0x5f, 0xa9, + 0x0e, 0x96, 0x23, 0x1c, 0xf9, 0xbb, 0xac, 0xe6, 0xaa, 0x1a, 0xc3, 0x3a, 0xca, 0xbc, 0xda, 0xe3, 0x27, 0x46, 0x0f, + 0xb2, 0xcc, 0x43, 0xa2, 0xe1, 0x29, 0x84, 0x81, 0x21, 0xf4, 0xc4, 0x30, 0x54, 0xa5, 0x2c, 0x78, 0x1e, 0x0a, 0xa5, + 0x28, 0xba, 0x26, 0xdb, 0x45, 0x12, 0x5f, 0xfa, 0x1c, 0x9b, 0x67, 0x1a, 0xe8, 0xd9, 0x5e, 0xc5, 0x56, 0xbf, 0x6f, + 0x85, 0xbb, 0x8d, 0x55, 0x12, 0x0c, 0x81, 0xb8, 0xdf, 0x65, 0x81, 0x67, 0xf1, 0x49, 0xcb, 0x82, 0x76, 0xd3, 0x6d, + 0x4c, 0x28, 0x3a, 0xa2, 0x64, 0x64, 0x43, 0xe8, 0xb9, 0x96, 0xb9, 0x54, 0x62, 0x49, 0x15, 0x5d, 0x82, 0xd7, 0x5c, + 0xa7, 0x80, 0xf0, 0xc1, 0x8d, 0x45, 0x12, 0x4e, 0xc1, 0xfd, 0x9a, 0x7a, 0x7b, 0x1b, 0xbf, 0x3f, 0xb6, 0xbd, 0x02, + 0xd2, 0x71, 0x6f, 0x1e, 0x8c, 0xd7, 0xa4, 0x1d, 0xc1, 0x84, 0xe9, 0xcd, 0x94, 0x83, 0x04, 0xb1, 0xae, 0xc2, 0xff, + 0xc6, 0x51, 0x1b, 0x5c, 0x76, 0xaa, 0x7a, 0xc6, 0x89, 0xa4, 0x05, 0x53, 0x3c, 0xb2, 0x64, 0xbc, 0xa5, 0xe5, 0xe6, + 0x09, 0xf4, 0x8c, 0xbd, 0x1b, 0x91, 0x50, 0x85, 0x48, 0x03, 0x96, 0x14, 0x94, 0xb4, 0x22, 0x41, 0xdb, 0x96, 0x7f, + 0x59, 0xa0, 0x92, 0x33, 0x16, 0x5a, 0x6c, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, + 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, + 0x45, 0xb2, 0xce, 0x85, 0xd3, 0x48, 0x63, 0x8a, 0xe6, 0x27, 0x0d, 0x69, 0x48, 0xfa, 0xfc, 0x3d, 0x31, 0x65, 0x5e, + 0x37, 0xed, 0xdd, 0xb5, 0x14, 0x43, 0xf5, 0x91, 0xc9, 0x79, 0x9d, 0x6d, 0x09, 0x5d, 0x18, 0xa6, 0xaa, 0xd3, 0x59, + 0xc7, 0x97, 0x6b, 0xf2, 0x4f, 0xbb, 0x09, 0x1c, 0xe9, 0x04, 0x6f, 0x82, 0x92, 0x9d, 0x09, 0x04, 0xdf, 0xea, 0x08, + 0xa0, 0x1c, 0x6e, 0xf2, 0xee, 0xa8, 0x73, 0x53, 0xca, 0xc8, 0xe4, 0xa5, 0x22, 0xf8, 0xd2, 0x2f, 0x53, 0xd8, 0x7b, + 0x5c, 0x70, 0x18, 0xd0, 0xab, 0x12, 0xb8, 0x45, 0x56, 0x07, 0x89, 0x54, 0x1b, 0x4c, 0x8f, 0xac, 0x89, 0xae, 0xe1, + 0x12, 0x58, 0xd9, 0xc3, 0x33, 0xad, 0x05, 0x5d, 0x50, 0xdc, 0x4e, 0x1d, 0xe7, 0xef, 0x7c, 0x75, 0x78, 0x60, 0x2c, + 0x1f, 0x42, 0x5e, 0x0c, 0xbb, 0x9b, 0x27, 0xaa, 0x23, 0x3c, 0x39, 0x31, 0x37, 0xc9, 0x1f, 0x58, 0x72, 0x6e, 0x09, + 0xe9, 0x40, 0x22, 0x57, 0x3b, 0x33, 0xfa, 0xee, 0x1d, 0xec, 0x46, 0x9d, 0xbd, 0x04, 0x5f, 0xe7, 0x7e, 0x18, 0xe7, + 0xa2, 0xe5, 0x2a, 0xc0, 0x30, 0x7a, 0xfa, 0xcf, 0x1e, 0xc3, 0xe5, 0xf1, 0x4c, 0x2c, 0xec, 0xe9, 0x4a, 0xf1, 0x02, + 0x6d, 0xea, 0xad, 0x2f, 0x23, 0x3c, 0x60, 0xf7, 0xdb, 0x7c, 0xde, 0x3c, 0xe2, 0x5b, 0x64, 0x1b, 0xff, 0x65, 0xf7, + 0x58, 0xb8, 0x06, 0xbb, 0x2e, 0xf9, 0xe2, 0xc1, 0x39, 0x34, 0x33, 0xf1, 0x54, 0x9e, 0xe0, 0x16, 0xa6, 0x83, 0xa0, + 0x72, 0x93, 0x6c, 0xb8, 0x3a, 0xa3, 0x7c, 0x70, 0x61, 0x7c, 0x43, 0x0f, 0x67, 0xb0, 0x88, 0x38, 0x5f, 0x40, 0x04, + 0x16, 0x8d, 0x85, 0xe8, 0x06, 0x91, 0x00, 0x9f, 0x12, 0x59, 0x9a, 0x47, 0x7b, 0x9c, 0xf6, 0x3a, 0x0a, 0xbe, 0x8f, + 0x14, 0xf6, 0x26, 0xe4, 0x30, 0xc3, 0xd6, 0x32, 0xf0, 0x3e, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, + 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, + 0x98, 0x97, 0x8e, 0x45, 0x12, 0x48, 0xf6, 0x04, 0x4a, 0x33, 0x58, 0xe4, 0x0a, 0x25, 0xaa, 0x96, 0x9a, 0xb5, 0x23, + 0x59, 0x35, 0x0c, 0x89, 0x2d, 0xc7, 0xaf, 0xc5, 0xf7, 0x96, 0xf1, 0xb9, 0x30, 0xc5, 0x5a, 0x12, 0x2e, 0x67, 0x53, + 0x8a, 0x6c, 0x20, 0xf6, 0x02, 0x76, 0x6f, 0xa6, 0xd7, 0xcb, 0x40, 0xaf, 0x03, 0x78, 0xd7, 0xc8, 0xa4, 0x13, 0x87, + 0x2c, 0x9f, 0xcd, 0x92, 0xec, 0x02, 0x23, 0x01, 0xce, 0x51, 0x04, 0x0f, 0x2d, 0xaa, 0x58, 0x0c, 0x5c, 0xc5, 0x80, + 0xd8, 0xb9, 0x30, 0x84, 0xcb, 0xb4, 0xee, 0x49, 0x96, 0xcc, 0x3e, 0xb9, 0x8b, 0xb9, 0x44, 0xc3, 0xd2, 0x1c, 0xcf, + 0xfe, 0xee, 0xbf, 0x30, 0x17, 0xbe, 0x09, 0x45, 0x2c, 0xb0, 0xbe, 0x6e, 0xa4, 0x36, 0x01, 0xcc, 0xde, 0x9b, 0xe6, + 0xfd, 0x4c, 0x3d, 0x13, 0x8d, 0xe9, 0x91, 0x9a, 0xbc, 0xb4, 0x2c, 0x14, 0x0a, 0x6f, 0x35, 0x2a, 0x1c, 0x08, 0x8c, + 0xce, 0x1d, 0x40, 0xdc, 0x56, 0xfb, 0x47, 0x62, 0x94, 0x7a, 0xbd, 0x86, 0x40, 0xf2, 0x13, 0x46, 0x21, 0xda, 0x74, + 0x8a, 0xc3, 0x97, 0x8f, 0x9e, 0x79, 0x4f, 0x71, 0x07, 0xfc, 0xa6, 0x61, 0x54, 0x0e, 0x02, 0x06, 0xa1, 0x16, 0x69, + 0xe1, 0xdc, 0xda, 0xc6, 0x2e, 0x8d, 0x62, 0x7a, 0xb3, 0x10, 0x7e, 0x6f, 0xe9, 0xbf, 0x57, 0x1f, 0x99, 0xf3, 0xb9, + 0x07, 0x4a, 0xb4, 0xd2, 0xa7, 0x6c, 0xeb, 0x2c, 0x63, 0x42, 0x6a, 0x0e, 0x38, 0x91, 0xe2, 0x37, 0x3c, 0xb5, 0xfc, + 0x65, 0x3a, 0x4d, 0x38, 0x15, 0x8c, 0xc6, 0x15, 0xda, 0xd6, 0xb2, 0xfb, 0x61, 0xc2, 0x4c, 0x9d, 0x1c, 0xc9, 0x1f, + 0x71, 0xc5, 0x9e, 0x3c, 0xe7, 0xac, 0x63, 0x45, 0x0c, 0xb5, 0xc8, 0xa5, 0xf5, 0xce, 0xd8, 0x44, 0x46, 0xee, 0x91, + 0x94, 0x81, 0x76, 0x48, 0x36, 0xac, 0x05, 0x38, 0x14, 0xf5, 0x1d, 0xed, 0x1a, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, + 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, + 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0xf2, 0xb6, 0xa9, 0xb6, 0xb2, 0x7d, 0x35, 0x6d, 0xdf, 0xe6, 0x10, 0xc7, + 0x29, 0x87, 0x24, 0x83, 0x72, 0xc8, 0xb5, 0x5c, 0xe0, 0x8f, 0x6e, 0x3c, 0x9c, 0xc5, 0xd0, 0xc8, 0xda, 0xce, 0xa0, + 0x4d, 0xbb, 0x06, 0x04, 0x36, 0xe0, 0xfa, 0xd0, 0x8b, 0x70, 0xfd, 0x9d, 0x93, 0x1b, 0x4b, 0xf3, 0x2f, 0xa9, 0xf1, + 0x54, 0x1e, 0xf6, 0xa6, 0x06, 0x37, 0xa9, 0x84, 0x88, 0xce, 0x9b, 0x11, 0x81, 0x1b, 0xc5, 0xf3, 0xd5, 0x58, 0x63, + 0xfc, 0x49, 0xbd, 0x9f, 0xbc, 0xb4, 0x92, 0xd4, 0x8b, 0xcd, 0x2c, 0x16, 0x65, 0x61, 0x0e, 0x9f, 0x4d, 0xbf, 0xf4, + 0x30, 0x04, 0x32, 0x4e, 0x67, 0x3f, 0x4c, 0x10, 0xee, 0x85, 0x49, 0x7f, 0xc4, 0x6c, 0xc8, 0x8e, 0x4a, 0x9a, 0xe0, + 0x04, 0x49, 0x44, 0xd7, 0x90, 0xf7, 0x44, 0xea, 0x94, 0x2c, 0xa6, 0xdc, 0xcd, 0xa9, 0x0b, 0x63, 0x78, 0x53, 0x62, + 0xcc, 0x67, 0xe7, 0x0f, 0x10, 0x71, 0x02, 0x60, 0x1a, 0x20, 0x38, 0x01, 0x09, 0xf4, 0x8c, 0xa0, 0x67, 0x2a, 0x03, + 0x11, 0x7a, 0xf0, 0x6f, 0x62, 0xb3, 0xd2, 0xbd, 0xcd, 0x74, 0x42, 0xcb, 0xaf, 0x97, 0x4c, 0x83, 0xd1, 0x34, 0x67, + 0x50, 0x19, 0x0f, 0xf0, 0x46, 0x61, 0x39, 0x58, 0x70, 0x48, 0xfb, 0xa4, 0x14, 0xa8, 0x13, 0x91, 0xab, 0x84, 0xd8, + 0x58, 0x8d, 0xc5, 0x2e, 0xef, 0x4c, 0x86, 0xca, 0x63, 0x4b, 0xd1, 0x69, 0xb7, 0x97, 0x83, 0xb7, 0x03, 0xb8, 0x9d, + 0xef, 0x19, 0x98, 0xfb, 0xef, 0x9a, 0x11, 0x90, 0x98, 0x32, 0x43, 0x6b, 0xee, 0xcd, 0xeb, 0xe0, 0x31, 0x53, 0xdf, + 0x9f, 0x69, 0x41, 0x06, 0xbb, 0xe8, 0xd6, 0xf9, 0x40, 0xe1, 0x39, 0x06, 0x92, 0xb4, 0x65, 0x14, 0x82, 0x15, 0x53, + 0x83, 0x53, 0xec, 0x13, 0x65, 0x26, 0x6d, 0xae, 0xe7, 0xe7, 0x57, 0x87, 0xe0, 0xd9, 0xe6, 0x3e, 0x34, 0x33, 0x33, + 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, + 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0xab, 0xaa, 0x2a, 0x1f, 0x6d, 0x64, 0x75, 0xc2, 0x52, + 0x8f, 0x49, 0xc0, 0x33, 0xa3, 0xdb, 0x0a, 0xb5, 0xa7, 0xeb, 0xa8, 0xd5, 0xc5, 0x51, 0xfe, 0x7b, 0x34, 0x5e, 0x69, + 0xf5, 0xe1, 0xeb, 0x27, 0x93, 0x24, 0x49, 0xcf, 0x78, 0x67, 0xdb, 0x46, 0xf1, 0xe6, 0x91, 0x0e, 0x58, 0x44, 0x71, + 0xe8, 0x0a, 0x15, 0x98, 0x99, 0x28, 0x68, 0xac, 0xa7, 0x12, 0x32, 0x88, 0xb7, 0xe3, 0x02, 0x66, 0x4d, 0x6e, 0xdb, + 0xd6, 0xdf, 0x02, 0xbe, 0x7c, 0x0a, 0xea, 0xf9, 0x84, 0x6f, 0xb4, 0xe3, 0x62, 0xe7, 0x25, 0x93, 0xae, 0x87, 0x4c, + 0xdc, 0x24, 0x71, 0xe2, 0x09, 0x5e, 0xf2, 0x57, 0x33, 0x7a, 0x28, 0x97, 0x65, 0x59, 0xb7, 0xfe, 0x66, 0x59, 0x27, + 0x70, 0xd9, 0x3d, 0x25, 0x70, 0x99, 0xe4, 0xcd, 0x62, 0xf7, 0xb6, 0xb0, 0x48, 0xf4, 0xc9, 0xc4, 0x7a, 0x18, 0x7d, + 0x64, 0x8e, 0xb9, 0x34, 0x48, 0x10, 0xa0, 0xde, 0x95, 0x16, 0xf6, 0x3a, 0xe9, 0x68, 0x57, 0xe4, 0x5a, 0x92, 0x0c, + 0x28, 0x18, 0xfa, 0x32, 0x7e, 0x54, 0xae, 0x0d, 0xaa, 0x73, 0x9a, 0x86, 0x99, 0x33, 0x9f, 0xb1, 0xe2, 0x64, 0x48, + 0xcf, 0x1e, 0xda, 0x88, 0xb7, 0x6a, 0xbf, 0x08, 0x96, 0xde, 0x60, 0x87, 0x52, 0x34, 0x91, 0xd2, 0xdb, 0xb0, 0xc5, + 0xd6, 0x52, 0xd2, 0x59, 0xa5, 0x90, 0x86, 0xda, 0xbd, 0x34, 0x51, 0x05, 0x75, 0xdd, 0x9b, 0x7c, 0x01, 0x23, 0x93, + 0xd1, 0x01, 0x94, 0xf5, 0xa9, 0x81, 0x63, 0xe8, 0x3f, 0xd8, 0x5c, 0xdb, 0x61, 0xf3, 0x2e, 0x1f, 0x55, 0x6f, 0xff, + 0x64, 0x67, 0xa4, 0x53, 0x46, 0x3f, 0x53, 0x8a, 0x78, 0xbc, 0x15, 0x4a, 0x34, 0xfb, 0xa8, 0xff, 0x89, 0x0c, 0x0b, + 0x73, 0x5e, 0x0e, 0x11, 0x32, 0xb0, 0x9e, 0x27, 0x0c, 0xb2, 0xbf, 0x23, 0xd1, 0x44, 0xfc, 0xf2, 0x5d, 0x37, 0x39, + 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, + 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0xab, 0xaa, 0x6a, 0xb9, 0x94, 0x53, + 0xcb, 0x13, 0xa7, 0xf4, 0x0b, 0xd0, 0x4e, 0x9d, 0xbe, 0x2e, 0x9f, 0x54, 0x20, 0xb9, 0x0a, 0xf2, 0x0f, 0x53, 0x8a, + 0x61, 0x55, 0x83, 0x1f, 0x8d, 0xa4, 0x26, 0xb7, 0x6d, 0x3b, 0xef, 0x35, 0xbf, 0xc9, 0x4b, 0x53, 0x9d, 0x75, 0xac, + 0x88, 0x6e, 0x77, 0x14, 0xd9, 0x5d, 0x59, 0xf7, 0x54, 0x21, 0x41, 0x7f, 0xd2, 0x66, 0x15, 0x6a, 0x20, 0xaa, 0x8f, + 0x10, 0x25, 0x49, 0xb2, 0x0e, 0xa9, 0xc3, 0xc0, 0x5b, 0x13, 0xdf, 0x67, 0xee, 0x9a, 0xd0, 0xfd, 0x92, 0xfd, 0x82, + 0x16, 0x33, 0xed, 0x3a, 0xf0, 0x95, 0x1f, 0xbc, 0x2b, 0x2b, 0xa7, 0xfe, 0xae, 0x31, 0xbb, 0xae, 0x03, 0x3b, 0xdb, + 0xf9, 0x88, 0x1c, 0x0d, 0x55, 0x7a, 0x56, 0x2b, 0xc8, 0xdb, 0xa2, 0x2e, 0x2b, 0xe6, 0x66, 0x7f, 0x86, 0xc1, 0xdf, + 0xc5, 0xcf, 0x7e, 0x16, 0x83, 0x5e, 0x33, 0x09, 0x0d, 0xe9, 0xb6, 0xea, 0x0e, 0x30, 0x0e, 0x69, 0xaf, 0xf3, 0x5c, + 0xc7, 0xc5, 0xb4, 0xb5, 0xaf, 0x0b, 0xaf, 0xb8, 0x1d, 0x0f, 0xee, 0x90, 0xfa, 0x83, 0x58, 0xd1, 0x7f, 0xeb, 0x54, + 0x50, 0x23, 0x5d, 0x42, 0x26, 0x34, 0x71, 0x89, 0xb0, 0x90, 0x38, 0x54, 0xb5, 0x2f, 0xb8, 0xcd, 0xa3, 0x62, 0xf9, + 0x16, 0x88, 0x88, 0xc5, 0xad, 0x95, 0x25, 0x9f, 0x4b, 0xaf, 0x91, 0x23, 0xae, 0xbd, 0x61, 0xd4, 0x6e, 0xea, 0x8c, + 0x6f, 0x15, 0x35, 0x87, 0x42, 0x10, 0x7c, 0x4c, 0xf1, 0x8a, 0x5e, 0x63, 0xaf, 0x6f, 0x8b, 0x10, 0x33, 0x4c, 0x6a, + 0x12, 0x55, 0x88, 0x61, 0x53, 0xf5, 0x23, 0x0f, 0x1f, 0xd0, 0x74, 0x6c, 0xe0, 0xea, 0x26, 0x7f, 0xd2, 0x3e, 0xa7, + 0x95, 0x62, 0x37, 0xc7, 0xcf, 0x41, 0x55, 0xf5, 0x55, 0xf5, 0x64, 0x1c, 0xae, 0xda, 0x6c, 0xf4, 0xa6, 0x11, 0x1f, + 0x9b, 0x3f, 0x4c, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, + 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0xab, 0xaa, 0xb2, + 0x17, 0x65, 0xb4, 0xe7, 0x3c, 0x19, 0x5c, 0x09, 0xab, 0xae, 0xfd, 0x23, 0x9c, 0xb1, 0x54, 0x69, 0xda, 0xb4, 0x48, + 0x27, 0x92, 0xac, 0xdf, 0x89, 0xb8, 0x1b, 0x8d, 0xa4, 0x26, 0x25, 0x49, 0xe2, 0xa8, 0xd3, 0xe1, 0xde, 0x5c, 0x8f, + 0x09, 0xd8, 0x20, 0x26, 0xb6, 0x7e, 0x5e, 0x81, 0x71, 0xe7, 0xfb, 0x1f, 0xe9, 0x0c, 0x41, 0xb3, 0x2a, 0xfa, 0x5a, + 0x91, 0xfe, 0xae, 0x31, 0xb7, 0x6d, 0x6d, 0xe4, 0x64, 0xce, 0xd9, 0xd3, 0xac, 0x0b, 0x34, 0x62, 0x86, 0xc9, 0x58, + 0x06, 0x10, 0x0d, 0x92, 0xf6, 0x21, 0xc5, 0xbb, 0xb1, 0x72, 0x09, 0xa9, 0x73, 0x30, 0xaa, 0x8f, 0x10, 0x05, 0x41, + 0x60, 0x3c, 0xd5, 0xf5, 0xa0, 0x21, 0x53, 0x22, 0xf2, 0x8b, 0x80, 0x54, 0x98, 0x83, 0xe8, 0xc3, 0xe5, 0x38, 0x97, + 0x57, 0xe1, 0x53, 0x90, 0x07, 0xfd, 0x67, 0xaf, 0x5b, 0x91, 0x6c, 0x64, 0x36, 0xf3, 0xd1, 0xd3, 0xde, 0x1d, 0x77, + 0x60, 0xc3, 0xfc, 0xc5, 0x0f, 0xb3, 0xf9, 0xc8, 0x00, 0xe7, 0x6e, 0x91, 0xa6, 0xca, 0xee, 0xe6, 0xba, 0x1e, 0xbf, + 0x21, 0x6c, 0xca, 0x72, 0x2c, 0x70, 0x68, 0xce, 0xd0, 0xea, 0x51, 0x3e, 0x97, 0xb7, 0x24, 0x59, 0xed, 0x34, 0x9e, + 0x12, 0x56, 0x4e, 0x6c, 0x4e, 0x2c, 0x18, 0xf5, 0x0b, 0x0d, 0xc7, 0x18, 0x35, 0xe3, 0xd1, 0x2b, 0x9a, 0x4a, 0x7f, + 0x09, 0x3e, 0x9c, 0x9a, 0xc1, 0x0a, 0x25, 0xcb, 0x64, 0xfb, 0x93, 0x82, 0x0a, 0x7b, 0x5f, 0x4e, 0x3b, 0x34, 0xc5, + 0x28, 0x77, 0x24, 0xd8, 0xdc, 0xf7, 0x36, 0x58, 0x99, 0xa1, 0xc7, 0x22, 0x22, 0x9b, 0xbb, 0xd4, 0xaf, 0xe0, 0xaa, + 0xa9, 0xe3, 0xa9, 0x77, 0x53, 0xc2, 0xb8, 0x7c, 0xa8, 0x7f, 0x49, 0x01, 0x13, 0x49, 0x24, 0xb1, 0xa7, 0xd1, 0xc9, + 0xd6, 0x50, 0x54, 0xcc, 0x92, 0x15, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, + 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, + 0xab, 0xaa, 0x76, 0x01, 0x09, 0x7a, 0xe6, 0xb4, 0x69, 0x2e, 0x70, 0x7b, 0x3a, 0xd2, 0xf7, 0x34, 0x88, 0xf7, 0xaf, + 0x6f, 0x59, 0xf8, 0x89, 0x66, 0x6d, 0xd4, 0x89, 0xb8, 0x1b, 0x8d, 0xa4, 0x26, 0x4a, 0x92, 0x7a, 0x82, 0xd1, 0x29, + 0xb5, 0xb2, 0xd6, 0x2d, 0xea, 0x3b, 0xd6, 0x7e, 0x1c, 0x05, 0x16, 0x15, 0xdb, 0xbe, 0xb2, 0x16, 0xc9, 0x06, 0x87, + 0xb4, 0xf4, 0xb5, 0x22, 0xfd, 0x5d, 0x63, 0xdc, 0xb6, 0x8f, 0xa5, 0xf9, 0x63, 0xe8, 0x2e, 0xd6, 0xa8, 0x49, 0x77, + 0xd8, 0xdc, 0x2c, 0xfa, 0x1f, 0xd2, 0x9d, 0xe7, 0x86, 0xa2, 0x4e, 0xb0, 0x04, 0x23, 0xa3, 0xce, 0xc1, 0xa8, 0x3e, + 0x42, 0x4e, 0x53, 0x8a, 0xe2, 0xef, 0xfb, 0x1f, 0x73, 0x1f, 0x08, 0x27, 0xa9, 0x71, 0x78, 0x5f, 0x0d, 0x4d, 0x65, + 0xcf, 0xc1, 0xaa, 0xab, 0x2a, 0x9e, 0x4d, 0x5b, 0x54, 0xf4, 0x7e, 0xb1, 0x01, 0x5c, 0x2d, 0x21, 0xd3, 0x95, 0x99, + 0x1e, 0x30, 0x8c, 0x61, 0xf8, 0x0f, 0xf9, 0x48, 0xe7, 0x7d, 0xc4, 0x38, 0x7a, 0xed, 0xab, 0xa5, 0x82, 0x95, 0xce, + 0xb6, 0x21, 0x8b, 0xe4, 0x29, 0xca, 0x4a, 0x46, 0x4b, 0x25, 0xc5, 0xe9, 0xcd, 0x3f, 0xc4, 0x48, 0xf5, 0xed, 0xe0, + 0xe7, 0xac, 0x8f, 0x0d, 0xe0, 0x8f, 0x3b, 0x80, 0xb5, 0xd0, 0xee, 0x78, 0x63, 0xa7, 0x04, 0x2c, 0xd4, 0xaa, 0x23, + 0x20, 0x1f, 0xd6, 0xf5, 0x07, 0x02, 0x42, 0x19, 0x79, 0x9a, 0x1f, 0x59, 0x2b, 0xe5, 0x80, 0x43, 0x00, 0xcc, 0xef, + 0xf6, 0xc6, 0xd4, 0x76, 0x1e, 0x94, 0xd2, 0x8c, 0x9f, 0x0c, 0x54, 0x57, 0x4a, 0x1e, 0x42, 0x50, 0x95, 0xa9, 0xe1, + 0x54, 0x82, 0x04, 0x46, 0x90, 0xe1, 0x6f, 0xed, 0x3f, 0x36, 0x0a, 0xcf, 0xe1, 0xd7, 0xad, 0xdf, 0x3e, 0x5f, 0x9c, + 0x67, 0x24, 0x85, 0x6b, 0xc4, 0x33, 0xf1, 0x62, 0x72, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, + 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, + 0x97, 0x8e, 0x45, 0xab, 0x2a, 0xf7, 0x72, 0x74, 0x3a, 0x4a, 0xe6, 0xc1, 0x05, 0x39, 0x99, 0x0f, 0xd4, 0x8c, 0xa9, + 0x4e, 0xd0, 0x22, 0x66, 0x58, 0x9d, 0x68, 0x66, 0x6d, 0xd4, 0x89, 0xb8, 0x1b, 0x8d, 0xa4, 0x26, 0x25, 0x49, 0x1f, + 0xc4, 0x3b, 0x6b, 0x20, 0x32, 0x23, 0x9e, 0x2e, 0x69, 0xeb, 0xc9, 0xc2, 0x4e, 0xbb, 0x0c, 0x56, 0x86, 0x6f, 0x13, + 0xab, 0x83, 0x43, 0x5a, 0xfa, 0x5a, 0x91, 0xfe, 0xae, 0x31, 0xb7, 0x8d, 0xa3, 0xf6, 0x61, 0xc4, 0x3f, 0xc4, 0x3a, + 0x7d, 0x04, 0xb4, 0x63, 0x28, 0x96, 0xc0, 0xa8, 0xff, 0x44, 0xf1, 0x27, 0xb1, 0xe3, 0x2b, 0xc1, 0xc8, 0xa8, 0x73, + 0x30, 0xaa, 0x8f, 0x10, 0xbb, 0xae, 0x54, 0x55, 0xf2, 0x1e, 0xba, 0x10, 0x90, 0x5e, 0xad, 0x97, 0x18, 0x41, 0x3c, + 0x9b, 0x29, 0x53, 0x9c, 0xa4, 0xbe, 0xb7, 0x0c, 0xc3, 0x87, 0x6f, 0x08, 0xb2, 0x8c, 0x5e, 0x33, 0x09, 0x41, 0x97, + 0x4e, 0x34, 0x77, 0xee, 0x27, 0xaa, 0x68, 0xcb, 0x67, 0x6b, 0x75, 0x6f, 0x7f, 0xc9, 0x58, 0xd2, 0xe4, 0xde, 0xdc, + 0x1d, 0xd2, 0x66, 0x12, 0x88, 0xb1, 0x7f, 0x17, 0xa6, 0x93, 0x59, 0xd6, 0x48, 0x12, 0x22, 0xdb, 0xd3, 0x46, 0xf0, + 0xb9, 0x05, 0xd6, 0x68, 0x95, 0x2f, 0x99, 0xf5, 0xed, 0x07, 0x46, 0x3d, 0xe5, 0xd0, 0xa3, 0x45, 0xaa, 0x11, 0x33, + 0x8f, 0x0f, 0x20, 0x6a, 0x14, 0x74, 0xc7, 0x31, 0x4e, 0x0c, 0xf5, 0xb8, 0x49, 0x6b, 0x0d, 0xfc, 0x90, 0x4f, 0xf7, + 0x55, 0x67, 0xe2, 0xf2, 0x2d, 0xe1, 0x99, 0x37, 0x5d, 0x19, 0xbc, 0x69, 0x1e, 0xc3, 0xb9, 0x30, 0x2a, 0x30, 0x4b, + 0x4d, 0x1d, 0xd2, 0x89, 0xd6, 0x30, 0xb2, 0x0f, 0x1a, 0xc5, 0x69, 0x6c, 0xbc, 0x8f, 0x12, 0x1a, 0x6d, 0x6f, 0xcf, + 0x19, 0x5c, 0x95, 0x55, 0x1e, 0x97, 0x48, 0xc1, 0xc3, 0x4c, 0x21, 0x4f, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, + 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, + 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0xab, 0x6a, 0x25, 0x1e, 0x3b, 0x2c, 0x83, 0xa9, 0xd0, 0xc4, 0x92, 0x2a, 0xe4, + 0x10, 0x63, 0xd5, 0xd1, 0xf3, 0x35, 0x03, 0x58, 0x9d, 0x68, 0x66, 0x6d, 0xd4, 0x89, 0xb8, 0x1b, 0x8d, 0xa4, 0x26, + 0xb7, 0xcd, 0x85, 0xe6, 0x17, 0xba, 0xf4, 0x08, 0x64, 0x29, 0x06, 0x92, 0x78, 0x5a, 0x59, 0x8e, 0x4c, 0xac, 0x3b, + 0xb8, 0x25, 0xb1, 0xe3, 0x2b, 0xc1, 0xc8, 0xa8, 0x73, 0x30, 0xaa, 0x8f, 0x10, 0x00, 0x20, 0x52, 0x55, 0xdc, 0x8d, + 0x28, 0x12, 0x70, 0x0b, 0x08, 0x78, 0x60, 0xe7, 0xe5, 0xa3, 0x97, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0xfd, 0x89, 0x2a, 0xda, 0x12, 0x02, 0xe2, 0x92, 0x47, 0x5e, 0x58, + 0x2d, 0xc9, 0xd4, 0xa4, 0xfb, 0x5c, 0x2c, 0x80, 0x56, 0x7c, 0x9b, 0x72, 0x8c, 0x92, 0xab, 0x80, 0x4e, 0x07, 0x72, + 0x4b, 0x34, 0xb3, 0xf3, 0xff, 0xdc, 0xd6, 0x1b, 0x68, 0xf7, 0x83, 0x69, 0xcc, 0xd7, 0xfb, 0xce, 0x8e, 0xfe, 0x1d, + 0x2f, 0xe7, 0x57, 0xf3, 0xee, 0x85, 0xf2, 0xe1, 0x8c, 0xaa, 0x18, 0xf5, 0x67, 0x5e, 0xe8, 0xa9, 0xb2, 0xe8, 0xfd, + 0xa9, 0x39, 0x15, 0x17, 0xc0, 0xb5, 0xb3, 0x7e, 0xe3, 0xe8, 0x39, 0xc7, 0x8a, 0xe4, 0x31, 0x1e, 0x5b, 0x7b, 0xa6, + 0xc1, 0x49, 0x75, 0xe9, 0x83, 0xa9, 0x19, 0x61, 0x93, 0x25, 0xee, 0xd2, 0x4d, 0x43, 0x09, 0xbc, 0x22, 0xfa, 0x21, + 0xb1, 0xfe, 0xa7, 0xc2, 0xf1, 0x0f, 0xdb, 0xc3, 0x1e, 0x9f, 0x33, 0x9c, 0xda, 0x84, 0x7b, 0xf6, 0xbd, 0xf8, 0xbf, + 0x37, 0x18, 0x83, 0x72, 0xb5, 0xb1, 0xc5, 0xd2, 0x3e, 0x5d, 0xb7, 0x96, 0x68, 0x9b, 0x0f, 0x95, 0x41, 0x9a, 0x8d, + 0xbd, 0x72, 0x7e, 0xd9, 0x4b, 0x74, 0x7b, 0x40, 0x07, 0xe9, 0x2d, 0x5d, 0xcc, 0xd1, 0x50, 0x34, 0x33, 0x33, 0x33, + 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, + 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0xab, 0x32, 0x2d, 0x90, 0x08, 0x96, 0xe5, 0x27, 0xdf, 0xb5, + 0x1e, 0x5c, 0xce, 0x9c, 0x42, 0x71, 0xac, 0xf2, 0x35, 0x03, 0x58, 0x9d, 0x68, 0x66, 0x6d, 0xd4, 0x89, 0xb8, 0x1b, + 0x8d, 0xa4, 0x26, 0x25, 0x99, 0xcb, 0x80, 0x03, 0x2d, 0x5a, 0x2c, 0xa6, 0x26, 0xeb, 0xc0, 0x69, 0xe6, 0x42, 0xff, + 0x6f, 0x13, 0xb3, 0x28, 0x71, 0x13, 0xab, 0x83, 0x43, 0x5a, 0xfa, 0x5a, 0x91, 0xfe, 0xae, 0x31, 0x00, 0xf2, 0xcf, + 0xbb, 0x62, 0x39, 0x78, 0x06, 0x2e, 0x9b, 0x62, 0x26, 0x2e, 0x8d, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x7e, 0x28, 0xa5, 0xb0, 0x3c, 0x1d, 0x1f, 0x75, + 0x7b, 0x9f, 0xd3, 0x80, 0x70, 0x06, 0xa1, 0x4d, 0x9b, 0x3d, 0x9f, 0xbf, 0xb7, 0x0c, 0xc3, 0x87, 0x6f, 0x08, 0xb2, + 0x8c, 0x5e, 0x33, 0x09, 0x6b, 0xbd, 0x9e, 0x0b, 0x35, 0x4b, 0xec, 0x3e, 0x22, 0x79, 0x04, 0xe3, 0xa1, 0x04, 0x2c, + 0x59, 0xc3, 0xaf, 0x7e, 0x3c, 0x71, 0x96, 0x6e, 0x3f, 0x55, 0x55, 0xca, 0x0b, 0x8e, 0x05, 0x0b, 0x28, 0x6c, 0x3d, + 0x3a, 0x21, 0x3d, 0x83, 0xb3, 0x9e, 0x23, 0x60, 0x6a, 0x62, 0xe7, 0x16, 0x93, 0x89, 0xa7, 0xef, 0x27, 0x6c, 0xb3, + 0x1d, 0x18, 0x83, 0xfa, 0x26, 0x7e, 0xc7, 0x06, 0x87, 0xde, 0x41, 0x32, 0x49, 0x98, 0x9d, 0x16, 0x13, 0x75, 0xde, + 0xe3, 0x45, 0xb8, 0xa3, 0x1e, 0x6a, 0x49, 0x44, 0x6d, 0x4d, 0x3e, 0x32, 0x84, 0x45, 0x21, 0x73, 0x37, 0x68, 0xe9, + 0x02, 0x3a, 0xd8, 0xe8, 0x3a, 0x87, 0x61, 0xfa, 0x02, 0x0a, 0xc5, 0x7c, 0xaf, 0xe3, 0x09, 0xd7, 0x81, 0x3b, 0x6f, + 0x87, 0xd5, 0x41, 0x97, 0xca, 0xd7, 0x77, 0xf8, 0xb4, 0x38, 0x96, 0x8e, 0x38, 0xec, 0xdb, 0x88, 0xd0, 0x27, 0x34, + 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, + 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0xab, 0x36, 0x2b, 0x36, 0xfa, 0x78, 0x2a, + 0xe8, 0x7b, 0xc1, 0xbe, 0xb4, 0xab, 0x36, 0x3f, 0x71, 0xac, 0xf2, 0x35, 0x03, 0x58, 0x9d, 0x68, 0x66, 0x6d, 0xd4, + 0x89, 0xb8, 0x1b, 0x8d, 0xa4, 0x26, 0x25, 0x3f, 0x3c, 0x87, 0xc3, 0xe8, 0x42, 0x0d, 0x5e, 0x6c, 0x14, 0x43, 0x4a, + 0x46, 0x51, 0xff, 0x6f, 0x13, 0xb3, 0x28, 0x71, 0x13, 0xab, 0x83, 0x43, 0x5a, 0xfa, 0x5a, 0x91, 0xfe, 0xae, 0x31, + 0x93, 0xc6, 0x98, 0x86, 0x15, 0x4d, 0x9a, 0x7e, 0x42, 0x8d, 0xd6, 0xf0, 0x26, 0x75, 0x87, 0xa9, 0xba, 0x75, 0x2a, + 0x99, 0xbc, 0x75, 0x72, 0xdb, 0xc5, 0xeb, 0x4b, 0x42, 0xf2, 0x52, 0xce, 0x52, 0xf2, 0x39, 0x7b, 0xd7, 0xc1, 0x16, + 0x5a, 0x16, 0x5f, 0xa1, 0x3c, 0x58, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, + 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x7f, 0x14, 0xc3, 0x58, 0x68, 0x9b, 0xe9, 0xa3, 0x2e, 0x7b, 0xd5, 0xbb, + 0xfd, 0x17, 0xf1, 0x51, 0xe2, 0x60, 0x12, 0x13, 0xa8, 0x81, 0x9d, 0xf1, 0xa7, 0x53, 0x82, 0x15, 0xe8, 0xb9, 0xb2, + 0x0c, 0x81, 0x94, 0x78, 0xe2, 0x26, 0xbd, 0xf5, 0x8a, 0x97, 0x10, 0xaf, 0xb4, 0xcc, 0x46, 0x83, 0xb5, 0x2b, 0x75, + 0x6f, 0x16, 0x8b, 0x12, 0xc0, 0xa6, 0x80, 0x4f, 0x7c, 0x09, 0x38, 0x61, 0xff, 0x5d, 0x6e, 0xcf, 0xd9, 0x81, 0x7f, + 0x7d, 0x88, 0x38, 0x8b, 0xcf, 0xcf, 0x90, 0xec, 0xff, 0xcd, 0x17, 0x44, 0x0d, 0x36, 0x0f, 0x2b, 0xa4, 0x68, 0xc1, + 0x6e, 0xf0, 0x2d, 0xbf, 0xee, 0x85, 0xe0, 0x27, 0x74, 0x53, 0xaa, 0xb2, 0x47, 0xe0, 0x81, 0xdb, 0x67, 0x2b, 0xaa, + 0x33, 0x1c, 0x10, 0xfd, 0xf4, 0x11, 0xa5, 0x5f, 0x3e, 0x78, 0x41, 0xce, 0x21, 0x72, 0x5b, 0x65, 0x7f, 0xf6, 0xa7, + 0xe4, 0x30, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, + 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x2b, 0xdf, 0x75, 0xc4, + 0x4d, 0xd8, 0xf2, 0x3a, 0xc8, 0x1e, 0xaa, 0xaa, 0xab, 0x36, 0x3f, 0x71, 0xac, 0xf2, 0x35, 0x03, 0x58, 0x9d, 0x68, + 0x66, 0x6d, 0xd4, 0x89, 0xb8, 0x1b, 0x8d, 0xa4, 0x26, 0x6e, 0x58, 0x94, 0x92, 0xa7, 0x8d, 0xa2, 0x6b, 0xca, 0x19, + 0x24, 0x49, 0xdc, 0x2e, 0x36, 0xaa, 0x4a, 0x62, 0x77, 0x70, 0x4b, 0x62, 0xc7, 0x57, 0x82, 0x91, 0x51, 0xe7, 0x60, + 0x54, 0x1f, 0x21, 0xfc, 0xb4, 0xe9, 0x49, 0x04, 0x32, 0xdd, 0xaf, 0x3d, 0x35, 0x48, 0x92, 0xb8, 0x5d, 0x6c, 0x54, + 0x95, 0xc4, 0xee, 0xe0, 0x96, 0xc4, 0x8e, 0xaf, 0x04, 0x23, 0xa3, 0xce, 0xc1, 0xa8, 0x3e, 0x42, 0x72, 0xcd, 0x99, + 0x9b, 0x39, 0xe5, 0x3b, 0x7a, 0xd0, 0xbe, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, + 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xb8, 0x7e, 0x6a, 0x83, 0x7d, 0x05, 0x21, 0xfb, 0xa2, + 0x39, 0x2e, 0x70, 0x97, 0x39, 0x85, 0xbd, 0xc7, 0x12, 0x1a, 0x37, 0x48, 0xf0, 0xae, 0x61, 0x87, 0x81, 0xbf, 0x76, + 0x6d, 0x4b, 0xb4, 0x45, 0x7a, 0xbf, 0x44, 0xe3, 0xf2, 0x74, 0xcd, 0xb8, 0x5f, 0x58, 0x58, 0x2b, 0x0a, 0x16, 0x5c, + 0x75, 0x0b, 0x3c, 0xe4, 0x5d, 0xd6, 0x82, 0xe2, 0x76, 0x9f, 0xc2, 0x80, 0x1d, 0x0e, 0xed, 0x82, 0x36, 0xdf, 0x4d, + 0x4f, 0x72, 0x00, 0x26, 0xdd, 0xc3, 0x0b, 0x5e, 0x2a, 0x2b, 0x5b, 0x63, 0x85, 0xce, 0x6c, 0x88, 0x6e, 0x47, 0x84, + 0x9c, 0xba, 0x89, 0x3f, 0x9c, 0xeb, 0x33, 0x60, 0xb9, 0xe2, 0x29, 0x5f, 0xa5, 0x1a, 0x35, 0x02, 0x1a, 0xea, 0xca, + 0xe9, 0x71, 0xb9, 0x02, 0x47, 0xc6, 0x8e, 0xb8, 0x75, 0x23, 0x52, 0xb4, 0x07, 0x85, 0x17, 0xfd, 0xc5, 0x78, 0xe6, + 0x06, 0xf1, 0x78, 0x22, 0x2e, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, + 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x6b, + 0x95, 0xb6, 0x3c, 0x00, 0xae, 0x55, 0x55, 0xaa, 0x1e, 0xaa, 0xaa, 0xab, 0x36, 0x3f, 0x71, 0xac, 0xf2, 0x35, 0x03, + 0x58, 0x9d, 0x68, 0x66, 0x6d, 0xd4, 0x89, 0xb8, 0x1b, 0x8d, 0xa4, 0x26, 0x61, 0xee, 0xc7, 0xa4, 0x02, 0x89, 0xfe, + 0xff, 0xfe, 0x5b, 0xfe, 0xff, 0x02, 0xa4, 0xbd, 0x53, 0x05, 0xd8, 0xa1, 0x09, 0x08, 0xd8, 0x39, 0x33, 0x48, 0x7d, + 0x9d, 0x29, 0x53, 0xa7, 0xed, 0x73, 0xfc, 0xb0, 0x47, 0xdd, 0xbe, 0x6b, 0xdd, 0xb6, 0x91, 0x34, 0x48, 0x92, 0xb8, + 0x5d, 0x6c, 0x54, 0x95, 0xc4, 0xee, 0xe0, 0x96, 0xc4, 0x8e, 0xaf, 0x04, 0x23, 0xa3, 0xce, 0xc1, 0xa8, 0x3e, 0x42, + 0xf8, 0x48, 0x70, 0x9d, 0x6f, 0x64, 0x50, 0x14, 0x65, 0xd9, 0xea, 0xba, 0x4e, 0x53, 0x60, 0xa0, 0xbd, 0xae, 0xf0, + 0xc7, 0x30, 0xcb, 0xb7, 0x46, 0xcb, 0xc9, 0x02, 0x0d, 0x1e, 0x5d, 0xe2, 0x3a, 0x1e, 0x4c, 0x39, 0x78, 0x7a, 0xff, + 0x3c, 0x62, 0x7d, 0x7d, 0xee, 0x06, 0x8e, 0x9f, 0x26, 0xd7, 0x1f, 0x42, 0xd4, 0x0c, 0x4f, 0xa9, 0x3a, 0x80, 0x02, + 0xd2, 0x7c, 0x93, 0x2a, 0xa4, 0x09, 0x4f, 0x4c, 0x9a, 0xdc, 0xed, 0x73, 0xf5, 0x35, 0xcb, 0xc5, 0x6c, 0x2c, 0xba, + 0x68, 0x67, 0xc3, 0xb6, 0x7e, 0xce, 0xec, 0xd5, 0xc5, 0x51, 0x54, 0x53, 0xbe, 0xf9, 0xb4, 0x60, 0x91, 0x60, 0x85, + 0x00, 0xa2, 0xf8, 0x3a, 0x08, 0x21, 0xe7, 0x96, 0x8d, 0x66, 0x86, 0x0a, 0xf5, 0x6c, 0x36, 0xa8, 0xd0, 0xc7, 0x5c, + 0x8a, 0x55, 0x99, 0xa7, 0x29, 0x1e, 0xb9, 0x10, 0xd9, 0xe4, 0x28, 0xb6, 0x98, 0x2e, 0x11, 0xe2, 0x45, 0xd9, 0xec, + 0xfc, 0xc9, 0x32, 0x86, 0x3d, 0xb4, 0x8f, 0xde, 0x28, 0xba, 0x96, 0xbc, 0x9f, 0x36, 0x63, 0x3d, 0x86, 0x7d, 0xdd, + 0xc6, 0xb2, 0xc5, 0xd9, 0x10, 0xc3, 0xcb, 0x68, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, 0x65, 0x6a, 0x65, + 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, 0x4c, 0x98, 0x97, + 0x8e, 0x45, 0xf3, 0xb0, 0x07, 0x01, 0x55, 0x55, 0x55, 0x55, 0xaa, 0x1e, 0xaa, 0xaa, 0xab, 0x36, 0x3f, 0x71, 0xac, + 0xf2, 0x35, 0x03, 0x58, 0x9d, 0x68, 0x66, 0x6d, 0xd4, 0x89, 0xb8, 0x1b, 0x8d, 0xa4, 0x26, 0xf5, 0x29, 0x82, 0xb2, + 0x48, 0x92, 0x24, 0x49, 0x6d, 0x27, 0xb6, 0x6d, 0x4a, 0x46, 0x51, 0xff, 0x6f, 0x13, 0xb3, 0x28, 0x71, 0x13, 0xab, + 0x83, 0x43, 0x5a, 0xfa, 0x5a, 0x91, 0xfe, 0xae, 0x31, 0x52, 0x1f, 0xe8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xe7, 0xd6, 0xec, 0x5e, 0x81, 0x20, 0x08, 0x82, 0x89, 0xe6, 0x7c, 0xdf, 0xbc, 0x6a, 0x7b, 0xf5, + 0xe2, 0x5f, 0x2c, 0x80, 0x56, 0x7c, 0x9b, 0x72, 0x8c, 0x92, 0xab, 0x80, 0x4e, 0x07, 0x72, 0x4b, 0x67, 0x66, 0x66, + 0x66, 0xee, 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, 0xdf, 0xbd, 0xfe, 0x81, 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, + 0x0d, 0xd7, 0x7b, 0xed, 0x42, 0x27, 0xf9, 0x14, 0xd4, 0x3d, 0xc6, 0x57, 0x7c, 0x45, 0x13, 0x0d, 0x17, 0x08, 0x9a, + 0x8b, 0x64, 0xbd, 0x46, 0xcf, 0x8b, 0x25, 0xc2, 0x01, 0xbb, 0x7e, 0x6c, 0xd9, 0x78, 0x02, 0x8e, 0x39, 0x17, 0x2c, + 0xa5, 0xb0, 0xbe, 0x34, 0x2f, 0xe5, 0x52, 0x4e, 0x7e, 0x7a, 0xd6, 0x41, 0x1f, 0x65, 0x7b, 0xac, 0x93, 0x1e, 0x8f, + 0x05, 0xbc, 0x09, 0x3b, 0x02, 0x12, 0x7d, 0x1f, 0xd9, 0x9c, 0x3c, 0x3e, 0xae, 0xa8, 0x27, 0x32, 0x48, 0x3f, 0xea, + 0xa3, 0x56, 0x1e, 0xd3, 0xd4, 0xf0, 0x4f, 0x1e, 0x6c, 0xf6, 0xbb, 0x24, 0x75, 0x52, 0x7c, 0xfb, 0x80, 0xd5, 0x18, + 0x19, 0x20, 0xfb, 0xdf, 0xaa, 0x39, 0x48, 0xd7, 0x68, 0x10, 0x24, 0x34, 0x33, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xcc, + 0x65, 0x6a, 0x65, 0x66, 0x9b, 0x95, 0x3e, 0x32, 0x03, 0xe8, 0x2d, 0x6c, 0x9e, 0x81, 0xef, 0x51, 0x2b, 0x4b, 0x2b, + 0x4c, 0x98, 0x97, 0x8e, 0x45, 0x07, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xaa, 0x1e, 0xaa, 0xaa, 0xab, 0x36, + 0x3f, 0x71, 0xac, 0xf2, 0x35, 0x03, 0x58, 0x9d, 0x68, 0x66, 0x6d, 0xd4, 0x89, 0xb8, 0x1b, 0x8d, 0xa4, 0x26, 0x3a, + 0x92, 0x24, 0x49, 0xb6, 0x6d, 0xdb, 0xb6, 0x91, 0x34, 0x48, 0x92, 0xb8, 0x5d, 0x6c, 0x54, 0x95, 0xc4, 0xee, 0xe0, + 0x96, 0xc4, 0x8e, 0xaf, 0x04, 0x23, 0xa3, 0xce, 0xc1, 0xa8, 0x3e, 0x42, 0xc7, 0x6d, 0xdb, 0xb6, 0x48, 0x92, 0x24, + 0x49, 0x6d, 0x27, 0xb6, 0x6d, 0x4a, 0x46, 0x51, 0xff, 0x6f, 0x13, 0xb3, 0x28, 0x71, 0x13, 0xab, 0x83, 0x43, 0x5a, + 0xfa, 0x5a, 0x91, 0xfe, 0xae, 0x31, 0x5c, 0x18, 0x86, 0xe1, 0x81, 0x20, 0x08, 0x02, 0x8a, 0xb8, 0x7d, 0x5f, 0xbb, + 0x98, 0x9c, 0x4b, 0xe0, 0x73, 0x5b, 0x7b, 0x52, 0x90, 0xfe, 0x58, 0xe8, 0xd3, 0xdc, 0xeb, 0xa4, 0x33, 0x7b, 0x11, + 0x01, 0x00, 0x00, 0x80, 0x54, 0x55, 0x55, 0xd5, 0xa9, 0x4c, 0xa9, 0x2a, 0xad, 0x08, 0x1e, 0x1b, 0xaf, 0xde, 0x06, + 0x08, 0x5c, 0x89, 0x05, 0x80, 0x11, 0x93, 0x58, 0x4d, 0xc5, 0x60, 0x9b, 0x60, 0x25, 0x49, 0x92, 0x24, 0xdb, 0xb6, + 0x6d, 0xdb, 0x48, 0x1a, 0x24, 0x49, 0xdc, 0x2e, 0x36, 0xaa, 0x4a, 0x62, 0x77, 0x70, 0x4b, 0x62, 0xc7, 0x57, 0x82, + 0x91, 0x51, 0xe7, 0x60, 0x54, 0x1f, 0x21, 0x01, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0x1f, 0x7f, 0x90, 0xfe, 0x9f, + 0x82, 0xef, 0x45, 0xa9, 0x04, 0x9d, 0x6d, 0x08, 0x07, 0x9d, 0xd2, 0x2c, 0x9f, 0xcd, 0x69, 0xc4, 0x68, 0xf2, 0x6f, + 0x65, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, + 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19}; unsigned int constants_4_len = 20800; diff --git a/icicle/appUtils/poseidon/constants/constants_8.h b/icicle/appUtils/poseidon/constants/constants_8.h index 239b2505..cc9daf2e 100644 --- a/icicle/appUtils/poseidon/constants/constants_8.h +++ b/icicle/appUtils/poseidon/constants/constants_8.h @@ -1,3363 +1,2125 @@ unsigned char constants_8[] = { - 0xf9, 0xc2, 0xf4, 0xf2, 0x54, 0x41, 0x98, 0x43, 0x94, 0xd4, 0x8c, 0xe4, - 0xe7, 0x4a, 0x2b, 0xc5, 0x4a, 0xd8, 0x6d, 0x77, 0xdb, 0xad, 0x3c, 0x8c, - 0xe0, 0x5f, 0x04, 0xc4, 0x12, 0x0d, 0xe9, 0x6c, 0x39, 0xec, 0xbc, 0x40, - 0x49, 0x50, 0x75, 0xa1, 0xf3, 0x58, 0x2e, 0xd3, 0x78, 0x63, 0xfa, 0xb4, - 0x80, 0x9d, 0xe8, 0xc8, 0x52, 0x5b, 0xa7, 0x25, 0x2b, 0x02, 0x84, 0x0c, - 0x48, 0x9b, 0xcd, 0x0c, 0x29, 0x36, 0x96, 0xfe, 0x6d, 0xb8, 0xa1, 0x6b, - 0x20, 0x8d, 0x16, 0xf7, 0xed, 0x87, 0x24, 0x06, 0x0e, 0x04, 0x56, 0x12, - 0xe5, 0x9a, 0xce, 0xc7, 0xb8, 0x7b, 0xab, 0x16, 0x10, 0xd1, 0x3a, 0x51, - 0x0a, 0x20, 0x79, 0x37, 0x8b, 0x6b, 0x82, 0x99, 0x3b, 0x75, 0xba, 0xac, - 0x8e, 0xd0, 0x73, 0x11, 0x15, 0xe7, 0x5d, 0x3a, 0x17, 0x14, 0x3d, 0xa2, - 0x09, 0x75, 0x0e, 0x9a, 0x64, 0xcb, 0xf7, 0x11, 0x29, 0x32, 0x0c, 0x75, - 0x43, 0x8a, 0xe0, 0xfa, 0x32, 0xd3, 0x48, 0x26, 0xb7, 0xbe, 0x86, 0xf1, - 0x9c, 0x7f, 0x24, 0x22, 0x06, 0x97, 0x2a, 0xa2, 0x89, 0xb0, 0x9a, 0xba, - 0x43, 0xf6, 0xcf, 0x0e, 0xe3, 0x55, 0x77, 0x76, 0xd7, 0xc2, 0x1a, 0x52, - 0x75, 0x5f, 0x07, 0x0f, 0xc6, 0x78, 0x68, 0xd5, 0xb5, 0xfc, 0xe9, 0xc0, - 0x4a, 0x0e, 0x30, 0xae, 0xe3, 0x0c, 0xeb, 0x22, 0x27, 0xf5, 0x25, 0x6b, - 0x49, 0x31, 0x20, 0xb9, 0x9e, 0x27, 0x86, 0x43, 0x32, 0x31, 0x5b, 0x05, - 0x26, 0x97, 0x2f, 0x49, 0xc1, 0x65, 0x66, 0x96, 0x73, 0x73, 0x92, 0xa2, - 0x23, 0xb9, 0x43, 0x5e, 0x68, 0x90, 0x00, 0x0a, 0x24, 0xdb, 0xc8, 0x59, - 0xdf, 0xac, 0x3a, 0x82, 0x71, 0x45, 0xfa, 0x97, 0x11, 0x78, 0xcd, 0x4f, - 0x84, 0xa5, 0x3f, 0x05, 0x7e, 0x50, 0x0c, 0xf1, 0x22, 0x8f, 0x2b, 0x91, - 0xe3, 0xe1, 0x5f, 0x01, 0x4b, 0x90, 0x32, 0x96, 0x30, 0xee, 0xe1, 0xf7, - 0x18, 0xd8, 0x10, 0x1c, 0x8f, 0xfb, 0xff, 0x62, 0xcc, 0x5b, 0x48, 0x09, - 0x04, 0x9c, 0x47, 0xe1, 0x5c, 0xe1, 0xa2, 0x51, 0x16, 0x74, 0x2a, 0x5f, - 0xc6, 0x8b, 0xf3, 0xb6, 0x47, 0x04, 0x2c, 0x8e, 0x9c, 0x9a, 0x62, 0x7d, - 0x2c, 0xd5, 0xd4, 0x5f, 0x42, 0xdf, 0x1f, 0x5c, 0xa1, 0xc3, 0x2b, 0x47, - 0x97, 0xdc, 0xf1, 0x70, 0xf1, 0xb7, 0x60, 0x3d, 0x08, 0x8d, 0x64, 0xa5, - 0x71, 0x89, 0xc4, 0x30, 0xea, 0x1f, 0x81, 0x7b, 0xe1, 0x43, 0xf9, 0x73, - 0xf4, 0x67, 0x9f, 0x49, 0xfd, 0x26, 0xc2, 0x10, 0xa5, 0x3d, 0xa9, 0xa7, - 0x8e, 0x0f, 0xd0, 0x22, 0xd3, 0x2a, 0x12, 0xb3, 0xfc, 0xc6, 0x3e, 0x7d, - 0x07, 0x1c, 0xc9, 0xce, 0xb4, 0xb2, 0x49, 0x16, 0x5a, 0xfd, 0x14, 0x52, - 0x5a, 0x51, 0x24, 0x8c, 0x06, 0x91, 0x97, 0xff, 0x96, 0x72, 0xde, 0x3c, - 0x06, 0x8f, 0xe3, 0x12, 0x8d, 0x5e, 0xcf, 0xd3, 0x7c, 0x74, 0x4e, 0xeb, - 0x64, 0x81, 0x93, 0xbe, 0x0d, 0xd0, 0x51, 0xeb, 0xdb, 0x4a, 0xb4, 0xf8, - 0x32, 0xc1, 0x37, 0x7d, 0xbb, 0x2e, 0xd8, 0x27, 0xe5, 0x5f, 0xe2, 0xfe, - 0xba, 0x7b, 0x83, 0x65, 0x47, 0xd7, 0xf7, 0x01, 0xb6, 0x2e, 0x9a, 0xb8, - 0xd6, 0x35, 0x23, 0x35, 0x7a, 0xd2, 0xa4, 0x2e, 0x0a, 0x0e, 0xc6, 0xe7, - 0xbe, 0xd8, 0x93, 0x72, 0x81, 0x89, 0xf1, 0xa6, 0x5c, 0xed, 0x16, 0x26, - 0x29, 0x1d, 0x78, 0xeb, 0xcd, 0x21, 0x5e, 0xd8, 0x67, 0x08, 0x1c, 0x56, - 0x87, 0xa1, 0xbe, 0x73, 0xe6, 0x94, 0xcc, 0xb6, 0x96, 0x6b, 0x97, 0x1b, - 0xba, 0x0a, 0xac, 0x73, 0x47, 0x6f, 0xf6, 0x02, 0x8a, 0x9f, 0x80, 0x6d, - 0x72, 0xac, 0xa1, 0xe5, 0xd9, 0x3b, 0xda, 0xcd, 0xcd, 0x08, 0xaf, 0xd4, - 0xcf, 0xed, 0x33, 0x6d, 0xab, 0x89, 0xdb, 0x36, 0xa5, 0xd1, 0x1a, 0x33, - 0x1e, 0x0a, 0x12, 0xef, 0x27, 0x69, 0x75, 0xbb, 0xff, 0x3d, 0x46, 0xa0, - 0x3e, 0xd8, 0xd1, 0x4a, 0xfb, 0xd7, 0x51, 0x22, 0x96, 0xe6, 0xea, 0x21, - 0x53, 0xf9, 0xb7, 0x12, 0x9e, 0x02, 0xa3, 0x50, 0x8f, 0x12, 0xe3, 0x6e, - 0x0d, 0xc4, 0x24, 0xf0, 0x0b, 0x2c, 0x53, 0x9b, 0x2f, 0x9b, 0x83, 0xb9, - 0xc4, 0x68, 0x06, 0x68, 0xc2, 0x03, 0xd1, 0xc6, 0x72, 0x7a, 0x42, 0x26, - 0x79, 0xa8, 0x86, 0x5d, 0x4b, 0xe4, 0x18, 0x36, 0x71, 0xbb, 0x63, 0xbd, - 0xd4, 0xaa, 0x56, 0xa5, 0xaf, 0xd6, 0x97, 0x71, 0xce, 0xbc, 0x23, 0x5b, - 0xf0, 0x73, 0xf4, 0x53, 0x42, 0xed, 0x67, 0x70, 0x31, 0x03, 0x9a, 0xf5, - 0x4f, 0x2c, 0x22, 0xcc, 0x06, 0x34, 0xed, 0xe3, 0x97, 0xb3, 0xcc, 0x77, - 0x11, 0x72, 0x43, 0xcc, 0x26, 0x56, 0xff, 0xd0, 0xd4, 0xba, 0x79, 0x16, - 0x1b, 0x8f, 0x1b, 0x2a, 0x4e, 0x85, 0xb2, 0xe0, 0x04, 0xdc, 0x41, 0x5e, - 0x37, 0xe5, 0x10, 0x6a, 0xd0, 0xa7, 0x96, 0x8b, 0x51, 0xff, 0x82, 0xac, - 0xc0, 0x91, 0xcb, 0x10, 0x9e, 0x81, 0xca, 0x47, 0xbf, 0x81, 0x95, 0x01, - 0xf2, 0xbd, 0x1c, 0x72, 0xf8, 0xbb, 0xd9, 0xd5, 0x28, 0x98, 0xb1, 0xe0, - 0x37, 0xc5, 0x5f, 0x6e, 0x8e, 0xc2, 0x56, 0xb8, 0xf1, 0x46, 0x4c, 0x1d, - 0xd9, 0x73, 0x1b, 0xf5, 0xba, 0x24, 0x81, 0x33, 0x37, 0x12, 0x49, 0x85, - 0x31, 0x3f, 0x6e, 0x60, 0xa5, 0x1b, 0xe3, 0x8b, 0x5d, 0x70, 0xda, 0x23, - 0x9a, 0x79, 0x03, 0x3a, 0xa4, 0xf1, 0xe0, 0xc1, 0xc6, 0x72, 0xef, 0x70, - 0xa4, 0x9c, 0xb1, 0x57, 0x8e, 0x32, 0x92, 0xb6, 0x55, 0x47, 0xbb, 0x3c, - 0xe2, 0x06, 0xe6, 0x59, 0xeb, 0x16, 0x87, 0xcc, 0x08, 0x19, 0xcc, 0xc4, - 0xa2, 0xec, 0x09, 0x86, 0xfa, 0x63, 0x28, 0xf9, 0x57, 0xf3, 0xed, 0x5a, - 0xd0, 0xdc, 0xfe, 0xb4, 0x06, 0xa4, 0xb9, 0x5b, 0x14, 0x3c, 0x82, 0x4f, - 0x48, 0xfe, 0x82, 0x9d, 0x77, 0x78, 0xa4, 0xe4, 0x16, 0xf3, 0xd9, 0x80, - 0xf1, 0x5f, 0xd1, 0x64, 0x66, 0xd1, 0xc8, 0x26, 0xc4, 0x07, 0xd8, 0xd1, - 0xfa, 0x2c, 0x6b, 0xa9, 0x08, 0x6f, 0x3a, 0xd0, 0x96, 0x9a, 0x90, 0x95, - 0x00, 0x97, 0xde, 0x4a, 0x49, 0xbb, 0xa2, 0x02, 0x2e, 0xaa, 0xd5, 0x75, - 0x8b, 0x71, 0x5b, 0x3e, 0x66, 0xd9, 0xae, 0x05, 0x36, 0x4b, 0x4b, 0x90, - 0x9b, 0xb9, 0x00, 0xe2, 0x66, 0x96, 0x7d, 0x9c, 0xcd, 0x3b, 0xcf, 0xe0, - 0x02, 0x51, 0x3b, 0x85, 0x3f, 0x81, 0xfa, 0xef, 0x8a, 0x30, 0x41, 0x14, - 0x35, 0x97, 0x5f, 0xdc, 0x3c, 0xb3, 0x14, 0x88, 0x07, 0x02, 0x45, 0x5c, - 0xcb, 0x76, 0xb7, 0xae, 0x88, 0xca, 0x4d, 0x1a, 0xee, 0x53, 0xd6, 0x18, - 0x26, 0x44, 0xe1, 0x9b, 0x1b, 0xd3, 0x5a, 0x12, 0xd6, 0x0e, 0xdc, 0xb4, - 0x0a, 0x29, 0xab, 0xb7, 0xbc, 0x64, 0x0c, 0x2c, 0x1e, 0x0b, 0x75, 0x2c, - 0x4a, 0x0d, 0xd6, 0x77, 0x6d, 0x6a, 0x2a, 0x14, 0xc7, 0xa8, 0xa5, 0xfe, - 0x01, 0x13, 0x24, 0x2e, 0x96, 0xdf, 0xef, 0xfa, 0x46, 0xfe, 0xc4, 0xb0, - 0x1b, 0xfb, 0x36, 0x8a, 0x5f, 0x28, 0x59, 0xce, 0x40, 0x72, 0xd7, 0x18, - 0x9f, 0xa0, 0x17, 0x2a, 0x21, 0x8a, 0x10, 0xde, 0x36, 0x03, 0xf8, 0x63, - 0x25, 0x23, 0xd3, 0xeb, 0xc0, 0xd0, 0xe3, 0xa6, 0x41, 0xb2, 0x88, 0xae, - 0x77, 0xe7, 0x2b, 0x64, 0x40, 0x72, 0x7b, 0x4b, 0x06, 0xfb, 0x66, 0xec, - 0xbb, 0x4e, 0x37, 0x82, 0x6a, 0x92, 0x58, 0x15, 0x74, 0x68, 0x38, 0x86, - 0xf6, 0x6f, 0xab, 0x71, 0x27, 0xd0, 0x5a, 0x0a, 0x4a, 0x48, 0xd7, 0x82, - 0x15, 0xdb, 0xf7, 0xc1, 0x0a, 0x61, 0x00, 0x20, 0x26, 0x93, 0x86, 0xdc, - 0xe3, 0xe4, 0xcd, 0x0c, 0xd4, 0xba, 0xa0, 0xc7, 0xac, 0xd2, 0x64, 0x68, - 0xb6, 0x67, 0x6e, 0x09, 0x35, 0xc5, 0x8d, 0x53, 0x12, 0x92, 0x94, 0x57, - 0xf6, 0x75, 0x9d, 0x6d, 0x8e, 0x40, 0x4a, 0x54, 0xb3, 0xf4, 0x51, 0x1d, - 0xb1, 0xc4, 0x86, 0xa4, 0x4d, 0x60, 0x89, 0x7d, 0x82, 0xca, 0x01, 0x45, - 0xf0, 0x81, 0xaf, 0xc5, 0x36, 0x15, 0x4c, 0xe2, 0x75, 0x39, 0x33, 0xc0, - 0xad, 0x30, 0xb3, 0x21, 0x63, 0xa8, 0x9c, 0x64, 0x7f, 0xbc, 0x1a, 0xb8, - 0x2c, 0xa5, 0x82, 0x31, 0x67, 0x62, 0xf5, 0xe8, 0x18, 0x92, 0x25, 0x33, - 0x19, 0xda, 0x2d, 0xc2, 0x1b, 0x62, 0x20, 0xa8, 0xca, 0x5b, 0xe1, 0x2a, - 0x40, 0xb0, 0x08, 0x1e, 0xec, 0x6c, 0xd4, 0x98, 0x4d, 0x13, 0x45, 0xd8, - 0x11, 0x7f, 0x75, 0xa6, 0xbd, 0xd1, 0x65, 0xbf, 0x8e, 0xf2, 0xbe, 0x3a, - 0x15, 0xfd, 0x44, 0xde, 0xde, 0xe9, 0xb7, 0x3c, 0x3d, 0x50, 0xed, 0x43, - 0xad, 0x2c, 0x55, 0x75, 0xff, 0x8c, 0xe2, 0xf5, 0x42, 0x44, 0x98, 0xa0, - 0x2a, 0x85, 0xfc, 0xcf, 0x39, 0xd2, 0xfe, 0x87, 0xe5, 0xf2, 0x65, 0x3d, - 0x95, 0x95, 0xd3, 0x37, 0x0f, 0x7d, 0xed, 0x2f, 0xe5, 0x48, 0xb3, 0xe2, - 0x4d, 0x39, 0xc5, 0x14, 0x7d, 0x6d, 0x42, 0xb6, 0x3a, 0x1e, 0xe5, 0x8b, - 0x58, 0x3a, 0x03, 0x33, 0xca, 0x5d, 0xe5, 0xa4, 0x3c, 0x40, 0xff, 0x25, - 0xf8, 0x20, 0xf6, 0x56, 0xb6, 0x8d, 0xcf, 0x5a, 0x7b, 0x8d, 0x38, 0x6e, - 0x24, 0xe9, 0x38, 0xed, 0x5b, 0xb4, 0x94, 0x84, 0x27, 0x3a, 0x54, 0x05, - 0x6a, 0x46, 0xdc, 0x91, 0x32, 0xe9, 0x90, 0xdc, 0x63, 0x04, 0xeb, 0x4d, - 0x66, 0x85, 0xd3, 0x3f, 0x26, 0xc8, 0x04, 0xeb, 0x08, 0xf8, 0x1d, 0xee, - 0x24, 0x3d, 0xb9, 0x1c, 0xf7, 0x21, 0x8f, 0xa3, 0xb8, 0x1d, 0xb0, 0x14, - 0x60, 0xf1, 0x56, 0xb1, 0x65, 0x1e, 0x4e, 0x6a, 0x8b, 0x33, 0x0c, 0x4b, - 0xc3, 0x49, 0xfd, 0x1a, 0xdd, 0x67, 0x94, 0xe2, 0x1a, 0x0b, 0x5d, 0x24, - 0x5f, 0xf7, 0x29, 0x90, 0xc7, 0x27, 0x4c, 0xf5, 0x6b, 0xff, 0xcf, 0x4e, - 0xcc, 0xa0, 0x09, 0x36, 0x45, 0xc2, 0x59, 0x24, 0xcd, 0x68, 0x08, 0x76, - 0x67, 0xa2, 0x51, 0x16, 0x48, 0xd9, 0x35, 0xd0, 0x4a, 0xd0, 0x5e, 0xd7, - 0x36, 0x77, 0x50, 0x16, 0xcb, 0x5d, 0xc1, 0x15, 0xbc, 0xe8, 0xa0, 0x3f, - 0xbc, 0xaf, 0x8f, 0x24, 0x01, 0x51, 0x4a, 0x32, 0xd3, 0xf2, 0xb8, 0x00, - 0x9f, 0x9f, 0x8b, 0x6d, 0xfa, 0x81, 0xf5, 0x46, 0xa8, 0xcd, 0xa1, 0x2c, - 0xbc, 0xb3, 0x66, 0xd6, 0x5f, 0x75, 0xd3, 0x33, 0x98, 0x04, 0x8b, 0xf9, - 0x4a, 0x97, 0x63, 0x04, 0xba, 0xc5, 0x85, 0xc4, 0xb5, 0xa5, 0xac, 0xe7, - 0x75, 0x05, 0x58, 0x53, 0xe1, 0x17, 0x47, 0xc5, 0xbe, 0x87, 0xc9, 0xff, - 0x94, 0x39, 0x0b, 0x35, 0x0a, 0x2e, 0xc1, 0xf5, 0xf4, 0xd6, 0x70, 0x89, - 0xf5, 0x42, 0x44, 0x4a, 0x99, 0xbd, 0x13, 0x0b, 0x7d, 0xae, 0x4e, 0x21, - 0x6d, 0x47, 0x81, 0x45, 0xc0, 0x50, 0x08, 0x98, 0xa7, 0xfa, 0xc9, 0x02, - 0x43, 0x6e, 0x79, 0xf0, 0x87, 0xb2, 0xa3, 0x44, 0xb3, 0x74, 0x1e, 0xe4, - 0xe2, 0xf5, 0x0c, 0xab, 0x11, 0x2d, 0xb4, 0x30, 0x6c, 0x4f, 0xaa, 0x87, - 0x20, 0x9f, 0x45, 0x05, 0x20, 0x30, 0x5e, 0x06, 0xdd, 0xc9, 0xdf, 0xc3, - 0x96, 0x59, 0xbb, 0xff, 0x8e, 0xb0, 0xed, 0x93, 0xe3, 0x12, 0xcf, 0x10, - 0xfc, 0xbd, 0xda, 0xf0, 0x43, 0x1e, 0xa2, 0x09, 0x91, 0xa9, 0x80, 0xcc, - 0x41, 0xb8, 0x1e, 0x3c, 0xb0, 0xf2, 0x00, 0xc1, 0x7c, 0xf6, 0xc9, 0x71, - 0xe7, 0xfb, 0x28, 0x1a, 0x96, 0xcd, 0xd2, 0x8d, 0x2e, 0x8a, 0x44, 0xbe, - 0xf6, 0x18, 0xab, 0x80, 0x1b, 0x4c, 0x9c, 0xdb, 0x45, 0x61, 0x23, 0x27, - 0x1f, 0x85, 0xc6, 0xf5, 0xdd, 0x66, 0xe6, 0x8d, 0xbb, 0xc0, 0xad, 0xab, - 0xf1, 0xcd, 0x23, 0x3f, 0xad, 0x45, 0x65, 0x8b, 0xea, 0xc7, 0x95, 0xc8, - 0x41, 0x01, 0x60, 0xae, 0x08, 0xf6, 0xe7, 0x6d, 0x61, 0xe6, 0x7f, 0xb1, - 0x15, 0x30, 0x63, 0xad, 0xb8, 0xbd, 0xce, 0x9a, 0x7b, 0x65, 0xb4, 0xbe, - 0x6f, 0xcd, 0x6f, 0x56, 0x0b, 0x40, 0x9b, 0xc1, 0x42, 0x74, 0x95, 0x6e, - 0xa6, 0x90, 0xda, 0x0c, 0x4c, 0xfb, 0x86, 0xde, 0x01, 0xad, 0x25, 0x35, - 0xe8, 0xaf, 0xdd, 0xda, 0xe0, 0xbe, 0x42, 0x4a, 0x64, 0xb6, 0x38, 0x77, - 0x5c, 0xac, 0xaf, 0x27, 0xd3, 0x83, 0xb4, 0x4b, 0x0f, 0xa5, 0xd4, 0x39, - 0x7e, 0xeb, 0x85, 0x89, 0xd8, 0x44, 0x4c, 0x38, 0x7a, 0x02, 0x68, 0x25, - 0x1d, 0x57, 0x92, 0x23, 0xf8, 0xbe, 0x28, 0x57, 0x48, 0x63, 0xd6, 0xc9, - 0x0e, 0xe3, 0x6b, 0xf9, 0x1b, 0x0f, 0x36, 0x5b, 0x35, 0x1b, 0x08, 0xa9, - 0x33, 0xe5, 0x98, 0x2c, 0x0a, 0x60, 0x91, 0xcf, 0xd3, 0x9e, 0x4a, 0x00, - 0x51, 0x4b, 0x8e, 0x24, 0x2a, 0x9d, 0x99, 0x60, 0x91, 0x51, 0x7d, 0x9f, - 0x19, 0x24, 0xf5, 0x43, 0xc2, 0x2c, 0x0f, 0xb4, 0xbe, 0x38, 0x4a, 0xbb, - 0x01, 0xa8, 0xd5, 0xc9, 0x61, 0x94, 0x93, 0x6d, 0x5b, 0xe1, 0x5d, 0x2d, - 0x63, 0x3a, 0xb2, 0x67, 0x7b, 0xc8, 0x17, 0x36, 0x74, 0x23, 0x49, 0x15, - 0x86, 0x5b, 0x82, 0xeb, 0x17, 0xf1, 0x28, 0xf1, 0x1c, 0x97, 0x3e, 0x31, - 0x2c, 0xc0, 0x6b, 0x1f, 0x50, 0xa2, 0xb2, 0x4a, 0xbb, 0x13, 0x28, 0x35, - 0x54, 0x67, 0xdb, 0x28, 0x58, 0x9d, 0xbc, 0x1a, 0xd0, 0xd7, 0x37, 0xe0, - 0x74, 0x00, 0x62, 0x66, 0x30, 0xd5, 0xe3, 0x0e, 0xae, 0x03, 0x49, 0x25, - 0x33, 0x7e, 0xbd, 0x70, 0x93, 0x4f, 0xc3, 0x33, 0x7d, 0xe0, 0x15, 0x9e, - 0x34, 0x77, 0x0a, 0x16, 0x7b, 0xc6, 0xc9, 0x3c, 0xa3, 0x22, 0x59, 0x97, - 0xde, 0x36, 0x7b, 0xd7, 0xc3, 0x29, 0x40, 0x45, 0x79, 0x8b, 0x08, 0x80, - 0x8f, 0xef, 0xad, 0x47, 0x74, 0xda, 0xe0, 0xab, 0x55, 0x3a, 0x26, 0x14, - 0xdb, 0x5d, 0x65, 0x79, 0x73, 0x79, 0xb3, 0x5e, 0x15, 0xdb, 0xa4, 0x1c, - 0x39, 0xd5, 0x75, 0x9b, 0xb8, 0x04, 0xc9, 0x3f, 0x07, 0xdb, 0xa5, 0x1b, - 0xd9, 0x6b, 0x53, 0x02, 0xdc, 0x5c, 0xff, 0x27, 0xda, 0x33, 0xdf, 0x88, - 0xc4, 0x4f, 0x70, 0x6b, 0x02, 0x68, 0xbb, 0xa8, 0xca, 0xbb, 0x01, 0x2f, - 0xc8, 0xd0, 0x46, 0x61, 0x28, 0x82, 0x9e, 0x99, 0x87, 0x97, 0x46, 0xb7, - 0xb7, 0xf0, 0x84, 0x1a, 0x34, 0xdc, 0x40, 0xf2, 0xf3, 0x9a, 0xe1, 0x48, - 0x85, 0x89, 0x2d, 0xbb, 0x45, 0x9b, 0xa2, 0xd0, 0xd0, 0x5b, 0x16, 0x06, - 0x8c, 0xbd, 0xce, 0x9e, 0xc1, 0xb0, 0x1a, 0x00, 0xeb, 0x9f, 0xd1, 0x49, - 0x1a, 0xef, 0x9c, 0x82, 0x91, 0xa0, 0x32, 0x3c, 0x93, 0x8a, 0x35, 0xd4, - 0x45, 0xe5, 0xc4, 0xdf, 0xb8, 0xd1, 0x0f, 0x44, 0x3d, 0x73, 0xda, 0x31, - 0x91, 0x62, 0x71, 0x91, 0x53, 0x40, 0xff, 0x6f, 0x67, 0x5d, 0xf7, 0x2c, - 0x5b, 0x05, 0x3f, 0xe6, 0xb1, 0xc1, 0x1c, 0x28, 0x48, 0xca, 0xf7, 0xe0, - 0x15, 0xc3, 0x47, 0x1a, 0xe1, 0x84, 0x2a, 0x43, 0x51, 0x5c, 0x37, 0x52, - 0x76, 0x86, 0x85, 0x25, 0xaf, 0x94, 0x02, 0x6b, 0x85, 0x05, 0xd9, 0xd8, - 0xc3, 0x9f, 0xe0, 0x21, 0xf8, 0xdf, 0xea, 0x14, 0x79, 0x8e, 0x3c, 0x6f, - 0x43, 0x9e, 0xe8, 0xcf, 0x70, 0x18, 0x8b, 0x78, 0x3a, 0x6e, 0x20, 0x57, - 0x03, 0xa3, 0x6b, 0x3b, 0xae, 0xbc, 0x75, 0x94, 0xef, 0xb3, 0x31, 0x58, - 0x35, 0x44, 0xa9, 0x51, 0x91, 0x09, 0x63, 0x98, 0xe5, 0x57, 0x3c, 0xd2, - 0x42, 0xa4, 0x74, 0x1a, 0xa1, 0x55, 0xfd, 0x6f, 0xd7, 0xac, 0x87, 0xc4, - 0x0c, 0xc1, 0xc7, 0xfb, 0x5a, 0x39, 0x11, 0xa9, 0x34, 0x16, 0x16, 0x5a, - 0x25, 0x97, 0x22, 0x4a, 0x53, 0x69, 0xad, 0xd5, 0x8e, 0x20, 0x2e, 0xf1, - 0x71, 0x31, 0x76, 0x60, 0x95, 0xd6, 0xfc, 0x33, 0xd8, 0xb5, 0xac, 0x00, - 0x6c, 0x3e, 0xf9, 0x21, 0xfb, 0xd3, 0xa0, 0x68, 0x4a, 0x05, 0x12, 0xd8, - 0xbb, 0x81, 0x5c, 0x84, 0xe8, 0x58, 0x33, 0xce, 0xa5, 0x47, 0x44, 0x32, - 0x14, 0x23, 0x78, 0xe9, 0x61, 0x2f, 0x03, 0x95, 0xb5, 0x5c, 0x2a, 0xc9, - 0x4c, 0x3a, 0x5a, 0x8d, 0x40, 0xcf, 0xe3, 0xd8, 0x5d, 0x0e, 0x2b, 0xa5, - 0x4d, 0x75, 0xe1, 0xd8, 0x9d, 0x3f, 0x2b, 0x3e, 0xd9, 0xfc, 0x6c, 0xb7, - 0x2d, 0x5e, 0xa4, 0x25, 0xe5, 0x80, 0x41, 0xfc, 0xa2, 0x02, 0x0e, 0x2b, - 0xbe, 0x5c, 0x6a, 0xeb, 0x0c, 0x10, 0x84, 0xc2, 0x9d, 0x32, 0x46, 0xfa, - 0x33, 0xb5, 0xb4, 0x50, 0x0d, 0x74, 0x90, 0x94, 0x5e, 0x83, 0x01, 0x59, - 0x28, 0xad, 0x1e, 0xba, 0x3b, 0x71, 0xb7, 0x43, 0x61, 0x86, 0x0b, 0xc7, - 0xa3, 0x3a, 0xa2, 0x60, 0x64, 0x6c, 0x65, 0xdd, 0x38, 0x13, 0x29, 0x29, - 0x77, 0x67, 0x2f, 0x86, 0x66, 0x3b, 0x19, 0xa0, 0x08, 0x1a, 0x56, 0xa4, - 0x02, 0xda, 0x94, 0x7e, 0xc5, 0x84, 0x66, 0xe0, 0x9e, 0x4d, 0xbf, 0x9c, - 0x70, 0x07, 0x3f, 0x8a, 0xf7, 0x13, 0xd4, 0x2c, 0x62, 0x03, 0x65, 0x3c, - 0xf2, 0x2c, 0x7a, 0x5a, 0xc3, 0x94, 0x40, 0x36, 0x48, 0xe8, 0xb0, 0xe0, - 0x52, 0xff, 0xb4, 0x1b, 0x97, 0xec, 0xf9, 0xc6, 0xfb, 0x01, 0x75, 0x18, - 0xd5, 0x11, 0x15, 0x13, 0x44, 0x49, 0x32, 0x1d, 0xbb, 0x63, 0x44, 0x15, - 0x66, 0x69, 0x65, 0x05, 0x21, 0x13, 0x17, 0x67, 0xe0, 0x67, 0xb7, 0xc0, - 0x47, 0x80, 0x9a, 0x41, 0x49, 0xad, 0x29, 0xa8, 0xa7, 0x23, 0x66, 0x34, - 0xb9, 0x7d, 0xec, 0xf5, 0xec, 0xda, 0xa3, 0xe8, 0x6e, 0xf2, 0xb7, 0x7f, - 0xb9, 0xa8, 0xdb, 0x40, 0x9d, 0x13, 0xe8, 0x63, 0xa9, 0xdd, 0x72, 0xa6, - 0x9c, 0xe8, 0x55, 0xbc, 0x22, 0xcf, 0x95, 0x35, 0xc3, 0x49, 0xf3, 0x8c, - 0x00, 0x3d, 0xfa, 0x3d, 0xc3, 0xbf, 0x5e, 0x4b, 0xe3, 0x7d, 0x13, 0x7d, - 0xd4, 0x89, 0x97, 0xcd, 0x60, 0x8f, 0xde, 0xcd, 0xa2, 0x9d, 0x88, 0xe6, - 0xbc, 0x0a, 0x33, 0x0c, 0x4b, 0xb9, 0xaf, 0x84, 0xb0, 0x17, 0xcf, 0x4f, - 0x68, 0x0a, 0x7b, 0x97, 0xc1, 0x84, 0xeb, 0x61, 0xcd, 0xcb, 0xde, 0x08, - 0x04, 0xf4, 0x9a, 0xa8, 0x12, 0x25, 0xc0, 0x80, 0x6b, 0xd5, 0x2a, 0x1e, - 0x3e, 0xa6, 0x28, 0xd7, 0x18, 0x20, 0x2b, 0xd3, 0x33, 0x86, 0xf5, 0x7d, - 0x16, 0x84, 0x41, 0x9c, 0x2d, 0xb2, 0x5d, 0xc6, 0xcf, 0x17, 0x4f, 0x12, - 0xd2, 0xdf, 0xd3, 0xbf, 0xff, 0x92, 0xbb, 0x19, 0x79, 0xa0, 0x58, 0xe1, - 0x0c, 0x34, 0x66, 0x4a, 0xd6, 0x84, 0x3f, 0xb8, 0x9d, 0x6c, 0xad, 0x7c, - 0xaa, 0x31, 0x58, 0xac, 0x19, 0xbb, 0xb8, 0x90, 0xb4, 0x5c, 0xf4, 0x8d, - 0xab, 0x0c, 0xfd, 0x28, 0x55, 0xb8, 0x08, 0x31, 0x31, 0x9f, 0xb8, 0xb3, - 0xc7, 0x3e, 0x4b, 0x52, 0x48, 0x79, 0x13, 0x51, 0xf3, 0x56, 0x8b, 0xd3, - 0xc6, 0x97, 0x04, 0x36, 0x70, 0x15, 0xde, 0xfa, 0x81, 0xa0, 0x40, 0x44, - 0xa4, 0x90, 0x48, 0x52, 0xd5, 0x70, 0x8e, 0xfa, 0x37, 0x15, 0xb0, 0xe3, - 0xbb, 0xb5, 0x4c, 0x12, 0x09, 0xe2, 0x7b, 0x5d, 0x0f, 0x40, 0x55, 0xc0, - 0x16, 0xe2, 0x50, 0x79, 0x0b, 0xe0, 0x02, 0x17, 0xe6, 0x63, 0x2e, 0x61, - 0xaf, 0x31, 0xc5, 0x66, 0x13, 0x41, 0x6d, 0x90, 0x1a, 0x4c, 0x2e, 0xad, - 0xda, 0xc2, 0xef, 0x61, 0x40, 0xba, 0x3a, 0xee, 0xe3, 0x5c, 0xde, 0x11, - 0x9e, 0x75, 0x4f, 0x32, 0x14, 0xbb, 0xdf, 0x15, 0x7c, 0x97, 0x22, 0x05, - 0xca, 0xd6, 0x59, 0xc0, 0x8a, 0x60, 0x93, 0xb8, 0xb2, 0x28, 0x50, 0xe5, - 0x24, 0x72, 0x5c, 0x60, 0x3e, 0x42, 0x2b, 0xc3, 0x78, 0x90, 0xc7, 0x01, - 0xd0, 0xfe, 0x84, 0x48, 0xbb, 0x73, 0x5a, 0x23, 0x29, 0x79, 0x4e, 0x5a, - 0xd8, 0xd5, 0x19, 0x90, 0xfd, 0xe8, 0x41, 0xd2, 0xbc, 0x7b, 0x20, 0x60, - 0xa6, 0x82, 0xcb, 0x82, 0xf9, 0xc9, 0xe9, 0x61, 0x96, 0x3c, 0xf0, 0xb8, - 0x74, 0x63, 0x2d, 0x4e, 0xff, 0x86, 0x16, 0x8b, 0x87, 0x1e, 0x98, 0x81, - 0xd8, 0x28, 0xdd, 0x38, 0x78, 0x56, 0x3f, 0xd0, 0xce, 0xf6, 0xdd, 0xf7, - 0x70, 0xc5, 0x9c, 0x39, 0x82, 0x1e, 0xaf, 0xd9, 0x1b, 0xf5, 0x8e, 0x1e, - 0x3b, 0xc4, 0x14, 0x38, 0x78, 0x51, 0x36, 0xc1, 0x12, 0x9f, 0xf1, 0x0a, - 0x61, 0xa4, 0x06, 0x53, 0x3c, 0xef, 0x38, 0x66, 0x11, 0x1a, 0xb1, 0x66, - 0x78, 0xaf, 0xcf, 0x1e, 0xc1, 0x95, 0xcc, 0xc1, 0xfc, 0x4e, 0xe7, 0x5f, - 0xdc, 0xd7, 0xc9, 0x30, 0x68, 0x19, 0x75, 0x97, 0xe2, 0xf9, 0x9b, 0x93, - 0x39, 0x70, 0xbf, 0x9f, 0x5b, 0xd6, 0x2b, 0x38, 0x34, 0x12, 0x59, 0xdf, - 0x06, 0xbc, 0x4d, 0x1b, 0x8c, 0x0c, 0x11, 0xdd, 0xa4, 0xed, 0x15, 0xe5, - 0x94, 0xf6, 0xa9, 0x66, 0x96, 0xce, 0xe1, 0xf3, 0x70, 0x33, 0xfa, 0xd9, - 0xa5, 0x58, 0xa6, 0x3e, 0x0c, 0x99, 0xac, 0xd9, 0x97, 0x00, 0x26, 0x96, - 0x74, 0xe0, 0xc9, 0x06, 0x14, 0xf5, 0x3a, 0xe0, 0x6f, 0xd4, 0xa6, 0xf2, - 0x92, 0x91, 0xfa, 0x62, 0x49, 0xbc, 0x5c, 0x8a, 0xc2, 0xd9, 0x0d, 0x21, - 0xa5, 0x11, 0x99, 0x0e, 0x4a, 0x18, 0x41, 0x9d, 0xcb, 0x31, 0x38, 0xa0, - 0x01, 0x64, 0x66, 0x47, 0x69, 0xca, 0x1f, 0x3d, 0xc9, 0x75, 0x10, 0x32, - 0xb6, 0x1e, 0xc6, 0xed, 0x74, 0x56, 0x9a, 0x18, 0x45, 0xd0, 0xe9, 0xa2, - 0xa9, 0xa3, 0x00, 0x17, 0x8d, 0x4a, 0xf7, 0x59, 0x6d, 0x73, 0x3d, 0x73, - 0x07, 0x9f, 0xe4, 0x93, 0x6b, 0x9f, 0x90, 0xb9, 0x0c, 0x2c, 0x95, 0x09, - 0xfc, 0xf7, 0x7e, 0x25, 0x0a, 0x31, 0xb8, 0x1b, 0x17, 0x35, 0x46, 0x50, - 0x8b, 0xca, 0xe0, 0x45, 0x39, 0x5f, 0x89, 0x65, 0x42, 0x17, 0xea, 0xf4, - 0x2b, 0x74, 0xd4, 0x66, 0xd1, 0xf4, 0xd5, 0x56, 0x7f, 0x83, 0x22, 0x2a, - 0x2d, 0x0a, 0xcc, 0xe0, 0xbc, 0x98, 0x93, 0xad, 0x44, 0xf0, 0xb2, 0x96, - 0x1f, 0x1c, 0x21, 0x01, 0xdc, 0xdd, 0xed, 0x3f, 0x9e, 0x43, 0xcb, 0xa0, - 0x5f, 0x3f, 0x51, 0xcf, 0x64, 0x65, 0x31, 0x20, 0x50, 0x33, 0x8a, 0x1f, - 0xe7, 0x7f, 0xcf, 0x35, 0x6d, 0x24, 0xad, 0x3e, 0x6e, 0x7c, 0xc3, 0xa6, - 0xf6, 0x10, 0x19, 0x59, 0x04, 0x93, 0x63, 0x2b, 0x83, 0xa6, 0xb5, 0xe8, - 0xca, 0xd9, 0x62, 0x06, 0xc6, 0x51, 0x58, 0x43, 0xdc, 0x26, 0xa2, 0xa7, - 0xb4, 0x65, 0xa4, 0xeb, 0xef, 0x18, 0x87, 0x9d, 0x12, 0xb7, 0x3f, 0x64, - 0x1f, 0x56, 0x0c, 0xd6, 0x5e, 0xa6, 0x7d, 0x40, 0xb8, 0xa8, 0x1e, 0x6c, - 0x8f, 0xca, 0xbb, 0x86, 0x3d, 0x8b, 0x38, 0xa7, 0x2a, 0x28, 0x6f, 0x16, - 0x45, 0x38, 0xf2, 0xa6, 0x31, 0x84, 0xa6, 0x09, 0x15, 0xbf, 0xb8, 0x35, - 0x03, 0x33, 0x6f, 0x92, 0x19, 0x75, 0x2c, 0x18, 0x63, 0x75, 0xe1, 0xbd, - 0xbe, 0x88, 0x3c, 0x07, 0x8d, 0xdd, 0x59, 0x9e, 0x99, 0xa8, 0xa1, 0x6c, - 0x43, 0xdb, 0x68, 0xe1, 0xb7, 0x63, 0xfe, 0xc2, 0xa2, 0x93, 0x67, 0x1c, - 0x00, 0x35, 0x03, 0x39, 0x8c, 0x65, 0xa6, 0xe9, 0x45, 0x4c, 0x42, 0x72, - 0x1d, 0x6e, 0x46, 0x5e, 0x9a, 0xe5, 0x13, 0x16, 0x25, 0xa9, 0xe8, 0xf0, - 0xec, 0x14, 0x3e, 0xc6, 0xc0, 0xb4, 0x30, 0x63, 0xd5, 0xe5, 0x4a, 0x64, - 0x17, 0xfa, 0x0f, 0xe0, 0x67, 0x76, 0x5a, 0xcb, 0xd5, 0x15, 0xed, 0xcb, - 0x17, 0xf4, 0xf1, 0x05, 0x0b, 0x5c, 0x76, 0x86, 0x55, 0x8d, 0x18, 0xdf, - 0xd3, 0x1e, 0x8c, 0x2e, 0x34, 0xb0, 0x6c, 0x01, 0x30, 0x91, 0x93, 0xa8, - 0xfd, 0x56, 0x6d, 0x4e, 0xf1, 0x78, 0x37, 0xb2, 0x7d, 0xed, 0x96, 0x51, - 0xe8, 0x73, 0xdd, 0xbe, 0x48, 0x29, 0x24, 0xc1, 0xda, 0xb5, 0x13, 0xd6, - 0x28, 0x0f, 0x4f, 0x34, 0x2d, 0xb9, 0x13, 0x84, 0x39, 0x20, 0x15, 0x35, - 0x56, 0x96, 0x4c, 0x82, 0x9b, 0xd0, 0xe5, 0x00, 0x9a, 0x4e, 0x1e, 0xbb, - 0xd8, 0xf5, 0xd3, 0x58, 0x0d, 0xea, 0x4a, 0x31, 0x16, 0x41, 0xe3, 0x50, - 0x45, 0x36, 0xf0, 0x39, 0x45, 0xfb, 0xa4, 0x5f, 0x23, 0x67, 0x59, 0x02, - 0x0b, 0xfa, 0xa0, 0x3c, 0xc1, 0xde, 0x2d, 0xef, 0x9e, 0x1c, 0xf8, 0x69, - 0xe8, 0xb8, 0xd9, 0x53, 0x2c, 0x43, 0x30, 0x2b, 0xc6, 0x75, 0x11, 0x76, - 0x2f, 0xd8, 0xa2, 0xfb, 0x18, 0xbd, 0xb1, 0xa8, 0x60, 0x0d, 0xdf, 0xdb, - 0xf7, 0xd8, 0x39, 0x93, 0xd8, 0x63, 0x43, 0x95, 0x28, 0x28, 0xde, 0x97, - 0x50, 0x86, 0x2e, 0x32, 0x7a, 0x79, 0xa8, 0xd6, 0x29, 0x50, 0xa9, 0xf8, - 0x29, 0xdf, 0x5b, 0x81, 0x69, 0xea, 0xdd, 0x4b, 0xec, 0xb0, 0xac, 0x5d, - 0x0d, 0xd0, 0x0a, 0xc3, 0xa5, 0x5d, 0x84, 0xac, 0x3a, 0xc6, 0x67, 0x10, - 0x22, 0x02, 0x8f, 0x16, 0xf4, 0x1d, 0x17, 0xb1, 0xf5, 0xe4, 0x53, 0xc0, - 0x41, 0xb2, 0xee, 0x8d, 0xa5, 0xff, 0xc2, 0xf2, 0xd5, 0x52, 0x77, 0xbb, - 0xd2, 0x91, 0xbd, 0x43, 0xa3, 0x65, 0x6b, 0x48, 0x17, 0xbb, 0x74, 0x61, - 0x7b, 0xc2, 0x1f, 0x23, 0xa3, 0xb5, 0xda, 0xd1, 0x63, 0xd8, 0xb8, 0x05, - 0xcc, 0x6f, 0x85, 0x2e, 0x15, 0xdc, 0xcd, 0x5a, 0x3b, 0xc0, 0xa2, 0xd4, - 0x38, 0xc3, 0xb3, 0x06, 0x4d, 0x81, 0x89, 0xaa, 0x6a, 0x4f, 0x43, 0x0b, - 0x72, 0xd8, 0x3a, 0x9c, 0x20, 0xe4, 0x68, 0xb8, 0x3d, 0x86, 0x39, 0xbe, - 0x2a, 0x21, 0x42, 0x9d, 0xcb, 0x15, 0xd6, 0xba, 0x40, 0x04, 0x31, 0x6b, - 0x38, 0x35, 0x31, 0x36, 0xdd, 0x24, 0x64, 0xd1, 0xa8, 0xad, 0x68, 0x2c, - 0x84, 0x92, 0x8b, 0x14, 0xde, 0x26, 0x26, 0xf7, 0xe8, 0xb2, 0x89, 0x4e, - 0x5f, 0x72, 0xad, 0xd0, 0xb8, 0x0a, 0x6d, 0x6b, 0x05, 0x43, 0x6a, 0xb3, - 0x4d, 0xdb, 0x43, 0xf6, 0x0e, 0xb9, 0xf9, 0x63, 0x45, 0xb7, 0x3a, 0xd6, - 0x27, 0x14, 0xaa, 0xd9, 0x96, 0x72, 0x6b, 0x8f, 0xcd, 0x80, 0xcf, 0xac, - 0x02, 0x7c, 0xb2, 0x52, 0x07, 0x80, 0x34, 0xcf, 0xd2, 0xea, 0xda, 0x69, - 0xf8, 0xde, 0x50, 0xaa, 0xdb, 0x74, 0x61, 0xa1, 0xa2, 0x2f, 0x1c, 0xae, - 0x6f, 0x0e, 0xe8, 0x74, 0x04, 0x6d, 0x04, 0x26, 0xa9, 0x42, 0x1c, 0x72, - 0x7b, 0xbe, 0x13, 0x8a, 0x54, 0x78, 0xe2, 0x46, 0x2d, 0x84, 0xa3, 0x1e, - 0xd5, 0x6a, 0xf5, 0x50, 0x49, 0xdb, 0xbc, 0xe6, 0xed, 0xc3, 0xd7, 0x51, - 0xf6, 0xa3, 0xdf, 0x16, 0x29, 0x4f, 0x11, 0x26, 0x1c, 0xa0, 0x5d, 0x75, - 0xee, 0xe5, 0x9d, 0xf4, 0x1e, 0x67, 0x31, 0x50, 0x78, 0xd1, 0x8a, 0xf9, - 0x58, 0xb5, 0xa2, 0x2e, 0x9c, 0xe9, 0x79, 0x2c, 0xae, 0xee, 0xbe, 0xbc, - 0x2e, 0xee, 0x3b, 0x64, 0x5e, 0xe5, 0xd0, 0x03, 0x8c, 0x22, 0x13, 0xec, - 0x70, 0x8a, 0xb6, 0x38, 0x7f, 0x8e, 0x05, 0x8a, 0x88, 0x82, 0xbb, 0xa9, - 0x18, 0xfe, 0xab, 0x2b, 0x49, 0xc8, 0x50, 0x42, 0x93, 0x89, 0xe6, 0x01, - 0xcb, 0xda, 0x12, 0xd0, 0xc0, 0x4f, 0x58, 0x42, 0x6e, 0xbf, 0x39, 0x58, - 0x50, 0x25, 0x17, 0xbd, 0x97, 0x0c, 0xf3, 0x93, 0x3a, 0x0a, 0x5b, 0x1d, - 0x30, 0x2d, 0x2f, 0x90, 0x64, 0x0d, 0xf8, 0x50, 0x67, 0x74, 0x23, 0x9a, - 0x4e, 0x59, 0xdd, 0xd9, 0x44, 0x6c, 0x32, 0x47, 0x64, 0x1c, 0x83, 0xa3, - 0xfe, 0x0e, 0x8e, 0xf5, 0xec, 0x10, 0xb3, 0xf8, 0xf6, 0x50, 0x84, 0xee, - 0xd9, 0xe7, 0xa0, 0x5c, 0x5f, 0xd1, 0xb0, 0x2e, 0xf1, 0x27, 0x64, 0xab, - 0x19, 0x6e, 0x23, 0x79, 0xa4, 0x95, 0xea, 0x90, 0xf1, 0x3d, 0x3b, 0x90, - 0xd5, 0xbc, 0x72, 0x2f, 0x08, 0xb6, 0x4f, 0x1a, 0x31, 0xdc, 0x03, 0x35, - 0x04, 0x2e, 0xaa, 0x1d, 0x61, 0x04, 0x16, 0x3e, 0x54, 0x71, 0x34, 0xea, - 0xa6, 0xf0, 0xef, 0x63, 0x00, 0x1f, 0x78, 0x8b, 0xd3, 0x58, 0x8d, 0xdf, - 0x8a, 0x40, 0x17, 0x68, 0x1d, 0x06, 0x2f, 0x64, 0xd8, 0x05, 0x83, 0x3e, - 0x84, 0xcf, 0xdb, 0xf4, 0x92, 0x7a, 0xdd, 0x0f, 0xd2, 0xd1, 0x0e, 0xc5, - 0x26, 0x02, 0xcf, 0xe9, 0x20, 0xc4, 0xe3, 0x8f, 0x35, 0xa3, 0x29, 0xa1, - 0xe9, 0xfe, 0x8b, 0x28, 0x29, 0x93, 0x94, 0x14, 0x5c, 0xb5, 0xf6, 0x4a, - 0xc8, 0x47, 0xab, 0x29, 0x7c, 0x02, 0x3d, 0x5f, 0x90, 0xa2, 0x9f, 0xbe, - 0x18, 0xd9, 0xdb, 0xd6, 0x03, 0x76, 0x38, 0xb8, 0x11, 0xe7, 0x4e, 0x48, - 0x89, 0xf6, 0x38, 0x13, 0x90, 0xe6, 0x86, 0xa0, 0xfa, 0x61, 0xa2, 0xa8, - 0xc6, 0x0f, 0x41, 0x13, 0x9d, 0x1a, 0x31, 0x97, 0x30, 0x63, 0xd5, 0xf0, - 0x6a, 0x03, 0x4a, 0xca, 0xed, 0xe7, 0x7e, 0x4a, 0xe9, 0xc0, 0xf6, 0x61, - 0xab, 0x89, 0x8c, 0xb6, 0x9b, 0x6b, 0xc9, 0x58, 0xfb, 0xca, 0x06, 0xaf, - 0xa4, 0xd4, 0x31, 0xe7, 0xbc, 0xb0, 0xa3, 0x78, 0x51, 0x0f, 0xad, 0x52, - 0x8e, 0x2e, 0x03, 0x27, 0xf0, 0xec, 0x02, 0xb4, 0x0c, 0xa9, 0x9a, 0x35, - 0x60, 0xdf, 0x2a, 0x04, 0x91, 0x9d, 0x21, 0xf0, 0x73, 0x58, 0xfa, 0xb6, - 0x97, 0xa8, 0x67, 0xd8, 0xfa, 0x03, 0x37, 0x6e, 0xec, 0x27, 0x23, 0x3e, - 0x63, 0x59, 0xf6, 0xc6, 0xd7, 0xe8, 0xa6, 0xf1, 0x49, 0x39, 0x6b, 0x83, - 0xe2, 0x2a, 0xbe, 0x81, 0xd1, 0x55, 0x6e, 0x80, 0xcd, 0x71, 0x8f, 0x26, - 0x21, 0x03, 0x2a, 0x0f, 0x5c, 0x11, 0x47, 0x51, 0x33, 0x91, 0x04, 0xba, - 0xf5, 0xd4, 0x5c, 0x68, 0xde, 0x95, 0xa0, 0xca, 0xc2, 0xb1, 0x78, 0xcb, - 0x8e, 0x34, 0x80, 0xe5, 0x4c, 0xb4, 0x6d, 0x82, 0x21, 0x42, 0xf0, 0x16, - 0xe8, 0xb2, 0x3c, 0x4f, 0xcc, 0xa3, 0x81, 0x04, 0xa3, 0x89, 0x18, 0x2d, - 0xb2, 0xfa, 0x7e, 0x07, 0x07, 0x08, 0x51, 0x06, 0xc2, 0xcf, 0xd7, 0x34, - 0x66, 0x8a, 0x77, 0x17, 0x5f, 0xdc, 0xed, 0x81, 0xfc, 0x9e, 0x58, 0x37, - 0x3d, 0xa1, 0x15, 0xef, 0x32, 0x50, 0x89, 0x8c, 0xc6, 0x68, 0x4e, 0x73, - 0xf0, 0x96, 0xff, 0x50, 0x55, 0x10, 0x7f, 0x91, 0x85, 0xec, 0xfe, 0x40, - 0x8a, 0x40, 0x32, 0x8d, 0x13, 0x06, 0xb9, 0x28, 0xe5, 0xd1, 0x5b, 0xab, - 0x64, 0xd5, 0xa3, 0x4c, 0xde, 0xd9, 0xf3, 0x6d, 0x02, 0xa0, 0xab, 0x7c, - 0x34, 0xb2, 0x4d, 0x48, 0xb7, 0x1d, 0xbf, 0x00, 0x62, 0x69, 0xe6, 0x6b, - 0x8d, 0xe8, 0x97, 0x52, 0x3d, 0x1b, 0x92, 0x95, 0x66, 0x08, 0x6d, 0x85, - 0xfd, 0xbd, 0x34, 0xe2, 0x93, 0x29, 0xe1, 0x53, 0x3b, 0x27, 0x71, 0x4e, - 0x2f, 0x34, 0x9b, 0x80, 0x14, 0x65, 0x3d, 0x5e, 0xbe, 0x77, 0x11, 0x29, - 0xb2, 0x61, 0x9a, 0xfc, 0xfa, 0x8e, 0x61, 0x65, 0x0e, 0x5f, 0xa5, 0x42, - 0xee, 0xff, 0x34, 0xe0, 0x85, 0x50, 0x1f, 0xae, 0xcb, 0x7e, 0x09, 0x82, - 0xc4, 0x8a, 0x12, 0xcb, 0x3f, 0xff, 0x30, 0x69, 0x9f, 0xcd, 0x6b, 0x8e, - 0xbd, 0x37, 0x1f, 0x55, 0x94, 0xc4, 0xc6, 0xb2, 0x2f, 0x33, 0x20, 0x8c, - 0xbf, 0xcd, 0x26, 0x58, 0xf4, 0xf9, 0x13, 0x80, 0x9f, 0x81, 0x63, 0x1b, - 0xa9, 0x5f, 0x0e, 0x0b, 0xb3, 0x4c, 0x37, 0x7f, 0x9d, 0x1c, 0xab, 0x23, - 0xa8, 0xba, 0xbe, 0x32, 0x7b, 0x51, 0x90, 0xd7, 0x7e, 0x39, 0x55, 0x05, - 0x57, 0xf3, 0xe5, 0xc2, 0x33, 0x74, 0x33, 0x3c, 0xf0, 0x36, 0xf9, 0x1e, - 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, - 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, - 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x9a, 0x99, 0x99, 0x19, - 0x66, 0x66, 0x66, 0xe6, 0x32, 0xb5, 0x32, 0xb3, 0xcd, 0x4a, 0x1f, 0x99, - 0x01, 0xf4, 0x16, 0x36, 0xcf, 0xc0, 0xf7, 0xa8, 0x95, 0xa5, 0x15, 0x26, - 0xcc, 0x4b, 0xc7, 0x22, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x8b, 0x2e, 0xba, - 0x8a, 0xf6, 0xcf, 0x45, 0x31, 0xf2, 0xda, 0x34, 0x79, 0x21, 0x93, 0x4e, - 0x07, 0x50, 0x1d, 0x5d, 0x2a, 0x89, 0x03, 0xe0, 0x62, 0xaf, 0x63, 0x69, - 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, - 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, - 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x3c, 0xb1, 0x13, 0x3b, - 0x3a, 0xb1, 0x13, 0x3b, 0x3a, 0x75, 0x88, 0x9d, 0x3d, 0xed, 0x02, 0xbd, - 0xb5, 0x7b, 0x26, 0x08, 0xb8, 0x7b, 0xce, 0x8d, 0x9f, 0x42, 0x85, 0x0f, - 0x5a, 0xdc, 0x17, 0x62, 0x93, 0x24, 0x49, 0x12, 0x6d, 0xdb, 0xb6, 0xed, - 0x23, 0x3b, 0x91, 0xa4, 0x6f, 0xe9, 0xf9, 0xfe, 0x27, 0x9d, 0x0c, 0xbd, - 0x29, 0x9d, 0x80, 0x45, 0x65, 0x87, 0x77, 0x08, 0xda, 0x7d, 0x86, 0x4a, - 0x67, 0x66, 0x66, 0x66, 0xee, 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, - 0xdf, 0xbd, 0xfe, 0x81, 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, 0x0d, 0xd7, - 0x7b, 0xed, 0x42, 0x27, 0xf9, 0x14, 0xd4, 0x3d, 0x01, 0x00, 0x00, 0x10, - 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, 0xcf, 0xc2, 0xc9, 0x81, 0xfe, - 0x84, 0xba, 0x07, 0x89, 0x87, 0x3a, 0x06, 0xb0, 0x73, 0xa5, 0x03, 0xf7, - 0xdd, 0xcc, 0xae, 0x6c, 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, - 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, - 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, - 0x9a, 0x99, 0x99, 0x19, 0x66, 0x66, 0x66, 0xe6, 0x32, 0xb5, 0x32, 0xb3, - 0xcd, 0x4a, 0x1f, 0x99, 0x01, 0xf4, 0x16, 0x36, 0xcf, 0xc0, 0xf7, 0xa8, - 0x95, 0xa5, 0x15, 0x26, 0xcc, 0x4b, 0xc7, 0x22, 0x01, 0x00, 0x00, 0x00, - 0xa2, 0x8b, 0x2e, 0xba, 0x8a, 0xf6, 0xcf, 0x45, 0x31, 0xf2, 0xda, 0x34, - 0x79, 0x21, 0x93, 0x4e, 0x07, 0x50, 0x1d, 0x5d, 0x2a, 0x89, 0x03, 0xe0, - 0x62, 0xaf, 0x63, 0x69, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, - 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, - 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, - 0x3c, 0xb1, 0x13, 0x3b, 0x3a, 0xb1, 0x13, 0x3b, 0x3a, 0x75, 0x88, 0x9d, - 0x3d, 0xed, 0x02, 0xbd, 0xb5, 0x7b, 0x26, 0x08, 0xb8, 0x7b, 0xce, 0x8d, - 0x9f, 0x42, 0x85, 0x0f, 0x5a, 0xdc, 0x17, 0x62, 0x93, 0x24, 0x49, 0x12, - 0x6d, 0xdb, 0xb6, 0xed, 0x23, 0x3b, 0x91, 0xa4, 0x6f, 0xe9, 0xf9, 0xfe, - 0x27, 0x9d, 0x0c, 0xbd, 0x29, 0x9d, 0x80, 0x45, 0x65, 0x87, 0x77, 0x08, - 0xda, 0x7d, 0x86, 0x4a, 0x67, 0x66, 0x66, 0x66, 0xee, 0xee, 0xee, 0xee, - 0x76, 0x97, 0x76, 0x77, 0xdf, 0xbd, 0xfe, 0x81, 0xad, 0xea, 0xef, 0xd1, - 0x8c, 0xc8, 0x0d, 0xd7, 0x7b, 0xed, 0x42, 0x27, 0xf9, 0x14, 0xd4, 0x3d, - 0x01, 0x00, 0x00, 0x10, 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, 0xcf, - 0xc2, 0xc9, 0x81, 0xfe, 0x84, 0xba, 0x07, 0x89, 0x87, 0x3a, 0x06, 0xb0, - 0x73, 0xa5, 0x03, 0xf7, 0xdd, 0xcc, 0xae, 0x6c, 0xb5, 0xb4, 0xb4, 0xb4, - 0xf0, 0xf0, 0xf0, 0xf0, 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, - 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, 0xaf, - 0x31, 0xfa, 0x46, 0x1b, 0x56, 0x55, 0x55, 0xd5, 0x1b, 0xc7, 0x71, 0x9c, - 0x8d, 0x8d, 0xe2, 0xb8, 0x3a, 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, - 0x76, 0x20, 0x15, 0x91, 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, 0xd8, 0x46, - 0x01, 0x00, 0x00, 0x00, 0xa2, 0x8b, 0x2e, 0xba, 0x8a, 0xf6, 0xcf, 0x45, - 0x31, 0xf2, 0xda, 0x34, 0x79, 0x21, 0x93, 0x4e, 0x07, 0x50, 0x1d, 0x5d, - 0x2a, 0x89, 0x03, 0xe0, 0x62, 0xaf, 0x63, 0x69, 0x01, 0x00, 0x00, 0xc0, - 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, - 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, - 0x0c, 0x84, 0x44, 0x6a, 0x3c, 0xb1, 0x13, 0x3b, 0x3a, 0xb1, 0x13, 0x3b, - 0x3a, 0x75, 0x88, 0x9d, 0x3d, 0xed, 0x02, 0xbd, 0xb5, 0x7b, 0x26, 0x08, - 0xb8, 0x7b, 0xce, 0x8d, 0x9f, 0x42, 0x85, 0x0f, 0x5a, 0xdc, 0x17, 0x62, - 0x93, 0x24, 0x49, 0x12, 0x6d, 0xdb, 0xb6, 0xed, 0x23, 0x3b, 0x91, 0xa4, - 0x6f, 0xe9, 0xf9, 0xfe, 0x27, 0x9d, 0x0c, 0xbd, 0x29, 0x9d, 0x80, 0x45, - 0x65, 0x87, 0x77, 0x08, 0xda, 0x7d, 0x86, 0x4a, 0x67, 0x66, 0x66, 0x66, - 0xee, 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, 0xdf, 0xbd, 0xfe, 0x81, - 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, 0x0d, 0xd7, 0x7b, 0xed, 0x42, 0x27, - 0xf9, 0x14, 0xd4, 0x3d, 0x01, 0x00, 0x00, 0x10, 0xff, 0xff, 0xff, 0x0f, - 0x3f, 0x76, 0xfe, 0xcf, 0xc2, 0xc9, 0x81, 0xfe, 0x84, 0xba, 0x07, 0x89, - 0x87, 0x3a, 0x06, 0xb0, 0x73, 0xa5, 0x03, 0xf7, 0xdd, 0xcc, 0xae, 0x6c, - 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, 0x2c, 0x9d, 0xff, 0xff, - 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, - 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, 0x56, 0x55, 0x55, 0xd5, - 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, 0x3a, 0xe4, 0xf3, 0x24, - 0x3c, 0x92, 0x8d, 0xb0, 0x76, 0x20, 0x15, 0x91, 0xc8, 0x5a, 0xa7, 0x27, - 0x08, 0x58, 0xd8, 0x46, 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca, 0x6b, 0x28, - 0xc9, 0x13, 0xbb, 0x86, 0xa4, 0x14, 0xdc, 0x41, 0x99, 0xe7, 0x70, 0x67, - 0x73, 0x38, 0x5f, 0x81, 0x0e, 0xba, 0x87, 0xf1, 0xfd, 0xab, 0xd3, 0x6d, - 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, - 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, - 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x3c, 0xb1, 0x13, 0x3b, - 0x3a, 0xb1, 0x13, 0x3b, 0x3a, 0x75, 0x88, 0x9d, 0x3d, 0xed, 0x02, 0xbd, - 0xb5, 0x7b, 0x26, 0x08, 0xb8, 0x7b, 0xce, 0x8d, 0x9f, 0x42, 0x85, 0x0f, - 0x5a, 0xdc, 0x17, 0x62, 0x93, 0x24, 0x49, 0x12, 0x6d, 0xdb, 0xb6, 0xed, - 0x23, 0x3b, 0x91, 0xa4, 0x6f, 0xe9, 0xf9, 0xfe, 0x27, 0x9d, 0x0c, 0xbd, - 0x29, 0x9d, 0x80, 0x45, 0x65, 0x87, 0x77, 0x08, 0xda, 0x7d, 0x86, 0x4a, - 0x67, 0x66, 0x66, 0x66, 0xee, 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, - 0xdf, 0xbd, 0xfe, 0x81, 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, 0x0d, 0xd7, - 0x7b, 0xed, 0x42, 0x27, 0xf9, 0x14, 0xd4, 0x3d, 0x01, 0x00, 0x00, 0x10, - 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, 0xcf, 0xc2, 0xc9, 0x81, 0xfe, - 0x84, 0xba, 0x07, 0x89, 0x87, 0x3a, 0x06, 0xb0, 0x73, 0xa5, 0x03, 0xf7, - 0xdd, 0xcc, 0xae, 0x6c, 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, - 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, - 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, - 0x56, 0x55, 0x55, 0xd5, 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, - 0x3a, 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, 0x76, 0x20, 0x15, 0x91, - 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, 0xd8, 0x46, 0x01, 0x00, 0x00, 0x00, - 0x1a, 0xca, 0x6b, 0x28, 0xc9, 0x13, 0xbb, 0x86, 0xa4, 0x14, 0xdc, 0x41, - 0x99, 0xe7, 0x70, 0x67, 0x73, 0x38, 0x5f, 0x81, 0x0e, 0xba, 0x87, 0xf1, - 0xfd, 0xab, 0xd3, 0x6d, 0xcd, 0xcc, 0xcc, 0x0c, 0x33, 0x33, 0x33, 0x73, - 0x99, 0x5a, 0x99, 0xd9, 0x66, 0xa5, 0x8f, 0xcc, 0x00, 0x7a, 0x0b, 0x9b, - 0x67, 0xe0, 0x7b, 0xd4, 0xca, 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, - 0x3c, 0xb1, 0x13, 0x3b, 0x3a, 0xb1, 0x13, 0x3b, 0x3a, 0x75, 0x88, 0x9d, - 0x3d, 0xed, 0x02, 0xbd, 0xb5, 0x7b, 0x26, 0x08, 0xb8, 0x7b, 0xce, 0x8d, - 0x9f, 0x42, 0x85, 0x0f, 0x5a, 0xdc, 0x17, 0x62, 0x93, 0x24, 0x49, 0x12, - 0x6d, 0xdb, 0xb6, 0xed, 0x23, 0x3b, 0x91, 0xa4, 0x6f, 0xe9, 0xf9, 0xfe, - 0x27, 0x9d, 0x0c, 0xbd, 0x29, 0x9d, 0x80, 0x45, 0x65, 0x87, 0x77, 0x08, - 0xda, 0x7d, 0x86, 0x4a, 0x67, 0x66, 0x66, 0x66, 0xee, 0xee, 0xee, 0xee, - 0x76, 0x97, 0x76, 0x77, 0xdf, 0xbd, 0xfe, 0x81, 0xad, 0xea, 0xef, 0xd1, - 0x8c, 0xc8, 0x0d, 0xd7, 0x7b, 0xed, 0x42, 0x27, 0xf9, 0x14, 0xd4, 0x3d, - 0x01, 0x00, 0x00, 0x10, 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, 0xcf, - 0xc2, 0xc9, 0x81, 0xfe, 0x84, 0xba, 0x07, 0x89, 0x87, 0x3a, 0x06, 0xb0, - 0x73, 0xa5, 0x03, 0xf7, 0xdd, 0xcc, 0xae, 0x6c, 0xb5, 0xb4, 0xb4, 0xb4, - 0xf0, 0xf0, 0xf0, 0xf0, 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, - 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, 0xaf, - 0x31, 0xfa, 0x46, 0x1b, 0x56, 0x55, 0x55, 0xd5, 0x1b, 0xc7, 0x71, 0x9c, - 0x8d, 0x8d, 0xe2, 0xb8, 0x3a, 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, - 0x76, 0x20, 0x15, 0x91, 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, 0xd8, 0x46, - 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca, 0x6b, 0x28, 0xc9, 0x13, 0xbb, 0x86, - 0xa4, 0x14, 0xdc, 0x41, 0x99, 0xe7, 0x70, 0x67, 0x73, 0x38, 0x5f, 0x81, - 0x0e, 0xba, 0x87, 0xf1, 0xfd, 0xab, 0xd3, 0x6d, 0xcd, 0xcc, 0xcc, 0x0c, - 0x33, 0x33, 0x33, 0x73, 0x99, 0x5a, 0x99, 0xd9, 0x66, 0xa5, 0x8f, 0xcc, - 0x00, 0x7a, 0x0b, 0x9b, 0x67, 0xe0, 0x7b, 0xd4, 0xca, 0xd2, 0x0a, 0x13, - 0xe6, 0xa5, 0x63, 0x11, 0xb7, 0x6d, 0xdb, 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, - 0xc2, 0x08, 0x0c, 0xc3, 0x9e, 0x0f, 0x12, 0x8e, 0xc3, 0x20, 0x7d, 0x25, - 0x19, 0x76, 0x42, 0x1d, 0xd6, 0x85, 0x70, 0xa2, 0x75, 0x71, 0x0a, 0x0b, - 0x93, 0x24, 0x49, 0x12, 0x6d, 0xdb, 0xb6, 0xed, 0x23, 0x3b, 0x91, 0xa4, - 0x6f, 0xe9, 0xf9, 0xfe, 0x27, 0x9d, 0x0c, 0xbd, 0x29, 0x9d, 0x80, 0x45, - 0x65, 0x87, 0x77, 0x08, 0xda, 0x7d, 0x86, 0x4a, 0x67, 0x66, 0x66, 0x66, - 0xee, 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, 0xdf, 0xbd, 0xfe, 0x81, - 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, 0x0d, 0xd7, 0x7b, 0xed, 0x42, 0x27, - 0xf9, 0x14, 0xd4, 0x3d, 0x01, 0x00, 0x00, 0x10, 0xff, 0xff, 0xff, 0x0f, - 0x3f, 0x76, 0xfe, 0xcf, 0xc2, 0xc9, 0x81, 0xfe, 0x84, 0xba, 0x07, 0x89, - 0x87, 0x3a, 0x06, 0xb0, 0x73, 0xa5, 0x03, 0xf7, 0xdd, 0xcc, 0xae, 0x6c, - 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, 0x2c, 0x9d, 0xff, 0xff, - 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, - 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, 0x56, 0x55, 0x55, 0xd5, - 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, 0x3a, 0xe4, 0xf3, 0x24, - 0x3c, 0x92, 0x8d, 0xb0, 0x76, 0x20, 0x15, 0x91, 0xc8, 0x5a, 0xa7, 0x27, - 0x08, 0x58, 0xd8, 0x46, 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca, 0x6b, 0x28, - 0xc9, 0x13, 0xbb, 0x86, 0xa4, 0x14, 0xdc, 0x41, 0x99, 0xe7, 0x70, 0x67, - 0x73, 0x38, 0x5f, 0x81, 0x0e, 0xba, 0x87, 0xf1, 0xfd, 0xab, 0xd3, 0x6d, - 0xcd, 0xcc, 0xcc, 0x0c, 0x33, 0x33, 0x33, 0x73, 0x99, 0x5a, 0x99, 0xd9, - 0x66, 0xa5, 0x8f, 0xcc, 0x00, 0x7a, 0x0b, 0x9b, 0x67, 0xe0, 0x7b, 0xd4, - 0xca, 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, 0xb7, 0x6d, 0xdb, 0xb6, - 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, 0x08, 0x0c, 0xc3, 0x9e, 0x0f, 0x12, 0x8e, - 0xc3, 0x20, 0x7d, 0x25, 0x19, 0x76, 0x42, 0x1d, 0xd6, 0x85, 0x70, 0xa2, - 0x75, 0x71, 0x0a, 0x0b, 0x01, 0x00, 0x00, 0x80, 0xd0, 0x45, 0x17, 0xdd, - 0x44, 0x29, 0xe7, 0x22, 0x1a, 0x4b, 0x4c, 0x44, 0xbf, 0x7c, 0x1a, 0xac, - 0x07, 0x94, 0x2b, 0x48, 0x39, 0x83, 0xd0, 0x04, 0x5b, 0xab, 0xa8, 0x6e, - 0x67, 0x66, 0x66, 0x66, 0xee, 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, - 0xdf, 0xbd, 0xfe, 0x81, 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, 0x0d, 0xd7, - 0x7b, 0xed, 0x42, 0x27, 0xf9, 0x14, 0xd4, 0x3d, 0x01, 0x00, 0x00, 0x10, - 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, 0xcf, 0xc2, 0xc9, 0x81, 0xfe, - 0x84, 0xba, 0x07, 0x89, 0x87, 0x3a, 0x06, 0xb0, 0x73, 0xa5, 0x03, 0xf7, - 0xdd, 0xcc, 0xae, 0x6c, 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, - 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, - 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, - 0x56, 0x55, 0x55, 0xd5, 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, - 0x3a, 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, 0x76, 0x20, 0x15, 0x91, - 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, 0xd8, 0x46, 0x01, 0x00, 0x00, 0x00, - 0x1a, 0xca, 0x6b, 0x28, 0xc9, 0x13, 0xbb, 0x86, 0xa4, 0x14, 0xdc, 0x41, - 0x99, 0xe7, 0x70, 0x67, 0x73, 0x38, 0x5f, 0x81, 0x0e, 0xba, 0x87, 0xf1, - 0xfd, 0xab, 0xd3, 0x6d, 0xcd, 0xcc, 0xcc, 0x0c, 0x33, 0x33, 0x33, 0x73, - 0x99, 0x5a, 0x99, 0xd9, 0x66, 0xa5, 0x8f, 0xcc, 0x00, 0x7a, 0x0b, 0x9b, - 0x67, 0xe0, 0x7b, 0xd4, 0xca, 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, - 0xb7, 0x6d, 0xdb, 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, 0x08, 0x0c, 0xc3, - 0x9e, 0x0f, 0x12, 0x8e, 0xc3, 0x20, 0x7d, 0x25, 0x19, 0x76, 0x42, 0x1d, - 0xd6, 0x85, 0x70, 0xa2, 0x75, 0x71, 0x0a, 0x0b, 0x01, 0x00, 0x00, 0x80, - 0xd0, 0x45, 0x17, 0xdd, 0x44, 0x29, 0xe7, 0x22, 0x1a, 0x4b, 0x4c, 0x44, - 0xbf, 0x7c, 0x1a, 0xac, 0x07, 0x94, 0x2b, 0x48, 0x39, 0x83, 0xd0, 0x04, - 0x5b, 0xab, 0xa8, 0x6e, 0xb3, 0x90, 0x85, 0x2c, 0x58, 0xc8, 0x42, 0x16, - 0xa6, 0x87, 0xa5, 0x37, 0xe1, 0xa4, 0x8e, 0x32, 0x8a, 0x4c, 0x12, 0x99, - 0xe5, 0x14, 0x75, 0x7a, 0xcf, 0x61, 0x03, 0xc0, 0xc2, 0xa7, 0xce, 0x64, - 0x01, 0x00, 0x00, 0x10, 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, 0xcf, - 0xc2, 0xc9, 0x81, 0xfe, 0x84, 0xba, 0x07, 0x89, 0x87, 0x3a, 0x06, 0xb0, - 0x73, 0xa5, 0x03, 0xf7, 0xdd, 0xcc, 0xae, 0x6c, 0xb5, 0xb4, 0xb4, 0xb4, - 0xf0, 0xf0, 0xf0, 0xf0, 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, - 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, 0xaf, - 0x31, 0xfa, 0x46, 0x1b, 0x56, 0x55, 0x55, 0xd5, 0x1b, 0xc7, 0x71, 0x9c, - 0x8d, 0x8d, 0xe2, 0xb8, 0x3a, 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, - 0x76, 0x20, 0x15, 0x91, 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, 0xd8, 0x46, - 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca, 0x6b, 0x28, 0xc9, 0x13, 0xbb, 0x86, - 0xa4, 0x14, 0xdc, 0x41, 0x99, 0xe7, 0x70, 0x67, 0x73, 0x38, 0x5f, 0x81, - 0x0e, 0xba, 0x87, 0xf1, 0xfd, 0xab, 0xd3, 0x6d, 0xcd, 0xcc, 0xcc, 0x0c, - 0x33, 0x33, 0x33, 0x73, 0x99, 0x5a, 0x99, 0xd9, 0x66, 0xa5, 0x8f, 0xcc, - 0x00, 0x7a, 0x0b, 0x9b, 0x67, 0xe0, 0x7b, 0xd4, 0xca, 0xd2, 0x0a, 0x13, - 0xe6, 0xa5, 0x63, 0x11, 0xb7, 0x6d, 0xdb, 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, - 0xc2, 0x08, 0x0c, 0xc3, 0x9e, 0x0f, 0x12, 0x8e, 0xc3, 0x20, 0x7d, 0x25, - 0x19, 0x76, 0x42, 0x1d, 0xd6, 0x85, 0x70, 0xa2, 0x75, 0x71, 0x0a, 0x0b, - 0x01, 0x00, 0x00, 0x80, 0xd0, 0x45, 0x17, 0xdd, 0x44, 0x29, 0xe7, 0x22, - 0x1a, 0x4b, 0x4c, 0x44, 0xbf, 0x7c, 0x1a, 0xac, 0x07, 0x94, 0x2b, 0x48, - 0x39, 0x83, 0xd0, 0x04, 0x5b, 0xab, 0xa8, 0x6e, 0xb3, 0x90, 0x85, 0x2c, - 0x58, 0xc8, 0x42, 0x16, 0xa6, 0x87, 0xa5, 0x37, 0xe1, 0xa4, 0x8e, 0x32, - 0x8a, 0x4c, 0x12, 0x99, 0xe5, 0x14, 0x75, 0x7a, 0xcf, 0x61, 0x03, 0xc0, - 0xc2, 0xa7, 0xce, 0x64, 0x01, 0x00, 0x00, 0x60, 0x54, 0x55, 0x55, 0xb5, - 0x29, 0x18, 0xa9, 0x8a, 0x2d, 0xbd, 0x95, 0xc5, 0xaf, 0x19, 0x3b, 0x09, - 0x5d, 0xc4, 0x6c, 0x86, 0xba, 0x42, 0x8c, 0xb2, 0xaf, 0x15, 0x19, 0x6f, - 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, 0x2c, 0x9d, 0xff, 0xff, - 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, - 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, 0x56, 0x55, 0x55, 0xd5, - 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, 0x3a, 0xe4, 0xf3, 0x24, - 0x3c, 0x92, 0x8d, 0xb0, 0x76, 0x20, 0x15, 0x91, 0xc8, 0x5a, 0xa7, 0x27, - 0x08, 0x58, 0xd8, 0x46, 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca, 0x6b, 0x28, - 0xc9, 0x13, 0xbb, 0x86, 0xa4, 0x14, 0xdc, 0x41, 0x99, 0xe7, 0x70, 0x67, - 0x73, 0x38, 0x5f, 0x81, 0x0e, 0xba, 0x87, 0xf1, 0xfd, 0xab, 0xd3, 0x6d, - 0xcd, 0xcc, 0xcc, 0x0c, 0x33, 0x33, 0x33, 0x73, 0x99, 0x5a, 0x99, 0xd9, - 0x66, 0xa5, 0x8f, 0xcc, 0x00, 0x7a, 0x0b, 0x9b, 0x67, 0xe0, 0x7b, 0xd4, - 0xca, 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, 0xb7, 0x6d, 0xdb, 0xb6, - 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, 0x08, 0x0c, 0xc3, 0x9e, 0x0f, 0x12, 0x8e, - 0xc3, 0x20, 0x7d, 0x25, 0x19, 0x76, 0x42, 0x1d, 0xd6, 0x85, 0x70, 0xa2, - 0x75, 0x71, 0x0a, 0x0b, 0x01, 0x00, 0x00, 0x80, 0xd0, 0x45, 0x17, 0xdd, - 0x44, 0x29, 0xe7, 0x22, 0x1a, 0x4b, 0x4c, 0x44, 0xbf, 0x7c, 0x1a, 0xac, - 0x07, 0x94, 0x2b, 0x48, 0x39, 0x83, 0xd0, 0x04, 0x5b, 0xab, 0xa8, 0x6e, - 0xb3, 0x90, 0x85, 0x2c, 0x58, 0xc8, 0x42, 0x16, 0xa6, 0x87, 0xa5, 0x37, - 0xe1, 0xa4, 0x8e, 0x32, 0x8a, 0x4c, 0x12, 0x99, 0xe5, 0x14, 0x75, 0x7a, - 0xcf, 0x61, 0x03, 0xc0, 0xc2, 0xa7, 0xce, 0x64, 0x01, 0x00, 0x00, 0x60, - 0x54, 0x55, 0x55, 0xb5, 0x29, 0x18, 0xa9, 0x8a, 0x2d, 0xbd, 0x95, 0xc5, - 0xaf, 0x19, 0x3b, 0x09, 0x5d, 0xc4, 0x6c, 0x86, 0xba, 0x42, 0x8c, 0xb2, - 0xaf, 0x15, 0x19, 0x6f, 0xd8, 0xa3, 0x70, 0x3d, 0x5b, 0x8f, 0xc2, 0xf5, - 0x79, 0xf8, 0x12, 0xae, 0x54, 0xd4, 0x3d, 0x80, 0x9e, 0x41, 0x24, 0xea, - 0xf2, 0xf9, 0x2a, 0x06, 0xdc, 0x0c, 0xed, 0x96, 0xfa, 0x70, 0xa7, 0x6a, - 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, - 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, - 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xb8, 0x24, 0xdc, 0x01, - 0xa9, 0xd5, 0x37, 0xa5, 0xee, 0x62, 0x67, 0xb0, 0xaa, 0xc3, 0x43, 0xf7, - 0xdd, 0x9c, 0x81, 0x5a, 0x1c, 0x50, 0x97, 0xef, 0x44, 0x96, 0xda, 0x9f, - 0xdd, 0xa8, 0xa2, 0x48, 0x03, 0xf8, 0x38, 0xb5, 0x5a, 0x44, 0x52, 0x5c, - 0xc6, 0xa3, 0x54, 0x0f, 0xa4, 0x52, 0x93, 0xc4, 0x7f, 0xe6, 0x3b, 0xb7, - 0x72, 0x12, 0x2b, 0x09, 0x55, 0x08, 0xa5, 0xa3, 0xbb, 0x87, 0xe3, 0x4c, - 0x07, 0x11, 0x93, 0x1e, 0xe4, 0x5c, 0x3a, 0x98, 0x2e, 0x9b, 0xec, 0x7c, - 0xca, 0x20, 0xa7, 0x1f, 0xf6, 0x31, 0xf1, 0x09, 0x88, 0x38, 0x4e, 0x10, - 0x62, 0x19, 0x58, 0x03, 0x95, 0x14, 0x44, 0x25, 0x35, 0x6a, 0x26, 0x34, - 0x91, 0xc3, 0x6c, 0x3d, 0x2f, 0xe8, 0x8d, 0x46, 0xe2, 0x7e, 0xf5, 0x7f, - 0x33, 0x87, 0x0d, 0x08, 0x10, 0xe3, 0xf4, 0x91, 0xda, 0xd8, 0x76, 0xed, - 0x53, 0x9a, 0x3b, 0x63, 0x57, 0x8f, 0x23, 0xdf, 0x20, 0x8a, 0x08, 0xbc, - 0xf4, 0xb0, 0xbb, 0xc5, 0x63, 0x4c, 0x15, 0x97, 0x09, 0xb0, 0xd0, 0x33, - 0x3c, 0xf7, 0x72, 0xe6, 0xea, 0xc9, 0x69, 0x3f, 0xee, 0x31, 0x84, 0x67, - 0xdb, 0x0e, 0xf7, 0x36, 0xe6, 0xb0, 0xf6, 0xe5, 0xc6, 0x9f, 0x54, 0x40, - 0x45, 0x73, 0x98, 0x32, 0x49, 0xbf, 0x02, 0x52, 0x3a, 0xe4, 0xb6, 0x61, - 0xd1, 0x0f, 0x45, 0x2a, 0x91, 0x7f, 0x0f, 0x41, 0x8f, 0xd7, 0x7d, 0xc0, - 0x8c, 0x30, 0x00, 0x5d, 0x2f, 0x20, 0xb9, 0x74, 0xdf, 0x1e, 0xec, 0xe1, - 0x60, 0x81, 0xd5, 0x9f, 0xac, 0xec, 0x80, 0x8f, 0x4a, 0x66, 0x6a, 0x56, - 0xdc, 0xcd, 0xcd, 0x64, 0xcd, 0xc8, 0x30, 0xef, 0x5c, 0x67, 0x93, 0x2e, - 0x66, 0x26, 0xd2, 0x73, 0xc6, 0x83, 0x2d, 0xfe, 0x3a, 0x54, 0xea, 0x8f, - 0x37, 0x8c, 0xbf, 0xef, 0x0f, 0x2d, 0x31, 0x0b, 0x21, 0x1f, 0xfb, 0x41, - 0x9a, 0x99, 0x99, 0x19, 0x66, 0x66, 0x66, 0xe6, 0x32, 0xb5, 0x32, 0xb3, - 0xcd, 0x4a, 0x1f, 0x99, 0x01, 0xf4, 0x16, 0x36, 0xcf, 0xc0, 0xf7, 0xa8, - 0x95, 0xa5, 0x15, 0x26, 0xcc, 0x4b, 0xc7, 0x22, 0xe8, 0x07, 0x10, 0x7b, - 0x71, 0x55, 0xb5, 0x26, 0x08, 0xfa, 0x76, 0xb0, 0xa1, 0x28, 0x86, 0x8e, - 0xe8, 0x04, 0x8b, 0x37, 0xfa, 0x56, 0xa4, 0xd3, 0x28, 0x8d, 0x80, 0x4e, - 0x41, 0x2e, 0xb0, 0x2a, 0x1c, 0x1e, 0x81, 0xe2, 0xab, 0x23, 0xa8, 0xaf, - 0x38, 0xdb, 0xfd, 0x59, 0x7d, 0x9a, 0xe0, 0x0f, 0x25, 0x99, 0x64, 0xfe, - 0xf0, 0x29, 0x66, 0x4a, 0x70, 0x87, 0xc1, 0x5c, 0xf9, 0xd8, 0x63, 0x28, - 0x4e, 0x16, 0xfe, 0xbf, 0xdd, 0x24, 0x3c, 0xca, 0xf1, 0x4b, 0x15, 0xf3, - 0x30, 0xe3, 0x42, 0x53, 0xdb, 0x59, 0xf1, 0x78, 0xd6, 0x37, 0xbd, 0xd9, - 0x1e, 0x40, 0x93, 0xcd, 0x8b, 0xb5, 0x17, 0x0b, 0xef, 0xa4, 0x62, 0xfb, - 0x29, 0xf2, 0xac, 0x00, 0xc5, 0xbb, 0x09, 0x53, 0x77, 0x36, 0x86, 0x97, - 0x7d, 0xe1, 0x2f, 0xff, 0x28, 0xfd, 0xff, 0xbf, 0xab, 0x7d, 0xd6, 0xec, - 0x3a, 0x89, 0x37, 0x38, 0x26, 0xf5, 0x66, 0xba, 0x00, 0xe9, 0x93, 0xa6, - 0xaa, 0xc9, 0x3b, 0x0f, 0x82, 0xd9, 0x40, 0x78, 0x35, 0x4d, 0x89, 0xa3, - 0x06, 0xc7, 0x6a, 0x28, 0x40, 0x6d, 0xa6, 0x4f, 0x1e, 0x1c, 0x2d, 0x73, - 0x7e, 0x1c, 0x1d, 0x76, 0x3f, 0xc7, 0x04, 0x5f, 0x2d, 0x46, 0x79, 0x88, - 0xb0, 0xa9, 0x5c, 0xbf, 0xfb, 0x17, 0xeb, 0x94, 0x85, 0x50, 0x76, 0x1c, - 0x58, 0x74, 0xc2, 0x63, 0x03, 0xeb, 0xf7, 0x12, 0x66, 0xfe, 0x4c, 0xc4, - 0xde, 0x76, 0x99, 0x6b, 0x73, 0x5b, 0x0a, 0xa5, 0x64, 0x12, 0xd9, 0xfb, - 0xf5, 0xcb, 0x8f, 0xfc, 0x13, 0xf2, 0xea, 0x5d, 0xe3, 0xda, 0x8e, 0x5a, - 0x95, 0x51, 0xd9, 0x37, 0xa4, 0xf1, 0xe5, 0x6b, 0x98, 0x74, 0xb1, 0x02, - 0x2b, 0xf2, 0x95, 0x7f, 0x40, 0x1d, 0x14, 0xf1, 0xda, 0x64, 0xb3, 0xc2, - 0xbd, 0x70, 0x08, 0xce, 0xfa, 0x2f, 0x71, 0xcb, 0x02, 0x13, 0xeb, 0x18, - 0x01, 0x00, 0x00, 0x00, 0xa2, 0x8b, 0x2e, 0xba, 0x8a, 0xf6, 0xcf, 0x45, - 0x31, 0xf2, 0xda, 0x34, 0x79, 0x21, 0x93, 0x4e, 0x07, 0x50, 0x1d, 0x5d, - 0x2a, 0x89, 0x03, 0xe0, 0x62, 0xaf, 0x63, 0x69, 0x1c, 0x1e, 0x81, 0xe2, - 0xab, 0x23, 0xa8, 0xaf, 0x38, 0xdb, 0xfd, 0x59, 0x7d, 0x9a, 0xe0, 0x0f, - 0x25, 0x99, 0x64, 0xfe, 0xf0, 0x29, 0x66, 0x4a, 0x70, 0x87, 0xc1, 0x5c, - 0xf9, 0xd8, 0x63, 0x28, 0x20, 0xf6, 0x74, 0x42, 0x47, 0x8d, 0x02, 0xd7, - 0x1d, 0x3b, 0xdd, 0x84, 0xce, 0x91, 0xf2, 0xa4, 0xb7, 0xca, 0xba, 0xfd, - 0x9f, 0xfa, 0xa1, 0x97, 0x35, 0x59, 0x48, 0xdc, 0xe5, 0xaf, 0x17, 0x1c, - 0x8f, 0x23, 0xf1, 0xf5, 0x16, 0xab, 0x1c, 0xfd, 0x40, 0x54, 0x27, 0x3d, - 0xeb, 0x8d, 0x9e, 0x81, 0xaa, 0xae, 0x5a, 0x9b, 0xc7, 0x21, 0x1a, 0x44, - 0x6f, 0xaf, 0xd1, 0x7b, 0xaa, 0x86, 0xfb, 0x14, 0xa1, 0x41, 0xe6, 0x2a, - 0x76, 0xc6, 0xf6, 0x5f, 0x6d, 0x38, 0x69, 0xf6, 0x5b, 0xaa, 0x81, 0xf6, - 0x2f, 0x2a, 0x49, 0xf8, 0x51, 0xb7, 0x35, 0x69, 0x88, 0xff, 0xf6, 0x79, - 0x61, 0x06, 0x5b, 0x09, 0xcb, 0xcc, 0x1d, 0xec, 0x8f, 0x54, 0x4b, 0x31, - 0x30, 0x90, 0x33, 0xde, 0xc1, 0xe0, 0x12, 0x5a, 0x8c, 0xc9, 0xcd, 0xcb, - 0xfe, 0x9c, 0x56, 0xe1, 0xfb, 0x60, 0xda, 0x30, 0x7f, 0xb1, 0xf3, 0x41, - 0xfd, 0xea, 0x36, 0x55, 0x23, 0xeb, 0xa9, 0xef, 0xb8, 0x08, 0x00, 0xd2, - 0x01, 0xaf, 0x48, 0x68, 0xf8, 0xba, 0xa8, 0x67, 0x4f, 0x0d, 0x15, 0x58, - 0x8b, 0xe2, 0x7e, 0x60, 0x94, 0x79, 0x0a, 0x24, 0x50, 0xa2, 0x28, 0x8d, - 0xa0, 0x61, 0x0e, 0xe3, 0x11, 0x65, 0x20, 0xdf, 0x69, 0xfb, 0x15, 0xaa, - 0xac, 0x4e, 0x5d, 0x8d, 0xf0, 0xe2, 0x97, 0xfd, 0xc2, 0x3c, 0x79, 0x8f, - 0x29, 0xc1, 0xce, 0x48, 0x7f, 0x72, 0x2b, 0x6a, 0x8a, 0x51, 0xc5, 0x3a, - 0xee, 0xca, 0x8c, 0xb4, 0x60, 0x92, 0xcd, 0x46, 0x8b, 0x29, 0x4b, 0xe3, - 0xbf, 0x42, 0xc9, 0x65, 0x5e, 0x21, 0x3d, 0x21, 0x1a, 0x12, 0x04, 0x35, - 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, - 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, - 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x4e, 0x16, 0xfe, 0xbf, - 0xdd, 0x24, 0x3c, 0xca, 0xf1, 0x4b, 0x15, 0xf3, 0x30, 0xe3, 0x42, 0x53, - 0xdb, 0x59, 0xf1, 0x78, 0xd6, 0x37, 0xbd, 0xd9, 0x1e, 0x40, 0x93, 0xcd, - 0x8b, 0xb5, 0x17, 0x0b, 0x8f, 0x23, 0xf1, 0xf5, 0x16, 0xab, 0x1c, 0xfd, - 0x40, 0x54, 0x27, 0x3d, 0xeb, 0x8d, 0x9e, 0x81, 0xaa, 0xae, 0x5a, 0x9b, - 0xc7, 0x21, 0x1a, 0x44, 0x6f, 0xaf, 0xd1, 0x7b, 0xaa, 0x86, 0xfb, 0x14, - 0xdf, 0x90, 0xd0, 0x50, 0xea, 0x61, 0x59, 0xf9, 0x45, 0x4f, 0x48, 0x02, - 0x91, 0x4e, 0x55, 0xf4, 0x0c, 0xcf, 0x9d, 0xdb, 0x38, 0x53, 0x0a, 0xe0, - 0xf0, 0xb4, 0x1c, 0xcd, 0x07, 0x2f, 0xc7, 0x62, 0x40, 0x96, 0xe1, 0xee, - 0x5b, 0x58, 0xcd, 0x24, 0xfc, 0xbd, 0x85, 0xaf, 0xb6, 0x19, 0x2d, 0x50, - 0x72, 0x84, 0x26, 0x0f, 0x9d, 0x8a, 0x1a, 0x9b, 0xdb, 0x26, 0xac, 0xa0, - 0xc7, 0x55, 0xd3, 0x2b, 0xe5, 0xd8, 0x10, 0x31, 0xd0, 0x3a, 0xe9, 0x29, - 0x84, 0xd7, 0x7c, 0x9c, 0x5e, 0x2c, 0x34, 0xc2, 0x90, 0xab, 0x53, 0x42, - 0xe0, 0xd3, 0x93, 0xbe, 0xe1, 0xaf, 0x6e, 0xed, 0x58, 0xdf, 0xb8, 0x62, - 0xd9, 0x77, 0x40, 0x8c, 0x76, 0x6d, 0xc2, 0x3b, 0x7b, 0x8c, 0x90, 0x83, - 0xaa, 0x5d, 0xe5, 0x8b, 0x2c, 0x85, 0xf4, 0x7d, 0x5f, 0x86, 0x0a, 0xf0, - 0xa8, 0x4b, 0x8b, 0x59, 0xe8, 0xe7, 0xe3, 0x4c, 0x1a, 0x68, 0xa0, 0x50, - 0xe3, 0x42, 0xba, 0x5a, 0x0e, 0x00, 0x86, 0x91, 0x26, 0x8e, 0xff, 0xa2, - 0x73, 0x39, 0x8c, 0x03, 0xb3, 0xf0, 0xe8, 0xca, 0x9b, 0xbe, 0xe3, 0x02, - 0x8d, 0x16, 0x5e, 0x3e, 0xd6, 0x07, 0xc9, 0x9b, 0x2f, 0x15, 0x93, 0x6a, - 0x3f, 0xc2, 0x9c, 0x30, 0x4b, 0x20, 0xb2, 0xbb, 0x50, 0xa9, 0xd9, 0x8f, - 0x34, 0xaf, 0x35, 0xd7, 0x4e, 0x90, 0x23, 0x71, 0xdc, 0x4b, 0xdc, 0x1a, - 0x3c, 0xb1, 0x13, 0x3b, 0x3a, 0xb1, 0x13, 0x3b, 0x3a, 0x75, 0x88, 0x9d, - 0x3d, 0xed, 0x02, 0xbd, 0xb5, 0x7b, 0x26, 0x08, 0xb8, 0x7b, 0xce, 0x8d, - 0x9f, 0x42, 0x85, 0x0f, 0x5a, 0xdc, 0x17, 0x62, 0xef, 0xa4, 0x62, 0xfb, - 0x29, 0xf2, 0xac, 0x00, 0xc5, 0xbb, 0x09, 0x53, 0x77, 0x36, 0x86, 0x97, - 0x7d, 0xe1, 0x2f, 0xff, 0x28, 0xfd, 0xff, 0xbf, 0xab, 0x7d, 0xd6, 0xec, - 0x3a, 0x89, 0x37, 0x38, 0xa1, 0x41, 0xe6, 0x2a, 0x76, 0xc6, 0xf6, 0x5f, - 0x6d, 0x38, 0x69, 0xf6, 0x5b, 0xaa, 0x81, 0xf6, 0x2f, 0x2a, 0x49, 0xf8, - 0x51, 0xb7, 0x35, 0x69, 0x88, 0xff, 0xf6, 0x79, 0x61, 0x06, 0x5b, 0x09, - 0x40, 0x96, 0xe1, 0xee, 0x5b, 0x58, 0xcd, 0x24, 0xfc, 0xbd, 0x85, 0xaf, - 0xb6, 0x19, 0x2d, 0x50, 0x72, 0x84, 0x26, 0x0f, 0x9d, 0x8a, 0x1a, 0x9b, - 0xdb, 0x26, 0xac, 0xa0, 0xc7, 0x55, 0xd3, 0x2b, 0xd2, 0xb7, 0x37, 0xc6, - 0xf4, 0x69, 0xd4, 0x7c, 0x86, 0x56, 0x2f, 0x2d, 0xba, 0x22, 0x9e, 0x46, - 0x3d, 0x60, 0xc1, 0xc1, 0x3a, 0x13, 0x41, 0x6d, 0x71, 0xc2, 0x7b, 0xed, - 0xcf, 0xff, 0x29, 0x2c, 0x71, 0xba, 0x77, 0xb7, 0x34, 0x35, 0x4d, 0x26, - 0x3d, 0x7a, 0xdb, 0xd2, 0xea, 0xa6, 0xb1, 0x9f, 0x44, 0x1a, 0x8c, 0xdc, - 0x07, 0x4b, 0xf1, 0x36, 0x4e, 0xaa, 0x9e, 0x5c, 0x2a, 0x0a, 0xdf, 0x58, - 0xd2, 0x92, 0x73, 0x4e, 0x7f, 0x38, 0x5c, 0x5b, 0xe5, 0x58, 0x7d, 0x21, - 0x0f, 0xb8, 0x2a, 0x68, 0x72, 0x16, 0xc2, 0xa8, 0x0f, 0x97, 0xd6, 0x55, - 0x51, 0x32, 0xef, 0x35, 0x03, 0x00, 0x51, 0x64, 0xb8, 0x37, 0x33, 0xab, - 0x2c, 0x29, 0x5e, 0x6e, 0x20, 0x31, 0x22, 0x4a, 0x7c, 0xd8, 0x39, 0xfd, - 0x4e, 0xda, 0x22, 0x67, 0xb3, 0x04, 0x3f, 0x8b, 0x50, 0x1c, 0x6a, 0x4e, - 0xbe, 0xe7, 0x01, 0x62, 0x63, 0x2a, 0x48, 0x83, 0xaf, 0x86, 0x6e, 0xc2, - 0xbc, 0xbf, 0xc6, 0xe6, 0x17, 0xe9, 0xb9, 0xf9, 0xcd, 0x55, 0x5b, 0x13, - 0x0a, 0xa6, 0x65, 0xcc, 0x46, 0x19, 0x8d, 0xc6, 0xbd, 0x40, 0x6b, 0x3b, - 0x93, 0x24, 0x49, 0x12, 0x6d, 0xdb, 0xb6, 0xed, 0x23, 0x3b, 0x91, 0xa4, - 0x6f, 0xe9, 0xf9, 0xfe, 0x27, 0x9d, 0x0c, 0xbd, 0x29, 0x9d, 0x80, 0x45, - 0x65, 0x87, 0x77, 0x08, 0xda, 0x7d, 0x86, 0x4a, 0x26, 0xf5, 0x66, 0xba, - 0x00, 0xe9, 0x93, 0xa6, 0xaa, 0xc9, 0x3b, 0x0f, 0x82, 0xd9, 0x40, 0x78, - 0x35, 0x4d, 0x89, 0xa3, 0x06, 0xc7, 0x6a, 0x28, 0x40, 0x6d, 0xa6, 0x4f, - 0x1e, 0x1c, 0x2d, 0x73, 0xcb, 0xcc, 0x1d, 0xec, 0x8f, 0x54, 0x4b, 0x31, - 0x30, 0x90, 0x33, 0xde, 0xc1, 0xe0, 0x12, 0x5a, 0x8c, 0xc9, 0xcd, 0xcb, - 0xfe, 0x9c, 0x56, 0xe1, 0xfb, 0x60, 0xda, 0x30, 0x7f, 0xb1, 0xf3, 0x41, - 0xe5, 0xd8, 0x10, 0x31, 0xd0, 0x3a, 0xe9, 0x29, 0x84, 0xd7, 0x7c, 0x9c, - 0x5e, 0x2c, 0x34, 0xc2, 0x90, 0xab, 0x53, 0x42, 0xe0, 0xd3, 0x93, 0xbe, - 0xe1, 0xaf, 0x6e, 0xed, 0x58, 0xdf, 0xb8, 0x62, 0x71, 0xba, 0x77, 0xb7, - 0x34, 0x35, 0x4d, 0x26, 0x3d, 0x7a, 0xdb, 0xd2, 0xea, 0xa6, 0xb1, 0x9f, - 0x44, 0x1a, 0x8c, 0xdc, 0x07, 0x4b, 0xf1, 0x36, 0x4e, 0xaa, 0x9e, 0x5c, - 0x2a, 0x0a, 0xdf, 0x58, 0xc4, 0xb2, 0x1c, 0xc7, 0xf9, 0x11, 0x52, 0x85, - 0xd2, 0xea, 0xbf, 0x20, 0x96, 0x66, 0x2d, 0x66, 0x4f, 0xea, 0x8f, 0x23, - 0x00, 0x92, 0x66, 0x66, 0xd0, 0x72, 0x1b, 0xf8, 0xa0, 0x21, 0xd3, 0x11, - 0xa6, 0x7b, 0xb9, 0x77, 0x2e, 0x37, 0x79, 0x06, 0x78, 0x15, 0x5a, 0xb5, - 0x18, 0x01, 0xc7, 0xff, 0xa6, 0x38, 0x3b, 0x31, 0x93, 0x18, 0x46, 0x5f, - 0x4d, 0x14, 0x17, 0x06, 0x3b, 0x6c, 0xcc, 0x32, 0x05, 0x84, 0xd5, 0xd3, - 0xe2, 0x16, 0x2f, 0x81, 0xb0, 0x09, 0x42, 0x85, 0x33, 0x7a, 0xd5, 0x5d, - 0x23, 0xc6, 0x71, 0xb0, 0xa0, 0x17, 0x1f, 0xff, 0xdb, 0xdc, 0x85, 0x1a, - 0x11, 0x01, 0x45, 0x19, 0x84, 0xcb, 0x73, 0x79, 0x3b, 0x23, 0x3e, 0xf0, - 0x14, 0x58, 0x8a, 0xc1, 0x00, 0xe0, 0x9e, 0x62, 0x7b, 0xe3, 0x9f, 0xaf, - 0x8a, 0x63, 0x90, 0x1f, 0x6b, 0x7f, 0xf4, 0x5f, 0x32, 0x27, 0x3f, 0x0b, - 0x67, 0x66, 0x66, 0x66, 0xee, 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, - 0xdf, 0xbd, 0xfe, 0x81, 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, 0x0d, 0xd7, - 0x7b, 0xed, 0x42, 0x27, 0xf9, 0x14, 0xd4, 0x3d, 0x7e, 0x1c, 0x1d, 0x76, - 0x3f, 0xc7, 0x04, 0x5f, 0x2d, 0x46, 0x79, 0x88, 0xb0, 0xa9, 0x5c, 0xbf, - 0xfb, 0x17, 0xeb, 0x94, 0x85, 0x50, 0x76, 0x1c, 0x58, 0x74, 0xc2, 0x63, - 0x03, 0xeb, 0xf7, 0x12, 0xfd, 0xea, 0x36, 0x55, 0x23, 0xeb, 0xa9, 0xef, - 0xb8, 0x08, 0x00, 0xd2, 0x01, 0xaf, 0x48, 0x68, 0xf8, 0xba, 0xa8, 0x67, - 0x4f, 0x0d, 0x15, 0x58, 0x8b, 0xe2, 0x7e, 0x60, 0x94, 0x79, 0x0a, 0x24, - 0xd9, 0x77, 0x40, 0x8c, 0x76, 0x6d, 0xc2, 0x3b, 0x7b, 0x8c, 0x90, 0x83, - 0xaa, 0x5d, 0xe5, 0x8b, 0x2c, 0x85, 0xf4, 0x7d, 0x5f, 0x86, 0x0a, 0xf0, - 0xa8, 0x4b, 0x8b, 0x59, 0xe8, 0xe7, 0xe3, 0x4c, 0xd2, 0x92, 0x73, 0x4e, - 0x7f, 0x38, 0x5c, 0x5b, 0xe5, 0x58, 0x7d, 0x21, 0x0f, 0xb8, 0x2a, 0x68, - 0x72, 0x16, 0xc2, 0xa8, 0x0f, 0x97, 0xd6, 0x55, 0x51, 0x32, 0xef, 0x35, - 0x03, 0x00, 0x51, 0x64, 0xa6, 0x7b, 0xb9, 0x77, 0x2e, 0x37, 0x79, 0x06, - 0x78, 0x15, 0x5a, 0xb5, 0x18, 0x01, 0xc7, 0xff, 0xa6, 0x38, 0x3b, 0x31, - 0x93, 0x18, 0x46, 0x5f, 0x4d, 0x14, 0x17, 0x06, 0x3b, 0x6c, 0xcc, 0x32, - 0x93, 0x56, 0x1f, 0xb7, 0x6d, 0x27, 0x8b, 0x6a, 0x70, 0x5a, 0x86, 0xf5, - 0x78, 0x84, 0x47, 0xbd, 0x89, 0x25, 0x1f, 0x32, 0x73, 0x7c, 0x30, 0x37, - 0x21, 0xf8, 0x90, 0x40, 0x5e, 0xaa, 0xa7, 0x29, 0x67, 0x9b, 0x2e, 0xd1, - 0x2a, 0xc1, 0x0f, 0x6f, 0x65, 0x6e, 0xfb, 0x5b, 0x8a, 0xe6, 0xea, 0xd0, - 0xd3, 0x62, 0x73, 0x04, 0xe0, 0x5a, 0xa8, 0x41, 0x89, 0xe2, 0xad, 0x9f, - 0xa6, 0xb7, 0xeb, 0x07, 0x28, 0x99, 0xc1, 0x68, 0xeb, 0x1e, 0xdc, 0xa5, - 0x32, 0xa7, 0x12, 0xc2, 0x24, 0x4e, 0x45, 0x07, 0x59, 0xe3, 0xc8, 0xb5, - 0xc4, 0xd4, 0x20, 0xac, 0x3a, 0x32, 0x3e, 0x1d, 0x76, 0xc7, 0x7a, 0x40, - 0x01, 0x00, 0x00, 0x10, 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, 0xcf, - 0xc2, 0xc9, 0x81, 0xfe, 0x84, 0xba, 0x07, 0x89, 0x87, 0x3a, 0x06, 0xb0, - 0x73, 0xa5, 0x03, 0xf7, 0xdd, 0xcc, 0xae, 0x6c, 0x66, 0xfe, 0x4c, 0xc4, - 0xde, 0x76, 0x99, 0x6b, 0x73, 0x5b, 0x0a, 0xa5, 0x64, 0x12, 0xd9, 0xfb, - 0xf5, 0xcb, 0x8f, 0xfc, 0x13, 0xf2, 0xea, 0x5d, 0xe3, 0xda, 0x8e, 0x5a, - 0x95, 0x51, 0xd9, 0x37, 0x50, 0xa2, 0x28, 0x8d, 0xa0, 0x61, 0x0e, 0xe3, - 0x11, 0x65, 0x20, 0xdf, 0x69, 0xfb, 0x15, 0xaa, 0xac, 0x4e, 0x5d, 0x8d, - 0xf0, 0xe2, 0x97, 0xfd, 0xc2, 0x3c, 0x79, 0x8f, 0x29, 0xc1, 0xce, 0x48, - 0x1a, 0x68, 0xa0, 0x50, 0xe3, 0x42, 0xba, 0x5a, 0x0e, 0x00, 0x86, 0x91, - 0x26, 0x8e, 0xff, 0xa2, 0x73, 0x39, 0x8c, 0x03, 0xb3, 0xf0, 0xe8, 0xca, - 0x9b, 0xbe, 0xe3, 0x02, 0x8d, 0x16, 0x5e, 0x3e, 0xb8, 0x37, 0x33, 0xab, - 0x2c, 0x29, 0x5e, 0x6e, 0x20, 0x31, 0x22, 0x4a, 0x7c, 0xd8, 0x39, 0xfd, - 0x4e, 0xda, 0x22, 0x67, 0xb3, 0x04, 0x3f, 0x8b, 0x50, 0x1c, 0x6a, 0x4e, - 0xbe, 0xe7, 0x01, 0x62, 0x05, 0x84, 0xd5, 0xd3, 0xe2, 0x16, 0x2f, 0x81, - 0xb0, 0x09, 0x42, 0x85, 0x33, 0x7a, 0xd5, 0x5d, 0x23, 0xc6, 0x71, 0xb0, - 0xa0, 0x17, 0x1f, 0xff, 0xdb, 0xdc, 0x85, 0x1a, 0x11, 0x01, 0x45, 0x19, - 0x67, 0x9b, 0x2e, 0xd1, 0x2a, 0xc1, 0x0f, 0x6f, 0x65, 0x6e, 0xfb, 0x5b, - 0x8a, 0xe6, 0xea, 0xd0, 0xd3, 0x62, 0x73, 0x04, 0xe0, 0x5a, 0xa8, 0x41, - 0x89, 0xe2, 0xad, 0x9f, 0xa6, 0xb7, 0xeb, 0x07, 0x75, 0x83, 0x48, 0x1e, - 0x91, 0x4f, 0x3b, 0x24, 0x04, 0xf5, 0x4f, 0xf9, 0x94, 0x58, 0xb8, 0x25, - 0x43, 0xe4, 0x80, 0xa0, 0xea, 0xa7, 0x05, 0x25, 0x48, 0x79, 0x48, 0xc9, - 0xcc, 0xe4, 0xd1, 0x5f, 0x61, 0xe0, 0x38, 0x65, 0x0b, 0x43, 0xdb, 0x3b, - 0xef, 0x59, 0xd5, 0xd4, 0xfc, 0xa8, 0x1d, 0x8f, 0xdd, 0x26, 0x2b, 0xb9, - 0xb6, 0x95, 0x95, 0xf5, 0x25, 0x62, 0x9f, 0xed, 0xde, 0xfa, 0x3f, 0x09, - 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, 0x2c, 0x9d, 0xff, 0xff, - 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, - 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, 0xa4, 0xf1, 0xe5, 0x6b, - 0x98, 0x74, 0xb1, 0x02, 0x2b, 0xf2, 0x95, 0x7f, 0x40, 0x1d, 0x14, 0xf1, - 0xda, 0x64, 0xb3, 0xc2, 0xbd, 0x70, 0x08, 0xce, 0xfa, 0x2f, 0x71, 0xcb, - 0x02, 0x13, 0xeb, 0x18, 0x7f, 0x72, 0x2b, 0x6a, 0x8a, 0x51, 0xc5, 0x3a, - 0xee, 0xca, 0x8c, 0xb4, 0x60, 0x92, 0xcd, 0x46, 0x8b, 0x29, 0x4b, 0xe3, - 0xbf, 0x42, 0xc9, 0x65, 0x5e, 0x21, 0x3d, 0x21, 0x1a, 0x12, 0x04, 0x35, - 0xd6, 0x07, 0xc9, 0x9b, 0x2f, 0x15, 0x93, 0x6a, 0x3f, 0xc2, 0x9c, 0x30, - 0x4b, 0x20, 0xb2, 0xbb, 0x50, 0xa9, 0xd9, 0x8f, 0x34, 0xaf, 0x35, 0xd7, - 0x4e, 0x90, 0x23, 0x71, 0xdc, 0x4b, 0xdc, 0x1a, 0x63, 0x2a, 0x48, 0x83, - 0xaf, 0x86, 0x6e, 0xc2, 0xbc, 0xbf, 0xc6, 0xe6, 0x17, 0xe9, 0xb9, 0xf9, - 0xcd, 0x55, 0x5b, 0x13, 0x0a, 0xa6, 0x65, 0xcc, 0x46, 0x19, 0x8d, 0xc6, - 0xbd, 0x40, 0x6b, 0x3b, 0x84, 0xcb, 0x73, 0x79, 0x3b, 0x23, 0x3e, 0xf0, - 0x14, 0x58, 0x8a, 0xc1, 0x00, 0xe0, 0x9e, 0x62, 0x7b, 0xe3, 0x9f, 0xaf, - 0x8a, 0x63, 0x90, 0x1f, 0x6b, 0x7f, 0xf4, 0x5f, 0x32, 0x27, 0x3f, 0x0b, - 0x28, 0x99, 0xc1, 0x68, 0xeb, 0x1e, 0xdc, 0xa5, 0x32, 0xa7, 0x12, 0xc2, - 0x24, 0x4e, 0x45, 0x07, 0x59, 0xe3, 0xc8, 0xb5, 0xc4, 0xd4, 0x20, 0xac, - 0x3a, 0x32, 0x3e, 0x1d, 0x76, 0xc7, 0x7a, 0x40, 0x61, 0xe0, 0x38, 0x65, - 0x0b, 0x43, 0xdb, 0x3b, 0xef, 0x59, 0xd5, 0xd4, 0xfc, 0xa8, 0x1d, 0x8f, - 0xdd, 0x26, 0x2b, 0xb9, 0xb6, 0x95, 0x95, 0xf5, 0x25, 0x62, 0x9f, 0xed, - 0xde, 0xfa, 0x3f, 0x09, 0x24, 0x25, 0xa8, 0x6d, 0x2f, 0xb3, 0x53, 0x08, - 0x70, 0xba, 0x87, 0x5a, 0x92, 0x31, 0xb2, 0xa3, 0xaa, 0x72, 0x11, 0x89, - 0xef, 0x0f, 0x83, 0xe7, 0x7b, 0x32, 0x6a, 0x96, 0xeb, 0x85, 0xe4, 0x12, - 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, - 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, - 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x7d, 0xc7, 0xfe, 0x3b, - 0xc3, 0x5b, 0xf4, 0xea, 0x5c, 0x49, 0x7d, 0xf3, 0x9a, 0x94, 0x98, 0x0a, - 0xc1, 0x54, 0x1e, 0xa2, 0xb9, 0x69, 0x63, 0x50, 0xec, 0x34, 0x2b, 0x7b, - 0x92, 0xd3, 0xd9, 0x39, 0x19, 0x10, 0x7f, 0xe9, 0xab, 0x61, 0xd6, 0x74, - 0x39, 0x5b, 0x52, 0xcd, 0x00, 0xc0, 0x8a, 0xe1, 0x5a, 0x11, 0x0f, 0x7f, - 0xbb, 0x73, 0xdd, 0xcd, 0x92, 0x5d, 0x82, 0x37, 0x8b, 0x99, 0xbb, 0x38, - 0xb6, 0x9c, 0x35, 0xbb, 0x0d, 0xe9, 0x47, 0x4e, 0x6a, 0x51, 0xd6, 0xde, - 0xb0, 0x87, 0xeb, 0x85, 0x9d, 0x7a, 0xdd, 0xaa, 0xc1, 0x07, 0xa6, 0xf5, - 0x39, 0x13, 0xab, 0x93, 0x4c, 0x70, 0xfb, 0x0c, 0x59, 0x20, 0x2e, 0x2c, - 0x23, 0x40, 0xd8, 0xec, 0xf8, 0x2d, 0x1a, 0xc0, 0x0b, 0x40, 0xd9, 0xd2, - 0x30, 0x11, 0xe3, 0x12, 0xa0, 0xd0, 0x11, 0xc6, 0x9c, 0x84, 0x5f, 0xa4, - 0xd4, 0xc6, 0x85, 0x2a, 0x5d, 0x32, 0x3b, 0xf5, 0x3e, 0xd2, 0x99, 0x44, - 0xa5, 0x69, 0x2c, 0x53, 0x8b, 0xe8, 0xbc, 0xb0, 0x27, 0x9a, 0xea, 0x87, - 0x14, 0xfc, 0x48, 0x3f, 0x22, 0xed, 0x8e, 0x59, 0x68, 0x2a, 0xf3, 0x25, - 0x4c, 0xd9, 0x5a, 0x7a, 0x0e, 0xd8, 0x74, 0xf0, 0x5a, 0x6c, 0xd8, 0xcb, - 0xa6, 0xd2, 0xb8, 0xfa, 0xc1, 0xda, 0xc2, 0x5c, 0x2d, 0x3c, 0x51, 0xfb, - 0xf4, 0xf4, 0x28, 0xf8, 0x90, 0x02, 0x5e, 0x71, 0xe9, 0x24, 0xbc, 0x31, - 0x72, 0xad, 0x1f, 0x09, 0x9b, 0x2e, 0x06, 0x27, 0xb4, 0x09, 0xc5, 0xe5, - 0xc2, 0x8e, 0x12, 0x60, 0x39, 0x1d, 0xc8, 0xfe, 0x3b, 0x34, 0x16, 0x77, - 0x96, 0xc7, 0x18, 0x51, 0xfb, 0x79, 0x13, 0xa4, 0x97, 0xb5, 0x7e, 0xe7, - 0x64, 0xa4, 0x82, 0x85, 0x59, 0x1f, 0xf6, 0x9f, 0x81, 0x36, 0xbc, 0x48, - 0x78, 0xb8, 0xd2, 0x9e, 0x1c, 0x8d, 0x80, 0xca, 0x80, 0xef, 0x86, 0x45, - 0xea, 0xd1, 0x16, 0x1e, 0xca, 0x03, 0x49, 0x80, 0xf7, 0xfc, 0x00, 0xda, - 0x4c, 0x6b, 0xa5, 0x6d, 0x1c, 0xd1, 0x64, 0xe2, 0x38, 0x33, 0xde, 0xe1, - 0x00, 0x9e, 0x62, 0xd3, 0x20, 0x37, 0xa5, 0x50, 0x96, 0xe6, 0x2e, 0x46, - 0xb3, 0x01, 0x67, 0xb7, 0x31, 0xb7, 0x17, 0x5d, 0xde, 0xe1, 0x2c, 0x8e, - 0xf3, 0x66, 0x82, 0xec, 0x07, 0x09, 0x5a, 0x94, 0x5e, 0x43, 0xc9, 0x8e, - 0x77, 0xbb, 0x6e, 0x12, 0x0a, 0x17, 0xd1, 0x29, 0x47, 0xe1, 0xf5, 0x63, - 0x46, 0x63, 0x09, 0x0d, 0xdf, 0xe6, 0x04, 0x4f, 0x3e, 0x9c, 0x97, 0xec, - 0x59, 0xc2, 0x58, 0xa7, 0xc3, 0x8f, 0x51, 0x69, 0xc6, 0x13, 0x2b, 0x18, - 0x3f, 0x70, 0x80, 0x80, 0x5c, 0x80, 0xdb, 0x19, 0x95, 0xec, 0x54, 0xc9, - 0x4a, 0xa1, 0x54, 0xd1, 0x2e, 0x76, 0xe9, 0x1a, 0x7d, 0xfc, 0xa2, 0x52, - 0xea, 0x6e, 0xe9, 0xa2, 0x55, 0x39, 0x76, 0x28, 0xa2, 0xb4, 0x44, 0x9e, - 0x03, 0x69, 0x64, 0x38, 0x38, 0x9c, 0xb1, 0x97, 0x1a, 0xe4, 0xcb, 0xc8, - 0xf6, 0xf5, 0xb2, 0x93, 0xae, 0xc7, 0x25, 0xe1, 0x2b, 0x67, 0x6c, 0xd6, - 0x31, 0xce, 0xca, 0x39, 0x65, 0x22, 0x74, 0xd8, 0x1a, 0x22, 0xb1, 0x7b, - 0xf6, 0x91, 0x0c, 0xf7, 0x18, 0xeb, 0xc4, 0x21, 0x62, 0x3e, 0x6d, 0x70, - 0x6f, 0xce, 0xab, 0x8c, 0xcd, 0xbd, 0x17, 0x20, 0x1c, 0x42, 0xb2, 0x6b, - 0x3e, 0xb1, 0xb4, 0xf0, 0x92, 0x0d, 0x48, 0x76, 0x8a, 0x00, 0x2c, 0xce, - 0x06, 0x26, 0x0a, 0x15, 0x52, 0x38, 0x54, 0xdc, 0xfe, 0x08, 0xcd, 0xbc, - 0xe2, 0x66, 0xa9, 0x1f, 0xd3, 0x74, 0x14, 0x55, 0xa1, 0x61, 0xdb, 0x08, - 0x42, 0x4b, 0xb7, 0x96, 0x3e, 0xb3, 0xb5, 0xe6, 0x95, 0x10, 0x3d, 0xbc, - 0x02, 0x6a, 0xf3, 0xdf, 0xfa, 0xad, 0xb7, 0xdf, 0x5a, 0x77, 0xd5, 0x0e, - 0xe6, 0x19, 0x14, 0x13, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, - 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, - 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, - 0xbe, 0xcf, 0x2f, 0x48, 0xf4, 0x69, 0x25, 0xe9, 0x46, 0xae, 0x06, 0xd4, - 0x78, 0x60, 0xee, 0x4d, 0x66, 0xa2, 0xdd, 0xf1, 0x28, 0x78, 0x6c, 0x69, - 0x6d, 0x8a, 0xc8, 0x4e, 0x07, 0x09, 0x6b, 0x02, 0x73, 0xdb, 0xc3, 0xdb, - 0xdf, 0x84, 0xbe, 0x22, 0xa3, 0xf0, 0x72, 0xb5, 0xb2, 0x23, 0xc5, 0x7c, - 0x0c, 0x0f, 0x72, 0x1f, 0x64, 0x11, 0xd3, 0xaf, 0x60, 0x63, 0xe5, 0x24, - 0x3c, 0xb1, 0x68, 0x48, 0xef, 0x59, 0x70, 0x63, 0x98, 0xc7, 0x73, 0xbc, - 0x36, 0x3a, 0x6e, 0x9c, 0xdd, 0x5e, 0xaa, 0xcd, 0x65, 0xde, 0xc4, 0x1f, - 0x9c, 0xbc, 0x95, 0xe7, 0x13, 0x70, 0xa8, 0x9d, 0x02, 0x17, 0x35, 0x12, - 0x15, 0x03, 0x06, 0xc5, 0xd9, 0xad, 0xff, 0xfe, 0xce, 0x53, 0x78, 0x76, - 0x54, 0x74, 0x63, 0x96, 0xcc, 0xdb, 0x9a, 0x75, 0x25, 0x3b, 0xa7, 0x9d, - 0x6f, 0xcc, 0x3b, 0xe5, 0x07, 0x25, 0xb1, 0x5f, 0x02, 0x4e, 0xfa, 0xfc, - 0xd6, 0x27, 0x1f, 0xf0, 0xb9, 0x09, 0x88, 0xd0, 0x14, 0xa0, 0xa1, 0xac, - 0x4a, 0xff, 0xe6, 0xd7, 0x8c, 0xd8, 0xda, 0xd1, 0x5f, 0x9d, 0x60, 0x62, - 0x7a, 0x7e, 0x0b, 0x19, 0xf4, 0xce, 0x06, 0xdd, 0xf7, 0x89, 0x23, 0x66, - 0x14, 0xea, 0x84, 0x17, 0x2c, 0x9c, 0x79, 0x0b, 0x78, 0x59, 0xe2, 0xe2, - 0x32, 0x4d, 0x53, 0x8a, 0x1f, 0x6c, 0x81, 0xc6, 0x73, 0xfd, 0x1e, 0x27, - 0x0b, 0x21, 0x29, 0xf2, 0x2d, 0x39, 0xb6, 0xfa, 0x8f, 0x58, 0x4e, 0x73, - 0x18, 0xc7, 0x46, 0xba, 0xac, 0xfa, 0x34, 0x79, 0x37, 0xe9, 0x76, 0xa2, - 0x9f, 0x15, 0xf8, 0xb4, 0x64, 0x18, 0x6a, 0x31, 0x19, 0xd9, 0xee, 0x60, - 0x3c, 0x5d, 0x43, 0x8f, 0x3e, 0x1b, 0x69, 0x04, 0x49, 0x38, 0xe1, 0x6b, - 0x1a, 0x38, 0x9a, 0xe2, 0x18, 0x27, 0xd9, 0x39, 0x40, 0x9f, 0x08, 0x01, - 0x1e, 0xbd, 0x5b, 0x20, 0x9d, 0x09, 0xbd, 0x50, 0x9e, 0x2c, 0x74, 0x65, - 0x60, 0x9d, 0x52, 0x75, 0x25, 0xcc, 0xc7, 0x66, 0xad, 0x3c, 0xd3, 0x1c, - 0xf1, 0x2c, 0x3e, 0xab, 0xe5, 0x6d, 0x3a, 0x5c, 0x77, 0x27, 0x1b, 0x3a, - 0xef, 0xe5, 0x96, 0x15, 0x93, 0x5f, 0x31, 0x4e, 0xd5, 0x5d, 0x3d, 0xd0, - 0x2f, 0x0b, 0x0f, 0xb6, 0xee, 0x6d, 0x8e, 0xe7, 0x95, 0xf8, 0xa6, 0xd5, - 0x1e, 0x13, 0x2c, 0x27, 0x70, 0x87, 0x89, 0x73, 0xec, 0x47, 0x6b, 0x35, - 0xba, 0x1d, 0x64, 0x81, 0xb2, 0x3b, 0xd2, 0x2b, 0x41, 0x7b, 0xc6, 0x75, - 0x0a, 0xe5, 0xd1, 0x23, 0xf8, 0xb7, 0x00, 0xd6, 0x69, 0xb4, 0xf0, 0x7c, - 0x88, 0xaa, 0x54, 0x35, 0x67, 0xa5, 0x64, 0x27, 0xdf, 0x82, 0x66, 0x3d, - 0x4c, 0xb8, 0x96, 0xdd, 0x58, 0x0a, 0x1b, 0x90, 0x7a, 0x4f, 0xd3, 0x63, - 0xdb, 0x2a, 0xbf, 0xc7, 0xe3, 0xe4, 0xb5, 0x9f, 0xa7, 0x33, 0x4b, 0x10, - 0xb5, 0x52, 0x26, 0x88, 0xdf, 0xce, 0x27, 0x96, 0x86, 0x3b, 0xaa, 0xcf, - 0xa9, 0xde, 0xc8, 0xaa, 0x43, 0xe1, 0x06, 0xa0, 0x6c, 0x82, 0x9e, 0x58, - 0x80, 0x62, 0x1c, 0xac, 0x5e, 0x0d, 0x74, 0x46, 0x65, 0x0d, 0x67, 0x30, - 0x4b, 0xb9, 0x94, 0x03, 0x9e, 0x25, 0x24, 0x8d, 0xa4, 0x67, 0xac, 0x32, - 0x47, 0x69, 0x9a, 0xe5, 0xa4, 0xb3, 0xbe, 0xca, 0xa8, 0x96, 0x86, 0x6d, - 0xd5, 0xe6, 0x89, 0x0e, 0x29, 0x1f, 0x78, 0x51, 0xc8, 0x86, 0x47, 0x37, - 0x0e, 0x2a, 0xbe, 0xc6, 0xc3, 0x71, 0xb1, 0x66, 0xc7, 0x9f, 0xf4, 0x5b, - 0x88, 0xf3, 0x50, 0x4f, 0x6b, 0x76, 0x05, 0xac, 0xd8, 0x89, 0x26, 0x39, - 0xd0, 0xc8, 0xb1, 0x1b, 0xb9, 0x37, 0xfa, 0x75, 0x74, 0xc9, 0x9d, 0x41, - 0x2e, 0xf9, 0x5b, 0x37, 0x7c, 0x3c, 0x1f, 0x07, 0xba, 0x8e, 0xc3, 0xb5, - 0x66, 0xf4, 0x96, 0x92, 0x5f, 0xc2, 0xf6, 0x04, 0xab, 0xaa, 0xaa, 0xaa, - 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, - 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, - 0xbd, 0x08, 0xc3, 0x19, 0xe1, 0x05, 0x0f, 0x30, 0x27, 0x15, 0xc4, 0x25, - 0xaf, 0x95, 0x12, 0x42, 0x40, 0x47, 0xa7, 0x54, 0x19, 0x8e, 0x53, 0x9c, - 0xdf, 0xbc, 0x9c, 0x14, 0x44, 0xcf, 0xb5, 0xbf, 0x17, 0xd4, 0xdf, 0x3c, - 0xde, 0x03, 0xb5, 0x06, 0x84, 0xf1, 0xf1, 0x69, 0x1d, 0xbd, 0x67, 0x97, - 0xf9, 0x6d, 0xd1, 0x2f, 0x5f, 0x57, 0x52, 0x2a, 0x51, 0x94, 0x07, 0x8f, - 0x7b, 0x09, 0x8f, 0xce, 0x9d, 0xca, 0x84, 0x12, 0x41, 0x18, 0xf0, 0x89, - 0xa7, 0x57, 0x7d, 0x1f, 0xa8, 0xef, 0x9e, 0x5a, 0x40, 0x60, 0x8f, 0x79, - 0xd8, 0xa8, 0x7b, 0x83, 0x68, 0xf4, 0xf6, 0xc6, 0xf6, 0xd7, 0x49, 0x91, - 0xa1, 0x66, 0x57, 0x0d, 0x30, 0xb6, 0x58, 0x64, 0x83, 0xbc, 0x07, 0x25, - 0xce, 0x5f, 0xbe, 0x5a, 0xf8, 0xbc, 0x7f, 0x7c, 0xa5, 0xe3, 0x1e, 0x54, - 0xa3, 0xda, 0xe7, 0xc9, 0x78, 0x32, 0x4f, 0x57, 0x79, 0x71, 0x01, 0x6c, - 0xfa, 0x0e, 0xde, 0x71, 0x85, 0x01, 0xae, 0x91, 0x5c, 0x79, 0x27, 0x54, - 0x37, 0xe9, 0x15, 0x89, 0xa3, 0x6c, 0x05, 0x8b, 0xef, 0x11, 0x92, 0x27, - 0x08, 0x9b, 0x24, 0x18, 0x88, 0xd6, 0xa1, 0x56, 0x1b, 0x31, 0xab, 0xa4, - 0xb7, 0x5f, 0x2f, 0x3e, 0xbd, 0x8f, 0x74, 0x7f, 0xbc, 0x91, 0xe8, 0x05, - 0x3f, 0xc6, 0x74, 0x84, 0x19, 0xf5, 0xb7, 0x32, 0x75, 0x40, 0x06, 0xdc, - 0x36, 0xf1, 0xb5, 0x26, 0x44, 0xd6, 0xcc, 0x6f, 0x9e, 0xab, 0xf1, 0x1d, - 0x19, 0x31, 0x13, 0x6c, 0x12, 0x66, 0xbe, 0x21, 0xce, 0x35, 0x7f, 0x5b, - 0xe1, 0xc7, 0xe4, 0x53, 0xdc, 0x28, 0xf0, 0xb9, 0xf7, 0x33, 0xc6, 0x5c, - 0x4d, 0x80, 0xf3, 0xc3, 0xea, 0x53, 0x27, 0xf5, 0x0f, 0x7f, 0x98, 0x3e, - 0x01, 0x54, 0x57, 0x5b, 0x2c, 0x93, 0x00, 0xc6, 0xec, 0x0b, 0xc2, 0x1b, - 0x5e, 0xe5, 0x9a, 0xf6, 0x80, 0xec, 0x2a, 0x2a, 0x08, 0xf0, 0xfd, 0xd2, - 0xf8, 0xb2, 0x3d, 0x67, 0x37, 0xa9, 0x18, 0x34, 0x5a, 0x1e, 0x98, 0x98, - 0x2b, 0x75, 0x1a, 0x99, 0x4c, 0x69, 0xd1, 0x1a, 0x60, 0x48, 0x7d, 0x8f, - 0x52, 0x64, 0x7e, 0x1b, 0xad, 0x4c, 0x4d, 0xd2, 0x92, 0x18, 0x7b, 0x57, - 0x30, 0x50, 0x66, 0x87, 0x21, 0xe6, 0xe8, 0x3e, 0x9c, 0x01, 0xbb, 0xd5, - 0x8a, 0x80, 0xa1, 0x8f, 0xff, 0xbf, 0x90, 0xb3, 0xcd, 0xfb, 0x21, 0x70, - 0x7a, 0xd7, 0xf2, 0x89, 0xc0, 0xb4, 0xe9, 0x77, 0x5a, 0xfd, 0x5a, 0xf5, - 0x8d, 0x38, 0x65, 0xf5, 0xb5, 0x7b, 0xbc, 0x39, 0xc4, 0x81, 0x74, 0x3d, - 0xad, 0x07, 0x00, 0xa1, 0x29, 0xdb, 0x14, 0x08, 0x92, 0xff, 0x76, 0x70, - 0xe7, 0xfe, 0xf1, 0x10, 0x5e, 0x92, 0xb9, 0xbd, 0x9a, 0xec, 0xe5, 0x33, - 0x24, 0x4f, 0x16, 0x90, 0x0e, 0x82, 0x75, 0xf6, 0xe2, 0xea, 0xee, 0x66, - 0xff, 0x1e, 0xbf, 0x26, 0xaa, 0x35, 0x73, 0x5e, 0x22, 0x3c, 0xe8, 0xf2, - 0x3f, 0xc0, 0x3e, 0x8b, 0x21, 0xd7, 0xd8, 0x1b, 0xcc, 0x50, 0xc9, 0x42, - 0xfe, 0xd8, 0x57, 0x23, 0xae, 0x5c, 0xb5, 0x67, 0xac, 0xd1, 0xf3, 0x63, - 0x2a, 0xd2, 0x73, 0x79, 0x00, 0x20, 0x40, 0x56, 0xe8, 0xd9, 0x15, 0x17, - 0x8c, 0x6e, 0x2b, 0xd3, 0xef, 0x58, 0x7f, 0x29, 0x28, 0x5a, 0xda, 0xd9, - 0xdf, 0x50, 0xd5, 0xec, 0xdd, 0x5e, 0xbc, 0x70, 0x81, 0xc5, 0xab, 0x08, - 0xe8, 0x20, 0x5c, 0x7e, 0x37, 0x55, 0x8b, 0xaf, 0xcc, 0xce, 0xf1, 0x12, - 0x6e, 0xe7, 0xe2, 0x1a, 0x6b, 0x0d, 0x30, 0x9d, 0xfc, 0x20, 0xa7, 0xeb, - 0xdf, 0x81, 0xfa, 0x6f, 0x19, 0x42, 0x42, 0x8e, 0xfc, 0x99, 0x3d, 0x6b, - 0x98, 0x84, 0xfb, 0x82, 0xb8, 0x96, 0xf2, 0x3c, 0x59, 0x95, 0x17, 0xd6, - 0x8b, 0xcc, 0x13, 0x32, 0x51, 0xbb, 0xb7, 0x2c, 0xd3, 0xc5, 0xa5, 0x22, - 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, - 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, - 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xcf, 0x8e, 0x4a, 0xc2, - 0x22, 0x2f, 0x48, 0x28, 0xa3, 0xb4, 0x4d, 0xfe, 0x58, 0x6d, 0xc2, 0xb6, - 0xb0, 0x0d, 0xc4, 0xf4, 0xac, 0x14, 0x68, 0x37, 0xff, 0xbb, 0x75, 0xb0, - 0x97, 0x2d, 0xce, 0x73, 0xd1, 0xe3, 0xf4, 0x88, 0x58, 0x91, 0x3d, 0x52, - 0xe2, 0xd0, 0xc8, 0xb5, 0xb0, 0x10, 0x15, 0x92, 0x19, 0xf7, 0x64, 0x01, - 0x91, 0xff, 0xf9, 0xf9, 0xa8, 0x18, 0x88, 0xe4, 0x46, 0xb8, 0x83, 0x1b, - 0x08, 0x4f, 0x5c, 0xb7, 0xa5, 0x32, 0x30, 0x4c, 0x7d, 0x3d, 0x7d, 0x99, - 0x5f, 0x25, 0x91, 0x65, 0x32, 0x27, 0xc8, 0xe3, 0xe0, 0x08, 0x04, 0x90, - 0x57, 0xb3, 0xbd, 0xa0, 0x51, 0x37, 0xe9, 0x2f, 0x97, 0x4f, 0x1b, 0xab, - 0xae, 0xc5, 0x65, 0x7d, 0x74, 0xb3, 0xdf, 0x88, 0x9b, 0xe1, 0x72, 0xf4, - 0x3a, 0xb1, 0x1b, 0x3f, 0x94, 0xff, 0x25, 0xb2, 0x1c, 0x66, 0xbf, 0x1e, - 0xb3, 0x95, 0x00, 0x01, 0x5a, 0x3c, 0x90, 0x81, 0xcd, 0x89, 0x31, 0x98, - 0x7d, 0xa8, 0xd7, 0x2f, 0x29, 0xef, 0x42, 0x2e, 0x50, 0xd0, 0x4a, 0x65, - 0x2f, 0x76, 0x4d, 0x5a, 0xa9, 0x07, 0xde, 0xd1, 0x5a, 0x5b, 0x91, 0x48, - 0xc4, 0xb5, 0x0d, 0x68, 0x17, 0xee, 0x32, 0x0b, 0xdc, 0xba, 0x5d, 0x3f, - 0x6e, 0x46, 0x51, 0xad, 0x34, 0xab, 0x2b, 0x02, 0xea, 0xc0, 0x7d, 0x8e, - 0xe2, 0x02, 0x17, 0xf5, 0x9b, 0x0e, 0xb8, 0x25, 0x66, 0xd4, 0xc7, 0x4a, - 0x4b, 0xc4, 0x5d, 0xe4, 0x5e, 0xb2, 0x49, 0x49, 0x9f, 0x8d, 0x72, 0x87, - 0xc1, 0x3e, 0x02, 0x76, 0x9f, 0xc4, 0xe6, 0xa7, 0x4c, 0x60, 0xe0, 0x64, - 0x28, 0x79, 0xef, 0x19, 0x59, 0x57, 0xe0, 0x02, 0xdd, 0x4f, 0x9c, 0x28, - 0x38, 0xe9, 0xff, 0x08, 0xb0, 0xaa, 0x06, 0x04, 0xbc, 0x68, 0x1e, 0x2f, - 0x0e, 0x1a, 0x67, 0x41, 0x57, 0x82, 0x67, 0x00, 0xc3, 0xf9, 0xfe, 0x0f, - 0x03, 0x8d, 0x7f, 0x2a, 0x27, 0xe0, 0xb0, 0x89, 0x52, 0x2b, 0x52, 0x89, - 0x3e, 0xaf, 0xfb, 0x2a, 0xc4, 0x84, 0xe9, 0x0f, 0x5b, 0x1c, 0x78, 0xe4, - 0xab, 0x75, 0xd9, 0x96, 0xbb, 0xda, 0x94, 0x3c, 0xae, 0xed, 0xf3, 0xa3, - 0xae, 0xea, 0xdd, 0x3e, 0x72, 0xfd, 0xad, 0xb7, 0xa7, 0x20, 0xb7, 0x09, - 0x54, 0xc9, 0x63, 0x1a, 0xf1, 0x6c, 0x4a, 0xb9, 0x43, 0x95, 0x47, 0xee, - 0x9d, 0x7b, 0x32, 0x50, 0x4c, 0x8b, 0x61, 0x7d, 0x5c, 0xcb, 0x02, 0x98, - 0x0b, 0x16, 0x22, 0x20, 0x4e, 0x96, 0xe3, 0xdf, 0x9b, 0xff, 0xe3, 0xf2, - 0x76, 0x4f, 0x26, 0x54, 0x99, 0x60, 0x1d, 0x7a, 0x84, 0xcb, 0xe4, 0x04, - 0x56, 0x55, 0xb3, 0x62, 0xbf, 0xb1, 0x0b, 0xb0, 0x8e, 0x42, 0xdd, 0xb2, - 0x8e, 0x60, 0xeb, 0x18, 0xc4, 0x03, 0x6a, 0x1d, 0x07, 0xae, 0x64, 0xf6, - 0x06, 0xd7, 0x15, 0x1e, 0x4e, 0xe9, 0xca, 0x40, 0xe4, 0x76, 0x80, 0x71, - 0xda, 0xa9, 0xbb, 0x96, 0xec, 0xfe, 0xe3, 0x37, 0x7c, 0x5b, 0x00, 0x37, - 0x61, 0x61, 0x10, 0xc6, 0x1f, 0x29, 0x0a, 0xd7, 0xd4, 0xcf, 0xbd, 0x22, - 0x33, 0x60, 0xc8, 0x2c, 0xf0, 0x27, 0x31, 0x7d, 0xb9, 0x40, 0xf3, 0x57, - 0x2f, 0x9b, 0x63, 0xa7, 0x02, 0x86, 0xa9, 0xe7, 0xbb, 0x40, 0x98, 0x59, - 0x73, 0x2e, 0x1a, 0xa9, 0x74, 0xb6, 0x99, 0xf5, 0xc2, 0x7b, 0x97, 0x44, - 0x85, 0x8f, 0x2a, 0xd3, 0xf0, 0x6f, 0xc0, 0xcb, 0x95, 0x8c, 0x61, 0xd6, - 0xe1, 0xe8, 0x42, 0xf0, 0x8b, 0x41, 0x8a, 0xaf, 0xd1, 0x4c, 0xd4, 0xc6, - 0x8c, 0x84, 0x3f, 0xd6, 0xf7, 0x2e, 0x3a, 0x39, 0x45, 0x81, 0x44, 0xc2, - 0x4b, 0x29, 0x69, 0xee, 0x59, 0xc4, 0xb4, 0x93, 0xa6, 0xc5, 0x04, 0xe0, - 0xd0, 0x4f, 0xf6, 0x9c, 0x3f, 0x20, 0x3c, 0x77, 0x93, 0x70, 0xb8, 0x70, - 0xa3, 0xcb, 0x15, 0x60, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, - 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, - 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, - 0xb1, 0x81, 0x8a, 0x2f, 0x8e, 0x5d, 0x69, 0x29, 0x89, 0xdd, 0xaa, 0x10, - 0x96, 0x77, 0xee, 0x76, 0x10, 0x6b, 0xeb, 0xba, 0x3b, 0x31, 0x0d, 0xfa, - 0x99, 0x89, 0x61, 0xbd, 0xf1, 0x99, 0x2e, 0x21, 0xda, 0xdc, 0x71, 0xf9, - 0xae, 0xa3, 0x47, 0xe5, 0x61, 0x3a, 0x74, 0xed, 0x90, 0xec, 0xff, 0x99, - 0xc7, 0xb5, 0x45, 0x66, 0x1b, 0x7a, 0x58, 0xab, 0xac, 0xb4, 0x3f, 0x83, - 0xee, 0xff, 0x38, 0x26, 0xd0, 0xc5, 0x7e, 0x9e, 0x44, 0xb7, 0x97, 0xc0, - 0xe8, 0x2d, 0x6a, 0xb1, 0x62, 0xc3, 0xf0, 0xf8, 0x9b, 0x0c, 0x92, 0x72, - 0xca, 0xeb, 0x5c, 0x94, 0xc8, 0x12, 0x52, 0xd3, 0x23, 0x72, 0x6e, 0x4b, - 0xbc, 0x50, 0xca, 0xa6, 0x67, 0xea, 0x0d, 0x35, 0x62, 0x53, 0x85, 0xff, - 0x25, 0x66, 0xa8, 0xf6, 0x79, 0xb5, 0xa4, 0x85, 0x60, 0x7d, 0x9b, 0x77, - 0xd7, 0x73, 0x61, 0xc5, 0x00, 0xa0, 0xd7, 0x4e, 0x33, 0x76, 0x02, 0xf3, - 0xd5, 0x88, 0xb5, 0xe2, 0x30, 0x19, 0x60, 0x42, 0xb2, 0xb8, 0x7d, 0x7c, - 0xc6, 0x40, 0x55, 0xba, 0x04, 0x74, 0xf1, 0x2c, 0x81, 0xac, 0x8f, 0xf3, - 0x17, 0xa2, 0x29, 0x5a, 0x1d, 0xa0, 0x90, 0xad, 0xf2, 0xc9, 0xa9, 0xea, - 0x37, 0x11, 0xa9, 0xc9, 0x35, 0x8d, 0xd7, 0xd5, 0x35, 0xc2, 0x29, 0x30, - 0x5c, 0xe0, 0x2c, 0xd0, 0x36, 0xf1, 0xa9, 0x9b, 0x25, 0xdb, 0x35, 0x56, - 0x7f, 0x64, 0x52, 0x55, 0xa9, 0xdd, 0x6a, 0x36, 0x2d, 0xc3, 0x20, 0x63, - 0x51, 0x66, 0xf9, 0xc2, 0xf5, 0xe9, 0x1e, 0x73, 0xbe, 0x25, 0x3b, 0x63, - 0x7a, 0x46, 0xde, 0xc3, 0x2b, 0xf8, 0x02, 0x20, 0x60, 0xf6, 0x9e, 0xbd, - 0x59, 0x19, 0xcd, 0xe6, 0x99, 0x6e, 0xa8, 0xd4, 0xbf, 0x41, 0xde, 0x81, - 0xb1, 0x98, 0xd8, 0x60, 0xcb, 0x78, 0xc5, 0xb9, 0x3b, 0xb9, 0xb6, 0xb3, - 0x26, 0xa3, 0x74, 0x33, 0x18, 0xbd, 0x40, 0xdb, 0x78, 0x17, 0x94, 0xf3, - 0xa3, 0xc1, 0x7c, 0x0a, 0x8a, 0x27, 0x0a, 0x5a, 0xb8, 0xc0, 0x77, 0xd2, - 0xd4, 0x60, 0xb0, 0x99, 0x8f, 0xde, 0x71, 0x30, 0xe9, 0xf1, 0x2b, 0x48, - 0xff, 0x8d, 0x84, 0x32, 0xc5, 0x5e, 0x3e, 0x35, 0xbd, 0x5d, 0x7f, 0x4a, - 0xc4, 0xfe, 0x61, 0x34, 0x96, 0x7e, 0x44, 0xa7, 0x30, 0xb9, 0xb2, 0x5a, - 0x00, 0xc2, 0x97, 0x5d, 0xdb, 0x85, 0x6b, 0x50, 0x28, 0x19, 0x74, 0x8c, - 0xc1, 0xa0, 0xc5, 0x2b, 0x3b, 0x59, 0x50, 0x59, 0xc8, 0x22, 0x2d, 0x74, - 0x49, 0xe9, 0xcf, 0x53, 0x85, 0x14, 0x56, 0x29, 0x7a, 0xd2, 0x10, 0x78, - 0x24, 0xd0, 0xa0, 0x53, 0xac, 0xa6, 0xad, 0x8a, 0xdf, 0x96, 0xd2, 0xe9, - 0xd5, 0x7a, 0x73, 0xb6, 0xc9, 0x81, 0x62, 0xe7, 0x36, 0xfa, 0x95, 0x7f, - 0xe6, 0x07, 0x2a, 0xc8, 0x1a, 0x17, 0x5e, 0xc8, 0x74, 0x06, 0x32, 0x6d, - 0x46, 0xc6, 0xce, 0x22, 0x8d, 0xc9, 0x78, 0xb3, 0xa8, 0x87, 0x0a, 0xd8, - 0x48, 0x31, 0xcd, 0x83, 0x55, 0xa4, 0x0b, 0x60, 0x91, 0xff, 0x32, 0x09, - 0x26, 0x77, 0x03, 0x23, 0x12, 0x33, 0x09, 0x3f, 0x80, 0x35, 0x5c, 0xe0, - 0x49, 0xc5, 0x70, 0xd9, 0x5f, 0x1f, 0x45, 0xd1, 0x24, 0xef, 0x9b, 0x16, - 0x7f, 0x35, 0x2a, 0xa6, 0x43, 0xbc, 0xd9, 0xfb, 0xb1, 0x64, 0x2d, 0xac, - 0x9d, 0x85, 0xb1, 0x3c, 0xc4, 0x2f, 0xcf, 0x4d, 0xf9, 0x47, 0xfa, 0x01, - 0xd8, 0xa7, 0xb7, 0x81, 0x17, 0x55, 0x1d, 0x8b, 0x74, 0x6f, 0x78, 0x2c, - 0xb7, 0x63, 0x76, 0x15, 0x5d, 0x19, 0xed, 0xa3, 0xe7, 0xef, 0xc4, 0x0f, - 0x09, 0x97, 0xb6, 0x35, 0xee, 0xca, 0x84, 0x30, 0x09, 0x86, 0x7a, 0x2b, - 0x3f, 0xa0, 0x18, 0x58, 0xd3, 0x0e, 0x33, 0xd9, 0x9f, 0xd6, 0x61, 0x13, - 0xf5, 0xe1, 0x88, 0x8c, 0x93, 0x6f, 0x75, 0x51, 0xab, 0xaa, 0xaa, 0xaa, - 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, - 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, - 0xbd, 0x08, 0xc3, 0x19, 0x60, 0x72, 0xc1, 0x21, 0xbe, 0x74, 0x5f, 0xf5, - 0x6c, 0x39, 0xa1, 0x7e, 0xa1, 0x12, 0x24, 0xdb, 0x72, 0x23, 0x92, 0x39, - 0xc0, 0x93, 0x50, 0x45, 0xe6, 0x6c, 0x72, 0xde, 0x8f, 0xb9, 0xd3, 0x5d, - 0x30, 0xb9, 0x23, 0x74, 0xe1, 0x84, 0xf7, 0xe8, 0xbd, 0x40, 0xbe, 0xde, - 0x5e, 0x16, 0x9d, 0xe5, 0x01, 0xca, 0x95, 0x80, 0x86, 0x75, 0xad, 0xec, - 0x74, 0x87, 0x93, 0x9b, 0x9b, 0x8a, 0xda, 0x73, 0x2e, 0xfb, 0xea, 0x56, - 0xa6, 0x87, 0x8d, 0xe3, 0x0b, 0xa7, 0x98, 0xf5, 0xf3, 0x9c, 0x5c, 0xdc, - 0xc1, 0xc1, 0x1b, 0x26, 0x06, 0x73, 0x3a, 0x3e, 0xf0, 0x66, 0x39, 0x3f, - 0x32, 0x7d, 0x60, 0x56, 0xa9, 0x6f, 0x07, 0x29, 0xe5, 0x4c, 0x7d, 0x35, - 0x1a, 0x82, 0xc8, 0x0c, 0x6f, 0x4a, 0x54, 0x9b, 0x0a, 0x1d, 0x5c, 0xf8, - 0x74, 0xe3, 0x4d, 0x90, 0xc5, 0x7c, 0x61, 0xaa, 0xe6, 0xac, 0x26, 0x37, - 0x6a, 0xa5, 0x7c, 0x30, 0x31, 0xe6, 0x27, 0xab, 0x1a, 0x0d, 0x20, 0x83, - 0x4a, 0x21, 0x3e, 0xe5, 0x85, 0xf0, 0x7d, 0x50, 0xa7, 0xfa, 0xc1, 0xb1, - 0xcb, 0xc3, 0xb3, 0xe0, 0x0c, 0x55, 0x72, 0x29, 0x42, 0x29, 0xf3, 0x7f, - 0x13, 0xa5, 0x38, 0x2a, 0x00, 0xa3, 0x06, 0x9f, 0x2d, 0x54, 0xa7, 0x6e, - 0x59, 0x34, 0xe3, 0x1a, 0x9b, 0xf9, 0xa9, 0x6a, 0xa2, 0x54, 0x14, 0x04, - 0x9e, 0xce, 0xee, 0x02, 0x5f, 0x72, 0xf7, 0x60, 0x2b, 0x3b, 0xca, 0x36, - 0x8e, 0xea, 0x21, 0x92, 0x27, 0x4a, 0x6b, 0x48, 0x57, 0x93, 0x0a, 0x3d, - 0x85, 0x8a, 0xd9, 0x73, 0x04, 0x13, 0xf1, 0xaf, 0x60, 0x02, 0x47, 0x07, - 0x05, 0xd3, 0x8b, 0xec, 0x3d, 0xcd, 0x02, 0xc1, 0x48, 0xf9, 0x2c, 0x35, - 0x36, 0x63, 0x38, 0x59, 0xa4, 0xd0, 0xbe, 0xe8, 0x0a, 0x8a, 0x77, 0x69, - 0x69, 0x4b, 0xfb, 0x07, 0x0e, 0x86, 0x88, 0x13, 0x2f, 0x29, 0x81, 0x2a, - 0xf5, 0x20, 0xaf, 0x50, 0xe4, 0x7e, 0x97, 0x1a, 0x37, 0x61, 0xfb, 0xca, - 0xa8, 0x6d, 0xb4, 0x57, 0xd1, 0x62, 0xba, 0x5c, 0xd7, 0x7a, 0x0e, 0x6e, - 0x78, 0xa3, 0xe6, 0x42, 0xdb, 0xe2, 0x4a, 0x8b, 0x5f, 0x7c, 0x37, 0xc3, - 0x5c, 0x7b, 0x62, 0xd2, 0xaf, 0xed, 0x30, 0xe7, 0x10, 0x83, 0x18, 0xb8, - 0x4b, 0x04, 0x8b, 0xde, 0x0d, 0x10, 0xa0, 0xeb, 0x86, 0x54, 0x4d, 0x3d, - 0x97, 0x0b, 0xff, 0xd3, 0xbb, 0x14, 0xed, 0xc9, 0xca, 0xd8, 0x43, 0x5e, - 0xb1, 0x4d, 0x5b, 0x76, 0x74, 0x4b, 0x9b, 0x5e, 0xb2, 0x60, 0xd3, 0xe1, - 0x35, 0x90, 0x0d, 0x1c, 0xbb, 0xe9, 0x66, 0x59, 0x18, 0x98, 0x78, 0x2d, - 0x8a, 0x21, 0xe9, 0xac, 0x8c, 0xec, 0xe2, 0x9c, 0x5e, 0x58, 0xc0, 0x84, - 0x57, 0x5b, 0xf1, 0x27, 0xc2, 0x5d, 0xf4, 0x84, 0x46, 0x0c, 0x73, 0xa3, - 0xa5, 0xc3, 0x5a, 0x16, 0xdb, 0x22, 0x3e, 0x4a, 0xdc, 0x09, 0x0e, 0x7c, - 0x1d, 0x20, 0xc6, 0x17, 0xff, 0xeb, 0x63, 0x81, 0x09, 0x47, 0x90, 0xa9, - 0xdd, 0xc2, 0x7d, 0xf9, 0xef, 0x7a, 0x0f, 0xac, 0xaa, 0xca, 0x1c, 0x11, - 0xfb, 0x87, 0x51, 0xe7, 0x21, 0xd6, 0x19, 0x6a, 0x1f, 0xde, 0x8d, 0x04, - 0xf3, 0x0a, 0xcc, 0x78, 0x10, 0xa1, 0x2f, 0x2e, 0xe9, 0x01, 0x8f, 0xf4, - 0x24, 0x6e, 0x2a, 0xa6, 0x30, 0xf3, 0xc0, 0x69, 0xdd, 0x4f, 0xb7, 0xa0, - 0x2e, 0xfa, 0x3a, 0xcc, 0x86, 0xd3, 0xea, 0xa6, 0xb4, 0xaf, 0x31, 0xce, - 0x34, 0xb3, 0xbe, 0xaa, 0xae, 0x7a, 0xb3, 0x8c, 0xc6, 0x8f, 0x62, 0xab, - 0x07, 0x96, 0x35, 0x1d, 0x10, 0x4f, 0x0a, 0xf0, 0xa2, 0xf6, 0x81, 0x2f, - 0x8a, 0x24, 0x83, 0x96, 0x13, 0x7c, 0x5c, 0xdb, 0x8a, 0x54, 0x6f, 0x16, - 0x40, 0xc0, 0x7f, 0x39, 0x9a, 0x23, 0x98, 0x9f, 0x38, 0x27, 0x8e, 0x51, - 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, - 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, - 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xb5, 0xb6, 0x74, 0xe5, - 0xdb, 0x19, 0x3c, 0x77, 0x30, 0xaa, 0x32, 0xa4, 0x53, 0x1e, 0x66, 0x03, - 0x5b, 0xb4, 0x88, 0x09, 0xd8, 0xaf, 0x41, 0x00, 0xad, 0xb6, 0x85, 0x65, - 0xe1, 0xbe, 0xdf, 0x52, 0x6a, 0x80, 0xc4, 0x6c, 0x86, 0xf4, 0x40, 0x78, - 0xe9, 0x93, 0x34, 0xa1, 0x7c, 0x2a, 0xc9, 0x80, 0x7e, 0xc3, 0x8c, 0x18, - 0xa4, 0x96, 0xff, 0x60, 0xc4, 0x0f, 0x6a, 0xb4, 0xcd, 0xd7, 0x50, 0x5d, - 0xcc, 0x38, 0x7f, 0x13, 0x89, 0x8f, 0xca, 0x87, 0x9c, 0x9a, 0xd4, 0x7e, - 0x82, 0x67, 0x08, 0xad, 0x0e, 0x61, 0xd8, 0x7e, 0xf3, 0x81, 0x0e, 0x83, - 0xaa, 0x6d, 0xeb, 0x6a, 0x16, 0xc0, 0x61, 0x50, 0x22, 0x6c, 0x6b, 0xee, - 0x63, 0xa8, 0x10, 0x2c, 0x3c, 0x08, 0xaf, 0xa8, 0xd4, 0xa3, 0x59, 0x39, - 0x94, 0x98, 0x35, 0x3c, 0xc5, 0xb3, 0x14, 0xe8, 0x0c, 0x2c, 0x3a, 0x5f, - 0x8f, 0x14, 0xe6, 0x72, 0xad, 0xaa, 0x0b, 0xc6, 0x54, 0x91, 0x33, 0xfa, - 0xe3, 0x5b, 0x60, 0xf7, 0xe5, 0x15, 0xb9, 0xb7, 0x5a, 0xd6, 0x3b, 0x9f, - 0x4f, 0x26, 0x7c, 0x69, 0x6a, 0x08, 0x7b, 0x0b, 0x97, 0xae, 0x84, 0x02, - 0xc7, 0x1d, 0xb4, 0xe7, 0x46, 0x95, 0xbc, 0xcf, 0x3a, 0x0d, 0x5b, 0x5e, - 0xdf, 0xde, 0xa4, 0x7e, 0xfa, 0x05, 0x59, 0x5e, 0x98, 0x52, 0x5c, 0xa6, - 0xfd, 0x8d, 0xeb, 0xe1, 0xb1, 0xca, 0x4f, 0x4d, 0x56, 0xbe, 0xcb, 0xae, - 0xa6, 0xee, 0x7d, 0x23, 0xed, 0x75, 0x7c, 0x59, 0xe8, 0x2c, 0x8c, 0x1e, - 0x61, 0x64, 0x9c, 0x1d, 0x26, 0xb3, 0x90, 0x47, 0xef, 0x5e, 0xc6, 0xae, - 0x32, 0xfb, 0xd6, 0x6f, 0xe1, 0x46, 0xc5, 0xb0, 0xbe, 0x19, 0x9c, 0xf5, - 0x41, 0x29, 0xe8, 0x4b, 0x68, 0x26, 0x78, 0x6a, 0x66, 0x6e, 0x03, 0x0d, - 0xac, 0xde, 0x0a, 0xb0, 0xa7, 0xe4, 0xa2, 0xc8, 0x61, 0x24, 0x80, 0x1d, - 0x3c, 0x51, 0xdd, 0x06, 0xfd, 0x26, 0xf9, 0x8c, 0xb8, 0xd7, 0x95, 0x37, - 0x9d, 0xfe, 0xd2, 0xf2, 0xce, 0x8f, 0xd1, 0xce, 0xe6, 0x16, 0xa9, 0xb0, - 0x2f, 0x7b, 0x3b, 0x94, 0x2a, 0x3c, 0x3d, 0x32, 0xc9, 0x4c, 0x0d, 0xe9, - 0xaf, 0x56, 0xf1, 0x8f, 0xcf, 0x55, 0x59, 0x31, 0xc1, 0x25, 0xb5, 0xe3, - 0x09, 0x7a, 0x8d, 0x9c, 0x0b, 0xc9, 0x01, 0xbb, 0xa7, 0x2b, 0x15, 0xad, - 0x03, 0xd5, 0x62, 0x2e, 0x85, 0xaa, 0xa3, 0xdb, 0xbb, 0x2b, 0x03, 0x15, - 0x75, 0xe2, 0xa8, 0x4a, 0x36, 0xe7, 0x02, 0xa7, 0x33, 0x9b, 0xa2, 0xdc, - 0x0e, 0x8c, 0x10, 0xdd, 0x02, 0x1f, 0xce, 0xe2, 0x35, 0x7b, 0x18, 0x69, - 0x1e, 0x46, 0x68, 0x88, 0xe2, 0x54, 0x04, 0xc3, 0xd8, 0x80, 0x6d, 0xb5, - 0x02, 0xb0, 0xc1, 0xa4, 0xd9, 0x66, 0xc5, 0x98, 0x54, 0x6d, 0x98, 0xea, - 0xa2, 0x3c, 0x5e, 0x3c, 0x27, 0x72, 0xce, 0x6c, 0xf0, 0x06, 0xa0, 0xf8, - 0x88, 0x3e, 0xcd, 0xa4, 0x39, 0xfa, 0x21, 0x8a, 0x71, 0x61, 0xdc, 0xdf, - 0x22, 0xf8, 0x92, 0xe9, 0x7a, 0x71, 0x5b, 0x37, 0x09, 0xdb, 0x40, 0xce, - 0x59, 0xd4, 0x8d, 0x4f, 0x22, 0x20, 0xc0, 0xda, 0x03, 0x38, 0xf7, 0x53, - 0x76, 0x8d, 0xb7, 0x71, 0xe6, 0x4b, 0x65, 0x1c, 0x21, 0x15, 0xa3, 0x45, - 0xce, 0x96, 0x34, 0x54, 0x92, 0x13, 0xf3, 0x9b, 0xac, 0x8a, 0xf7, 0x1c, - 0x91, 0x3e, 0xf3, 0xfb, 0xe0, 0xb8, 0x44, 0xb0, 0x30, 0xa0, 0x81, 0xd1, - 0xf1, 0x20, 0xbb, 0xd3, 0x96, 0x4c, 0x18, 0x8f, 0x0d, 0xf9, 0x6b, 0x3f, - 0x27, 0x64, 0xb4, 0x2e, 0xfb, 0x47, 0xc2, 0x09, 0x5c, 0x7a, 0xf3, 0x09, - 0x3d, 0x68, 0xa9, 0x98, 0xb4, 0xdd, 0x06, 0x2b, 0xbc, 0x4a, 0xce, 0x10, - 0xa2, 0xbf, 0x08, 0x01, 0x90, 0x23, 0xfb, 0x59, 0x41, 0x21, 0x36, 0x96, - 0x3a, 0xdd, 0xb0, 0x64, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, - 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, - 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, - 0x95, 0xe6, 0x01, 0xe7, 0xd4, 0x65, 0xd3, 0x3d, 0x60, 0xed, 0x09, 0x1e, - 0x56, 0xc0, 0x7e, 0x07, 0xa6, 0xf2, 0xa2, 0x78, 0x47, 0x37, 0x6f, 0xf7, - 0x04, 0x82, 0x61, 0x3f, 0xa8, 0x18, 0xfc, 0x4a, 0x1a, 0x49, 0x52, 0x90, - 0xf5, 0xf4, 0xb3, 0xe4, 0x3a, 0x42, 0x71, 0x80, 0xe5, 0x4d, 0x57, 0xb1, - 0x5b, 0x66, 0x32, 0xe4, 0x7e, 0xb4, 0x85, 0x9d, 0xcc, 0x69, 0x49, 0xe3, - 0x2f, 0xfd, 0x7d, 0x0c, 0xbf, 0x90, 0x5a, 0x95, 0x78, 0x0c, 0x1b, 0x8b, - 0x5f, 0xb0, 0x50, 0x91, 0x62, 0x9f, 0xb1, 0x26, 0xbe, 0x79, 0xe6, 0xef, - 0x84, 0xcc, 0xd6, 0x7f, 0x9f, 0x25, 0xbe, 0x3b, 0x17, 0x48, 0xfc, 0x11, - 0xe4, 0x80, 0xa6, 0x9f, 0x14, 0xa3, 0xa1, 0x6a, 0x9c, 0xc8, 0xf2, 0x01, - 0x3d, 0xeb, 0xf7, 0x1e, 0x07, 0xe2, 0xac, 0x3f, 0xed, 0x60, 0x47, 0x83, - 0x05, 0xa3, 0x68, 0xc7, 0x9f, 0x8c, 0x45, 0x67, 0x65, 0x6e, 0xef, 0xfa, - 0x9d, 0xd6, 0xf7, 0x36, 0x4d, 0xe8, 0x36, 0x4f, 0xd5, 0x93, 0x30, 0xb6, - 0xdc, 0xa3, 0x89, 0x93, 0xaf, 0xda, 0x54, 0x55, 0xf1, 0x0e, 0x82, 0x2e, - 0x89, 0x15, 0xe8, 0x3c, 0x0f, 0x9c, 0x75, 0x0c, 0xf4, 0x0a, 0x3f, 0x89, - 0xc5, 0x56, 0xe5, 0x24, 0xdf, 0x41, 0x42, 0x6a, 0xe0, 0x14, 0x8e, 0x9f, - 0x4d, 0x25, 0xf0, 0x47, 0x96, 0xa2, 0x07, 0xf9, 0x44, 0xe7, 0xe8, 0x55, - 0xbc, 0x45, 0x5c, 0x98, 0x69, 0x8f, 0x25, 0x10, 0xc6, 0xe5, 0x0b, 0xf6, - 0xe3, 0x03, 0xb1, 0x21, 0xe3, 0x32, 0xf4, 0x13, 0x28, 0xd4, 0xda, 0x99, - 0x96, 0xd2, 0x5f, 0x7b, 0x20, 0xcb, 0xad, 0x6d, 0x88, 0x28, 0x49, 0x3d, - 0xa6, 0x71, 0x0d, 0x15, 0xe7, 0x59, 0x3d, 0x47, 0x2c, 0xa8, 0x7f, 0x3b, - 0x7f, 0x66, 0xaf, 0x95, 0x10, 0x23, 0x18, 0x9f, 0x92, 0x8b, 0x39, 0xcf, - 0xdb, 0x23, 0x5b, 0x48, 0x3d, 0xa5, 0x35, 0xd1, 0xcc, 0x4f, 0xc7, 0x60, - 0xa0, 0xea, 0x8c, 0x98, 0xd3, 0x03, 0x72, 0xc6, 0xfb, 0x62, 0x5b, 0x66, - 0xca, 0xfd, 0x64, 0x3a, 0x42, 0x33, 0xd9, 0x8b, 0x04, 0x9e, 0xe5, 0x4d, - 0x2f, 0x27, 0x55, 0x7f, 0xcd, 0x75, 0xe8, 0x27, 0x9b, 0x13, 0x35, 0x3f, - 0x26, 0x49, 0xc7, 0x72, 0xfb, 0x68, 0xd8, 0x15, 0xa6, 0xa7, 0x34, 0xdc, - 0xe2, 0xd8, 0x1d, 0x23, 0x43, 0x0b, 0xc5, 0x23, 0x62, 0xd6, 0x25, 0x21, - 0x87, 0xd5, 0x11, 0x6f, 0x7a, 0xe7, 0xb8, 0xe7, 0x61, 0xe9, 0x77, 0x63, - 0xe5, 0x44, 0x21, 0x20, 0x04, 0x3b, 0x52, 0xf2, 0xdb, 0x68, 0xca, 0xfe, - 0x98, 0x0b, 0x6f, 0x2d, 0xe1, 0x82, 0xbb, 0x04, 0xc9, 0x9b, 0x03, 0x50, - 0x5b, 0xdf, 0x76, 0x8e, 0x1d, 0xa0, 0x2e, 0xd8, 0x2c, 0x7d, 0xe0, 0xc7, - 0x14, 0x67, 0x2e, 0x0a, 0x7a, 0x29, 0xc1, 0x77, 0x69, 0x71, 0x43, 0x2d, - 0x85, 0xf9, 0x0a, 0xa9, 0x50, 0x57, 0x51, 0x99, 0xc6, 0xcc, 0xf1, 0x53, - 0x0c, 0x8b, 0xa8, 0xda, 0xb5, 0x7a, 0x0b, 0x57, 0xbb, 0xe8, 0xab, 0x0f, - 0xba, 0x63, 0x8f, 0x38, 0x77, 0x18, 0xa6, 0x13, 0x80, 0x8f, 0xd2, 0xac, - 0x59, 0xef, 0x61, 0xa1, 0xb4, 0x56, 0xae, 0x4e, 0xb9, 0x3f, 0x17, 0xb0, - 0xb0, 0xc4, 0x98, 0xf2, 0x42, 0x0d, 0x35, 0x04, 0xe1, 0x9f, 0xc4, 0x66, - 0xcb, 0x2f, 0x8d, 0x28, 0x24, 0x49, 0xcd, 0x59, 0x10, 0x39, 0x18, 0x61, - 0xe9, 0x96, 0x94, 0x7f, 0x2f, 0x30, 0xde, 0x83, 0x7f, 0x39, 0x2a, 0x8d, - 0x86, 0xc5, 0xdf, 0xb6, 0x90, 0x99, 0x9f, 0xf6, 0x8b, 0x66, 0xed, 0x17, - 0x01, 0xe0, 0x1e, 0x52, 0xd6, 0x72, 0x06, 0xb8, 0xe0, 0x70, 0xa9, 0xdd, - 0xe7, 0xa8, 0x57, 0x70, 0xb3, 0x03, 0x96, 0x9f, 0x51, 0xfb, 0x5f, 0x73, - 0x29, 0x88, 0xf4, 0x2b, 0x06, 0xe3, 0xec, 0x50, 0xab, 0xaa, 0xaa, 0xaa, - 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, - 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, - 0xbd, 0x08, 0xc3, 0x19, 0xb9, 0x31, 0x11, 0x9d, 0x63, 0x6b, 0x56, 0x7a, - 0x2b, 0x4b, 0x4a, 0xce, 0xc3, 0xd1, 0x7d, 0x9a, 0x92, 0x14, 0x9d, 0x36, - 0x8d, 0x06, 0xca, 0x62, 0xc8, 0x26, 0x52, 0x4c, 0x80, 0x7c, 0xe2, 0x1a, - 0x35, 0x05, 0xdc, 0xa7, 0x3d, 0x00, 0x2d, 0x63, 0xcd, 0x5a, 0xcd, 0x4e, - 0x78, 0x75, 0xf0, 0xa4, 0x93, 0x0a, 0x7f, 0x80, 0x19, 0xf1, 0x92, 0xb4, - 0x53, 0x62, 0x62, 0xdf, 0xa2, 0xf6, 0xa7, 0x2a, 0x6f, 0x00, 0x7a, 0xd8, - 0xcd, 0x22, 0x30, 0x1a, 0x86, 0xad, 0x06, 0x4c, 0x5e, 0x54, 0x61, 0x54, - 0x10, 0x86, 0xb9, 0x83, 0xd6, 0xa6, 0xa8, 0x99, 0x42, 0xbb, 0x6e, 0x11, - 0x19, 0x2a, 0x49, 0x2e, 0x97, 0xee, 0xe7, 0x3e, 0x76, 0xc6, 0xec, 0xe8, - 0x8a, 0x28, 0x5a, 0xdb, 0x88, 0x4b, 0xc2, 0xf2, 0xd1, 0x73, 0xc6, 0x30, - 0xe9, 0x6e, 0x2c, 0x53, 0x0b, 0x54, 0x0a, 0xff, 0xae, 0x2c, 0x91, 0x3c, - 0x8b, 0x09, 0x02, 0x84, 0x79, 0xca, 0x8e, 0x17, 0x74, 0x97, 0x3e, 0xa4, - 0xef, 0x69, 0x84, 0x45, 0x0c, 0xe8, 0xdb, 0x06, 0x5b, 0xc8, 0xd9, 0x71, - 0xf8, 0x60, 0xd5, 0x68, 0x2f, 0x14, 0x71, 0x66, 0xc2, 0x16, 0x51, 0x95, - 0xae, 0x96, 0xb5, 0xe3, 0x3d, 0xb2, 0x7a, 0xb5, 0x20, 0xbb, 0x35, 0xf1, - 0x24, 0x02, 0xd1, 0xaf, 0xe5, 0x97, 0x63, 0x94, 0xe2, 0x22, 0xa0, 0xf4, - 0x40, 0x5c, 0xe6, 0x46, 0x52, 0xeb, 0x5c, 0xf9, 0xe6, 0xcf, 0xeb, 0x13, - 0x50, 0xbb, 0xaa, 0x7e, 0x5d, 0xbe, 0xa1, 0x6b, 0xcf, 0x8b, 0x7b, 0xdf, - 0xb7, 0x50, 0x85, 0xf6, 0x63, 0xfd, 0x20, 0x3a, 0x39, 0xa9, 0x17, 0x59, - 0x01, 0xb4, 0x45, 0x34, 0xae, 0xaa, 0x16, 0x13, 0x72, 0x57, 0x1f, 0x6f, - 0xe1, 0xc9, 0xb0, 0x42, 0xd4, 0xf2, 0x42, 0xe7, 0xb4, 0x86, 0x65, 0x91, - 0x31, 0xe1, 0xbc, 0x38, 0x16, 0xf8, 0x22, 0x12, 0xcb, 0xdd, 0x83, 0xd8, - 0x02, 0x12, 0xb1, 0x47, 0x94, 0xfc, 0xae, 0xcd, 0xaa, 0x7a, 0xd1, 0xbb, - 0x0f, 0xe4, 0x19, 0xb4, 0x0e, 0xbc, 0x1e, 0x84, 0xce, 0x5c, 0x5f, 0xfc, - 0x00, 0xbf, 0x1e, 0x56, 0x7e, 0x1b, 0xea, 0x37, 0x53, 0x58, 0x74, 0x75, - 0x82, 0xab, 0x65, 0x68, 0xbd, 0xa3, 0xd8, 0xa8, 0xd9, 0x31, 0x76, 0x68, - 0xbf, 0x47, 0xff, 0x7c, 0x2f, 0x41, 0x78, 0x87, 0x7c, 0x6d, 0xe1, 0x15, - 0x01, 0x19, 0xd0, 0xbb, 0x38, 0xad, 0x7b, 0x77, 0xab, 0xff, 0x76, 0x97, - 0x14, 0x3d, 0xf8, 0x2a, 0x9e, 0xaf, 0x11, 0xec, 0xdf, 0x1f, 0x4e, 0x10, - 0x0a, 0xb8, 0xe8, 0x92, 0x60, 0xa2, 0x1e, 0x4a, 0x1f, 0xa7, 0x09, 0xd5, - 0x0f, 0x4b, 0x05, 0x9e, 0xa6, 0x48, 0x28, 0x4e, 0x02, 0x57, 0x1c, 0x95, - 0x8f, 0x28, 0xbe, 0x02, 0xba, 0x94, 0xaa, 0x79, 0x86, 0xca, 0x65, 0xa3, - 0x6a, 0x09, 0x76, 0x0d, 0x3e, 0xa7, 0x45, 0x17, 0xa7, 0x33, 0x14, 0x85, - 0xeb, 0xb9, 0xf4, 0xe2, 0x58, 0xad, 0x2c, 0xba, 0x0a, 0x74, 0x23, 0x16, - 0x59, 0x76, 0x36, 0xe7, 0x30, 0x59, 0x87, 0x4b, 0x34, 0xb2, 0x7c, 0x6d, - 0xb8, 0x16, 0xbe, 0x01, 0xa2, 0xb8, 0xe3, 0x0a, 0x4a, 0x55, 0xef, 0x94, - 0x37, 0x8f, 0xcf, 0xbd, 0x57, 0xe3, 0x7b, 0xe1, 0x9d, 0xa7, 0x0e, 0x61, - 0xd8, 0xf1, 0x49, 0x8a, 0xab, 0x24, 0xd0, 0x27, 0xae, 0x8c, 0x8b, 0x94, - 0xf9, 0x3e, 0xac, 0xf4, 0xdc, 0x18, 0xc3, 0xc2, 0x87, 0x49, 0x9e, 0x37, - 0xbe, 0x53, 0x74, 0xc5, 0x1e, 0xa6, 0x29, 0xeb, 0xe4, 0x3e, 0xaf, 0xd4, - 0xcd, 0x48, 0x43, 0x57, 0x99, 0x2b, 0x8b, 0x0c, 0x54, 0x0e, 0x6d, 0x05, - 0x34, 0x20, 0x96, 0x52, 0xe4, 0x2a, 0xbe, 0xb7, 0x0f, 0x0f, 0xf9, 0x37, - 0x2b, 0x4d, 0x04, 0x23, 0xd1, 0x1c, 0xbe, 0x72, 0x8d, 0xb3, 0x15, 0x37, - 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, - 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, - 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xcb, 0x78, 0x2c, 0x12, - 0x7c, 0x16, 0x6c, 0xe7, 0xb0, 0x1a, 0xf2, 0x0a, 0x20, 0xa7, 0x72, 0x88, - 0xdf, 0xef, 0x26, 0x16, 0xa4, 0xf4, 0xcf, 0x38, 0x9e, 0x49, 0xb2, 0x02, - 0x65, 0xb4, 0xc8, 0x5b, 0x71, 0xb9, 0x03, 0x95, 0xfa, 0x91, 0xfa, 0x3b, - 0x02, 0xa4, 0x94, 0xd2, 0x17, 0xf6, 0xc7, 0x06, 0x71, 0x70, 0x80, 0xa5, - 0x8a, 0x32, 0xb8, 0xd8, 0x92, 0xd4, 0x8c, 0x00, 0x1d, 0x47, 0x1a, 0x5a, - 0xc3, 0x08, 0xec, 0xbb, 0xc7, 0x86, 0x70, 0xdd, 0x34, 0x29, 0xaa, 0x24, - 0xfc, 0xae, 0x34, 0x1b, 0x8c, 0xc0, 0x91, 0x16, 0x5d, 0xe3, 0x35, 0x2b, - 0x76, 0xfe, 0xc0, 0x17, 0x1f, 0x29, 0x1b, 0x02, 0x54, 0x34, 0x4c, 0x73, - 0x45, 0x4e, 0x75, 0xe6, 0xed, 0x13, 0xf7, 0x64, 0xa2, 0x32, 0x9e, 0x28, - 0x16, 0xf6, 0x70, 0xce, 0x88, 0xa7, 0xdf, 0x76, 0x28, 0x76, 0x3b, 0xce, - 0xe4, 0x39, 0x83, 0x73, 0x37, 0xa9, 0xfd, 0x1f, 0xd0, 0x81, 0xf1, 0x85, - 0x84, 0x1b, 0x88, 0xe4, 0xf2, 0xcd, 0xfe, 0xfe, 0x1d, 0xea, 0x51, 0xda, - 0xfa, 0x30, 0x5d, 0xeb, 0xe7, 0x26, 0xdc, 0xc9, 0x32, 0x68, 0x60, 0x10, - 0x31, 0x3f, 0xe9, 0xce, 0xca, 0x7f, 0x6f, 0x45, 0x87, 0x78, 0xf9, 0x3e, - 0x5c, 0x61, 0xf4, 0x2e, 0x41, 0x75, 0xa1, 0x4c, 0xb3, 0xdd, 0xee, 0x7a, - 0x54, 0x62, 0x72, 0xdc, 0x4b, 0x7e, 0xb8, 0x4e, 0xd8, 0x4e, 0xc1, 0x7c, - 0xfa, 0x7f, 0x92, 0xc8, 0xbe, 0x9c, 0x5e, 0x0b, 0xba, 0x6b, 0xf9, 0xc2, - 0xa9, 0xa4, 0xfd, 0xf5, 0x7c, 0x6f, 0x64, 0x2f, 0x69, 0xc3, 0x4d, 0x2c, - 0x20, 0xe6, 0x03, 0x33, 0xca, 0xef, 0x93, 0xdc, 0x06, 0x15, 0x86, 0x3d, - 0xb0, 0x0a, 0xd2, 0x45, 0xb6, 0x4c, 0x43, 0x3b, 0x97, 0x38, 0xeb, 0xe7, - 0xfc, 0x9d, 0x90, 0x42, 0x94, 0xf0, 0xc3, 0x62, 0x8d, 0xc4, 0xef, 0x08, - 0x2b, 0xba, 0xe1, 0xea, 0x9b, 0x56, 0xaf, 0x68, 0x1a, 0xf8, 0x27, 0x26, - 0x66, 0x1c, 0xe2, 0x24, 0x41, 0xc6, 0xae, 0x94, 0x6c, 0x25, 0x51, 0x72, - 0xe9, 0xa4, 0xea, 0x89, 0xfb, 0x1a, 0x8e, 0x43, 0x09, 0x8f, 0x0f, 0x97, - 0x8a, 0x39, 0xf3, 0xcf, 0x9a, 0x5e, 0x78, 0xa4, 0x86, 0xf8, 0x26, 0xc3, - 0x04, 0x9d, 0xb8, 0x68, 0xf2, 0x42, 0x60, 0x3d, 0x81, 0x67, 0xb0, 0xc5, - 0x91, 0xbf, 0x2b, 0x42, 0xa8, 0xcf, 0x32, 0x30, 0xd2, 0x6a, 0x2d, 0xd2, - 0x18, 0x19, 0x2e, 0x4e, 0x5b, 0x04, 0x2b, 0x03, 0x26, 0x5c, 0x36, 0x44, - 0xc0, 0x92, 0xac, 0xc7, 0x6c, 0x6a, 0x7c, 0x90, 0x78, 0x86, 0x6f, 0x3b, - 0xcd, 0xb2, 0x6f, 0xa8, 0x6d, 0xba, 0xbc, 0x5a, 0x4e, 0x93, 0x64, 0x88, - 0x56, 0x1f, 0x15, 0x95, 0x94, 0xef, 0x5d, 0xc1, 0x41, 0xdf, 0x7e, 0xca, - 0x31, 0xe3, 0xc3, 0x0a, 0x4b, 0x0d, 0x9c, 0x21, 0xa5, 0x60, 0xf7, 0xc0, - 0x31, 0x67, 0xf8, 0xc1, 0x42, 0xdf, 0xee, 0x9c, 0x90, 0x4e, 0x1d, 0xf4, - 0xe0, 0x26, 0x5f, 0x58, 0x42, 0xeb, 0xc3, 0xc9, 0x8c, 0xf8, 0x30, 0x3a, - 0xe5, 0xd2, 0xfa, 0x59, 0xbc, 0xa9, 0x81, 0xc2, 0xb9, 0xb5, 0x32, 0x58, - 0xca, 0x5c, 0x20, 0x40, 0xb7, 0xb2, 0xe2, 0x7d, 0x5b, 0x69, 0xee, 0x4e, - 0xb3, 0x91, 0x18, 0x78, 0xb4, 0x80, 0x54, 0x35, 0x45, 0x7b, 0x02, 0x36, - 0xa5, 0xad, 0x1e, 0x89, 0xcb, 0x28, 0x1e, 0x9c, 0x10, 0x0f, 0x42, 0xa9, - 0x4b, 0x73, 0x23, 0x2e, 0xb9, 0xec, 0xc9, 0xc4, 0xc4, 0xae, 0x3c, 0xd4, - 0xc3, 0x55, 0xfa, 0xd9, 0x84, 0x49, 0x35, 0x4b, 0x02, 0x2a, 0xfe, 0x47, - 0x54, 0x8c, 0x9d, 0x87, 0x87, 0x35, 0x44, 0xf7, 0x47, 0xbb, 0x21, 0x5b, - 0xb7, 0x68, 0xab, 0x57, 0x5e, 0xbb, 0xb1, 0x5d, 0x06, 0xe0, 0x06, 0x1d, - 0xf0, 0x44, 0x5a, 0x32, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, - 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, - 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, - 0x1f, 0xda, 0x73, 0xbd, 0x5b, 0xb0, 0x26, 0x85, 0x5a, 0x76, 0x0f, 0x55, - 0x6a, 0x51, 0x1f, 0xdd, 0x26, 0x79, 0x03, 0x1f, 0xd6, 0xae, 0x3f, 0xfe, - 0x7d, 0x88, 0x70, 0x0d, 0x83, 0xe2, 0x4a, 0x50, 0x9c, 0xcc, 0xcb, 0x67, - 0xd4, 0x8f, 0x61, 0x6d, 0x97, 0x49, 0x22, 0xb5, 0xb7, 0x67, 0x43, 0x20, - 0x9f, 0x34, 0xf5, 0x6f, 0x42, 0xab, 0x1d, 0xb6, 0xa3, 0x3b, 0x41, 0x42, - 0xb3, 0x9f, 0xe8, 0x33, 0x5b, 0x74, 0xb8, 0x2b, 0x68, 0x3e, 0x8b, 0xa8, - 0xb9, 0x9d, 0x71, 0xb4, 0x52, 0x08, 0x30, 0x57, 0x95, 0xea, 0x07, 0x04, - 0xf0, 0x5c, 0xa4, 0x77, 0x21, 0x15, 0xaf, 0x27, 0x7c, 0x01, 0xe1, 0x46, - 0x33, 0xe2, 0x88, 0x06, 0x24, 0x2b, 0x48, 0x79, 0xc2, 0x49, 0x10, 0x57, - 0x8c, 0x9b, 0x92, 0xe9, 0xbd, 0xc0, 0x9c, 0x3f, 0x7d, 0x3d, 0x9f, 0xc8, - 0x75, 0x8f, 0xbe, 0x86, 0x13, 0xb7, 0xa0, 0x4f, 0xb9, 0x28, 0x08, 0x87, - 0x31, 0x25, 0xdd, 0x81, 0x72, 0x0c, 0xa3, 0x4d, 0x59, 0x57, 0xc6, 0xc9, - 0x33, 0x66, 0x22, 0xf5, 0x66, 0x01, 0x28, 0xc9, 0x17, 0xef, 0x65, 0x5d, - 0x4a, 0x14, 0x2a, 0x44, 0x45, 0x2e, 0xaf, 0xe9, 0x91, 0xbf, 0x28, 0x52, - 0x08, 0x1f, 0x1e, 0x66, 0x16, 0x68, 0x98, 0x3c, 0x8c, 0x1e, 0xfa, 0x54, - 0xa0, 0x07, 0x94, 0x3c, 0x99, 0x06, 0x19, 0x80, 0x5a, 0x9d, 0xe9, 0x5c, - 0x57, 0xab, 0xad, 0x36, 0x31, 0x95, 0xb2, 0x2b, 0x0d, 0x9e, 0x4b, 0x16, - 0x71, 0xf4, 0xd3, 0x24, 0xc4, 0x4b, 0xdf, 0x8f, 0xe8, 0x64, 0x77, 0x19, - 0xbe, 0xad, 0x46, 0xfd, 0x8c, 0xe0, 0x7c, 0x3d, 0xaa, 0x42, 0xf8, 0x54, - 0x46, 0x93, 0xc5, 0x2a, 0x8e, 0x94, 0x09, 0x3c, 0xb2, 0x0a, 0x69, 0x28, - 0xe3, 0x37, 0xaa, 0x2e, 0x4f, 0x60, 0xc0, 0x45, 0xca, 0x97, 0x62, 0x29, - 0xcb, 0x34, 0x6f, 0x0d, 0xb3, 0x30, 0xf6, 0xe3, 0xe6, 0x13, 0xdd, 0x97, - 0xb6, 0xf5, 0x36, 0xe5, 0xaf, 0x40, 0xe6, 0x82, 0xe6, 0xe1, 0x83, 0x77, - 0xf1, 0x47, 0x1d, 0x7d, 0x2a, 0xab, 0x13, 0xd9, 0x69, 0xd6, 0x08, 0x54, - 0x05, 0x7e, 0x3c, 0xe5, 0x2d, 0xa2, 0x8b, 0x25, 0xd4, 0x56, 0xe7, 0x3b, - 0x12, 0x30, 0xa1, 0xc7, 0x54, 0x13, 0x5e, 0xaa, 0xa1, 0x82, 0x04, 0x7b, - 0x60, 0x94, 0xd5, 0xc2, 0xcb, 0x78, 0x48, 0x0e, 0x78, 0xc8, 0x34, 0xfa, - 0xe2, 0xdb, 0x0b, 0x27, 0x61, 0x22, 0x72, 0xcd, 0xeb, 0x7c, 0x66, 0x3b, - 0xe2, 0xf1, 0x0b, 0x9d, 0xf8, 0x71, 0x6e, 0xf7, 0x9d, 0x64, 0xb6, 0x5c, - 0x07, 0x84, 0x01, 0x50, 0x61, 0x3c, 0x67, 0x3f, 0xa5, 0x3f, 0x96, 0xa7, - 0x6b, 0xfe, 0x8d, 0xcc, 0x39, 0x5b, 0xbd, 0xb6, 0x6c, 0xad, 0xae, 0x60, - 0x0c, 0xf7, 0x1f, 0x48, 0x09, 0x92, 0xb6, 0x75, 0x22, 0x82, 0xf8, 0x4c, - 0x57, 0x5c, 0xad, 0x6e, 0x2b, 0xb7, 0x75, 0x91, 0xa6, 0x96, 0x7c, 0x73, - 0x06, 0x96, 0xb3, 0xa9, 0xaa, 0x59, 0x3b, 0xb7, 0x32, 0x16, 0xdf, 0xa2, - 0x8d, 0xca, 0x45, 0xa0, 0x61, 0xce, 0x9e, 0x13, 0x07, 0x7f, 0xdc, 0x88, - 0x99, 0xee, 0x13, 0x13, 0x03, 0x35, 0xf5, 0x8e, 0x00, 0xd1, 0xd8, 0xce, - 0xad, 0x52, 0x3d, 0xb6, 0x1e, 0x39, 0x2a, 0xda, 0x5c, 0x91, 0xe0, 0xf2, - 0xd8, 0xd7, 0xb0, 0x37, 0x5a, 0x62, 0x29, 0x63, 0xdf, 0x17, 0x41, 0x6b, - 0x62, 0x8c, 0xdc, 0x85, 0x4b, 0x4a, 0x80, 0x04, 0x9f, 0x4e, 0x54, 0x6c, - 0xd3, 0xc1, 0x75, 0x6b, 0x98, 0xeb, 0xa7, 0x42, 0xfa, 0x54, 0xe3, 0x2e, - 0x1a, 0x64, 0xb9, 0x07, 0xd0, 0x4e, 0x70, 0x11, 0xa7, 0xfe, 0xb6, 0x2f, - 0xa1, 0x1a, 0x33, 0xcc, 0x60, 0x94, 0x0b, 0x40, 0xfd, 0xf4, 0xab, 0x1d, - 0x26, 0xbc, 0xfb, 0x6f, 0xde, 0x63, 0x15, 0x6e, 0xab, 0xaa, 0xaa, 0xaa, - 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, - 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, - 0xbd, 0x08, 0xc3, 0x19, 0xa1, 0x95, 0x31, 0xf4, 0xf8, 0x98, 0x42, 0xf3, - 0xe6, 0x61, 0x3b, 0xf1, 0x26, 0x8a, 0xbe, 0x31, 0xc8, 0x83, 0xb2, 0x82, - 0xdf, 0x42, 0xc7, 0x8d, 0xfd, 0xa3, 0xd2, 0x5c, 0xdb, 0x6d, 0x69, 0x14, - 0x9e, 0xe7, 0xf4, 0xf6, 0x01, 0x65, 0x8d, 0xfe, 0x85, 0x16, 0xad, 0xe6, - 0xeb, 0x70, 0x39, 0xe5, 0x32, 0xb0, 0x69, 0x39, 0xb2, 0xa6, 0xd3, 0x86, - 0xc7, 0x99, 0x75, 0x26, 0x3a, 0x97, 0x5c, 0x3c, 0xbb, 0x96, 0xd3, 0x0c, - 0x22, 0x68, 0xb1, 0xb2, 0xc9, 0xec, 0xd4, 0xa6, 0x7c, 0xdb, 0xb1, 0x4e, - 0xf2, 0x4e, 0xfb, 0x6b, 0x57, 0x23, 0xcf, 0x3b, 0x22, 0x5b, 0xec, 0xc7, - 0xb8, 0x28, 0x9c, 0x12, 0x72, 0x9a, 0xa2, 0x92, 0xaf, 0xe0, 0xa8, 0xca, - 0x1d, 0x47, 0x55, 0x9c, 0x90, 0x24, 0x14, 0x82, 0x8f, 0xe1, 0x5a, 0x73, - 0x51, 0x95, 0xff, 0x62, 0x5d, 0x89, 0xe6, 0x3f, 0xd1, 0x7f, 0x5e, 0x6d, - 0x5e, 0x80, 0x6f, 0xf4, 0x2a, 0x71, 0x81, 0x71, 0xa8, 0x47, 0x5b, 0x4d, - 0xb3, 0x71, 0xd3, 0xb3, 0x50, 0x7a, 0xb4, 0xf6, 0x57, 0xd7, 0x2e, 0xaa, - 0xeb, 0x46, 0x6d, 0x95, 0x0d, 0x55, 0x42, 0x0f, 0x44, 0x7a, 0x3d, 0xd8, - 0x61, 0x9b, 0x99, 0xa6, 0x89, 0x06, 0xb0, 0x70, 0xbc, 0x46, 0xc2, 0x15, - 0x76, 0x91, 0x5b, 0xfc, 0x50, 0xc5, 0xc2, 0x06, 0xf7, 0xcd, 0xa0, 0xcb, - 0x70, 0xb3, 0xec, 0x46, 0xe7, 0xce, 0xeb, 0x0d, 0xdc, 0x04, 0xab, 0x92, - 0x65, 0x70, 0xa9, 0xb2, 0xc3, 0x8b, 0x8e, 0x6e, 0x16, 0x99, 0x35, 0xc6, - 0x05, 0x4b, 0xa6, 0xaa, 0x83, 0x76, 0xcb, 0x14, 0x17, 0x6b, 0x40, 0x26, - 0x42, 0xbe, 0xe1, 0x0d, 0xd2, 0xf8, 0x76, 0x19, 0x97, 0x5d, 0x13, 0x24, - 0xe3, 0xc0, 0x12, 0x77, 0x56, 0x26, 0x4f, 0xbb, 0xa4, 0x16, 0xd6, 0x58, - 0xab, 0x4c, 0x0c, 0xc8, 0x5c, 0x3a, 0x6c, 0x64, 0x83, 0x6e, 0xd3, 0x0c, - 0x63, 0x5a, 0xbc, 0x10, 0x7b, 0x9a, 0xb6, 0xaf, 0x16, 0xe0, 0x8c, 0x09, - 0xf1, 0xb6, 0x01, 0xc2, 0xcc, 0x48, 0xc7, 0x0c, 0xe4, 0x4f, 0x6b, 0x2a, - 0x64, 0x65, 0x4d, 0x25, 0x91, 0xe5, 0xe1, 0xee, 0xb8, 0xc9, 0xab, 0x79, - 0x30, 0x55, 0xfb, 0xe6, 0x48, 0xab, 0x3c, 0x53, 0xa2, 0x67, 0x71, 0xfa, - 0xa4, 0x8b, 0x21, 0x10, 0x9d, 0xcd, 0xd5, 0x9c, 0xac, 0x6e, 0xea, 0x73, - 0x01, 0xe4, 0x6e, 0x5b, 0x05, 0xb4, 0xf1, 0x94, 0x30, 0x43, 0x6b, 0xd6, - 0xdb, 0x73, 0x24, 0x15, 0x6a, 0x3f, 0xb6, 0xcb, 0x2b, 0x91, 0x10, 0x1d, - 0x78, 0xb8, 0xb1, 0x10, 0xce, 0xd8, 0x42, 0x67, 0xcc, 0x5b, 0x8a, 0xce, - 0x30, 0xf8, 0x3a, 0x15, 0xd9, 0x63, 0x35, 0x42, 0x2e, 0xd3, 0xb7, 0x16, - 0x10, 0xcc, 0x24, 0x0e, 0xdf, 0xf0, 0x7b, 0x7a, 0xe5, 0x0c, 0x96, 0xc8, - 0xf2, 0xef, 0x96, 0x5f, 0x0d, 0xf7, 0x26, 0x4f, 0x82, 0x96, 0xba, 0x4e, - 0xd8, 0x0b, 0xe3, 0xa3, 0xc1, 0x85, 0xc9, 0x37, 0x03, 0x81, 0x83, 0x40, - 0x4b, 0x8c, 0x18, 0x9a, 0x65, 0x23, 0x5a, 0x20, 0x4a, 0x2e, 0x0a, 0x49, - 0xcb, 0x05, 0x00, 0xbd, 0x0e, 0xd2, 0x42, 0x19, 0x7c, 0xf7, 0xe9, 0x61, - 0x48, 0xf8, 0x49, 0x93, 0xc8, 0x63, 0xd6, 0xd3, 0xc4, 0x18, 0x55, 0x59, - 0x53, 0xa9, 0xa2, 0xfc, 0x7d, 0x61, 0x27, 0x04, 0x24, 0xdc, 0xd8, 0x66, - 0x8b, 0xfc, 0x9c, 0x1e, 0x9e, 0x38, 0xb6, 0xf7, 0x52, 0xe5, 0x46, 0x47, - 0xbb, 0x5a, 0x78, 0xcc, 0x5c, 0xc5, 0x5b, 0x9d, 0x35, 0x16, 0x16, 0x8e, - 0xc5, 0x1a, 0xa5, 0x6d, 0x65, 0x32, 0x48, 0x55, 0xf6, 0x96, 0x73, 0xc7, - 0xfb, 0x1c, 0x9f, 0xaa, 0xce, 0xab, 0x5a, 0x9f, 0x8c, 0x45, 0xdb, 0xcb, - 0x7a, 0x1f, 0x1b, 0x00, 0x3b, 0x01, 0xde, 0xd9, 0xaf, 0x94, 0x50, 0x22, - 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, - 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, - 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x3a, 0xaa, 0x90, 0x4a, - 0x80, 0x05, 0xec, 0x4b, 0x3a, 0x71, 0xa4, 0xe0, 0x1d, 0x60, 0x2d, 0xcb, - 0x23, 0x9b, 0xee, 0x9b, 0xbc, 0xb0, 0xb7, 0xbf, 0xf1, 0x01, 0xbb, 0xb0, - 0xa8, 0x9f, 0x40, 0x50, 0x4f, 0xe0, 0x05, 0x0b, 0x0d, 0x2f, 0x2f, 0x08, - 0xd1, 0x39, 0xa3, 0x75, 0x4e, 0x27, 0x41, 0x92, 0x44, 0xcf, 0x1b, 0xc3, - 0x9a, 0xc1, 0x1a, 0x27, 0xab, 0x9e, 0xae, 0x8a, 0x0f, 0x43, 0x67, 0x32, - 0x97, 0x2e, 0xc8, 0x8a, 0x78, 0x14, 0xa2, 0x87, 0x9f, 0x8e, 0x12, 0xf5, - 0xe6, 0x9f, 0x6f, 0x56, 0x73, 0x06, 0xed, 0xf3, 0x68, 0xaf, 0x8d, 0xea, - 0xd1, 0x95, 0xc3, 0xf7, 0xc1, 0x68, 0x7f, 0x37, 0xbe, 0xb6, 0xc2, 0x29, - 0xde, 0x6b, 0x77, 0xb8, 0x55, 0x67, 0x5c, 0x5c, 0xeb, 0x53, 0xd0, 0xc1, - 0x2f, 0xc3, 0x6a, 0x97, 0x50, 0xaf, 0x4f, 0x4d, 0xf2, 0xd6, 0xee, 0x7b, - 0xe0, 0x53, 0xdd, 0x3b, 0x77, 0x51, 0xfe, 0xae, 0x72, 0xfa, 0x65, 0x47, - 0xe1, 0x79, 0xdf, 0xbb, 0xad, 0x03, 0xd6, 0xb6, 0xea, 0xb5, 0x87, 0xd2, - 0xe1, 0xcf, 0xd5, 0x81, 0x94, 0x9f, 0x09, 0x48, 0x3d, 0xd2, 0xb8, 0x29, - 0x55, 0x00, 0x36, 0x35, 0x00, 0xd5, 0x63, 0x2a, 0x1f, 0x75, 0x46, 0xfb, - 0xd4, 0x8c, 0x2c, 0xfc, 0xcf, 0x2a, 0x29, 0xd5, 0x1d, 0xb9, 0x37, 0x2a, - 0x62, 0x86, 0x62, 0x8e, 0x83, 0x15, 0x9e, 0x4d, 0x39, 0xb8, 0x7f, 0xef, - 0x10, 0xcb, 0xc7, 0x87, 0xd4, 0x18, 0x88, 0xb3, 0xd4, 0x56, 0x9e, 0xad, - 0xdf, 0x78, 0x65, 0x62, 0x2e, 0x8b, 0x7e, 0x94, 0x24, 0x8a, 0x0a, 0x15, - 0x08, 0x49, 0x70, 0x3c, 0x6c, 0x51, 0x8e, 0xae, 0xc2, 0xef, 0x21, 0x05, - 0x51, 0xa0, 0xa3, 0x69, 0x78, 0xf7, 0x5d, 0xab, 0x7e, 0x17, 0xc1, 0xa3, - 0x5e, 0xca, 0x7d, 0xaf, 0xb0, 0xf0, 0xc2, 0x52, 0xe6, 0x7e, 0x1d, 0x44, - 0x57, 0xb3, 0x4c, 0xf4, 0x1d, 0x7b, 0x89, 0x5f, 0x55, 0xcd, 0x92, 0xc9, - 0x9f, 0x6f, 0x4c, 0x7b, 0xdd, 0x32, 0x5c, 0xab, 0x44, 0xfc, 0x48, 0x14, - 0xae, 0x29, 0x11, 0x5b, 0x67, 0xe8, 0x65, 0x68, 0xb8, 0xe3, 0x5b, 0x83, - 0xc2, 0x0e, 0x8e, 0x20, 0xc7, 0x0c, 0xb3, 0x7a, 0xc8, 0x60, 0xfa, 0xd3, - 0x5c, 0x2f, 0xb6, 0xf5, 0xe5, 0x9d, 0x8c, 0x21, 0x75, 0x92, 0x37, 0xae, - 0xdc, 0xc2, 0xe1, 0x70, 0xbd, 0x16, 0xe7, 0xa4, 0x47, 0xb4, 0x6c, 0x15, - 0xe5, 0xaf, 0xe7, 0xf8, 0x0d, 0x10, 0xaa, 0x8f, 0x0f, 0x53, 0x9b, 0x5d, - 0x82, 0x60, 0xb9, 0xd8, 0xf4, 0x9e, 0xf6, 0x28, 0x40, 0xaa, 0xab, 0x73, - 0x5a, 0x42, 0xf6, 0x71, 0x6f, 0xd1, 0x0b, 0x34, 0x11, 0xea, 0x1d, 0x66, - 0xa9, 0x4a, 0x7c, 0x27, 0xf6, 0x50, 0xf2, 0x8f, 0xb1, 0x58, 0x59, 0x2a, - 0x52, 0x2a, 0xb5, 0x41, 0x14, 0xf7, 0x70, 0x57, 0xf9, 0x0c, 0x4e, 0x1e, - 0xae, 0xac, 0x04, 0x3b, 0x54, 0x54, 0xb7, 0x2b, 0x35, 0x11, 0x3a, 0x10, - 0xb7, 0xdc, 0x6a, 0x2d, 0xa5, 0x49, 0xdd, 0x06, 0x55, 0x70, 0x1a, 0x27, - 0x24, 0x37, 0x46, 0x48, 0xa2, 0xf4, 0xe3, 0x49, 0x6b, 0x2b, 0x7d, 0xd8, - 0x63, 0xa5, 0x56, 0xd6, 0xc0, 0x94, 0x2b, 0x10, 0xc9, 0x70, 0x66, 0x9e, - 0x08, 0xa0, 0x70, 0x96, 0x14, 0x04, 0x77, 0x96, 0x2a, 0xf3, 0xe9, 0x1f, - 0x35, 0xb0, 0x44, 0x8e, 0xd5, 0x02, 0x78, 0x83, 0xb6, 0x20, 0xd7, 0x1b, - 0xc6, 0x73, 0x6a, 0xa3, 0xf4, 0x50, 0xb9, 0x64, 0x52, 0x91, 0x0d, 0xaf, - 0xb0, 0x14, 0xe1, 0xad, 0x19, 0xf6, 0xe7, 0x29, 0x99, 0x26, 0x4b, 0x99, - 0x43, 0xf7, 0x10, 0x83, 0x16, 0xb9, 0x8c, 0x35, 0x22, 0xf3, 0x0b, 0x13, - 0x56, 0x11, 0x91, 0xd7, 0x56, 0x2d, 0x36, 0x68, 0x5f, 0x97, 0x7a, 0xc5, - 0x62, 0xd5, 0x8d, 0x40, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, - 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, - 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, - 0x40, 0xc5, 0x08, 0xb2, 0x20, 0xba, 0xd2, 0x67, 0x01, 0x89, 0xbe, 0x36, - 0xad, 0xd5, 0x56, 0x3c, 0x4b, 0x41, 0xcd, 0xed, 0x8c, 0x6c, 0x26, 0xce, - 0x65, 0x02, 0x47, 0x80, 0x99, 0xf3, 0xad, 0x4a, 0xce, 0x5b, 0xf9, 0x4c, - 0x5e, 0x32, 0xc9, 0xe9, 0x96, 0x02, 0xe5, 0x5f, 0x00, 0xc9, 0x66, 0x2c, - 0xf5, 0xab, 0x77, 0xf9, 0x63, 0x72, 0xfd, 0xe4, 0x9e, 0xb9, 0x6e, 0x28, - 0x12, 0x21, 0x23, 0x3a, 0xde, 0x94, 0x2d, 0xa2, 0x0f, 0x91, 0x38, 0xaa, - 0x02, 0xbf, 0x91, 0x9b, 0x2f, 0xb0, 0x7e, 0x45, 0x44, 0x85, 0xc2, 0x6b, - 0x76, 0xd8, 0xc9, 0x27, 0xf6, 0x77, 0xd3, 0xec, 0x85, 0x71, 0xa5, 0x24, - 0x39, 0x32, 0x0e, 0x32, 0x15, 0x2f, 0x30, 0x94, 0x95, 0xa3, 0x7d, 0x7c, - 0x6b, 0x7c, 0xf8, 0x22, 0xcc, 0xc8, 0x5a, 0xa0, 0x3d, 0xad, 0x93, 0x66, - 0x26, 0x88, 0x71, 0x07, 0xe2, 0x23, 0x68, 0x36, 0xea, 0x7d, 0xb1, 0xf1, - 0xe2, 0x00, 0xe4, 0x2e, 0xba, 0x27, 0xf3, 0x26, 0xa0, 0xc4, 0x65, 0x1d, - 0x0b, 0xd8, 0x08, 0x0a, 0x73, 0x9b, 0xa8, 0x1b, 0x5d, 0x62, 0x40, 0x8b, - 0xf0, 0x42, 0x50, 0x3f, 0x04, 0x1b, 0xf6, 0x49, 0xa4, 0xce, 0x4c, 0x44, - 0x21, 0xf7, 0xf6, 0x82, 0x2c, 0x06, 0xab, 0xf8, 0x2a, 0x4f, 0xa5, 0x49, - 0x7f, 0xd3, 0xf6, 0x68, 0x80, 0xf8, 0x2a, 0xa7, 0xa3, 0x0c, 0x4c, 0x66, - 0x31, 0x2b, 0x83, 0x05, 0xee, 0xbb, 0xb3, 0x0f, 0x08, 0x6f, 0xe3, 0x98, - 0x8e, 0x4f, 0x0d, 0x54, 0xf8, 0x48, 0xe8, 0xea, 0x97, 0x38, 0x2a, 0x3f, - 0x56, 0x83, 0x7e, 0x8f, 0x52, 0x75, 0xd4, 0x1b, 0x9d, 0x6d, 0xcb, 0x5d, - 0x50, 0xee, 0x60, 0x5a, 0x8d, 0xd0, 0xae, 0x23, 0x0d, 0x5d, 0x90, 0x52, - 0xc5, 0xbd, 0x87, 0xc0, 0xd4, 0xa1, 0xa2, 0x90, 0x11, 0xe3, 0x14, 0xfd, - 0xf2, 0xad, 0xbe, 0x69, 0x0c, 0x9c, 0x1c, 0x63, 0xca, 0x7d, 0xa0, 0x02, - 0x20, 0xa2, 0x2b, 0x64, 0xd4, 0xc5, 0xe9, 0xe1, 0x1b, 0x8a, 0xad, 0x99, - 0x3f, 0xa4, 0x9b, 0x27, 0xe0, 0x60, 0x30, 0x71, 0x6d, 0x50, 0xe2, 0x11, - 0x51, 0x4a, 0xa5, 0xbf, 0x2d, 0x2d, 0x3b, 0xe6, 0x51, 0x75, 0xca, 0xca, - 0x0e, 0x12, 0x0b, 0xc4, 0x27, 0xc4, 0x1a, 0x03, 0xee, 0x69, 0x6c, 0xfc, - 0x97, 0xe4, 0xba, 0x3d, 0xf1, 0x6b, 0xd8, 0x2c, 0x66, 0x2f, 0xec, 0xb1, - 0xb8, 0x45, 0xbe, 0x2d, 0x91, 0xc4, 0x2d, 0x36, 0x29, 0xa2, 0xec, 0x79, - 0xc8, 0x5d, 0x86, 0x20, 0x88, 0x37, 0xde, 0x38, 0xcd, 0x7e, 0xe6, 0xc3, - 0xe9, 0x8e, 0x1d, 0x07, 0x2a, 0xd2, 0xc8, 0x9e, 0xaa, 0x86, 0x69, 0x15, - 0xf2, 0x2d, 0x0e, 0x9e, 0x72, 0x22, 0x54, 0x68, 0xba, 0x31, 0x78, 0x2b, - 0x2c, 0x60, 0xef, 0x49, 0x61, 0xcf, 0x26, 0x25, 0x08, 0xbc, 0x8b, 0x5e, - 0xb3, 0xc7, 0xd5, 0x51, 0xbc, 0x90, 0xe5, 0x25, 0x1f, 0x3e, 0xf4, 0x54, - 0xe3, 0xfa, 0x01, 0x41, 0x83, 0xb4, 0x35, 0x97, 0x45, 0x2c, 0xed, 0x2a, - 0x20, 0x71, 0x98, 0x86, 0x4c, 0x9d, 0x60, 0x12, 0xa1, 0x13, 0x89, 0xba, - 0x55, 0xe1, 0xec, 0x57, 0xaa, 0xde, 0xac, 0x6f, 0x06, 0x64, 0x49, 0x0a, - 0x7b, 0xd3, 0xb5, 0xa7, 0xea, 0x21, 0xd8, 0x8c, 0x27, 0x24, 0x5d, 0x5a, - 0x3b, 0xdc, 0x16, 0x3c, 0x47, 0x73, 0xfe, 0x15, 0xad, 0xc0, 0x91, 0x31, - 0xf5, 0xab, 0xf3, 0xea, 0x46, 0x05, 0xb6, 0xb0, 0xc0, 0xb7, 0xf3, 0xc5, - 0x6a, 0x70, 0xd5, 0x88, 0x91, 0x3b, 0x57, 0x46, 0x43, 0x46, 0x54, 0x4d, - 0xf1, 0x97, 0xc5, 0x5f, 0x2e, 0x64, 0x4e, 0xc5, 0xaf, 0xc4, 0xe8, 0x8f, - 0x34, 0xdf, 0xbe, 0xb7, 0x34, 0xf3, 0xec, 0xa4, 0x41, 0xb4, 0x76, 0x01, - 0x84, 0x4d, 0xa7, 0x37, 0xbc, 0x80, 0x8d, 0x43, 0xab, 0xaa, 0xaa, 0xaa, - 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, - 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, - 0xbd, 0x08, 0xc3, 0x19, 0x0d, 0xce, 0x25, 0x4f, 0x35, 0xe3, 0x49, 0xb3, - 0xc8, 0xbd, 0x73, 0x09, 0x08, 0x92, 0x6a, 0x04, 0x48, 0xb5, 0xe7, 0xa5, - 0x5e, 0xc0, 0xcb, 0xd6, 0x1b, 0x1e, 0xbc, 0xfd, 0x08, 0x77, 0xce, 0x65, - 0xcf, 0x03, 0xb0, 0x62, 0x84, 0x24, 0x8b, 0x68, 0x23, 0x1d, 0x80, 0x37, - 0x40, 0x92, 0x61, 0x1f, 0x52, 0x43, 0x6d, 0xc7, 0xb6, 0xce, 0x7d, 0x6e, - 0x44, 0xe3, 0xb7, 0x92, 0xac, 0x00, 0x84, 0x42, 0x49, 0x07, 0xe8, 0x64, - 0xff, 0xff, 0x60, 0x84, 0xbd, 0xba, 0x50, 0xb6, 0x38, 0xa1, 0xa0, 0x05, - 0xa6, 0x71, 0xb3, 0x98, 0xa2, 0x79, 0xbb, 0x5d, 0x56, 0xd1, 0xdd, 0x2b, - 0x6a, 0xe5, 0xd2, 0x37, 0x57, 0xe0, 0xdf, 0x14, 0x61, 0x9b, 0x5c, 0x64, - 0x6e, 0x57, 0xd1, 0x57, 0xb3, 0x1c, 0x25, 0xe4, 0x4c, 0x02, 0x32, 0x94, - 0x14, 0xb6, 0xb6, 0xf7, 0xca, 0xed, 0xe4, 0x52, 0xbe, 0xf4, 0xdf, 0x4a, - 0x83, 0x3e, 0xe3, 0xa4, 0xcd, 0x85, 0xa8, 0xce, 0x60, 0xee, 0xe3, 0x1a, - 0x55, 0xcd, 0x14, 0x7f, 0x37, 0xdb, 0x76, 0x69, 0xb8, 0x1e, 0x82, 0xcd, - 0xfb, 0xff, 0xf8, 0x68, 0xc4, 0xde, 0x6c, 0x46, 0x05, 0x46, 0x7b, 0x5a, - 0x07, 0x29, 0x89, 0x99, 0x18, 0xe8, 0xab, 0x31, 0x4f, 0xe0, 0x29, 0xf0, - 0x9c, 0xfc, 0xbe, 0xc4, 0x21, 0x44, 0x95, 0xe5, 0xcc, 0xcc, 0x74, 0xf9, - 0x21, 0x0d, 0x5c, 0x39, 0x56, 0xd0, 0x46, 0x2e, 0x84, 0x43, 0xe1, 0x18, - 0x93, 0x0c, 0xf9, 0x15, 0x72, 0xc3, 0xe6, 0x68, 0xdf, 0x66, 0x52, 0xd0, - 0x2c, 0xb6, 0xab, 0x78, 0x79, 0x32, 0xef, 0x7f, 0x5b, 0xd2, 0x61, 0x45, - 0xdf, 0x37, 0xe7, 0x41, 0x1f, 0x19, 0x5e, 0x66, 0x6d, 0x79, 0x2f, 0x52, - 0xd0, 0x81, 0x60, 0x19, 0x55, 0x66, 0x60, 0x1b, 0xa1, 0x28, 0x47, 0x6b, - 0x35, 0xb6, 0xfb, 0xd5, 0x0a, 0x8a, 0xb2, 0x0d, 0xef, 0x8c, 0x57, 0x06, - 0x7d, 0xef, 0xb9, 0xd8, 0xb4, 0x72, 0xbf, 0x4f, 0x5e, 0x4e, 0x4a, 0x36, - 0x1b, 0x91, 0xdd, 0xac, 0xfb, 0x43, 0xbd, 0xd4, 0x93, 0xdb, 0x95, 0xf6, - 0x31, 0xdd, 0x0e, 0x13, 0xe0, 0xae, 0xa6, 0x15, 0x97, 0xba, 0xa6, 0xbb, - 0x3f, 0x4b, 0x07, 0xcc, 0x40, 0xfa, 0x99, 0xe3, 0x4b, 0x69, 0xce, 0x51, - 0x1b, 0x9d, 0x3f, 0x57, 0xa4, 0x86, 0x84, 0x78, 0x24, 0x0e, 0x09, 0x66, - 0x8b, 0x49, 0x33, 0x9b, 0x82, 0xe1, 0x9d, 0x58, 0x0b, 0x24, 0xb4, 0xa3, - 0xa0, 0x06, 0xfe, 0xba, 0xe2, 0x3b, 0x95, 0xb2, 0xcd, 0x1e, 0x2f, 0x2a, - 0xa7, 0x16, 0x16, 0x97, 0xe8, 0xb1, 0x89, 0x42, 0x94, 0x8c, 0x12, 0xae, - 0xbd, 0x5a, 0x0a, 0x7b, 0xf7, 0x87, 0x8d, 0x2c, 0x75, 0xe2, 0x9f, 0x08, - 0x40, 0x87, 0xba, 0x55, 0x8b, 0x6d, 0x55, 0x44, 0x03, 0x95, 0x87, 0x9a, - 0xf7, 0x55, 0x8c, 0x73, 0x78, 0x9c, 0xc8, 0xc8, 0x8a, 0x08, 0x7d, 0x83, - 0x1b, 0x14, 0x0e, 0x22, 0x8d, 0x1b, 0x2c, 0xde, 0x90, 0x50, 0x51, 0x42, - 0x17, 0xba, 0xb9, 0xb8, 0xf6, 0x0e, 0x77, 0xbb, 0x0f, 0xe7, 0xe8, 0x34, - 0xdb, 0xd2, 0xcd, 0x18, 0x51, 0xae, 0x09, 0x96, 0xaf, 0x14, 0xe4, 0x80, - 0x2b, 0x45, 0x37, 0xa8, 0x70, 0x47, 0xa7, 0x6b, 0x19, 0x0d, 0x00, 0x0d, - 0xd0, 0x26, 0x0b, 0x98, 0xd4, 0x86, 0x90, 0x5d, 0x76, 0xe7, 0xec, 0xdf, - 0xfa, 0xb0, 0x2a, 0x84, 0xc2, 0x89, 0x67, 0x7e, 0xc1, 0xe4, 0xfa, 0xb0, - 0xa7, 0xf0, 0xb1, 0x2d, 0x8d, 0x49, 0x5b, 0x04, 0xd1, 0x27, 0x8d, 0x0a, - 0xb8, 0xc3, 0x30, 0x72, 0x6e, 0xc5, 0x17, 0x59, 0xca, 0x38, 0x05, 0xa5, - 0x23, 0xcc, 0xbf, 0x68, 0x56, 0x4a, 0x48, 0x95, 0x97, 0x01, 0x87, 0xdb, - 0xa5, 0x4f, 0xbc, 0x9d, 0x46, 0xf1, 0x85, 0x27, 0xd6, 0x4b, 0xde, 0x43, - 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, - 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, - 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x42, 0x25, 0x66, 0xf1, - 0x7a, 0xb7, 0x08, 0x56, 0x53, 0x65, 0x7e, 0x4d, 0x9a, 0xf7, 0x06, 0x33, - 0xa9, 0xd4, 0xbf, 0x82, 0x8d, 0xca, 0x59, 0x8e, 0x3f, 0x16, 0x81, 0xc9, - 0x23, 0xac, 0x81, 0x71, 0x94, 0xc4, 0xf0, 0x0d, 0x78, 0xbd, 0x14, 0x70, - 0xb2, 0x71, 0x2f, 0x4f, 0x6e, 0xa4, 0xe5, 0x65, 0xbb, 0xe3, 0x97, 0x0c, - 0x44, 0x44, 0x04, 0x0a, 0xaf, 0xe9, 0x92, 0x1f, 0xe3, 0xc5, 0x1b, 0x3e, - 0x2d, 0xb2, 0x05, 0xf5, 0xb3, 0x6f, 0x3a, 0x65, 0x8e, 0xc9, 0xec, 0xfa, - 0x75, 0x4a, 0x31, 0x11, 0x3b, 0x18, 0xf8, 0x68, 0x0d, 0x92, 0x72, 0xc9, - 0x07, 0xcd, 0xdd, 0x2a, 0xd7, 0x5e, 0xcc, 0x51, 0x81, 0x17, 0xd2, 0x0a, - 0x4e, 0xc7, 0xed, 0x60, 0xf9, 0x61, 0x31, 0x14, 0xda, 0x9a, 0x92, 0x69, - 0xa3, 0xf8, 0x01, 0x67, 0x26, 0x04, 0x66, 0x3c, 0x9a, 0x33, 0xd7, 0x17, - 0x77, 0xb5, 0xe3, 0x5b, 0x87, 0xb0, 0x9c, 0xc2, 0x8e, 0xfa, 0x1c, 0x81, - 0x46, 0xfe, 0x14, 0x1a, 0x2e, 0x11, 0x34, 0x4b, 0x8e, 0x0b, 0x51, 0x65, - 0xcf, 0xfd, 0x46, 0x99, 0x9e, 0x5c, 0x8e, 0xd7, 0x24, 0x85, 0x99, 0x3a, - 0x0a, 0xce, 0x5b, 0xb8, 0x3f, 0xb9, 0x9d, 0x84, 0xdb, 0x54, 0xea, 0x73, - 0x92, 0x72, 0x19, 0xb5, 0xe3, 0x05, 0x11, 0xc4, 0xd9, 0x1e, 0x0a, 0x3b, - 0x16, 0xb9, 0xc9, 0x25, 0x97, 0x0c, 0xa5, 0x4e, 0xe8, 0x80, 0xf0, 0xa6, - 0x9f, 0xf8, 0x02, 0xff, 0x5e, 0x81, 0x3f, 0xab, 0x61, 0x13, 0x97, 0x4e, - 0x39, 0x76, 0x92, 0x29, 0x18, 0x9b, 0x98, 0x5f, 0x35, 0x1f, 0x36, 0xd0, - 0x1e, 0x84, 0x80, 0x54, 0x7f, 0x4d, 0xd7, 0x64, 0xf8, 0x58, 0xdf, 0xfd, - 0xe2, 0x35, 0xac, 0x82, 0xc1, 0x35, 0x87, 0x4a, 0xab, 0xab, 0x87, 0x8f, - 0x06, 0x23, 0x24, 0xd5, 0x39, 0x43, 0x40, 0x3f, 0xf3, 0xd0, 0x68, 0x5f, - 0x68, 0xfd, 0x27, 0x90, 0x31, 0xe2, 0xb6, 0x43, 0xa0, 0x1e, 0x6f, 0x77, - 0x49, 0x5a, 0x24, 0x08, 0xf4, 0x62, 0xb7, 0x3b, 0x5e, 0xc1, 0x41, 0x9d, - 0xe5, 0xa8, 0x70, 0x62, 0x26, 0x44, 0xe6, 0x01, 0xfe, 0x2b, 0x32, 0xb1, - 0x2d, 0x65, 0xb0, 0x21, 0xeb, 0x9a, 0x54, 0xb6, 0x02, 0x5b, 0xfa, 0xcf, - 0x92, 0x98, 0xbc, 0x55, 0xd0, 0xeb, 0xd7, 0x21, 0xf5, 0x47, 0xd3, 0x00, - 0xf7, 0xc3, 0x5b, 0x59, 0x50, 0x5f, 0x06, 0x34, 0xc2, 0x69, 0x80, 0xf3, - 0xf8, 0x76, 0xc5, 0x6f, 0xb5, 0xb7, 0x9c, 0x15, 0xda, 0x69, 0x04, 0xf0, - 0xa6, 0x25, 0x6c, 0xe6, 0xf9, 0xb3, 0xe8, 0x27, 0x8a, 0xa5, 0xfa, 0x2b, - 0x32, 0x40, 0xb4, 0x7c, 0xf1, 0x15, 0xf5, 0xb5, 0x8b, 0xba, 0x76, 0xb3, - 0xde, 0x4c, 0x76, 0xdb, 0x64, 0x01, 0x25, 0x7a, 0xbd, 0xf0, 0x53, 0x3f, - 0x39, 0xe5, 0x58, 0x98, 0xa0, 0x22, 0x16, 0x01, 0x07, 0xe7, 0x86, 0xe5, - 0x27, 0xfe, 0xa9, 0x92, 0xaf, 0xb4, 0xe5, 0x0d, 0x45, 0x0d, 0x8b, 0x5f, - 0x7e, 0x65, 0xbc, 0x84, 0x84, 0x4f, 0x8e, 0xfa, 0x0d, 0x1e, 0x5c, 0x60, - 0x67, 0xee, 0x38, 0x65, 0xf2, 0x83, 0xdb, 0x44, 0x32, 0x88, 0x88, 0x79, - 0xe5, 0xe7, 0xf1, 0x76, 0x3f, 0x88, 0x63, 0x17, 0x87, 0xe8, 0x96, 0x0c, - 0xca, 0x93, 0xc3, 0x7f, 0x5c, 0xf1, 0x25, 0xf8, 0x3a, 0xc2, 0xe6, 0x26, - 0x16, 0xa2, 0xfa, 0x25, 0xea, 0x85, 0x7e, 0xcc, 0xf7, 0x5d, 0x7b, 0x4d, - 0xed, 0xe8, 0x1e, 0xbc, 0xff, 0xbd, 0x53, 0x4a, 0xd5, 0xea, 0x63, 0x4f, - 0x29, 0x61, 0xb2, 0x35, 0x8d, 0x2d, 0xfe, 0x03, 0x96, 0x1d, 0x29, 0x47, - 0xd4, 0x63, 0x32, 0x1a, 0xe6, 0xe1, 0x4e, 0x3d, 0x02, 0x58, 0xb5, 0x13, - 0x0e, 0x84, 0x6e, 0x3e, 0xe9, 0x52, 0x5a, 0x34, 0x52, 0x04, 0x7c, 0x2a, - 0xe2, 0xa6, 0x3a, 0x56, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, - 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, - 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, - 0x0c, 0xdb, 0x92, 0x99, 0xbc, 0x05, 0x48, 0x78, 0xe2, 0xdb, 0x6a, 0xea, - 0xfc, 0x50, 0x18, 0xf2, 0xbf, 0x7d, 0x5d, 0xb7, 0x09, 0xd8, 0x20, 0x96, - 0x05, 0xf6, 0xe5, 0x08, 0x68, 0x85, 0x51, 0x47, 0xcf, 0x28, 0xa8, 0x77, - 0x5a, 0x6e, 0xb9, 0x20, 0xfb, 0x7a, 0xdb, 0x61, 0x5b, 0x14, 0x29, 0x10, - 0xf9, 0x73, 0x0a, 0x26, 0xee, 0xc9, 0x37, 0x05, 0x4c, 0xcc, 0xb4, 0xa5, - 0x26, 0x4d, 0xc5, 0x0a, 0x0c, 0xf9, 0xe3, 0xd0, 0x8d, 0xb7, 0x18, 0x20, - 0x9f, 0xcf, 0x08, 0x2d, 0xe8, 0x76, 0xb3, 0xe2, 0xa7, 0x59, 0xba, 0xfd, - 0x7b, 0x4e, 0xec, 0x29, 0x2d, 0x60, 0x47, 0x64, 0x8c, 0x15, 0x02, 0x31, - 0x25, 0x05, 0x71, 0x93, 0x3b, 0x56, 0x2c, 0x0c, 0x6f, 0x79, 0x83, 0xc7, - 0xe6, 0xb2, 0xfe, 0x91, 0x2c, 0x5a, 0x46, 0x93, 0xc1, 0x33, 0x39, 0x6c, - 0xd6, 0x0b, 0x53, 0x79, 0x5a, 0xfd, 0x3c, 0x12, 0x3e, 0xae, 0xf3, 0xf5, - 0x3b, 0xe1, 0x68, 0xbb, 0xb1, 0x31, 0x71, 0x18, 0x11, 0x03, 0x3a, 0x71, - 0x37, 0x4f, 0xef, 0x25, 0xd8, 0xb0, 0x8c, 0x59, 0x4b, 0x72, 0xf3, 0xab, - 0x4e, 0x57, 0xd5, 0x2e, 0x6f, 0xc2, 0x75, 0xba, 0xbf, 0x06, 0x67, 0x2f, - 0x07, 0x08, 0x14, 0x76, 0x93, 0xbb, 0x8f, 0x02, 0xf2, 0x48, 0x8c, 0x6b, - 0xce, 0x8b, 0xcb, 0x9e, 0xb2, 0x48, 0x50, 0x7d, 0xfc, 0x20, 0x1c, 0x60, - 0x48, 0x5e, 0x55, 0x18, 0x9e, 0x9a, 0xd8, 0x63, 0xea, 0xe8, 0xe3, 0xba, - 0x0d, 0x64, 0x48, 0x07, 0x04, 0xb4, 0xf4, 0xcd, 0x73, 0xa9, 0x5f, 0xf5, - 0xf8, 0xe1, 0xca, 0x03, 0x48, 0x98, 0xa6, 0x22, 0x3f, 0x6f, 0x0d, 0x3e, - 0x26, 0xb0, 0x85, 0x5e, 0xc2, 0x55, 0xdc, 0x57, 0xaa, 0x00, 0xa0, 0x1d, - 0x66, 0x5a, 0xc6, 0x0c, 0xd8, 0x1a, 0x15, 0x9c, 0x29, 0x3d, 0x2c, 0x73, - 0xe6, 0xf7, 0x2e, 0x3e, 0x0f, 0x5c, 0x36, 0x0d, 0x9d, 0xac, 0x31, 0x20, - 0x6b, 0xbb, 0xf5, 0xf0, 0xfe, 0x0e, 0x88, 0x3e, 0x05, 0xcf, 0x6b, 0x03, - 0x91, 0x16, 0x78, 0xe6, 0x47, 0x01, 0x0b, 0x12, 0x88, 0xc6, 0x0a, 0x26, - 0xfb, 0xf0, 0x7b, 0x94, 0x75, 0x07, 0xa1, 0x9a, 0xcf, 0x91, 0x54, 0x2d, - 0xcf, 0xec, 0x00, 0x9a, 0x97, 0x1d, 0x52, 0xd1, 0xef, 0x57, 0x85, 0x3c, - 0x95, 0x17, 0x68, 0x9e, 0xab, 0xbb, 0xe1, 0x06, 0x13, 0xd8, 0xf8, 0xe8, - 0xf1, 0xa5, 0x96, 0x24, 0x8b, 0x91, 0xd0, 0x6c, 0xd9, 0x58, 0x5d, 0x3b, - 0x32, 0xa9, 0x08, 0x22, 0x39, 0x12, 0x59, 0x16, 0x66, 0x77, 0x4f, 0x5d, - 0x0c, 0x48, 0x94, 0x6e, 0x21, 0x5d, 0xc7, 0xc0, 0x27, 0x02, 0xdb, 0xc5, - 0x95, 0x47, 0x74, 0xf9, 0xd0, 0x17, 0x88, 0x04, 0x22, 0xd3, 0x15, 0x02, - 0x1e, 0x83, 0x72, 0x3c, 0xf3, 0x1f, 0xf8, 0xbe, 0x6e, 0xe2, 0x9d, 0x57, - 0x56, 0x40, 0x4c, 0x6a, 0xa7, 0xf0, 0xc7, 0x26, 0x9e, 0xdc, 0x9d, 0xb5, - 0x9e, 0xf5, 0x6b, 0xb4, 0x25, 0x65, 0x7f, 0x14, 0x73, 0xc8, 0x3a, 0x38, - 0x45, 0x05, 0xeb, 0x19, 0xac, 0x11, 0x50, 0x43, 0xe7, 0x77, 0xad, 0x0f, - 0x95, 0x8b, 0x9e, 0x69, 0x90, 0x24, 0xc8, 0xf8, 0xe4, 0xd5, 0x41, 0x5c, - 0x53, 0x24, 0xbd, 0xbb, 0x0f, 0x0b, 0x90, 0xe5, 0xe9, 0xbb, 0x2d, 0x0c, - 0xdd, 0xbb, 0x81, 0x01, 0xe6, 0x2c, 0xdb, 0x18, 0x7e, 0x5d, 0x02, 0x2c, - 0x9f, 0x1a, 0x48, 0x75, 0x11, 0xf6, 0x41, 0xdb, 0xb2, 0xb6, 0x61, 0xaf, - 0x4b, 0x16, 0xfb, 0xd4, 0x19, 0x9c, 0xfd, 0xfa, 0x3e, 0xba, 0xde, 0x6d, - 0x1b, 0x86, 0xbb, 0xc1, 0x2e, 0x10, 0x65, 0x78, 0xcd, 0xa8, 0xb2, 0x6b, - 0xaf, 0x15, 0x9c, 0x6a, 0xf3, 0xfb, 0xb3, 0xcb, 0x84, 0x18, 0x0d, 0xb3, - 0x36, 0x13, 0x77, 0x7b, 0xfe, 0xc9, 0x18, 0x0e, 0xab, 0xaa, 0xaa, 0xaa, - 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, - 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, - 0xbd, 0x08, 0xc3, 0x19, 0x6d, 0xca, 0x3b, 0xf2, 0x37, 0x10, 0x7c, 0x9b, - 0x95, 0xb8, 0xc0, 0xa7, 0x3c, 0xa2, 0xf0, 0xfb, 0x4e, 0x50, 0xf1, 0x5c, - 0xdc, 0x01, 0x49, 0x08, 0x15, 0xcb, 0x78, 0xb4, 0xa2, 0xc6, 0x2f, 0x23, - 0x69, 0x34, 0xde, 0xa7, 0xdc, 0xcc, 0x79, 0x08, 0xb9, 0xd2, 0x02, 0x98, - 0x64, 0x20, 0x97, 0xb6, 0x7d, 0x20, 0x91, 0x18, 0x3a, 0x19, 0x55, 0x2d, - 0xbb, 0x60, 0x70, 0xb6, 0xff, 0x31, 0x2a, 0x02, 0x11, 0x08, 0x29, 0xba, - 0xee, 0xa9, 0xa2, 0x22, 0xfb, 0x8a, 0xd5, 0x7d, 0x62, 0x17, 0xfa, 0x28, - 0x94, 0x37, 0x56, 0xae, 0x43, 0x3d, 0xb8, 0x5a, 0xed, 0xb8, 0x1a, 0x35, - 0x97, 0xcd, 0xd6, 0x17, 0x46, 0x71, 0x82, 0x32, 0x8d, 0x92, 0x01, 0x45, - 0x02, 0x5b, 0x9f, 0x84, 0x94, 0x27, 0xc4, 0xd0, 0xf4, 0x35, 0xd3, 0x6b, - 0xa6, 0xd0, 0x9c, 0xf7, 0x00, 0x3a, 0xe4, 0x9d, 0x07, 0x2c, 0x72, 0x56, - 0xe3, 0x21, 0xfb, 0xc1, 0x69, 0xc0, 0xda, 0xd2, 0x0d, 0xa9, 0xb9, 0x97, - 0x7c, 0xdc, 0x5c, 0xf9, 0xe0, 0xae, 0xdf, 0xfb, 0x91, 0x5e, 0x24, 0xbb, - 0xaa, 0x3e, 0x2a, 0xab, 0x1e, 0x3d, 0x1f, 0x27, 0x55, 0x62, 0x33, 0xd7, - 0x4d, 0xeb, 0x82, 0x36, 0xc5, 0x98, 0x97, 0x29, 0xe0, 0x4b, 0xc3, 0x01, - 0x11, 0x9e, 0x4a, 0x22, 0x10, 0xde, 0xa8, 0x42, 0x8a, 0x35, 0xf8, 0x1b, - 0x39, 0xb0, 0xf0, 0x67, 0x3b, 0x12, 0xa8, 0xf7, 0xa2, 0x69, 0x33, 0xa3, - 0xb5, 0x61, 0xf3, 0x20, 0x94, 0xb8, 0xc6, 0x2a, 0x40, 0x60, 0x21, 0xb3, - 0x83, 0xdb, 0x9c, 0x10, 0xe0, 0xf1, 0x54, 0x06, 0xfa, 0x90, 0xe1, 0x11, - 0x58, 0xb2, 0xe0, 0xf4, 0x24, 0x34, 0x2a, 0x85, 0x00, 0x05, 0x38, 0xae, - 0x1b, 0x37, 0x39, 0x82, 0x9e, 0xb6, 0xdf, 0x9d, 0x38, 0x31, 0xeb, 0x86, - 0xfe, 0x30, 0x41, 0x3b, 0x37, 0x73, 0x9a, 0x72, 0x83, 0x9c, 0x9b, 0xe6, - 0x88, 0x28, 0x20, 0xb1, 0xf0, 0x25, 0xaa, 0xc3, 0x48, 0x40, 0xc1, 0x3f, - 0x91, 0x3f, 0x32, 0x8c, 0x39, 0xd2, 0xaa, 0x8e, 0xaa, 0x48, 0xbf, 0xc4, - 0xcc, 0x3e, 0x3e, 0x61, 0xab, 0xc3, 0xb3, 0x6d, 0x0e, 0x93, 0x34, 0x40, - 0x65, 0x4b, 0xf2, 0xdc, 0xfd, 0xf7, 0x5a, 0xd5, 0x7c, 0x7f, 0xb0, 0x20, - 0xd5, 0xf9, 0x3a, 0x45, 0x42, 0x40, 0xef, 0x12, 0x6c, 0x44, 0xf3, 0x37, - 0xd0, 0x55, 0x0d, 0x52, 0xdf, 0x95, 0x6c, 0x29, 0x08, 0xe9, 0x61, 0x5d, - 0xb2, 0x74, 0xa6, 0x76, 0x7f, 0x0c, 0x51, 0xbc, 0x1d, 0xbc, 0x82, 0xe7, - 0x6e, 0x93, 0x43, 0x0e, 0xa3, 0xe4, 0x88, 0x4d, 0x40, 0x87, 0xed, 0xd3, - 0x0a, 0x2f, 0xb8, 0xd4, 0x99, 0xf0, 0x03, 0x7b, 0xcc, 0x89, 0x18, 0x92, - 0x53, 0x91, 0x22, 0x01, 0xd6, 0x94, 0xa5, 0x26, 0x13, 0x21, 0x86, 0xda, - 0x83, 0xbb, 0xa7, 0x26, 0x18, 0x11, 0xe8, 0x2d, 0x37, 0x0b, 0x67, 0x0e, - 0xd6, 0x49, 0x31, 0x18, 0x9f, 0x7d, 0xde, 0xe2, 0x47, 0xcf, 0x27, 0xe2, - 0xe2, 0x31, 0x03, 0xcc, 0x03, 0xe4, 0xce, 0x48, 0x4a, 0x12, 0xe5, 0x6a, - 0xfe, 0xa8, 0xe3, 0x6f, 0x4a, 0xab, 0x70, 0xa8, 0xab, 0xab, 0xee, 0xf9, - 0x02, 0xd5, 0x1c, 0x82, 0xf5, 0x34, 0xff, 0x06, 0x5b, 0xf3, 0x1e, 0xcc, - 0x9f, 0x51, 0x91, 0xd0, 0x5d, 0x3b, 0x73, 0x50, 0x4c, 0x69, 0xe2, 0x6c, - 0x4b, 0x72, 0xdb, 0x47, 0x54, 0xe2, 0x65, 0xaa, 0x7c, 0xbb, 0x92, 0xcc, - 0xc7, 0x8e, 0x4c, 0x26, 0x64, 0x1e, 0x53, 0xc0, 0xce, 0xf1, 0x32, 0x8c, - 0xa8, 0x22, 0xb8, 0x67, 0x29, 0x62, 0x6c, 0x8d, 0xb3, 0xc7, 0x3f, 0xf0, - 0x46, 0x42, 0xba, 0x11, 0x90, 0xaa, 0x6b, 0x2a, 0x93, 0x30, 0x8f, 0x6d, - 0x5b, 0x52, 0x6d, 0x08, 0x0b, 0xad, 0xf2, 0x39, 0x66, 0xa4, 0xe5, 0x6f, - 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, - 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, - 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x4b, 0x47, 0xe4, 0xbd, - 0x94, 0xe4, 0x81, 0x60, 0x08, 0xb8, 0xf7, 0xc2, 0xd4, 0xb4, 0x9f, 0x07, - 0xfa, 0xa7, 0xd1, 0x43, 0x7d, 0x5f, 0xfe, 0x19, 0x73, 0xcd, 0x17, 0xf7, - 0xbf, 0xca, 0x1d, 0x0d, 0xe9, 0x7e, 0xbc, 0xdd, 0x64, 0x1b, 0xe0, 0x3c, - 0x90, 0x0b, 0xb6, 0x01, 0x9d, 0xa4, 0x96, 0x0e, 0x1a, 0x91, 0x33, 0xca, - 0x9f, 0xea, 0xc2, 0x33, 0xd5, 0x7c, 0x73, 0x78, 0xe9, 0x1d, 0xec, 0x21, - 0x2f, 0x0d, 0x4a, 0x60, 0x99, 0x1f, 0xc9, 0x38, 0xe9, 0x98, 0x9a, 0x87, - 0x84, 0x96, 0x59, 0x85, 0xe9, 0x24, 0x1e, 0x52, 0xb5, 0x8f, 0x21, 0x53, - 0x05, 0xf4, 0xd2, 0xfc, 0x31, 0xac, 0x43, 0x2a, 0x58, 0x8a, 0xb8, 0x12, - 0x3d, 0xfe, 0x84, 0x14, 0x48, 0x8f, 0xcc, 0x36, 0xc4, 0xa3, 0x8a, 0x20, - 0x35, 0x5f, 0xad, 0x22, 0x07, 0xbc, 0x02, 0x7f, 0x39, 0x24, 0xb7, 0xab, - 0x4e, 0x1b, 0x4d, 0x37, 0xbc, 0x5a, 0x75, 0x5b, 0xcd, 0x6a, 0x1b, 0xe2, - 0x87, 0x7e, 0x47, 0xfd, 0x5f, 0xf2, 0x48, 0x02, 0x7c, 0xa0, 0xb3, 0xa0, - 0x05, 0x14, 0x6d, 0xd6, 0x70, 0x45, 0x47, 0xd0, 0x3a, 0xbe, 0x33, 0x20, - 0x5a, 0x61, 0x23, 0xb1, 0x8e, 0x95, 0x6c, 0xe3, 0x84, 0x72, 0xca, 0x10, - 0xbd, 0xe5, 0xe4, 0x8e, 0xd5, 0x1b, 0x6b, 0xc0, 0xec, 0x0b, 0x8c, 0xb0, - 0xa9, 0xb9, 0xfb, 0x8a, 0xa5, 0x82, 0xa5, 0x33, 0xbc, 0x0f, 0xc1, 0xaf, - 0xc0, 0x10, 0x8b, 0x8c, 0x34, 0x31, 0xed, 0x59, 0x15, 0x26, 0x2a, 0x58, - 0x9f, 0xdb, 0x9e, 0xb4, 0xda, 0x3a, 0xf1, 0x25, 0x11, 0xe1, 0x63, 0xb6, - 0xe4, 0xab, 0x35, 0x2e, 0x00, 0x1c, 0xac, 0x38, 0xea, 0x53, 0x85, 0xde, - 0x6a, 0x80, 0x33, 0x11, 0x46, 0xb4, 0xe3, 0x3d, 0xf4, 0xf8, 0x1f, 0x62, - 0x90, 0xb1, 0x3e, 0x0e, 0xf5, 0x31, 0xcf, 0x5a, 0x2c, 0xac, 0xc3, 0x40, - 0x9d, 0xb0, 0x10, 0xba, 0x50, 0x73, 0x0c, 0xa2, 0xa3, 0x9f, 0xad, 0x89, - 0x8d, 0x56, 0xc2, 0xfd, 0x62, 0xc3, 0x48, 0xa2, 0x17, 0x57, 0xe4, 0xca, - 0x9c, 0x8b, 0xa8, 0x55, 0xc0, 0x0b, 0x2a, 0x57, 0x81, 0x85, 0x69, 0xe9, - 0xd0, 0x53, 0x2d, 0xc6, 0xca, 0x0d, 0xa0, 0xdf, 0x1d, 0xdc, 0xea, 0xff, - 0xa0, 0x96, 0x94, 0x15, 0x0d, 0x44, 0x5e, 0x29, 0xa8, 0x48, 0x72, 0xf8, - 0xf8, 0x81, 0xcb, 0x4d, 0x70, 0xcb, 0x1e, 0x45, 0x86, 0xdf, 0xe5, 0x60, - 0x1d, 0x32, 0xf8, 0x79, 0x83, 0xd9, 0x27, 0x07, 0xac, 0xc3, 0xb5, 0x03, - 0x47, 0xc1, 0xf7, 0x75, 0xff, 0x4d, 0x1b, 0x00, 0x29, 0xfe, 0xeb, 0x08, - 0x09, 0xab, 0x4b, 0x75, 0xa0, 0x23, 0xb9, 0xac, 0x37, 0x17, 0x1b, 0x0d, - 0xb6, 0xba, 0x4e, 0xfa, 0x71, 0xf8, 0x23, 0xcf, 0xd6, 0x7c, 0x39, 0x13, - 0x9f, 0x4a, 0x60, 0xe7, 0x77, 0x2a, 0xb7, 0x1b, 0xe8, 0x0e, 0x99, 0x8d, - 0xd7, 0xab, 0xed, 0xc2, 0x18, 0xbb, 0xb2, 0xe7, 0xc2, 0xa3, 0xf2, 0xb7, - 0xff, 0x4b, 0x03, 0xea, 0xbf, 0x13, 0xd4, 0xc1, 0x57, 0xc5, 0xda, 0x70, - 0xb9, 0x11, 0x04, 0x5d, 0xd4, 0x9e, 0xce, 0x63, 0xdf, 0x5d, 0x8c, 0x3d, - 0xf5, 0x07, 0x62, 0xf4, 0x70, 0xeb, 0x61, 0x6f, 0x1f, 0xc8, 0xfb, 0x93, - 0x6d, 0x57, 0x9b, 0x2e, 0xba, 0xe0, 0x01, 0xab, 0x67, 0xa9, 0x55, 0x40, - 0xf7, 0xa6, 0x2c, 0xbf, 0xd0, 0x71, 0x22, 0xcd, 0x13, 0x32, 0xfa, 0x68, - 0x2b, 0xe0, 0x57, 0xf1, 0x97, 0x7c, 0xb0, 0x1d, 0xcf, 0x9e, 0xf3, 0x10, - 0x4a, 0x97, 0xc4, 0x0f, 0x53, 0x1d, 0xc2, 0x65, 0x73, 0x31, 0x47, 0xe0, - 0x7a, 0x2a, 0xf9, 0x3c, 0xeb, 0x72, 0xee, 0x9c, 0xfc, 0xaa, 0xa9, 0x57, - 0xb2, 0xb7, 0x31, 0x64, 0x5c, 0xbe, 0x77, 0x5a, 0x46, 0x28, 0x2c, 0xa7, - 0x62, 0x4b, 0x29, 0x41, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, - 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, - 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, - 0x09, 0xef, 0x51, 0x7f, 0xd7, 0xa0, 0xf5, 0x94, 0x26, 0x37, 0x2c, 0x5a, - 0xc7, 0x14, 0x3f, 0x7c, 0x5c, 0xdc, 0x4f, 0x11, 0xfb, 0x00, 0x02, 0x31, - 0x93, 0x5a, 0x85, 0x41, 0x99, 0x55, 0x7a, 0x71, 0x8e, 0x31, 0x10, 0x87, - 0xba, 0x01, 0xef, 0x73, 0xa6, 0xe4, 0xd8, 0xfd, 0x80, 0xd3, 0x9e, 0x73, - 0x55, 0xdc, 0x26, 0x51, 0x31, 0x7f, 0x68, 0x73, 0xa7, 0xf7, 0xdf, 0xe6, - 0x6f, 0x35, 0x2a, 0x3e, 0x9d, 0x53, 0x41, 0x84, 0xcd, 0xef, 0xcc, 0xb1, - 0xb1, 0x59, 0x4a, 0x12, 0xf1, 0xd1, 0x6d, 0xf9, 0xb6, 0x07, 0x71, 0x5e, - 0xbc, 0x63, 0x15, 0x73, 0xfc, 0x02, 0x69, 0xfe, 0x5f, 0xb6, 0xf1, 0x07, - 0xd3, 0xa2, 0xae, 0xc0, 0xd9, 0x41, 0xb4, 0x87, 0x8c, 0x5e, 0x8b, 0x2f, - 0xee, 0x2f, 0x94, 0xc1, 0x20, 0xe5, 0x32, 0xc4, 0xec, 0x6a, 0x55, 0x76, - 0x8b, 0xf8, 0xc3, 0x9d, 0xba, 0xf4, 0x21, 0x5a, 0x3d, 0x7b, 0xa6, 0x6e, - 0x0b, 0x0d, 0x41, 0x02, 0x4b, 0xab, 0x29, 0xd1, 0xb3, 0x70, 0xe6, 0xcb, - 0xe1, 0x06, 0x72, 0x13, 0x39, 0xb6, 0xf6, 0xe6, 0xee, 0x17, 0xa8, 0x4c, - 0xf0, 0x16, 0x5e, 0x2e, 0x3b, 0xee, 0x0e, 0x06, 0x1c, 0x0c, 0x35, 0xe5, - 0x25, 0xe8, 0xbb, 0xba, 0x35, 0x4a, 0xb3, 0x1a, 0xaf, 0x31, 0xf4, 0xd4, - 0x15, 0x12, 0xf2, 0x90, 0x09, 0x0e, 0xb5, 0xa1, 0x01, 0xe5, 0x1e, 0x15, - 0x71, 0xb7, 0x21, 0x51, 0x22, 0xbb, 0x46, 0x13, 0x7e, 0x19, 0x4c, 0x7f, - 0xf1, 0x56, 0x31, 0xcf, 0xb7, 0xff, 0x44, 0x57, 0xc8, 0x37, 0x99, 0x7f, - 0x4e, 0xa9, 0x79, 0xef, 0x0a, 0x2c, 0xb7, 0x62, 0xae, 0x1f, 0x31, 0xb4, - 0x83, 0xca, 0x2c, 0x25, 0x9b, 0xbc, 0xc6, 0x52, 0xb4, 0x4b, 0xee, 0x8e, - 0x85, 0xdd, 0x19, 0xfd, 0xbf, 0xb6, 0x37, 0x30, 0x74, 0x3f, 0xb1, 0x77, - 0x0c, 0x36, 0x99, 0x46, 0x06, 0x17, 0xeb, 0x10, 0x79, 0x3f, 0xe5, 0x48, - 0x9f, 0x4c, 0x91, 0x5c, 0x86, 0x90, 0x15, 0x59, 0xb0, 0xca, 0x6f, 0x83, - 0xbc, 0x46, 0x40, 0x9a, 0x64, 0xdc, 0x27, 0x84, 0xc8, 0x8f, 0xc3, 0x5f, - 0x82, 0xb6, 0xce, 0xc8, 0xc4, 0xf5, 0x1c, 0x08, 0x7a, 0xdc, 0xd2, 0x48, - 0xc8, 0xd8, 0x1a, 0x01, 0x60, 0xb8, 0x69, 0xbb, 0xe2, 0xb1, 0x16, 0x26, - 0x47, 0xac, 0x66, 0x57, 0x7d, 0x0f, 0xe2, 0x6f, 0xd8, 0x28, 0x8f, 0x54, - 0x8b, 0xea, 0xd8, 0x2c, 0x86, 0x13, 0x73, 0xbb, 0x45, 0xf9, 0xbe, 0x6d, - 0xf4, 0x14, 0x42, 0x6e, 0x62, 0xbc, 0xa2, 0x05, 0x4b, 0x67, 0x6d, 0x16, - 0x8d, 0x86, 0x28, 0x0c, 0xea, 0x91, 0x2f, 0x2d, 0x7f, 0x47, 0x7b, 0x38, - 0x86, 0x2e, 0x15, 0x0d, 0x04, 0x8d, 0xdb, 0x7d, 0xc4, 0xde, 0x68, 0x1a, - 0x22, 0x0c, 0xc6, 0xa7, 0xc5, 0x9d, 0x9e, 0xe0, 0x9c, 0x32, 0x89, 0x5c, - 0x2a, 0x29, 0x7f, 0xf2, 0x44, 0xd4, 0x6e, 0xfd, 0x96, 0xc6, 0x39, 0x24, - 0xea, 0x25, 0x70, 0xa7, 0xef, 0x40, 0x5c, 0xe2, 0x12, 0x7c, 0xa9, 0xd9, - 0x1e, 0xac, 0x14, 0xf5, 0xc6, 0xed, 0x46, 0x3f, 0x83, 0x37, 0xb3, 0xfe, - 0xea, 0x7c, 0x2d, 0x7b, 0x0f, 0x6b, 0xac, 0xd4, 0x10, 0xe9, 0x15, 0x33, - 0x70, 0xe6, 0xbc, 0x1c, 0xa1, 0x1f, 0x91, 0xeb, 0x7f, 0xf8, 0x74, 0x78, - 0x9c, 0x09, 0x23, 0x09, 0xc9, 0x7c, 0x2f, 0x3b, 0xa2, 0xe5, 0x8f, 0xc4, - 0x6a, 0xc5, 0xf6, 0xab, 0xc9, 0xda, 0x80, 0x2e, 0x2a, 0xd2, 0xb8, 0xa0, - 0xf7, 0x0b, 0x8b, 0x3b, 0x5e, 0x6c, 0x3c, 0x12, 0x4a, 0xf1, 0x4d, 0x13, - 0xb5, 0x67, 0xf9, 0xba, 0x13, 0xea, 0xc3, 0xd3, 0xf4, 0x86, 0x54, 0x46, - 0xfd, 0xf7, 0xd6, 0x6d, 0xb3, 0xa1, 0xe3, 0x70, 0x13, 0xcc, 0xec, 0x72, - 0x77, 0x1e, 0x20, 0xe3, 0xeb, 0x77, 0xf2, 0x5f, 0xab, 0xaa, 0xaa, 0xaa, - 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, - 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, - 0xbd, 0x08, 0xc3, 0x19, 0xe1, 0x21, 0x7a, 0xaa, 0x40, 0x45, 0xd5, 0xb9, - 0x9d, 0x31, 0x3d, 0xd0, 0x02, 0x32, 0xac, 0xca, 0x79, 0x2b, 0xca, 0xdd, - 0x3d, 0x12, 0x03, 0xf7, 0xf3, 0x6d, 0x55, 0x13, 0x54, 0xbe, 0xa9, 0x52, - 0x87, 0xd7, 0xd4, 0x6d, 0xb8, 0x7f, 0xd3, 0x2b, 0xf2, 0x47, 0x89, 0xd6, - 0x7b, 0x14, 0x60, 0x01, 0xb8, 0x80, 0x35, 0x3d, 0x91, 0xfa, 0xe8, 0xaf, - 0x37, 0xd8, 0xe0, 0x25, 0xbf, 0xb2, 0x9d, 0x01, 0x00, 0xf9, 0xb6, 0xf9, - 0x61, 0xbd, 0xd0, 0x3c, 0x2d, 0xe8, 0xc9, 0x4a, 0x1e, 0x61, 0xe9, 0x6f, - 0x96, 0x0a, 0x86, 0x08, 0x96, 0x3b, 0x8f, 0x95, 0x25, 0x64, 0x51, 0x79, - 0x9d, 0x01, 0xd8, 0x16, 0xc1, 0x2c, 0x7f, 0x82, 0x26, 0x91, 0x82, 0xdc, - 0xf8, 0x05, 0x9c, 0x06, 0xc6, 0x15, 0xb5, 0x60, 0xa2, 0xc8, 0xeb, 0x6d, - 0xf3, 0x38, 0x3d, 0xee, 0x33, 0x1a, 0x73, 0x35, 0x84, 0x4b, 0x04, 0x3c, - 0x00, 0x33, 0x24, 0xd9, 0x1f, 0x45, 0xca, 0xb9, 0x7b, 0xad, 0xa0, 0x79, - 0xf2, 0xbb, 0x7e, 0xcb, 0x64, 0x65, 0x8c, 0x2e, 0x80, 0xcc, 0x09, 0x47, - 0x1e, 0x3a, 0x91, 0xdf, 0x5a, 0x2f, 0x1b, 0x4c, 0xda, 0x5a, 0x13, 0x5d, - 0x36, 0x0f, 0x98, 0x5d, 0x4f, 0x99, 0xee, 0x2d, 0x23, 0x52, 0x33, 0x70, - 0xb4, 0x9c, 0x09, 0xd1, 0xce, 0x9d, 0xe9, 0x5b, 0x9b, 0xc2, 0x51, 0x37, - 0x30, 0x4e, 0x82, 0x1f, 0x1b, 0x96, 0x36, 0xe5, 0x4f, 0xd8, 0x51, 0x39, - 0x9e, 0x92, 0xe9, 0xa7, 0xff, 0xba, 0xb8, 0x2c, 0x63, 0x50, 0x62, 0x1c, - 0xb0, 0xaf, 0x84, 0x19, 0x97, 0x40, 0xdd, 0xb5, 0x55, 0x9e, 0x77, 0x53, - 0x9a, 0xdd, 0x60, 0x68, 0x8a, 0x8c, 0xb5, 0xc4, 0x96, 0xda, 0xcd, 0xac, - 0xa1, 0xca, 0xea, 0x20, 0x5b, 0x4f, 0xc3, 0xb5, 0x8b, 0x59, 0x5b, 0xb6, - 0xb6, 0x88, 0x45, 0xa8, 0x19, 0x94, 0xe9, 0x0c, 0xce, 0xe3, 0x39, 0x8d, - 0x1e, 0x13, 0xea, 0x9c, 0x3d, 0x49, 0x7e, 0x59, 0x63, 0x8e, 0xd4, 0xae, - 0xe3, 0x21, 0x3f, 0x71, 0x59, 0x03, 0x9d, 0xce, 0xbf, 0x66, 0xe0, 0x51, - 0x3c, 0xab, 0xd0, 0x6f, 0xaf, 0xa0, 0x59, 0x11, 0xfa, 0x30, 0x98, 0x05, - 0x3d, 0xf6, 0x42, 0xc5, 0x3b, 0x10, 0xf1, 0x01, 0xad, 0x4a, 0xd1, 0x93, - 0x0f, 0x67, 0x3a, 0xbc, 0xa0, 0x7d, 0xda, 0x28, 0xe5, 0x20, 0x73, 0x0d, - 0x43, 0x24, 0xcc, 0x2e, 0xed, 0xb5, 0xa0, 0x4a, 0x9d, 0x36, 0xe5, 0x6f, - 0xfb, 0x07, 0xe5, 0x15, 0x30, 0xcf, 0x34, 0xc7, 0x97, 0xed, 0xe8, 0x61, - 0x1e, 0x06, 0x14, 0x2e, 0x05, 0x5c, 0x89, 0x69, 0x8f, 0x62, 0x94, 0xec, - 0x96, 0xb9, 0xe6, 0x12, 0x64, 0x8c, 0xc0, 0x1b, 0x87, 0xc7, 0x87, 0x99, - 0x25, 0x7c, 0x19, 0x42, 0x27, 0x86, 0x99, 0xb0, 0xa9, 0x57, 0xf4, 0x84, - 0x33, 0x68, 0xf4, 0x14, 0x26, 0xaa, 0x2c, 0xde, 0x65, 0x9a, 0x40, 0x72, - 0x0b, 0x93, 0xda, 0xde, 0xd4, 0x11, 0xa1, 0x45, 0xe4, 0x31, 0x9e, 0x22, - 0x53, 0xb3, 0x95, 0x46, 0x16, 0x04, 0x9c, 0xcb, 0xdb, 0x99, 0xd0, 0x05, - 0x97, 0x90, 0xff, 0xdc, 0x09, 0xda, 0xd3, 0xc7, 0x13, 0x25, 0x96, 0x55, - 0xde, 0xf9, 0x78, 0x18, 0x6f, 0x4a, 0x1a, 0xd1, 0x12, 0x5f, 0xf4, 0x62, - 0xc8, 0x56, 0x61, 0x86, 0x8a, 0xd9, 0xe3, 0x05, 0x32, 0xc0, 0xf7, 0x12, - 0xc8, 0xd2, 0xea, 0x32, 0xcf, 0x7c, 0x54, 0x9b, 0x80, 0xc3, 0x0f, 0xf2, - 0x90, 0xe1, 0x63, 0x83, 0x7d, 0x8c, 0xbe, 0x6c, 0xec, 0x31, 0xbf, 0x8d, - 0xf7, 0x23, 0x82, 0x22, 0xd8, 0x19, 0xbe, 0x6d, 0x50, 0xc8, 0x83, 0xa0, - 0xa0, 0xbd, 0x45, 0xc1, 0xbf, 0x0f, 0x53, 0x9a, 0x18, 0xcf, 0xd1, 0xd1, - 0xe4, 0x7b, 0x2f, 0x40, 0xcb, 0x59, 0xfb, 0x70, 0x34, 0x45, 0xad, 0x3c, - 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, - 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, - 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x41, 0x42, 0xec, 0x81, - 0x49, 0x68, 0x9a, 0x85, 0xf9, 0xda, 0x21, 0x13, 0xfe, 0x18, 0x41, 0x4a, - 0x22, 0xb7, 0x81, 0x85, 0x09, 0x76, 0xdd, 0x95, 0xe0, 0xf2, 0x50, 0x0c, - 0x16, 0x28, 0x59, 0x54, 0x77, 0xff, 0x0c, 0xdd, 0x07, 0xe8, 0xda, 0x58, - 0xfe, 0x86, 0xc0, 0xf5, 0xf7, 0xf7, 0x7e, 0x03, 0xf3, 0x52, 0x4a, 0x8e, - 0x3f, 0x0e, 0xf7, 0x54, 0x49, 0x94, 0x37, 0xc7, 0xad, 0x2c, 0xfd, 0x1c, - 0x61, 0x79, 0x0c, 0x64, 0x58, 0xb9, 0xc9, 0x6e, 0xb2, 0x60, 0xb3, 0xe8, - 0xaa, 0xbc, 0xe4, 0xef, 0xbe, 0xfc, 0x48, 0x7a, 0x24, 0xde, 0x62, 0xe7, - 0x3c, 0x09, 0x52, 0x99, 0x96, 0x95, 0xc7, 0x6b, 0x9a, 0xc8, 0xa3, 0x97, - 0xa6, 0xc2, 0x76, 0x46, 0x52, 0x0a, 0x3d, 0x6f, 0xf9, 0x75, 0x26, 0x2a, - 0x51, 0x54, 0xe4, 0xe0, 0x97, 0xc3, 0x83, 0x99, 0xae, 0x30, 0x92, 0x79, - 0xcc, 0xee, 0x3a, 0x6f, 0x16, 0x43, 0xe5, 0x72, 0x54, 0xf1, 0x9f, 0x1c, - 0x38, 0x72, 0x3e, 0x73, 0xed, 0xd0, 0x40, 0x97, 0x52, 0x02, 0x01, 0xcd, - 0x0b, 0xf5, 0x8d, 0x44, 0xef, 0x5f, 0x1a, 0x59, 0x23, 0x6f, 0x84, 0x1a, - 0x97, 0x76, 0x56, 0xac, 0xda, 0xf7, 0xad, 0x58, 0xf9, 0x3e, 0x95, 0x76, - 0x77, 0x90, 0x25, 0x4e, 0x92, 0xe9, 0x30, 0x91, 0x01, 0xcb, 0x70, 0xb5, - 0x37, 0x90, 0xef, 0xbb, 0x2c, 0xc4, 0x68, 0x3c, 0xe1, 0xaf, 0x7e, 0x1d, - 0xa1, 0x57, 0xe3, 0x44, 0xe7, 0x6b, 0xc4, 0x07, 0xf1, 0x9a, 0x1e, 0x26, - 0x4f, 0x0c, 0xf3, 0x4a, 0x04, 0x54, 0xf7, 0x3e, 0x78, 0x88, 0x0b, 0xa5, - 0x75, 0x76, 0x5a, 0x63, 0x15, 0x0a, 0xdc, 0xa6, 0xf9, 0xc8, 0x05, 0x52, - 0x3c, 0xc8, 0x5b, 0xbb, 0x2f, 0x76, 0x21, 0xeb, 0x44, 0x89, 0x12, 0x33, - 0x57, 0xca, 0x23, 0x43, 0x3e, 0x45, 0xbe, 0xd1, 0xcd, 0x3c, 0x50, 0x18, - 0xc7, 0x7b, 0xbb, 0xd2, 0x3e, 0xd7, 0xde, 0xe0, 0xfa, 0xf8, 0xa0, 0xd3, - 0xa3, 0x7b, 0xe9, 0x27, 0x1f, 0xb5, 0xeb, 0x61, 0x43, 0x51, 0xc3, 0x34, - 0x4f, 0x4e, 0x4a, 0xe4, 0x47, 0x36, 0xbd, 0x20, 0xe9, 0xca, 0x6e, 0x31, - 0x0a, 0x62, 0xae, 0x6e, 0xd5, 0xb7, 0xb5, 0x73, 0xa4, 0x12, 0x33, 0x09, - 0x39, 0x20, 0x67, 0x76, 0xa4, 0x59, 0x97, 0x17, 0xd6, 0x2c, 0x0c, 0xce, - 0x9e, 0xd1, 0x60, 0x73, 0xbb, 0xae, 0x3f, 0x48, 0xc3, 0xae, 0x70, 0xcb, - 0x8c, 0x0c, 0xa3, 0x25, 0x50, 0xf4, 0x61, 0x10, 0x18, 0x7f, 0xac, 0x9d, - 0x48, 0x88, 0x2b, 0x22, 0x1b, 0x20, 0x92, 0xb1, 0x04, 0x34, 0x4f, 0x6b, - 0xd0, 0x6a, 0xb8, 0x12, 0xed, 0x57, 0x18, 0xd6, 0xfa, 0x96, 0xdb, 0xd2, - 0xd2, 0xa9, 0x3d, 0x31, 0x43, 0x6e, 0x7d, 0xe9, 0x48, 0x6e, 0xd1, 0x73, - 0xbf, 0xee, 0x16, 0xfc, 0xfe, 0x7f, 0xdb, 0x63, 0xef, 0xe8, 0x2e, 0x63, - 0xc5, 0xbf, 0xb0, 0x97, 0x7e, 0x2c, 0xc9, 0x98, 0x95, 0x26, 0x2e, 0x52, - 0xb1, 0x27, 0x8b, 0x7a, 0x70, 0x95, 0x1f, 0xe1, 0x8b, 0x34, 0xde, 0xc6, - 0x43, 0x4d, 0x39, 0x0e, 0xf2, 0x49, 0x09, 0x93, 0x5c, 0x17, 0x51, 0xcf, - 0x7c, 0x5c, 0x17, 0x15, 0x67, 0xf7, 0xe5, 0xb6, 0xfc, 0xd6, 0xe5, 0xaa, - 0xe0, 0xd4, 0xa8, 0xde, 0x1a, 0x2b, 0x3b, 0xa5, 0x70, 0x8f, 0xad, 0x31, - 0x13, 0x8f, 0x1b, 0x21, 0x8b, 0x6d, 0x34, 0x96, 0xdf, 0x6c, 0xe5, 0x12, - 0x85, 0x2c, 0x62, 0x32, 0x93, 0xd8, 0x3a, 0xec, 0xef, 0x2e, 0x47, 0xb6, - 0xc5, 0x82, 0xd0, 0x93, 0x9b, 0x03, 0xb5, 0x34, 0x98, 0x77, 0xf0, 0xe8, - 0xd4, 0xb9, 0x8b, 0x38, 0xdf, 0xfa, 0x5f, 0xc9, 0xc5, 0xcd, 0x94, 0x83, - 0x72, 0x22, 0xe5, 0x2c, 0x69, 0x57, 0x09, 0x78, 0x08, 0xf5, 0xf8, 0x14, - 0xf2, 0x69, 0x3b, 0x62, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, - 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, - 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, - 0x5b, 0xd5, 0xc1, 0x31, 0xc5, 0xce, 0x5b, 0x15, 0x4c, 0x63, 0x6e, 0x80, - 0xaf, 0x00, 0x85, 0x77, 0x0a, 0xfb, 0x1e, 0xb4, 0xd1, 0xa3, 0x7e, 0x70, - 0x65, 0xfa, 0x49, 0x50, 0xd3, 0xe6, 0x28, 0x6a, 0xd3, 0x8a, 0x1e, 0x42, - 0xf8, 0xda, 0x0b, 0xed, 0x17, 0xf6, 0xf9, 0xd9, 0xb2, 0x11, 0x88, 0xa8, - 0xc0, 0xef, 0x34, 0x5d, 0x5b, 0x87, 0xc2, 0x87, 0x55, 0xb6, 0xd9, 0xc1, - 0xf1, 0xe3, 0xcb, 0x70, 0x23, 0x6b, 0xc6, 0xbe, 0x4c, 0xab, 0x26, 0x96, - 0x80, 0x11, 0x72, 0x4b, 0xd2, 0x3b, 0x6a, 0x74, 0x39, 0x0f, 0xcd, 0x7d, - 0x68, 0x03, 0xab, 0x1f, 0x70, 0x01, 0xdd, 0x6b, 0x7f, 0x46, 0xc3, 0x68, - 0x71, 0x03, 0xb7, 0x43, 0xb0, 0x3d, 0xcf, 0x40, 0x62, 0x42, 0x28, 0xfa, - 0x22, 0xfc, 0xe2, 0x4f, 0x74, 0x60, 0x85, 0x57, 0x64, 0x92, 0x1d, 0x98, - 0x51, 0x5e, 0x3e, 0x62, 0x95, 0xbe, 0x7c, 0x4d, 0x59, 0x3c, 0x45, 0x03, - 0x1e, 0xde, 0xfe, 0x95, 0x79, 0x29, 0x49, 0xe6, 0x6d, 0x75, 0x11, 0x27, - 0x42, 0xb4, 0xf3, 0x7a, 0xf8, 0x19, 0x9e, 0xb1, 0x01, 0x20, 0x3b, 0x7a, - 0x57, 0xb5, 0xaa, 0x5e, 0x8d, 0xec, 0x74, 0x4a, 0x0b, 0xcb, 0x88, 0x92, - 0xfd, 0x41, 0x04, 0xef, 0xe7, 0x18, 0x6e, 0xe8, 0xe5, 0xec, 0x30, 0x3a, - 0x66, 0x8c, 0xa7, 0x65, 0x87, 0x3e, 0x80, 0xc4, 0xe8, 0xd0, 0x30, 0x55, - 0x06, 0x5f, 0x0f, 0x87, 0x68, 0x8b, 0xa6, 0x84, 0x2e, 0x9d, 0xd1, 0xbf, - 0x59, 0x55, 0x70, 0xe8, 0x4b, 0xce, 0xa8, 0x8a, 0x3e, 0xf5, 0x5c, 0x0e, - 0x33, 0x81, 0xdf, 0xad, 0xe1, 0xc2, 0xf1, 0x6d, 0x35, 0xa8, 0x53, 0x66, - 0x0f, 0x18, 0x68, 0xfa, 0x71, 0x14, 0xdf, 0x5e, 0xcf, 0x67, 0x5a, 0x36, - 0x43, 0xee, 0xe0, 0x42, 0x53, 0x32, 0xb4, 0xa0, 0xbd, 0x26, 0xbb, 0xf7, - 0x25, 0xde, 0x87, 0x5d, 0x09, 0x7d, 0xd3, 0xcb, 0x21, 0x91, 0xf4, 0xdd, - 0x5d, 0x69, 0x5b, 0x6b, 0x0c, 0x29, 0xf9, 0x6d, 0x9c, 0x97, 0x46, 0x16, - 0xc7, 0x88, 0x89, 0x49, 0xd1, 0x02, 0x09, 0xc3, 0x38, 0x60, 0xe7, 0x16, - 0xf0, 0x57, 0x1b, 0x11, 0xd9, 0x5b, 0x05, 0x87, 0xc2, 0x9f, 0x6f, 0xd2, - 0x48, 0xb6, 0x33, 0xec, 0xec, 0xd0, 0x7a, 0x36, 0x05, 0x3a, 0x38, 0xae, - 0x44, 0x9a, 0x4e, 0x88, 0xf2, 0x9f, 0xc8, 0x24, 0x02, 0x5e, 0x9c, 0xa6, - 0x20, 0xdd, 0x00, 0x79, 0x43, 0xac, 0xc4, 0x82, 0xd2, 0xb7, 0xb6, 0xfd, - 0xba, 0xc7, 0xf1, 0x7f, 0xae, 0xf0, 0xf9, 0x5e, 0x75, 0xfa, 0x31, 0xa2, - 0x09, 0xd0, 0xa4, 0x4b, 0xf8, 0x60, 0x32, 0x0e, 0x57, 0xf9, 0x6c, 0x8b, - 0xf7, 0xb2, 0xe8, 0xd6, 0xf1, 0x01, 0xe9, 0xad, 0xe0, 0x4c, 0x1a, 0x4a, - 0xb9, 0xfc, 0x1a, 0xfd, 0xd1, 0x59, 0xc7, 0x5b, 0xc0, 0x39, 0xf7, 0x05, - 0x58, 0xa7, 0xd8, 0xe1, 0x00, 0x5a, 0x5d, 0x21, 0xdd, 0xd0, 0x85, 0xfb, - 0x51, 0xf2, 0xf6, 0x84, 0x5b, 0xed, 0x9d, 0xc4, 0xe8, 0x47, 0xdf, 0x1f, - 0x95, 0xb1, 0xcb, 0x58, 0x71, 0x36, 0xb1, 0x1d, 0xac, 0x76, 0x94, 0x93, - 0xea, 0x70, 0x36, 0x27, 0x75, 0xec, 0x76, 0x48, 0x8f, 0x41, 0x2f, 0xab, - 0x22, 0xea, 0x9e, 0x06, 0x45, 0x86, 0x4a, 0x90, 0xd4, 0x36, 0x74, 0xab, - 0x45, 0x20, 0x85, 0x05, 0x23, 0x1f, 0x84, 0x5f, 0x84, 0xab, 0x0f, 0xb2, - 0x39, 0x17, 0x45, 0x0f, 0x93, 0xc9, 0x67, 0xf2, 0x3e, 0xa3, 0xda, 0xad, - 0xb0, 0xd1, 0xe0, 0xb6, 0xe9, 0x76, 0x7f, 0x69, 0x89, 0x35, 0x5e, 0x4c, - 0xca, 0x49, 0xfc, 0x1f, 0x62, 0x72, 0xd6, 0xe1, 0xaf, 0x7d, 0x9e, 0x15, - 0xe0, 0x9d, 0xc9, 0xce, 0x35, 0xb9, 0x2b, 0x0b, 0x82, 0x59, 0x76, 0x34, - 0x2e, 0x03, 0xad, 0x28, 0xde, 0xa9, 0x94, 0x4d, 0xab, 0xaa, 0xaa, 0xaa, - 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, - 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, - 0xbd, 0x08, 0xc3, 0x19, 0x2e, 0x8e, 0xb9, 0x74, 0x12, 0xbb, 0xa7, 0xea, - 0xd6, 0x3d, 0xdb, 0x50, 0x11, 0x77, 0x4f, 0xc6, 0xbd, 0x3a, 0xa6, 0xaf, - 0x78, 0xde, 0xe0, 0x90, 0xbb, 0x49, 0xcf, 0xbb, 0x88, 0xf7, 0x12, 0x03, - 0x07, 0x0d, 0x46, 0x5f, 0xbc, 0x37, 0xc5, 0xc7, 0xd4, 0xa1, 0xf2, 0xea, - 0xc3, 0x70, 0x3b, 0xfa, 0xc4, 0x06, 0x8b, 0xcb, 0xd7, 0xdb, 0x42, 0x6e, - 0x4e, 0xa8, 0x54, 0x66, 0xc2, 0xf4, 0x32, 0x10, 0xb6, 0x8b, 0xe7, 0xcd, - 0xb5, 0xd6, 0xfe, 0x76, 0x89, 0x62, 0x2b, 0xe6, 0x04, 0x83, 0x50, 0x3b, - 0x96, 0x69, 0x01, 0x63, 0xcd, 0x94, 0xd2, 0x14, 0x79, 0xb3, 0x5e, 0x79, - 0xc1, 0x18, 0xe0, 0x4d, 0x89, 0x84, 0xb4, 0x94, 0xe9, 0x75, 0xac, 0x03, - 0xb6, 0xae, 0x3a, 0x30, 0x56, 0x2a, 0xd3, 0xa3, 0xdf, 0x48, 0x96, 0x4b, - 0x16, 0x37, 0x71, 0x31, 0xba, 0xb4, 0x5a, 0xb1, 0x80, 0x10, 0xf1, 0x53, - 0xba, 0x38, 0x78, 0x65, 0xfe, 0x96, 0xb1, 0xe0, 0xdc, 0x0d, 0xb3, 0x08, - 0xdc, 0x02, 0x30, 0x18, 0x1a, 0x7d, 0x5f, 0xbe, 0xab, 0x5d, 0x8a, 0xbc, - 0x75, 0x49, 0xcf, 0x67, 0xc1, 0x2f, 0x47, 0x58, 0x57, 0x47, 0x69, 0xda, - 0x1d, 0x64, 0xc2, 0x55, 0x62, 0x4b, 0xde, 0x8c, 0x9f, 0xac, 0x19, 0x66, - 0xe0, 0xec, 0xc3, 0x59, 0xad, 0x42, 0x4e, 0x26, 0x00, 0x3a, 0x68, 0x29, - 0x31, 0x0d, 0x1a, 0x21, 0xa7, 0xd0, 0xef, 0xb8, 0xe4, 0x33, 0x4d, 0x1a, - 0x01, 0x4e, 0xd9, 0xb0, 0x51, 0x40, 0x47, 0x03, 0x89, 0x2c, 0x85, 0x93, - 0x97, 0x53, 0xde, 0x3d, 0x65, 0x44, 0x1b, 0x63, 0x31, 0x7f, 0x7e, 0x23, - 0x55, 0x11, 0x9c, 0x1e, 0x1a, 0x02, 0x9d, 0xf1, 0x0c, 0x16, 0x58, 0x53, - 0x62, 0x9b, 0x29, 0x50, 0x23, 0xff, 0x52, 0x08, 0x18, 0x44, 0x50, 0x51, - 0xc2, 0x2a, 0xda, 0x83, 0xe9, 0x95, 0x02, 0x61, 0x17, 0xe7, 0x79, 0x48, - 0x7e, 0x72, 0xb6, 0x43, 0xfc, 0x8a, 0xe1, 0x7c, 0x42, 0x9c, 0xf0, 0x9c, - 0x40, 0x0a, 0x86, 0x74, 0xa4, 0x8b, 0x9b, 0x31, 0x97, 0xfe, 0x9a, 0x5c, - 0x84, 0xad, 0xfd, 0x72, 0x4a, 0xa8, 0x40, 0x93, 0xa8, 0x0a, 0xb2, 0x0e, - 0xc1, 0x4e, 0x58, 0x64, 0x5d, 0x1c, 0x0c, 0xe0, 0x4b, 0xf9, 0xc9, 0x1b, - 0x0b, 0x48, 0xa1, 0xb0, 0x8e, 0x80, 0xa5, 0x63, 0x68, 0x5b, 0x67, 0x71, - 0x90, 0xbc, 0xeb, 0x11, 0x2f, 0x2c, 0x2a, 0x68, 0x2e, 0x32, 0x05, 0xf6, - 0x0f, 0x0c, 0x00, 0x70, 0x16, 0x2e, 0x07, 0x5b, 0x08, 0xa8, 0xa7, 0x4a, - 0x71, 0x7a, 0xad, 0xaf, 0x5f, 0x6c, 0x93, 0x33, 0x3d, 0x0f, 0x37, 0x25, - 0x4a, 0xff, 0xe5, 0xe9, 0x9b, 0x09, 0x83, 0x99, 0x7f, 0x76, 0x5a, 0x53, - 0x86, 0x9a, 0x7b, 0x17, 0x9f, 0x81, 0xc5, 0xe9, 0xd1, 0xea, 0x8f, 0xba, - 0xa5, 0xfe, 0x6d, 0x3c, 0xd2, 0x92, 0x46, 0xd5, 0x41, 0xef, 0xfd, 0x6f, - 0xf9, 0xb5, 0xd1, 0xb3, 0x13, 0x91, 0x48, 0xc2, 0xed, 0x32, 0x6d, 0xb2, - 0xab, 0xab, 0xa4, 0x0a, 0x69, 0xb3, 0x3e, 0x8f, 0x86, 0x97, 0xc5, 0x08, - 0x2d, 0x67, 0x3b, 0x3c, 0x32, 0x4d, 0x89, 0xe6, 0x1a, 0x9e, 0xe6, 0x81, - 0x63, 0xab, 0xec, 0xfd, 0x8a, 0x39, 0x64, 0x74, 0xfb, 0xd8, 0xaf, 0x13, - 0x6c, 0xf9, 0x8e, 0x1f, 0xde, 0xe5, 0x86, 0x36, 0x7d, 0x5f, 0x19, 0x7c, - 0xe1, 0x5f, 0xa2, 0xe2, 0x4c, 0xfc, 0x32, 0x87, 0x11, 0xc5, 0x57, 0x45, - 0x75, 0x00, 0x8a, 0x58, 0xb2, 0xd3, 0x1e, 0xc1, 0x2d, 0x3d, 0xa1, 0x68, - 0x64, 0x74, 0x4d, 0x4f, 0x03, 0x43, 0x25, 0x3a, 0x15, 0xbe, 0x72, 0x1f, - 0x3b, 0x02, 0xaa, 0xa6, 0x0a, 0x08, 0xb8, 0xa7, 0xcf, 0x11, 0xe7, 0x9b, - 0xd9, 0xbc, 0x84, 0x9b, 0xa1, 0xf8, 0x30, 0x16, 0x62, 0x9d, 0xed, 0x50, - 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, - 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, - 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xd0, 0xcc, 0xf5, 0x63, - 0xf1, 0xfa, 0x6d, 0x43, 0x65, 0xad, 0x55, 0x19, 0x49, 0x4f, 0x5a, 0x2e, - 0xf5, 0xf3, 0x2c, 0x53, 0x9c, 0xd3, 0xe6, 0x1c, 0xf0, 0xdd, 0xa5, 0x97, - 0xa2, 0x99, 0xae, 0x37, 0x8f, 0xfa, 0x8c, 0xbc, 0xba, 0x7f, 0x5a, 0x8b, - 0x5e, 0xc5, 0xf4, 0x87, 0x62, 0xed, 0x20, 0xe7, 0x61, 0x60, 0x7d, 0x9c, - 0xf9, 0xe9, 0x88, 0xa0, 0xb3, 0x2f, 0xe5, 0xa5, 0x5e, 0x47, 0x75, 0x1c, - 0x07, 0xfd, 0x33, 0x73, 0x60, 0x53, 0x8c, 0xb9, 0xa9, 0x2a, 0xe1, 0x05, - 0xe6, 0x43, 0x02, 0xd5, 0xb5, 0xfc, 0xca, 0xf7, 0x66, 0xf4, 0x9c, 0x0a, - 0x87, 0x1f, 0xd6, 0x3c, 0x7b, 0x92, 0x7e, 0x05, 0x72, 0x12, 0xa4, 0xb2, - 0x81, 0x5f, 0x5d, 0xc5, 0xa8, 0x5e, 0xd7, 0x37, 0x10, 0x31, 0xdc, 0x19, - 0xb9, 0xe1, 0xfe, 0xb1, 0xcd, 0x5b, 0x94, 0xf7, 0xfa, 0x59, 0x35, 0x40, - 0x07, 0x78, 0x38, 0x47, 0x04, 0xac, 0x89, 0x17, 0x2e, 0x3b, 0xe8, 0x1d, - 0x34, 0x6c, 0x19, 0x63, 0x00, 0x3e, 0x04, 0x36, 0xf6, 0xe8, 0x90, 0x1c, - 0xfe, 0x57, 0xbd, 0xbb, 0x39, 0x35, 0xdf, 0x3d, 0xde, 0x6a, 0x75, 0x68, - 0x56, 0x6b, 0x93, 0x7b, 0xd4, 0x41, 0x64, 0xc0, 0x38, 0x01, 0xd8, 0x5a, - 0x25, 0xbe, 0xcb, 0xae, 0xa6, 0x6a, 0xf8, 0x45, 0x14, 0x9f, 0x23, 0x17, - 0x4a, 0x9e, 0x61, 0x14, 0xdf, 0x81, 0xec, 0x13, 0xa9, 0x76, 0xea, 0x2c, - 0x9d, 0xca, 0x06, 0x4e, 0x54, 0x85, 0xea, 0xc7, 0x0d, 0xbf, 0x4d, 0x69, - 0x6c, 0xbf, 0x53, 0xf4, 0x0f, 0xcf, 0x53, 0x70, 0xeb, 0xc5, 0xe4, 0xca, - 0xb9, 0xb3, 0x31, 0x26, 0x11, 0x60, 0x2a, 0x9b, 0xa5, 0x80, 0x5c, 0x60, - 0xd3, 0x87, 0x42, 0xa9, 0xbf, 0xdf, 0xe8, 0xa5, 0x4d, 0x34, 0x05, 0x3d, - 0xfa, 0x17, 0xcb, 0x86, 0xf5, 0x17, 0x04, 0xbf, 0xbf, 0xb7, 0x68, 0x27, - 0xca, 0x30, 0x23, 0x60, 0xfc, 0x50, 0x41, 0xe8, 0x31, 0x69, 0x9e, 0x2c, - 0xe9, 0x98, 0x63, 0x3c, 0xe4, 0xe5, 0xbf, 0xbd, 0xad, 0x01, 0x6c, 0x34, - 0x07, 0xe1, 0xbc, 0x98, 0x54, 0x2a, 0xc2, 0x34, 0x14, 0x26, 0x2b, 0xf2, - 0x43, 0x35, 0x65, 0xf1, 0x37, 0x12, 0x1f, 0xb4, 0x40, 0x79, 0x51, 0x10, - 0x77, 0x09, 0xbd, 0xa5, 0x0e, 0xa9, 0x8c, 0x52, 0x86, 0x6b, 0x60, 0xcb, - 0xef, 0xa9, 0xe3, 0x0d, 0x69, 0xe2, 0x11, 0xa5, 0x73, 0x42, 0x90, 0x6d, - 0x65, 0x9a, 0x8b, 0x82, 0xad, 0x34, 0x1a, 0x22, 0x07, 0x1b, 0x37, 0x34, - 0xee, 0xf2, 0x81, 0x79, 0x46, 0x7a, 0x84, 0xd0, 0xd8, 0xf1, 0xc5, 0x56, - 0x3a, 0xa9, 0x31, 0xcb, 0x9b, 0x69, 0x6a, 0x0d, 0x1f, 0xc8, 0x7f, 0x0c, - 0xe0, 0x54, 0x83, 0x1a, 0xc5, 0xcd, 0x8b, 0xbf, 0x62, 0xae, 0x44, 0xf1, - 0x28, 0xa1, 0x0c, 0x47, 0xb6, 0x0d, 0x68, 0x40, 0x35, 0x09, 0xe5, 0x28, - 0xff, 0xb7, 0x29, 0x13, 0x98, 0x23, 0x28, 0x8f, 0x90, 0x3f, 0xb5, 0x3d, - 0x60, 0x86, 0x62, 0x71, 0xe1, 0x50, 0x0a, 0x60, 0xbf, 0x14, 0x6e, 0x02, - 0x1c, 0xf7, 0xa4, 0x3b, 0x1f, 0xe9, 0xa3, 0x1b, 0xdf, 0x76, 0x82, 0x55, - 0xe5, 0x6a, 0x75, 0xc6, 0x15, 0x61, 0x8d, 0x11, 0xb7, 0x4a, 0xfe, 0x13, - 0x11, 0xd5, 0xf5, 0x93, 0xdc, 0x72, 0xff, 0x63, 0x59, 0x5d, 0xae, 0x26, - 0x6b, 0xa3, 0x90, 0x84, 0x24, 0xf2, 0x09, 0x4c, 0xcc, 0xf0, 0x5d, 0x20, - 0xd3, 0x17, 0x70, 0x24, 0x0e, 0x3e, 0x77, 0xb5, 0x68, 0x7a, 0x91, 0x3b, - 0xb0, 0xab, 0x72, 0xe0, 0x8c, 0x4d, 0x29, 0x0c, 0xa2, 0x0a, 0x84, 0x8d, - 0xe0, 0xfe, 0x24, 0xd7, 0x67, 0xc2, 0xdd, 0xad, 0x7e, 0xec, 0xa2, 0x51, - 0xa6, 0x1c, 0xd3, 0x7b, 0xb4, 0xfb, 0xed, 0x9f, 0xb8, 0x5a, 0x2d, 0xc8, - 0x4e, 0xbd, 0x0e, 0x3e, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, - 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, - 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, - 0x27, 0x54, 0xed, 0xd3, 0xe2, 0x1d, 0x71, 0xd2, 0x81, 0xa8, 0x10, 0xfe, - 0x6d, 0xdd, 0xfa, 0x1d, 0xe0, 0x4c, 0xa0, 0x6e, 0x79, 0xc1, 0x41, 0xfd, - 0xcb, 0x31, 0x40, 0xe9, 0xbd, 0x66, 0x63, 0x2e, 0xcf, 0x4c, 0xb5, 0x3f, - 0x37, 0x04, 0x9b, 0xf5, 0x8b, 0xb3, 0x6d, 0x06, 0x3b, 0x04, 0x40, 0x11, - 0x49, 0x1d, 0x7b, 0xed, 0xe1, 0xfc, 0x9c, 0xde, 0xde, 0x11, 0xfe, 0x78, - 0x05, 0xcf, 0xcf, 0x1d, 0x82, 0x13, 0x09, 0x5a, 0x07, 0x4a, 0xa5, 0xaa, - 0x9e, 0x51, 0x3f, 0xa1, 0x18, 0x71, 0x51, 0x8a, 0x5c, 0xca, 0xe2, 0x94, - 0xe4, 0xb3, 0xb6, 0xf2, 0x33, 0xed, 0x9e, 0xa0, 0xa6, 0x65, 0x7e, 0x65, - 0x9f, 0x7f, 0x82, 0x13, 0x02, 0xcd, 0x22, 0xbb, 0x10, 0x6d, 0x0d, 0x10, - 0x87, 0x3a, 0x36, 0x35, 0xc9, 0x2f, 0x82, 0x7d, 0x3b, 0x25, 0xae, 0x7c, - 0xd5, 0xb8, 0x1c, 0xa8, 0x16, 0x25, 0x91, 0x64, 0xda, 0x2c, 0x90, 0x9f, - 0x64, 0xbe, 0x51, 0x81, 0x19, 0x37, 0x40, 0x75, 0x02, 0x8a, 0xd6, 0x24, - 0x08, 0x3b, 0x53, 0x12, 0x9a, 0x6f, 0x8f, 0x3a, 0x22, 0x4e, 0x1d, 0xb1, - 0xa6, 0x37, 0x01, 0x50, 0xd5, 0x91, 0xc4, 0x86, 0xb5, 0x01, 0xcc, 0x27, - 0xf8, 0xb2, 0xcd, 0x38, 0x0e, 0x12, 0xa7, 0x8e, 0x9e, 0x00, 0xd4, 0xa3, - 0xc1, 0x4a, 0x3a, 0x6a, 0x40, 0x92, 0xb1, 0x80, 0x08, 0x8a, 0x18, 0x07, - 0x66, 0xef, 0xd5, 0x09, 0x0c, 0xfd, 0x08, 0xd2, 0x3b, 0x14, 0x58, 0x9e, - 0x57, 0x44, 0x78, 0x71, 0xae, 0x74, 0x3d, 0xa8, 0x75, 0x60, 0x14, 0x52, - 0x2e, 0xa8, 0x66, 0x63, 0xce, 0x0e, 0x4b, 0x1a, 0x9e, 0x78, 0x62, 0xb1, - 0x4e, 0x1c, 0x20, 0xe4, 0x56, 0xd7, 0x9b, 0x15, 0x62, 0x84, 0xfa, 0x1a, - 0x9a, 0xdc, 0x9a, 0x23, 0x45, 0x2b, 0x58, 0x06, 0x14, 0xec, 0x60, 0x07, - 0x43, 0xf5, 0x07, 0x3c, 0x45, 0x35, 0x9b, 0x68, 0x21, 0x9b, 0xe2, 0xad, - 0x20, 0x04, 0x8b, 0x7c, 0xd3, 0x71, 0x68, 0x37, 0x1b, 0xa0, 0x64, 0xc2, - 0x21, 0xd3, 0xa7, 0xfd, 0x77, 0xe4, 0x45, 0x2e, 0x72, 0x74, 0x15, 0x69, - 0xe6, 0xfe, 0x93, 0xe1, 0x77, 0x40, 0x48, 0x5f, 0xfa, 0x54, 0x40, 0x4d, - 0xcc, 0x40, 0xb4, 0xf3, 0x91, 0x28, 0x00, 0x47, 0xe9, 0x05, 0xa2, 0x3a, - 0xa6, 0x0b, 0xc4, 0xa7, 0x2c, 0x9c, 0xe3, 0x6e, 0xe7, 0x33, 0xb2, 0x68, - 0x7b, 0x82, 0xfc, 0x29, 0xe2, 0xc8, 0x17, 0x62, 0x27, 0x5a, 0xf2, 0x29, - 0xb3, 0x15, 0x84, 0x9a, 0xac, 0x8e, 0xa5, 0x1a, 0x49, 0xf6, 0x1f, 0xd4, - 0xb9, 0x4d, 0x37, 0x12, 0x05, 0xfe, 0xed, 0x07, 0xe7, 0x43, 0xa1, 0x8b, - 0x9e, 0x43, 0x45, 0xbd, 0x57, 0x66, 0xd0, 0x63, 0xdb, 0xaa, 0x1f, 0x13, - 0x5d, 0x01, 0x4d, 0xb8, 0x0a, 0x51, 0x95, 0x6c, 0xc8, 0x54, 0x16, 0x5d, - 0x54, 0x59, 0xfe, 0xf7, 0x67, 0xdc, 0x6c, 0xb8, 0x8d, 0x8e, 0x4b, 0x28, - 0x64, 0x30, 0x1d, 0x8f, 0x5c, 0x97, 0xf8, 0xea, 0x8a, 0xca, 0x3c, 0xb2, - 0xef, 0x3e, 0x08, 0x2d, 0xe2, 0xa7, 0x0b, 0x3c, 0xe8, 0x84, 0xec, 0x85, - 0xc4, 0x54, 0xaf, 0x41, 0x49, 0xc9, 0xe3, 0x18, 0x4d, 0xdd, 0x87, 0x81, - 0xce, 0x13, 0xf6, 0x97, 0x3d, 0xa2, 0x99, 0xff, 0x4d, 0xb3, 0x81, 0xbd, - 0x57, 0xf1, 0x02, 0x28, 0x76, 0x99, 0xae, 0xc9, 0x8c, 0x44, 0x09, 0xe1, - 0x6b, 0xa8, 0xe0, 0x65, 0x54, 0x72, 0xfe, 0x68, 0x0d, 0x22, 0x30, 0x58, - 0x9b, 0xf8, 0x80, 0x2c, 0x64, 0x17, 0xde, 0x50, 0x33, 0xab, 0x51, 0x67, - 0x58, 0xd1, 0x3e, 0xb8, 0x86, 0x52, 0xcb, 0x47, 0x2d, 0x82, 0x90, 0xa0, - 0x0e, 0xb0, 0xe0, 0xc5, 0xa7, 0x05, 0x07, 0x2c, 0x9f, 0x45, 0xdd, 0x48, - 0x92, 0xf5, 0x52, 0x58, 0x78, 0x81, 0x5b, 0x1b, 0xab, 0xaa, 0xaa, 0xaa, - 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, - 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, - 0xbd, 0x08, 0xc3, 0x19, 0x29, 0x9d, 0xe5, 0xd1, 0x6e, 0x81, 0xc0, 0x85, - 0x11, 0x01, 0x5e, 0x79, 0x62, 0x8c, 0x1c, 0xdc, 0x0e, 0x54, 0xb9, 0xee, - 0x66, 0x7a, 0xb4, 0xf2, 0xa3, 0xc7, 0xbf, 0x09, 0xd4, 0xb7, 0x21, 0x6a, - 0x7a, 0x47, 0x5e, 0x52, 0xc4, 0x53, 0x8f, 0x5b, 0x24, 0x86, 0xec, 0xfe, - 0x66, 0xb2, 0x9a, 0x01, 0x67, 0x4f, 0xc6, 0x96, 0xf1, 0xc9, 0x17, 0xf5, - 0xc8, 0xd7, 0x7b, 0xac, 0x9f, 0xa1, 0x10, 0x0e, 0x76, 0x8c, 0x73, 0x2f, - 0x70, 0xe7, 0x6b, 0x72, 0xce, 0xbc, 0x31, 0x4d, 0x6d, 0xc4, 0x42, 0x3f, - 0xc7, 0x90, 0x65, 0x1e, 0xac, 0x5c, 0x69, 0x7c, 0x65, 0x70, 0x19, 0x8b, - 0xff, 0xde, 0x6d, 0x36, 0x96, 0xa6, 0x66, 0xbc, 0x4d, 0x93, 0xdd, 0x77, - 0xd0, 0xeb, 0xec, 0xac, 0x44, 0xaa, 0xa6, 0xe9, 0xf3, 0xd5, 0xb4, 0xc9, - 0x8a, 0xef, 0xec, 0xe9, 0x25, 0xc5, 0xed, 0xaf, 0xfe, 0x72, 0xc6, 0x44, - 0x8c, 0x5e, 0xa1, 0x42, 0xbb, 0x6d, 0xa6, 0x4c, 0x49, 0xff, 0x3a, 0xd4, - 0x45, 0xe2, 0x77, 0x5d, 0xb4, 0x51, 0x43, 0x33, 0x60, 0x0e, 0xf3, 0xb3, - 0x62, 0x36, 0x78, 0x00, 0x13, 0x2a, 0x02, 0x14, 0xf1, 0x85, 0x5f, 0x92, - 0x76, 0xe0, 0xc1, 0x85, 0x4a, 0x06, 0x70, 0xf9, 0xd5, 0x55, 0x13, 0xb8, - 0x68, 0x35, 0xd0, 0x38, 0x43, 0x90, 0x0f, 0x69, 0xa4, 0xd1, 0x7a, 0x7c, - 0x8a, 0x14, 0xe8, 0x15, 0xcc, 0x90, 0x12, 0x88, 0x8d, 0xe5, 0xa9, 0x17, - 0xd0, 0x6a, 0xa2, 0x3c, 0x55, 0x77, 0x30, 0xab, 0xd8, 0xb9, 0xa8, 0xa0, - 0x17, 0xcf, 0x14, 0xbe, 0x5a, 0x2e, 0x3b, 0x7a, 0x3e, 0x1a, 0xfe, 0x35, - 0xfe, 0xcd, 0x4b, 0xfd, 0xf6, 0x26, 0xa3, 0x7d, 0xdf, 0x22, 0xb7, 0xad, - 0x34, 0x9f, 0xfa, 0x6f, 0xcc, 0xdf, 0x5e, 0xa6, 0xb8, 0xa9, 0xc4, 0x04, - 0x9c, 0x75, 0x9e, 0x7e, 0x10, 0xd1, 0x4a, 0x37, 0xca, 0x76, 0x2a, 0xcf, - 0x0a, 0xbd, 0x9d, 0xf4, 0xae, 0x35, 0x1b, 0xbf, 0xe7, 0xdc, 0x03, 0x26, - 0x76, 0x7e, 0x75, 0x5b, 0x31, 0x8d, 0x38, 0x57, 0x5c, 0x8d, 0x23, 0x79, - 0xb3, 0x97, 0x8b, 0x43, 0x58, 0xfd, 0x3f, 0x12, 0x1a, 0x70, 0xfa, 0x9f, - 0x81, 0x5f, 0x45, 0x05, 0x91, 0x49, 0xc6, 0x62, 0xae, 0x80, 0xb9, 0xc6, - 0x9f, 0x4e, 0x4b, 0x83, 0x3f, 0xae, 0x88, 0x54, 0x70, 0x93, 0xe3, 0x14, - 0xbb, 0x97, 0xff, 0x92, 0x29, 0x27, 0xda, 0xa0, 0x5b, 0x83, 0x9f, 0x9a, - 0x20, 0xaf, 0xa3, 0xfb, 0xa8, 0x22, 0xd3, 0x2b, 0x00, 0xeb, 0x97, 0x6b, - 0xd0, 0x80, 0x0d, 0x06, 0xa7, 0xb8, 0xee, 0x59, 0xf6, 0xdf, 0xa1, 0xfa, - 0xae, 0xb4, 0x70, 0x61, 0xfb, 0x50, 0xe0, 0xcc, 0x58, 0x77, 0x83, 0x85, - 0x46, 0x7d, 0xf1, 0x26, 0xcf, 0x1c, 0x58, 0x58, 0xf1, 0x21, 0x34, 0x19, - 0x29, 0x45, 0x9a, 0x55, 0x4b, 0x6d, 0x3d, 0x13, 0xae, 0xc4, 0x91, 0x3e, - 0xbb, 0x33, 0xb9, 0x8c, 0xc3, 0x5b, 0xba, 0x68, 0xf2, 0x4a, 0xbc, 0x6c, - 0x46, 0x3c, 0xc3, 0x48, 0x84, 0xb2, 0xd0, 0x19, 0xdd, 0xc5, 0x69, 0x57, - 0x79, 0x62, 0x01, 0x17, 0x4d, 0x2e, 0x25, 0x9c, 0x6f, 0xcd, 0xec, 0xe6, - 0xc2, 0x8d, 0x4e, 0xbe, 0x37, 0x8f, 0xc5, 0x8c, 0xef, 0xd8, 0xd7, 0x2c, - 0x1d, 0x26, 0x5c, 0x75, 0x74, 0x75, 0xee, 0x4b, 0x29, 0x33, 0x6d, 0x8a, - 0xeb, 0xa2, 0x32, 0x73, 0xb4, 0x93, 0xa1, 0xe8, 0x71, 0xd6, 0xec, 0x83, - 0x0f, 0xa3, 0x38, 0x72, 0xda, 0x70, 0x08, 0x27, 0x0b, 0x0a, 0xde, 0xc3, - 0x63, 0xa3, 0x9d, 0x01, 0x14, 0xe1, 0x0d, 0x40, 0xcd, 0xa0, 0xb2, 0x4f, - 0x3f, 0xa8, 0x96, 0xe2, 0xc3, 0x3b, 0x56, 0x12, 0x40, 0xa4, 0x03, 0x4f, - 0x2e, 0xa3, 0x6f, 0x71, 0x44, 0xac, 0xb9, 0x73, 0xcb, 0x66, 0xeb, 0x36, - 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, - 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, - 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xbe, 0x72, 0xb0, 0x63, - 0x4c, 0x6d, 0xea, 0xef, 0x63, 0xda, 0xaf, 0xdd, 0xa9, 0x19, 0xf9, 0x7d, - 0x55, 0x8a, 0xbb, 0x83, 0x69, 0xc8, 0x84, 0x15, 0x6c, 0xfa, 0x99, 0x78, - 0x49, 0xb2, 0x5a, 0x5e, 0x8b, 0xca, 0xc9, 0x52, 0x58, 0xe4, 0xd9, 0xf1, - 0x0e, 0x53, 0xe3, 0x22, 0x33, 0xa3, 0xa0, 0xcb, 0xe5, 0x7a, 0xa8, 0x82, - 0xc3, 0x24, 0xb5, 0x92, 0x60, 0x84, 0x82, 0x09, 0x20, 0x9f, 0xca, 0x28, - 0xa6, 0x20, 0x7e, 0x3e, 0x7a, 0x44, 0x35, 0x52, 0x96, 0x26, 0x13, 0xe3, - 0x80, 0x5b, 0x91, 0x8e, 0xa5, 0x67, 0x9c, 0x79, 0x07, 0x7d, 0x02, 0xd9, - 0xae, 0x15, 0x53, 0x0e, 0x63, 0x57, 0xb3, 0x24, 0x64, 0x61, 0x3a, 0x94, - 0x23, 0xc0, 0xb4, 0x8f, 0x06, 0x84, 0xcb, 0x73, 0x8b, 0x99, 0xf6, 0x35, - 0xbb, 0xe5, 0xad, 0x64, 0x37, 0x40, 0xb6, 0x11, 0x9c, 0x16, 0x66, 0x6b, - 0xc9, 0x10, 0x2e, 0x13, 0xde, 0xb5, 0x16, 0x71, 0xbe, 0xbb, 0x13, 0x88, - 0xed, 0xe7, 0x73, 0x86, 0x72, 0x04, 0x79, 0x01, 0xe1, 0x60, 0x3e, 0x84, - 0x7b, 0x2e, 0xed, 0x9b, 0x20, 0x0b, 0x9e, 0xc4, 0xa9, 0xe5, 0x86, 0x71, - 0xc3, 0x3a, 0xc1, 0x01, 0xff, 0x06, 0x12, 0x00, 0x2e, 0xa1, 0x07, 0xec, - 0x73, 0x0d, 0x76, 0x85, 0xde, 0x2f, 0xde, 0x77, 0x25, 0xb7, 0x14, 0x04, - 0x1d, 0x08, 0xca, 0xd4, 0xc6, 0x31, 0xe7, 0x00, 0x33, 0x61, 0x55, 0xfd, - 0x50, 0x41, 0x07, 0xac, 0x46, 0x10, 0xf2, 0x0b, 0x6a, 0x5b, 0x24, 0xf4, - 0x25, 0x99, 0xd8, 0x5f, 0xb0, 0x56, 0x2f, 0x92, 0x3f, 0xe7, 0xbb, 0x83, - 0x83, 0xfa, 0xa3, 0x6b, 0x4e, 0x6b, 0x4b, 0xbd, 0xc4, 0x61, 0x5e, 0xe2, - 0xce, 0xd2, 0x2e, 0x11, 0x94, 0x7d, 0x6e, 0x2a, 0x0b, 0x25, 0x50, 0x54, - 0x30, 0xc1, 0x34, 0x1b, 0x87, 0x73, 0x72, 0x11, 0x43, 0x7e, 0xb3, 0x03, - 0x75, 0x04, 0x72, 0x50, 0x30, 0x6e, 0xf2, 0xf2, 0xfe, 0x41, 0xe0, 0x6b, - 0x9d, 0xc0, 0x43, 0xc1, 0x40, 0x46, 0x2d, 0xb8, 0x9e, 0x0d, 0x7b, 0xae, - 0xb8, 0xc9, 0x16, 0xfc, 0x6e, 0xc2, 0x95, 0x6e, 0x1d, 0x9a, 0x91, 0x4f, - 0x0a, 0x8e, 0x01, 0xf0, 0xbd, 0xbb, 0xae, 0xc5, 0x66, 0xa4, 0x85, 0x0e, - 0xb6, 0x45, 0xcf, 0x37, 0x8d, 0x66, 0x8f, 0x33, 0x5d, 0xd8, 0x66, 0xdd, - 0x53, 0xf8, 0x25, 0x14, 0x94, 0xb8, 0x7c, 0x93, 0x3f, 0xbb, 0x0c, 0x67, - 0xd3, 0x99, 0x9a, 0xfc, 0xcc, 0xfc, 0x98, 0x80, 0x1e, 0xe3, 0xa3, 0xbe, - 0x01, 0xed, 0x3c, 0xc8, 0x8c, 0x49, 0x0d, 0xd4, 0xa8, 0x50, 0x32, 0x32, - 0xcf, 0x94, 0x4c, 0x3e, 0x91, 0x4a, 0x4e, 0x45, 0x2e, 0x4b, 0xb3, 0x5d, - 0x65, 0xa2, 0x7b, 0x74, 0x05, 0xea, 0x5e, 0xd0, 0xbd, 0x65, 0x94, 0xb4, - 0xe8, 0xd1, 0xd6, 0x3b, 0x90, 0x7d, 0x71, 0x15, 0xc4, 0x4b, 0x81, 0xcb, - 0x23, 0x13, 0x81, 0x3c, 0x13, 0x63, 0xc8, 0x6e, 0xd9, 0x73, 0xf5, 0x3c, - 0x3b, 0xe3, 0x49, 0xb7, 0x43, 0xd8, 0x13, 0xd5, 0x08, 0x22, 0xbc, 0x5e, - 0xe3, 0x98, 0xd6, 0x16, 0x5e, 0x74, 0x10, 0xae, 0xa9, 0xaf, 0x11, 0x1e, - 0x09, 0xc6, 0xa3, 0xa2, 0xbf, 0xba, 0x6c, 0x0c, 0xd4, 0x12, 0xad, 0xe7, - 0xc2, 0x82, 0xb9, 0x5f, 0x9b, 0x43, 0x6a, 0x68, 0x3b, 0xae, 0xe7, 0x5b, - 0xef, 0x2f, 0xf9, 0x17, 0x70, 0xb3, 0x47, 0x49, 0x9b, 0x26, 0xb7, 0x6d, - 0xc5, 0x85, 0x58, 0x13, 0xb5, 0xa5, 0x8b, 0xae, 0x90, 0x90, 0x05, 0xf0, - 0xc5, 0xf1, 0xac, 0x96, 0xfa, 0xb4, 0x1f, 0x10, 0xec, 0x34, 0x09, 0xae, - 0x8d, 0x5a, 0x3a, 0x77, 0x88, 0xa1, 0x4d, 0x3f, 0x77, 0x20, 0x30, 0x4b, - 0xaf, 0x7d, 0xfe, 0x91, 0x12, 0x61, 0x99, 0x6a, 0x6c, 0x7a, 0x26, 0x4d, - 0xb7, 0x56, 0x88, 0x72, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, - 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, - 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, - 0xe4, 0x48, 0x02, 0xb8, 0xff, 0xb0, 0x3f, 0x1c, 0x2b, 0xaa, 0x2f, 0xb4, - 0x5f, 0x11, 0x57, 0xc9, 0x39, 0x25, 0x79, 0x99, 0x22, 0xf2, 0x50, 0xe8, - 0xf1, 0xf0, 0x6e, 0xaf, 0x22, 0xf5, 0x11, 0x32, 0x31, 0x59, 0xf5, 0x05, - 0xf8, 0x8b, 0x37, 0x10, 0x4f, 0x59, 0xb4, 0xd1, 0x09, 0x4e, 0xc4, 0xfd, - 0x50, 0x0f, 0xe9, 0x5a, 0x81, 0x6d, 0x71, 0x4b, 0x9e, 0x86, 0x61, 0x74, - 0xdd, 0xd8, 0x36, 0x6b, 0xee, 0x58, 0xdf, 0xfb, 0xe6, 0xaf, 0x26, 0xd2, - 0x18, 0xf4, 0x87, 0x25, 0x08, 0x4e, 0x98, 0xdb, 0xce, 0x2a, 0xdd, 0x0c, - 0x13, 0x31, 0xf3, 0x1a, 0x18, 0x5f, 0x79, 0x64, 0x02, 0x22, 0x22, 0x22, - 0xe2, 0x6b, 0xfb, 0x59, 0x28, 0x20, 0x05, 0x7e, 0xd4, 0xfa, 0x56, 0x17, - 0xf6, 0xf1, 0xa9, 0xd9, 0x4a, 0x93, 0xa3, 0xb3, 0xab, 0x2e, 0xb3, 0x8c, - 0xf8, 0xeb, 0x3e, 0x73, 0x5b, 0x94, 0x09, 0x5e, 0x95, 0xe7, 0xba, 0xa6, - 0x93, 0x7f, 0xb6, 0x08, 0xdb, 0xac, 0x4a, 0x62, 0xa8, 0xaf, 0xb3, 0x91, - 0x04, 0x75, 0x3f, 0xac, 0xb0, 0xf9, 0x8d, 0x59, 0x71, 0x31, 0x0d, 0x4e, - 0x7e, 0x97, 0x0b, 0x31, 0x4a, 0x3f, 0xda, 0xd3, 0xa7, 0xc6, 0x4f, 0x80, - 0x5b, 0x4a, 0x5a, 0x43, 0x77, 0xa2, 0x4f, 0x1b, 0x04, 0x2d, 0xc1, 0x35, - 0x43, 0xe9, 0xb2, 0x64, 0xe9, 0x5b, 0x93, 0xe4, 0xa3, 0xe2, 0x9d, 0x19, - 0x60, 0x28, 0x17, 0x39, 0xa7, 0x5f, 0xbe, 0x53, 0xcb, 0x9e, 0x75, 0x7e, - 0x66, 0xd7, 0xa0, 0xb1, 0x80, 0x22, 0x7e, 0xf9, 0xa8, 0xbb, 0xb4, 0x0d, - 0x92, 0x20, 0xb5, 0x76, 0x30, 0xbb, 0x0d, 0x21, 0x7c, 0x0d, 0x18, 0x74, - 0x67, 0x30, 0xba, 0xcf, 0x5e, 0x73, 0xe1, 0x5a, 0xd8, 0x55, 0xa2, 0x45, - 0x29, 0x14, 0xfa, 0x72, 0xba, 0x26, 0x42, 0x23, 0xc5, 0x8c, 0xeb, 0x8a, - 0xbe, 0xa5, 0x42, 0x52, 0x3a, 0xa0, 0xf6, 0x87, 0x33, 0x7d, 0x12, 0x6d, - 0x33, 0x1e, 0x9e, 0x3d, 0x76, 0x4a, 0xc3, 0x6e, 0x95, 0xe4, 0x3f, 0x9c, - 0x01, 0x8d, 0x31, 0x4a, 0xe6, 0x3e, 0x7d, 0x50, 0x37, 0xe0, 0x9f, 0x43, - 0x4d, 0xfd, 0x55, 0x38, 0xfb, 0xdf, 0xaa, 0x9a, 0xbe, 0xc2, 0x0e, 0xfe, - 0x80, 0xff, 0xb9, 0x94, 0x4e, 0xe8, 0x46, 0x01, 0x17, 0xef, 0xb5, 0x8b, - 0x3c, 0x69, 0x1a, 0xf4, 0x81, 0x7c, 0x55, 0x57, 0x3d, 0x21, 0xde, 0x57, - 0xdb, 0x50, 0x9e, 0x88, 0xfc, 0xfd, 0x7c, 0xf6, 0x4f, 0x97, 0xc0, 0x83, - 0x09, 0x40, 0xbc, 0xf5, 0x3f, 0xfe, 0x71, 0x3c, 0xe3, 0x1b, 0x2e, 0xf5, - 0x4e, 0xb7, 0xda, 0x4e, 0xe0, 0x99, 0xb9, 0x30, 0x3f, 0x19, 0x61, 0x5b, - 0xb5, 0x47, 0x88, 0x81, 0x65, 0x14, 0xa2, 0xd5, 0x00, 0x09, 0x0c, 0xbb, - 0x3b, 0xcb, 0xf9, 0x94, 0x92, 0xa9, 0xee, 0x64, 0x6f, 0xa6, 0x7a, 0x01, - 0x25, 0x57, 0x6b, 0x6d, 0xd3, 0xae, 0x70, 0x42, 0x71, 0xaa, 0xd5, 0xe2, - 0x73, 0xcf, 0x6f, 0xfe, 0xa7, 0xa3, 0x4d, 0x90, 0x29, 0xf1, 0xf0, 0xed, - 0xb0, 0x32, 0x19, 0x5b, 0x73, 0xdb, 0x09, 0x26, 0x86, 0x6e, 0xe0, 0xbf, - 0x91, 0xad, 0x31, 0x01, 0xf1, 0x5e, 0x56, 0xab, 0xac, 0xbf, 0x67, 0x44, - 0x27, 0xf5, 0x06, 0x12, 0x03, 0x23, 0x50, 0x9c, 0x05, 0xf8, 0x31, 0x71, - 0xce, 0xc2, 0x7f, 0x01, 0x1c, 0x73, 0x4c, 0x94, 0x35, 0xdc, 0xe9, 0x78, - 0x30, 0x3f, 0xb9, 0xfa, 0xe7, 0x86, 0xab, 0xab, 0x2b, 0x85, 0xff, 0xe3, - 0xde, 0xc7, 0x69, 0x25, 0xe7, 0xf0, 0x2d, 0xf7, 0x50, 0xf6, 0x6c, 0x5c, - 0x39, 0x22, 0xaf, 0xa0, 0xa9, 0x53, 0x22, 0xad, 0x88, 0xac, 0xf1, 0xe1, - 0xdd, 0x1e, 0xf3, 0xbe, 0xe5, 0x40, 0x57, 0x71, 0xfd, 0xa1, 0x36, 0xca, - 0x0b, 0xfc, 0x53, 0xc5, 0xc3, 0x36, 0xba, 0x70, 0xab, 0xaa, 0xaa, 0xaa, - 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, - 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, - 0xbd, 0x08, 0xc3, 0x19, 0x42, 0x7c, 0xd5, 0x3d, 0xe8, 0x9c, 0x2c, 0x3c, - 0x2f, 0xa1, 0x9f, 0x84, 0x4d, 0xc7, 0x9d, 0x6d, 0x6c, 0x98, 0x40, 0xa2, - 0x1f, 0xf5, 0xc8, 0x06, 0xc9, 0x42, 0x3e, 0xd6, 0x59, 0x75, 0xaa, 0x49, - 0x23, 0x78, 0x55, 0x12, 0xfc, 0x61, 0xb8, 0x0d, 0x12, 0x8b, 0xec, 0x6e, - 0xa9, 0x10, 0x78, 0x4d, 0x80, 0x26, 0xb0, 0x5f, 0x9b, 0x97, 0xed, 0x3c, - 0xd1, 0x16, 0x74, 0xf7, 0x1f, 0x58, 0x8d, 0x0f, 0xe0, 0x61, 0x2b, 0x52, - 0xc7, 0x18, 0x8b, 0x6c, 0xe4, 0xa9, 0x81, 0x43, 0xa9, 0xe1, 0xa2, 0x82, - 0x5b, 0x42, 0xb0, 0xff, 0xad, 0x21, 0x34, 0xa4, 0x8a, 0xf2, 0xbd, 0xcd, - 0x49, 0x7f, 0x93, 0x5f, 0xea, 0xaa, 0x38, 0x6f, 0x32, 0x61, 0x68, 0xdd, - 0xbd, 0x48, 0x1c, 0x4f, 0x23, 0x7d, 0x8a, 0xed, 0x59, 0xa2, 0xb9, 0x19, - 0xe9, 0xca, 0x30, 0x12, 0x18, 0xaa, 0x69, 0x7c, 0x02, 0x30, 0x47, 0x29, - 0xaf, 0x08, 0x6a, 0x29, 0x68, 0x6c, 0x43, 0x35, 0x7b, 0xe9, 0x2d, 0xc6, - 0x7a, 0x9c, 0xbb, 0x46, 0x08, 0xb8, 0xaf, 0x3f, 0x00, 0xcc, 0x35, 0x15, - 0xd2, 0x4c, 0xe8, 0x78, 0x6b, 0xd9, 0x1a, 0x29, 0x65, 0xfd, 0xb7, 0x21, - 0x91, 0xba, 0x74, 0x0e, 0x19, 0xc1, 0xb3, 0x1e, 0xfc, 0x04, 0xfc, 0xa9, - 0x4d, 0x00, 0xf1, 0xa4, 0xfb, 0x00, 0xff, 0xe1, 0xe5, 0x5e, 0xa0, 0xf2, - 0x42, 0x8d, 0x58, 0x41, 0xc8, 0x7e, 0xac, 0xbf, 0xf7, 0xc1, 0x11, 0xce, - 0xb0, 0xe4, 0xc6, 0xa6, 0x6d, 0x9c, 0x85, 0xb3, 0x0e, 0xed, 0x16, 0x7d, - 0x23, 0xf7, 0x93, 0xaf, 0x6b, 0x82, 0xc9, 0x8c, 0x92, 0x68, 0x9a, 0x26, - 0x9f, 0x47, 0xe1, 0x5b, 0x0c, 0xf1, 0x44, 0x9e, 0x7c, 0x7b, 0xf0, 0x39, - 0xcd, 0x65, 0xc4, 0xbf, 0x7f, 0x6f, 0x2d, 0x15, 0xc5, 0xb1, 0x0f, 0xcb, - 0x71, 0x1c, 0xe6, 0xde, 0x11, 0xcc, 0x98, 0x31, 0xdd, 0x3a, 0x40, 0x03, - 0x0c, 0xf0, 0xc1, 0xfd, 0xd8, 0x5b, 0x97, 0xef, 0xe8, 0xff, 0xc5, 0x15, - 0xac, 0x03, 0xe4, 0x86, 0x0c, 0xc7, 0x5f, 0x80, 0xbd, 0xd0, 0xd6, 0xd9, - 0xa0, 0x97, 0x49, 0x5b, 0x05, 0x34, 0xeb, 0xf2, 0xb8, 0x44, 0xf8, 0x75, - 0xd4, 0x72, 0x8f, 0x42, 0x15, 0x10, 0x96, 0x12, 0x94, 0x46, 0x82, 0xab, - 0xad, 0xae, 0xaa, 0x77, 0x66, 0xd5, 0xed, 0x12, 0xe0, 0x55, 0x5c, 0x1b, - 0x4f, 0xed, 0x93, 0xca, 0xfa, 0xc1, 0x1e, 0xf6, 0xd1, 0xfb, 0xdf, 0xd3, - 0x21, 0x13, 0xe5, 0xec, 0x26, 0xa6, 0x91, 0xa1, 0x43, 0x11, 0xa5, 0xd4, - 0x6f, 0x49, 0x77, 0x0e, 0x81, 0xf7, 0xb3, 0x18, 0x36, 0x5e, 0xa0, 0x2c, - 0x4b, 0x1a, 0xb5, 0x71, 0xd5, 0x96, 0x4e, 0x6d, 0x87, 0xd4, 0x7d, 0xe6, - 0xb6, 0x9c, 0xce, 0x6c, 0xd0, 0xed, 0xec, 0x8b, 0xd1, 0xb8, 0xde, 0x87, - 0xf1, 0x48, 0x10, 0x23, 0x74, 0x36, 0x0a, 0x93, 0x5e, 0x9a, 0x0e, 0x2b, - 0xd3, 0x98, 0x8c, 0x27, 0x5d, 0x36, 0x48, 0xdb, 0x93, 0xf4, 0x79, 0x0b, - 0xaf, 0x93, 0xe1, 0xe1, 0x19, 0x78, 0x61, 0x05, 0xaf, 0x68, 0x4f, 0x09, - 0x57, 0x79, 0x23, 0x23, 0x8b, 0xbe, 0x59, 0x65, 0x0b, 0xc6, 0x17, 0x8e, - 0x2f, 0x2e, 0x60, 0x83, 0x69, 0xf8, 0xa5, 0x7a, 0xb4, 0xa0, 0x68, 0xb3, - 0x45, 0x8e, 0x84, 0x22, 0xd8, 0x97, 0xd5, 0x5b, 0x4f, 0xd0, 0xc6, 0x5a, - 0x5a, 0x25, 0xd3, 0xf7, 0xa7, 0xfc, 0x16, 0x0c, 0x9c, 0x0c, 0xdf, 0xda, - 0xb6, 0xcf, 0x90, 0xb8, 0x9e, 0x7b, 0x2e, 0xee, 0x1f, 0xfe, 0x2a, 0xec, - 0x83, 0x0f, 0xa1, 0x01, 0x37, 0xe4, 0x6b, 0x74, 0xdd, 0xad, 0xcf, 0xb0, - 0x8a, 0x30, 0xd6, 0xf6, 0xa5, 0xbb, 0x37, 0xaa, 0xd2, 0xf3, 0xba, 0x70, - 0x54, 0x4f, 0xbb, 0xca, 0xa1, 0xde, 0x31, 0xd1, 0xca, 0x2f, 0xb1, 0x3a, - 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, - 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, - 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xa4, 0xe1, 0x0f, 0x62, - 0x21, 0x54, 0xe8, 0x68, 0x13, 0xa8, 0x2f, 0x9c, 0x60, 0xe9, 0xc3, 0xf6, - 0x69, 0x2e, 0xa0, 0xb5, 0xf1, 0x5d, 0x38, 0x4c, 0x1c, 0xd0, 0xe9, 0xcb, - 0xc0, 0xb1, 0x7e, 0x1f, 0x98, 0x40, 0x5b, 0x1d, 0xd4, 0x9b, 0xf6, 0x4d, - 0xc1, 0xf5, 0x04, 0x5d, 0x59, 0xf8, 0x7f, 0xc0, 0x7a, 0xd8, 0x8e, 0xff, - 0x1c, 0xcb, 0x64, 0xae, 0xb3, 0x94, 0x80, 0x90, 0x59, 0x2c, 0x7b, 0x08, - 0x90, 0xc3, 0xee, 0xb5, 0xda, 0x9a, 0x0f, 0x9a, 0xb8, 0x39, 0x2d, 0xa0, - 0x06, 0x5b, 0x8c, 0x26, 0x23, 0x3b, 0xf9, 0x24, 0x4a, 0x1b, 0x7f, 0x5e, - 0x21, 0xb0, 0x63, 0xb9, 0x9e, 0xf4, 0xda, 0x56, 0xb9, 0xd7, 0x12, 0x99, - 0xd8, 0x9d, 0x7d, 0x4f, 0x91, 0x0b, 0xf6, 0x7a, 0x07, 0xf4, 0xce, 0xb4, - 0x50, 0x11, 0x03, 0xdf, 0x6c, 0xe1, 0x86, 0x3a, 0x95, 0x92, 0x68, 0x59, - 0xb3, 0x7e, 0x4f, 0x22, 0x48, 0x74, 0x2e, 0xa5, 0x86, 0xda, 0x32, 0x9b, - 0xfd, 0xb2, 0xb4, 0xd6, 0xc1, 0x6a, 0x7c, 0xe8, 0xa5, 0xdb, 0x9f, 0xa0, - 0x26, 0x37, 0x5c, 0xa4, 0xbf, 0x66, 0x37, 0x02, 0x5c, 0x09, 0xf7, 0x59, - 0xa9, 0x79, 0xdc, 0x92, 0x84, 0x59, 0xf3, 0x83, 0xd0, 0x8e, 0x06, 0xb4, - 0x69, 0xc0, 0xba, 0x25, 0x29, 0xb5, 0x23, 0x71, 0x92, 0x8c, 0xef, 0xff, - 0x53, 0x6d, 0x0b, 0x8c, 0x61, 0xac, 0x28, 0x2d, 0xe5, 0xaa, 0xea, 0x4f, - 0xdd, 0x5d, 0x17, 0x8b, 0xcb, 0x94, 0xf9, 0xa2, 0x01, 0x0e, 0x4b, 0xbb, - 0x59, 0x25, 0x22, 0x43, 0xc9, 0x36, 0x04, 0xc0, 0x0e, 0xd8, 0xf9, 0x65, - 0xf7, 0x2e, 0xe8, 0x1c, 0x51, 0x2c, 0xc9, 0xea, 0x6d, 0x74, 0xee, 0x89, - 0xe5, 0x84, 0x72, 0x3e, 0x1f, 0xa0, 0x62, 0x8d, 0x7c, 0xd1, 0xf4, 0xf0, - 0xb1, 0xc3, 0x41, 0x5d, 0x16, 0xe8, 0x49, 0x09, 0x99, 0xe6, 0xb3, 0x52, - 0x2a, 0x72, 0xda, 0x81, 0x38, 0xa6, 0x31, 0xbe, 0xee, 0x52, 0xd4, 0x12, - 0xe2, 0x00, 0xd3, 0x7c, 0x54, 0xec, 0x79, 0x9a, 0x32, 0x0f, 0xad, 0x33, - 0x4e, 0x0f, 0x77, 0x02, 0x8b, 0x30, 0x5a, 0x0a, 0x81, 0x2b, 0x00, 0x4a, - 0x39, 0xba, 0x55, 0xb3, 0xbc, 0x76, 0x7e, 0xc2, 0x34, 0xf9, 0x2b, 0x73, - 0xd8, 0x44, 0xb3, 0x9d, 0xd6, 0x59, 0x99, 0xc1, 0x28, 0xc1, 0xda, 0x46, - 0x12, 0x05, 0x9b, 0x1f, 0xc4, 0x6e, 0xba, 0x7a, 0xbd, 0xd6, 0x6d, 0x9a, - 0xcb, 0x71, 0xb9, 0x6e, 0xfe, 0x9c, 0x4b, 0x57, 0x06, 0xb7, 0xa2, 0xab, - 0x83, 0xe0, 0xc2, 0x56, 0x0b, 0xda, 0xb4, 0x58, 0xec, 0x80, 0x4f, 0x50, - 0xa7, 0x8e, 0x48, 0x91, 0x0a, 0xb7, 0x02, 0x8c, 0x18, 0x3d, 0xec, 0xc1, - 0xa1, 0x7b, 0x85, 0x8a, 0x41, 0x43, 0x01, 0x9d, 0x65, 0x71, 0x67, 0xea, - 0x0b, 0x55, 0x21, 0x1e, 0x90, 0x6c, 0xad, 0x39, 0x7e, 0x55, 0x79, 0x83, - 0x1d, 0x07, 0x5b, 0x9b, 0x40, 0xee, 0x16, 0x4a, 0x8b, 0xbd, 0xde, 0x40, - 0x5e, 0xc2, 0x5a, 0xe7, 0x38, 0x3d, 0x66, 0x8a, 0xa1, 0xa1, 0x34, 0xa5, - 0xf6, 0x2f, 0xcd, 0x03, 0xb0, 0x5e, 0x97, 0x5d, 0x58, 0xd1, 0x85, 0xcc, - 0xe4, 0x08, 0x3f, 0xc4, 0xec, 0x09, 0x01, 0x99, 0x2c, 0x9c, 0x96, 0x31, - 0x11, 0x5c, 0x2f, 0x3a, 0x3d, 0x41, 0x9c, 0x47, 0x25, 0xb8, 0xe3, 0x43, - 0xd8, 0xe3, 0xfe, 0x0d, 0x5e, 0x09, 0xef, 0xce, 0x39, 0xa0, 0xb3, 0x95, - 0x5b, 0xfd, 0x93, 0x7a, 0x88, 0x99, 0x70, 0xe9, 0xaf, 0xfb, 0x5e, 0xa5, - 0x68, 0x4b, 0x6e, 0x5b, 0xdf, 0x28, 0x2f, 0x26, 0x35, 0xc5, 0x3b, 0xe7, - 0x57, 0x8d, 0xf8, 0x8e, 0xad, 0x7a, 0x81, 0xf7, 0x2f, 0x56, 0x89, 0xbd, - 0x09, 0x33, 0x03, 0xbc, 0x00, 0x63, 0xd3, 0xdb, 0x6d, 0xb4, 0x8b, 0xad, - 0x13, 0xf7, 0xac, 0x41, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, - 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, - 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, - 0xa1, 0xf5, 0xb0, 0x0e, 0xd2, 0x52, 0x11, 0xb3, 0xf4, 0x81, 0xe0, 0x28, - 0x69, 0xb9, 0xdf, 0xad, 0x40, 0x3e, 0xe9, 0xb2, 0xbd, 0x5f, 0x82, 0x26, - 0x4e, 0xe5, 0xdb, 0x43, 0x20, 0x08, 0xd3, 0x0e, 0x40, 0x10, 0x1b, 0x82, - 0xab, 0x0b, 0x18, 0xa3, 0xd5, 0xd7, 0x00, 0x29, 0x46, 0x7d, 0x38, 0x33, - 0x83, 0x35, 0x2f, 0xb2, 0x02, 0x4e, 0x84, 0xf7, 0x07, 0x7b, 0x4f, 0x4b, - 0x0f, 0xef, 0x5f, 0x5e, 0x8b, 0x97, 0x36, 0xab, 0x82, 0x86, 0x4e, 0xf9, - 0x99, 0x5a, 0xc7, 0x93, 0xde, 0xe3, 0x5f, 0xb8, 0x38, 0x10, 0x1f, 0x9e, - 0xec, 0x8d, 0x8a, 0x81, 0xd2, 0x4a, 0xe4, 0xfe, 0x16, 0x9c, 0xc0, 0x09, - 0xfc, 0x9c, 0xf3, 0x93, 0xf2, 0x7c, 0x3c, 0x49, 0x65, 0x84, 0xe8, 0xb1, - 0xe7, 0xe8, 0x42, 0x8e, 0x36, 0xce, 0x51, 0xb6, 0xcf, 0x33, 0x7e, 0x41, - 0x60, 0xf3, 0x2e, 0x40, 0x94, 0x52, 0xc2, 0x53, 0xc9, 0x99, 0x32, 0x35, - 0xfc, 0xed, 0x11, 0x79, 0xbc, 0xdc, 0x68, 0x63, 0x58, 0xb8, 0xd9, 0x06, - 0x2a, 0x06, 0x9f, 0xd4, 0x1e, 0x7d, 0xbd, 0x59, 0xfe, 0x56, 0x07, 0x49, - 0x30, 0xc4, 0x42, 0x58, 0x7f, 0x46, 0x72, 0xb0, 0x00, 0x6e, 0xf7, 0xd8, - 0xa6, 0xb5, 0x59, 0x5a, 0x40, 0xfc, 0xe7, 0x86, 0xcf, 0x4c, 0xed, 0x36, - 0xf2, 0x37, 0x78, 0xab, 0x63, 0x92, 0x10, 0x84, 0x80, 0xe7, 0x75, 0x22, - 0x73, 0xa2, 0x9f, 0x31, 0x75, 0xb4, 0x6a, 0xfd, 0x0d, 0xb1, 0x09, 0x8b, - 0xa4, 0xc2, 0x74, 0xf1, 0xee, 0x48, 0x47, 0xac, 0x28, 0xe9, 0x62, 0x77, - 0x7e, 0x21, 0x31, 0x1d, 0x6b, 0xd4, 0x5e, 0x52, 0x7d, 0xfe, 0x90, 0x68, - 0xd8, 0x54, 0x90, 0xa3, 0x3f, 0x01, 0x96, 0x5c, 0x72, 0x93, 0x00, 0xf8, - 0xf6, 0xea, 0x08, 0xd2, 0xc1, 0x0f, 0xcd, 0xbe, 0xb5, 0x23, 0xd8, 0x7a, - 0xec, 0x41, 0xbf, 0x16, 0xb5, 0x50, 0xfd, 0x82, 0xf2, 0x21, 0x18, 0x9d, - 0x15, 0x90, 0x47, 0xf8, 0x8d, 0xa8, 0x77, 0x90, 0x9c, 0x19, 0xcc, 0xf6, - 0xdf, 0x77, 0x11, 0x27, 0xd0, 0x53, 0x1a, 0xd2, 0xef, 0x6b, 0xae, 0x0e, - 0x59, 0x30, 0x54, 0x4f, 0x47, 0xed, 0x62, 0x89, 0x9e, 0x8b, 0xfb, 0x97, - 0x94, 0x6b, 0xab, 0xb4, 0x47, 0xc8, 0xd5, 0xb6, 0xb1, 0xdd, 0x32, 0x13, - 0x7d, 0x12, 0xa3, 0xce, 0xb5, 0x74, 0x80, 0x3c, 0xff, 0x12, 0x02, 0x71, - 0x98, 0x4b, 0x15, 0x03, 0x0e, 0xa0, 0xa1, 0x83, 0xd9, 0x6d, 0x8c, 0x44, - 0xf9, 0x4a, 0xb5, 0xbc, 0x6e, 0x90, 0xe0, 0x76, 0xde, 0x5a, 0xc8, 0x77, - 0x77, 0x14, 0xf2, 0x6f, 0xc6, 0x81, 0xb4, 0xbc, 0xcf, 0x84, 0xd9, 0x62, - 0xec, 0x48, 0xa5, 0xaf, 0xbd, 0xb9, 0x43, 0x77, 0xb5, 0x97, 0x68, 0xe1, - 0x23, 0xfc, 0xbd, 0x8f, 0x8f, 0xd5, 0xc1, 0xf0, 0x3f, 0x15, 0xe4, 0x14, - 0x31, 0x01, 0xa1, 0x68, 0x9d, 0x41, 0xd5, 0x96, 0x2e, 0x4d, 0x09, 0xc3, - 0x24, 0x1d, 0x55, 0x7d, 0x11, 0x73, 0x4d, 0x06, 0x8d, 0x02, 0x30, 0xb2, - 0xbf, 0xe4, 0x8f, 0x18, 0xf7, 0x2a, 0x99, 0x2a, 0x0b, 0xf5, 0x33, 0x50, - 0x6a, 0xdc, 0x3a, 0x9a, 0x7a, 0x5a, 0xb0, 0x95, 0xc7, 0xa1, 0x61, 0x12, - 0xcb, 0x27, 0x27, 0xf0, 0x13, 0x7c, 0xd5, 0x0f, 0x29, 0x5b, 0xe6, 0x83, - 0x50, 0x4d, 0xb2, 0x10, 0x6a, 0xd5, 0x40, 0x8b, 0x43, 0x93, 0x13, 0x84, - 0xcd, 0x14, 0x6c, 0xb6, 0x45, 0x4b, 0x8d, 0xd3, 0x01, 0x3a, 0x01, 0x2f, - 0x2f, 0x87, 0x11, 0xc2, 0xdd, 0x6a, 0xbd, 0x51, 0xd3, 0xc8, 0x39, 0x62, - 0xbd, 0xd4, 0x29, 0x1d, 0x1b, 0xe8, 0x99, 0x7b, 0xfd, 0xc1, 0x2c, 0x75, - 0x43, 0xa6, 0x64, 0xba, 0x23, 0x9a, 0x88, 0x0b, 0xcb, 0xcb, 0xd8, 0xda, - 0xf8, 0x90, 0x98, 0x82, 0x29, 0x8d, 0x04, 0x03, 0xab, 0xaa, 0xaa, 0xaa, - 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, - 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, - 0xbd, 0x08, 0xc3, 0x19, 0xf7, 0x1e, 0x22, 0xd2, 0x5c, 0xc2, 0xbe, 0x43, - 0x03, 0x89, 0x6a, 0x37, 0x78, 0x17, 0x39, 0xb5, 0x6d, 0xae, 0x89, 0x61, - 0x4e, 0x4c, 0x28, 0xcb, 0x90, 0xc4, 0x54, 0xd8, 0xa4, 0x5e, 0x4f, 0x4c, - 0x7c, 0x93, 0x9b, 0xb1, 0x94, 0x3f, 0x4b, 0x77, 0x0b, 0x01, 0xfd, 0x7a, - 0xe6, 0xe8, 0x73, 0x26, 0x28, 0x57, 0x7f, 0x72, 0xb5, 0x72, 0xc8, 0x09, - 0x2a, 0x05, 0xcb, 0x4f, 0x55, 0xf9, 0x51, 0x06, 0xb1, 0x10, 0xf3, 0xa1, - 0xed, 0xe9, 0x36, 0xc5, 0x46, 0x43, 0x39, 0xa4, 0xf6, 0x1e, 0x10, 0x52, - 0x66, 0x26, 0x65, 0x0a, 0xee, 0xf6, 0x94, 0x2e, 0x6b, 0x33, 0x19, 0x45, - 0x01, 0xfc, 0xae, 0x47, 0x2a, 0xeb, 0x7e, 0xb9, 0xf9, 0xf5, 0x96, 0xf0, - 0xfc, 0x56, 0x66, 0xc4, 0x35, 0x15, 0x00, 0xb0, 0x10, 0x0c, 0x34, 0xba, - 0x47, 0xe7, 0xd6, 0x59, 0x15, 0xdd, 0x0b, 0x71, 0x88, 0x28, 0xbc, 0x10, - 0xb0, 0x0e, 0x16, 0x8c, 0x9f, 0x69, 0xd7, 0x16, 0xaa, 0xa8, 0xb0, 0xe8, - 0xa0, 0xfa, 0x59, 0xfc, 0x67, 0x4e, 0x4f, 0x61, 0x79, 0xb3, 0xf9, 0xc8, - 0x38, 0x19, 0x8f, 0xbf, 0x9e, 0x15, 0x24, 0x56, 0xe8, 0x56, 0x77, 0x1e, - 0x4b, 0x10, 0x72, 0x37, 0x8d, 0xa6, 0x70, 0xad, 0xcd, 0xb5, 0xf1, 0xcd, - 0xf3, 0xbb, 0x7c, 0x6d, 0x28, 0x50, 0x62, 0x8a, 0xcf, 0xb6, 0xf7, 0x3b, - 0x40, 0x13, 0xe6, 0x15, 0x4b, 0x39, 0xb3, 0x0c, 0x19, 0x5d, 0x36, 0x45, - 0x9c, 0xef, 0xe6, 0xdd, 0xf8, 0x06, 0xc7, 0x9a, 0x32, 0xea, 0xfb, 0x0e, - 0x6b, 0x98, 0x0a, 0x0b, 0x3b, 0xbe, 0xd9, 0xab, 0xf5, 0x2d, 0x65, 0x0e, - 0x98, 0x49, 0x6f, 0xcb, 0xbd, 0xf8, 0x6d, 0x8e, 0xb8, 0x39, 0xd5, 0xaa, - 0x8d, 0x0c, 0xb8, 0x33, 0x08, 0x62, 0x3f, 0x1d, 0xc4, 0x6d, 0xcf, 0xdf, - 0xf4, 0x63, 0xe2, 0x61, 0xb9, 0x36, 0x57, 0x2f, 0x82, 0x72, 0x51, 0x77, - 0xd6, 0xec, 0xd7, 0x94, 0x65, 0x5c, 0x08, 0x05, 0x78, 0xb3, 0xc2, 0xe5, - 0xa3, 0x85, 0x14, 0xd8, 0xf4, 0xa2, 0x1b, 0x35, 0xf9, 0x87, 0xdb, 0xbb, - 0xab, 0x8b, 0x3c, 0x33, 0x76, 0xe7, 0x74, 0x2e, 0x7a, 0xc4, 0xe5, 0x5f, - 0x08, 0xc3, 0x2d, 0x9b, 0x2c, 0x19, 0x10, 0x09, 0xef, 0x0b, 0x22, 0xe7, - 0x89, 0x70, 0xc3, 0xdd, 0x3e, 0xc0, 0xbf, 0x7e, 0x94, 0xf9, 0xce, 0x1a, - 0x50, 0x0c, 0x9b, 0x10, 0x6e, 0x0c, 0x9c, 0x3c, 0x3d, 0xc6, 0x4d, 0x7e, - 0xf9, 0xff, 0x78, 0x36, 0xe4, 0x32, 0xc3, 0x90, 0x68, 0x6c, 0x5c, 0x6f, - 0x15, 0x9f, 0x1b, 0x34, 0x28, 0x9a, 0x60, 0x46, 0x27, 0x7c, 0x6e, 0xdf, - 0x7e, 0xb1, 0xcd, 0x75, 0x04, 0x61, 0x05, 0x38, 0x4a, 0x51, 0xf2, 0xbf, - 0xbf, 0xc4, 0x23, 0x39, 0xef, 0x61, 0x34, 0x8f, 0xf8, 0xfb, 0xfa, 0x9b, - 0x7b, 0x57, 0xd4, 0x00, 0x81, 0xcb, 0x37, 0x95, 0x43, 0xd5, 0x32, 0xdf, - 0x1c, 0xe8, 0xf6, 0xa6, 0xbf, 0x3d, 0x43, 0x77, 0x6b, 0x5a, 0x9c, 0x1b, - 0xc3, 0xde, 0x55, 0x93, 0x4c, 0x50, 0x48, 0xc7, 0xf1, 0x6f, 0x3b, 0x0b, - 0x31, 0x9e, 0xde, 0x29, 0x69, 0x08, 0xb4, 0x1a, 0x28, 0x34, 0xf3, 0x78, - 0x4f, 0x47, 0x7e, 0xe8, 0xdb, 0x61, 0x02, 0xec, 0x1f, 0x73, 0xd0, 0x8f, - 0xc7, 0x60, 0xc3, 0xc5, 0x5a, 0xc8, 0x1d, 0x5c, 0x4a, 0x89, 0xda, 0xd3, - 0xb0, 0xfd, 0x53, 0x2f, 0x86, 0x83, 0xc5, 0x4a, 0x27, 0xa2, 0xea, 0x98, - 0xe5, 0x24, 0x22, 0x35, 0x4b, 0x93, 0x39, 0x2b, 0x0e, 0x4e, 0x54, 0x31, - 0x77, 0x56, 0x77, 0x6e, 0xe6, 0xf8, 0xe2, 0x40, 0xac, 0xd7, 0x7d, 0x3d, - 0x6b, 0x6a, 0xd4, 0x18, 0x43, 0x82, 0xbd, 0xd5, 0x94, 0xd7, 0x97, 0x86, - 0x67, 0x4f, 0xd1, 0xe2, 0x4c, 0xbd, 0xbe, 0x91, 0x5f, 0xa7, 0x11, 0x18, - 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, - 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, - 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xb2, 0x38, 0xd3, 0x28, - 0xe2, 0xd4, 0xd0, 0x96, 0x8a, 0xa7, 0x2f, 0xa5, 0xe5, 0x72, 0x34, 0x1b, - 0x39, 0x61, 0x57, 0x83, 0xf3, 0x1d, 0x9f, 0x3e, 0x31, 0x8a, 0xa3, 0x10, - 0xc8, 0x8d, 0x25, 0x37, 0x26, 0xec, 0xdb, 0x6b, 0x9d, 0xf6, 0x79, 0xf5, - 0xf0, 0x34, 0xa4, 0xba, 0xf3, 0xcd, 0xc2, 0x6d, 0x86, 0xe5, 0x44, 0x1d, - 0xba, 0xca, 0xce, 0xa5, 0xa3, 0xf0, 0x16, 0x52, 0x49, 0x96, 0x7a, 0x56, - 0x95, 0xb0, 0x70, 0xf8, 0xc1, 0x7f, 0xce, 0xbc, 0x84, 0x2e, 0xc3, 0x96, - 0x1c, 0x56, 0xa1, 0xf3, 0x73, 0xd6, 0xeb, 0x86, 0xb8, 0x7a, 0xb7, 0xbf, - 0xa5, 0x11, 0x52, 0x21, 0xc8, 0x5d, 0xc1, 0x5d, 0xc9, 0x50, 0xdd, 0xa1, - 0xb7, 0xa8, 0x3a, 0xf2, 0x9f, 0x21, 0x38, 0x14, 0xc7, 0xcb, 0x2b, 0xd7, - 0x51, 0xb8, 0x4d, 0xba, 0xf1, 0x7b, 0x6f, 0xab, 0xf8, 0x8d, 0x48, 0x53, - 0x7a, 0xad, 0xe1, 0x3e, 0x24, 0xca, 0x30, 0xb4, 0xea, 0xef, 0xa5, 0x2b, - 0x9d, 0xfd, 0x8e, 0x27, 0x62, 0xaf, 0x74, 0xf0, 0x9e, 0x30, 0x1e, 0xd4, - 0x2d, 0x85, 0x06, 0xd5, 0xc2, 0xf7, 0x56, 0x77, 0xea, 0x8c, 0xc4, 0x38, - 0xff, 0x5a, 0xc9, 0x6d, 0x56, 0x02, 0xaf, 0xc9, 0xe2, 0xc9, 0x6e, 0xc4, - 0x01, 0x67, 0xd6, 0x4a, 0x74, 0x64, 0xc4, 0x74, 0x4f, 0x37, 0x09, 0x1d, - 0xe9, 0x30, 0xb8, 0xd7, 0xf3, 0x37, 0xc7, 0x33, 0x02, 0x69, 0x1d, 0xd6, - 0x24, 0x0e, 0xe1, 0x8a, 0x95, 0xc2, 0xc8, 0x73, 0xa2, 0xd2, 0x19, 0xc9, - 0x4d, 0x5c, 0xf4, 0xe7, 0x52, 0x08, 0xaf, 0xd7, 0xab, 0x52, 0x28, 0x5b, - 0x01, 0xec, 0x80, 0x1f, 0x22, 0x1f, 0x3d, 0x78, 0x93, 0xb0, 0x6a, 0x17, - 0x6d, 0xfd, 0x73, 0x3d, 0x26, 0xf5, 0x57, 0x2d, 0x6b, 0xe3, 0xa1, 0x7b, - 0xd3, 0x3f, 0x5f, 0x5f, 0xf0, 0xea, 0x71, 0x78, 0x3d, 0xfb, 0xf4, 0x39, - 0x59, 0xe6, 0xb7, 0x1a, 0x82, 0xf1, 0xc7, 0x46, 0xe2, 0x3a, 0xe0, 0x92, - 0x53, 0xea, 0x2c, 0x98, 0x55, 0x29, 0x9d, 0x51, 0x07, 0x95, 0xbf, 0x00, - 0x6c, 0xf4, 0x30, 0x16, 0x1e, 0xdf, 0x14, 0x1f, 0x92, 0xd8, 0xc2, 0xb4, - 0xbf, 0xe8, 0x04, 0xe3, 0xd8, 0x1e, 0x78, 0xb5, 0xd3, 0x61, 0xe0, 0xd5, - 0x63, 0x0e, 0x82, 0x59, 0xea, 0x8b, 0x83, 0x35, 0x57, 0xc0, 0x55, 0xef, - 0x00, 0x2e, 0x9c, 0x6d, 0x1d, 0xac, 0x9b, 0xbf, 0x8d, 0x29, 0x03, 0xa0, - 0x13, 0xc8, 0x81, 0x69, 0x22, 0xd6, 0x37, 0x13, 0xab, 0x6d, 0xb6, 0xee, - 0xcc, 0x34, 0xff, 0xae, 0x4e, 0xbc, 0x2f, 0x48, 0x48, 0x41, 0x8b, 0x5f, - 0x8d, 0x0f, 0x76, 0x20, 0x51, 0x99, 0x17, 0xc8, 0xcd, 0x80, 0xe5, 0xd6, - 0x50, 0xf2, 0x9e, 0x00, 0xfe, 0x33, 0xb9, 0xd1, 0x5a, 0x8f, 0xb8, 0xbc, - 0x7b, 0x3c, 0x6d, 0x2b, 0xe1, 0xaf, 0x1a, 0x73, 0xbe, 0x5f, 0xd0, 0x37, - 0xba, 0xe5, 0x66, 0x29, 0xc5, 0x4b, 0x0a, 0xb6, 0xb3, 0x7b, 0x57, 0x2b, - 0xe4, 0x67, 0xa2, 0x91, 0xe1, 0xe3, 0x52, 0xe6, 0x6b, 0x5c, 0x2c, 0x2f, - 0xeb, 0x44, 0xdd, 0x42, 0xa9, 0x95, 0x24, 0x98, 0xe1, 0x55, 0xee, 0x66, - 0xf9, 0x3e, 0x82, 0x11, 0xfb, 0x74, 0xc1, 0x50, 0x65, 0x19, 0x79, 0x85, - 0xe0, 0x95, 0xf0, 0xa3, 0x8a, 0x91, 0x3a, 0xa2, 0xd7, 0x1f, 0xab, 0x11, - 0x95, 0x7a, 0x30, 0xcc, 0x4a, 0xdc, 0x10, 0xd6, 0x55, 0xc2, 0x06, 0x86, - 0x4e, 0xe2, 0xf3, 0xee, 0xd3, 0x43, 0x84, 0xbf, 0xbb, 0x14, 0x73, 0xbe, - 0x7e, 0x84, 0x1f, 0x64, 0xeb, 0xa7, 0xc5, 0x49, 0xfb, 0x43, 0xa3, 0x5e, - 0x4e, 0x86, 0xbb, 0xd4, 0x5a, 0x34, 0x99, 0x3f, 0xe8, 0xdb, 0x11, 0x9b, - 0x5f, 0xe5, 0x6f, 0x90, 0x1b, 0x35, 0x9b, 0x42, 0xa7, 0xa2, 0xe5, 0xed, - 0x50, 0xda, 0x96, 0x30, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, - 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, - 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, - 0x20, 0xfd, 0x2e, 0xae, 0xed, 0x58, 0x0f, 0xf7, 0x36, 0x8f, 0x3d, 0x93, - 0x48, 0xf2, 0xb0, 0x40, 0x45, 0x75, 0xea, 0xf4, 0x28, 0xe5, 0x62, 0xbc, - 0x03, 0x00, 0x57, 0xe2, 0xd0, 0xa8, 0x97, 0x45, 0x4b, 0xcb, 0x63, 0x66, - 0xcd, 0x4a, 0x00, 0x9a, 0x62, 0xb7, 0x69, 0xf8, 0x32, 0x28, 0x49, 0x3b, - 0x28, 0x74, 0x48, 0xd7, 0xef, 0xcd, 0xde, 0xcb, 0x02, 0x1b, 0x79, 0xd4, - 0x80, 0xf0, 0xc8, 0x0b, 0xef, 0x09, 0xdd, 0xf9, 0x1d, 0x01, 0x7a, 0x8c, - 0x44, 0xa4, 0x27, 0xea, 0xfe, 0x64, 0x9c, 0xa5, 0xf3, 0x92, 0xad, 0x90, - 0x4f, 0xd7, 0xf2, 0x7a, 0xa8, 0x2a, 0x9b, 0xfb, 0xcf, 0xa5, 0x15, 0x4e, - 0x93, 0x9e, 0x9a, 0xd9, 0x6f, 0x4f, 0xa2, 0xaa, 0x8e, 0x9a, 0x7c, 0x3c, - 0xa6, 0x51, 0x3a, 0xe8, 0xe4, 0xc3, 0x5a, 0x9c, 0xeb, 0x18, 0x20, 0x62, - 0x67, 0x43, 0xff, 0x58, 0xdd, 0xa7, 0xb5, 0x20, 0xb9, 0xc4, 0x78, 0x84, - 0x8e, 0x68, 0xd1, 0x74, 0x13, 0xdd, 0xbc, 0x10, 0x37, 0x72, 0x7b, 0xce, - 0xfa, 0x5d, 0x4c, 0x7b, 0xc5, 0x5b, 0x93, 0x60, 0xd8, 0x14, 0x65, 0x78, - 0x07, 0x9a, 0xbc, 0x13, 0x50, 0xec, 0xa0, 0x3d, 0x1c, 0x7b, 0xe0, 0x3f, - 0x93, 0xca, 0xcf, 0x47, 0xd5, 0x82, 0xd6, 0xae, 0xae, 0x8b, 0x40, 0x1e, - 0xf9, 0xf6, 0x29, 0x48, 0x2d, 0x3a, 0x0a, 0x2a, 0xbe, 0xcc, 0x6c, 0x03, - 0x1c, 0x3b, 0x02, 0x1e, 0x67, 0x9d, 0x06, 0x51, 0x99, 0x38, 0x1f, 0x24, - 0x53, 0xfb, 0xf9, 0x70, 0xf6, 0xfd, 0xbe, 0x85, 0x6d, 0x1b, 0x85, 0x16, - 0x5f, 0xaf, 0xd1, 0xe3, 0x4e, 0xf8, 0x73, 0x4b, 0x9a, 0xc1, 0xdc, 0x97, - 0x48, 0x98, 0xbd, 0x4a, 0x56, 0x17, 0x18, 0x82, 0x5d, 0x9a, 0x70, 0xa8, - 0xc6, 0xca, 0x6c, 0xab, 0xec, 0x7c, 0x8d, 0xe4, 0xc4, 0x61, 0x5b, 0x08, - 0x62, 0xf6, 0x91, 0x71, 0xa6, 0x95, 0xf6, 0xb5, 0x6c, 0x95, 0xb3, 0x4c, - 0xb5, 0xe5, 0x4e, 0xbb, 0x04, 0xc8, 0xb6, 0x18, 0xb7, 0xaf, 0xeb, 0x18, - 0x83, 0x9a, 0xfc, 0x65, 0x33, 0x50, 0x4e, 0xa6, 0xc8, 0xc1, 0xab, 0x73, - 0x0f, 0x89, 0x29, 0x50, 0x5c, 0x91, 0x6b, 0x55, 0x4b, 0x39, 0x74, 0xff, - 0x86, 0x45, 0xaf, 0xc1, 0x47, 0x06, 0xab, 0xed, 0x3f, 0x52, 0xa0, 0x65, - 0x39, 0xab, 0x95, 0xaa, 0xfc, 0x38, 0xae, 0x3f, 0x10, 0xd5, 0xed, 0xac, - 0xd7, 0x11, 0xd0, 0x7f, 0x09, 0xef, 0xd3, 0x88, 0x82, 0x04, 0x01, 0x11, - 0xbb, 0xdb, 0xf3, 0x76, 0xe8, 0xd9, 0xcd, 0x1f, 0x96, 0x9d, 0x02, 0x99, - 0xdd, 0x3d, 0x98, 0x47, 0x42, 0x06, 0x38, 0x26, 0x3d, 0x47, 0x0b, 0x7f, - 0x99, 0x7c, 0x30, 0x24, 0x01, 0x1a, 0x21, 0xb7, 0xe1, 0x6a, 0x4f, 0xc9, - 0x3a, 0x20, 0xf2, 0xb1, 0x6a, 0xd5, 0x10, 0x0f, 0x78, 0x05, 0xd0, 0x24, - 0x15, 0x39, 0xe9, 0x8d, 0x8a, 0x6f, 0x2a, 0xa2, 0x81, 0xc2, 0xbf, 0x36, - 0x32, 0x2a, 0x2f, 0xff, 0x2b, 0x6a, 0x22, 0xd0, 0x28, 0x80, 0xb4, 0xa7, - 0xfc, 0xd8, 0xcb, 0x80, 0xc1, 0xc9, 0xf0, 0x64, 0x5c, 0x9f, 0x2a, 0x49, - 0x17, 0xf6, 0xd3, 0xe5, 0xf2, 0x61, 0xf1, 0x78, 0x6b, 0xf3, 0x23, 0x28, - 0xdc, 0x98, 0xb5, 0xe7, 0x59, 0x56, 0xe5, 0xb4, 0x10, 0x10, 0xf2, 0x94, - 0xef, 0x9d, 0x62, 0x46, 0x4b, 0x56, 0x3f, 0x4d, 0xb3, 0x36, 0xf4, 0x3a, - 0x63, 0xcb, 0x4e, 0x02, 0x41, 0xd1, 0x12, 0x3c, 0xe8, 0xdc, 0xda, 0xdd, - 0x97, 0xd8, 0xc3, 0xbb, 0x4c, 0x07, 0x9f, 0xa2, 0x11, 0x5f, 0xa0, 0x43, - 0x55, 0xb2, 0x7a, 0x5c, 0x0e, 0x32, 0xf5, 0x11, 0x46, 0xbf, 0x59, 0x53, - 0xbf, 0x9f, 0xbc, 0x3b, 0x89, 0xd4, 0x3c, 0x86, 0xbc, 0x22, 0xf6, 0x42, - 0x16, 0xd1, 0x92, 0xd6, 0x45, 0x0f, 0xda, 0x28, 0xab, 0xaa, 0xaa, 0xaa, - 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, - 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, - 0xbd, 0x08, 0xc3, 0x19, 0xba, 0x4a, 0x51, 0xed, 0xc0, 0x25, 0x96, 0x41, - 0x35, 0x66, 0x39, 0xc2, 0xfe, 0xac, 0x6a, 0xe7, 0xd9, 0x34, 0x21, 0x0e, - 0x72, 0xbf, 0x53, 0x02, 0xf5, 0x96, 0xff, 0xb1, 0x65, 0x1c, 0xde, 0x1c, - 0x17, 0x48, 0xc5, 0x1b, 0xb2, 0x1a, 0xc7, 0x64, 0xeb, 0xd3, 0x51, 0x7c, - 0xea, 0xe1, 0xbf, 0x3e, 0xb8, 0xd4, 0x4a, 0x20, 0xe4, 0x19, 0x91, 0xc3, - 0x91, 0x68, 0x10, 0xdd, 0xec, 0x2f, 0x2a, 0x1b, 0x54, 0xbc, 0x91, 0xbd, - 0xdd, 0xcf, 0xce, 0xfd, 0x24, 0x5d, 0xd5, 0x89, 0x22, 0xef, 0xb1, 0xba, - 0x98, 0x09, 0x5b, 0xf1, 0x9e, 0x83, 0xe1, 0xba, 0x86, 0xc0, 0x98, 0x11, - 0x23, 0xa7, 0x85, 0x2f, 0x58, 0xd1, 0xd2, 0x77, 0x45, 0xb5, 0x2d, 0xef, - 0x16, 0x72, 0x07, 0xb6, 0x64, 0x4d, 0xc3, 0xaf, 0x08, 0xb1, 0x24, 0x05, - 0x53, 0x5d, 0xab, 0x9e, 0x97, 0xf3, 0xbd, 0x45, 0x83, 0xfb, 0xa1, 0x47, - 0x5f, 0x09, 0xc5, 0x23, 0x4b, 0x4b, 0xa1, 0x6e, 0xe1, 0x17, 0xe3, 0xc1, - 0xe6, 0x54, 0xf9, 0x5d, 0xd5, 0x46, 0xed, 0x62, 0xd1, 0xd4, 0x63, 0x1d, - 0x64, 0xcf, 0x97, 0x8d, 0x77, 0x73, 0x9e, 0x1b, 0x1e, 0xce, 0xca, 0xb3, - 0xd1, 0x08, 0xcc, 0xa2, 0xbf, 0xdd, 0x16, 0x8d, 0x91, 0xa4, 0x6b, 0x84, - 0x15, 0xf6, 0xbb, 0x12, 0xc5, 0x27, 0xf6, 0xb3, 0x8d, 0x25, 0x82, 0xd0, - 0x2b, 0x77, 0x9f, 0x31, 0xff, 0x32, 0x34, 0xac, 0x2e, 0xd7, 0xd4, 0xe9, - 0x11, 0x71, 0xc0, 0x1a, 0xbd, 0xb6, 0xd9, 0x67, 0x45, 0x9e, 0x6a, 0xaa, - 0x04, 0x6e, 0x36, 0x30, 0xe2, 0x51, 0xca, 0x08, 0x44, 0xf3, 0x82, 0x68, - 0x7c, 0x0a, 0xbc, 0x3e, 0xd9, 0x89, 0x9f, 0x32, 0xdc, 0x6f, 0xba, 0x24, - 0xea, 0xdc, 0x10, 0xe3, 0x03, 0x3d, 0x27, 0x38, 0x25, 0x07, 0x1c, 0x2d, - 0x5e, 0xc6, 0xff, 0x37, 0xc2, 0x7b, 0x84, 0x5c, 0xb7, 0x59, 0x89, 0x20, - 0x97, 0xfd, 0x82, 0xc3, 0xdf, 0x47, 0xe0, 0xf5, 0x20, 0x03, 0x99, 0x35, - 0x84, 0xd7, 0x80, 0x05, 0xdd, 0x9e, 0xa7, 0x45, 0xe3, 0xf5, 0x4b, 0xa0, - 0xc0, 0x8d, 0xdf, 0x22, 0x4a, 0x3d, 0x83, 0x12, 0x51, 0x0d, 0xfc, 0x79, - 0x97, 0x78, 0xb4, 0xfe, 0x35, 0x9a, 0x0a, 0x1f, 0x0c, 0x0e, 0xc5, 0x23, - 0xda, 0xf6, 0xec, 0x87, 0xb2, 0x01, 0xd8, 0x44, 0xa2, 0xcc, 0x01, 0x12, - 0x6f, 0x0d, 0x8e, 0x76, 0xeb, 0x2c, 0x73, 0xa3, 0xc0, 0x84, 0x6e, 0x13, - 0x5c, 0x66, 0x6a, 0xae, 0x88, 0x3c, 0x2e, 0xdb, 0x3a, 0xf1, 0x4a, 0x4e, - 0x05, 0x17, 0xfb, 0xb2, 0x2b, 0xbd, 0xfd, 0x34, 0xce, 0x20, 0xf9, 0x73, - 0x6c, 0xc5, 0x1c, 0x12, 0xdb, 0xdc, 0xf6, 0xa9, 0xc4, 0x83, 0x53, 0x41, - 0xb5, 0x8b, 0xbc, 0x2e, 0x7c, 0x75, 0xb5, 0x37, 0x7a, 0xc8, 0x9c, 0x3d, - 0x1b, 0x33, 0xcd, 0x3c, 0xe8, 0xa6, 0x13, 0xcd, 0x05, 0x17, 0xdd, 0xb4, - 0x5d, 0xcc, 0x52, 0x0c, 0xb6, 0xcf, 0x5e, 0xb8, 0x81, 0xdb, 0xd9, 0xb4, - 0x74, 0x1a, 0x7d, 0xaa, 0x09, 0xd4, 0x1d, 0x2f, 0x1e, 0x94, 0xec, 0x33, - 0x51, 0x6b, 0x44, 0x4b, 0xa9, 0xdb, 0x79, 0x54, 0x35, 0x6d, 0x17, 0x8d, - 0x7e, 0x23, 0xf8, 0xbf, 0x56, 0x78, 0xd2, 0x18, 0xb0, 0x5b, 0x41, 0x2d, - 0xd1, 0xd0, 0x89, 0x1c, 0xc4, 0xed, 0xfd, 0x59, 0xca, 0x6e, 0x62, 0x85, - 0x3e, 0xf4, 0x04, 0x1f, 0x50, 0xa2, 0x27, 0x7a, 0x59, 0xc1, 0xc8, 0x40, - 0x76, 0x0f, 0x9b, 0x95, 0x0d, 0xef, 0xa3, 0x10, 0x14, 0x85, 0x20, 0x60, - 0x74, 0x78, 0x7a, 0x2b, 0x1a, 0x30, 0xf1, 0x9f, 0x1a, 0xf7, 0x7a, 0x49, - 0xbe, 0xc6, 0x38, 0x85, 0x8c, 0xb3, 0xe4, 0x27, 0x05, 0x63, 0xb0, 0x8e, - 0x9e, 0x89, 0x2d, 0xbb, 0xf1, 0x1c, 0x63, 0x5c, 0x6d, 0xa7, 0xf2, 0x2c, - 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, - 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, - 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x55, 0xc9, 0x3f, 0x99, - 0x20, 0xbb, 0xf2, 0x0e, 0x26, 0xdf, 0x90, 0xb5, 0x66, 0xb9, 0xa9, 0xb3, - 0x3b, 0xdd, 0xb2, 0x74, 0x59, 0x16, 0xcb, 0x26, 0x89, 0x29, 0x7c, 0x47, - 0xec, 0xa1, 0x1a, 0x2c, 0x18, 0x9b, 0xc4, 0xbe, 0xbc, 0x55, 0xd3, 0x45, - 0xbd, 0x5e, 0xef, 0xb6, 0x87, 0x18, 0x58, 0x37, 0x85, 0x00, 0x0a, 0x19, - 0xb7, 0x20, 0x7e, 0x09, 0x9e, 0x59, 0x6d, 0x76, 0x7a, 0xef, 0xd2, 0x65, - 0x70, 0x6f, 0x01, 0x7f, 0xd3, 0x4c, 0x48, 0xc4, 0xc8, 0x2a, 0x9e, 0xca, - 0x48, 0xc7, 0x71, 0xff, 0xf6, 0xef, 0xb7, 0xd4, 0x13, 0xb7, 0xc9, 0x28, - 0x8a, 0x56, 0x4f, 0x27, 0xda, 0x7a, 0xfa, 0x06, 0x75, 0xb4, 0xcf, 0x76, - 0x30, 0x7e, 0xae, 0x89, 0xcf, 0x48, 0x76, 0x87, 0xd2, 0xa2, 0xd4, 0xe6, - 0x9d, 0xc0, 0x77, 0x25, 0x59, 0xbc, 0x14, 0x69, 0x76, 0xc5, 0x1f, 0x56, - 0xfd, 0x61, 0x72, 0x14, 0x2f, 0x3e, 0x6e, 0xf8, 0x76, 0xd9, 0x8f, 0xd9, - 0xf9, 0x4a, 0xba, 0x23, 0x3a, 0xaa, 0xf9, 0x45, 0xfc, 0x4f, 0x4d, 0x43, - 0xf2, 0xf2, 0xcf, 0x81, 0x9b, 0x08, 0xb1, 0x2b, 0x9b, 0xcc, 0xa0, 0x52, - 0x67, 0x72, 0x94, 0x2f, 0xcf, 0x45, 0x07, 0x2e, 0xdc, 0x84, 0x2d, 0x3d, - 0x35, 0xaf, 0xd4, 0x2a, 0x8f, 0x71, 0x64, 0x4a, 0xe0, 0x6e, 0x61, 0x52, - 0x8d, 0x69, 0x54, 0xc5, 0xe7, 0xc4, 0x48, 0x3a, 0x66, 0x6c, 0x1e, 0x16, - 0x1e, 0x8f, 0x1e, 0x6c, 0x40, 0x55, 0xd6, 0xbe, 0xb6, 0x88, 0x0a, 0x68, - 0xa7, 0xc0, 0xd0, 0x33, 0x97, 0x13, 0xb0, 0xdc, 0x49, 0xa6, 0x6f, 0x84, - 0xe0, 0xe5, 0x89, 0x6f, 0x22, 0x56, 0xf8, 0x01, 0x1c, 0xba, 0x53, 0xe3, - 0xf9, 0x15, 0xf0, 0x64, 0xd2, 0x23, 0x63, 0xb2, 0xb3, 0x10, 0x8f, 0xeb, - 0x42, 0x36, 0x9f, 0xef, 0x41, 0x9c, 0x64, 0x2e, 0xff, 0x69, 0xa1, 0x5c, - 0xf7, 0x6d, 0x53, 0x87, 0x0d, 0x30, 0x2e, 0x12, 0xec, 0x15, 0x50, 0x4f, - 0x45, 0x9a, 0xfa, 0xd3, 0x85, 0x1e, 0xb1, 0x68, 0x1a, 0x13, 0x3f, 0x5f, - 0xd6, 0x89, 0x93, 0xdf, 0x33, 0xf1, 0xad, 0x5d, 0xcf, 0x53, 0x89, 0x1a, - 0x2d, 0x98, 0x64, 0xb4, 0x83, 0x8b, 0xcc, 0xff, 0xef, 0xf1, 0x56, 0x12, - 0x95, 0xf2, 0x2d, 0x8f, 0xf4, 0xd0, 0x1b, 0x63, 0xe7, 0x68, 0x9a, 0xe3, - 0x6f, 0x95, 0x26, 0x04, 0x55, 0xf7, 0x42, 0xaa, 0x0b, 0xba, 0xfd, 0x78, - 0xcc, 0x2a, 0x13, 0xed, 0xd6, 0xbf, 0x73, 0xed, 0x0a, 0x83, 0x3f, 0xa9, - 0x7c, 0x94, 0x6c, 0x93, 0x8f, 0xe3, 0x5d, 0x26, 0x85, 0x94, 0x93, 0x36, - 0xf6, 0x0b, 0x0a, 0x06, 0xcb, 0x76, 0xdb, 0x39, 0xa9, 0x58, 0x3f, 0x6a, - 0x4a, 0x47, 0xa6, 0x7c, 0x97, 0x85, 0xce, 0x3b, 0x34, 0x07, 0x31, 0x63, - 0x40, 0xb8, 0x58, 0x3b, 0xd3, 0xbc, 0x4c, 0x2d, 0xfa, 0x00, 0x59, 0x83, - 0x17, 0xc4, 0x77, 0x39, 0xa0, 0xb4, 0x4f, 0x20, 0x82, 0x5a, 0xb2, 0x22, - 0x70, 0xc8, 0xa1, 0xe6, 0xfc, 0x80, 0x05, 0xfb, 0x7a, 0x83, 0xde, 0xa2, - 0x26, 0x7b, 0x7c, 0x54, 0x77, 0xf3, 0x51, 0xc1, 0x6e, 0xc1, 0x0d, 0xd6, - 0xbf, 0x9d, 0xe1, 0x08, 0x06, 0xb1, 0x68, 0x4b, 0x99, 0xf5, 0x14, 0x02, - 0x19, 0x88, 0xb0, 0x04, 0xef, 0x1d, 0xa6, 0x7b, 0x93, 0x52, 0xe2, 0x38, - 0xc3, 0x83, 0x31, 0x17, 0x7c, 0x3f, 0xd1, 0x16, 0xb9, 0x93, 0xed, 0x99, - 0xad, 0xca, 0x07, 0x2d, 0xba, 0x3d, 0xea, 0x3a, 0x23, 0xf5, 0xa3, 0x62, - 0xad, 0x17, 0xef, 0x3a, 0xc5, 0xe8, 0x66, 0x2b, 0xbf, 0x2f, 0x78, 0x85, - 0x28, 0x02, 0x53, 0xa0, 0x1a, 0x5d, 0x0b, 0xc9, 0xc3, 0xd3, 0xe6, 0x01, - 0xff, 0xf5, 0x72, 0x3d, 0x7c, 0x66, 0x7c, 0x5f, 0xa7, 0x65, 0x0c, 0x58, - 0x6d, 0xe9, 0x3b, 0x44, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, - 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, - 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, - 0x88, 0xf2, 0x7f, 0x4c, 0xe4, 0x6f, 0x0e, 0xc6, 0x1b, 0x2c, 0xb5, 0x46, - 0x9c, 0xad, 0x94, 0xfd, 0x91, 0x6e, 0xf6, 0x0f, 0x3d, 0x32, 0xbd, 0xd2, - 0xba, 0x10, 0x8d, 0x93, 0x15, 0x67, 0xf2, 0x5e, 0xd9, 0x34, 0xb6, 0xef, - 0x10, 0x1d, 0x92, 0x6d, 0x99, 0xee, 0x76, 0x59, 0x40, 0x3a, 0xc8, 0x1c, - 0xec, 0x27, 0xc1, 0x33, 0x04, 0xae, 0x59, 0x65, 0x57, 0xb2, 0x2d, 0xa9, - 0xbe, 0x1f, 0x0e, 0x51, 0x2a, 0x7c, 0x0e, 0xa6, 0x4a, 0x3d, 0x87, 0xef, - 0x6d, 0x71, 0xee, 0xe2, 0x50, 0x52, 0x07, 0x8a, 0x8e, 0x16, 0x66, 0xf5, - 0xca, 0xa4, 0x09, 0xff, 0x7a, 0x29, 0x7f, 0x65, 0x6b, 0xcc, 0x86, 0x51, - 0xee, 0x1a, 0xa7, 0x93, 0xdd, 0x87, 0xb7, 0x5d, 0xae, 0xf4, 0x10, 0xd0, - 0x6f, 0xe6, 0xa7, 0x87, 0xa2, 0xb3, 0x04, 0xd3, 0x1d, 0x69, 0xce, 0x01, - 0xf3, 0x5e, 0x63, 0xc5, 0xb5, 0xc9, 0xaa, 0x4e, 0xa1, 0x82, 0xa4, 0x95, - 0xdf, 0xbe, 0xde, 0x36, 0xa5, 0xa2, 0xb3, 0x51, 0xb5, 0x5f, 0x7b, 0x41, - 0x64, 0xeb, 0xad, 0x0b, 0xe6, 0x24, 0xb1, 0x1b, 0x43, 0x66, 0x0f, 0x64, - 0x0b, 0x34, 0xb4, 0x1c, 0xe7, 0x52, 0x65, 0xe1, 0x1a, 0x76, 0xf0, 0x2f, - 0x27, 0x8f, 0x68, 0x9c, 0xce, 0x15, 0xda, 0x36, 0xab, 0xfc, 0x20, 0x14, - 0x92, 0x0f, 0x29, 0x65, 0x2c, 0x4c, 0xd7, 0x09, 0x60, 0x4c, 0xce, 0x64, - 0x6f, 0xe6, 0xe8, 0x93, 0xab, 0xa2, 0x75, 0x24, 0x93, 0xb8, 0x15, 0xec, - 0x22, 0xee, 0xbe, 0xcc, 0x67, 0xfe, 0xca, 0xd5, 0xdb, 0xdb, 0x35, 0xda, - 0xd4, 0x19, 0x8e, 0x8b, 0x91, 0x7e, 0x99, 0x03, 0x18, 0x8d, 0x16, 0x16, - 0xa0, 0x85, 0x9a, 0xc8, 0x86, 0x4c, 0xcb, 0x15, 0x5d, 0x87, 0x14, 0xbf, - 0xea, 0xfd, 0xf0, 0x9a, 0x3d, 0xbf, 0xcb, 0xc4, 0x8f, 0xd9, 0xfa, 0x9a, - 0x82, 0xe8, 0x01, 0x55, 0x28, 0xd6, 0xb4, 0xf8, 0x1d, 0x08, 0x87, 0xf1, - 0x2b, 0x34, 0x49, 0x09, 0x26, 0x84, 0x80, 0xf4, 0xb6, 0x6b, 0x2b, 0xe9, - 0xd3, 0xfb, 0xc4, 0xab, 0x7d, 0xf0, 0x43, 0xe8, 0xef, 0x6d, 0x22, 0x61, - 0x1d, 0x56, 0xe9, 0xe9, 0x22, 0x50, 0x5b, 0xbd, 0xa8, 0xe2, 0xcd, 0x78, - 0x36, 0xf4, 0xd0, 0xe6, 0xae, 0x04, 0x08, 0x70, 0x4e, 0xfc, 0x00, 0x82, - 0x28, 0xda, 0x6d, 0x42, 0x86, 0x6c, 0xae, 0x11, 0xd2, 0xd0, 0x01, 0x5f, - 0x3a, 0x6f, 0xd4, 0xcb, 0xe5, 0x01, 0x6e, 0x19, 0xc9, 0x60, 0x2c, 0x82, - 0x53, 0x01, 0x37, 0x77, 0xf9, 0xe9, 0x4c, 0x64, 0x15, 0xef, 0xa0, 0x2f, - 0x87, 0x6f, 0x13, 0x27, 0x3a, 0x3b, 0xd0, 0x33, 0x6e, 0xce, 0x44, 0xc6, - 0xa9, 0xb1, 0x04, 0x9c, 0xbc, 0xc2, 0x59, 0x63, 0xc6, 0x07, 0x5c, 0xa6, - 0xaf, 0x1d, 0xb4, 0xd0, 0x50, 0x31, 0xe8, 0xc5, 0xed, 0x48, 0xf9, 0x62, - 0x44, 0x61, 0x96, 0x01, 0x9d, 0x75, 0xbb, 0x51, 0x80, 0x20, 0x5c, 0x93, - 0x36, 0x30, 0x5f, 0x7e, 0xd0, 0xb6, 0xc7, 0x59, 0xc6, 0xe5, 0x19, 0xd6, - 0x98, 0x16, 0x94, 0xaa, 0x04, 0xc3, 0x79, 0x2f, 0xdd, 0xcf, 0xbb, 0x37, - 0x7d, 0x85, 0x7f, 0x63, 0xda, 0xc9, 0x06, 0x7e, 0xde, 0x90, 0x33, 0x1d, - 0x98, 0x10, 0xf4, 0x5d, 0xc3, 0xef, 0xb8, 0x63, 0x65, 0x90, 0x16, 0x8c, - 0x22, 0x84, 0x33, 0x42, 0x5b, 0x1e, 0x0e, 0xa8, 0xbb, 0xdf, 0x9b, 0x35, - 0x80, 0x0d, 0x0c, 0x9a, 0xfd, 0x47, 0x81, 0xfc, 0x01, 0xe5, 0x57, 0xd7, - 0x9f, 0x46, 0x3e, 0xe2, 0xeb, 0x37, 0x4d, 0x0c, 0x01, 0xba, 0xec, 0x5d, - 0x1e, 0xe8, 0x91, 0x4e, 0xc5, 0x0f, 0xc3, 0x0b, 0x22, 0x1a, 0x8c, 0xa0, - 0xa9, 0x84, 0xf5, 0xa2, 0xb5, 0x29, 0xb8, 0xb7, 0xed, 0x04, 0xc3, 0x16, - 0x21, 0x2e, 0x7a, 0xb1, 0x1f, 0x95, 0xe1, 0x13, 0xab, 0xaa, 0xaa, 0xaa, - 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, - 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, - 0xbd, 0x08, 0xc3, 0x19, 0x19, 0x7d, 0x37, 0xc9, 0xaa, 0x51, 0x76, 0x88, - 0xf3, 0x4b, 0x35, 0xf8, 0x69, 0x40, 0xee, 0x9e, 0x7d, 0x1f, 0x24, 0x65, - 0x3f, 0xe7, 0xcc, 0x89, 0x4a, 0x4e, 0x6c, 0x27, 0xce, 0xc1, 0x48, 0x0e, - 0x59, 0xe6, 0xab, 0xc9, 0x4b, 0x87, 0xc7, 0x29, 0x93, 0xdc, 0x91, 0x69, - 0x74, 0x99, 0x41, 0x0a, 0xf9, 0xf5, 0xa1, 0x85, 0xa4, 0x04, 0xe2, 0x8e, - 0x59, 0x56, 0xbf, 0xac, 0x22, 0x58, 0x76, 0x48, 0xe4, 0xeb, 0x7b, 0x56, - 0x00, 0xba, 0x81, 0xa2, 0x53, 0xe4, 0x32, 0x52, 0x07, 0x0d, 0x04, 0x61, - 0x54, 0xc7, 0x4e, 0xfb, 0xb4, 0x11, 0x2d, 0xbb, 0x32, 0x92, 0xa0, 0x45, - 0xd9, 0xc6, 0x8d, 0x6f, 0x51, 0x7f, 0x2c, 0x24, 0xe9, 0xe6, 0x17, 0x2c, - 0x6d, 0x59, 0x5b, 0xf0, 0x4c, 0x6f, 0x8a, 0x7f, 0x6e, 0x9b, 0x0a, 0x2b, - 0xe8, 0x14, 0xad, 0x10, 0x53, 0x79, 0xda, 0x42, 0x71, 0x0e, 0x74, 0x34, - 0xd9, 0x0e, 0x33, 0xe1, 0x95, 0xd6, 0x13, 0x9d, 0x99, 0xbb, 0xca, 0x19, - 0xcd, 0x9d, 0x5b, 0x45, 0x75, 0x52, 0x1d, 0x1e, 0x31, 0xce, 0x0a, 0x59, - 0xb5, 0xd7, 0x1e, 0x9e, 0x8d, 0xa1, 0x58, 0x34, 0xc3, 0x71, 0x0f, 0x09, - 0xdb, 0xc7, 0x4c, 0xd8, 0xcf, 0xfa, 0xcc, 0xba, 0xa4, 0x10, 0x5b, 0x07, - 0x9e, 0xde, 0xd3, 0xe5, 0xb8, 0xd5, 0x6d, 0xc7, 0xee, 0xb6, 0xf2, 0xfd, - 0x21, 0xce, 0xed, 0x67, 0x79, 0x71, 0x3e, 0x83, 0x45, 0x60, 0xe8, 0x3e, - 0xd5, 0x33, 0xd8, 0x20, 0xa7, 0x1f, 0x2b, 0x88, 0x65, 0x3b, 0x00, 0xe0, - 0x4e, 0x0f, 0x9b, 0x4c, 0xaf, 0xbd, 0x18, 0xb2, 0x58, 0x4d, 0x7e, 0x23, - 0xee, 0x14, 0xe0, 0x6e, 0x35, 0xa2, 0x4d, 0x87, 0xac, 0x4d, 0x45, 0xb2, - 0xb4, 0x50, 0xe5, 0xd5, 0x3a, 0x1e, 0xfc, 0x56, 0x27, 0xf2, 0x79, 0xda, - 0xdc, 0x6f, 0x98, 0x0c, 0x06, 0x86, 0xf9, 0x49, 0xd3, 0x7e, 0x1d, 0x4d, - 0xc0, 0xa9, 0x75, 0x14, 0x6f, 0x30, 0xb9, 0x89, 0xd1, 0x8c, 0xde, 0x80, - 0xca, 0xbf, 0x75, 0xe3, 0x3f, 0x97, 0x5a, 0x36, 0x45, 0xc6, 0xf2, 0x67, - 0x4c, 0xc1, 0x1f, 0x5c, 0x04, 0xca, 0x40, 0x72, 0xad, 0x26, 0x57, 0x54, - 0x0f, 0x71, 0x79, 0xec, 0xd2, 0x02, 0x0c, 0xe0, 0x69, 0xb9, 0xd2, 0xb9, - 0x46, 0x25, 0x08, 0xf8, 0xb7, 0x03, 0x6c, 0xa7, 0xef, 0xc0, 0xe6, 0x3f, - 0xb5, 0x09, 0x71, 0x4f, 0x67, 0xb1, 0x96, 0xbc, 0x00, 0xa1, 0x04, 0xd3, - 0x09, 0x40, 0xa6, 0xbf, 0x10, 0x78, 0xc5, 0xca, 0x66, 0xa1, 0xd5, 0x69, - 0x80, 0xb2, 0x47, 0xeb, 0x4a, 0x12, 0xa2, 0x61, 0xec, 0x8e, 0x57, 0x5b, - 0xe4, 0xef, 0x9f, 0x75, 0x66, 0x74, 0x10, 0x5c, 0xef, 0x40, 0xbc, 0x17, - 0x8a, 0xb8, 0x6d, 0x6e, 0x90, 0x9a, 0xf3, 0x68, 0xd8, 0x3c, 0x5e, 0x64, - 0xb5, 0x1e, 0xfa, 0x14, 0x37, 0x66, 0x36, 0x26, 0xe1, 0x40, 0xac, 0x8f, - 0xab, 0x17, 0xc4, 0xb1, 0xbc, 0x7a, 0xb9, 0x4c, 0x97, 0x3f, 0x26, 0xcc, - 0x6f, 0xe0, 0x2d, 0x62, 0x34, 0x2a, 0xd7, 0x02, 0xdd, 0x76, 0xd0, 0x6d, - 0xc1, 0x53, 0x38, 0xcf, 0x3d, 0xee, 0xd7, 0x8d, 0xcb, 0x53, 0x1d, 0x97, - 0xbb, 0xf3, 0xa7, 0x37, 0x19, 0xd6, 0x3f, 0x45, 0x89, 0x78, 0x1b, 0x05, - 0x5b, 0x7f, 0x04, 0xf3, 0xe0, 0x1b, 0x33, 0x5f, 0x3f, 0xe1, 0xe5, 0xa8, - 0xcb, 0xed, 0x78, 0xd8, 0x0b, 0x68, 0x34, 0xe1, 0xad, 0x7c, 0xd3, 0xef, - 0x0a, 0x85, 0xfa, 0xf7, 0xaa, 0x7c, 0x25, 0xc6, 0x52, 0xa3, 0x51, 0x5e, - 0xb0, 0x32, 0x05, 0x6c, 0xa3, 0xb0, 0x61, 0x53, 0xf6, 0x0a, 0x17, 0x06, - 0x4c, 0xb3, 0x2a, 0x9d, 0xe2, 0x1a, 0x5f, 0x75, 0x15, 0xd3, 0x0a, 0xb2, - 0xd8, 0xcc, 0xa8, 0xea, 0x67, 0x42, 0xb3, 0xf3, 0xf6, 0x29, 0xdf, 0x2d, - 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, - 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, - 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x55, 0xb5, 0x31, 0x0b, - 0x25, 0xc7, 0x8b, 0x99, 0xba, 0xc6, 0x2c, 0x9e, 0xa4, 0xdd, 0x7a, 0x4d, - 0x93, 0x9e, 0xdf, 0x31, 0x9d, 0x9e, 0xbf, 0x58, 0xf1, 0x44, 0xc5, 0xd2, - 0xb9, 0x0a, 0x87, 0x58, 0xad, 0x79, 0xe1, 0x1d, 0x06, 0xae, 0x40, 0x51, - 0x56, 0xcf, 0x42, 0x8f, 0x51, 0x6c, 0x4b, 0x30, 0x5d, 0x96, 0x74, 0x0d, - 0x5e, 0x5d, 0x38, 0x9a, 0xa7, 0x15, 0x67, 0x2c, 0x32, 0x8e, 0x92, 0x1c, - 0xfc, 0xbc, 0x2e, 0x45, 0xa7, 0x31, 0xed, 0xf6, 0x7e, 0xd6, 0x39, 0x2c, - 0xe4, 0xb9, 0x82, 0xf0, 0xd9, 0x63, 0x23, 0x85, 0x81, 0x5b, 0x7e, 0xb0, - 0x8d, 0x02, 0x4d, 0x9a, 0x23, 0x53, 0xc5, 0x43, 0xfd, 0x41, 0x69, 0x88, - 0x06, 0x7f, 0x2b, 0x65, 0x5d, 0xba, 0xb5, 0xa7, 0xf3, 0xbb, 0x6b, 0xef, - 0xad, 0xb0, 0xe5, 0xbf, 0x86, 0x60, 0xa8, 0x03, 0x8b, 0xaf, 0xa3, 0x40, - 0x00, 0x6d, 0x23, 0x1e, 0x68, 0xec, 0x6d, 0x32, 0x45, 0x7f, 0xf2, 0xb5, - 0xb4, 0xa9, 0x2c, 0x55, 0xab, 0xa3, 0x4f, 0xf9, 0x2a, 0x6a, 0x72, 0x8f, - 0xe7, 0xd4, 0xf5, 0x18, 0xf4, 0x86, 0x76, 0xf4, 0xe1, 0x27, 0x5e, 0x6b, - 0x7a, 0x52, 0xf5, 0x08, 0xc6, 0xe6, 0x40, 0xfc, 0x4d, 0x36, 0xe0, 0xc3, - 0x76, 0x29, 0x02, 0xb9, 0x71, 0x87, 0xa9, 0xa2, 0x09, 0x34, 0x4a, 0x97, - 0xa8, 0x88, 0x70, 0x61, 0x82, 0x12, 0x26, 0x36, 0x03, 0x7a, 0x0f, 0x66, - 0x03, 0x85, 0x36, 0x29, 0xb2, 0xf2, 0x21, 0x6a, 0xde, 0xda, 0xb7, 0x97, - 0x42, 0xd7, 0x25, 0x1a, 0x3c, 0xf4, 0x1a, 0x5e, 0x07, 0xff, 0x7e, 0xb8, - 0x73, 0xe5, 0xa9, 0x3a, 0x14, 0x5f, 0x19, 0x5f, 0xdb, 0x3f, 0x03, 0xc1, - 0x71, 0x6a, 0x26, 0x19, 0xa2, 0x2a, 0xdf, 0xc7, 0x0c, 0x69, 0xef, 0xe0, - 0x85, 0x48, 0x30, 0xf3, 0x31, 0xe2, 0x3a, 0x76, 0xcc, 0x15, 0x8f, 0x07, - 0xcb, 0x9e, 0xc4, 0x8e, 0xf8, 0x31, 0x2f, 0xa5, 0xff, 0x6e, 0xe1, 0xec, - 0x82, 0xb9, 0xe2, 0xc3, 0x91, 0xba, 0xb5, 0xda, 0x21, 0xa3, 0xcc, 0x19, - 0xef, 0x56, 0x4b, 0x04, 0xe8, 0x65, 0x21, 0x17, 0xe9, 0xba, 0xaa, 0x72, - 0xfe, 0xaf, 0x02, 0xa6, 0x40, 0x0a, 0x76, 0x07, 0x02, 0x8d, 0x01, 0xe0, - 0xa6, 0xce, 0xe5, 0x63, 0x1d, 0x52, 0x74, 0x14, 0x54, 0xcf, 0xc8, 0xc0, - 0xc0, 0xe0, 0x24, 0x34, 0x08, 0xcb, 0xb0, 0xac, 0x50, 0xba, 0x21, 0xa0, - 0x33, 0xb8, 0x8b, 0xa8, 0xdc, 0x45, 0x2d, 0x04, 0x23, 0x01, 0x1a, 0x84, - 0xbd, 0x22, 0xbb, 0x89, 0x1f, 0x3d, 0x9d, 0x70, 0x13, 0xaf, 0x07, 0x04, - 0xfd, 0xf9, 0x66, 0x06, 0x47, 0x9d, 0x92, 0x2a, 0xf9, 0xbe, 0x59, 0x6f, - 0x87, 0x1e, 0x0a, 0x5c, 0xb5, 0x8b, 0x76, 0xfa, 0x75, 0xa9, 0xd5, 0xf9, - 0x4a, 0x83, 0xca, 0x18, 0x58, 0x70, 0x9f, 0x21, 0x17, 0x2f, 0xae, 0x4f, - 0x26, 0x1a, 0xcb, 0xec, 0x0e, 0x89, 0xea, 0x1a, 0x11, 0x1a, 0x69, 0x77, - 0x67, 0xd9, 0x4f, 0x53, 0xca, 0x98, 0x69, 0x98, 0xee, 0x45, 0x0a, 0xf9, - 0x71, 0x78, 0x07, 0x65, 0xb9, 0x04, 0xb5, 0xa9, 0x57, 0xd9, 0x0e, 0xa3, - 0xb4, 0x79, 0xf8, 0x01, 0x54, 0xbe, 0x02, 0xd7, 0x12, 0x4c, 0x7e, 0xc9, - 0x1c, 0xe9, 0x68, 0x3e, 0x04, 0x22, 0x43, 0x4d, 0x3f, 0xb5, 0x60, 0x34, - 0x0e, 0x84, 0xdd, 0xb1, 0x08, 0x6f, 0x38, 0xb9, 0xa6, 0x86, 0x4e, 0x12, - 0x9f, 0x83, 0x17, 0x6c, 0x50, 0xdf, 0x0b, 0x0e, 0x92, 0xd9, 0x93, 0xf5, - 0x99, 0x0c, 0x6a, 0x7a, 0xbf, 0x0d, 0x42, 0x1b, 0x88, 0x95, 0x98, 0xfa, - 0x9f, 0x42, 0xb1, 0x1f, 0x1f, 0xa9, 0xc2, 0x5d, 0xa9, 0xa2, 0x5c, 0xb7, - 0x79, 0x71, 0x91, 0x5f, 0x16, 0x99, 0xb8, 0x27, 0xe7, 0x31, 0x34, 0x15, - 0x92, 0x92, 0x73, 0x3e, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, - 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, - 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, - 0xe0, 0xdc, 0x99, 0x7a, 0xbf, 0x12, 0xae, 0xf5, 0xf0, 0x5c, 0x10, 0xd2, - 0xfe, 0xa5, 0x95, 0x16, 0x49, 0xfb, 0xcb, 0xbd, 0x4f, 0x19, 0x69, 0xd1, - 0xc3, 0xf0, 0x8a, 0x9d, 0xad, 0x72, 0x8e, 0x1b, 0x36, 0x27, 0x8b, 0xbf, - 0xb6, 0xfa, 0x87, 0x97, 0x48, 0xe9, 0x1d, 0xff, 0x36, 0xcf, 0x39, 0x37, - 0x7e, 0x54, 0x52, 0x74, 0xea, 0xe0, 0xa6, 0xb2, 0x74, 0x21, 0x2d, 0x53, - 0xd2, 0x8e, 0x9e, 0x0b, 0xe1, 0x2b, 0x61, 0x69, 0xae, 0xca, 0x2f, 0xc1, - 0xa9, 0x90, 0x5b, 0xd8, 0xcb, 0xfa, 0x3c, 0x9b, 0x20, 0x9f, 0x59, 0xdd, - 0xa5, 0x76, 0xd0, 0xbe, 0x8c, 0xd8, 0xac, 0x22, 0x23, 0xd0, 0x09, 0x65, - 0x0b, 0xcb, 0x7c, 0xb4, 0x4d, 0xe0, 0x34, 0xde, 0x21, 0xbe, 0x1a, 0xfa, - 0x22, 0xdb, 0x09, 0xb4, 0xa7, 0x26, 0x14, 0xc4, 0xc6, 0x8f, 0x56, 0xed, - 0x24, 0x3b, 0xe2, 0xf0, 0x09, 0xe8, 0x13, 0x1f, 0x54, 0x32, 0xff, 0x32, - 0xed, 0x2c, 0x85, 0xa7, 0xa8, 0x17, 0x22, 0xa1, 0xf1, 0xf3, 0x5c, 0x7a, - 0x76, 0xa1, 0x40, 0xe1, 0xfb, 0xf9, 0xb6, 0x51, 0x04, 0x4f, 0x2c, 0xd4, - 0x5f, 0x92, 0x4f, 0x22, 0xa9, 0x77, 0x70, 0xbc, 0x58, 0x00, 0x45, 0x2d, - 0xf6, 0xc5, 0x2f, 0x7c, 0xce, 0x33, 0xb3, 0xc7, 0xdd, 0xfd, 0x92, 0x24, - 0x57, 0xb1, 0xcc, 0x9b, 0x0b, 0xc0, 0x28, 0x99, 0x90, 0xcc, 0xe9, 0x47, - 0x8a, 0x77, 0x50, 0x6f, 0x89, 0xfd, 0x56, 0xe7, 0x1e, 0x62, 0xa1, 0xe1, - 0x48, 0xd9, 0xcd, 0xc9, 0xcb, 0xc9, 0xc7, 0xb7, 0x63, 0xd9, 0xd3, 0x9b, - 0x95, 0x89, 0x2b, 0x39, 0x39, 0xcf, 0xb1, 0x46, 0x34, 0x59, 0xcc, 0xdd, - 0x5a, 0x83, 0xdc, 0x3c, 0xcd, 0xc2, 0xb8, 0x6a, 0x85, 0x5f, 0x52, 0x88, - 0xc0, 0x51, 0x57, 0x58, 0xad, 0x69, 0xd6, 0xe9, 0x87, 0xa4, 0xdc, 0x2d, - 0x73, 0xe3, 0x11, 0x5d, 0xe4, 0x83, 0xeb, 0x13, 0xd1, 0x61, 0x2b, 0x41, - 0xf6, 0x21, 0x25, 0x04, 0xfe, 0x84, 0x84, 0x30, 0x84, 0x88, 0x7b, 0xfe, - 0xd4, 0x81, 0xdc, 0xe4, 0xdc, 0xc0, 0x92, 0x9d, 0x57, 0x24, 0x75, 0x44, - 0xa5, 0x17, 0x81, 0xe0, 0xbd, 0xab, 0x33, 0xe1, 0xd4, 0xa2, 0xd9, 0x53, - 0xe7, 0xca, 0xdd, 0x4c, 0x87, 0x72, 0x54, 0x09, 0x0f, 0xfe, 0xcc, 0xb2, - 0x4e, 0xb8, 0x4c, 0xa4, 0xf5, 0xaa, 0xf3, 0x08, 0x61, 0xab, 0x82, 0xd8, - 0x9b, 0x73, 0xee, 0xc8, 0xd2, 0xb6, 0xe0, 0x60, 0x82, 0x0d, 0x81, 0xeb, - 0x0f, 0xc5, 0xd0, 0xd1, 0x00, 0xc6, 0xee, 0x75, 0x77, 0x10, 0xa4, 0x70, - 0xee, 0x8e, 0x2f, 0x1a, 0x83, 0x13, 0x1c, 0x23, 0xd9, 0xf4, 0x39, 0x91, - 0x1b, 0xeb, 0x0d, 0xb4, 0xf0, 0x8f, 0xb6, 0x43, 0x23, 0xff, 0x19, 0xcb, - 0x2a, 0x0f, 0x99, 0xe8, 0xf9, 0xf4, 0x6b, 0x4e, 0x5e, 0x68, 0x02, 0x0f, - 0x02, 0xc9, 0x2e, 0x7a, 0xfc, 0x9f, 0xa4, 0x63, 0xfc, 0xcf, 0xd5, 0xeb, - 0x2c, 0x54, 0x79, 0xb3, 0xde, 0x11, 0xd9, 0x8d, 0x5c, 0x2d, 0xa3, 0x81, - 0x8c, 0xc2, 0x6a, 0x5d, 0x97, 0xf1, 0x92, 0x57, 0x61, 0xd7, 0x02, 0x1a, - 0xe0, 0xef, 0xc0, 0x21, 0xe5, 0x0c, 0xa8, 0xb9, 0x49, 0xd6, 0x3b, 0xe8, - 0xcf, 0xe0, 0x28, 0xaf, 0xae, 0x5c, 0xed, 0x4c, 0xc7, 0x07, 0x46, 0xdd, - 0x83, 0xaa, 0x9c, 0x2d, 0x1f, 0x4d, 0xa5, 0x6c, 0xfb, 0x73, 0xa2, 0xe5, - 0xda, 0x89, 0x46, 0xd4, 0xb9, 0xdb, 0x29, 0xca, 0xe1, 0x66, 0x5c, 0xeb, - 0x52, 0xab, 0x5e, 0x35, 0xce, 0x33, 0x4e, 0xcc, 0x52, 0xcb, 0x86, 0x41, - 0x02, 0xd1, 0xe9, 0x71, 0x93, 0x72, 0x2e, 0x67, 0x34, 0xbb, 0xf9, 0xe9, - 0x74, 0xb1, 0x03, 0xb4, 0x0e, 0xc9, 0x3c, 0x0f, 0x13, 0xc7, 0x13, 0x84, - 0xbf, 0x7d, 0xed, 0xa0, 0x0d, 0x87, 0x5b, 0x4d, 0xab, 0xaa, 0xaa, 0xaa, - 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, - 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, - 0xbd, 0x08, 0xc3, 0x19, 0xf8, 0x83, 0xf2, 0x3f, 0x24, 0x8a, 0x5e, 0xfc, - 0x98, 0x40, 0x16, 0xb9, 0x6d, 0xb2, 0x79, 0x59, 0x69, 0x77, 0x38, 0xe5, - 0x56, 0x2a, 0xb8, 0x35, 0xfe, 0x61, 0x76, 0x9e, 0x88, 0x7a, 0xbb, 0x16, - 0x60, 0xb4, 0x6a, 0x6e, 0xd2, 0xf6, 0x2a, 0xa3, 0x5b, 0x68, 0x8a, 0x02, - 0x4d, 0x03, 0x3f, 0x92, 0xa7, 0x5b, 0x9b, 0x1f, 0xcb, 0x40, 0x2a, 0x78, - 0xe0, 0x13, 0x7b, 0xb5, 0xd5, 0xe8, 0x32, 0x34, 0x3a, 0x7f, 0x52, 0x1f, - 0x95, 0x5b, 0x26, 0xc8, 0x0f, 0x8c, 0xbb, 0x86, 0x26, 0x67, 0x65, 0x17, - 0xd2, 0x5a, 0x27, 0x04, 0x3b, 0x10, 0x76, 0x70, 0xc9, 0x30, 0x95, 0x0d, - 0x70, 0x0b, 0xb5, 0x52, 0xb3, 0xc0, 0xaf, 0x8d, 0x6d, 0x2f, 0xba, 0xb9, - 0xde, 0xd5, 0xec, 0xae, 0xc7, 0x96, 0xdf, 0xe8, 0xbc, 0x26, 0x2a, 0x6c, - 0x29, 0x24, 0xa2, 0xc8, 0xfc, 0x4f, 0x39, 0x54, 0x25, 0x87, 0x59, 0x36, - 0xe1, 0xc2, 0x8d, 0x89, 0xf2, 0xca, 0xa7, 0xf3, 0x76, 0xef, 0x24, 0x5a, - 0x77, 0x1a, 0xb2, 0x68, 0x4a, 0xbb, 0x81, 0x0a, 0x48, 0x28, 0x2c, 0x49, - 0x18, 0x72, 0xf4, 0xc5, 0xd5, 0x60, 0xbb, 0x38, 0x71, 0xa5, 0x74, 0xf6, - 0x37, 0xa5, 0x1f, 0x61, 0x00, 0x2a, 0x0d, 0x60, 0xeb, 0xd1, 0x91, 0xac, - 0x0c, 0x58, 0x31, 0xb6, 0xa7, 0x22, 0x12, 0x1b, 0x5d, 0xc8, 0xfc, 0xb5, - 0x7b, 0x5b, 0xe6, 0x2e, 0x46, 0x49, 0x0c, 0x1d, 0x72, 0x0b, 0xea, 0x4e, - 0xb6, 0x49, 0xaf, 0xa1, 0x10, 0x82, 0x6f, 0x83, 0x4e, 0x7e, 0x7b, 0x27, - 0xf8, 0xfd, 0x75, 0xe4, 0x3f, 0xc8, 0x71, 0xae, 0xb2, 0xc7, 0x81, 0x16, - 0xe9, 0xc7, 0x8c, 0x0f, 0x0f, 0x87, 0xab, 0x31, 0x78, 0x7d, 0x42, 0x17, - 0xe7, 0xa6, 0x62, 0xdb, 0x72, 0x47, 0xab, 0xa8, 0xab, 0x91, 0x59, 0x33, - 0x6c, 0xc1, 0x4b, 0x46, 0x25, 0xd3, 0x44, 0x10, 0xfe, 0x10, 0xef, 0x84, - 0x30, 0x7f, 0xa5, 0x8f, 0x46, 0x42, 0x80, 0x79, 0x64, 0xea, 0xe9, 0xe5, - 0x03, 0xfb, 0x8a, 0xf7, 0xf0, 0xa1, 0x35, 0x8c, 0x3d, 0x51, 0xd3, 0x80, - 0x47, 0x84, 0xb9, 0x13, 0xce, 0x6a, 0x87, 0x57, 0xd7, 0x5e, 0x54, 0x47, - 0x25, 0xd0, 0x9e, 0x47, 0xf3, 0xec, 0xd4, 0x0e, 0x21, 0xd6, 0x4a, 0x1c, - 0xd9, 0x39, 0x88, 0x39, 0x74, 0x73, 0xd6, 0xd3, 0x82, 0x3e, 0xb7, 0x49, - 0x25, 0x26, 0xd5, 0x5f, 0xd8, 0x02, 0x7f, 0x25, 0xee, 0x9d, 0x45, 0x5e, - 0x06, 0xa0, 0x84, 0x60, 0x17, 0x1e, 0x58, 0x51, 0x6f, 0xdb, 0xb2, 0x29, - 0x90, 0xed, 0x09, 0x4e, 0x02, 0xae, 0x47, 0x5e, 0x5b, 0x93, 0x42, 0x00, - 0x46, 0x3f, 0x8b, 0x34, 0x54, 0x91, 0xde, 0x48, 0x7c, 0xd5, 0x15, 0x4d, - 0x59, 0xcd, 0x74, 0xb1, 0x87, 0x6a, 0xc5, 0x65, 0x56, 0x71, 0x49, 0x2e, - 0x40, 0x3b, 0x67, 0x6e, 0x86, 0xf8, 0xd6, 0x4f, 0xa9, 0x34, 0x3f, 0x89, - 0x77, 0xbe, 0x97, 0x25, 0xda, 0x9a, 0xc1, 0xf1, 0xab, 0x9c, 0xc3, 0x83, - 0x2e, 0x52, 0xe2, 0xc8, 0x54, 0xae, 0xd2, 0xba, 0x07, 0x00, 0xbf, 0x2f, - 0xdf, 0xd7, 0x6d, 0xef, 0x6c, 0x67, 0xa2, 0xb7, 0x88, 0x6a, 0x98, 0xac, - 0xc8, 0x4a, 0xb4, 0xbe, 0x68, 0x81, 0x1f, 0xb9, 0x09, 0x04, 0xb9, 0x92, - 0xa0, 0x2f, 0x04, 0x41, 0xc2, 0x64, 0xf1, 0x27, 0xb5, 0x0c, 0xa8, 0x4e, - 0xc3, 0xc0, 0x8e, 0x29, 0xa3, 0x78, 0x77, 0x2b, 0x46, 0x67, 0x7a, 0xea, - 0x85, 0x97, 0xff, 0x7d, 0x9b, 0x36, 0x2b, 0x05, 0x4c, 0x16, 0x10, 0x1c, - 0xa1, 0x4e, 0xa0, 0x34, 0x3d, 0x17, 0x3f, 0xba, 0x08, 0xa0, 0x4e, 0x40, - 0x0c, 0x98, 0x14, 0xb4, 0xff, 0xf3, 0xa1, 0x53, 0x69, 0xbb, 0xe4, 0x57, - 0x43, 0xb3, 0x1e, 0xef, 0xb4, 0x59, 0x39, 0xdb, 0x7b, 0xce, 0xc4, 0x35, - 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, - 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, - 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xae, 0xa4, 0xee, 0xa7, - 0x13, 0xa2, 0x32, 0x32, 0xb8, 0x98, 0x6c, 0x06, 0x37, 0xd2, 0xb7, 0x89, - 0xe7, 0x59, 0x4f, 0xb1, 0x5e, 0x15, 0x17, 0xca, 0x43, 0x0a, 0xaa, 0xbe, - 0x19, 0xdd, 0x2c, 0x10, 0xf9, 0xce, 0x8a, 0xa8, 0x4a, 0xa3, 0x6e, 0x12, - 0x46, 0x8b, 0x32, 0x99, 0x7d, 0xa6, 0xf1, 0x3c, 0x46, 0x7c, 0x69, 0x4b, - 0xa0, 0x4e, 0x61, 0xd5, 0xdc, 0xf1, 0x4e, 0x18, 0x1b, 0x4e, 0xaa, 0x66, - 0x8c, 0xcb, 0x5c, 0x0c, 0x46, 0x49, 0xea, 0x56, 0x97, 0x3b, 0xf8, 0x38, - 0x5e, 0x2c, 0xf2, 0x74, 0x09, 0xee, 0xe4, 0x1c, 0xda, 0x93, 0xe1, 0x76, - 0xe1, 0xd5, 0xea, 0x5e, 0xe7, 0xb3, 0xf9, 0x0f, 0xbe, 0x72, 0x48, 0x21, - 0xcf, 0xa6, 0xd6, 0x30, 0x15, 0x92, 0x67, 0x0b, 0x51, 0xa7, 0x44, 0x11, - 0x90, 0x2d, 0x24, 0xe3, 0xf4, 0x79, 0xc8, 0x16, 0x87, 0xb5, 0x14, 0x42, - 0xf1, 0x40, 0xf1, 0x33, 0x66, 0x06, 0x90, 0xa1, 0xbe, 0x8b, 0x69, 0xb6, - 0xcc, 0x48, 0x3d, 0xeb, 0x37, 0x4f, 0xa7, 0x8e, 0xab, 0x6c, 0x17, 0x82, - 0xaa, 0xe0, 0x52, 0x6c, 0xb7, 0xa0, 0xdb, 0x77, 0x84, 0x51, 0xb4, 0x50, - 0xfe, 0x69, 0x96, 0x42, 0x23, 0x51, 0x9c, 0x2a, 0x60, 0xc5, 0xc0, 0x78, - 0x2f, 0x14, 0x7c, 0x1a, 0x0c, 0x92, 0xff, 0x93, 0x61, 0x6b, 0x39, 0x9e, - 0xc9, 0xeb, 0x55, 0xc5, 0xb1, 0x55, 0xb0, 0x10, 0x80, 0xa6, 0x44, 0x52, - 0xc5, 0x55, 0x3b, 0x1e, 0x6d, 0x21, 0xb0, 0x7c, 0xaf, 0xa9, 0x7c, 0xa3, - 0x40, 0x57, 0xc3, 0xf6, 0xfe, 0x5c, 0x0c, 0x19, 0xed, 0x62, 0x81, 0x52, - 0x7c, 0xf3, 0xe0, 0x6c, 0x77, 0x30, 0xad, 0x32, 0xf1, 0x28, 0xb5, 0x75, - 0xf5, 0x3d, 0x81, 0x15, 0x34, 0xd4, 0x5a, 0x92, 0x4e, 0xaf, 0x76, 0x01, - 0x0c, 0x3f, 0x32, 0x6b, 0xc9, 0x00, 0xfc, 0x78, 0x2e, 0xab, 0xa2, 0x38, - 0x03, 0xd3, 0x68, 0xee, 0x31, 0x2e, 0x11, 0x69, 0x87, 0x45, 0x3c, 0xc7, - 0xad, 0x21, 0xd0, 0xf7, 0x29, 0xa0, 0xe5, 0xd8, 0xf5, 0xe3, 0x18, 0x71, - 0x26, 0xc7, 0xa7, 0x96, 0x39, 0x17, 0xf3, 0x1e, 0xb8, 0x7d, 0xdf, 0xdf, - 0x92, 0xa4, 0x03, 0x70, 0xe1, 0xca, 0xca, 0x26, 0x02, 0x97, 0x8a, 0x39, - 0xd1, 0x4d, 0xe7, 0xdd, 0x44, 0xd3, 0xde, 0xbf, 0x86, 0xba, 0xa7, 0x36, - 0xf8, 0x0b, 0x40, 0x09, 0x2f, 0xcc, 0x89, 0x79, 0xb3, 0x2e, 0x9a, 0x6f, - 0x6b, 0x94, 0xd5, 0xd7, 0x30, 0x11, 0x6c, 0x3f, 0x70, 0x34, 0x16, 0x14, - 0x20, 0xd1, 0xfb, 0xab, 0xa8, 0x02, 0x0f, 0x34, 0x98, 0x45, 0xba, 0x11, - 0x9c, 0x3b, 0x54, 0xa6, 0xf3, 0x39, 0xe3, 0x82, 0x2c, 0x43, 0xc5, 0x2c, - 0xcb, 0x90, 0x5f, 0x11, 0xf1, 0x9c, 0x18, 0x1c, 0xf7, 0x39, 0xdc, 0xb2, - 0xd4, 0xb0, 0xec, 0xee, 0x69, 0xd9, 0xb7, 0x0b, 0xd3, 0xa8, 0xd3, 0x22, - 0x11, 0xfb, 0x1e, 0x8e, 0xe6, 0xa7, 0x87, 0xdd, 0x9a, 0x54, 0x56, 0xd5, - 0xf3, 0x49, 0x4a, 0xcf, 0x7c, 0x5a, 0x1c, 0xf2, 0x72, 0xb5, 0x6a, 0x6b, - 0xf2, 0x23, 0x6e, 0x03, 0xb8, 0xaf, 0x2a, 0x72, 0x2a, 0x84, 0x08, 0xff, - 0xc8, 0x8d, 0x5c, 0xdc, 0xbb, 0xd4, 0x98, 0xc8, 0x78, 0x5d, 0x5d, 0x0a, - 0x9d, 0xc6, 0x60, 0x37, 0x43, 0x91, 0x52, 0xbf, 0xea, 0x32, 0x68, 0x6d, - 0x36, 0xf1, 0x39, 0xf2, 0x09, 0xa7, 0xc2, 0x96, 0xb0, 0x7c, 0x9d, 0x71, - 0x06, 0x53, 0x69, 0x2d, 0xc9, 0x51, 0x6c, 0xfe, 0xc0, 0xe8, 0x24, 0xf3, - 0xac, 0x9e, 0x5b, 0x6c, 0xc1, 0x59, 0x4b, 0x44, 0xaa, 0xc5, 0xe8, 0xbb, - 0x18, 0x7c, 0xdc, 0xf8, 0x05, 0xd9, 0x5e, 0x85, 0x05, 0x8a, 0x43, 0xc0, - 0x3f, 0x02, 0xeb, 0x0c, 0x35, 0x44, 0x50, 0xd2, 0x95, 0xa9, 0x2d, 0x6f, - 0xc2, 0xc8, 0xaf, 0x19, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, - 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, - 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, - 0xbb, 0x94, 0x34, 0xa1, 0x59, 0x7d, 0xfb, 0x3d, 0x7b, 0xdc, 0x33, 0xeb, - 0xde, 0xbd, 0x2f, 0xd0, 0x75, 0x7d, 0xaf, 0x22, 0x72, 0xae, 0xa4, 0x9c, - 0x97, 0x36, 0x4b, 0x64, 0x3c, 0xfa, 0x6f, 0x04, 0x99, 0x9b, 0xae, 0xf6, - 0x0b, 0x6c, 0xe6, 0xde, 0xbc, 0x8f, 0xd7, 0xd8, 0x7f, 0xc3, 0x74, 0xf7, - 0x2a, 0xf2, 0x7c, 0x4d, 0xc2, 0xc0, 0xb7, 0x89, 0x71, 0xbb, 0xdb, 0xb4, - 0xab, 0x31, 0x6b, 0x1b, 0xd0, 0x35, 0xe0, 0xa0, 0x6b, 0xbe, 0xf4, 0x88, - 0x8f, 0x04, 0x9c, 0xc8, 0xf5, 0xaa, 0x89, 0xf2, 0xec, 0xad, 0xd9, 0x33, - 0x19, 0x99, 0xd9, 0x74, 0xf0, 0x0c, 0x7e, 0x80, 0xa5, 0xbb, 0x2a, 0x70, - 0x59, 0x82, 0x9e, 0xe3, 0x20, 0x83, 0x0e, 0x87, 0xa1, 0x97, 0x22, 0x1a, - 0xf8, 0x06, 0xde, 0x0b, 0x26, 0x13, 0x61, 0x1f, 0x77, 0xfb, 0x41, 0x6b, - 0xe3, 0xcf, 0xfb, 0x19, 0x0c, 0xf3, 0xa9, 0x53, 0x5b, 0x4e, 0xfd, 0xc0, - 0x38, 0xfb, 0x65, 0x1b, 0x19, 0x9f, 0x52, 0x0b, 0x67, 0x54, 0x3c, 0x9e, - 0x4b, 0x56, 0xac, 0xa3, 0x7f, 0xf1, 0x8f, 0xac, 0x55, 0x5e, 0x52, 0x2b, - 0x14, 0x18, 0x48, 0x0b, 0xd8, 0x55, 0xbf, 0x19, 0x2b, 0x21, 0x35, 0xba, - 0x17, 0xa6, 0x87, 0xda, 0x3e, 0x73, 0x2b, 0xee, 0x6b, 0x2d, 0xde, 0xe8, - 0x95, 0xc3, 0x38, 0x1f, 0xa7, 0xac, 0xb0, 0x3d, 0x02, 0xca, 0x19, 0x41, - 0xf3, 0x34, 0xed, 0x2f, 0x31, 0x7c, 0x34, 0x79, 0xc0, 0x47, 0x7d, 0xde, - 0x68, 0xd0, 0x37, 0x66, 0x28, 0x5a, 0xf2, 0x43, 0x60, 0x96, 0x68, 0x18, - 0x15, 0xa6, 0xc0, 0x42, 0xa9, 0xeb, 0x94, 0x62, 0x31, 0xb5, 0xf6, 0x8c, - 0x1d, 0x2c, 0x90, 0x78, 0x73, 0x6d, 0x5b, 0x6a, 0x07, 0x69, 0x6c, 0x17, - 0x96, 0xce, 0x9e, 0x1d, 0x70, 0x1c, 0x71, 0xa9, 0x8b, 0x1f, 0x75, 0x45, - 0xf7, 0x5e, 0xe4, 0x6e, 0x6a, 0xe8, 0x4b, 0xd4, 0x13, 0xbb, 0xec, 0xaf, - 0x8d, 0xdd, 0xe4, 0x54, 0xb4, 0x30, 0xdb, 0xbd, 0x81, 0x87, 0xc3, 0xbf, - 0x41, 0xf0, 0xf4, 0x73, 0xe2, 0x44, 0x8e, 0x7f, 0x4d, 0x74, 0x10, 0x08, - 0xa5, 0x82, 0x91, 0xc8, 0x43, 0x77, 0x9a, 0x43, 0x86, 0x57, 0x37, 0x52, - 0x1d, 0x91, 0x9e, 0x90, 0xbf, 0x01, 0xfb, 0xbf, 0xbe, 0x81, 0xd7, 0xb2, - 0xff, 0xbd, 0xd7, 0xfc, 0xf5, 0x18, 0x76, 0x32, 0xbe, 0x31, 0xc9, 0xc1, - 0x54, 0x3b, 0x27, 0x4e, 0x6f, 0xd4, 0x48, 0x65, 0x04, 0x45, 0x20, 0xef, - 0x0d, 0xcd, 0xbf, 0xa1, 0x65, 0xc8, 0x28, 0x72, 0xb8, 0xaf, 0x15, 0x45, - 0x53, 0xd3, 0x45, 0x0a, 0x5e, 0x56, 0xf7, 0xf9, 0x6f, 0xb1, 0x33, 0xc4, - 0xfb, 0x29, 0x66, 0xc0, 0xae, 0xc7, 0x83, 0x08, 0xbc, 0x68, 0x4b, 0xfa, - 0x50, 0x65, 0x4c, 0x89, 0x62, 0xca, 0xff, 0xb9, 0xbe, 0x6a, 0xea, 0x37, - 0x19, 0x67, 0xd1, 0xa2, 0x1e, 0x30, 0xf5, 0x2d, 0x0a, 0xd9, 0x2b, 0x0e, - 0xed, 0xf3, 0xe3, 0x68, 0x53, 0x17, 0xb1, 0xac, 0xef, 0xfa, 0x54, 0x04, - 0x1d, 0x5c, 0x77, 0xd1, 0xd3, 0x93, 0xb7, 0x65, 0x3a, 0xc1, 0x6f, 0x44, - 0xc3, 0xd7, 0x59, 0x78, 0x84, 0x2c, 0xdb, 0x20, 0x55, 0x1a, 0x7a, 0x2a, - 0x35, 0xce, 0xeb, 0x12, 0xd2, 0x84, 0x66, 0x7e, 0xbd, 0x01, 0x2a, 0xad, - 0xb6, 0x58, 0x0c, 0x44, 0x36, 0x33, 0x39, 0xd9, 0xdf, 0x1e, 0x70, 0x93, - 0x86, 0xba, 0xc4, 0x67, 0xe4, 0x10, 0xc8, 0x0a, 0xad, 0x5c, 0xe9, 0x63, - 0x30, 0x2c, 0x34, 0xb5, 0x47, 0x07, 0xad, 0xc2, 0x00, 0x40, 0x21, 0x27, - 0x9b, 0x7b, 0xcf, 0xe0, 0xa1, 0xaf, 0x85, 0x9b, 0x13, 0xd9, 0xe7, 0x15, - 0x34, 0x4d, 0x0d, 0x39, 0xd0, 0x70, 0xac, 0x9e, 0xc8, 0x80, 0x85, 0x8f, - 0x5e, 0x95, 0x8c, 0x8d, 0xf5, 0xd1, 0x38, 0x58, 0xab, 0xaa, 0xaa, 0xaa, - 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, - 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, - 0xbd, 0x08, 0xc3, 0x19, 0xe1, 0xfb, 0x29, 0x84, 0x5a, 0xb0, 0xfd, 0x3c, - 0x75, 0xc1, 0xd9, 0x89, 0x82, 0xd4, 0x48, 0x91, 0x51, 0xde, 0x78, 0x3e, - 0x23, 0x60, 0x1d, 0x73, 0x72, 0x30, 0xfb, 0xec, 0xc9, 0x4f, 0x19, 0x06, - 0x85, 0x17, 0xb0, 0xee, 0xa0, 0x93, 0xbc, 0x46, 0x00, 0xde, 0x22, 0xed, - 0x41, 0x71, 0xfb, 0xf6, 0xed, 0x8a, 0xf9, 0xb9, 0x52, 0x59, 0x87, 0x6d, - 0xe1, 0xa3, 0x94, 0x1d, 0x82, 0x25, 0xda, 0x72, 0xc0, 0xe2, 0x02, 0x7a, - 0x2d, 0x12, 0x3a, 0x25, 0x2b, 0x97, 0xfb, 0x62, 0xd4, 0xb2, 0xa4, 0x79, - 0xdb, 0x83, 0x79, 0x20, 0x56, 0xee, 0xc8, 0xc0, 0x24, 0x36, 0xa3, 0x6d, - 0x69, 0xc1, 0x72, 0x4e, 0x02, 0x2e, 0x9b, 0x80, 0x14, 0x0d, 0x3a, 0x22, - 0x60, 0x79, 0xe3, 0x24, 0x28, 0xce, 0x6a, 0xf2, 0x61, 0xcc, 0xa3, 0x41, - 0xcf, 0xcd, 0x98, 0x03, 0x95, 0x4e, 0x97, 0xcb, 0x19, 0xed, 0x94, 0x3a, - 0xd4, 0x89, 0x49, 0x9a, 0xdc, 0x72, 0xea, 0xba, 0x53, 0xba, 0x91, 0x56, - 0xc1, 0x97, 0x32, 0x33, 0x5b, 0x41, 0xa9, 0xe1, 0x87, 0xc8, 0xeb, 0x4b, - 0xb9, 0x5f, 0xf3, 0x14, 0x78, 0x89, 0x95, 0x6b, 0x77, 0xaf, 0xfa, 0x70, - 0x7e, 0xe3, 0x9a, 0xbb, 0x65, 0x3d, 0x68, 0x64, 0xe1, 0x17, 0xa9, 0xe4, - 0x2f, 0x39, 0x6b, 0x45, 0xbc, 0x9a, 0x31, 0x1d, 0x73, 0xbb, 0x1a, 0x77, - 0xd4, 0x3c, 0x60, 0x07, 0x48, 0xea, 0xa0, 0xe6, 0xd1, 0xf6, 0x80, 0x89, - 0x0e, 0x5f, 0xa9, 0x32, 0xeb, 0x80, 0x5c, 0x9a, 0x76, 0xe8, 0x00, 0xb0, - 0x84, 0xc2, 0xc6, 0xa2, 0xff, 0xec, 0x9e, 0x46, 0x77, 0x8d, 0xbe, 0x11, - 0x37, 0xfc, 0x67, 0x3c, 0x2c, 0x7d, 0x43, 0x30, 0x04, 0xe5, 0x63, 0x11, - 0xc8, 0x44, 0xce, 0x54, 0x13, 0x32, 0x03, 0x80, 0x10, 0x15, 0x23, 0xe5, - 0xb9, 0x94, 0x70, 0xdf, 0xf0, 0xd3, 0xdd, 0x52, 0x03, 0x5a, 0xf4, 0xe9, - 0x0a, 0xc7, 0xd4, 0x02, 0x5e, 0xce, 0x47, 0xa1, 0xee, 0x0d, 0xe5, 0xbc, - 0xec, 0xcc, 0xd2, 0x4d, 0x41, 0x49, 0xb3, 0xce, 0x23, 0x3d, 0x1e, 0x36, - 0x37, 0xde, 0x02, 0x25, 0xa8, 0x09, 0x6f, 0x98, 0x3c, 0xa5, 0xd6, 0xed, - 0xd3, 0x34, 0x6b, 0x5f, 0x88, 0x55, 0x0d, 0xf7, 0xb3, 0xee, 0x31, 0x0e, - 0x16, 0x44, 0x48, 0x9a, 0x2f, 0xd3, 0x19, 0xc8, 0xf5, 0x40, 0xdd, 0x70, - 0x6b, 0x41, 0x02, 0xb4, 0x9f, 0x3c, 0xf7, 0xe5, 0xf5, 0xda, 0xc0, 0x88, - 0x19, 0x39, 0xf0, 0xa3, 0x83, 0xb2, 0x47, 0x6d, 0x5f, 0xba, 0x73, 0x8f, - 0x55, 0x75, 0x0b, 0x83, 0xf8, 0x87, 0x1b, 0x46, 0x68, 0x22, 0x4e, 0x5d, - 0x77, 0xbd, 0x86, 0x3f, 0xce, 0x6d, 0xed, 0x4c, 0x63, 0x1b, 0x43, 0xb5, - 0x8c, 0xd7, 0x20, 0x0a, 0xcc, 0xe1, 0x5b, 0x22, 0xdc, 0xf5, 0x4b, 0x38, - 0x46, 0x59, 0x84, 0x31, 0x94, 0x6e, 0xce, 0x10, 0x33, 0x31, 0xda, 0xb5, - 0x01, 0xe9, 0xd1, 0x4b, 0x9c, 0xf7, 0xc2, 0x45, 0x75, 0x8f, 0xa6, 0x6d, - 0x2b, 0xb6, 0x1d, 0x4a, 0x3d, 0x2e, 0x21, 0x0a, 0xe5, 0x09, 0x5f, 0x07, - 0x2f, 0xd0, 0xe7, 0x48, 0x17, 0x30, 0x4c, 0x21, 0x23, 0xea, 0x0a, 0x9c, - 0x6e, 0xe7, 0xc7, 0xc1, 0xea, 0x72, 0xac, 0x62, 0x09, 0x97, 0x0b, 0xca, - 0xd7, 0x81, 0x28, 0x6e, 0xe5, 0x4e, 0x51, 0x4b, 0x2e, 0x2e, 0x7b, 0xa7, - 0x58, 0xcd, 0x21, 0x09, 0x59, 0xf8, 0xa0, 0xeb, 0xf1, 0xf6, 0x13, 0x47, - 0x4b, 0xcb, 0xaa, 0x99, 0xf6, 0x92, 0x15, 0x0f, 0x7b, 0xea, 0xd2, 0xde, - 0x21, 0x3c, 0x85, 0x33, 0x16, 0x66, 0x2f, 0x13, 0x01, 0x21, 0x5c, 0xba, - 0x5a, 0x38, 0x06, 0x5f, 0x3d, 0x78, 0x1c, 0x4e, 0x02, 0x1f, 0xc3, 0x6b, - 0x0a, 0x30, 0x3d, 0xac, 0xc4, 0xe1, 0x15, 0xa7, 0xd3, 0x41, 0x14, 0x2d, - 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, - 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, - 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x97, 0x45, 0x35, 0x73, - 0xbb, 0xc0, 0x97, 0xa7, 0xea, 0x3a, 0xcd, 0x36, 0x54, 0x5a, 0x98, 0xcd, - 0x19, 0x50, 0xdf, 0xec, 0xd4, 0xb8, 0x34, 0xe3, 0x0e, 0xd9, 0x54, 0x89, - 0x74, 0xf2, 0xe1, 0x3c, 0x08, 0x67, 0x81, 0xb4, 0x51, 0x10, 0x89, 0x94, - 0x04, 0xda, 0x4a, 0xff, 0x22, 0x20, 0xe6, 0x3a, 0x15, 0xa1, 0xdc, 0x6c, - 0x4d, 0xf1, 0x81, 0x04, 0x6b, 0xe9, 0x4e, 0x07, 0xbe, 0xd6, 0xfe, 0x0a, - 0x85, 0xa6, 0xa8, 0xe0, 0x9c, 0xe6, 0x38, 0x2f, 0x96, 0x06, 0x42, 0x98, - 0x40, 0x9d, 0xda, 0xdf, 0x2f, 0xf9, 0x27, 0x7b, 0x70, 0xe0, 0xa4, 0x5d, - 0x4a, 0x1f, 0x9b, 0x33, 0xfc, 0x37, 0xd0, 0x44, 0x30, 0x07, 0x1a, 0x20, - 0x80, 0xc1, 0x8a, 0x96, 0xd4, 0xf6, 0xa5, 0x0f, 0xcb, 0xe6, 0x40, 0x18, - 0x92, 0xc5, 0x90, 0x56, 0x06, 0xce, 0x71, 0xfa, 0x91, 0xf2, 0x55, 0xc1, - 0x55, 0x62, 0x0f, 0x20, 0x41, 0x89, 0x31, 0xf8, 0xed, 0x16, 0x99, 0xcc, - 0xcc, 0x5b, 0xb8, 0x5c, 0x56, 0xae, 0x10, 0xe5, 0x78, 0x86, 0x8a, 0x3f, - 0xdb, 0x48, 0xfc, 0xfa, 0x39, 0xa9, 0x80, 0x3a, 0xf9, 0x71, 0x96, 0x0c, - 0x0f, 0xd6, 0x9b, 0xb7, 0xab, 0x63, 0x09, 0x3a, 0x29, 0x0a, 0x77, 0x95, - 0xbe, 0xc6, 0x81, 0x36, 0xa8, 0xfb, 0x2e, 0xd7, 0x9c, 0x3a, 0x3e, 0x8d, - 0xe3, 0xac, 0xa4, 0xec, 0x49, 0x00, 0x6f, 0x68, 0x3f, 0x77, 0x59, 0x0e, - 0xf4, 0x5c, 0x02, 0x84, 0x3b, 0xd3, 0x8e, 0xf3, 0x56, 0xc7, 0x58, 0x5c, - 0xc2, 0x27, 0x4b, 0x47, 0x47, 0xfe, 0xde, 0xc3, 0xb0, 0x5e, 0xcb, 0xdc, - 0xd8, 0x20, 0x5d, 0x49, 0x49, 0xa2, 0xdb, 0x86, 0x5c, 0x11, 0x01, 0x37, - 0x9d, 0x43, 0x11, 0xd8, 0x1d, 0x55, 0xc7, 0x28, 0x04, 0xa7, 0xe3, 0xeb, - 0x65, 0x41, 0xbd, 0x76, 0xe5, 0x3c, 0x88, 0xa5, 0x24, 0xc4, 0xa7, 0x4f, - 0xd7, 0x3c, 0x20, 0x7f, 0x1f, 0x6d, 0x18, 0x54, 0xe7, 0x69, 0x4e, 0x7f, - 0xbe, 0x7a, 0x15, 0x4d, 0xac, 0x89, 0x1f, 0x4b, 0xa0, 0xf5, 0x9c, 0xc1, - 0xcb, 0xb0, 0x75, 0x8c, 0x01, 0x89, 0x5c, 0x49, 0xe8, 0xb7, 0xbe, 0x18, - 0x45, 0x5d, 0x28, 0x31, 0x62, 0x2b, 0x6f, 0x2d, 0x7f, 0x5d, 0x81, 0x3e, - 0x01, 0x06, 0xe7, 0xc2, 0x70, 0x7b, 0xca, 0x78, 0xc4, 0x3b, 0xe5, 0xdd, - 0x49, 0xce, 0xd7, 0x04, 0xb4, 0xbf, 0x9c, 0xdf, 0x03, 0xf2, 0xab, 0x58, - 0x6c, 0x20, 0x39, 0xcf, 0x5d, 0xbb, 0x75, 0x70, 0x8f, 0x60, 0x1a, 0xa9, - 0x1b, 0x6a, 0x0e, 0xe7, 0x93, 0xad, 0x77, 0x33, 0x54, 0xb7, 0x2b, 0x37, - 0xe4, 0x33, 0x0f, 0xd9, 0x24, 0x10, 0x64, 0xf7, 0x0a, 0x87, 0xd1, 0x27, - 0x5c, 0x02, 0x35, 0xc9, 0xf6, 0xe0, 0xa8, 0x5b, 0x53, 0xf6, 0x54, 0xc6, - 0xea, 0x43, 0xdf, 0xa8, 0x6b, 0x6e, 0x76, 0x0e, 0xff, 0x53, 0xa4, 0x2a, - 0x41, 0xc2, 0xd6, 0x46, 0xe9, 0x40, 0x70, 0xc9, 0xa2, 0xbd, 0xa0, 0x28, - 0x5f, 0x38, 0x38, 0xad, 0x4f, 0x6e, 0xee, 0xbd, 0x6f, 0x4e, 0x15, 0xc1, - 0x0a, 0x5a, 0xd8, 0x64, 0xb2, 0x5f, 0xde, 0xca, 0x14, 0x62, 0xfb, 0x8f, - 0xc2, 0x9e, 0x8b, 0xe8, 0x71, 0xab, 0x00, 0x92, 0x32, 0x45, 0xd6, 0xfb, - 0xcc, 0x28, 0xba, 0xf0, 0xe0, 0x3d, 0xa0, 0xe8, 0x9a, 0xec, 0xbd, 0x43, - 0x84, 0x3c, 0x13, 0x53, 0xf4, 0xde, 0xe2, 0x71, 0xc8, 0xf8, 0x9f, 0xab, - 0xa2, 0xa5, 0x97, 0xd1, 0x90, 0x46, 0x33, 0x00, 0x20, 0x69, 0xb1, 0x79, - 0xf4, 0x47, 0xa8, 0x90, 0xad, 0x5a, 0x43, 0x35, 0x00, 0x3b, 0xd1, 0x3a, - 0x2f, 0xcd, 0x91, 0xb0, 0x7b, 0xa0, 0x00, 0xba, 0xbc, 0x60, 0xf2, 0xf8, - 0x61, 0x38, 0x86, 0xfc, 0x37, 0x6d, 0xc0, 0x6b, 0x1f, 0x5a, 0x08, 0x6a, - 0x7d, 0x3b, 0x39, 0x19, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, - 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, - 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, - 0x87, 0x97, 0x72, 0x1b, 0x65, 0x4f, 0x21, 0x2e, 0x4a, 0xe4, 0xf7, 0x21, - 0xb6, 0xed, 0xcc, 0xdb, 0xac, 0x5e, 0x80, 0x65, 0x24, 0xc2, 0x5c, 0x76, - 0xcf, 0x17, 0x85, 0x85, 0x8a, 0x41, 0x57, 0x34, 0x72, 0xd0, 0xb4, 0x63, - 0xe6, 0xbd, 0x80, 0x78, 0x20, 0x6e, 0x59, 0x9f, 0xdf, 0x89, 0x68, 0xa6, - 0x71, 0x21, 0xe5, 0x13, 0xd3, 0xf1, 0x56, 0x1e, 0x2b, 0xdf, 0xa1, 0x58, - 0x1a, 0xeb, 0x15, 0x56, 0x19, 0xe3, 0x60, 0x6e, 0xd2, 0x44, 0x62, 0x8a, - 0xa7, 0xa5, 0xcf, 0xfd, 0xc9, 0x61, 0xf7, 0x57, 0xf8, 0x5d, 0x91, 0xfa, - 0x56, 0xd5, 0x29, 0xbe, 0x25, 0x69, 0x23, 0x78, 0xb7, 0x52, 0x3d, 0x0f, - 0x2d, 0x2f, 0xb0, 0x3d, 0xa3, 0xf9, 0xb7, 0x84, 0x74, 0x81, 0x35, 0xa7, - 0x7a, 0x24, 0x32, 0x81, 0x17, 0x22, 0x71, 0xdd, 0xcc, 0x68, 0xa4, 0xeb, - 0xad, 0xba, 0x63, 0x11, 0xe9, 0x1d, 0x7e, 0x01, 0x80, 0xed, 0x2b, 0xf0, - 0xfb, 0x34, 0xc8, 0x33, 0x9f, 0x7e, 0xdc, 0x3d, 0xe5, 0xef, 0xab, 0xd1, - 0x68, 0x29, 0x97, 0xde, 0x60, 0xa0, 0x68, 0xe6, 0x8f, 0x66, 0xef, 0x3c, - 0xbe, 0x02, 0xdb, 0x6a, 0xcb, 0xf4, 0xd7, 0xb9, 0x4b, 0x52, 0xcd, 0x6b, - 0x2b, 0x41, 0xf8, 0xcc, 0x6a, 0xd9, 0x84, 0x82, 0xc8, 0x77, 0x90, 0x9d, - 0xca, 0xa2, 0x0c, 0xa3, 0xdb, 0x81, 0x8d, 0xf8, 0x95, 0x7b, 0xaf, 0x31, - 0x1b, 0xd0, 0xd4, 0x6c, 0xc4, 0x1b, 0xb8, 0xdb, 0x1b, 0x91, 0x87, 0xf4, - 0x73, 0x33, 0x89, 0xeb, 0xa3, 0x2e, 0x2a, 0x95, 0xfd, 0xc6, 0x95, 0x05, - 0xdc, 0x68, 0xeb, 0x63, 0x13, 0xd7, 0x04, 0x2c, 0xb7, 0xfd, 0x51, 0x80, - 0x63, 0x0c, 0x21, 0x1c, 0x1b, 0x00, 0x05, 0x38, 0x07, 0x42, 0x4f, 0xa4, - 0x86, 0xd0, 0x90, 0x4e, 0x82, 0xcf, 0x1d, 0x97, 0xb8, 0xfc, 0xff, 0xf6, - 0x67, 0xf1, 0xca, 0x3e, 0x73, 0xf3, 0xb0, 0xae, 0xa7, 0x84, 0x0e, 0xf9, - 0x7a, 0x38, 0x60, 0x3d, 0x38, 0x4e, 0x02, 0xd6, 0x07, 0xa8, 0x5c, 0x9e, - 0xd1, 0x45, 0xb0, 0x1e, 0x42, 0x99, 0x50, 0xc0, 0x86, 0xbd, 0x35, 0x73, - 0x18, 0xda, 0x9c, 0x53, 0xcb, 0x75, 0x57, 0x8f, 0xb9, 0x60, 0xe2, 0x4f, - 0xcc, 0x01, 0x5a, 0x1a, 0x6e, 0xae, 0x75, 0x77, 0x5f, 0x1b, 0x92, 0x11, - 0x00, 0xfd, 0xf7, 0x88, 0x45, 0x04, 0x45, 0x1f, 0xb0, 0xa9, 0x81, 0x09, - 0xe5, 0x95, 0x8d, 0x4d, 0xcd, 0x35, 0x69, 0x8a, 0x67, 0x9c, 0x85, 0x3b, - 0xc0, 0x87, 0x6e, 0xef, 0x74, 0x30, 0xb1, 0xf2, 0xa1, 0x2e, 0x72, 0x0c, - 0xcf, 0x4c, 0x7f, 0x1f, 0x11, 0xc7, 0x21, 0xa3, 0x06, 0x96, 0xfe, 0xe4, - 0x6d, 0x55, 0x45, 0x5b, 0x05, 0x6d, 0x5b, 0x6c, 0x93, 0x2d, 0x25, 0x1a, - 0x67, 0x74, 0xbe, 0x55, 0xfb, 0x33, 0x5d, 0x98, 0x2f, 0xa7, 0xa4, 0x25, - 0x07, 0xcf, 0xda, 0xc7, 0xe4, 0x85, 0x5c, 0x12, 0x50, 0x80, 0xdd, 0x54, - 0xdc, 0x91, 0xd5, 0x96, 0xbf, 0x40, 0x66, 0xe2, 0x3d, 0xad, 0xa5, 0x21, - 0x4e, 0xfd, 0xbb, 0x7a, 0x17, 0xa9, 0xed, 0x42, 0xa0, 0xc0, 0xa7, 0xd8, - 0x14, 0x56, 0xe0, 0xd1, 0xdd, 0x57, 0x13, 0x83, 0x03, 0x6c, 0x0b, 0x14, - 0xd8, 0x1c, 0xa6, 0xff, 0xc0, 0xd9, 0xda, 0x0e, 0x43, 0x5b, 0x38, 0x4c, - 0x53, 0x9c, 0x50, 0x42, 0x64, 0x7d, 0x0e, 0x69, 0xc5, 0x24, 0x0f, 0x71, - 0x2f, 0x61, 0x1e, 0x84, 0x04, 0x52, 0xdc, 0x2d, 0xf8, 0xd5, 0xa7, 0x00, - 0x44, 0x46, 0xfb, 0x69, 0xbb, 0x89, 0x24, 0x57, 0x3d, 0x27, 0xa9, 0x36, - 0x8a, 0x8a, 0xfa, 0x12, 0xd0, 0xf8, 0x17, 0xd4, 0x59, 0x23, 0x91, 0x1b, - 0xa6, 0x02, 0x6a, 0x4f, 0x84, 0x0d, 0xd9, 0xaf, 0xb7, 0x64, 0x13, 0xec, - 0x39, 0xaa, 0xc4, 0xf0, 0xe1, 0xe4, 0x4b, 0x20, 0xab, 0xaa, 0xaa, 0xaa, - 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, - 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, - 0xbd, 0x08, 0xc3, 0x19, 0xc7, 0x2a, 0x76, 0x74, 0x5f, 0xbf, 0x8d, 0xa6, - 0x70, 0x09, 0xe1, 0x44, 0x72, 0x0a, 0xa1, 0xe8, 0x97, 0x2c, 0xc1, 0x69, - 0x85, 0xbc, 0x1b, 0x07, 0x8d, 0xc0, 0xa1, 0xf3, 0x23, 0x6f, 0xfc, 0x33, - 0x8c, 0xf2, 0x82, 0x22, 0xfe, 0x43, 0x2d, 0x8e, 0x2b, 0xa1, 0xad, 0xff, - 0x53, 0xbc, 0x8f, 0xe3, 0xf5, 0xe3, 0x27, 0x40, 0xc6, 0x9d, 0xed, 0xca, - 0x11, 0x3b, 0x5b, 0x47, 0xa1, 0x66, 0x61, 0x29, 0xbb, 0xc0, 0x91, 0x65, - 0x80, 0x74, 0xd8, 0xcf, 0x8b, 0xcd, 0x13, 0xe1, 0x6b, 0x7e, 0xf5, 0x04, - 0x3f, 0xac, 0x2d, 0x0e, 0x88, 0x24, 0xa1, 0x7f, 0xdc, 0xd9, 0xf6, 0x4f, - 0x94, 0x30, 0x8f, 0x5f, 0x78, 0x60, 0xd8, 0x8c, 0x9d, 0xbf, 0xb5, 0xaa, - 0xf2, 0x8d, 0x89, 0x66, 0xd5, 0x26, 0xcd, 0x43, 0x56, 0xc0, 0x24, 0x47, - 0x12, 0x25, 0x78, 0x47, 0x33, 0xd9, 0x3b, 0xfd, 0x93, 0x17, 0x4e, 0x49, - 0x0a, 0x89, 0xa5, 0x97, 0xca, 0x6e, 0x30, 0x63, 0x68, 0x75, 0x83, 0x82, - 0x45, 0x40, 0x0b, 0x39, 0xb3, 0x5c, 0xc2, 0x6e, 0xdb, 0x70, 0x03, 0x2a, - 0x68, 0x8f, 0x54, 0x2c, 0x5b, 0xdf, 0xd2, 0x08, 0xa2, 0xbb, 0x86, 0x18, - 0xe5, 0xc7, 0x1e, 0xc2, 0xb6, 0xda, 0x72, 0x10, 0x60, 0xe9, 0x75, 0x6f, - 0xf3, 0xad, 0x10, 0x50, 0x57, 0x21, 0x36, 0x7d, 0x7c, 0x8b, 0xa9, 0x04, - 0xba, 0x48, 0x6f, 0x01, 0x5f, 0x86, 0xfe, 0x93, 0xf2, 0x3f, 0x5f, 0xe2, - 0x76, 0x05, 0x29, 0x88, 0x45, 0x49, 0x43, 0xb4, 0x6a, 0x8a, 0xbc, 0x8a, - 0x10, 0x98, 0x54, 0xd0, 0xbe, 0x0b, 0xdb, 0xdc, 0x5b, 0xf8, 0xfb, 0x15, - 0xd3, 0x72, 0x14, 0xbf, 0xf0, 0x75, 0xae, 0x4d, 0xe5, 0xea, 0x09, 0xe3, - 0x36, 0x23, 0x79, 0x55, 0x61, 0x19, 0x8f, 0x53, 0xd7, 0x9c, 0x68, 0x02, - 0x2d, 0xbe, 0x18, 0xe7, 0x48, 0xb8, 0x6e, 0x06, 0x09, 0x5c, 0xd7, 0x61, - 0xde, 0xde, 0x12, 0x15, 0x10, 0xe5, 0x9d, 0xc3, 0x58, 0xa3, 0x8c, 0xa1, - 0x6b, 0x19, 0x92, 0x5f, 0x2d, 0x99, 0xae, 0xb4, 0x16, 0xad, 0xd6, 0x1e, - 0x81, 0x48, 0x99, 0x16, 0xe6, 0xed, 0xd2, 0x56, 0x2b, 0x03, 0xf7, 0xd0, - 0xf8, 0xf5, 0x81, 0x4d, 0x4f, 0x32, 0xf4, 0x4b, 0xac, 0xe9, 0x20, 0x70, - 0xc8, 0xf5, 0xa8, 0x25, 0xab, 0x21, 0x08, 0x06, 0x18, 0x64, 0x94, 0x40, - 0x13, 0x30, 0xb8, 0x43, 0xc2, 0xad, 0x76, 0xf2, 0x46, 0xfb, 0x72, 0xc5, - 0x95, 0x32, 0xed, 0xcc, 0x41, 0x43, 0x06, 0xb3, 0x9e, 0xcd, 0x81, 0x2a, - 0x84, 0x6c, 0x62, 0x46, 0x19, 0xee, 0xb0, 0x5e, 0xde, 0x70, 0xd1, 0x48, - 0xed, 0x68, 0x8b, 0x2c, 0xaf, 0xe4, 0x57, 0x69, 0xfe, 0x1b, 0xd7, 0x29, - 0x25, 0x13, 0xd0, 0xfd, 0x53, 0x84, 0xc4, 0x9c, 0xa1, 0x9c, 0x57, 0x57, - 0x53, 0xe2, 0x3d, 0x29, 0x17, 0x2f, 0xaf, 0xa2, 0x9c, 0x73, 0xec, 0x5a, - 0x65, 0xef, 0xb3, 0x67, 0x61, 0x27, 0xa4, 0x75, 0x06, 0xa4, 0x54, 0xc8, - 0x5e, 0x98, 0xff, 0x44, 0xc0, 0x5b, 0x2f, 0xdc, 0xcc, 0xa3, 0x18, 0x02, - 0x2b, 0x38, 0x25, 0x97, 0xe5, 0x8a, 0xf3, 0xa1, 0x8c, 0xae, 0xc3, 0x3a, - 0x84, 0x8e, 0x84, 0xbe, 0x1f, 0xb1, 0x52, 0xdd, 0x10, 0x2e, 0x89, 0xa8, - 0x5a, 0xed, 0xb1, 0x2a, 0x42, 0x07, 0x91, 0x24, 0xaa, 0x64, 0x84, 0x6f, - 0x53, 0x83, 0x37, 0xfe, 0xfc, 0xbe, 0x31, 0x4f, 0x1e, 0x0d, 0x3b, 0x5c, - 0x1e, 0x85, 0xe2, 0x51, 0xc4, 0xed, 0x9d, 0x73, 0xe6, 0xce, 0x33, 0xe7, - 0xfa, 0x03, 0x5f, 0x1a, 0x4c, 0x89, 0xad, 0x72, 0xd5, 0xc0, 0x59, 0x82, - 0x67, 0x4a, 0xc3, 0x9e, 0xbc, 0x19, 0xc5, 0x78, 0xd4, 0x5e, 0x2d, 0x3e, - 0x7c, 0x13, 0x51, 0x3b, 0x4b, 0xa3, 0x17, 0x68, 0x69, 0x04, 0xb3, 0x6f, - 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, - 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, - 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x92, 0xc8, 0x8e, 0xa7, - 0x2a, 0x12, 0x2a, 0xd8, 0xe9, 0xfc, 0x0e, 0x44, 0x5a, 0x9e, 0x03, 0x5a, - 0x34, 0xc0, 0xbd, 0xb6, 0x22, 0x8a, 0x46, 0xa4, 0xa2, 0xe2, 0x4e, 0x41, - 0x71, 0xf0, 0x62, 0x35, 0xb6, 0x8c, 0xdf, 0x35, 0x48, 0x19, 0x56, 0x64, - 0x7e, 0x25, 0x9b, 0xaa, 0xb5, 0xb5, 0xa9, 0x13, 0x55, 0x93, 0x4c, 0x2b, - 0xe4, 0x74, 0x99, 0x3c, 0xa5, 0xd8, 0x21, 0x13, 0x48, 0x85, 0xdb, 0x1a, - 0xd6, 0x90, 0xd1, 0xfb, 0x4a, 0xb7, 0x65, 0x70, 0x02, 0xf3, 0xa8, 0x12, - 0xa3, 0x6e, 0x9a, 0xbd, 0xce, 0x5d, 0x2b, 0x7f, 0x34, 0xce, 0x01, 0x08, - 0x3f, 0x60, 0x75, 0xac, 0xf9, 0x96, 0x6f, 0x46, 0x39, 0x1f, 0x26, 0x9c, - 0xb4, 0x75, 0xe1, 0xc0, 0xd4, 0xee, 0x65, 0x82, 0xf1, 0x4d, 0x81, 0x09, - 0x23, 0x89, 0xad, 0xbb, 0x7c, 0x23, 0x25, 0x0e, 0xf0, 0xbb, 0xbf, 0x4c, - 0x27, 0x57, 0x37, 0x29, 0x82, 0xc1, 0x82, 0xd0, 0x34, 0x8a, 0x16, 0x0b, - 0xa4, 0x8f, 0xd6, 0x87, 0xda, 0x14, 0x6b, 0x5c, 0xa0, 0x5f, 0xbe, 0x8b, - 0x53, 0x7d, 0x67, 0xc7, 0xaa, 0x6a, 0xd8, 0x11, 0xaf, 0xfc, 0x77, 0x0a, - 0x7b, 0xd6, 0x59, 0xb4, 0x21, 0x3c, 0xc5, 0x8d, 0xe1, 0xbd, 0x9b, 0xc5, - 0x57, 0x5a, 0xc8, 0xf4, 0xbc, 0x65, 0xb1, 0x81, 0x68, 0x97, 0xb0, 0x36, - 0xc4, 0x90, 0x41, 0xad, 0x86, 0xde, 0xab, 0x05, 0x06, 0x91, 0x3e, 0x6f, - 0x46, 0x3b, 0x4d, 0xec, 0x5f, 0x42, 0xf2, 0xf3, 0x64, 0xe8, 0x11, 0xdb, - 0x68, 0xbd, 0x63, 0x1c, 0x12, 0xb8, 0xfc, 0xfb, 0xc0, 0x37, 0x2c, 0x39, - 0x10, 0xa2, 0x0e, 0x26, 0xed, 0xd1, 0x91, 0xd9, 0x73, 0xcc, 0xdd, 0xe8, - 0xa4, 0x3e, 0x95, 0xa7, 0xda, 0xc6, 0x0e, 0x72, 0xf5, 0x7b, 0x5f, 0x9d, - 0x23, 0xbf, 0xfa, 0x1c, 0xec, 0x80, 0x5b, 0x10, 0xab, 0xf1, 0x79, 0x57, - 0x10, 0x99, 0xfc, 0x74, 0x36, 0xc2, 0x3f, 0x0d, 0x2b, 0x6f, 0xbf, 0xac, - 0x9c, 0x06, 0x06, 0xba, 0x5d, 0xe0, 0x3a, 0xe0, 0xdb, 0x1a, 0x8f, 0x84, - 0x7f, 0x67, 0x4c, 0x09, 0xcb, 0x17, 0x85, 0x26, 0xd5, 0x25, 0x38, 0x88, - 0x44, 0x95, 0x8f, 0xd1, 0x9b, 0x19, 0x04, 0xb1, 0x47, 0x8c, 0x81, 0x88, - 0xb7, 0x28, 0x24, 0x86, 0xa7, 0xe8, 0x48, 0x0a, 0x92, 0x30, 0x4c, 0x7c, - 0xbf, 0x4f, 0x75, 0x40, 0xb5, 0xb1, 0x48, 0xb8, 0xf1, 0xed, 0xac, 0x5a, - 0x06, 0xd8, 0x0f, 0x98, 0x36, 0xc9, 0x4d, 0x6e, 0x92, 0xf5, 0x31, 0x7d, - 0xdd, 0xb9, 0x08, 0xbb, 0x2a, 0x49, 0xb5, 0x40, 0xc7, 0xbc, 0x6a, 0x2b, - 0x07, 0xc5, 0x46, 0x7f, 0x71, 0xcc, 0x96, 0xb1, 0xba, 0x4e, 0x65, 0x5a, - 0x1a, 0xdb, 0x05, 0x60, 0xba, 0xc8, 0xb6, 0x51, 0x6b, 0x26, 0x41, 0xff, - 0x1e, 0xbd, 0x84, 0xf9, 0x75, 0x1e, 0x72, 0x1f, 0xf2, 0xf3, 0x53, 0x4b, - 0x39, 0x65, 0x94, 0x80, 0xf9, 0xe6, 0xbe, 0xfd, 0x26, 0x7a, 0x54, 0x74, - 0x9a, 0xbe, 0x2c, 0x3d, 0xe1, 0xb7, 0x81, 0x1d, 0x42, 0xbc, 0x4e, 0x58, - 0x53, 0x6a, 0x9a, 0x52, 0x21, 0x83, 0xa4, 0x34, 0x33, 0x6e, 0x20, 0x6d, - 0x58, 0x54, 0x78, 0x72, 0xf6, 0x54, 0xc2, 0xe4, 0x7f, 0x6b, 0xf6, 0xac, - 0xec, 0x11, 0x3c, 0x22, 0xbd, 0x62, 0x8f, 0x85, 0x69, 0x47, 0xaa, 0x6c, - 0x57, 0x56, 0x24, 0xd0, 0x5b, 0x80, 0x7d, 0x6c, 0xd1, 0x6f, 0xcb, 0xda, - 0xcd, 0x67, 0xa7, 0x0c, 0xa0, 0x6a, 0xb8, 0x67, 0x57, 0x85, 0xb7, 0x0b, - 0xe3, 0xdb, 0x90, 0x52, 0xb7, 0x1c, 0xec, 0x50, 0x1d, 0xeb, 0xd5, 0xde, - 0xa1, 0x8f, 0xff, 0x1f, 0x39, 0x6e, 0x13, 0x69, 0xe4, 0x15, 0xcd, 0x61, - 0x72, 0x16, 0x85, 0xdb, 0xf4, 0xf9, 0xe6, 0x5d, 0x6d, 0x4e, 0x86, 0xc6, - 0xd9, 0xd8, 0x89, 0x30, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, - 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, - 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, - 0xd5, 0x5f, 0xf2, 0x2c, 0xd2, 0x1b, 0x7c, 0x66, 0x29, 0xc3, 0x72, 0xea, - 0x27, 0xcf, 0x57, 0x57, 0xe7, 0x66, 0x11, 0xb6, 0x59, 0x5a, 0xbf, 0x51, - 0x19, 0x3f, 0x95, 0x29, 0x05, 0x37, 0x59, 0x3a, 0x74, 0x12, 0x8d, 0xbc, - 0x11, 0x43, 0x0b, 0xe5, 0x07, 0x33, 0x53, 0x01, 0xa1, 0x73, 0xdb, 0x8a, - 0x0e, 0x67, 0x1b, 0x6d, 0x7e, 0x82, 0xbc, 0x15, 0x65, 0x95, 0x3f, 0xa8, - 0x37, 0x1d, 0x52, 0x4c, 0xad, 0x47, 0xfa, 0xeb, 0x2d, 0xd9, 0x3c, 0xef, - 0x3f, 0xbc, 0xb9, 0xa5, 0xbc, 0xe9, 0xff, 0x2b, 0x1a, 0x86, 0x55, 0x2a, - 0x68, 0xae, 0x5b, 0xd6, 0x13, 0x72, 0xc5, 0xb4, 0xed, 0x15, 0x7e, 0x09, - 0x23, 0x6b, 0x77, 0x57, 0x9e, 0x12, 0x2f, 0xe7, 0x7a, 0x49, 0x4d, 0x38, - 0x9b, 0xa8, 0x19, 0x19, 0x47, 0xaf, 0x2b, 0x78, 0x76, 0x30, 0x3c, 0xc8, - 0xe9, 0xeb, 0xc2, 0x96, 0x4d, 0x44, 0x05, 0x5f, 0xfd, 0xb1, 0xb7, 0x17, - 0x0c, 0x49, 0x35, 0xc7, 0xb2, 0xfd, 0x7c, 0xf6, 0x70, 0x5a, 0x97, 0xff, - 0x00, 0x60, 0x66, 0x89, 0x4e, 0xe8, 0x7e, 0x2b, 0xf7, 0x91, 0x7f, 0x4d, - 0x0e, 0x74, 0xd9, 0x6e, 0x86, 0x9d, 0x7d, 0x41, 0xb1, 0x1f, 0xcd, 0x3a, - 0xeb, 0x67, 0x7a, 0xe6, 0x6c, 0x81, 0x3a, 0x42, 0x8a, 0x74, 0xec, 0x4c, - 0xbd, 0x3c, 0x5b, 0x81, 0xd3, 0x2b, 0x3b, 0xbe, 0x7e, 0xac, 0x47, 0x6d, - 0x86, 0x89, 0xa5, 0x22, 0xfa, 0x44, 0x2a, 0x59, 0x34, 0x77, 0x40, 0x33, - 0xa0, 0xc2, 0xf1, 0x59, 0xfb, 0x41, 0xe9, 0x22, 0xcc, 0x28, 0xc0, 0xb9, - 0xd7, 0x53, 0x65, 0x8f, 0xf4, 0x89, 0x94, 0x63, 0xf3, 0x1b, 0xe3, 0x65, - 0x1c, 0xd0, 0x19, 0x84, 0x3a, 0x8b, 0xe5, 0xf5, 0x19, 0x4a, 0x12, 0x1e, - 0x7b, 0xad, 0x97, 0x5b, 0x1b, 0x52, 0xd6, 0x29, 0xc1, 0xe4, 0x79, 0x87, - 0x55, 0x30, 0xd8, 0x09, 0xdc, 0x8c, 0x0e, 0x9c, 0x26, 0xf4, 0x76, 0xc1, - 0x45, 0xe1, 0x19, 0xc9, 0xa6, 0x76, 0x11, 0xd8, 0xf6, 0x1c, 0x42, 0xa0, - 0x53, 0xe7, 0x06, 0x18, 0x2a, 0x50, 0x61, 0xc5, 0xa5, 0x38, 0x53, 0x31, - 0x89, 0x77, 0x84, 0x1e, 0xcf, 0x5b, 0x13, 0x72, 0xb9, 0x4c, 0x0b, 0xaa, - 0xae, 0x5e, 0x3e, 0x11, 0xc4, 0xb2, 0x7b, 0x2c, 0x9e, 0xf4, 0xf2, 0xa2, - 0x81, 0xb2, 0x9c, 0x58, 0xd4, 0x5e, 0xd9, 0x51, 0x9b, 0xcd, 0xbf, 0x96, - 0x59, 0x00, 0x1d, 0x50, 0xc7, 0x51, 0xde, 0xf0, 0x6d, 0x99, 0x69, 0x93, - 0x4c, 0xd0, 0xdd, 0x81, 0xf7, 0xc3, 0xeb, 0xb7, 0xfa, 0xe9, 0x8b, 0x81, - 0x97, 0xb8, 0xd5, 0x5c, 0x43, 0x79, 0xa3, 0x93, 0x06, 0x9a, 0x31, 0xc2, - 0x6a, 0xfa, 0xb5, 0x21, 0xa4, 0xb1, 0xe3, 0xa8, 0x37, 0x30, 0xb8, 0x4f, - 0x51, 0xc9, 0xaf, 0x40, 0xbb, 0x08, 0x12, 0xc0, 0x1c, 0x2a, 0x36, 0x0b, - 0x41, 0x7f, 0x64, 0x66, 0xd8, 0xcf, 0x1b, 0xc7, 0x2a, 0x81, 0x1c, 0x2c, - 0xde, 0x58, 0x5b, 0x93, 0x38, 0x01, 0xdb, 0x1b, 0xbb, 0x3f, 0x42, 0x87, - 0x4c, 0x82, 0x5b, 0x4c, 0xd6, 0x2b, 0x5e, 0x4e, 0xc6, 0xdf, 0x83, 0xeb, - 0x7f, 0x65, 0x18, 0xfc, 0x6e, 0x71, 0x32, 0x5f, 0x23, 0xc0, 0x5c, 0xb1, - 0x94, 0xf3, 0xfe, 0xf0, 0x41, 0x19, 0xb7, 0xf3, 0x31, 0xfe, 0xfc, 0x54, - 0xa6, 0x43, 0x91, 0x51, 0x7b, 0x2e, 0x21, 0xad, 0xf9, 0xbb, 0xad, 0x13, - 0xb5, 0xe4, 0x71, 0x37, 0x90, 0xbf, 0xa3, 0xa5, 0x5b, 0x65, 0x76, 0x0d, - 0xf4, 0xd2, 0xa5, 0x92, 0xe8, 0xd9, 0x4f, 0xf3, 0x81, 0x51, 0xdf, 0x3a, - 0x2b, 0x38, 0xb0, 0x68, 0xf2, 0xdd, 0x8b, 0x5b, 0x69, 0xd9, 0xd3, 0x07, - 0xbe, 0xd4, 0x66, 0x83, 0x83, 0xbf, 0x6d, 0xaf, 0x3c, 0x25, 0x84, 0x12, - 0x06, 0x7d, 0x74, 0x3e, 0x2c, 0x0d, 0x68, 0x1e, 0xab, 0xaa, 0xaa, 0xaa, - 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, - 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, - 0xbd, 0x08, 0xc3, 0x19, 0xde, 0xcd, 0x5a, 0xcf, 0x1a, 0x0c, 0xc6, 0xa3, - 0xd6, 0xda, 0x9e, 0xa0, 0x33, 0x5b, 0x1c, 0x01, 0xac, 0x38, 0x27, 0x93, - 0x0b, 0x4b, 0x0e, 0xf6, 0xf5, 0xd3, 0x76, 0xc6, 0x73, 0x6d, 0x2f, 0x19, - 0x7f, 0x3e, 0xba, 0x01, 0x74, 0x6b, 0xc6, 0xd4, 0xed, 0xec, 0x7a, 0x8b, - 0x89, 0x3b, 0xad, 0x14, 0x9a, 0xac, 0x58, 0x52, 0x6c, 0x81, 0xb7, 0x59, - 0xe2, 0x60, 0x09, 0xdd, 0x58, 0x82, 0x43, 0x11, 0x21, 0x2a, 0xdf, 0xd1, - 0xb1, 0x1d, 0x20, 0x47, 0x77, 0x8e, 0x4b, 0x69, 0xb5, 0x7f, 0x97, 0x3b, - 0xdc, 0xa0, 0x62, 0xb7, 0x91, 0x47, 0x16, 0x88, 0x26, 0x9f, 0x9b, 0xe3, - 0xdc, 0x4d, 0xfe, 0x5b, 0x9e, 0x88, 0x35, 0x69, 0x9d, 0x07, 0x1c, 0x67, - 0xea, 0x83, 0xef, 0x13, 0xdd, 0x92, 0x54, 0x62, 0x05, 0x6c, 0x44, 0x3f, - 0x84, 0x34, 0x5b, 0xe6, 0x4d, 0x33, 0x10, 0x6a, 0x07, 0xe2, 0x8e, 0x3e, - 0x29, 0xf7, 0x62, 0xf6, 0xbd, 0x5a, 0x9c, 0xaa, 0xa3, 0xa1, 0x6c, 0xf5, - 0x50, 0x77, 0xd3, 0x67, 0x2d, 0x98, 0xf9, 0x49, 0x9f, 0x7e, 0x4d, 0x5f, - 0x14, 0x6d, 0x06, 0x82, 0x57, 0xe5, 0xb2, 0x2d, 0x50, 0x02, 0xf2, 0x2e, - 0x1f, 0xb7, 0x43, 0x8d, 0xcf, 0x7a, 0x40, 0x7e, 0x4c, 0xc1, 0x56, 0x42, - 0x55, 0xfb, 0x44, 0xf5, 0xec, 0xed, 0x26, 0x69, 0x3c, 0xf2, 0x72, 0x16, - 0x21, 0x85, 0x21, 0x34, 0xe1, 0x8f, 0xb8, 0xc2, 0x10, 0x1a, 0xd7, 0xfc, - 0xdf, 0x08, 0x39, 0x54, 0x43, 0xb0, 0xb2, 0x27, 0x21, 0x4c, 0xc4, 0x5d, - 0x4e, 0x5d, 0xd8, 0x7c, 0x86, 0xe5, 0xad, 0xae, 0x30, 0x03, 0x31, 0x09, - 0x10, 0xce, 0x16, 0x9c, 0xf2, 0xcb, 0x62, 0x21, 0xff, 0xc1, 0x47, 0x79, - 0x44, 0x2f, 0x35, 0x62, 0x8f, 0x0d, 0xb7, 0x11, 0xdf, 0x8e, 0x90, 0x12, - 0x04, 0xeb, 0x3a, 0x39, 0xca, 0x9c, 0x78, 0x72, 0xe6, 0xec, 0xcd, 0xad, - 0xc9, 0xb3, 0xa5, 0x28, 0xf9, 0x16, 0x04, 0x67, 0x23, 0x54, 0x2a, 0xf1, - 0xff, 0xe3, 0x35, 0xd8, 0x12, 0xc3, 0xff, 0xb4, 0x63, 0x1f, 0xfa, 0xcb, - 0x12, 0xac, 0x81, 0x0d, 0x61, 0x40, 0xeb, 0x18, 0x23, 0xbe, 0x35, 0x4f, - 0x4c, 0x8e, 0x27, 0x2a, 0x5e, 0x31, 0xda, 0xe7, 0xc6, 0xbe, 0xc7, 0x38, - 0xfe, 0x64, 0xd5, 0xd4, 0x4f, 0xde, 0xe5, 0xd7, 0x0a, 0x68, 0x33, 0x33, - 0x2a, 0x8e, 0xa6, 0xa4, 0x15, 0x8a, 0x38, 0x2b, 0x1c, 0x49, 0x3f, 0xa9, - 0xea, 0xed, 0xd1, 0xdb, 0xd3, 0x8b, 0x09, 0x8b, 0xcc, 0x36, 0x81, 0x63, - 0x6f, 0xa0, 0x56, 0x1b, 0x14, 0x74, 0x77, 0x2e, 0x51, 0xf5, 0x60, 0xc5, - 0xb0, 0x7b, 0x7d, 0xf4, 0xf7, 0x31, 0x1c, 0xcb, 0xa2, 0x89, 0x07, 0xc1, - 0x94, 0x04, 0x8f, 0x17, 0x8c, 0x5f, 0x83, 0xb2, 0x1c, 0x49, 0xda, 0x11, - 0xe7, 0x22, 0xc5, 0x06, 0x74, 0xa5, 0x7b, 0x9b, 0x79, 0xd4, 0xb8, 0xe8, - 0x9b, 0x0a, 0x68, 0x7c, 0xc2, 0x3d, 0x95, 0x08, 0xe6, 0x58, 0x63, 0x33, - 0xf2, 0x83, 0x65, 0xd0, 0x0a, 0x0d, 0xcf, 0x25, 0x6b, 0x10, 0x45, 0x0c, - 0xa1, 0x20, 0x87, 0x9c, 0x63, 0x1b, 0xb5, 0xee, 0x68, 0x7f, 0x4c, 0x1b, - 0x95, 0x2b, 0x1b, 0xca, 0x0b, 0x55, 0x9a, 0x94, 0x5c, 0x86, 0xce, 0xa0, - 0xe2, 0x77, 0xc9, 0x65, 0xa1, 0x13, 0x95, 0x64, 0x8f, 0x0e, 0x9d, 0x95, - 0x3b, 0xa8, 0x3d, 0x2c, 0x0f, 0xfd, 0x11, 0x3f, 0x3e, 0x10, 0x60, 0x94, - 0x32, 0x0c, 0x23, 0xce, 0x83, 0x2a, 0xdf, 0x13, 0xba, 0x90, 0x5c, 0xe5, - 0xeb, 0x77, 0x44, 0x4b, 0xca, 0x68, 0x6c, 0xaf, 0xdc, 0x23, 0xb5, 0xfd, - 0xbf, 0x88, 0x66, 0xd0, 0xff, 0xb5, 0x64, 0x6c, 0xd3, 0xe2, 0x92, 0x8b, - 0xe1, 0xda, 0x27, 0x21, 0x9b, 0x10, 0xc8, 0xbb, 0x65, 0x5b, 0xfe, 0x07, - 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, - 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, - 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x00, 0x00, 0x66, 0xeb, - 0x22, 0x02, 0x75, 0xc8, 0x14, 0xfc, 0xf9, 0x17, 0x6d, 0xf6, 0x8a, 0xa1, - 0x40, 0x89, 0xd4, 0xd5, 0xe5, 0x83, 0x1e, 0xeb, 0x1f, 0xa9, 0xf1, 0xae, - 0x3e, 0xc5, 0xd0, 0x09, 0xea, 0xa2, 0x7f, 0xf1, 0xdc, 0x08, 0x23, 0x99, - 0x24, 0x8e, 0x12, 0xa6, 0x8e, 0x8a, 0x6a, 0xf9, 0xfc, 0x46, 0x6d, 0x6a, - 0xfd, 0xe2, 0x8b, 0x07, 0xd3, 0xfe, 0xf7, 0x3e, 0x42, 0x48, 0x37, 0x24, - 0xfc, 0xff, 0x90, 0x6d, 0x40, 0x04, 0x79, 0x0d, 0xf3, 0xaa, 0x78, 0xa2, - 0xc3, 0x96, 0xb4, 0xd3, 0x7b, 0x41, 0xc7, 0xec, 0x3d, 0x98, 0x15, 0xa8, - 0x6c, 0x62, 0x44, 0xa7, 0x78, 0x3c, 0x7c, 0x3c, 0x66, 0x52, 0x0a, 0xe8, - 0x8b, 0x6c, 0x8d, 0x41, 0x41, 0x46, 0xc9, 0xfd, 0xf5, 0xff, 0xd4, 0x3b, - 0x34, 0x25, 0xd3, 0x1c, 0xc0, 0xbb, 0x8d, 0x55, 0xbe, 0xfb, 0xc8, 0x6e, - 0xb2, 0xfc, 0x4a, 0x72, 0x66, 0x62, 0x89, 0x7d, 0x18, 0x0e, 0xb4, 0x25, - 0x47, 0x60, 0xe1, 0xf2, 0x1c, 0xb2, 0x40, 0x0b, 0x4a, 0xc4, 0xa9, 0x51, - 0x8f, 0x21, 0xc2, 0x51, 0x25, 0x48, 0x45, 0x61, 0x63, 0xc9, 0x9f, 0x71, - 0x0f, 0x00, 0x64, 0x56, 0x63, 0x64, 0xd9, 0xfc, 0xfe, 0xd6, 0xc9, 0x8a, - 0xd5, 0x50, 0xc0, 0xbf, 0x00, 0xf3, 0x71, 0x7d, 0x1f, 0x81, 0x34, 0x45, - 0xdb, 0xc9, 0xcb, 0xe4, 0x86, 0x1a, 0x1c, 0x02, 0xbe, 0x8e, 0x16, 0x92, - 0xd4, 0xc1, 0x30, 0x61, 0x20, 0xb1, 0xda, 0x51, 0xf4, 0xef, 0x80, 0xeb, - 0xb8, 0x70, 0xde, 0x6b, 0x69, 0xda, 0xa8, 0xce, 0x25, 0x88, 0x2c, 0x92, - 0x18, 0x6d, 0xd1, 0x18, 0xc2, 0x22, 0x8e, 0xe0, 0x8d, 0x28, 0x7a, 0x0e, - 0x7d, 0xc8, 0x50, 0x7f, 0x72, 0xd4, 0xaa, 0xc6, 0xe3, 0x0c, 0x6c, 0xab, - 0xcb, 0x3b, 0xe5, 0x93, 0x90, 0x4f, 0x22, 0xb7, 0x7f, 0x5b, 0x4c, 0x20, - 0x0e, 0x1d, 0xef, 0x0d, 0x3c, 0x98, 0xbc, 0xa2, 0xc2, 0xe3, 0xdf, 0x48, - 0x79, 0xb6, 0xac, 0x96, 0xb4, 0x94, 0xad, 0x64, 0x27, 0x29, 0x63, 0xd7, - 0x8b, 0x07, 0x51, 0xf4, 0x30, 0xaf, 0x99, 0x48, 0x37, 0x5f, 0x3e, 0x20, - 0xad, 0xee, 0xf4, 0x0e, 0xf1, 0x01, 0x00, 0xef, 0xf8, 0x71, 0xf9, 0xb3, - 0xba, 0x5f, 0x38, 0xa3, 0xd7, 0x39, 0x7b, 0xf9, 0x5f, 0xd6, 0x8e, 0xb1, - 0x93, 0x32, 0xcf, 0x46, 0x57, 0x54, 0x67, 0x60, 0xb4, 0xbf, 0x1d, 0x85, - 0xc9, 0x5a, 0x5b, 0xb5, 0xfb, 0x49, 0x99, 0xff, 0xc9, 0xcb, 0xa9, 0x15, - 0xdb, 0x9c, 0xee, 0xba, 0x2f, 0xee, 0xd1, 0xbb, 0x45, 0xe3, 0x3b, 0x0c, - 0x38, 0x30, 0x49, 0x92, 0x7a, 0xeb, 0x10, 0x78, 0xeb, 0x9f, 0xe6, 0xe0, - 0x41, 0xe0, 0x2c, 0xe7, 0xe9, 0xbc, 0x8f, 0x8b, 0x84, 0xda, 0x31, 0x72, - 0xab, 0x37, 0x84, 0x49, 0x4f, 0xd0, 0x23, 0x40, 0xba, 0x43, 0x31, 0x61, - 0x04, 0x3b, 0x94, 0xd7, 0x3b, 0xdd, 0x49, 0xe5, 0x34, 0x5d, 0x33, 0xfc, - 0xb2, 0x5c, 0x95, 0x92, 0x95, 0x64, 0x72, 0x61, 0xde, 0xec, 0x36, 0x53, - 0x07, 0xed, 0xf5, 0x0b, 0x3a, 0x68, 0x43, 0x14, 0x1a, 0x86, 0xc8, 0xb5, - 0xf3, 0xc0, 0x69, 0x0b, 0x47, 0x6c, 0x77, 0xad, 0xb0, 0x49, 0xb0, 0x4a, - 0x34, 0x6b, 0x41, 0x57, 0x4c, 0x51, 0x18, 0xfe, 0xeb, 0x25, 0xcb, 0x55, - 0xd0, 0x57, 0xec, 0x41, 0xa0, 0x2c, 0x74, 0x3a, 0xa0, 0x29, 0x5f, 0x6d, - 0xa5, 0xe5, 0x31, 0x65, 0xbb, 0x5f, 0x6b, 0x97, 0x56, 0x5e, 0x7b, 0xaa, - 0x9c, 0xd7, 0x55, 0x1e, 0x14, 0xda, 0x62, 0x17, 0x5e, 0xfe, 0xef, 0xd0, - 0x9d, 0xa1, 0xf8, 0x55, 0x19, 0x85, 0xe7, 0xb4, 0xc4, 0x2d, 0x4c, 0xe6, - 0x2b, 0x63, 0x5a, 0xba, 0x83, 0x57, 0x66, 0xf6, 0x0c, 0xca, 0xdd, 0xbb, - 0x8d, 0x3c, 0xbf, 0x3b, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, - 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, - 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, - 0x00, 0x80, 0x94, 0xa1, 0xb6, 0x10, 0xb3, 0x5e, 0xf4, 0x62, 0xb6, 0x24, - 0x09, 0x0b, 0xf6, 0x0a, 0x25, 0x18, 0xcb, 0x76, 0x03, 0x06, 0xb0, 0x19, - 0xa7, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x57, 0x3b, 0x4f, - 0xec, 0xa1, 0x0a, 0xaf, 0x76, 0x3b, 0x53, 0xe6, 0xc5, 0xc9, 0x3d, 0xd0, - 0x79, 0xe9, 0xe2, 0x62, 0x19, 0xe0, 0x09, 0x33, 0x25, 0xca, 0x33, 0x93, - 0xe0, 0xef, 0x13, 0x15, 0x18, 0xdd, 0x7c, 0x42, 0x7a, 0xad, 0xb9, 0x75, - 0xf5, 0xf7, 0x91, 0x73, 0x52, 0x1f, 0x65, 0xe3, 0x0d, 0x5c, 0x63, 0x75, - 0x19, 0x1f, 0x2c, 0x23, 0x9a, 0x2e, 0xd0, 0x4c, 0x82, 0xbf, 0x4f, 0x54, - 0xbc, 0xd9, 0xf8, 0x2f, 0x46, 0xc2, 0xda, 0x16, 0x0c, 0x11, 0xf7, 0x3d, - 0xc5, 0xc0, 0xc5, 0x76, 0xe8, 0x01, 0x40, 0xc5, 0x2d, 0x69, 0x1f, 0x4c, - 0x28, 0x45, 0x1a, 0x79, 0xe7, 0x24, 0x3e, 0x03, 0x9e, 0x58, 0x54, 0x06, - 0x47, 0x6e, 0x04, 0x41, 0x57, 0xb0, 0xed, 0x67, 0x8f, 0x81, 0xad, 0x92, - 0x94, 0x91, 0x35, 0xc6, 0x6c, 0xd3, 0x89, 0xdf, 0xcb, 0xc8, 0x4a, 0x4e, - 0xeb, 0x60, 0x81, 0x35, 0xd9, 0x49, 0x22, 0xd4, 0xcb, 0x6d, 0x53, 0xdb, - 0xa2, 0xec, 0x39, 0x15, 0x8b, 0x18, 0x03, 0xfb, 0x82, 0xb1, 0x05, 0xa9, - 0x13, 0x46, 0xc5, 0x85, 0x41, 0xbd, 0x3a, 0xc1, 0x6e, 0x7b, 0x96, 0x2c, - 0xb2, 0x53, 0x16, 0xf8, 0x23, 0xf1, 0x4f, 0xa5, 0xfa, 0xfa, 0x0d, 0xbe, - 0xaf, 0x48, 0x50, 0x37, 0x2c, 0x1e, 0x6d, 0x8e, 0xf3, 0xe8, 0x96, 0x06, - 0xe8, 0x04, 0x7a, 0x82, 0xdd, 0xf6, 0x2c, 0x59, 0x94, 0x4d, 0x11, 0x59, - 0x3f, 0x7a, 0xe5, 0xb3, 0x92, 0x47, 0x6b, 0x17, 0x2f, 0x46, 0x82, 0x3e, - 0x1a, 0x95, 0x80, 0xef, 0x8d, 0xe2, 0xc4, 0x89, 0x4a, 0x25, 0x31, 0x5a, - 0xf6, 0x73, 0xd0, 0x66, 0xc9, 0x96, 0xca, 0x2c, 0xe7, 0xba, 0x6d, 0xea, - 0x9d, 0xab, 0x22, 0xf7, 0x51, 0x53, 0x8b, 0xf0, 0xbe, 0x9d, 0x33, 0xf6, - 0x06, 0x27, 0xfc, 0xd5, 0x27, 0x44, 0x04, 0x88, 0x54, 0xa1, 0x7f, 0x5d, - 0xdc, 0xcc, 0x7d, 0x9b, 0x73, 0xc0, 0xf8, 0xbe, 0x9a, 0xe2, 0x1e, 0x24, - 0x14, 0x63, 0x9f, 0x73, 0xa2, 0x05, 0x24, 0x57, 0xd7, 0xca, 0xb2, 0xde, - 0x8e, 0xc7, 0x41, 0xd0, 0x81, 0x37, 0xe2, 0x4a, 0x09, 0xab, 0x6d, 0x6c, - 0x30, 0x2e, 0x36, 0xf0, 0x13, 0x9d, 0x3e, 0x1a, 0x49, 0xbf, 0xf8, 0x30, - 0x8b, 0xb4, 0x8e, 0x12, 0x9e, 0x4e, 0xfe, 0x95, 0xa8, 0x54, 0xbe, 0xce, - 0x8b, 0x9e, 0xb0, 0x23, 0x41, 0x08, 0xe1, 0x0e, 0x9c, 0xfc, 0x94, 0x9f, - 0x31, 0xda, 0xcf, 0x21, 0x66, 0x0e, 0x03, 0x23, 0xba, 0xf2, 0x6e, 0x41, - 0xe1, 0x97, 0xe2, 0x0d, 0x72, 0xf6, 0x49, 0x88, 0x6a, 0x5e, 0xd4, 0x4a, - 0xa9, 0x8a, 0x38, 0x69, 0x49, 0xb6, 0x07, 0x5f, 0x95, 0x36, 0x42, 0xa3, - 0xc9, 0x8c, 0xb4, 0x4c, 0xf0, 0xf1, 0x9a, 0x49, 0x82, 0x2e, 0xa5, 0x11, - 0x7b, 0x3c, 0xb2, 0x21, 0xda, 0x38, 0x04, 0x6e, 0x97, 0x6d, 0x76, 0xbd, - 0x4a, 0x78, 0x82, 0xe5, 0x9f, 0x15, 0x24, 0xb8, 0xb3, 0x1a, 0xec, 0x5a, - 0x84, 0x89, 0x2b, 0x1c, 0x8e, 0x00, 0xc4, 0x01, 0x7f, 0x1e, 0x3c, 0x0b, - 0x5d, 0x8c, 0xe2, 0x3d, 0x50, 0xfe, 0x17, 0x15, 0x2d, 0xf6, 0xcd, 0x9c, - 0x47, 0x40, 0xdf, 0x76, 0x83, 0x64, 0x03, 0xfa, 0x85, 0x67, 0xd5, 0xd4, - 0x41, 0xb2, 0x6c, 0x69, 0xf1, 0x6c, 0xaa, 0x3c, 0xf4, 0x7a, 0xe9, 0x46, - 0x05, 0xbd, 0x58, 0x67, 0x50, 0xa9, 0xef, 0x51, 0xa8, 0xdd, 0xda, 0x63, - 0x4a, 0xc2, 0x02, 0x33, 0x08, 0x80, 0x40, 0x7c, 0xe1, 0x1f, 0xc8, 0x16, - 0xb2, 0x09, 0x80, 0xde, 0x57, 0xbd, 0x87, 0x1a, 0xab, 0xaa, 0xaa, 0xaa, - 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, - 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, - 0xbd, 0x08, 0xc3, 0x19, 0x00, 0x58, 0xa6, 0xab, 0xd0, 0x6b, 0x7c, 0x98, - 0x75, 0x5c, 0x91, 0xe2, 0x76, 0x7a, 0x43, 0x17, 0x8c, 0x88, 0xb7, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xd2, 0x95, 0xfd, 0x2d, 0x7f, 0x48, 0x99, 0x98, 0x0f, 0x63, 0x91, 0xad, - 0xb4, 0x6f, 0xfa, 0x94, 0x6f, 0x9c, 0x36, 0x5a, 0x04, 0x30, 0xab, 0x04, - 0xb3, 0xb8, 0x9b, 0xb9, 0xa1, 0xcf, 0x3b, 0x3f, 0xd2, 0xa9, 0x30, 0xf1, - 0x93, 0x78, 0xb4, 0xb9, 0x22, 0x68, 0x6f, 0x9a, 0x6a, 0xb2, 0xf1, 0x36, - 0x6c, 0xe7, 0xa1, 0x88, 0x04, 0x30, 0xab, 0x04, 0xb3, 0xb8, 0x9b, 0xb9, - 0xa1, 0xcf, 0x3b, 0x3f, 0xe0, 0x3d, 0xa5, 0x28, 0x40, 0x9d, 0xe1, 0xc1, - 0xfc, 0x52, 0x4a, 0x99, 0x42, 0xc3, 0xaa, 0x2f, 0x26, 0x8e, 0xa8, 0x43, - 0x8b, 0x9d, 0x6d, 0x36, 0x98, 0x6c, 0xdd, 0xc8, 0x3b, 0x27, 0xf1, 0x19, - 0xb2, 0xdb, 0xbc, 0xab, 0xe7, 0x56, 0x1e, 0x25, 0xd6, 0xe3, 0xb2, 0xee, - 0x10, 0x48, 0xea, 0x39, 0x18, 0x7b, 0x7d, 0x98, 0x90, 0xcd, 0x18, 0x3b, - 0x4b, 0x25, 0x79, 0x82, 0xdd, 0xf6, 0x2c, 0x59, 0x63, 0x37, 0xa8, 0xf1, - 0xdb, 0xd7, 0x7d, 0x31, 0x5b, 0xfd, 0x72, 0x71, 0xc8, 0xb8, 0xfb, 0x44, - 0x3e, 0x43, 0x54, 0x86, 0x17, 0xc3, 0xf7, 0x42, 0x4e, 0xcd, 0x54, 0xdb, - 0x67, 0x46, 0x6c, 0x3e, 0x77, 0xf3, 0x02, 0xe8, 0x22, 0xf3, 0xed, 0x98, - 0x72, 0xcc, 0x03, 0x04, 0x5c, 0x37, 0xf3, 0x28, 0x3e, 0x70, 0x95, 0x44, - 0xb8, 0x7b, 0xce, 0x8d, 0x9f, 0x42, 0x85, 0x0f, 0x5a, 0xdc, 0x17, 0x62, - 0x3d, 0x4c, 0xf5, 0x3d, 0xe5, 0x08, 0x83, 0x39, 0x22, 0xd3, 0x82, 0x6c, - 0x6d, 0x04, 0xe0, 0x58, 0x80, 0x46, 0x89, 0x46, 0x33, 0xa5, 0x95, 0x90, - 0x91, 0x23, 0x2d, 0x7a, 0x21, 0xad, 0xa6, 0x58, 0x07, 0xf8, 0xc0, 0x13, - 0x98, 0x1b, 0xf0, 0xa3, 0x32, 0xbc, 0x92, 0x57, 0x8d, 0x1c, 0x8f, 0xbd, - 0xc8, 0x8d, 0xdd, 0xfc, 0xad, 0x06, 0x97, 0xc1, 0x8a, 0xbc, 0x92, 0x12, - 0x49, 0x69, 0x7f, 0x2a, 0x77, 0x68, 0x55, 0x4c, 0x6f, 0xa5, 0x86, 0x82, - 0x2d, 0x26, 0x9b, 0x76, 0xb0, 0xb2, 0x0e, 0x4b, 0xf7, 0x5a, 0x98, 0x3a, - 0x94, 0xa6, 0x08, 0x72, 0x95, 0xd8, 0x10, 0x7e, 0xfb, 0x8d, 0xd1, 0x1c, - 0x6f, 0x9a, 0x83, 0x8a, 0xf0, 0xf2, 0xdc, 0xbf, 0x62, 0xba, 0x61, 0x8f, - 0x7a, 0x76, 0xd8, 0x15, 0xb7, 0x45, 0x86, 0x36, 0xdf, 0x7b, 0x20, 0x31, - 0xe8, 0xc4, 0x00, 0x5b, 0xd0, 0x34, 0xeb, 0x51, 0xd6, 0xea, 0x99, 0x49, - 0x90, 0x1c, 0x3d, 0x0f, 0xc6, 0xfc, 0x12, 0xf7, 0x95, 0x4e, 0x8c, 0x3d, - 0x40, 0x42, 0x88, 0xdc, 0x6c, 0xe0, 0x77, 0x75, 0x65, 0xf2, 0xf2, 0xfd, - 0xfb, 0x69, 0xca, 0x59, 0xcf, 0x03, 0x2b, 0x42, 0xc9, 0x34, 0x74, 0x47, - 0x96, 0xdd, 0xaa, 0x80, 0x9a, 0x8a, 0x21, 0x72, 0x35, 0x41, 0x71, 0x2f, - 0x88, 0x1b, 0xae, 0xde, 0x58, 0xc4, 0x10, 0x6f, 0x77, 0x4c, 0x5d, 0x41, - 0xee, 0xc9, 0x5d, 0x38, 0x7b, 0x74, 0x16, 0xec, 0x6d, 0xc8, 0x34, 0xb2, - 0x5e, 0xb9, 0xc7, 0x55, 0xed, 0x2c, 0x07, 0x28, 0xd5, 0xba, 0x92, 0x6c, - 0xe5, 0x73, 0xc1, 0x8d, 0x5a, 0xed, 0xfc, 0x1a, 0x94, 0xa3, 0x63, 0x8d, - 0xad, 0x14, 0xa9, 0x6c, 0x26, 0x94, 0x9e, 0x40, 0x56, 0x4a, 0x31, 0xe1, - 0x0a, 0x80, 0x9e, 0x93, 0xab, 0x94, 0x30, 0xd3, 0x5b, 0x4f, 0x19, 0x71, - 0xc0, 0xc4, 0x41, 0x40, 0xbd, 0xef, 0xb2, 0xbb, 0x9d, 0x4c, 0x90, 0xba, - 0x15, 0x3a, 0x9d, 0xc4, 0x34, 0x01, 0xca, 0xdb, 0xa5, 0x74, 0x9d, 0x9d, - 0x16, 0xbc, 0x22, 0x8d, 0x01, 0x19, 0x97, 0x76, 0x91, 0x23, 0x83, 0x30, - 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, - 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, - 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x00, 0x02, 0x48, 0xa6, - 0x29, 0xa2, 0x89, 0xff, 0x60, 0xc3, 0x15, 0x9a, 0x31, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xbb, 0xf9, 0x4c, 0x72, 0x3f, 0x24, 0x66, 0x2f, - 0xc2, 0x64, 0xf4, 0xf3, 0x2c, 0x3e, 0xf8, 0x15, 0xed, 0x6a, 0x84, 0x93, - 0x06, 0xc8, 0x00, 0x87, 0x0c, 0x95, 0x69, 0x96, 0x72, 0xb7, 0xd9, 0x5e, - 0x5e, 0x06, 0x30, 0x29, 0x8e, 0x45, 0x36, 0x9a, 0xdd, 0xb5, 0x07, 0x43, - 0x8a, 0xfc, 0xda, 0x34, 0x79, 0x21, 0x93, 0x4e, 0x07, 0x50, 0x1d, 0x5d, - 0x2a, 0x89, 0x03, 0xe0, 0x62, 0xaf, 0x63, 0x69, 0x4d, 0xc8, 0x96, 0x6f, - 0x66, 0x16, 0x64, 0x2f, 0xce, 0x38, 0x04, 0x99, 0x15, 0x83, 0x9d, 0x5e, - 0xab, 0xa5, 0xbb, 0xab, 0xf3, 0xbc, 0xd0, 0x1e, 0x8f, 0x74, 0x4a, 0xbe, - 0x9c, 0x38, 0x33, 0x6a, 0x3c, 0x4b, 0xa7, 0x76, 0x1b, 0x91, 0x64, 0xe0, - 0x43, 0x25, 0x12, 0xef, 0xd5, 0x6f, 0x60, 0x88, 0xdd, 0x29, 0xe4, 0x08, - 0xe0, 0x29, 0x84, 0xe0, 0xf3, 0x5f, 0x91, 0x9c, 0xd6, 0xc1, 0x02, 0x6b, - 0x4f, 0xc7, 0x85, 0x9e, 0xf0, 0xfd, 0x74, 0x57, 0x88, 0xa9, 0x87, 0x44, - 0xdf, 0xef, 0x17, 0x62, 0x77, 0x0a, 0x39, 0x02, 0x78, 0x0a, 0x21, 0xf8, - 0xfc, 0x57, 0x24, 0xa7, 0x75, 0xb0, 0xc0, 0x1a, 0xd9, 0x8e, 0x90, 0xc0, - 0xe9, 0xdc, 0xcd, 0xb5, 0x38, 0x53, 0x25, 0xa1, 0x42, 0xd9, 0xd2, 0xf8, - 0xc6, 0x66, 0xb4, 0x03, 0xc8, 0x66, 0x8c, 0x9d, 0xa5, 0x92, 0x3c, 0xc1, - 0x6e, 0x7b, 0x96, 0x2c, 0xc1, 0xe9, 0xbc, 0x1f, 0x76, 0x02, 0xb6, 0x67, - 0x6c, 0xd0, 0x19, 0xab, 0x3e, 0x7c, 0xa4, 0x89, 0xd8, 0x35, 0xa6, 0x71, - 0x71, 0xcc, 0xd4, 0xe2, 0x12, 0x46, 0x1d, 0x20, 0xd2, 0x6f, 0x24, 0x63, - 0x43, 0xcf, 0xbe, 0x87, 0xae, 0x5d, 0xfd, 0x2e, 0x24, 0x28, 0x23, 0x11, - 0x55, 0x39, 0x3d, 0xfb, 0xfe, 0xc4, 0x2a, 0xeb, 0xda, 0x10, 0x34, 0x61, - 0x8f, 0x2b, 0xc8, 0x3a, 0x16, 0x27, 0x7e, 0x41, 0x89, 0xee, 0x80, 0x44, - 0x5a, 0x03, 0x46, 0xa0, 0x70, 0x7b, 0x3b, 0xb9, 0x44, 0x01, 0xce, 0xe5, - 0xbf, 0x9b, 0x7a, 0x43, 0xe5, 0x3e, 0xe5, 0x3a, 0x2e, 0xfa, 0x3f, 0xfa, - 0x89, 0xf5, 0xf9, 0x09, 0x4c, 0xcc, 0x39, 0x30, 0x7e, 0x49, 0xe2, 0xd8, - 0xf2, 0xd3, 0xac, 0x6d, 0xa4, 0x19, 0x83, 0xdd, 0x19, 0xc8, 0xe1, 0x0a, - 0x12, 0xef, 0xd6, 0xd1, 0x33, 0xe3, 0x4d, 0xdb, 0x1e, 0x0e, 0x0b, 0x47, - 0x44, 0xa0, 0x43, 0x99, 0xbb, 0x09, 0xef, 0x38, 0x67, 0x4f, 0xf8, 0x8e, - 0x33, 0x0a, 0x17, 0xcb, 0xc6, 0xf7, 0xe0, 0xae, 0x2d, 0x3e, 0xf1, 0x54, - 0xd6, 0xef, 0x0b, 0xfe, 0x15, 0xae, 0xec, 0x64, 0xbb, 0x17, 0x2b, 0xa5, - 0x11, 0x2f, 0xc7, 0xca, 0x0f, 0x3b, 0xcd, 0xd2, 0x58, 0xab, 0x29, 0x79, - 0x43, 0xd8, 0x65, 0xfb, 0x8e, 0x55, 0x6a, 0x0b, 0xc2, 0x50, 0x27, 0xb4, - 0x38, 0x82, 0xdd, 0x5e, 0x9f, 0x47, 0xfc, 0x33, 0x6a, 0xe2, 0x07, 0x57, - 0xbb, 0x92, 0x0c, 0x91, 0xd8, 0x88, 0xae, 0xb7, 0xd8, 0xff, 0x34, 0x51, - 0xbb, 0xa6, 0x3f, 0x1f, 0x1a, 0xc7, 0x3e, 0x39, 0x04, 0x0d, 0xbf, 0x6a, - 0xfd, 0x3d, 0x4d, 0x59, 0xeb, 0x33, 0x0c, 0x86, 0x5c, 0x73, 0xaa, 0xfc, - 0x9e, 0x0e, 0x48, 0xab, 0x20, 0x9c, 0x60, 0xeb, 0x1e, 0xe3, 0x5e, 0x6a, - 0x74, 0x22, 0x80, 0xa1, 0x26, 0xa1, 0x98, 0x34, 0x20, 0xb8, 0x7b, 0xfe, - 0xde, 0x5f, 0x8d, 0x55, 0x1c, 0xb1, 0x6d, 0xb5, 0xde, 0x5d, 0x4f, 0xf7, - 0x12, 0x62, 0x2a, 0x64, 0xc9, 0x4c, 0xd7, 0x23, 0xf1, 0xdf, 0xaf, 0x2c, - 0x6f, 0xf3, 0xc3, 0x05, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, - 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, - 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, - 0x60, 0x15, 0xe6, 0xf2, 0x9e, 0x6e, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x05, 0x8f, 0xd0, - 0xac, 0x48, 0x96, 0xb9, 0x8a, 0xf6, 0xcf, 0x45, 0x31, 0xf2, 0xda, 0x34, - 0x79, 0x21, 0x93, 0x4e, 0x07, 0x50, 0x1d, 0x5d, 0x2a, 0x89, 0x03, 0xe0, - 0x62, 0xaf, 0x63, 0x69, 0x33, 0x4e, 0x92, 0xf6, 0x93, 0x05, 0x9e, 0x48, - 0x74, 0x65, 0x2e, 0xba, 0xd1, 0xb1, 0xe2, 0x1e, 0x8c, 0xb6, 0x0e, 0xbb, - 0x00, 0x88, 0x1c, 0xd6, 0x1d, 0xf4, 0x99, 0x49, 0xf0, 0xf7, 0x89, 0x0a, - 0xe1, 0xbb, 0x81, 0x78, 0x8a, 0x03, 0x2d, 0xc3, 0xe0, 0x3a, 0xc7, 0x70, - 0x12, 0x3d, 0x68, 0x1b, 0xc0, 0x51, 0x91, 0x64, 0x7c, 0x3a, 0xcc, 0xfc, - 0xaf, 0x10, 0xc0, 0x60, 0x17, 0x80, 0xfc, 0x59, 0xf9, 0xa8, 0x5e, 0xa9, - 0xa3, 0xb4, 0xe7, 0xf6, 0xeb, 0xc0, 0x26, 0x76, 0xed, 0xc8, 0xd2, 0xf8, - 0xc6, 0x66, 0xb4, 0x03, 0xc8, 0x66, 0x8c, 0x9d, 0xa5, 0x92, 0x3c, 0xc1, - 0x6e, 0x7b, 0x96, 0x2c, 0xf2, 0x9b, 0xdf, 0xd3, 0x11, 0x39, 0x5a, 0xcf, - 0xd7, 0x81, 0x4d, 0xec, 0xda, 0x91, 0xa5, 0xf1, 0x8d, 0xcd, 0x68, 0x07, - 0x90, 0xcd, 0x18, 0x3b, 0x4b, 0x25, 0x79, 0x82, 0xdd, 0xf6, 0x2c, 0x59, - 0xa9, 0x87, 0xb4, 0x06, 0x4f, 0x74, 0xdf, 0x66, 0x62, 0xf3, 0x3a, 0xb1, - 0x62, 0x5b, 0x5d, 0xcb, 0x27, 0xae, 0xbd, 0x00, 0x28, 0xae, 0xb5, 0x52, - 0x54, 0x1d, 0x0c, 0x8d, 0x7c, 0xe5, 0xea, 0x08, 0x6d, 0xf6, 0xc9, 0x7f, - 0xbe, 0x98, 0xe3, 0xd8, 0xe7, 0x4f, 0xc3, 0x4e, 0x73, 0x7f, 0x7a, 0xba, - 0xbf, 0x63, 0xa2, 0x36, 0x95, 0x36, 0x2d, 0x89, 0x61, 0x76, 0x6d, 0x08, - 0x63, 0x80, 0xd4, 0x71, 0x45, 0x44, 0x44, 0x44, 0x49, 0x9f, 0xf4, 0x49, - 0xa4, 0x83, 0x4e, 0xfa, 0x95, 0x0a, 0xe9, 0xc7, 0xca, 0x39, 0x2b, 0x8f, - 0x60, 0x78, 0x1c, 0x4b, 0x15, 0xc8, 0x0b, 0x28, 0x17, 0x9b, 0xdc, 0x4f, - 0x23, 0x22, 0x22, 0x22, 0x68, 0xb0, 0xdb, 0x6d, 0x32, 0xe1, 0xb0, 0xdc, - 0x12, 0xc6, 0x52, 0x07, 0xd8, 0xa5, 0xf7, 0x3f, 0xfe, 0x33, 0x0a, 0xad, - 0x3c, 0x8a, 0x12, 0xa0, 0xe7, 0x22, 0xad, 0x5f, 0x28, 0x7d, 0xd2, 0xa7, - 0x6d, 0x9d, 0x0f, 0xf1, 0xb5, 0xd6, 0x5f, 0xfc, 0x5a, 0x7c, 0xad, 0xf0, - 0x54, 0xd4, 0x26, 0x9e, 0x67, 0x2d, 0xec, 0x52, 0x6e, 0x1a, 0x1e, 0x07, - 0xc5, 0xf1, 0x1f, 0x10, 0xbf, 0xee, 0xeb, 0x1e, 0x24, 0xd3, 0x9c, 0x86, - 0x26, 0x65, 0xe7, 0x33, 0xab, 0xeb, 0x4e, 0xeb, 0xfa, 0xff, 0xde, 0x6c, - 0x73, 0xad, 0x85, 0x0d, 0xb3, 0x63, 0x34, 0x16, 0x38, 0xe6, 0xdf, 0x04, - 0xb7, 0x2c, 0x98, 0xcf, 0xd4, 0xc6, 0x03, 0x6f, 0x4a, 0x7d, 0xd9, 0xa9, - 0x36, 0x80, 0x1f, 0x02, 0xe3, 0x44, 0x1e, 0x64, 0x9e, 0x64, 0x4f, 0x0a, - 0xad, 0x9a, 0xb5, 0xd5, 0xff, 0xef, 0x99, 0x70, 0x36, 0x9e, 0xf9, 0x8b, - 0x75, 0x81, 0x4a, 0xab, 0xb6, 0xe7, 0xd8, 0xc2, 0xab, 0xc7, 0x78, 0xba, - 0x15, 0x3d, 0x6d, 0x2d, 0x71, 0xb0, 0xbe, 0xd3, 0x88, 0xd9, 0x7d, 0xae, - 0x34, 0xb1, 0x5f, 0x1d, 0x9c, 0x87, 0xfa, 0x47, 0xc6, 0x62, 0xa1, 0x56, - 0x0d, 0xd4, 0x33, 0x43, 0x16, 0xf6, 0xf6, 0xa7, 0x55, 0x4b, 0x56, 0x82, - 0x42, 0xf1, 0xdd, 0x96, 0x46, 0x36, 0x0f, 0x0d, 0xc6, 0x1f, 0xd5, 0x18, - 0xc5, 0xb8, 0xe3, 0x4d, 0x9f, 0x02, 0x33, 0x2b, 0xa1, 0x7e, 0x09, 0x05, - 0xb5, 0x67, 0x43, 0xe5, 0xac, 0xb3, 0x13, 0x74, 0x3d, 0xf7, 0x63, 0x44, - 0xb8, 0x86, 0xe7, 0xf2, 0x5c, 0x5f, 0x3e, 0x71, 0xab, 0xaa, 0xaa, 0xaa, - 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, - 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, - 0xbd, 0x08, 0xc3, 0x19, 0x75, 0x66, 0x66, 0x66, 0x99, 0x99, 0x99, 0x99, - 0xcc, 0x78, 0xcc, 0xcc, 0x33, 0x87, 0xbf, 0x10, 0x01, 0xf8, 0xb9, 0xce, - 0x34, 0x2b, 0xa5, 0x70, 0x0e, 0x19, 0xb9, 0x6e, 0xdd, 0x87, 0x2f, 0x17, - 0x10, 0x66, 0x66, 0x66, 0x6a, 0xdf, 0xb0, 0xf6, 0x11, 0x74, 0xb4, 0x6f, - 0x4c, 0x00, 0x2d, 0xab, 0xbd, 0x88, 0x03, 0x76, 0x38, 0xd3, 0x33, 0x9f, - 0xa3, 0xdd, 0xba, 0xde, 0x8e, 0x5f, 0xe1, 0x4b, 0x23, 0x01, 0x00, 0x00, - 0x45, 0x17, 0x5d, 0x74, 0x16, 0x91, 0xa1, 0x8b, 0x5f, 0x40, 0xf8, 0x15, - 0xed, 0x6a, 0x84, 0x93, 0x06, 0xc8, 0x00, 0x87, 0x0c, 0x95, 0x69, 0x96, - 0x72, 0xb7, 0xd9, 0x5e, 0xca, 0x38, 0xb1, 0x13, 0x9f, 0x69, 0x6b, 0xfc, - 0x41, 0x05, 0x1e, 0xa1, 0xce, 0x13, 0x60, 0xdf, 0x0d, 0x97, 0xb2, 0x19, - 0x3d, 0x51, 0x3b, 0x3d, 0x2b, 0x1a, 0xf9, 0x41, 0x23, 0x4c, 0x2f, 0x1d, - 0xba, 0x8c, 0x9d, 0xd8, 0xd7, 0x89, 0x9d, 0xd8, 0xd7, 0x81, 0x4d, 0xec, - 0xda, 0x91, 0xa5, 0xf1, 0x8d, 0xcd, 0x68, 0x07, 0x90, 0xcd, 0x18, 0x3b, - 0x4b, 0x25, 0x79, 0x82, 0xdd, 0xf6, 0x2c, 0x59, 0xfb, 0xf1, 0x42, 0x2f, - 0x95, 0x5a, 0xa9, 0x95, 0xfb, 0xe4, 0xd3, 0x4a, 0xca, 0x69, 0xdc, 0xec, - 0x29, 0x9e, 0x31, 0x9e, 0x91, 0x04, 0x00, 0x34, 0x71, 0x4f, 0x7e, 0x6a, - 0x37, 0xf5, 0x49, 0x37, 0x71, 0xe1, 0x07, 0x7e, 0xe3, 0x46, 0x6e, 0xe4, - 0x49, 0x99, 0x35, 0x72, 0x1a, 0x8e, 0x0c, 0xb1, 0x18, 0xb3, 0xa3, 0xa2, - 0x81, 0x19, 0x42, 0x24, 0x6b, 0xff, 0xc6, 0xb8, 0x22, 0x56, 0xcb, 0x6c, - 0x17, 0x7e, 0x2f, 0xc3, 0x24, 0x60, 0x11, 0xa5, 0x06, 0x6c, 0xc4, 0xce, - 0xf8, 0x08, 0x4d, 0x7a, 0x16, 0xca, 0x96, 0xa8, 0x71, 0x24, 0x95, 0x75, - 0x74, 0x74, 0x0a, 0x30, 0x14, 0x71, 0x68, 0x23, 0x9a, 0x99, 0x99, 0x19, - 0x66, 0x66, 0x66, 0xe6, 0x32, 0xb5, 0x32, 0xb3, 0xcd, 0x4a, 0x1f, 0x99, - 0x01, 0xf4, 0x16, 0x36, 0xcf, 0xc0, 0xf7, 0xa8, 0x95, 0xa5, 0x15, 0x26, - 0xcc, 0x4b, 0xc7, 0x22, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x8b, 0x2e, 0xba, - 0x8a, 0xf6, 0xcf, 0x45, 0x31, 0xf2, 0xda, 0x34, 0x79, 0x21, 0x93, 0x4e, - 0x07, 0x50, 0x1d, 0x5d, 0x2a, 0x89, 0x03, 0xe0, 0x62, 0xaf, 0x63, 0x69, - 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, - 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, - 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x3c, 0xb1, 0x13, 0x3b, - 0x3a, 0xb1, 0x13, 0x3b, 0x3a, 0x75, 0x88, 0x9d, 0x3d, 0xed, 0x02, 0xbd, - 0xb5, 0x7b, 0x26, 0x08, 0xb8, 0x7b, 0xce, 0x8d, 0x9f, 0x42, 0x85, 0x0f, - 0x5a, 0xdc, 0x17, 0x62, 0x93, 0x24, 0x49, 0x12, 0x6d, 0xdb, 0xb6, 0xed, - 0x23, 0x3b, 0x91, 0xa4, 0x6f, 0xe9, 0xf9, 0xfe, 0x27, 0x9d, 0x0c, 0xbd, - 0x29, 0x9d, 0x80, 0x45, 0x65, 0x87, 0x77, 0x08, 0xda, 0x7d, 0x86, 0x4a, - 0x67, 0x66, 0x66, 0x66, 0xee, 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, - 0xdf, 0xbd, 0xfe, 0x81, 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, 0x0d, 0xd7, - 0x7b, 0xed, 0x42, 0x27, 0xf9, 0x14, 0xd4, 0x3d, 0x01, 0x00, 0x00, 0x10, - 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, 0xcf, 0xc2, 0xc9, 0x81, 0xfe, - 0x84, 0xba, 0x07, 0x89, 0x87, 0x3a, 0x06, 0xb0, 0x73, 0xa5, 0x03, 0xf7, - 0xdd, 0xcc, 0xae, 0x6c, 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, - 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, - 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b -}; + 0xf9, 0xc2, 0xf4, 0xf2, 0x54, 0x41, 0x98, 0x43, 0x94, 0xd4, 0x8c, 0xe4, 0xe7, 0x4a, 0x2b, 0xc5, 0x4a, 0xd8, 0x6d, + 0x77, 0xdb, 0xad, 0x3c, 0x8c, 0xe0, 0x5f, 0x04, 0xc4, 0x12, 0x0d, 0xe9, 0x6c, 0x39, 0xec, 0xbc, 0x40, 0x49, 0x50, + 0x75, 0xa1, 0xf3, 0x58, 0x2e, 0xd3, 0x78, 0x63, 0xfa, 0xb4, 0x80, 0x9d, 0xe8, 0xc8, 0x52, 0x5b, 0xa7, 0x25, 0x2b, + 0x02, 0x84, 0x0c, 0x48, 0x9b, 0xcd, 0x0c, 0x29, 0x36, 0x96, 0xfe, 0x6d, 0xb8, 0xa1, 0x6b, 0x20, 0x8d, 0x16, 0xf7, + 0xed, 0x87, 0x24, 0x06, 0x0e, 0x04, 0x56, 0x12, 0xe5, 0x9a, 0xce, 0xc7, 0xb8, 0x7b, 0xab, 0x16, 0x10, 0xd1, 0x3a, + 0x51, 0x0a, 0x20, 0x79, 0x37, 0x8b, 0x6b, 0x82, 0x99, 0x3b, 0x75, 0xba, 0xac, 0x8e, 0xd0, 0x73, 0x11, 0x15, 0xe7, + 0x5d, 0x3a, 0x17, 0x14, 0x3d, 0xa2, 0x09, 0x75, 0x0e, 0x9a, 0x64, 0xcb, 0xf7, 0x11, 0x29, 0x32, 0x0c, 0x75, 0x43, + 0x8a, 0xe0, 0xfa, 0x32, 0xd3, 0x48, 0x26, 0xb7, 0xbe, 0x86, 0xf1, 0x9c, 0x7f, 0x24, 0x22, 0x06, 0x97, 0x2a, 0xa2, + 0x89, 0xb0, 0x9a, 0xba, 0x43, 0xf6, 0xcf, 0x0e, 0xe3, 0x55, 0x77, 0x76, 0xd7, 0xc2, 0x1a, 0x52, 0x75, 0x5f, 0x07, + 0x0f, 0xc6, 0x78, 0x68, 0xd5, 0xb5, 0xfc, 0xe9, 0xc0, 0x4a, 0x0e, 0x30, 0xae, 0xe3, 0x0c, 0xeb, 0x22, 0x27, 0xf5, + 0x25, 0x6b, 0x49, 0x31, 0x20, 0xb9, 0x9e, 0x27, 0x86, 0x43, 0x32, 0x31, 0x5b, 0x05, 0x26, 0x97, 0x2f, 0x49, 0xc1, + 0x65, 0x66, 0x96, 0x73, 0x73, 0x92, 0xa2, 0x23, 0xb9, 0x43, 0x5e, 0x68, 0x90, 0x00, 0x0a, 0x24, 0xdb, 0xc8, 0x59, + 0xdf, 0xac, 0x3a, 0x82, 0x71, 0x45, 0xfa, 0x97, 0x11, 0x78, 0xcd, 0x4f, 0x84, 0xa5, 0x3f, 0x05, 0x7e, 0x50, 0x0c, + 0xf1, 0x22, 0x8f, 0x2b, 0x91, 0xe3, 0xe1, 0x5f, 0x01, 0x4b, 0x90, 0x32, 0x96, 0x30, 0xee, 0xe1, 0xf7, 0x18, 0xd8, + 0x10, 0x1c, 0x8f, 0xfb, 0xff, 0x62, 0xcc, 0x5b, 0x48, 0x09, 0x04, 0x9c, 0x47, 0xe1, 0x5c, 0xe1, 0xa2, 0x51, 0x16, + 0x74, 0x2a, 0x5f, 0xc6, 0x8b, 0xf3, 0xb6, 0x47, 0x04, 0x2c, 0x8e, 0x9c, 0x9a, 0x62, 0x7d, 0x2c, 0xd5, 0xd4, 0x5f, + 0x42, 0xdf, 0x1f, 0x5c, 0xa1, 0xc3, 0x2b, 0x47, 0x97, 0xdc, 0xf1, 0x70, 0xf1, 0xb7, 0x60, 0x3d, 0x08, 0x8d, 0x64, + 0xa5, 0x71, 0x89, 0xc4, 0x30, 0xea, 0x1f, 0x81, 0x7b, 0xe1, 0x43, 0xf9, 0x73, 0xf4, 0x67, 0x9f, 0x49, 0xfd, 0x26, + 0xc2, 0x10, 0xa5, 0x3d, 0xa9, 0xa7, 0x8e, 0x0f, 0xd0, 0x22, 0xd3, 0x2a, 0x12, 0xb3, 0xfc, 0xc6, 0x3e, 0x7d, 0x07, + 0x1c, 0xc9, 0xce, 0xb4, 0xb2, 0x49, 0x16, 0x5a, 0xfd, 0x14, 0x52, 0x5a, 0x51, 0x24, 0x8c, 0x06, 0x91, 0x97, 0xff, + 0x96, 0x72, 0xde, 0x3c, 0x06, 0x8f, 0xe3, 0x12, 0x8d, 0x5e, 0xcf, 0xd3, 0x7c, 0x74, 0x4e, 0xeb, 0x64, 0x81, 0x93, + 0xbe, 0x0d, 0xd0, 0x51, 0xeb, 0xdb, 0x4a, 0xb4, 0xf8, 0x32, 0xc1, 0x37, 0x7d, 0xbb, 0x2e, 0xd8, 0x27, 0xe5, 0x5f, + 0xe2, 0xfe, 0xba, 0x7b, 0x83, 0x65, 0x47, 0xd7, 0xf7, 0x01, 0xb6, 0x2e, 0x9a, 0xb8, 0xd6, 0x35, 0x23, 0x35, 0x7a, + 0xd2, 0xa4, 0x2e, 0x0a, 0x0e, 0xc6, 0xe7, 0xbe, 0xd8, 0x93, 0x72, 0x81, 0x89, 0xf1, 0xa6, 0x5c, 0xed, 0x16, 0x26, + 0x29, 0x1d, 0x78, 0xeb, 0xcd, 0x21, 0x5e, 0xd8, 0x67, 0x08, 0x1c, 0x56, 0x87, 0xa1, 0xbe, 0x73, 0xe6, 0x94, 0xcc, + 0xb6, 0x96, 0x6b, 0x97, 0x1b, 0xba, 0x0a, 0xac, 0x73, 0x47, 0x6f, 0xf6, 0x02, 0x8a, 0x9f, 0x80, 0x6d, 0x72, 0xac, + 0xa1, 0xe5, 0xd9, 0x3b, 0xda, 0xcd, 0xcd, 0x08, 0xaf, 0xd4, 0xcf, 0xed, 0x33, 0x6d, 0xab, 0x89, 0xdb, 0x36, 0xa5, + 0xd1, 0x1a, 0x33, 0x1e, 0x0a, 0x12, 0xef, 0x27, 0x69, 0x75, 0xbb, 0xff, 0x3d, 0x46, 0xa0, 0x3e, 0xd8, 0xd1, 0x4a, + 0xfb, 0xd7, 0x51, 0x22, 0x96, 0xe6, 0xea, 0x21, 0x53, 0xf9, 0xb7, 0x12, 0x9e, 0x02, 0xa3, 0x50, 0x8f, 0x12, 0xe3, + 0x6e, 0x0d, 0xc4, 0x24, 0xf0, 0x0b, 0x2c, 0x53, 0x9b, 0x2f, 0x9b, 0x83, 0xb9, 0xc4, 0x68, 0x06, 0x68, 0xc2, 0x03, + 0xd1, 0xc6, 0x72, 0x7a, 0x42, 0x26, 0x79, 0xa8, 0x86, 0x5d, 0x4b, 0xe4, 0x18, 0x36, 0x71, 0xbb, 0x63, 0xbd, 0xd4, + 0xaa, 0x56, 0xa5, 0xaf, 0xd6, 0x97, 0x71, 0xce, 0xbc, 0x23, 0x5b, 0xf0, 0x73, 0xf4, 0x53, 0x42, 0xed, 0x67, 0x70, + 0x31, 0x03, 0x9a, 0xf5, 0x4f, 0x2c, 0x22, 0xcc, 0x06, 0x34, 0xed, 0xe3, 0x97, 0xb3, 0xcc, 0x77, 0x11, 0x72, 0x43, + 0xcc, 0x26, 0x56, 0xff, 0xd0, 0xd4, 0xba, 0x79, 0x16, 0x1b, 0x8f, 0x1b, 0x2a, 0x4e, 0x85, 0xb2, 0xe0, 0x04, 0xdc, + 0x41, 0x5e, 0x37, 0xe5, 0x10, 0x6a, 0xd0, 0xa7, 0x96, 0x8b, 0x51, 0xff, 0x82, 0xac, 0xc0, 0x91, 0xcb, 0x10, 0x9e, + 0x81, 0xca, 0x47, 0xbf, 0x81, 0x95, 0x01, 0xf2, 0xbd, 0x1c, 0x72, 0xf8, 0xbb, 0xd9, 0xd5, 0x28, 0x98, 0xb1, 0xe0, + 0x37, 0xc5, 0x5f, 0x6e, 0x8e, 0xc2, 0x56, 0xb8, 0xf1, 0x46, 0x4c, 0x1d, 0xd9, 0x73, 0x1b, 0xf5, 0xba, 0x24, 0x81, + 0x33, 0x37, 0x12, 0x49, 0x85, 0x31, 0x3f, 0x6e, 0x60, 0xa5, 0x1b, 0xe3, 0x8b, 0x5d, 0x70, 0xda, 0x23, 0x9a, 0x79, + 0x03, 0x3a, 0xa4, 0xf1, 0xe0, 0xc1, 0xc6, 0x72, 0xef, 0x70, 0xa4, 0x9c, 0xb1, 0x57, 0x8e, 0x32, 0x92, 0xb6, 0x55, + 0x47, 0xbb, 0x3c, 0xe2, 0x06, 0xe6, 0x59, 0xeb, 0x16, 0x87, 0xcc, 0x08, 0x19, 0xcc, 0xc4, 0xa2, 0xec, 0x09, 0x86, + 0xfa, 0x63, 0x28, 0xf9, 0x57, 0xf3, 0xed, 0x5a, 0xd0, 0xdc, 0xfe, 0xb4, 0x06, 0xa4, 0xb9, 0x5b, 0x14, 0x3c, 0x82, + 0x4f, 0x48, 0xfe, 0x82, 0x9d, 0x77, 0x78, 0xa4, 0xe4, 0x16, 0xf3, 0xd9, 0x80, 0xf1, 0x5f, 0xd1, 0x64, 0x66, 0xd1, + 0xc8, 0x26, 0xc4, 0x07, 0xd8, 0xd1, 0xfa, 0x2c, 0x6b, 0xa9, 0x08, 0x6f, 0x3a, 0xd0, 0x96, 0x9a, 0x90, 0x95, 0x00, + 0x97, 0xde, 0x4a, 0x49, 0xbb, 0xa2, 0x02, 0x2e, 0xaa, 0xd5, 0x75, 0x8b, 0x71, 0x5b, 0x3e, 0x66, 0xd9, 0xae, 0x05, + 0x36, 0x4b, 0x4b, 0x90, 0x9b, 0xb9, 0x00, 0xe2, 0x66, 0x96, 0x7d, 0x9c, 0xcd, 0x3b, 0xcf, 0xe0, 0x02, 0x51, 0x3b, + 0x85, 0x3f, 0x81, 0xfa, 0xef, 0x8a, 0x30, 0x41, 0x14, 0x35, 0x97, 0x5f, 0xdc, 0x3c, 0xb3, 0x14, 0x88, 0x07, 0x02, + 0x45, 0x5c, 0xcb, 0x76, 0xb7, 0xae, 0x88, 0xca, 0x4d, 0x1a, 0xee, 0x53, 0xd6, 0x18, 0x26, 0x44, 0xe1, 0x9b, 0x1b, + 0xd3, 0x5a, 0x12, 0xd6, 0x0e, 0xdc, 0xb4, 0x0a, 0x29, 0xab, 0xb7, 0xbc, 0x64, 0x0c, 0x2c, 0x1e, 0x0b, 0x75, 0x2c, + 0x4a, 0x0d, 0xd6, 0x77, 0x6d, 0x6a, 0x2a, 0x14, 0xc7, 0xa8, 0xa5, 0xfe, 0x01, 0x13, 0x24, 0x2e, 0x96, 0xdf, 0xef, + 0xfa, 0x46, 0xfe, 0xc4, 0xb0, 0x1b, 0xfb, 0x36, 0x8a, 0x5f, 0x28, 0x59, 0xce, 0x40, 0x72, 0xd7, 0x18, 0x9f, 0xa0, + 0x17, 0x2a, 0x21, 0x8a, 0x10, 0xde, 0x36, 0x03, 0xf8, 0x63, 0x25, 0x23, 0xd3, 0xeb, 0xc0, 0xd0, 0xe3, 0xa6, 0x41, + 0xb2, 0x88, 0xae, 0x77, 0xe7, 0x2b, 0x64, 0x40, 0x72, 0x7b, 0x4b, 0x06, 0xfb, 0x66, 0xec, 0xbb, 0x4e, 0x37, 0x82, + 0x6a, 0x92, 0x58, 0x15, 0x74, 0x68, 0x38, 0x86, 0xf6, 0x6f, 0xab, 0x71, 0x27, 0xd0, 0x5a, 0x0a, 0x4a, 0x48, 0xd7, + 0x82, 0x15, 0xdb, 0xf7, 0xc1, 0x0a, 0x61, 0x00, 0x20, 0x26, 0x93, 0x86, 0xdc, 0xe3, 0xe4, 0xcd, 0x0c, 0xd4, 0xba, + 0xa0, 0xc7, 0xac, 0xd2, 0x64, 0x68, 0xb6, 0x67, 0x6e, 0x09, 0x35, 0xc5, 0x8d, 0x53, 0x12, 0x92, 0x94, 0x57, 0xf6, + 0x75, 0x9d, 0x6d, 0x8e, 0x40, 0x4a, 0x54, 0xb3, 0xf4, 0x51, 0x1d, 0xb1, 0xc4, 0x86, 0xa4, 0x4d, 0x60, 0x89, 0x7d, + 0x82, 0xca, 0x01, 0x45, 0xf0, 0x81, 0xaf, 0xc5, 0x36, 0x15, 0x4c, 0xe2, 0x75, 0x39, 0x33, 0xc0, 0xad, 0x30, 0xb3, + 0x21, 0x63, 0xa8, 0x9c, 0x64, 0x7f, 0xbc, 0x1a, 0xb8, 0x2c, 0xa5, 0x82, 0x31, 0x67, 0x62, 0xf5, 0xe8, 0x18, 0x92, + 0x25, 0x33, 0x19, 0xda, 0x2d, 0xc2, 0x1b, 0x62, 0x20, 0xa8, 0xca, 0x5b, 0xe1, 0x2a, 0x40, 0xb0, 0x08, 0x1e, 0xec, + 0x6c, 0xd4, 0x98, 0x4d, 0x13, 0x45, 0xd8, 0x11, 0x7f, 0x75, 0xa6, 0xbd, 0xd1, 0x65, 0xbf, 0x8e, 0xf2, 0xbe, 0x3a, + 0x15, 0xfd, 0x44, 0xde, 0xde, 0xe9, 0xb7, 0x3c, 0x3d, 0x50, 0xed, 0x43, 0xad, 0x2c, 0x55, 0x75, 0xff, 0x8c, 0xe2, + 0xf5, 0x42, 0x44, 0x98, 0xa0, 0x2a, 0x85, 0xfc, 0xcf, 0x39, 0xd2, 0xfe, 0x87, 0xe5, 0xf2, 0x65, 0x3d, 0x95, 0x95, + 0xd3, 0x37, 0x0f, 0x7d, 0xed, 0x2f, 0xe5, 0x48, 0xb3, 0xe2, 0x4d, 0x39, 0xc5, 0x14, 0x7d, 0x6d, 0x42, 0xb6, 0x3a, + 0x1e, 0xe5, 0x8b, 0x58, 0x3a, 0x03, 0x33, 0xca, 0x5d, 0xe5, 0xa4, 0x3c, 0x40, 0xff, 0x25, 0xf8, 0x20, 0xf6, 0x56, + 0xb6, 0x8d, 0xcf, 0x5a, 0x7b, 0x8d, 0x38, 0x6e, 0x24, 0xe9, 0x38, 0xed, 0x5b, 0xb4, 0x94, 0x84, 0x27, 0x3a, 0x54, + 0x05, 0x6a, 0x46, 0xdc, 0x91, 0x32, 0xe9, 0x90, 0xdc, 0x63, 0x04, 0xeb, 0x4d, 0x66, 0x85, 0xd3, 0x3f, 0x26, 0xc8, + 0x04, 0xeb, 0x08, 0xf8, 0x1d, 0xee, 0x24, 0x3d, 0xb9, 0x1c, 0xf7, 0x21, 0x8f, 0xa3, 0xb8, 0x1d, 0xb0, 0x14, 0x60, + 0xf1, 0x56, 0xb1, 0x65, 0x1e, 0x4e, 0x6a, 0x8b, 0x33, 0x0c, 0x4b, 0xc3, 0x49, 0xfd, 0x1a, 0xdd, 0x67, 0x94, 0xe2, + 0x1a, 0x0b, 0x5d, 0x24, 0x5f, 0xf7, 0x29, 0x90, 0xc7, 0x27, 0x4c, 0xf5, 0x6b, 0xff, 0xcf, 0x4e, 0xcc, 0xa0, 0x09, + 0x36, 0x45, 0xc2, 0x59, 0x24, 0xcd, 0x68, 0x08, 0x76, 0x67, 0xa2, 0x51, 0x16, 0x48, 0xd9, 0x35, 0xd0, 0x4a, 0xd0, + 0x5e, 0xd7, 0x36, 0x77, 0x50, 0x16, 0xcb, 0x5d, 0xc1, 0x15, 0xbc, 0xe8, 0xa0, 0x3f, 0xbc, 0xaf, 0x8f, 0x24, 0x01, + 0x51, 0x4a, 0x32, 0xd3, 0xf2, 0xb8, 0x00, 0x9f, 0x9f, 0x8b, 0x6d, 0xfa, 0x81, 0xf5, 0x46, 0xa8, 0xcd, 0xa1, 0x2c, + 0xbc, 0xb3, 0x66, 0xd6, 0x5f, 0x75, 0xd3, 0x33, 0x98, 0x04, 0x8b, 0xf9, 0x4a, 0x97, 0x63, 0x04, 0xba, 0xc5, 0x85, + 0xc4, 0xb5, 0xa5, 0xac, 0xe7, 0x75, 0x05, 0x58, 0x53, 0xe1, 0x17, 0x47, 0xc5, 0xbe, 0x87, 0xc9, 0xff, 0x94, 0x39, + 0x0b, 0x35, 0x0a, 0x2e, 0xc1, 0xf5, 0xf4, 0xd6, 0x70, 0x89, 0xf5, 0x42, 0x44, 0x4a, 0x99, 0xbd, 0x13, 0x0b, 0x7d, + 0xae, 0x4e, 0x21, 0x6d, 0x47, 0x81, 0x45, 0xc0, 0x50, 0x08, 0x98, 0xa7, 0xfa, 0xc9, 0x02, 0x43, 0x6e, 0x79, 0xf0, + 0x87, 0xb2, 0xa3, 0x44, 0xb3, 0x74, 0x1e, 0xe4, 0xe2, 0xf5, 0x0c, 0xab, 0x11, 0x2d, 0xb4, 0x30, 0x6c, 0x4f, 0xaa, + 0x87, 0x20, 0x9f, 0x45, 0x05, 0x20, 0x30, 0x5e, 0x06, 0xdd, 0xc9, 0xdf, 0xc3, 0x96, 0x59, 0xbb, 0xff, 0x8e, 0xb0, + 0xed, 0x93, 0xe3, 0x12, 0xcf, 0x10, 0xfc, 0xbd, 0xda, 0xf0, 0x43, 0x1e, 0xa2, 0x09, 0x91, 0xa9, 0x80, 0xcc, 0x41, + 0xb8, 0x1e, 0x3c, 0xb0, 0xf2, 0x00, 0xc1, 0x7c, 0xf6, 0xc9, 0x71, 0xe7, 0xfb, 0x28, 0x1a, 0x96, 0xcd, 0xd2, 0x8d, + 0x2e, 0x8a, 0x44, 0xbe, 0xf6, 0x18, 0xab, 0x80, 0x1b, 0x4c, 0x9c, 0xdb, 0x45, 0x61, 0x23, 0x27, 0x1f, 0x85, 0xc6, + 0xf5, 0xdd, 0x66, 0xe6, 0x8d, 0xbb, 0xc0, 0xad, 0xab, 0xf1, 0xcd, 0x23, 0x3f, 0xad, 0x45, 0x65, 0x8b, 0xea, 0xc7, + 0x95, 0xc8, 0x41, 0x01, 0x60, 0xae, 0x08, 0xf6, 0xe7, 0x6d, 0x61, 0xe6, 0x7f, 0xb1, 0x15, 0x30, 0x63, 0xad, 0xb8, + 0xbd, 0xce, 0x9a, 0x7b, 0x65, 0xb4, 0xbe, 0x6f, 0xcd, 0x6f, 0x56, 0x0b, 0x40, 0x9b, 0xc1, 0x42, 0x74, 0x95, 0x6e, + 0xa6, 0x90, 0xda, 0x0c, 0x4c, 0xfb, 0x86, 0xde, 0x01, 0xad, 0x25, 0x35, 0xe8, 0xaf, 0xdd, 0xda, 0xe0, 0xbe, 0x42, + 0x4a, 0x64, 0xb6, 0x38, 0x77, 0x5c, 0xac, 0xaf, 0x27, 0xd3, 0x83, 0xb4, 0x4b, 0x0f, 0xa5, 0xd4, 0x39, 0x7e, 0xeb, + 0x85, 0x89, 0xd8, 0x44, 0x4c, 0x38, 0x7a, 0x02, 0x68, 0x25, 0x1d, 0x57, 0x92, 0x23, 0xf8, 0xbe, 0x28, 0x57, 0x48, + 0x63, 0xd6, 0xc9, 0x0e, 0xe3, 0x6b, 0xf9, 0x1b, 0x0f, 0x36, 0x5b, 0x35, 0x1b, 0x08, 0xa9, 0x33, 0xe5, 0x98, 0x2c, + 0x0a, 0x60, 0x91, 0xcf, 0xd3, 0x9e, 0x4a, 0x00, 0x51, 0x4b, 0x8e, 0x24, 0x2a, 0x9d, 0x99, 0x60, 0x91, 0x51, 0x7d, + 0x9f, 0x19, 0x24, 0xf5, 0x43, 0xc2, 0x2c, 0x0f, 0xb4, 0xbe, 0x38, 0x4a, 0xbb, 0x01, 0xa8, 0xd5, 0xc9, 0x61, 0x94, + 0x93, 0x6d, 0x5b, 0xe1, 0x5d, 0x2d, 0x63, 0x3a, 0xb2, 0x67, 0x7b, 0xc8, 0x17, 0x36, 0x74, 0x23, 0x49, 0x15, 0x86, + 0x5b, 0x82, 0xeb, 0x17, 0xf1, 0x28, 0xf1, 0x1c, 0x97, 0x3e, 0x31, 0x2c, 0xc0, 0x6b, 0x1f, 0x50, 0xa2, 0xb2, 0x4a, + 0xbb, 0x13, 0x28, 0x35, 0x54, 0x67, 0xdb, 0x28, 0x58, 0x9d, 0xbc, 0x1a, 0xd0, 0xd7, 0x37, 0xe0, 0x74, 0x00, 0x62, + 0x66, 0x30, 0xd5, 0xe3, 0x0e, 0xae, 0x03, 0x49, 0x25, 0x33, 0x7e, 0xbd, 0x70, 0x93, 0x4f, 0xc3, 0x33, 0x7d, 0xe0, + 0x15, 0x9e, 0x34, 0x77, 0x0a, 0x16, 0x7b, 0xc6, 0xc9, 0x3c, 0xa3, 0x22, 0x59, 0x97, 0xde, 0x36, 0x7b, 0xd7, 0xc3, + 0x29, 0x40, 0x45, 0x79, 0x8b, 0x08, 0x80, 0x8f, 0xef, 0xad, 0x47, 0x74, 0xda, 0xe0, 0xab, 0x55, 0x3a, 0x26, 0x14, + 0xdb, 0x5d, 0x65, 0x79, 0x73, 0x79, 0xb3, 0x5e, 0x15, 0xdb, 0xa4, 0x1c, 0x39, 0xd5, 0x75, 0x9b, 0xb8, 0x04, 0xc9, + 0x3f, 0x07, 0xdb, 0xa5, 0x1b, 0xd9, 0x6b, 0x53, 0x02, 0xdc, 0x5c, 0xff, 0x27, 0xda, 0x33, 0xdf, 0x88, 0xc4, 0x4f, + 0x70, 0x6b, 0x02, 0x68, 0xbb, 0xa8, 0xca, 0xbb, 0x01, 0x2f, 0xc8, 0xd0, 0x46, 0x61, 0x28, 0x82, 0x9e, 0x99, 0x87, + 0x97, 0x46, 0xb7, 0xb7, 0xf0, 0x84, 0x1a, 0x34, 0xdc, 0x40, 0xf2, 0xf3, 0x9a, 0xe1, 0x48, 0x85, 0x89, 0x2d, 0xbb, + 0x45, 0x9b, 0xa2, 0xd0, 0xd0, 0x5b, 0x16, 0x06, 0x8c, 0xbd, 0xce, 0x9e, 0xc1, 0xb0, 0x1a, 0x00, 0xeb, 0x9f, 0xd1, + 0x49, 0x1a, 0xef, 0x9c, 0x82, 0x91, 0xa0, 0x32, 0x3c, 0x93, 0x8a, 0x35, 0xd4, 0x45, 0xe5, 0xc4, 0xdf, 0xb8, 0xd1, + 0x0f, 0x44, 0x3d, 0x73, 0xda, 0x31, 0x91, 0x62, 0x71, 0x91, 0x53, 0x40, 0xff, 0x6f, 0x67, 0x5d, 0xf7, 0x2c, 0x5b, + 0x05, 0x3f, 0xe6, 0xb1, 0xc1, 0x1c, 0x28, 0x48, 0xca, 0xf7, 0xe0, 0x15, 0xc3, 0x47, 0x1a, 0xe1, 0x84, 0x2a, 0x43, + 0x51, 0x5c, 0x37, 0x52, 0x76, 0x86, 0x85, 0x25, 0xaf, 0x94, 0x02, 0x6b, 0x85, 0x05, 0xd9, 0xd8, 0xc3, 0x9f, 0xe0, + 0x21, 0xf8, 0xdf, 0xea, 0x14, 0x79, 0x8e, 0x3c, 0x6f, 0x43, 0x9e, 0xe8, 0xcf, 0x70, 0x18, 0x8b, 0x78, 0x3a, 0x6e, + 0x20, 0x57, 0x03, 0xa3, 0x6b, 0x3b, 0xae, 0xbc, 0x75, 0x94, 0xef, 0xb3, 0x31, 0x58, 0x35, 0x44, 0xa9, 0x51, 0x91, + 0x09, 0x63, 0x98, 0xe5, 0x57, 0x3c, 0xd2, 0x42, 0xa4, 0x74, 0x1a, 0xa1, 0x55, 0xfd, 0x6f, 0xd7, 0xac, 0x87, 0xc4, + 0x0c, 0xc1, 0xc7, 0xfb, 0x5a, 0x39, 0x11, 0xa9, 0x34, 0x16, 0x16, 0x5a, 0x25, 0x97, 0x22, 0x4a, 0x53, 0x69, 0xad, + 0xd5, 0x8e, 0x20, 0x2e, 0xf1, 0x71, 0x31, 0x76, 0x60, 0x95, 0xd6, 0xfc, 0x33, 0xd8, 0xb5, 0xac, 0x00, 0x6c, 0x3e, + 0xf9, 0x21, 0xfb, 0xd3, 0xa0, 0x68, 0x4a, 0x05, 0x12, 0xd8, 0xbb, 0x81, 0x5c, 0x84, 0xe8, 0x58, 0x33, 0xce, 0xa5, + 0x47, 0x44, 0x32, 0x14, 0x23, 0x78, 0xe9, 0x61, 0x2f, 0x03, 0x95, 0xb5, 0x5c, 0x2a, 0xc9, 0x4c, 0x3a, 0x5a, 0x8d, + 0x40, 0xcf, 0xe3, 0xd8, 0x5d, 0x0e, 0x2b, 0xa5, 0x4d, 0x75, 0xe1, 0xd8, 0x9d, 0x3f, 0x2b, 0x3e, 0xd9, 0xfc, 0x6c, + 0xb7, 0x2d, 0x5e, 0xa4, 0x25, 0xe5, 0x80, 0x41, 0xfc, 0xa2, 0x02, 0x0e, 0x2b, 0xbe, 0x5c, 0x6a, 0xeb, 0x0c, 0x10, + 0x84, 0xc2, 0x9d, 0x32, 0x46, 0xfa, 0x33, 0xb5, 0xb4, 0x50, 0x0d, 0x74, 0x90, 0x94, 0x5e, 0x83, 0x01, 0x59, 0x28, + 0xad, 0x1e, 0xba, 0x3b, 0x71, 0xb7, 0x43, 0x61, 0x86, 0x0b, 0xc7, 0xa3, 0x3a, 0xa2, 0x60, 0x64, 0x6c, 0x65, 0xdd, + 0x38, 0x13, 0x29, 0x29, 0x77, 0x67, 0x2f, 0x86, 0x66, 0x3b, 0x19, 0xa0, 0x08, 0x1a, 0x56, 0xa4, 0x02, 0xda, 0x94, + 0x7e, 0xc5, 0x84, 0x66, 0xe0, 0x9e, 0x4d, 0xbf, 0x9c, 0x70, 0x07, 0x3f, 0x8a, 0xf7, 0x13, 0xd4, 0x2c, 0x62, 0x03, + 0x65, 0x3c, 0xf2, 0x2c, 0x7a, 0x5a, 0xc3, 0x94, 0x40, 0x36, 0x48, 0xe8, 0xb0, 0xe0, 0x52, 0xff, 0xb4, 0x1b, 0x97, + 0xec, 0xf9, 0xc6, 0xfb, 0x01, 0x75, 0x18, 0xd5, 0x11, 0x15, 0x13, 0x44, 0x49, 0x32, 0x1d, 0xbb, 0x63, 0x44, 0x15, + 0x66, 0x69, 0x65, 0x05, 0x21, 0x13, 0x17, 0x67, 0xe0, 0x67, 0xb7, 0xc0, 0x47, 0x80, 0x9a, 0x41, 0x49, 0xad, 0x29, + 0xa8, 0xa7, 0x23, 0x66, 0x34, 0xb9, 0x7d, 0xec, 0xf5, 0xec, 0xda, 0xa3, 0xe8, 0x6e, 0xf2, 0xb7, 0x7f, 0xb9, 0xa8, + 0xdb, 0x40, 0x9d, 0x13, 0xe8, 0x63, 0xa9, 0xdd, 0x72, 0xa6, 0x9c, 0xe8, 0x55, 0xbc, 0x22, 0xcf, 0x95, 0x35, 0xc3, + 0x49, 0xf3, 0x8c, 0x00, 0x3d, 0xfa, 0x3d, 0xc3, 0xbf, 0x5e, 0x4b, 0xe3, 0x7d, 0x13, 0x7d, 0xd4, 0x89, 0x97, 0xcd, + 0x60, 0x8f, 0xde, 0xcd, 0xa2, 0x9d, 0x88, 0xe6, 0xbc, 0x0a, 0x33, 0x0c, 0x4b, 0xb9, 0xaf, 0x84, 0xb0, 0x17, 0xcf, + 0x4f, 0x68, 0x0a, 0x7b, 0x97, 0xc1, 0x84, 0xeb, 0x61, 0xcd, 0xcb, 0xde, 0x08, 0x04, 0xf4, 0x9a, 0xa8, 0x12, 0x25, + 0xc0, 0x80, 0x6b, 0xd5, 0x2a, 0x1e, 0x3e, 0xa6, 0x28, 0xd7, 0x18, 0x20, 0x2b, 0xd3, 0x33, 0x86, 0xf5, 0x7d, 0x16, + 0x84, 0x41, 0x9c, 0x2d, 0xb2, 0x5d, 0xc6, 0xcf, 0x17, 0x4f, 0x12, 0xd2, 0xdf, 0xd3, 0xbf, 0xff, 0x92, 0xbb, 0x19, + 0x79, 0xa0, 0x58, 0xe1, 0x0c, 0x34, 0x66, 0x4a, 0xd6, 0x84, 0x3f, 0xb8, 0x9d, 0x6c, 0xad, 0x7c, 0xaa, 0x31, 0x58, + 0xac, 0x19, 0xbb, 0xb8, 0x90, 0xb4, 0x5c, 0xf4, 0x8d, 0xab, 0x0c, 0xfd, 0x28, 0x55, 0xb8, 0x08, 0x31, 0x31, 0x9f, + 0xb8, 0xb3, 0xc7, 0x3e, 0x4b, 0x52, 0x48, 0x79, 0x13, 0x51, 0xf3, 0x56, 0x8b, 0xd3, 0xc6, 0x97, 0x04, 0x36, 0x70, + 0x15, 0xde, 0xfa, 0x81, 0xa0, 0x40, 0x44, 0xa4, 0x90, 0x48, 0x52, 0xd5, 0x70, 0x8e, 0xfa, 0x37, 0x15, 0xb0, 0xe3, + 0xbb, 0xb5, 0x4c, 0x12, 0x09, 0xe2, 0x7b, 0x5d, 0x0f, 0x40, 0x55, 0xc0, 0x16, 0xe2, 0x50, 0x79, 0x0b, 0xe0, 0x02, + 0x17, 0xe6, 0x63, 0x2e, 0x61, 0xaf, 0x31, 0xc5, 0x66, 0x13, 0x41, 0x6d, 0x90, 0x1a, 0x4c, 0x2e, 0xad, 0xda, 0xc2, + 0xef, 0x61, 0x40, 0xba, 0x3a, 0xee, 0xe3, 0x5c, 0xde, 0x11, 0x9e, 0x75, 0x4f, 0x32, 0x14, 0xbb, 0xdf, 0x15, 0x7c, + 0x97, 0x22, 0x05, 0xca, 0xd6, 0x59, 0xc0, 0x8a, 0x60, 0x93, 0xb8, 0xb2, 0x28, 0x50, 0xe5, 0x24, 0x72, 0x5c, 0x60, + 0x3e, 0x42, 0x2b, 0xc3, 0x78, 0x90, 0xc7, 0x01, 0xd0, 0xfe, 0x84, 0x48, 0xbb, 0x73, 0x5a, 0x23, 0x29, 0x79, 0x4e, + 0x5a, 0xd8, 0xd5, 0x19, 0x90, 0xfd, 0xe8, 0x41, 0xd2, 0xbc, 0x7b, 0x20, 0x60, 0xa6, 0x82, 0xcb, 0x82, 0xf9, 0xc9, + 0xe9, 0x61, 0x96, 0x3c, 0xf0, 0xb8, 0x74, 0x63, 0x2d, 0x4e, 0xff, 0x86, 0x16, 0x8b, 0x87, 0x1e, 0x98, 0x81, 0xd8, + 0x28, 0xdd, 0x38, 0x78, 0x56, 0x3f, 0xd0, 0xce, 0xf6, 0xdd, 0xf7, 0x70, 0xc5, 0x9c, 0x39, 0x82, 0x1e, 0xaf, 0xd9, + 0x1b, 0xf5, 0x8e, 0x1e, 0x3b, 0xc4, 0x14, 0x38, 0x78, 0x51, 0x36, 0xc1, 0x12, 0x9f, 0xf1, 0x0a, 0x61, 0xa4, 0x06, + 0x53, 0x3c, 0xef, 0x38, 0x66, 0x11, 0x1a, 0xb1, 0x66, 0x78, 0xaf, 0xcf, 0x1e, 0xc1, 0x95, 0xcc, 0xc1, 0xfc, 0x4e, + 0xe7, 0x5f, 0xdc, 0xd7, 0xc9, 0x30, 0x68, 0x19, 0x75, 0x97, 0xe2, 0xf9, 0x9b, 0x93, 0x39, 0x70, 0xbf, 0x9f, 0x5b, + 0xd6, 0x2b, 0x38, 0x34, 0x12, 0x59, 0xdf, 0x06, 0xbc, 0x4d, 0x1b, 0x8c, 0x0c, 0x11, 0xdd, 0xa4, 0xed, 0x15, 0xe5, + 0x94, 0xf6, 0xa9, 0x66, 0x96, 0xce, 0xe1, 0xf3, 0x70, 0x33, 0xfa, 0xd9, 0xa5, 0x58, 0xa6, 0x3e, 0x0c, 0x99, 0xac, + 0xd9, 0x97, 0x00, 0x26, 0x96, 0x74, 0xe0, 0xc9, 0x06, 0x14, 0xf5, 0x3a, 0xe0, 0x6f, 0xd4, 0xa6, 0xf2, 0x92, 0x91, + 0xfa, 0x62, 0x49, 0xbc, 0x5c, 0x8a, 0xc2, 0xd9, 0x0d, 0x21, 0xa5, 0x11, 0x99, 0x0e, 0x4a, 0x18, 0x41, 0x9d, 0xcb, + 0x31, 0x38, 0xa0, 0x01, 0x64, 0x66, 0x47, 0x69, 0xca, 0x1f, 0x3d, 0xc9, 0x75, 0x10, 0x32, 0xb6, 0x1e, 0xc6, 0xed, + 0x74, 0x56, 0x9a, 0x18, 0x45, 0xd0, 0xe9, 0xa2, 0xa9, 0xa3, 0x00, 0x17, 0x8d, 0x4a, 0xf7, 0x59, 0x6d, 0x73, 0x3d, + 0x73, 0x07, 0x9f, 0xe4, 0x93, 0x6b, 0x9f, 0x90, 0xb9, 0x0c, 0x2c, 0x95, 0x09, 0xfc, 0xf7, 0x7e, 0x25, 0x0a, 0x31, + 0xb8, 0x1b, 0x17, 0x35, 0x46, 0x50, 0x8b, 0xca, 0xe0, 0x45, 0x39, 0x5f, 0x89, 0x65, 0x42, 0x17, 0xea, 0xf4, 0x2b, + 0x74, 0xd4, 0x66, 0xd1, 0xf4, 0xd5, 0x56, 0x7f, 0x83, 0x22, 0x2a, 0x2d, 0x0a, 0xcc, 0xe0, 0xbc, 0x98, 0x93, 0xad, + 0x44, 0xf0, 0xb2, 0x96, 0x1f, 0x1c, 0x21, 0x01, 0xdc, 0xdd, 0xed, 0x3f, 0x9e, 0x43, 0xcb, 0xa0, 0x5f, 0x3f, 0x51, + 0xcf, 0x64, 0x65, 0x31, 0x20, 0x50, 0x33, 0x8a, 0x1f, 0xe7, 0x7f, 0xcf, 0x35, 0x6d, 0x24, 0xad, 0x3e, 0x6e, 0x7c, + 0xc3, 0xa6, 0xf6, 0x10, 0x19, 0x59, 0x04, 0x93, 0x63, 0x2b, 0x83, 0xa6, 0xb5, 0xe8, 0xca, 0xd9, 0x62, 0x06, 0xc6, + 0x51, 0x58, 0x43, 0xdc, 0x26, 0xa2, 0xa7, 0xb4, 0x65, 0xa4, 0xeb, 0xef, 0x18, 0x87, 0x9d, 0x12, 0xb7, 0x3f, 0x64, + 0x1f, 0x56, 0x0c, 0xd6, 0x5e, 0xa6, 0x7d, 0x40, 0xb8, 0xa8, 0x1e, 0x6c, 0x8f, 0xca, 0xbb, 0x86, 0x3d, 0x8b, 0x38, + 0xa7, 0x2a, 0x28, 0x6f, 0x16, 0x45, 0x38, 0xf2, 0xa6, 0x31, 0x84, 0xa6, 0x09, 0x15, 0xbf, 0xb8, 0x35, 0x03, 0x33, + 0x6f, 0x92, 0x19, 0x75, 0x2c, 0x18, 0x63, 0x75, 0xe1, 0xbd, 0xbe, 0x88, 0x3c, 0x07, 0x8d, 0xdd, 0x59, 0x9e, 0x99, + 0xa8, 0xa1, 0x6c, 0x43, 0xdb, 0x68, 0xe1, 0xb7, 0x63, 0xfe, 0xc2, 0xa2, 0x93, 0x67, 0x1c, 0x00, 0x35, 0x03, 0x39, + 0x8c, 0x65, 0xa6, 0xe9, 0x45, 0x4c, 0x42, 0x72, 0x1d, 0x6e, 0x46, 0x5e, 0x9a, 0xe5, 0x13, 0x16, 0x25, 0xa9, 0xe8, + 0xf0, 0xec, 0x14, 0x3e, 0xc6, 0xc0, 0xb4, 0x30, 0x63, 0xd5, 0xe5, 0x4a, 0x64, 0x17, 0xfa, 0x0f, 0xe0, 0x67, 0x76, + 0x5a, 0xcb, 0xd5, 0x15, 0xed, 0xcb, 0x17, 0xf4, 0xf1, 0x05, 0x0b, 0x5c, 0x76, 0x86, 0x55, 0x8d, 0x18, 0xdf, 0xd3, + 0x1e, 0x8c, 0x2e, 0x34, 0xb0, 0x6c, 0x01, 0x30, 0x91, 0x93, 0xa8, 0xfd, 0x56, 0x6d, 0x4e, 0xf1, 0x78, 0x37, 0xb2, + 0x7d, 0xed, 0x96, 0x51, 0xe8, 0x73, 0xdd, 0xbe, 0x48, 0x29, 0x24, 0xc1, 0xda, 0xb5, 0x13, 0xd6, 0x28, 0x0f, 0x4f, + 0x34, 0x2d, 0xb9, 0x13, 0x84, 0x39, 0x20, 0x15, 0x35, 0x56, 0x96, 0x4c, 0x82, 0x9b, 0xd0, 0xe5, 0x00, 0x9a, 0x4e, + 0x1e, 0xbb, 0xd8, 0xf5, 0xd3, 0x58, 0x0d, 0xea, 0x4a, 0x31, 0x16, 0x41, 0xe3, 0x50, 0x45, 0x36, 0xf0, 0x39, 0x45, + 0xfb, 0xa4, 0x5f, 0x23, 0x67, 0x59, 0x02, 0x0b, 0xfa, 0xa0, 0x3c, 0xc1, 0xde, 0x2d, 0xef, 0x9e, 0x1c, 0xf8, 0x69, + 0xe8, 0xb8, 0xd9, 0x53, 0x2c, 0x43, 0x30, 0x2b, 0xc6, 0x75, 0x11, 0x76, 0x2f, 0xd8, 0xa2, 0xfb, 0x18, 0xbd, 0xb1, + 0xa8, 0x60, 0x0d, 0xdf, 0xdb, 0xf7, 0xd8, 0x39, 0x93, 0xd8, 0x63, 0x43, 0x95, 0x28, 0x28, 0xde, 0x97, 0x50, 0x86, + 0x2e, 0x32, 0x7a, 0x79, 0xa8, 0xd6, 0x29, 0x50, 0xa9, 0xf8, 0x29, 0xdf, 0x5b, 0x81, 0x69, 0xea, 0xdd, 0x4b, 0xec, + 0xb0, 0xac, 0x5d, 0x0d, 0xd0, 0x0a, 0xc3, 0xa5, 0x5d, 0x84, 0xac, 0x3a, 0xc6, 0x67, 0x10, 0x22, 0x02, 0x8f, 0x16, + 0xf4, 0x1d, 0x17, 0xb1, 0xf5, 0xe4, 0x53, 0xc0, 0x41, 0xb2, 0xee, 0x8d, 0xa5, 0xff, 0xc2, 0xf2, 0xd5, 0x52, 0x77, + 0xbb, 0xd2, 0x91, 0xbd, 0x43, 0xa3, 0x65, 0x6b, 0x48, 0x17, 0xbb, 0x74, 0x61, 0x7b, 0xc2, 0x1f, 0x23, 0xa3, 0xb5, + 0xda, 0xd1, 0x63, 0xd8, 0xb8, 0x05, 0xcc, 0x6f, 0x85, 0x2e, 0x15, 0xdc, 0xcd, 0x5a, 0x3b, 0xc0, 0xa2, 0xd4, 0x38, + 0xc3, 0xb3, 0x06, 0x4d, 0x81, 0x89, 0xaa, 0x6a, 0x4f, 0x43, 0x0b, 0x72, 0xd8, 0x3a, 0x9c, 0x20, 0xe4, 0x68, 0xb8, + 0x3d, 0x86, 0x39, 0xbe, 0x2a, 0x21, 0x42, 0x9d, 0xcb, 0x15, 0xd6, 0xba, 0x40, 0x04, 0x31, 0x6b, 0x38, 0x35, 0x31, + 0x36, 0xdd, 0x24, 0x64, 0xd1, 0xa8, 0xad, 0x68, 0x2c, 0x84, 0x92, 0x8b, 0x14, 0xde, 0x26, 0x26, 0xf7, 0xe8, 0xb2, + 0x89, 0x4e, 0x5f, 0x72, 0xad, 0xd0, 0xb8, 0x0a, 0x6d, 0x6b, 0x05, 0x43, 0x6a, 0xb3, 0x4d, 0xdb, 0x43, 0xf6, 0x0e, + 0xb9, 0xf9, 0x63, 0x45, 0xb7, 0x3a, 0xd6, 0x27, 0x14, 0xaa, 0xd9, 0x96, 0x72, 0x6b, 0x8f, 0xcd, 0x80, 0xcf, 0xac, + 0x02, 0x7c, 0xb2, 0x52, 0x07, 0x80, 0x34, 0xcf, 0xd2, 0xea, 0xda, 0x69, 0xf8, 0xde, 0x50, 0xaa, 0xdb, 0x74, 0x61, + 0xa1, 0xa2, 0x2f, 0x1c, 0xae, 0x6f, 0x0e, 0xe8, 0x74, 0x04, 0x6d, 0x04, 0x26, 0xa9, 0x42, 0x1c, 0x72, 0x7b, 0xbe, + 0x13, 0x8a, 0x54, 0x78, 0xe2, 0x46, 0x2d, 0x84, 0xa3, 0x1e, 0xd5, 0x6a, 0xf5, 0x50, 0x49, 0xdb, 0xbc, 0xe6, 0xed, + 0xc3, 0xd7, 0x51, 0xf6, 0xa3, 0xdf, 0x16, 0x29, 0x4f, 0x11, 0x26, 0x1c, 0xa0, 0x5d, 0x75, 0xee, 0xe5, 0x9d, 0xf4, + 0x1e, 0x67, 0x31, 0x50, 0x78, 0xd1, 0x8a, 0xf9, 0x58, 0xb5, 0xa2, 0x2e, 0x9c, 0xe9, 0x79, 0x2c, 0xae, 0xee, 0xbe, + 0xbc, 0x2e, 0xee, 0x3b, 0x64, 0x5e, 0xe5, 0xd0, 0x03, 0x8c, 0x22, 0x13, 0xec, 0x70, 0x8a, 0xb6, 0x38, 0x7f, 0x8e, + 0x05, 0x8a, 0x88, 0x82, 0xbb, 0xa9, 0x18, 0xfe, 0xab, 0x2b, 0x49, 0xc8, 0x50, 0x42, 0x93, 0x89, 0xe6, 0x01, 0xcb, + 0xda, 0x12, 0xd0, 0xc0, 0x4f, 0x58, 0x42, 0x6e, 0xbf, 0x39, 0x58, 0x50, 0x25, 0x17, 0xbd, 0x97, 0x0c, 0xf3, 0x93, + 0x3a, 0x0a, 0x5b, 0x1d, 0x30, 0x2d, 0x2f, 0x90, 0x64, 0x0d, 0xf8, 0x50, 0x67, 0x74, 0x23, 0x9a, 0x4e, 0x59, 0xdd, + 0xd9, 0x44, 0x6c, 0x32, 0x47, 0x64, 0x1c, 0x83, 0xa3, 0xfe, 0x0e, 0x8e, 0xf5, 0xec, 0x10, 0xb3, 0xf8, 0xf6, 0x50, + 0x84, 0xee, 0xd9, 0xe7, 0xa0, 0x5c, 0x5f, 0xd1, 0xb0, 0x2e, 0xf1, 0x27, 0x64, 0xab, 0x19, 0x6e, 0x23, 0x79, 0xa4, + 0x95, 0xea, 0x90, 0xf1, 0x3d, 0x3b, 0x90, 0xd5, 0xbc, 0x72, 0x2f, 0x08, 0xb6, 0x4f, 0x1a, 0x31, 0xdc, 0x03, 0x35, + 0x04, 0x2e, 0xaa, 0x1d, 0x61, 0x04, 0x16, 0x3e, 0x54, 0x71, 0x34, 0xea, 0xa6, 0xf0, 0xef, 0x63, 0x00, 0x1f, 0x78, + 0x8b, 0xd3, 0x58, 0x8d, 0xdf, 0x8a, 0x40, 0x17, 0x68, 0x1d, 0x06, 0x2f, 0x64, 0xd8, 0x05, 0x83, 0x3e, 0x84, 0xcf, + 0xdb, 0xf4, 0x92, 0x7a, 0xdd, 0x0f, 0xd2, 0xd1, 0x0e, 0xc5, 0x26, 0x02, 0xcf, 0xe9, 0x20, 0xc4, 0xe3, 0x8f, 0x35, + 0xa3, 0x29, 0xa1, 0xe9, 0xfe, 0x8b, 0x28, 0x29, 0x93, 0x94, 0x14, 0x5c, 0xb5, 0xf6, 0x4a, 0xc8, 0x47, 0xab, 0x29, + 0x7c, 0x02, 0x3d, 0x5f, 0x90, 0xa2, 0x9f, 0xbe, 0x18, 0xd9, 0xdb, 0xd6, 0x03, 0x76, 0x38, 0xb8, 0x11, 0xe7, 0x4e, + 0x48, 0x89, 0xf6, 0x38, 0x13, 0x90, 0xe6, 0x86, 0xa0, 0xfa, 0x61, 0xa2, 0xa8, 0xc6, 0x0f, 0x41, 0x13, 0x9d, 0x1a, + 0x31, 0x97, 0x30, 0x63, 0xd5, 0xf0, 0x6a, 0x03, 0x4a, 0xca, 0xed, 0xe7, 0x7e, 0x4a, 0xe9, 0xc0, 0xf6, 0x61, 0xab, + 0x89, 0x8c, 0xb6, 0x9b, 0x6b, 0xc9, 0x58, 0xfb, 0xca, 0x06, 0xaf, 0xa4, 0xd4, 0x31, 0xe7, 0xbc, 0xb0, 0xa3, 0x78, + 0x51, 0x0f, 0xad, 0x52, 0x8e, 0x2e, 0x03, 0x27, 0xf0, 0xec, 0x02, 0xb4, 0x0c, 0xa9, 0x9a, 0x35, 0x60, 0xdf, 0x2a, + 0x04, 0x91, 0x9d, 0x21, 0xf0, 0x73, 0x58, 0xfa, 0xb6, 0x97, 0xa8, 0x67, 0xd8, 0xfa, 0x03, 0x37, 0x6e, 0xec, 0x27, + 0x23, 0x3e, 0x63, 0x59, 0xf6, 0xc6, 0xd7, 0xe8, 0xa6, 0xf1, 0x49, 0x39, 0x6b, 0x83, 0xe2, 0x2a, 0xbe, 0x81, 0xd1, + 0x55, 0x6e, 0x80, 0xcd, 0x71, 0x8f, 0x26, 0x21, 0x03, 0x2a, 0x0f, 0x5c, 0x11, 0x47, 0x51, 0x33, 0x91, 0x04, 0xba, + 0xf5, 0xd4, 0x5c, 0x68, 0xde, 0x95, 0xa0, 0xca, 0xc2, 0xb1, 0x78, 0xcb, 0x8e, 0x34, 0x80, 0xe5, 0x4c, 0xb4, 0x6d, + 0x82, 0x21, 0x42, 0xf0, 0x16, 0xe8, 0xb2, 0x3c, 0x4f, 0xcc, 0xa3, 0x81, 0x04, 0xa3, 0x89, 0x18, 0x2d, 0xb2, 0xfa, + 0x7e, 0x07, 0x07, 0x08, 0x51, 0x06, 0xc2, 0xcf, 0xd7, 0x34, 0x66, 0x8a, 0x77, 0x17, 0x5f, 0xdc, 0xed, 0x81, 0xfc, + 0x9e, 0x58, 0x37, 0x3d, 0xa1, 0x15, 0xef, 0x32, 0x50, 0x89, 0x8c, 0xc6, 0x68, 0x4e, 0x73, 0xf0, 0x96, 0xff, 0x50, + 0x55, 0x10, 0x7f, 0x91, 0x85, 0xec, 0xfe, 0x40, 0x8a, 0x40, 0x32, 0x8d, 0x13, 0x06, 0xb9, 0x28, 0xe5, 0xd1, 0x5b, + 0xab, 0x64, 0xd5, 0xa3, 0x4c, 0xde, 0xd9, 0xf3, 0x6d, 0x02, 0xa0, 0xab, 0x7c, 0x34, 0xb2, 0x4d, 0x48, 0xb7, 0x1d, + 0xbf, 0x00, 0x62, 0x69, 0xe6, 0x6b, 0x8d, 0xe8, 0x97, 0x52, 0x3d, 0x1b, 0x92, 0x95, 0x66, 0x08, 0x6d, 0x85, 0xfd, + 0xbd, 0x34, 0xe2, 0x93, 0x29, 0xe1, 0x53, 0x3b, 0x27, 0x71, 0x4e, 0x2f, 0x34, 0x9b, 0x80, 0x14, 0x65, 0x3d, 0x5e, + 0xbe, 0x77, 0x11, 0x29, 0xb2, 0x61, 0x9a, 0xfc, 0xfa, 0x8e, 0x61, 0x65, 0x0e, 0x5f, 0xa5, 0x42, 0xee, 0xff, 0x34, + 0xe0, 0x85, 0x50, 0x1f, 0xae, 0xcb, 0x7e, 0x09, 0x82, 0xc4, 0x8a, 0x12, 0xcb, 0x3f, 0xff, 0x30, 0x69, 0x9f, 0xcd, + 0x6b, 0x8e, 0xbd, 0x37, 0x1f, 0x55, 0x94, 0xc4, 0xc6, 0xb2, 0x2f, 0x33, 0x20, 0x8c, 0xbf, 0xcd, 0x26, 0x58, 0xf4, + 0xf9, 0x13, 0x80, 0x9f, 0x81, 0x63, 0x1b, 0xa9, 0x5f, 0x0e, 0x0b, 0xb3, 0x4c, 0x37, 0x7f, 0x9d, 0x1c, 0xab, 0x23, + 0xa8, 0xba, 0xbe, 0x32, 0x7b, 0x51, 0x90, 0xd7, 0x7e, 0x39, 0x55, 0x05, 0x57, 0xf3, 0xe5, 0xc2, 0x33, 0x74, 0x33, + 0x3c, 0xf0, 0x36, 0xf9, 0x1e, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, + 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x9a, + 0x99, 0x99, 0x19, 0x66, 0x66, 0x66, 0xe6, 0x32, 0xb5, 0x32, 0xb3, 0xcd, 0x4a, 0x1f, 0x99, 0x01, 0xf4, 0x16, 0x36, + 0xcf, 0xc0, 0xf7, 0xa8, 0x95, 0xa5, 0x15, 0x26, 0xcc, 0x4b, 0xc7, 0x22, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x8b, 0x2e, + 0xba, 0x8a, 0xf6, 0xcf, 0x45, 0x31, 0xf2, 0xda, 0x34, 0x79, 0x21, 0x93, 0x4e, 0x07, 0x50, 0x1d, 0x5d, 0x2a, 0x89, + 0x03, 0xe0, 0x62, 0xaf, 0x63, 0x69, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, + 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, + 0x3c, 0xb1, 0x13, 0x3b, 0x3a, 0xb1, 0x13, 0x3b, 0x3a, 0x75, 0x88, 0x9d, 0x3d, 0xed, 0x02, 0xbd, 0xb5, 0x7b, 0x26, + 0x08, 0xb8, 0x7b, 0xce, 0x8d, 0x9f, 0x42, 0x85, 0x0f, 0x5a, 0xdc, 0x17, 0x62, 0x93, 0x24, 0x49, 0x12, 0x6d, 0xdb, + 0xb6, 0xed, 0x23, 0x3b, 0x91, 0xa4, 0x6f, 0xe9, 0xf9, 0xfe, 0x27, 0x9d, 0x0c, 0xbd, 0x29, 0x9d, 0x80, 0x45, 0x65, + 0x87, 0x77, 0x08, 0xda, 0x7d, 0x86, 0x4a, 0x67, 0x66, 0x66, 0x66, 0xee, 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, + 0xdf, 0xbd, 0xfe, 0x81, 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, 0x0d, 0xd7, 0x7b, 0xed, 0x42, 0x27, 0xf9, 0x14, 0xd4, + 0x3d, 0x01, 0x00, 0x00, 0x10, 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, 0xcf, 0xc2, 0xc9, 0x81, 0xfe, 0x84, 0xba, + 0x07, 0x89, 0x87, 0x3a, 0x06, 0xb0, 0x73, 0xa5, 0x03, 0xf7, 0xdd, 0xcc, 0xae, 0x6c, 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, + 0xf0, 0xf0, 0xf0, 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, + 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, 0x9a, 0x99, 0x99, 0x19, 0x66, 0x66, 0x66, 0xe6, 0x32, 0xb5, 0x32, + 0xb3, 0xcd, 0x4a, 0x1f, 0x99, 0x01, 0xf4, 0x16, 0x36, 0xcf, 0xc0, 0xf7, 0xa8, 0x95, 0xa5, 0x15, 0x26, 0xcc, 0x4b, + 0xc7, 0x22, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x8b, 0x2e, 0xba, 0x8a, 0xf6, 0xcf, 0x45, 0x31, 0xf2, 0xda, 0x34, 0x79, + 0x21, 0x93, 0x4e, 0x07, 0x50, 0x1d, 0x5d, 0x2a, 0x89, 0x03, 0xe0, 0x62, 0xaf, 0x63, 0x69, 0x01, 0x00, 0x00, 0xc0, + 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, + 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x3c, 0xb1, 0x13, 0x3b, 0x3a, 0xb1, 0x13, 0x3b, 0x3a, 0x75, + 0x88, 0x9d, 0x3d, 0xed, 0x02, 0xbd, 0xb5, 0x7b, 0x26, 0x08, 0xb8, 0x7b, 0xce, 0x8d, 0x9f, 0x42, 0x85, 0x0f, 0x5a, + 0xdc, 0x17, 0x62, 0x93, 0x24, 0x49, 0x12, 0x6d, 0xdb, 0xb6, 0xed, 0x23, 0x3b, 0x91, 0xa4, 0x6f, 0xe9, 0xf9, 0xfe, + 0x27, 0x9d, 0x0c, 0xbd, 0x29, 0x9d, 0x80, 0x45, 0x65, 0x87, 0x77, 0x08, 0xda, 0x7d, 0x86, 0x4a, 0x67, 0x66, 0x66, + 0x66, 0xee, 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, 0xdf, 0xbd, 0xfe, 0x81, 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, + 0x0d, 0xd7, 0x7b, 0xed, 0x42, 0x27, 0xf9, 0x14, 0xd4, 0x3d, 0x01, 0x00, 0x00, 0x10, 0xff, 0xff, 0xff, 0x0f, 0x3f, + 0x76, 0xfe, 0xcf, 0xc2, 0xc9, 0x81, 0xfe, 0x84, 0xba, 0x07, 0x89, 0x87, 0x3a, 0x06, 0xb0, 0x73, 0xa5, 0x03, 0xf7, + 0xdd, 0xcc, 0xae, 0x6c, 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, + 0xc8, 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, 0x56, 0x55, + 0x55, 0xd5, 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, 0x3a, 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, 0x76, + 0x20, 0x15, 0x91, 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, 0xd8, 0x46, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x8b, 0x2e, 0xba, + 0x8a, 0xf6, 0xcf, 0x45, 0x31, 0xf2, 0xda, 0x34, 0x79, 0x21, 0x93, 0x4e, 0x07, 0x50, 0x1d, 0x5d, 0x2a, 0x89, 0x03, + 0xe0, 0x62, 0xaf, 0x63, 0x69, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, + 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x3c, + 0xb1, 0x13, 0x3b, 0x3a, 0xb1, 0x13, 0x3b, 0x3a, 0x75, 0x88, 0x9d, 0x3d, 0xed, 0x02, 0xbd, 0xb5, 0x7b, 0x26, 0x08, + 0xb8, 0x7b, 0xce, 0x8d, 0x9f, 0x42, 0x85, 0x0f, 0x5a, 0xdc, 0x17, 0x62, 0x93, 0x24, 0x49, 0x12, 0x6d, 0xdb, 0xb6, + 0xed, 0x23, 0x3b, 0x91, 0xa4, 0x6f, 0xe9, 0xf9, 0xfe, 0x27, 0x9d, 0x0c, 0xbd, 0x29, 0x9d, 0x80, 0x45, 0x65, 0x87, + 0x77, 0x08, 0xda, 0x7d, 0x86, 0x4a, 0x67, 0x66, 0x66, 0x66, 0xee, 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, 0xdf, + 0xbd, 0xfe, 0x81, 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, 0x0d, 0xd7, 0x7b, 0xed, 0x42, 0x27, 0xf9, 0x14, 0xd4, 0x3d, + 0x01, 0x00, 0x00, 0x10, 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, 0xcf, 0xc2, 0xc9, 0x81, 0xfe, 0x84, 0xba, 0x07, + 0x89, 0x87, 0x3a, 0x06, 0xb0, 0x73, 0xa5, 0x03, 0xf7, 0xdd, 0xcc, 0xae, 0x6c, 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, + 0xf0, 0xf0, 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, 0xb6, + 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, 0x56, 0x55, 0x55, 0xd5, 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, + 0x3a, 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, 0x76, 0x20, 0x15, 0x91, 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, 0xd8, + 0x46, 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca, 0x6b, 0x28, 0xc9, 0x13, 0xbb, 0x86, 0xa4, 0x14, 0xdc, 0x41, 0x99, 0xe7, + 0x70, 0x67, 0x73, 0x38, 0x5f, 0x81, 0x0e, 0xba, 0x87, 0xf1, 0xfd, 0xab, 0xd3, 0x6d, 0x01, 0x00, 0x00, 0xc0, 0xa9, + 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, + 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x3c, 0xb1, 0x13, 0x3b, 0x3a, 0xb1, 0x13, 0x3b, 0x3a, 0x75, 0x88, + 0x9d, 0x3d, 0xed, 0x02, 0xbd, 0xb5, 0x7b, 0x26, 0x08, 0xb8, 0x7b, 0xce, 0x8d, 0x9f, 0x42, 0x85, 0x0f, 0x5a, 0xdc, + 0x17, 0x62, 0x93, 0x24, 0x49, 0x12, 0x6d, 0xdb, 0xb6, 0xed, 0x23, 0x3b, 0x91, 0xa4, 0x6f, 0xe9, 0xf9, 0xfe, 0x27, + 0x9d, 0x0c, 0xbd, 0x29, 0x9d, 0x80, 0x45, 0x65, 0x87, 0x77, 0x08, 0xda, 0x7d, 0x86, 0x4a, 0x67, 0x66, 0x66, 0x66, + 0xee, 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, 0xdf, 0xbd, 0xfe, 0x81, 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, 0x0d, + 0xd7, 0x7b, 0xed, 0x42, 0x27, 0xf9, 0x14, 0xd4, 0x3d, 0x01, 0x00, 0x00, 0x10, 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, + 0xfe, 0xcf, 0xc2, 0xc9, 0x81, 0xfe, 0x84, 0xba, 0x07, 0x89, 0x87, 0x3a, 0x06, 0xb0, 0x73, 0xa5, 0x03, 0xf7, 0xdd, + 0xcc, 0xae, 0x6c, 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, + 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, 0x56, 0x55, 0x55, + 0xd5, 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, 0x3a, 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, 0x76, 0x20, + 0x15, 0x91, 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, 0xd8, 0x46, 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca, 0x6b, 0x28, 0xc9, + 0x13, 0xbb, 0x86, 0xa4, 0x14, 0xdc, 0x41, 0x99, 0xe7, 0x70, 0x67, 0x73, 0x38, 0x5f, 0x81, 0x0e, 0xba, 0x87, 0xf1, + 0xfd, 0xab, 0xd3, 0x6d, 0xcd, 0xcc, 0xcc, 0x0c, 0x33, 0x33, 0x33, 0x73, 0x99, 0x5a, 0x99, 0xd9, 0x66, 0xa5, 0x8f, + 0xcc, 0x00, 0x7a, 0x0b, 0x9b, 0x67, 0xe0, 0x7b, 0xd4, 0xca, 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, 0x3c, 0xb1, + 0x13, 0x3b, 0x3a, 0xb1, 0x13, 0x3b, 0x3a, 0x75, 0x88, 0x9d, 0x3d, 0xed, 0x02, 0xbd, 0xb5, 0x7b, 0x26, 0x08, 0xb8, + 0x7b, 0xce, 0x8d, 0x9f, 0x42, 0x85, 0x0f, 0x5a, 0xdc, 0x17, 0x62, 0x93, 0x24, 0x49, 0x12, 0x6d, 0xdb, 0xb6, 0xed, + 0x23, 0x3b, 0x91, 0xa4, 0x6f, 0xe9, 0xf9, 0xfe, 0x27, 0x9d, 0x0c, 0xbd, 0x29, 0x9d, 0x80, 0x45, 0x65, 0x87, 0x77, + 0x08, 0xda, 0x7d, 0x86, 0x4a, 0x67, 0x66, 0x66, 0x66, 0xee, 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, 0xdf, 0xbd, + 0xfe, 0x81, 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, 0x0d, 0xd7, 0x7b, 0xed, 0x42, 0x27, 0xf9, 0x14, 0xd4, 0x3d, 0x01, + 0x00, 0x00, 0x10, 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, 0xcf, 0xc2, 0xc9, 0x81, 0xfe, 0x84, 0xba, 0x07, 0x89, + 0x87, 0x3a, 0x06, 0xb0, 0x73, 0xa5, 0x03, 0xf7, 0xdd, 0xcc, 0xae, 0x6c, 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, + 0xf0, 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, + 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, 0x56, 0x55, 0x55, 0xd5, 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, 0x3a, + 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, 0x76, 0x20, 0x15, 0x91, 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, 0xd8, 0x46, + 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca, 0x6b, 0x28, 0xc9, 0x13, 0xbb, 0x86, 0xa4, 0x14, 0xdc, 0x41, 0x99, 0xe7, 0x70, + 0x67, 0x73, 0x38, 0x5f, 0x81, 0x0e, 0xba, 0x87, 0xf1, 0xfd, 0xab, 0xd3, 0x6d, 0xcd, 0xcc, 0xcc, 0x0c, 0x33, 0x33, + 0x33, 0x73, 0x99, 0x5a, 0x99, 0xd9, 0x66, 0xa5, 0x8f, 0xcc, 0x00, 0x7a, 0x0b, 0x9b, 0x67, 0xe0, 0x7b, 0xd4, 0xca, + 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, 0xb7, 0x6d, 0xdb, 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, 0x08, 0x0c, 0xc3, + 0x9e, 0x0f, 0x12, 0x8e, 0xc3, 0x20, 0x7d, 0x25, 0x19, 0x76, 0x42, 0x1d, 0xd6, 0x85, 0x70, 0xa2, 0x75, 0x71, 0x0a, + 0x0b, 0x93, 0x24, 0x49, 0x12, 0x6d, 0xdb, 0xb6, 0xed, 0x23, 0x3b, 0x91, 0xa4, 0x6f, 0xe9, 0xf9, 0xfe, 0x27, 0x9d, + 0x0c, 0xbd, 0x29, 0x9d, 0x80, 0x45, 0x65, 0x87, 0x77, 0x08, 0xda, 0x7d, 0x86, 0x4a, 0x67, 0x66, 0x66, 0x66, 0xee, + 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, 0xdf, 0xbd, 0xfe, 0x81, 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, 0x0d, 0xd7, + 0x7b, 0xed, 0x42, 0x27, 0xf9, 0x14, 0xd4, 0x3d, 0x01, 0x00, 0x00, 0x10, 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, + 0xcf, 0xc2, 0xc9, 0x81, 0xfe, 0x84, 0xba, 0x07, 0x89, 0x87, 0x3a, 0x06, 0xb0, 0x73, 0xa5, 0x03, 0xf7, 0xdd, 0xcc, + 0xae, 0x6c, 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, 0x88, + 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, 0x56, 0x55, 0x55, 0xd5, + 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, 0x3a, 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, 0x76, 0x20, 0x15, + 0x91, 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, 0xd8, 0x46, 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca, 0x6b, 0x28, 0xc9, 0x13, + 0xbb, 0x86, 0xa4, 0x14, 0xdc, 0x41, 0x99, 0xe7, 0x70, 0x67, 0x73, 0x38, 0x5f, 0x81, 0x0e, 0xba, 0x87, 0xf1, 0xfd, + 0xab, 0xd3, 0x6d, 0xcd, 0xcc, 0xcc, 0x0c, 0x33, 0x33, 0x33, 0x73, 0x99, 0x5a, 0x99, 0xd9, 0x66, 0xa5, 0x8f, 0xcc, + 0x00, 0x7a, 0x0b, 0x9b, 0x67, 0xe0, 0x7b, 0xd4, 0xca, 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, 0xb7, 0x6d, 0xdb, + 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, 0x08, 0x0c, 0xc3, 0x9e, 0x0f, 0x12, 0x8e, 0xc3, 0x20, 0x7d, 0x25, 0x19, 0x76, + 0x42, 0x1d, 0xd6, 0x85, 0x70, 0xa2, 0x75, 0x71, 0x0a, 0x0b, 0x01, 0x00, 0x00, 0x80, 0xd0, 0x45, 0x17, 0xdd, 0x44, + 0x29, 0xe7, 0x22, 0x1a, 0x4b, 0x4c, 0x44, 0xbf, 0x7c, 0x1a, 0xac, 0x07, 0x94, 0x2b, 0x48, 0x39, 0x83, 0xd0, 0x04, + 0x5b, 0xab, 0xa8, 0x6e, 0x67, 0x66, 0x66, 0x66, 0xee, 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, 0xdf, 0xbd, 0xfe, + 0x81, 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, 0x0d, 0xd7, 0x7b, 0xed, 0x42, 0x27, 0xf9, 0x14, 0xd4, 0x3d, 0x01, 0x00, + 0x00, 0x10, 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, 0xcf, 0xc2, 0xc9, 0x81, 0xfe, 0x84, 0xba, 0x07, 0x89, 0x87, + 0x3a, 0x06, 0xb0, 0x73, 0xa5, 0x03, 0xf7, 0xdd, 0xcc, 0xae, 0x6c, 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, + 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, + 0xaf, 0x31, 0xfa, 0x46, 0x1b, 0x56, 0x55, 0x55, 0xd5, 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, 0x3a, 0xe4, + 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, 0x76, 0x20, 0x15, 0x91, 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, 0xd8, 0x46, 0x01, + 0x00, 0x00, 0x00, 0x1a, 0xca, 0x6b, 0x28, 0xc9, 0x13, 0xbb, 0x86, 0xa4, 0x14, 0xdc, 0x41, 0x99, 0xe7, 0x70, 0x67, + 0x73, 0x38, 0x5f, 0x81, 0x0e, 0xba, 0x87, 0xf1, 0xfd, 0xab, 0xd3, 0x6d, 0xcd, 0xcc, 0xcc, 0x0c, 0x33, 0x33, 0x33, + 0x73, 0x99, 0x5a, 0x99, 0xd9, 0x66, 0xa5, 0x8f, 0xcc, 0x00, 0x7a, 0x0b, 0x9b, 0x67, 0xe0, 0x7b, 0xd4, 0xca, 0xd2, + 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, 0xb7, 0x6d, 0xdb, 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, 0x08, 0x0c, 0xc3, 0x9e, + 0x0f, 0x12, 0x8e, 0xc3, 0x20, 0x7d, 0x25, 0x19, 0x76, 0x42, 0x1d, 0xd6, 0x85, 0x70, 0xa2, 0x75, 0x71, 0x0a, 0x0b, + 0x01, 0x00, 0x00, 0x80, 0xd0, 0x45, 0x17, 0xdd, 0x44, 0x29, 0xe7, 0x22, 0x1a, 0x4b, 0x4c, 0x44, 0xbf, 0x7c, 0x1a, + 0xac, 0x07, 0x94, 0x2b, 0x48, 0x39, 0x83, 0xd0, 0x04, 0x5b, 0xab, 0xa8, 0x6e, 0xb3, 0x90, 0x85, 0x2c, 0x58, 0xc8, + 0x42, 0x16, 0xa6, 0x87, 0xa5, 0x37, 0xe1, 0xa4, 0x8e, 0x32, 0x8a, 0x4c, 0x12, 0x99, 0xe5, 0x14, 0x75, 0x7a, 0xcf, + 0x61, 0x03, 0xc0, 0xc2, 0xa7, 0xce, 0x64, 0x01, 0x00, 0x00, 0x10, 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, 0xcf, + 0xc2, 0xc9, 0x81, 0xfe, 0x84, 0xba, 0x07, 0x89, 0x87, 0x3a, 0x06, 0xb0, 0x73, 0xa5, 0x03, 0xf7, 0xdd, 0xcc, 0xae, + 0x6c, 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, + 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, 0x56, 0x55, 0x55, 0xd5, 0x1b, + 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, 0x3a, 0xe4, 0xf3, 0x24, 0x3c, 0x92, 0x8d, 0xb0, 0x76, 0x20, 0x15, 0x91, + 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, 0xd8, 0x46, 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca, 0x6b, 0x28, 0xc9, 0x13, 0xbb, + 0x86, 0xa4, 0x14, 0xdc, 0x41, 0x99, 0xe7, 0x70, 0x67, 0x73, 0x38, 0x5f, 0x81, 0x0e, 0xba, 0x87, 0xf1, 0xfd, 0xab, + 0xd3, 0x6d, 0xcd, 0xcc, 0xcc, 0x0c, 0x33, 0x33, 0x33, 0x73, 0x99, 0x5a, 0x99, 0xd9, 0x66, 0xa5, 0x8f, 0xcc, 0x00, + 0x7a, 0x0b, 0x9b, 0x67, 0xe0, 0x7b, 0xd4, 0xca, 0xd2, 0x0a, 0x13, 0xe6, 0xa5, 0x63, 0x11, 0xb7, 0x6d, 0xdb, 0xb6, + 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, 0x08, 0x0c, 0xc3, 0x9e, 0x0f, 0x12, 0x8e, 0xc3, 0x20, 0x7d, 0x25, 0x19, 0x76, 0x42, + 0x1d, 0xd6, 0x85, 0x70, 0xa2, 0x75, 0x71, 0x0a, 0x0b, 0x01, 0x00, 0x00, 0x80, 0xd0, 0x45, 0x17, 0xdd, 0x44, 0x29, + 0xe7, 0x22, 0x1a, 0x4b, 0x4c, 0x44, 0xbf, 0x7c, 0x1a, 0xac, 0x07, 0x94, 0x2b, 0x48, 0x39, 0x83, 0xd0, 0x04, 0x5b, + 0xab, 0xa8, 0x6e, 0xb3, 0x90, 0x85, 0x2c, 0x58, 0xc8, 0x42, 0x16, 0xa6, 0x87, 0xa5, 0x37, 0xe1, 0xa4, 0x8e, 0x32, + 0x8a, 0x4c, 0x12, 0x99, 0xe5, 0x14, 0x75, 0x7a, 0xcf, 0x61, 0x03, 0xc0, 0xc2, 0xa7, 0xce, 0x64, 0x01, 0x00, 0x00, + 0x60, 0x54, 0x55, 0x55, 0xb5, 0x29, 0x18, 0xa9, 0x8a, 0x2d, 0xbd, 0x95, 0xc5, 0xaf, 0x19, 0x3b, 0x09, 0x5d, 0xc4, + 0x6c, 0x86, 0xba, 0x42, 0x8c, 0xb2, 0xaf, 0x15, 0x19, 0x6f, 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, 0x2c, + 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, 0xaf, + 0x31, 0xfa, 0x46, 0x1b, 0x56, 0x55, 0x55, 0xd5, 0x1b, 0xc7, 0x71, 0x9c, 0x8d, 0x8d, 0xe2, 0xb8, 0x3a, 0xe4, 0xf3, + 0x24, 0x3c, 0x92, 0x8d, 0xb0, 0x76, 0x20, 0x15, 0x91, 0xc8, 0x5a, 0xa7, 0x27, 0x08, 0x58, 0xd8, 0x46, 0x01, 0x00, + 0x00, 0x00, 0x1a, 0xca, 0x6b, 0x28, 0xc9, 0x13, 0xbb, 0x86, 0xa4, 0x14, 0xdc, 0x41, 0x99, 0xe7, 0x70, 0x67, 0x73, + 0x38, 0x5f, 0x81, 0x0e, 0xba, 0x87, 0xf1, 0xfd, 0xab, 0xd3, 0x6d, 0xcd, 0xcc, 0xcc, 0x0c, 0x33, 0x33, 0x33, 0x73, + 0x99, 0x5a, 0x99, 0xd9, 0x66, 0xa5, 0x8f, 0xcc, 0x00, 0x7a, 0x0b, 0x9b, 0x67, 0xe0, 0x7b, 0xd4, 0xca, 0xd2, 0x0a, + 0x13, 0xe6, 0xa5, 0x63, 0x11, 0xb7, 0x6d, 0xdb, 0xb6, 0xf3, 0x3c, 0xcf, 0xf3, 0xc2, 0x08, 0x0c, 0xc3, 0x9e, 0x0f, + 0x12, 0x8e, 0xc3, 0x20, 0x7d, 0x25, 0x19, 0x76, 0x42, 0x1d, 0xd6, 0x85, 0x70, 0xa2, 0x75, 0x71, 0x0a, 0x0b, 0x01, + 0x00, 0x00, 0x80, 0xd0, 0x45, 0x17, 0xdd, 0x44, 0x29, 0xe7, 0x22, 0x1a, 0x4b, 0x4c, 0x44, 0xbf, 0x7c, 0x1a, 0xac, + 0x07, 0x94, 0x2b, 0x48, 0x39, 0x83, 0xd0, 0x04, 0x5b, 0xab, 0xa8, 0x6e, 0xb3, 0x90, 0x85, 0x2c, 0x58, 0xc8, 0x42, + 0x16, 0xa6, 0x87, 0xa5, 0x37, 0xe1, 0xa4, 0x8e, 0x32, 0x8a, 0x4c, 0x12, 0x99, 0xe5, 0x14, 0x75, 0x7a, 0xcf, 0x61, + 0x03, 0xc0, 0xc2, 0xa7, 0xce, 0x64, 0x01, 0x00, 0x00, 0x60, 0x54, 0x55, 0x55, 0xb5, 0x29, 0x18, 0xa9, 0x8a, 0x2d, + 0xbd, 0x95, 0xc5, 0xaf, 0x19, 0x3b, 0x09, 0x5d, 0xc4, 0x6c, 0x86, 0xba, 0x42, 0x8c, 0xb2, 0xaf, 0x15, 0x19, 0x6f, + 0xd8, 0xa3, 0x70, 0x3d, 0x5b, 0x8f, 0xc2, 0xf5, 0x79, 0xf8, 0x12, 0xae, 0x54, 0xd4, 0x3d, 0x80, 0x9e, 0x41, 0x24, + 0xea, 0xf2, 0xf9, 0x2a, 0x06, 0xdc, 0x0c, 0xed, 0x96, 0xfa, 0x70, 0xa7, 0x6a, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, + 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, + 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xb8, 0x24, 0xdc, 0x01, 0xa9, 0xd5, 0x37, 0xa5, 0xee, 0x62, 0x67, 0xb0, + 0xaa, 0xc3, 0x43, 0xf7, 0xdd, 0x9c, 0x81, 0x5a, 0x1c, 0x50, 0x97, 0xef, 0x44, 0x96, 0xda, 0x9f, 0xdd, 0xa8, 0xa2, + 0x48, 0x03, 0xf8, 0x38, 0xb5, 0x5a, 0x44, 0x52, 0x5c, 0xc6, 0xa3, 0x54, 0x0f, 0xa4, 0x52, 0x93, 0xc4, 0x7f, 0xe6, + 0x3b, 0xb7, 0x72, 0x12, 0x2b, 0x09, 0x55, 0x08, 0xa5, 0xa3, 0xbb, 0x87, 0xe3, 0x4c, 0x07, 0x11, 0x93, 0x1e, 0xe4, + 0x5c, 0x3a, 0x98, 0x2e, 0x9b, 0xec, 0x7c, 0xca, 0x20, 0xa7, 0x1f, 0xf6, 0x31, 0xf1, 0x09, 0x88, 0x38, 0x4e, 0x10, + 0x62, 0x19, 0x58, 0x03, 0x95, 0x14, 0x44, 0x25, 0x35, 0x6a, 0x26, 0x34, 0x91, 0xc3, 0x6c, 0x3d, 0x2f, 0xe8, 0x8d, + 0x46, 0xe2, 0x7e, 0xf5, 0x7f, 0x33, 0x87, 0x0d, 0x08, 0x10, 0xe3, 0xf4, 0x91, 0xda, 0xd8, 0x76, 0xed, 0x53, 0x9a, + 0x3b, 0x63, 0x57, 0x8f, 0x23, 0xdf, 0x20, 0x8a, 0x08, 0xbc, 0xf4, 0xb0, 0xbb, 0xc5, 0x63, 0x4c, 0x15, 0x97, 0x09, + 0xb0, 0xd0, 0x33, 0x3c, 0xf7, 0x72, 0xe6, 0xea, 0xc9, 0x69, 0x3f, 0xee, 0x31, 0x84, 0x67, 0xdb, 0x0e, 0xf7, 0x36, + 0xe6, 0xb0, 0xf6, 0xe5, 0xc6, 0x9f, 0x54, 0x40, 0x45, 0x73, 0x98, 0x32, 0x49, 0xbf, 0x02, 0x52, 0x3a, 0xe4, 0xb6, + 0x61, 0xd1, 0x0f, 0x45, 0x2a, 0x91, 0x7f, 0x0f, 0x41, 0x8f, 0xd7, 0x7d, 0xc0, 0x8c, 0x30, 0x00, 0x5d, 0x2f, 0x20, + 0xb9, 0x74, 0xdf, 0x1e, 0xec, 0xe1, 0x60, 0x81, 0xd5, 0x9f, 0xac, 0xec, 0x80, 0x8f, 0x4a, 0x66, 0x6a, 0x56, 0xdc, + 0xcd, 0xcd, 0x64, 0xcd, 0xc8, 0x30, 0xef, 0x5c, 0x67, 0x93, 0x2e, 0x66, 0x26, 0xd2, 0x73, 0xc6, 0x83, 0x2d, 0xfe, + 0x3a, 0x54, 0xea, 0x8f, 0x37, 0x8c, 0xbf, 0xef, 0x0f, 0x2d, 0x31, 0x0b, 0x21, 0x1f, 0xfb, 0x41, 0x9a, 0x99, 0x99, + 0x19, 0x66, 0x66, 0x66, 0xe6, 0x32, 0xb5, 0x32, 0xb3, 0xcd, 0x4a, 0x1f, 0x99, 0x01, 0xf4, 0x16, 0x36, 0xcf, 0xc0, + 0xf7, 0xa8, 0x95, 0xa5, 0x15, 0x26, 0xcc, 0x4b, 0xc7, 0x22, 0xe8, 0x07, 0x10, 0x7b, 0x71, 0x55, 0xb5, 0x26, 0x08, + 0xfa, 0x76, 0xb0, 0xa1, 0x28, 0x86, 0x8e, 0xe8, 0x04, 0x8b, 0x37, 0xfa, 0x56, 0xa4, 0xd3, 0x28, 0x8d, 0x80, 0x4e, + 0x41, 0x2e, 0xb0, 0x2a, 0x1c, 0x1e, 0x81, 0xe2, 0xab, 0x23, 0xa8, 0xaf, 0x38, 0xdb, 0xfd, 0x59, 0x7d, 0x9a, 0xe0, + 0x0f, 0x25, 0x99, 0x64, 0xfe, 0xf0, 0x29, 0x66, 0x4a, 0x70, 0x87, 0xc1, 0x5c, 0xf9, 0xd8, 0x63, 0x28, 0x4e, 0x16, + 0xfe, 0xbf, 0xdd, 0x24, 0x3c, 0xca, 0xf1, 0x4b, 0x15, 0xf3, 0x30, 0xe3, 0x42, 0x53, 0xdb, 0x59, 0xf1, 0x78, 0xd6, + 0x37, 0xbd, 0xd9, 0x1e, 0x40, 0x93, 0xcd, 0x8b, 0xb5, 0x17, 0x0b, 0xef, 0xa4, 0x62, 0xfb, 0x29, 0xf2, 0xac, 0x00, + 0xc5, 0xbb, 0x09, 0x53, 0x77, 0x36, 0x86, 0x97, 0x7d, 0xe1, 0x2f, 0xff, 0x28, 0xfd, 0xff, 0xbf, 0xab, 0x7d, 0xd6, + 0xec, 0x3a, 0x89, 0x37, 0x38, 0x26, 0xf5, 0x66, 0xba, 0x00, 0xe9, 0x93, 0xa6, 0xaa, 0xc9, 0x3b, 0x0f, 0x82, 0xd9, + 0x40, 0x78, 0x35, 0x4d, 0x89, 0xa3, 0x06, 0xc7, 0x6a, 0x28, 0x40, 0x6d, 0xa6, 0x4f, 0x1e, 0x1c, 0x2d, 0x73, 0x7e, + 0x1c, 0x1d, 0x76, 0x3f, 0xc7, 0x04, 0x5f, 0x2d, 0x46, 0x79, 0x88, 0xb0, 0xa9, 0x5c, 0xbf, 0xfb, 0x17, 0xeb, 0x94, + 0x85, 0x50, 0x76, 0x1c, 0x58, 0x74, 0xc2, 0x63, 0x03, 0xeb, 0xf7, 0x12, 0x66, 0xfe, 0x4c, 0xc4, 0xde, 0x76, 0x99, + 0x6b, 0x73, 0x5b, 0x0a, 0xa5, 0x64, 0x12, 0xd9, 0xfb, 0xf5, 0xcb, 0x8f, 0xfc, 0x13, 0xf2, 0xea, 0x5d, 0xe3, 0xda, + 0x8e, 0x5a, 0x95, 0x51, 0xd9, 0x37, 0xa4, 0xf1, 0xe5, 0x6b, 0x98, 0x74, 0xb1, 0x02, 0x2b, 0xf2, 0x95, 0x7f, 0x40, + 0x1d, 0x14, 0xf1, 0xda, 0x64, 0xb3, 0xc2, 0xbd, 0x70, 0x08, 0xce, 0xfa, 0x2f, 0x71, 0xcb, 0x02, 0x13, 0xeb, 0x18, + 0x01, 0x00, 0x00, 0x00, 0xa2, 0x8b, 0x2e, 0xba, 0x8a, 0xf6, 0xcf, 0x45, 0x31, 0xf2, 0xda, 0x34, 0x79, 0x21, 0x93, + 0x4e, 0x07, 0x50, 0x1d, 0x5d, 0x2a, 0x89, 0x03, 0xe0, 0x62, 0xaf, 0x63, 0x69, 0x1c, 0x1e, 0x81, 0xe2, 0xab, 0x23, + 0xa8, 0xaf, 0x38, 0xdb, 0xfd, 0x59, 0x7d, 0x9a, 0xe0, 0x0f, 0x25, 0x99, 0x64, 0xfe, 0xf0, 0x29, 0x66, 0x4a, 0x70, + 0x87, 0xc1, 0x5c, 0xf9, 0xd8, 0x63, 0x28, 0x20, 0xf6, 0x74, 0x42, 0x47, 0x8d, 0x02, 0xd7, 0x1d, 0x3b, 0xdd, 0x84, + 0xce, 0x91, 0xf2, 0xa4, 0xb7, 0xca, 0xba, 0xfd, 0x9f, 0xfa, 0xa1, 0x97, 0x35, 0x59, 0x48, 0xdc, 0xe5, 0xaf, 0x17, + 0x1c, 0x8f, 0x23, 0xf1, 0xf5, 0x16, 0xab, 0x1c, 0xfd, 0x40, 0x54, 0x27, 0x3d, 0xeb, 0x8d, 0x9e, 0x81, 0xaa, 0xae, + 0x5a, 0x9b, 0xc7, 0x21, 0x1a, 0x44, 0x6f, 0xaf, 0xd1, 0x7b, 0xaa, 0x86, 0xfb, 0x14, 0xa1, 0x41, 0xe6, 0x2a, 0x76, + 0xc6, 0xf6, 0x5f, 0x6d, 0x38, 0x69, 0xf6, 0x5b, 0xaa, 0x81, 0xf6, 0x2f, 0x2a, 0x49, 0xf8, 0x51, 0xb7, 0x35, 0x69, + 0x88, 0xff, 0xf6, 0x79, 0x61, 0x06, 0x5b, 0x09, 0xcb, 0xcc, 0x1d, 0xec, 0x8f, 0x54, 0x4b, 0x31, 0x30, 0x90, 0x33, + 0xde, 0xc1, 0xe0, 0x12, 0x5a, 0x8c, 0xc9, 0xcd, 0xcb, 0xfe, 0x9c, 0x56, 0xe1, 0xfb, 0x60, 0xda, 0x30, 0x7f, 0xb1, + 0xf3, 0x41, 0xfd, 0xea, 0x36, 0x55, 0x23, 0xeb, 0xa9, 0xef, 0xb8, 0x08, 0x00, 0xd2, 0x01, 0xaf, 0x48, 0x68, 0xf8, + 0xba, 0xa8, 0x67, 0x4f, 0x0d, 0x15, 0x58, 0x8b, 0xe2, 0x7e, 0x60, 0x94, 0x79, 0x0a, 0x24, 0x50, 0xa2, 0x28, 0x8d, + 0xa0, 0x61, 0x0e, 0xe3, 0x11, 0x65, 0x20, 0xdf, 0x69, 0xfb, 0x15, 0xaa, 0xac, 0x4e, 0x5d, 0x8d, 0xf0, 0xe2, 0x97, + 0xfd, 0xc2, 0x3c, 0x79, 0x8f, 0x29, 0xc1, 0xce, 0x48, 0x7f, 0x72, 0x2b, 0x6a, 0x8a, 0x51, 0xc5, 0x3a, 0xee, 0xca, + 0x8c, 0xb4, 0x60, 0x92, 0xcd, 0x46, 0x8b, 0x29, 0x4b, 0xe3, 0xbf, 0x42, 0xc9, 0x65, 0x5e, 0x21, 0x3d, 0x21, 0x1a, + 0x12, 0x04, 0x35, 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, + 0x5a, 0x5b, 0xd4, 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x4e, 0x16, 0xfe, + 0xbf, 0xdd, 0x24, 0x3c, 0xca, 0xf1, 0x4b, 0x15, 0xf3, 0x30, 0xe3, 0x42, 0x53, 0xdb, 0x59, 0xf1, 0x78, 0xd6, 0x37, + 0xbd, 0xd9, 0x1e, 0x40, 0x93, 0xcd, 0x8b, 0xb5, 0x17, 0x0b, 0x8f, 0x23, 0xf1, 0xf5, 0x16, 0xab, 0x1c, 0xfd, 0x40, + 0x54, 0x27, 0x3d, 0xeb, 0x8d, 0x9e, 0x81, 0xaa, 0xae, 0x5a, 0x9b, 0xc7, 0x21, 0x1a, 0x44, 0x6f, 0xaf, 0xd1, 0x7b, + 0xaa, 0x86, 0xfb, 0x14, 0xdf, 0x90, 0xd0, 0x50, 0xea, 0x61, 0x59, 0xf9, 0x45, 0x4f, 0x48, 0x02, 0x91, 0x4e, 0x55, + 0xf4, 0x0c, 0xcf, 0x9d, 0xdb, 0x38, 0x53, 0x0a, 0xe0, 0xf0, 0xb4, 0x1c, 0xcd, 0x07, 0x2f, 0xc7, 0x62, 0x40, 0x96, + 0xe1, 0xee, 0x5b, 0x58, 0xcd, 0x24, 0xfc, 0xbd, 0x85, 0xaf, 0xb6, 0x19, 0x2d, 0x50, 0x72, 0x84, 0x26, 0x0f, 0x9d, + 0x8a, 0x1a, 0x9b, 0xdb, 0x26, 0xac, 0xa0, 0xc7, 0x55, 0xd3, 0x2b, 0xe5, 0xd8, 0x10, 0x31, 0xd0, 0x3a, 0xe9, 0x29, + 0x84, 0xd7, 0x7c, 0x9c, 0x5e, 0x2c, 0x34, 0xc2, 0x90, 0xab, 0x53, 0x42, 0xe0, 0xd3, 0x93, 0xbe, 0xe1, 0xaf, 0x6e, + 0xed, 0x58, 0xdf, 0xb8, 0x62, 0xd9, 0x77, 0x40, 0x8c, 0x76, 0x6d, 0xc2, 0x3b, 0x7b, 0x8c, 0x90, 0x83, 0xaa, 0x5d, + 0xe5, 0x8b, 0x2c, 0x85, 0xf4, 0x7d, 0x5f, 0x86, 0x0a, 0xf0, 0xa8, 0x4b, 0x8b, 0x59, 0xe8, 0xe7, 0xe3, 0x4c, 0x1a, + 0x68, 0xa0, 0x50, 0xe3, 0x42, 0xba, 0x5a, 0x0e, 0x00, 0x86, 0x91, 0x26, 0x8e, 0xff, 0xa2, 0x73, 0x39, 0x8c, 0x03, + 0xb3, 0xf0, 0xe8, 0xca, 0x9b, 0xbe, 0xe3, 0x02, 0x8d, 0x16, 0x5e, 0x3e, 0xd6, 0x07, 0xc9, 0x9b, 0x2f, 0x15, 0x93, + 0x6a, 0x3f, 0xc2, 0x9c, 0x30, 0x4b, 0x20, 0xb2, 0xbb, 0x50, 0xa9, 0xd9, 0x8f, 0x34, 0xaf, 0x35, 0xd7, 0x4e, 0x90, + 0x23, 0x71, 0xdc, 0x4b, 0xdc, 0x1a, 0x3c, 0xb1, 0x13, 0x3b, 0x3a, 0xb1, 0x13, 0x3b, 0x3a, 0x75, 0x88, 0x9d, 0x3d, + 0xed, 0x02, 0xbd, 0xb5, 0x7b, 0x26, 0x08, 0xb8, 0x7b, 0xce, 0x8d, 0x9f, 0x42, 0x85, 0x0f, 0x5a, 0xdc, 0x17, 0x62, + 0xef, 0xa4, 0x62, 0xfb, 0x29, 0xf2, 0xac, 0x00, 0xc5, 0xbb, 0x09, 0x53, 0x77, 0x36, 0x86, 0x97, 0x7d, 0xe1, 0x2f, + 0xff, 0x28, 0xfd, 0xff, 0xbf, 0xab, 0x7d, 0xd6, 0xec, 0x3a, 0x89, 0x37, 0x38, 0xa1, 0x41, 0xe6, 0x2a, 0x76, 0xc6, + 0xf6, 0x5f, 0x6d, 0x38, 0x69, 0xf6, 0x5b, 0xaa, 0x81, 0xf6, 0x2f, 0x2a, 0x49, 0xf8, 0x51, 0xb7, 0x35, 0x69, 0x88, + 0xff, 0xf6, 0x79, 0x61, 0x06, 0x5b, 0x09, 0x40, 0x96, 0xe1, 0xee, 0x5b, 0x58, 0xcd, 0x24, 0xfc, 0xbd, 0x85, 0xaf, + 0xb6, 0x19, 0x2d, 0x50, 0x72, 0x84, 0x26, 0x0f, 0x9d, 0x8a, 0x1a, 0x9b, 0xdb, 0x26, 0xac, 0xa0, 0xc7, 0x55, 0xd3, + 0x2b, 0xd2, 0xb7, 0x37, 0xc6, 0xf4, 0x69, 0xd4, 0x7c, 0x86, 0x56, 0x2f, 0x2d, 0xba, 0x22, 0x9e, 0x46, 0x3d, 0x60, + 0xc1, 0xc1, 0x3a, 0x13, 0x41, 0x6d, 0x71, 0xc2, 0x7b, 0xed, 0xcf, 0xff, 0x29, 0x2c, 0x71, 0xba, 0x77, 0xb7, 0x34, + 0x35, 0x4d, 0x26, 0x3d, 0x7a, 0xdb, 0xd2, 0xea, 0xa6, 0xb1, 0x9f, 0x44, 0x1a, 0x8c, 0xdc, 0x07, 0x4b, 0xf1, 0x36, + 0x4e, 0xaa, 0x9e, 0x5c, 0x2a, 0x0a, 0xdf, 0x58, 0xd2, 0x92, 0x73, 0x4e, 0x7f, 0x38, 0x5c, 0x5b, 0xe5, 0x58, 0x7d, + 0x21, 0x0f, 0xb8, 0x2a, 0x68, 0x72, 0x16, 0xc2, 0xa8, 0x0f, 0x97, 0xd6, 0x55, 0x51, 0x32, 0xef, 0x35, 0x03, 0x00, + 0x51, 0x64, 0xb8, 0x37, 0x33, 0xab, 0x2c, 0x29, 0x5e, 0x6e, 0x20, 0x31, 0x22, 0x4a, 0x7c, 0xd8, 0x39, 0xfd, 0x4e, + 0xda, 0x22, 0x67, 0xb3, 0x04, 0x3f, 0x8b, 0x50, 0x1c, 0x6a, 0x4e, 0xbe, 0xe7, 0x01, 0x62, 0x63, 0x2a, 0x48, 0x83, + 0xaf, 0x86, 0x6e, 0xc2, 0xbc, 0xbf, 0xc6, 0xe6, 0x17, 0xe9, 0xb9, 0xf9, 0xcd, 0x55, 0x5b, 0x13, 0x0a, 0xa6, 0x65, + 0xcc, 0x46, 0x19, 0x8d, 0xc6, 0xbd, 0x40, 0x6b, 0x3b, 0x93, 0x24, 0x49, 0x12, 0x6d, 0xdb, 0xb6, 0xed, 0x23, 0x3b, + 0x91, 0xa4, 0x6f, 0xe9, 0xf9, 0xfe, 0x27, 0x9d, 0x0c, 0xbd, 0x29, 0x9d, 0x80, 0x45, 0x65, 0x87, 0x77, 0x08, 0xda, + 0x7d, 0x86, 0x4a, 0x26, 0xf5, 0x66, 0xba, 0x00, 0xe9, 0x93, 0xa6, 0xaa, 0xc9, 0x3b, 0x0f, 0x82, 0xd9, 0x40, 0x78, + 0x35, 0x4d, 0x89, 0xa3, 0x06, 0xc7, 0x6a, 0x28, 0x40, 0x6d, 0xa6, 0x4f, 0x1e, 0x1c, 0x2d, 0x73, 0xcb, 0xcc, 0x1d, + 0xec, 0x8f, 0x54, 0x4b, 0x31, 0x30, 0x90, 0x33, 0xde, 0xc1, 0xe0, 0x12, 0x5a, 0x8c, 0xc9, 0xcd, 0xcb, 0xfe, 0x9c, + 0x56, 0xe1, 0xfb, 0x60, 0xda, 0x30, 0x7f, 0xb1, 0xf3, 0x41, 0xe5, 0xd8, 0x10, 0x31, 0xd0, 0x3a, 0xe9, 0x29, 0x84, + 0xd7, 0x7c, 0x9c, 0x5e, 0x2c, 0x34, 0xc2, 0x90, 0xab, 0x53, 0x42, 0xe0, 0xd3, 0x93, 0xbe, 0xe1, 0xaf, 0x6e, 0xed, + 0x58, 0xdf, 0xb8, 0x62, 0x71, 0xba, 0x77, 0xb7, 0x34, 0x35, 0x4d, 0x26, 0x3d, 0x7a, 0xdb, 0xd2, 0xea, 0xa6, 0xb1, + 0x9f, 0x44, 0x1a, 0x8c, 0xdc, 0x07, 0x4b, 0xf1, 0x36, 0x4e, 0xaa, 0x9e, 0x5c, 0x2a, 0x0a, 0xdf, 0x58, 0xc4, 0xb2, + 0x1c, 0xc7, 0xf9, 0x11, 0x52, 0x85, 0xd2, 0xea, 0xbf, 0x20, 0x96, 0x66, 0x2d, 0x66, 0x4f, 0xea, 0x8f, 0x23, 0x00, + 0x92, 0x66, 0x66, 0xd0, 0x72, 0x1b, 0xf8, 0xa0, 0x21, 0xd3, 0x11, 0xa6, 0x7b, 0xb9, 0x77, 0x2e, 0x37, 0x79, 0x06, + 0x78, 0x15, 0x5a, 0xb5, 0x18, 0x01, 0xc7, 0xff, 0xa6, 0x38, 0x3b, 0x31, 0x93, 0x18, 0x46, 0x5f, 0x4d, 0x14, 0x17, + 0x06, 0x3b, 0x6c, 0xcc, 0x32, 0x05, 0x84, 0xd5, 0xd3, 0xe2, 0x16, 0x2f, 0x81, 0xb0, 0x09, 0x42, 0x85, 0x33, 0x7a, + 0xd5, 0x5d, 0x23, 0xc6, 0x71, 0xb0, 0xa0, 0x17, 0x1f, 0xff, 0xdb, 0xdc, 0x85, 0x1a, 0x11, 0x01, 0x45, 0x19, 0x84, + 0xcb, 0x73, 0x79, 0x3b, 0x23, 0x3e, 0xf0, 0x14, 0x58, 0x8a, 0xc1, 0x00, 0xe0, 0x9e, 0x62, 0x7b, 0xe3, 0x9f, 0xaf, + 0x8a, 0x63, 0x90, 0x1f, 0x6b, 0x7f, 0xf4, 0x5f, 0x32, 0x27, 0x3f, 0x0b, 0x67, 0x66, 0x66, 0x66, 0xee, 0xee, 0xee, + 0xee, 0x76, 0x97, 0x76, 0x77, 0xdf, 0xbd, 0xfe, 0x81, 0xad, 0xea, 0xef, 0xd1, 0x8c, 0xc8, 0x0d, 0xd7, 0x7b, 0xed, + 0x42, 0x27, 0xf9, 0x14, 0xd4, 0x3d, 0x7e, 0x1c, 0x1d, 0x76, 0x3f, 0xc7, 0x04, 0x5f, 0x2d, 0x46, 0x79, 0x88, 0xb0, + 0xa9, 0x5c, 0xbf, 0xfb, 0x17, 0xeb, 0x94, 0x85, 0x50, 0x76, 0x1c, 0x58, 0x74, 0xc2, 0x63, 0x03, 0xeb, 0xf7, 0x12, + 0xfd, 0xea, 0x36, 0x55, 0x23, 0xeb, 0xa9, 0xef, 0xb8, 0x08, 0x00, 0xd2, 0x01, 0xaf, 0x48, 0x68, 0xf8, 0xba, 0xa8, + 0x67, 0x4f, 0x0d, 0x15, 0x58, 0x8b, 0xe2, 0x7e, 0x60, 0x94, 0x79, 0x0a, 0x24, 0xd9, 0x77, 0x40, 0x8c, 0x76, 0x6d, + 0xc2, 0x3b, 0x7b, 0x8c, 0x90, 0x83, 0xaa, 0x5d, 0xe5, 0x8b, 0x2c, 0x85, 0xf4, 0x7d, 0x5f, 0x86, 0x0a, 0xf0, 0xa8, + 0x4b, 0x8b, 0x59, 0xe8, 0xe7, 0xe3, 0x4c, 0xd2, 0x92, 0x73, 0x4e, 0x7f, 0x38, 0x5c, 0x5b, 0xe5, 0x58, 0x7d, 0x21, + 0x0f, 0xb8, 0x2a, 0x68, 0x72, 0x16, 0xc2, 0xa8, 0x0f, 0x97, 0xd6, 0x55, 0x51, 0x32, 0xef, 0x35, 0x03, 0x00, 0x51, + 0x64, 0xa6, 0x7b, 0xb9, 0x77, 0x2e, 0x37, 0x79, 0x06, 0x78, 0x15, 0x5a, 0xb5, 0x18, 0x01, 0xc7, 0xff, 0xa6, 0x38, + 0x3b, 0x31, 0x93, 0x18, 0x46, 0x5f, 0x4d, 0x14, 0x17, 0x06, 0x3b, 0x6c, 0xcc, 0x32, 0x93, 0x56, 0x1f, 0xb7, 0x6d, + 0x27, 0x8b, 0x6a, 0x70, 0x5a, 0x86, 0xf5, 0x78, 0x84, 0x47, 0xbd, 0x89, 0x25, 0x1f, 0x32, 0x73, 0x7c, 0x30, 0x37, + 0x21, 0xf8, 0x90, 0x40, 0x5e, 0xaa, 0xa7, 0x29, 0x67, 0x9b, 0x2e, 0xd1, 0x2a, 0xc1, 0x0f, 0x6f, 0x65, 0x6e, 0xfb, + 0x5b, 0x8a, 0xe6, 0xea, 0xd0, 0xd3, 0x62, 0x73, 0x04, 0xe0, 0x5a, 0xa8, 0x41, 0x89, 0xe2, 0xad, 0x9f, 0xa6, 0xb7, + 0xeb, 0x07, 0x28, 0x99, 0xc1, 0x68, 0xeb, 0x1e, 0xdc, 0xa5, 0x32, 0xa7, 0x12, 0xc2, 0x24, 0x4e, 0x45, 0x07, 0x59, + 0xe3, 0xc8, 0xb5, 0xc4, 0xd4, 0x20, 0xac, 0x3a, 0x32, 0x3e, 0x1d, 0x76, 0xc7, 0x7a, 0x40, 0x01, 0x00, 0x00, 0x10, + 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, 0xcf, 0xc2, 0xc9, 0x81, 0xfe, 0x84, 0xba, 0x07, 0x89, 0x87, 0x3a, 0x06, + 0xb0, 0x73, 0xa5, 0x03, 0xf7, 0xdd, 0xcc, 0xae, 0x6c, 0x66, 0xfe, 0x4c, 0xc4, 0xde, 0x76, 0x99, 0x6b, 0x73, 0x5b, + 0x0a, 0xa5, 0x64, 0x12, 0xd9, 0xfb, 0xf5, 0xcb, 0x8f, 0xfc, 0x13, 0xf2, 0xea, 0x5d, 0xe3, 0xda, 0x8e, 0x5a, 0x95, + 0x51, 0xd9, 0x37, 0x50, 0xa2, 0x28, 0x8d, 0xa0, 0x61, 0x0e, 0xe3, 0x11, 0x65, 0x20, 0xdf, 0x69, 0xfb, 0x15, 0xaa, + 0xac, 0x4e, 0x5d, 0x8d, 0xf0, 0xe2, 0x97, 0xfd, 0xc2, 0x3c, 0x79, 0x8f, 0x29, 0xc1, 0xce, 0x48, 0x1a, 0x68, 0xa0, + 0x50, 0xe3, 0x42, 0xba, 0x5a, 0x0e, 0x00, 0x86, 0x91, 0x26, 0x8e, 0xff, 0xa2, 0x73, 0x39, 0x8c, 0x03, 0xb3, 0xf0, + 0xe8, 0xca, 0x9b, 0xbe, 0xe3, 0x02, 0x8d, 0x16, 0x5e, 0x3e, 0xb8, 0x37, 0x33, 0xab, 0x2c, 0x29, 0x5e, 0x6e, 0x20, + 0x31, 0x22, 0x4a, 0x7c, 0xd8, 0x39, 0xfd, 0x4e, 0xda, 0x22, 0x67, 0xb3, 0x04, 0x3f, 0x8b, 0x50, 0x1c, 0x6a, 0x4e, + 0xbe, 0xe7, 0x01, 0x62, 0x05, 0x84, 0xd5, 0xd3, 0xe2, 0x16, 0x2f, 0x81, 0xb0, 0x09, 0x42, 0x85, 0x33, 0x7a, 0xd5, + 0x5d, 0x23, 0xc6, 0x71, 0xb0, 0xa0, 0x17, 0x1f, 0xff, 0xdb, 0xdc, 0x85, 0x1a, 0x11, 0x01, 0x45, 0x19, 0x67, 0x9b, + 0x2e, 0xd1, 0x2a, 0xc1, 0x0f, 0x6f, 0x65, 0x6e, 0xfb, 0x5b, 0x8a, 0xe6, 0xea, 0xd0, 0xd3, 0x62, 0x73, 0x04, 0xe0, + 0x5a, 0xa8, 0x41, 0x89, 0xe2, 0xad, 0x9f, 0xa6, 0xb7, 0xeb, 0x07, 0x75, 0x83, 0x48, 0x1e, 0x91, 0x4f, 0x3b, 0x24, + 0x04, 0xf5, 0x4f, 0xf9, 0x94, 0x58, 0xb8, 0x25, 0x43, 0xe4, 0x80, 0xa0, 0xea, 0xa7, 0x05, 0x25, 0x48, 0x79, 0x48, + 0xc9, 0xcc, 0xe4, 0xd1, 0x5f, 0x61, 0xe0, 0x38, 0x65, 0x0b, 0x43, 0xdb, 0x3b, 0xef, 0x59, 0xd5, 0xd4, 0xfc, 0xa8, + 0x1d, 0x8f, 0xdd, 0x26, 0x2b, 0xb9, 0xb6, 0x95, 0x95, 0xf5, 0x25, 0x62, 0x9f, 0xed, 0xde, 0xfa, 0x3f, 0x09, 0xb5, + 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, 0x2c, 0x9d, 0xff, 0xff, 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, + 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, 0x46, 0x1b, 0xa4, 0xf1, 0xe5, 0x6b, 0x98, 0x74, 0xb1, + 0x02, 0x2b, 0xf2, 0x95, 0x7f, 0x40, 0x1d, 0x14, 0xf1, 0xda, 0x64, 0xb3, 0xc2, 0xbd, 0x70, 0x08, 0xce, 0xfa, 0x2f, + 0x71, 0xcb, 0x02, 0x13, 0xeb, 0x18, 0x7f, 0x72, 0x2b, 0x6a, 0x8a, 0x51, 0xc5, 0x3a, 0xee, 0xca, 0x8c, 0xb4, 0x60, + 0x92, 0xcd, 0x46, 0x8b, 0x29, 0x4b, 0xe3, 0xbf, 0x42, 0xc9, 0x65, 0x5e, 0x21, 0x3d, 0x21, 0x1a, 0x12, 0x04, 0x35, + 0xd6, 0x07, 0xc9, 0x9b, 0x2f, 0x15, 0x93, 0x6a, 0x3f, 0xc2, 0x9c, 0x30, 0x4b, 0x20, 0xb2, 0xbb, 0x50, 0xa9, 0xd9, + 0x8f, 0x34, 0xaf, 0x35, 0xd7, 0x4e, 0x90, 0x23, 0x71, 0xdc, 0x4b, 0xdc, 0x1a, 0x63, 0x2a, 0x48, 0x83, 0xaf, 0x86, + 0x6e, 0xc2, 0xbc, 0xbf, 0xc6, 0xe6, 0x17, 0xe9, 0xb9, 0xf9, 0xcd, 0x55, 0x5b, 0x13, 0x0a, 0xa6, 0x65, 0xcc, 0x46, + 0x19, 0x8d, 0xc6, 0xbd, 0x40, 0x6b, 0x3b, 0x84, 0xcb, 0x73, 0x79, 0x3b, 0x23, 0x3e, 0xf0, 0x14, 0x58, 0x8a, 0xc1, + 0x00, 0xe0, 0x9e, 0x62, 0x7b, 0xe3, 0x9f, 0xaf, 0x8a, 0x63, 0x90, 0x1f, 0x6b, 0x7f, 0xf4, 0x5f, 0x32, 0x27, 0x3f, + 0x0b, 0x28, 0x99, 0xc1, 0x68, 0xeb, 0x1e, 0xdc, 0xa5, 0x32, 0xa7, 0x12, 0xc2, 0x24, 0x4e, 0x45, 0x07, 0x59, 0xe3, + 0xc8, 0xb5, 0xc4, 0xd4, 0x20, 0xac, 0x3a, 0x32, 0x3e, 0x1d, 0x76, 0xc7, 0x7a, 0x40, 0x61, 0xe0, 0x38, 0x65, 0x0b, + 0x43, 0xdb, 0x3b, 0xef, 0x59, 0xd5, 0xd4, 0xfc, 0xa8, 0x1d, 0x8f, 0xdd, 0x26, 0x2b, 0xb9, 0xb6, 0x95, 0x95, 0xf5, + 0x25, 0x62, 0x9f, 0xed, 0xde, 0xfa, 0x3f, 0x09, 0x24, 0x25, 0xa8, 0x6d, 0x2f, 0xb3, 0x53, 0x08, 0x70, 0xba, 0x87, + 0x5a, 0x92, 0x31, 0xb2, 0xa3, 0xaa, 0x72, 0x11, 0x89, 0xef, 0x0f, 0x83, 0xe7, 0x7b, 0x32, 0x6a, 0x96, 0xeb, 0x85, + 0xe4, 0x12, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, + 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x7d, 0xc7, 0xfe, 0x3b, + 0xc3, 0x5b, 0xf4, 0xea, 0x5c, 0x49, 0x7d, 0xf3, 0x9a, 0x94, 0x98, 0x0a, 0xc1, 0x54, 0x1e, 0xa2, 0xb9, 0x69, 0x63, + 0x50, 0xec, 0x34, 0x2b, 0x7b, 0x92, 0xd3, 0xd9, 0x39, 0x19, 0x10, 0x7f, 0xe9, 0xab, 0x61, 0xd6, 0x74, 0x39, 0x5b, + 0x52, 0xcd, 0x00, 0xc0, 0x8a, 0xe1, 0x5a, 0x11, 0x0f, 0x7f, 0xbb, 0x73, 0xdd, 0xcd, 0x92, 0x5d, 0x82, 0x37, 0x8b, + 0x99, 0xbb, 0x38, 0xb6, 0x9c, 0x35, 0xbb, 0x0d, 0xe9, 0x47, 0x4e, 0x6a, 0x51, 0xd6, 0xde, 0xb0, 0x87, 0xeb, 0x85, + 0x9d, 0x7a, 0xdd, 0xaa, 0xc1, 0x07, 0xa6, 0xf5, 0x39, 0x13, 0xab, 0x93, 0x4c, 0x70, 0xfb, 0x0c, 0x59, 0x20, 0x2e, + 0x2c, 0x23, 0x40, 0xd8, 0xec, 0xf8, 0x2d, 0x1a, 0xc0, 0x0b, 0x40, 0xd9, 0xd2, 0x30, 0x11, 0xe3, 0x12, 0xa0, 0xd0, + 0x11, 0xc6, 0x9c, 0x84, 0x5f, 0xa4, 0xd4, 0xc6, 0x85, 0x2a, 0x5d, 0x32, 0x3b, 0xf5, 0x3e, 0xd2, 0x99, 0x44, 0xa5, + 0x69, 0x2c, 0x53, 0x8b, 0xe8, 0xbc, 0xb0, 0x27, 0x9a, 0xea, 0x87, 0x14, 0xfc, 0x48, 0x3f, 0x22, 0xed, 0x8e, 0x59, + 0x68, 0x2a, 0xf3, 0x25, 0x4c, 0xd9, 0x5a, 0x7a, 0x0e, 0xd8, 0x74, 0xf0, 0x5a, 0x6c, 0xd8, 0xcb, 0xa6, 0xd2, 0xb8, + 0xfa, 0xc1, 0xda, 0xc2, 0x5c, 0x2d, 0x3c, 0x51, 0xfb, 0xf4, 0xf4, 0x28, 0xf8, 0x90, 0x02, 0x5e, 0x71, 0xe9, 0x24, + 0xbc, 0x31, 0x72, 0xad, 0x1f, 0x09, 0x9b, 0x2e, 0x06, 0x27, 0xb4, 0x09, 0xc5, 0xe5, 0xc2, 0x8e, 0x12, 0x60, 0x39, + 0x1d, 0xc8, 0xfe, 0x3b, 0x34, 0x16, 0x77, 0x96, 0xc7, 0x18, 0x51, 0xfb, 0x79, 0x13, 0xa4, 0x97, 0xb5, 0x7e, 0xe7, + 0x64, 0xa4, 0x82, 0x85, 0x59, 0x1f, 0xf6, 0x9f, 0x81, 0x36, 0xbc, 0x48, 0x78, 0xb8, 0xd2, 0x9e, 0x1c, 0x8d, 0x80, + 0xca, 0x80, 0xef, 0x86, 0x45, 0xea, 0xd1, 0x16, 0x1e, 0xca, 0x03, 0x49, 0x80, 0xf7, 0xfc, 0x00, 0xda, 0x4c, 0x6b, + 0xa5, 0x6d, 0x1c, 0xd1, 0x64, 0xe2, 0x38, 0x33, 0xde, 0xe1, 0x00, 0x9e, 0x62, 0xd3, 0x20, 0x37, 0xa5, 0x50, 0x96, + 0xe6, 0x2e, 0x46, 0xb3, 0x01, 0x67, 0xb7, 0x31, 0xb7, 0x17, 0x5d, 0xde, 0xe1, 0x2c, 0x8e, 0xf3, 0x66, 0x82, 0xec, + 0x07, 0x09, 0x5a, 0x94, 0x5e, 0x43, 0xc9, 0x8e, 0x77, 0xbb, 0x6e, 0x12, 0x0a, 0x17, 0xd1, 0x29, 0x47, 0xe1, 0xf5, + 0x63, 0x46, 0x63, 0x09, 0x0d, 0xdf, 0xe6, 0x04, 0x4f, 0x3e, 0x9c, 0x97, 0xec, 0x59, 0xc2, 0x58, 0xa7, 0xc3, 0x8f, + 0x51, 0x69, 0xc6, 0x13, 0x2b, 0x18, 0x3f, 0x70, 0x80, 0x80, 0x5c, 0x80, 0xdb, 0x19, 0x95, 0xec, 0x54, 0xc9, 0x4a, + 0xa1, 0x54, 0xd1, 0x2e, 0x76, 0xe9, 0x1a, 0x7d, 0xfc, 0xa2, 0x52, 0xea, 0x6e, 0xe9, 0xa2, 0x55, 0x39, 0x76, 0x28, + 0xa2, 0xb4, 0x44, 0x9e, 0x03, 0x69, 0x64, 0x38, 0x38, 0x9c, 0xb1, 0x97, 0x1a, 0xe4, 0xcb, 0xc8, 0xf6, 0xf5, 0xb2, + 0x93, 0xae, 0xc7, 0x25, 0xe1, 0x2b, 0x67, 0x6c, 0xd6, 0x31, 0xce, 0xca, 0x39, 0x65, 0x22, 0x74, 0xd8, 0x1a, 0x22, + 0xb1, 0x7b, 0xf6, 0x91, 0x0c, 0xf7, 0x18, 0xeb, 0xc4, 0x21, 0x62, 0x3e, 0x6d, 0x70, 0x6f, 0xce, 0xab, 0x8c, 0xcd, + 0xbd, 0x17, 0x20, 0x1c, 0x42, 0xb2, 0x6b, 0x3e, 0xb1, 0xb4, 0xf0, 0x92, 0x0d, 0x48, 0x76, 0x8a, 0x00, 0x2c, 0xce, + 0x06, 0x26, 0x0a, 0x15, 0x52, 0x38, 0x54, 0xdc, 0xfe, 0x08, 0xcd, 0xbc, 0xe2, 0x66, 0xa9, 0x1f, 0xd3, 0x74, 0x14, + 0x55, 0xa1, 0x61, 0xdb, 0x08, 0x42, 0x4b, 0xb7, 0x96, 0x3e, 0xb3, 0xb5, 0xe6, 0x95, 0x10, 0x3d, 0xbc, 0x02, 0x6a, + 0xf3, 0xdf, 0xfa, 0xad, 0xb7, 0xdf, 0x5a, 0x77, 0xd5, 0x0e, 0xe6, 0x19, 0x14, 0x13, 0xab, 0xaa, 0xaa, 0xaa, 0x38, + 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, + 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xbe, 0xcf, 0x2f, 0x48, 0xf4, 0x69, 0x25, 0xe9, 0x46, 0xae, 0x06, + 0xd4, 0x78, 0x60, 0xee, 0x4d, 0x66, 0xa2, 0xdd, 0xf1, 0x28, 0x78, 0x6c, 0x69, 0x6d, 0x8a, 0xc8, 0x4e, 0x07, 0x09, + 0x6b, 0x02, 0x73, 0xdb, 0xc3, 0xdb, 0xdf, 0x84, 0xbe, 0x22, 0xa3, 0xf0, 0x72, 0xb5, 0xb2, 0x23, 0xc5, 0x7c, 0x0c, + 0x0f, 0x72, 0x1f, 0x64, 0x11, 0xd3, 0xaf, 0x60, 0x63, 0xe5, 0x24, 0x3c, 0xb1, 0x68, 0x48, 0xef, 0x59, 0x70, 0x63, + 0x98, 0xc7, 0x73, 0xbc, 0x36, 0x3a, 0x6e, 0x9c, 0xdd, 0x5e, 0xaa, 0xcd, 0x65, 0xde, 0xc4, 0x1f, 0x9c, 0xbc, 0x95, + 0xe7, 0x13, 0x70, 0xa8, 0x9d, 0x02, 0x17, 0x35, 0x12, 0x15, 0x03, 0x06, 0xc5, 0xd9, 0xad, 0xff, 0xfe, 0xce, 0x53, + 0x78, 0x76, 0x54, 0x74, 0x63, 0x96, 0xcc, 0xdb, 0x9a, 0x75, 0x25, 0x3b, 0xa7, 0x9d, 0x6f, 0xcc, 0x3b, 0xe5, 0x07, + 0x25, 0xb1, 0x5f, 0x02, 0x4e, 0xfa, 0xfc, 0xd6, 0x27, 0x1f, 0xf0, 0xb9, 0x09, 0x88, 0xd0, 0x14, 0xa0, 0xa1, 0xac, + 0x4a, 0xff, 0xe6, 0xd7, 0x8c, 0xd8, 0xda, 0xd1, 0x5f, 0x9d, 0x60, 0x62, 0x7a, 0x7e, 0x0b, 0x19, 0xf4, 0xce, 0x06, + 0xdd, 0xf7, 0x89, 0x23, 0x66, 0x14, 0xea, 0x84, 0x17, 0x2c, 0x9c, 0x79, 0x0b, 0x78, 0x59, 0xe2, 0xe2, 0x32, 0x4d, + 0x53, 0x8a, 0x1f, 0x6c, 0x81, 0xc6, 0x73, 0xfd, 0x1e, 0x27, 0x0b, 0x21, 0x29, 0xf2, 0x2d, 0x39, 0xb6, 0xfa, 0x8f, + 0x58, 0x4e, 0x73, 0x18, 0xc7, 0x46, 0xba, 0xac, 0xfa, 0x34, 0x79, 0x37, 0xe9, 0x76, 0xa2, 0x9f, 0x15, 0xf8, 0xb4, + 0x64, 0x18, 0x6a, 0x31, 0x19, 0xd9, 0xee, 0x60, 0x3c, 0x5d, 0x43, 0x8f, 0x3e, 0x1b, 0x69, 0x04, 0x49, 0x38, 0xe1, + 0x6b, 0x1a, 0x38, 0x9a, 0xe2, 0x18, 0x27, 0xd9, 0x39, 0x40, 0x9f, 0x08, 0x01, 0x1e, 0xbd, 0x5b, 0x20, 0x9d, 0x09, + 0xbd, 0x50, 0x9e, 0x2c, 0x74, 0x65, 0x60, 0x9d, 0x52, 0x75, 0x25, 0xcc, 0xc7, 0x66, 0xad, 0x3c, 0xd3, 0x1c, 0xf1, + 0x2c, 0x3e, 0xab, 0xe5, 0x6d, 0x3a, 0x5c, 0x77, 0x27, 0x1b, 0x3a, 0xef, 0xe5, 0x96, 0x15, 0x93, 0x5f, 0x31, 0x4e, + 0xd5, 0x5d, 0x3d, 0xd0, 0x2f, 0x0b, 0x0f, 0xb6, 0xee, 0x6d, 0x8e, 0xe7, 0x95, 0xf8, 0xa6, 0xd5, 0x1e, 0x13, 0x2c, + 0x27, 0x70, 0x87, 0x89, 0x73, 0xec, 0x47, 0x6b, 0x35, 0xba, 0x1d, 0x64, 0x81, 0xb2, 0x3b, 0xd2, 0x2b, 0x41, 0x7b, + 0xc6, 0x75, 0x0a, 0xe5, 0xd1, 0x23, 0xf8, 0xb7, 0x00, 0xd6, 0x69, 0xb4, 0xf0, 0x7c, 0x88, 0xaa, 0x54, 0x35, 0x67, + 0xa5, 0x64, 0x27, 0xdf, 0x82, 0x66, 0x3d, 0x4c, 0xb8, 0x96, 0xdd, 0x58, 0x0a, 0x1b, 0x90, 0x7a, 0x4f, 0xd3, 0x63, + 0xdb, 0x2a, 0xbf, 0xc7, 0xe3, 0xe4, 0xb5, 0x9f, 0xa7, 0x33, 0x4b, 0x10, 0xb5, 0x52, 0x26, 0x88, 0xdf, 0xce, 0x27, + 0x96, 0x86, 0x3b, 0xaa, 0xcf, 0xa9, 0xde, 0xc8, 0xaa, 0x43, 0xe1, 0x06, 0xa0, 0x6c, 0x82, 0x9e, 0x58, 0x80, 0x62, + 0x1c, 0xac, 0x5e, 0x0d, 0x74, 0x46, 0x65, 0x0d, 0x67, 0x30, 0x4b, 0xb9, 0x94, 0x03, 0x9e, 0x25, 0x24, 0x8d, 0xa4, + 0x67, 0xac, 0x32, 0x47, 0x69, 0x9a, 0xe5, 0xa4, 0xb3, 0xbe, 0xca, 0xa8, 0x96, 0x86, 0x6d, 0xd5, 0xe6, 0x89, 0x0e, + 0x29, 0x1f, 0x78, 0x51, 0xc8, 0x86, 0x47, 0x37, 0x0e, 0x2a, 0xbe, 0xc6, 0xc3, 0x71, 0xb1, 0x66, 0xc7, 0x9f, 0xf4, + 0x5b, 0x88, 0xf3, 0x50, 0x4f, 0x6b, 0x76, 0x05, 0xac, 0xd8, 0x89, 0x26, 0x39, 0xd0, 0xc8, 0xb1, 0x1b, 0xb9, 0x37, + 0xfa, 0x75, 0x74, 0xc9, 0x9d, 0x41, 0x2e, 0xf9, 0x5b, 0x37, 0x7c, 0x3c, 0x1f, 0x07, 0xba, 0x8e, 0xc3, 0xb5, 0x66, + 0xf4, 0x96, 0x92, 0x5f, 0xc2, 0xf6, 0x04, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, + 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, + 0x19, 0xe1, 0x05, 0x0f, 0x30, 0x27, 0x15, 0xc4, 0x25, 0xaf, 0x95, 0x12, 0x42, 0x40, 0x47, 0xa7, 0x54, 0x19, 0x8e, + 0x53, 0x9c, 0xdf, 0xbc, 0x9c, 0x14, 0x44, 0xcf, 0xb5, 0xbf, 0x17, 0xd4, 0xdf, 0x3c, 0xde, 0x03, 0xb5, 0x06, 0x84, + 0xf1, 0xf1, 0x69, 0x1d, 0xbd, 0x67, 0x97, 0xf9, 0x6d, 0xd1, 0x2f, 0x5f, 0x57, 0x52, 0x2a, 0x51, 0x94, 0x07, 0x8f, + 0x7b, 0x09, 0x8f, 0xce, 0x9d, 0xca, 0x84, 0x12, 0x41, 0x18, 0xf0, 0x89, 0xa7, 0x57, 0x7d, 0x1f, 0xa8, 0xef, 0x9e, + 0x5a, 0x40, 0x60, 0x8f, 0x79, 0xd8, 0xa8, 0x7b, 0x83, 0x68, 0xf4, 0xf6, 0xc6, 0xf6, 0xd7, 0x49, 0x91, 0xa1, 0x66, + 0x57, 0x0d, 0x30, 0xb6, 0x58, 0x64, 0x83, 0xbc, 0x07, 0x25, 0xce, 0x5f, 0xbe, 0x5a, 0xf8, 0xbc, 0x7f, 0x7c, 0xa5, + 0xe3, 0x1e, 0x54, 0xa3, 0xda, 0xe7, 0xc9, 0x78, 0x32, 0x4f, 0x57, 0x79, 0x71, 0x01, 0x6c, 0xfa, 0x0e, 0xde, 0x71, + 0x85, 0x01, 0xae, 0x91, 0x5c, 0x79, 0x27, 0x54, 0x37, 0xe9, 0x15, 0x89, 0xa3, 0x6c, 0x05, 0x8b, 0xef, 0x11, 0x92, + 0x27, 0x08, 0x9b, 0x24, 0x18, 0x88, 0xd6, 0xa1, 0x56, 0x1b, 0x31, 0xab, 0xa4, 0xb7, 0x5f, 0x2f, 0x3e, 0xbd, 0x8f, + 0x74, 0x7f, 0xbc, 0x91, 0xe8, 0x05, 0x3f, 0xc6, 0x74, 0x84, 0x19, 0xf5, 0xb7, 0x32, 0x75, 0x40, 0x06, 0xdc, 0x36, + 0xf1, 0xb5, 0x26, 0x44, 0xd6, 0xcc, 0x6f, 0x9e, 0xab, 0xf1, 0x1d, 0x19, 0x31, 0x13, 0x6c, 0x12, 0x66, 0xbe, 0x21, + 0xce, 0x35, 0x7f, 0x5b, 0xe1, 0xc7, 0xe4, 0x53, 0xdc, 0x28, 0xf0, 0xb9, 0xf7, 0x33, 0xc6, 0x5c, 0x4d, 0x80, 0xf3, + 0xc3, 0xea, 0x53, 0x27, 0xf5, 0x0f, 0x7f, 0x98, 0x3e, 0x01, 0x54, 0x57, 0x5b, 0x2c, 0x93, 0x00, 0xc6, 0xec, 0x0b, + 0xc2, 0x1b, 0x5e, 0xe5, 0x9a, 0xf6, 0x80, 0xec, 0x2a, 0x2a, 0x08, 0xf0, 0xfd, 0xd2, 0xf8, 0xb2, 0x3d, 0x67, 0x37, + 0xa9, 0x18, 0x34, 0x5a, 0x1e, 0x98, 0x98, 0x2b, 0x75, 0x1a, 0x99, 0x4c, 0x69, 0xd1, 0x1a, 0x60, 0x48, 0x7d, 0x8f, + 0x52, 0x64, 0x7e, 0x1b, 0xad, 0x4c, 0x4d, 0xd2, 0x92, 0x18, 0x7b, 0x57, 0x30, 0x50, 0x66, 0x87, 0x21, 0xe6, 0xe8, + 0x3e, 0x9c, 0x01, 0xbb, 0xd5, 0x8a, 0x80, 0xa1, 0x8f, 0xff, 0xbf, 0x90, 0xb3, 0xcd, 0xfb, 0x21, 0x70, 0x7a, 0xd7, + 0xf2, 0x89, 0xc0, 0xb4, 0xe9, 0x77, 0x5a, 0xfd, 0x5a, 0xf5, 0x8d, 0x38, 0x65, 0xf5, 0xb5, 0x7b, 0xbc, 0x39, 0xc4, + 0x81, 0x74, 0x3d, 0xad, 0x07, 0x00, 0xa1, 0x29, 0xdb, 0x14, 0x08, 0x92, 0xff, 0x76, 0x70, 0xe7, 0xfe, 0xf1, 0x10, + 0x5e, 0x92, 0xb9, 0xbd, 0x9a, 0xec, 0xe5, 0x33, 0x24, 0x4f, 0x16, 0x90, 0x0e, 0x82, 0x75, 0xf6, 0xe2, 0xea, 0xee, + 0x66, 0xff, 0x1e, 0xbf, 0x26, 0xaa, 0x35, 0x73, 0x5e, 0x22, 0x3c, 0xe8, 0xf2, 0x3f, 0xc0, 0x3e, 0x8b, 0x21, 0xd7, + 0xd8, 0x1b, 0xcc, 0x50, 0xc9, 0x42, 0xfe, 0xd8, 0x57, 0x23, 0xae, 0x5c, 0xb5, 0x67, 0xac, 0xd1, 0xf3, 0x63, 0x2a, + 0xd2, 0x73, 0x79, 0x00, 0x20, 0x40, 0x56, 0xe8, 0xd9, 0x15, 0x17, 0x8c, 0x6e, 0x2b, 0xd3, 0xef, 0x58, 0x7f, 0x29, + 0x28, 0x5a, 0xda, 0xd9, 0xdf, 0x50, 0xd5, 0xec, 0xdd, 0x5e, 0xbc, 0x70, 0x81, 0xc5, 0xab, 0x08, 0xe8, 0x20, 0x5c, + 0x7e, 0x37, 0x55, 0x8b, 0xaf, 0xcc, 0xce, 0xf1, 0x12, 0x6e, 0xe7, 0xe2, 0x1a, 0x6b, 0x0d, 0x30, 0x9d, 0xfc, 0x20, + 0xa7, 0xeb, 0xdf, 0x81, 0xfa, 0x6f, 0x19, 0x42, 0x42, 0x8e, 0xfc, 0x99, 0x3d, 0x6b, 0x98, 0x84, 0xfb, 0x82, 0xb8, + 0x96, 0xf2, 0x3c, 0x59, 0x95, 0x17, 0xd6, 0x8b, 0xcc, 0x13, 0x32, 0x51, 0xbb, 0xb7, 0x2c, 0xd3, 0xc5, 0xa5, 0x22, + 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, + 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xcf, 0x8e, 0x4a, 0xc2, 0x22, 0x2f, + 0x48, 0x28, 0xa3, 0xb4, 0x4d, 0xfe, 0x58, 0x6d, 0xc2, 0xb6, 0xb0, 0x0d, 0xc4, 0xf4, 0xac, 0x14, 0x68, 0x37, 0xff, + 0xbb, 0x75, 0xb0, 0x97, 0x2d, 0xce, 0x73, 0xd1, 0xe3, 0xf4, 0x88, 0x58, 0x91, 0x3d, 0x52, 0xe2, 0xd0, 0xc8, 0xb5, + 0xb0, 0x10, 0x15, 0x92, 0x19, 0xf7, 0x64, 0x01, 0x91, 0xff, 0xf9, 0xf9, 0xa8, 0x18, 0x88, 0xe4, 0x46, 0xb8, 0x83, + 0x1b, 0x08, 0x4f, 0x5c, 0xb7, 0xa5, 0x32, 0x30, 0x4c, 0x7d, 0x3d, 0x7d, 0x99, 0x5f, 0x25, 0x91, 0x65, 0x32, 0x27, + 0xc8, 0xe3, 0xe0, 0x08, 0x04, 0x90, 0x57, 0xb3, 0xbd, 0xa0, 0x51, 0x37, 0xe9, 0x2f, 0x97, 0x4f, 0x1b, 0xab, 0xae, + 0xc5, 0x65, 0x7d, 0x74, 0xb3, 0xdf, 0x88, 0x9b, 0xe1, 0x72, 0xf4, 0x3a, 0xb1, 0x1b, 0x3f, 0x94, 0xff, 0x25, 0xb2, + 0x1c, 0x66, 0xbf, 0x1e, 0xb3, 0x95, 0x00, 0x01, 0x5a, 0x3c, 0x90, 0x81, 0xcd, 0x89, 0x31, 0x98, 0x7d, 0xa8, 0xd7, + 0x2f, 0x29, 0xef, 0x42, 0x2e, 0x50, 0xd0, 0x4a, 0x65, 0x2f, 0x76, 0x4d, 0x5a, 0xa9, 0x07, 0xde, 0xd1, 0x5a, 0x5b, + 0x91, 0x48, 0xc4, 0xb5, 0x0d, 0x68, 0x17, 0xee, 0x32, 0x0b, 0xdc, 0xba, 0x5d, 0x3f, 0x6e, 0x46, 0x51, 0xad, 0x34, + 0xab, 0x2b, 0x02, 0xea, 0xc0, 0x7d, 0x8e, 0xe2, 0x02, 0x17, 0xf5, 0x9b, 0x0e, 0xb8, 0x25, 0x66, 0xd4, 0xc7, 0x4a, + 0x4b, 0xc4, 0x5d, 0xe4, 0x5e, 0xb2, 0x49, 0x49, 0x9f, 0x8d, 0x72, 0x87, 0xc1, 0x3e, 0x02, 0x76, 0x9f, 0xc4, 0xe6, + 0xa7, 0x4c, 0x60, 0xe0, 0x64, 0x28, 0x79, 0xef, 0x19, 0x59, 0x57, 0xe0, 0x02, 0xdd, 0x4f, 0x9c, 0x28, 0x38, 0xe9, + 0xff, 0x08, 0xb0, 0xaa, 0x06, 0x04, 0xbc, 0x68, 0x1e, 0x2f, 0x0e, 0x1a, 0x67, 0x41, 0x57, 0x82, 0x67, 0x00, 0xc3, + 0xf9, 0xfe, 0x0f, 0x03, 0x8d, 0x7f, 0x2a, 0x27, 0xe0, 0xb0, 0x89, 0x52, 0x2b, 0x52, 0x89, 0x3e, 0xaf, 0xfb, 0x2a, + 0xc4, 0x84, 0xe9, 0x0f, 0x5b, 0x1c, 0x78, 0xe4, 0xab, 0x75, 0xd9, 0x96, 0xbb, 0xda, 0x94, 0x3c, 0xae, 0xed, 0xf3, + 0xa3, 0xae, 0xea, 0xdd, 0x3e, 0x72, 0xfd, 0xad, 0xb7, 0xa7, 0x20, 0xb7, 0x09, 0x54, 0xc9, 0x63, 0x1a, 0xf1, 0x6c, + 0x4a, 0xb9, 0x43, 0x95, 0x47, 0xee, 0x9d, 0x7b, 0x32, 0x50, 0x4c, 0x8b, 0x61, 0x7d, 0x5c, 0xcb, 0x02, 0x98, 0x0b, + 0x16, 0x22, 0x20, 0x4e, 0x96, 0xe3, 0xdf, 0x9b, 0xff, 0xe3, 0xf2, 0x76, 0x4f, 0x26, 0x54, 0x99, 0x60, 0x1d, 0x7a, + 0x84, 0xcb, 0xe4, 0x04, 0x56, 0x55, 0xb3, 0x62, 0xbf, 0xb1, 0x0b, 0xb0, 0x8e, 0x42, 0xdd, 0xb2, 0x8e, 0x60, 0xeb, + 0x18, 0xc4, 0x03, 0x6a, 0x1d, 0x07, 0xae, 0x64, 0xf6, 0x06, 0xd7, 0x15, 0x1e, 0x4e, 0xe9, 0xca, 0x40, 0xe4, 0x76, + 0x80, 0x71, 0xda, 0xa9, 0xbb, 0x96, 0xec, 0xfe, 0xe3, 0x37, 0x7c, 0x5b, 0x00, 0x37, 0x61, 0x61, 0x10, 0xc6, 0x1f, + 0x29, 0x0a, 0xd7, 0xd4, 0xcf, 0xbd, 0x22, 0x33, 0x60, 0xc8, 0x2c, 0xf0, 0x27, 0x31, 0x7d, 0xb9, 0x40, 0xf3, 0x57, + 0x2f, 0x9b, 0x63, 0xa7, 0x02, 0x86, 0xa9, 0xe7, 0xbb, 0x40, 0x98, 0x59, 0x73, 0x2e, 0x1a, 0xa9, 0x74, 0xb6, 0x99, + 0xf5, 0xc2, 0x7b, 0x97, 0x44, 0x85, 0x8f, 0x2a, 0xd3, 0xf0, 0x6f, 0xc0, 0xcb, 0x95, 0x8c, 0x61, 0xd6, 0xe1, 0xe8, + 0x42, 0xf0, 0x8b, 0x41, 0x8a, 0xaf, 0xd1, 0x4c, 0xd4, 0xc6, 0x8c, 0x84, 0x3f, 0xd6, 0xf7, 0x2e, 0x3a, 0x39, 0x45, + 0x81, 0x44, 0xc2, 0x4b, 0x29, 0x69, 0xee, 0x59, 0xc4, 0xb4, 0x93, 0xa6, 0xc5, 0x04, 0xe0, 0xd0, 0x4f, 0xf6, 0x9c, + 0x3f, 0x20, 0x3c, 0x77, 0x93, 0x70, 0xb8, 0x70, 0xa3, 0xcb, 0x15, 0x60, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, + 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, + 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xb1, 0x81, 0x8a, 0x2f, 0x8e, 0x5d, 0x69, 0x29, 0x89, 0xdd, 0xaa, 0x10, 0x96, + 0x77, 0xee, 0x76, 0x10, 0x6b, 0xeb, 0xba, 0x3b, 0x31, 0x0d, 0xfa, 0x99, 0x89, 0x61, 0xbd, 0xf1, 0x99, 0x2e, 0x21, + 0xda, 0xdc, 0x71, 0xf9, 0xae, 0xa3, 0x47, 0xe5, 0x61, 0x3a, 0x74, 0xed, 0x90, 0xec, 0xff, 0x99, 0xc7, 0xb5, 0x45, + 0x66, 0x1b, 0x7a, 0x58, 0xab, 0xac, 0xb4, 0x3f, 0x83, 0xee, 0xff, 0x38, 0x26, 0xd0, 0xc5, 0x7e, 0x9e, 0x44, 0xb7, + 0x97, 0xc0, 0xe8, 0x2d, 0x6a, 0xb1, 0x62, 0xc3, 0xf0, 0xf8, 0x9b, 0x0c, 0x92, 0x72, 0xca, 0xeb, 0x5c, 0x94, 0xc8, + 0x12, 0x52, 0xd3, 0x23, 0x72, 0x6e, 0x4b, 0xbc, 0x50, 0xca, 0xa6, 0x67, 0xea, 0x0d, 0x35, 0x62, 0x53, 0x85, 0xff, + 0x25, 0x66, 0xa8, 0xf6, 0x79, 0xb5, 0xa4, 0x85, 0x60, 0x7d, 0x9b, 0x77, 0xd7, 0x73, 0x61, 0xc5, 0x00, 0xa0, 0xd7, + 0x4e, 0x33, 0x76, 0x02, 0xf3, 0xd5, 0x88, 0xb5, 0xe2, 0x30, 0x19, 0x60, 0x42, 0xb2, 0xb8, 0x7d, 0x7c, 0xc6, 0x40, + 0x55, 0xba, 0x04, 0x74, 0xf1, 0x2c, 0x81, 0xac, 0x8f, 0xf3, 0x17, 0xa2, 0x29, 0x5a, 0x1d, 0xa0, 0x90, 0xad, 0xf2, + 0xc9, 0xa9, 0xea, 0x37, 0x11, 0xa9, 0xc9, 0x35, 0x8d, 0xd7, 0xd5, 0x35, 0xc2, 0x29, 0x30, 0x5c, 0xe0, 0x2c, 0xd0, + 0x36, 0xf1, 0xa9, 0x9b, 0x25, 0xdb, 0x35, 0x56, 0x7f, 0x64, 0x52, 0x55, 0xa9, 0xdd, 0x6a, 0x36, 0x2d, 0xc3, 0x20, + 0x63, 0x51, 0x66, 0xf9, 0xc2, 0xf5, 0xe9, 0x1e, 0x73, 0xbe, 0x25, 0x3b, 0x63, 0x7a, 0x46, 0xde, 0xc3, 0x2b, 0xf8, + 0x02, 0x20, 0x60, 0xf6, 0x9e, 0xbd, 0x59, 0x19, 0xcd, 0xe6, 0x99, 0x6e, 0xa8, 0xd4, 0xbf, 0x41, 0xde, 0x81, 0xb1, + 0x98, 0xd8, 0x60, 0xcb, 0x78, 0xc5, 0xb9, 0x3b, 0xb9, 0xb6, 0xb3, 0x26, 0xa3, 0x74, 0x33, 0x18, 0xbd, 0x40, 0xdb, + 0x78, 0x17, 0x94, 0xf3, 0xa3, 0xc1, 0x7c, 0x0a, 0x8a, 0x27, 0x0a, 0x5a, 0xb8, 0xc0, 0x77, 0xd2, 0xd4, 0x60, 0xb0, + 0x99, 0x8f, 0xde, 0x71, 0x30, 0xe9, 0xf1, 0x2b, 0x48, 0xff, 0x8d, 0x84, 0x32, 0xc5, 0x5e, 0x3e, 0x35, 0xbd, 0x5d, + 0x7f, 0x4a, 0xc4, 0xfe, 0x61, 0x34, 0x96, 0x7e, 0x44, 0xa7, 0x30, 0xb9, 0xb2, 0x5a, 0x00, 0xc2, 0x97, 0x5d, 0xdb, + 0x85, 0x6b, 0x50, 0x28, 0x19, 0x74, 0x8c, 0xc1, 0xa0, 0xc5, 0x2b, 0x3b, 0x59, 0x50, 0x59, 0xc8, 0x22, 0x2d, 0x74, + 0x49, 0xe9, 0xcf, 0x53, 0x85, 0x14, 0x56, 0x29, 0x7a, 0xd2, 0x10, 0x78, 0x24, 0xd0, 0xa0, 0x53, 0xac, 0xa6, 0xad, + 0x8a, 0xdf, 0x96, 0xd2, 0xe9, 0xd5, 0x7a, 0x73, 0xb6, 0xc9, 0x81, 0x62, 0xe7, 0x36, 0xfa, 0x95, 0x7f, 0xe6, 0x07, + 0x2a, 0xc8, 0x1a, 0x17, 0x5e, 0xc8, 0x74, 0x06, 0x32, 0x6d, 0x46, 0xc6, 0xce, 0x22, 0x8d, 0xc9, 0x78, 0xb3, 0xa8, + 0x87, 0x0a, 0xd8, 0x48, 0x31, 0xcd, 0x83, 0x55, 0xa4, 0x0b, 0x60, 0x91, 0xff, 0x32, 0x09, 0x26, 0x77, 0x03, 0x23, + 0x12, 0x33, 0x09, 0x3f, 0x80, 0x35, 0x5c, 0xe0, 0x49, 0xc5, 0x70, 0xd9, 0x5f, 0x1f, 0x45, 0xd1, 0x24, 0xef, 0x9b, + 0x16, 0x7f, 0x35, 0x2a, 0xa6, 0x43, 0xbc, 0xd9, 0xfb, 0xb1, 0x64, 0x2d, 0xac, 0x9d, 0x85, 0xb1, 0x3c, 0xc4, 0x2f, + 0xcf, 0x4d, 0xf9, 0x47, 0xfa, 0x01, 0xd8, 0xa7, 0xb7, 0x81, 0x17, 0x55, 0x1d, 0x8b, 0x74, 0x6f, 0x78, 0x2c, 0xb7, + 0x63, 0x76, 0x15, 0x5d, 0x19, 0xed, 0xa3, 0xe7, 0xef, 0xc4, 0x0f, 0x09, 0x97, 0xb6, 0x35, 0xee, 0xca, 0x84, 0x30, + 0x09, 0x86, 0x7a, 0x2b, 0x3f, 0xa0, 0x18, 0x58, 0xd3, 0x0e, 0x33, 0xd9, 0x9f, 0xd6, 0x61, 0x13, 0xf5, 0xe1, 0x88, + 0x8c, 0x93, 0x6f, 0x75, 0x51, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, + 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x60, + 0x72, 0xc1, 0x21, 0xbe, 0x74, 0x5f, 0xf5, 0x6c, 0x39, 0xa1, 0x7e, 0xa1, 0x12, 0x24, 0xdb, 0x72, 0x23, 0x92, 0x39, + 0xc0, 0x93, 0x50, 0x45, 0xe6, 0x6c, 0x72, 0xde, 0x8f, 0xb9, 0xd3, 0x5d, 0x30, 0xb9, 0x23, 0x74, 0xe1, 0x84, 0xf7, + 0xe8, 0xbd, 0x40, 0xbe, 0xde, 0x5e, 0x16, 0x9d, 0xe5, 0x01, 0xca, 0x95, 0x80, 0x86, 0x75, 0xad, 0xec, 0x74, 0x87, + 0x93, 0x9b, 0x9b, 0x8a, 0xda, 0x73, 0x2e, 0xfb, 0xea, 0x56, 0xa6, 0x87, 0x8d, 0xe3, 0x0b, 0xa7, 0x98, 0xf5, 0xf3, + 0x9c, 0x5c, 0xdc, 0xc1, 0xc1, 0x1b, 0x26, 0x06, 0x73, 0x3a, 0x3e, 0xf0, 0x66, 0x39, 0x3f, 0x32, 0x7d, 0x60, 0x56, + 0xa9, 0x6f, 0x07, 0x29, 0xe5, 0x4c, 0x7d, 0x35, 0x1a, 0x82, 0xc8, 0x0c, 0x6f, 0x4a, 0x54, 0x9b, 0x0a, 0x1d, 0x5c, + 0xf8, 0x74, 0xe3, 0x4d, 0x90, 0xc5, 0x7c, 0x61, 0xaa, 0xe6, 0xac, 0x26, 0x37, 0x6a, 0xa5, 0x7c, 0x30, 0x31, 0xe6, + 0x27, 0xab, 0x1a, 0x0d, 0x20, 0x83, 0x4a, 0x21, 0x3e, 0xe5, 0x85, 0xf0, 0x7d, 0x50, 0xa7, 0xfa, 0xc1, 0xb1, 0xcb, + 0xc3, 0xb3, 0xe0, 0x0c, 0x55, 0x72, 0x29, 0x42, 0x29, 0xf3, 0x7f, 0x13, 0xa5, 0x38, 0x2a, 0x00, 0xa3, 0x06, 0x9f, + 0x2d, 0x54, 0xa7, 0x6e, 0x59, 0x34, 0xe3, 0x1a, 0x9b, 0xf9, 0xa9, 0x6a, 0xa2, 0x54, 0x14, 0x04, 0x9e, 0xce, 0xee, + 0x02, 0x5f, 0x72, 0xf7, 0x60, 0x2b, 0x3b, 0xca, 0x36, 0x8e, 0xea, 0x21, 0x92, 0x27, 0x4a, 0x6b, 0x48, 0x57, 0x93, + 0x0a, 0x3d, 0x85, 0x8a, 0xd9, 0x73, 0x04, 0x13, 0xf1, 0xaf, 0x60, 0x02, 0x47, 0x07, 0x05, 0xd3, 0x8b, 0xec, 0x3d, + 0xcd, 0x02, 0xc1, 0x48, 0xf9, 0x2c, 0x35, 0x36, 0x63, 0x38, 0x59, 0xa4, 0xd0, 0xbe, 0xe8, 0x0a, 0x8a, 0x77, 0x69, + 0x69, 0x4b, 0xfb, 0x07, 0x0e, 0x86, 0x88, 0x13, 0x2f, 0x29, 0x81, 0x2a, 0xf5, 0x20, 0xaf, 0x50, 0xe4, 0x7e, 0x97, + 0x1a, 0x37, 0x61, 0xfb, 0xca, 0xa8, 0x6d, 0xb4, 0x57, 0xd1, 0x62, 0xba, 0x5c, 0xd7, 0x7a, 0x0e, 0x6e, 0x78, 0xa3, + 0xe6, 0x42, 0xdb, 0xe2, 0x4a, 0x8b, 0x5f, 0x7c, 0x37, 0xc3, 0x5c, 0x7b, 0x62, 0xd2, 0xaf, 0xed, 0x30, 0xe7, 0x10, + 0x83, 0x18, 0xb8, 0x4b, 0x04, 0x8b, 0xde, 0x0d, 0x10, 0xa0, 0xeb, 0x86, 0x54, 0x4d, 0x3d, 0x97, 0x0b, 0xff, 0xd3, + 0xbb, 0x14, 0xed, 0xc9, 0xca, 0xd8, 0x43, 0x5e, 0xb1, 0x4d, 0x5b, 0x76, 0x74, 0x4b, 0x9b, 0x5e, 0xb2, 0x60, 0xd3, + 0xe1, 0x35, 0x90, 0x0d, 0x1c, 0xbb, 0xe9, 0x66, 0x59, 0x18, 0x98, 0x78, 0x2d, 0x8a, 0x21, 0xe9, 0xac, 0x8c, 0xec, + 0xe2, 0x9c, 0x5e, 0x58, 0xc0, 0x84, 0x57, 0x5b, 0xf1, 0x27, 0xc2, 0x5d, 0xf4, 0x84, 0x46, 0x0c, 0x73, 0xa3, 0xa5, + 0xc3, 0x5a, 0x16, 0xdb, 0x22, 0x3e, 0x4a, 0xdc, 0x09, 0x0e, 0x7c, 0x1d, 0x20, 0xc6, 0x17, 0xff, 0xeb, 0x63, 0x81, + 0x09, 0x47, 0x90, 0xa9, 0xdd, 0xc2, 0x7d, 0xf9, 0xef, 0x7a, 0x0f, 0xac, 0xaa, 0xca, 0x1c, 0x11, 0xfb, 0x87, 0x51, + 0xe7, 0x21, 0xd6, 0x19, 0x6a, 0x1f, 0xde, 0x8d, 0x04, 0xf3, 0x0a, 0xcc, 0x78, 0x10, 0xa1, 0x2f, 0x2e, 0xe9, 0x01, + 0x8f, 0xf4, 0x24, 0x6e, 0x2a, 0xa6, 0x30, 0xf3, 0xc0, 0x69, 0xdd, 0x4f, 0xb7, 0xa0, 0x2e, 0xfa, 0x3a, 0xcc, 0x86, + 0xd3, 0xea, 0xa6, 0xb4, 0xaf, 0x31, 0xce, 0x34, 0xb3, 0xbe, 0xaa, 0xae, 0x7a, 0xb3, 0x8c, 0xc6, 0x8f, 0x62, 0xab, + 0x07, 0x96, 0x35, 0x1d, 0x10, 0x4f, 0x0a, 0xf0, 0xa2, 0xf6, 0x81, 0x2f, 0x8a, 0x24, 0x83, 0x96, 0x13, 0x7c, 0x5c, + 0xdb, 0x8a, 0x54, 0x6f, 0x16, 0x40, 0xc0, 0x7f, 0x39, 0x9a, 0x23, 0x98, 0x9f, 0x38, 0x27, 0x8e, 0x51, 0xab, 0xaa, + 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, + 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xb5, 0xb6, 0x74, 0xe5, 0xdb, 0x19, 0x3c, 0x77, + 0x30, 0xaa, 0x32, 0xa4, 0x53, 0x1e, 0x66, 0x03, 0x5b, 0xb4, 0x88, 0x09, 0xd8, 0xaf, 0x41, 0x00, 0xad, 0xb6, 0x85, + 0x65, 0xe1, 0xbe, 0xdf, 0x52, 0x6a, 0x80, 0xc4, 0x6c, 0x86, 0xf4, 0x40, 0x78, 0xe9, 0x93, 0x34, 0xa1, 0x7c, 0x2a, + 0xc9, 0x80, 0x7e, 0xc3, 0x8c, 0x18, 0xa4, 0x96, 0xff, 0x60, 0xc4, 0x0f, 0x6a, 0xb4, 0xcd, 0xd7, 0x50, 0x5d, 0xcc, + 0x38, 0x7f, 0x13, 0x89, 0x8f, 0xca, 0x87, 0x9c, 0x9a, 0xd4, 0x7e, 0x82, 0x67, 0x08, 0xad, 0x0e, 0x61, 0xd8, 0x7e, + 0xf3, 0x81, 0x0e, 0x83, 0xaa, 0x6d, 0xeb, 0x6a, 0x16, 0xc0, 0x61, 0x50, 0x22, 0x6c, 0x6b, 0xee, 0x63, 0xa8, 0x10, + 0x2c, 0x3c, 0x08, 0xaf, 0xa8, 0xd4, 0xa3, 0x59, 0x39, 0x94, 0x98, 0x35, 0x3c, 0xc5, 0xb3, 0x14, 0xe8, 0x0c, 0x2c, + 0x3a, 0x5f, 0x8f, 0x14, 0xe6, 0x72, 0xad, 0xaa, 0x0b, 0xc6, 0x54, 0x91, 0x33, 0xfa, 0xe3, 0x5b, 0x60, 0xf7, 0xe5, + 0x15, 0xb9, 0xb7, 0x5a, 0xd6, 0x3b, 0x9f, 0x4f, 0x26, 0x7c, 0x69, 0x6a, 0x08, 0x7b, 0x0b, 0x97, 0xae, 0x84, 0x02, + 0xc7, 0x1d, 0xb4, 0xe7, 0x46, 0x95, 0xbc, 0xcf, 0x3a, 0x0d, 0x5b, 0x5e, 0xdf, 0xde, 0xa4, 0x7e, 0xfa, 0x05, 0x59, + 0x5e, 0x98, 0x52, 0x5c, 0xa6, 0xfd, 0x8d, 0xeb, 0xe1, 0xb1, 0xca, 0x4f, 0x4d, 0x56, 0xbe, 0xcb, 0xae, 0xa6, 0xee, + 0x7d, 0x23, 0xed, 0x75, 0x7c, 0x59, 0xe8, 0x2c, 0x8c, 0x1e, 0x61, 0x64, 0x9c, 0x1d, 0x26, 0xb3, 0x90, 0x47, 0xef, + 0x5e, 0xc6, 0xae, 0x32, 0xfb, 0xd6, 0x6f, 0xe1, 0x46, 0xc5, 0xb0, 0xbe, 0x19, 0x9c, 0xf5, 0x41, 0x29, 0xe8, 0x4b, + 0x68, 0x26, 0x78, 0x6a, 0x66, 0x6e, 0x03, 0x0d, 0xac, 0xde, 0x0a, 0xb0, 0xa7, 0xe4, 0xa2, 0xc8, 0x61, 0x24, 0x80, + 0x1d, 0x3c, 0x51, 0xdd, 0x06, 0xfd, 0x26, 0xf9, 0x8c, 0xb8, 0xd7, 0x95, 0x37, 0x9d, 0xfe, 0xd2, 0xf2, 0xce, 0x8f, + 0xd1, 0xce, 0xe6, 0x16, 0xa9, 0xb0, 0x2f, 0x7b, 0x3b, 0x94, 0x2a, 0x3c, 0x3d, 0x32, 0xc9, 0x4c, 0x0d, 0xe9, 0xaf, + 0x56, 0xf1, 0x8f, 0xcf, 0x55, 0x59, 0x31, 0xc1, 0x25, 0xb5, 0xe3, 0x09, 0x7a, 0x8d, 0x9c, 0x0b, 0xc9, 0x01, 0xbb, + 0xa7, 0x2b, 0x15, 0xad, 0x03, 0xd5, 0x62, 0x2e, 0x85, 0xaa, 0xa3, 0xdb, 0xbb, 0x2b, 0x03, 0x15, 0x75, 0xe2, 0xa8, + 0x4a, 0x36, 0xe7, 0x02, 0xa7, 0x33, 0x9b, 0xa2, 0xdc, 0x0e, 0x8c, 0x10, 0xdd, 0x02, 0x1f, 0xce, 0xe2, 0x35, 0x7b, + 0x18, 0x69, 0x1e, 0x46, 0x68, 0x88, 0xe2, 0x54, 0x04, 0xc3, 0xd8, 0x80, 0x6d, 0xb5, 0x02, 0xb0, 0xc1, 0xa4, 0xd9, + 0x66, 0xc5, 0x98, 0x54, 0x6d, 0x98, 0xea, 0xa2, 0x3c, 0x5e, 0x3c, 0x27, 0x72, 0xce, 0x6c, 0xf0, 0x06, 0xa0, 0xf8, + 0x88, 0x3e, 0xcd, 0xa4, 0x39, 0xfa, 0x21, 0x8a, 0x71, 0x61, 0xdc, 0xdf, 0x22, 0xf8, 0x92, 0xe9, 0x7a, 0x71, 0x5b, + 0x37, 0x09, 0xdb, 0x40, 0xce, 0x59, 0xd4, 0x8d, 0x4f, 0x22, 0x20, 0xc0, 0xda, 0x03, 0x38, 0xf7, 0x53, 0x76, 0x8d, + 0xb7, 0x71, 0xe6, 0x4b, 0x65, 0x1c, 0x21, 0x15, 0xa3, 0x45, 0xce, 0x96, 0x34, 0x54, 0x92, 0x13, 0xf3, 0x9b, 0xac, + 0x8a, 0xf7, 0x1c, 0x91, 0x3e, 0xf3, 0xfb, 0xe0, 0xb8, 0x44, 0xb0, 0x30, 0xa0, 0x81, 0xd1, 0xf1, 0x20, 0xbb, 0xd3, + 0x96, 0x4c, 0x18, 0x8f, 0x0d, 0xf9, 0x6b, 0x3f, 0x27, 0x64, 0xb4, 0x2e, 0xfb, 0x47, 0xc2, 0x09, 0x5c, 0x7a, 0xf3, + 0x09, 0x3d, 0x68, 0xa9, 0x98, 0xb4, 0xdd, 0x06, 0x2b, 0xbc, 0x4a, 0xce, 0x10, 0xa2, 0xbf, 0x08, 0x01, 0x90, 0x23, + 0xfb, 0x59, 0x41, 0x21, 0x36, 0x96, 0x3a, 0xdd, 0xb0, 0x64, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, + 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, + 0xbd, 0x08, 0xc3, 0x19, 0x95, 0xe6, 0x01, 0xe7, 0xd4, 0x65, 0xd3, 0x3d, 0x60, 0xed, 0x09, 0x1e, 0x56, 0xc0, 0x7e, + 0x07, 0xa6, 0xf2, 0xa2, 0x78, 0x47, 0x37, 0x6f, 0xf7, 0x04, 0x82, 0x61, 0x3f, 0xa8, 0x18, 0xfc, 0x4a, 0x1a, 0x49, + 0x52, 0x90, 0xf5, 0xf4, 0xb3, 0xe4, 0x3a, 0x42, 0x71, 0x80, 0xe5, 0x4d, 0x57, 0xb1, 0x5b, 0x66, 0x32, 0xe4, 0x7e, + 0xb4, 0x85, 0x9d, 0xcc, 0x69, 0x49, 0xe3, 0x2f, 0xfd, 0x7d, 0x0c, 0xbf, 0x90, 0x5a, 0x95, 0x78, 0x0c, 0x1b, 0x8b, + 0x5f, 0xb0, 0x50, 0x91, 0x62, 0x9f, 0xb1, 0x26, 0xbe, 0x79, 0xe6, 0xef, 0x84, 0xcc, 0xd6, 0x7f, 0x9f, 0x25, 0xbe, + 0x3b, 0x17, 0x48, 0xfc, 0x11, 0xe4, 0x80, 0xa6, 0x9f, 0x14, 0xa3, 0xa1, 0x6a, 0x9c, 0xc8, 0xf2, 0x01, 0x3d, 0xeb, + 0xf7, 0x1e, 0x07, 0xe2, 0xac, 0x3f, 0xed, 0x60, 0x47, 0x83, 0x05, 0xa3, 0x68, 0xc7, 0x9f, 0x8c, 0x45, 0x67, 0x65, + 0x6e, 0xef, 0xfa, 0x9d, 0xd6, 0xf7, 0x36, 0x4d, 0xe8, 0x36, 0x4f, 0xd5, 0x93, 0x30, 0xb6, 0xdc, 0xa3, 0x89, 0x93, + 0xaf, 0xda, 0x54, 0x55, 0xf1, 0x0e, 0x82, 0x2e, 0x89, 0x15, 0xe8, 0x3c, 0x0f, 0x9c, 0x75, 0x0c, 0xf4, 0x0a, 0x3f, + 0x89, 0xc5, 0x56, 0xe5, 0x24, 0xdf, 0x41, 0x42, 0x6a, 0xe0, 0x14, 0x8e, 0x9f, 0x4d, 0x25, 0xf0, 0x47, 0x96, 0xa2, + 0x07, 0xf9, 0x44, 0xe7, 0xe8, 0x55, 0xbc, 0x45, 0x5c, 0x98, 0x69, 0x8f, 0x25, 0x10, 0xc6, 0xe5, 0x0b, 0xf6, 0xe3, + 0x03, 0xb1, 0x21, 0xe3, 0x32, 0xf4, 0x13, 0x28, 0xd4, 0xda, 0x99, 0x96, 0xd2, 0x5f, 0x7b, 0x20, 0xcb, 0xad, 0x6d, + 0x88, 0x28, 0x49, 0x3d, 0xa6, 0x71, 0x0d, 0x15, 0xe7, 0x59, 0x3d, 0x47, 0x2c, 0xa8, 0x7f, 0x3b, 0x7f, 0x66, 0xaf, + 0x95, 0x10, 0x23, 0x18, 0x9f, 0x92, 0x8b, 0x39, 0xcf, 0xdb, 0x23, 0x5b, 0x48, 0x3d, 0xa5, 0x35, 0xd1, 0xcc, 0x4f, + 0xc7, 0x60, 0xa0, 0xea, 0x8c, 0x98, 0xd3, 0x03, 0x72, 0xc6, 0xfb, 0x62, 0x5b, 0x66, 0xca, 0xfd, 0x64, 0x3a, 0x42, + 0x33, 0xd9, 0x8b, 0x04, 0x9e, 0xe5, 0x4d, 0x2f, 0x27, 0x55, 0x7f, 0xcd, 0x75, 0xe8, 0x27, 0x9b, 0x13, 0x35, 0x3f, + 0x26, 0x49, 0xc7, 0x72, 0xfb, 0x68, 0xd8, 0x15, 0xa6, 0xa7, 0x34, 0xdc, 0xe2, 0xd8, 0x1d, 0x23, 0x43, 0x0b, 0xc5, + 0x23, 0x62, 0xd6, 0x25, 0x21, 0x87, 0xd5, 0x11, 0x6f, 0x7a, 0xe7, 0xb8, 0xe7, 0x61, 0xe9, 0x77, 0x63, 0xe5, 0x44, + 0x21, 0x20, 0x04, 0x3b, 0x52, 0xf2, 0xdb, 0x68, 0xca, 0xfe, 0x98, 0x0b, 0x6f, 0x2d, 0xe1, 0x82, 0xbb, 0x04, 0xc9, + 0x9b, 0x03, 0x50, 0x5b, 0xdf, 0x76, 0x8e, 0x1d, 0xa0, 0x2e, 0xd8, 0x2c, 0x7d, 0xe0, 0xc7, 0x14, 0x67, 0x2e, 0x0a, + 0x7a, 0x29, 0xc1, 0x77, 0x69, 0x71, 0x43, 0x2d, 0x85, 0xf9, 0x0a, 0xa9, 0x50, 0x57, 0x51, 0x99, 0xc6, 0xcc, 0xf1, + 0x53, 0x0c, 0x8b, 0xa8, 0xda, 0xb5, 0x7a, 0x0b, 0x57, 0xbb, 0xe8, 0xab, 0x0f, 0xba, 0x63, 0x8f, 0x38, 0x77, 0x18, + 0xa6, 0x13, 0x80, 0x8f, 0xd2, 0xac, 0x59, 0xef, 0x61, 0xa1, 0xb4, 0x56, 0xae, 0x4e, 0xb9, 0x3f, 0x17, 0xb0, 0xb0, + 0xc4, 0x98, 0xf2, 0x42, 0x0d, 0x35, 0x04, 0xe1, 0x9f, 0xc4, 0x66, 0xcb, 0x2f, 0x8d, 0x28, 0x24, 0x49, 0xcd, 0x59, + 0x10, 0x39, 0x18, 0x61, 0xe9, 0x96, 0x94, 0x7f, 0x2f, 0x30, 0xde, 0x83, 0x7f, 0x39, 0x2a, 0x8d, 0x86, 0xc5, 0xdf, + 0xb6, 0x90, 0x99, 0x9f, 0xf6, 0x8b, 0x66, 0xed, 0x17, 0x01, 0xe0, 0x1e, 0x52, 0xd6, 0x72, 0x06, 0xb8, 0xe0, 0x70, + 0xa9, 0xdd, 0xe7, 0xa8, 0x57, 0x70, 0xb3, 0x03, 0x96, 0x9f, 0x51, 0xfb, 0x5f, 0x73, 0x29, 0x88, 0xf4, 0x2b, 0x06, + 0xe3, 0xec, 0x50, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, + 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xb9, 0x31, 0x11, + 0x9d, 0x63, 0x6b, 0x56, 0x7a, 0x2b, 0x4b, 0x4a, 0xce, 0xc3, 0xd1, 0x7d, 0x9a, 0x92, 0x14, 0x9d, 0x36, 0x8d, 0x06, + 0xca, 0x62, 0xc8, 0x26, 0x52, 0x4c, 0x80, 0x7c, 0xe2, 0x1a, 0x35, 0x05, 0xdc, 0xa7, 0x3d, 0x00, 0x2d, 0x63, 0xcd, + 0x5a, 0xcd, 0x4e, 0x78, 0x75, 0xf0, 0xa4, 0x93, 0x0a, 0x7f, 0x80, 0x19, 0xf1, 0x92, 0xb4, 0x53, 0x62, 0x62, 0xdf, + 0xa2, 0xf6, 0xa7, 0x2a, 0x6f, 0x00, 0x7a, 0xd8, 0xcd, 0x22, 0x30, 0x1a, 0x86, 0xad, 0x06, 0x4c, 0x5e, 0x54, 0x61, + 0x54, 0x10, 0x86, 0xb9, 0x83, 0xd6, 0xa6, 0xa8, 0x99, 0x42, 0xbb, 0x6e, 0x11, 0x19, 0x2a, 0x49, 0x2e, 0x97, 0xee, + 0xe7, 0x3e, 0x76, 0xc6, 0xec, 0xe8, 0x8a, 0x28, 0x5a, 0xdb, 0x88, 0x4b, 0xc2, 0xf2, 0xd1, 0x73, 0xc6, 0x30, 0xe9, + 0x6e, 0x2c, 0x53, 0x0b, 0x54, 0x0a, 0xff, 0xae, 0x2c, 0x91, 0x3c, 0x8b, 0x09, 0x02, 0x84, 0x79, 0xca, 0x8e, 0x17, + 0x74, 0x97, 0x3e, 0xa4, 0xef, 0x69, 0x84, 0x45, 0x0c, 0xe8, 0xdb, 0x06, 0x5b, 0xc8, 0xd9, 0x71, 0xf8, 0x60, 0xd5, + 0x68, 0x2f, 0x14, 0x71, 0x66, 0xc2, 0x16, 0x51, 0x95, 0xae, 0x96, 0xb5, 0xe3, 0x3d, 0xb2, 0x7a, 0xb5, 0x20, 0xbb, + 0x35, 0xf1, 0x24, 0x02, 0xd1, 0xaf, 0xe5, 0x97, 0x63, 0x94, 0xe2, 0x22, 0xa0, 0xf4, 0x40, 0x5c, 0xe6, 0x46, 0x52, + 0xeb, 0x5c, 0xf9, 0xe6, 0xcf, 0xeb, 0x13, 0x50, 0xbb, 0xaa, 0x7e, 0x5d, 0xbe, 0xa1, 0x6b, 0xcf, 0x8b, 0x7b, 0xdf, + 0xb7, 0x50, 0x85, 0xf6, 0x63, 0xfd, 0x20, 0x3a, 0x39, 0xa9, 0x17, 0x59, 0x01, 0xb4, 0x45, 0x34, 0xae, 0xaa, 0x16, + 0x13, 0x72, 0x57, 0x1f, 0x6f, 0xe1, 0xc9, 0xb0, 0x42, 0xd4, 0xf2, 0x42, 0xe7, 0xb4, 0x86, 0x65, 0x91, 0x31, 0xe1, + 0xbc, 0x38, 0x16, 0xf8, 0x22, 0x12, 0xcb, 0xdd, 0x83, 0xd8, 0x02, 0x12, 0xb1, 0x47, 0x94, 0xfc, 0xae, 0xcd, 0xaa, + 0x7a, 0xd1, 0xbb, 0x0f, 0xe4, 0x19, 0xb4, 0x0e, 0xbc, 0x1e, 0x84, 0xce, 0x5c, 0x5f, 0xfc, 0x00, 0xbf, 0x1e, 0x56, + 0x7e, 0x1b, 0xea, 0x37, 0x53, 0x58, 0x74, 0x75, 0x82, 0xab, 0x65, 0x68, 0xbd, 0xa3, 0xd8, 0xa8, 0xd9, 0x31, 0x76, + 0x68, 0xbf, 0x47, 0xff, 0x7c, 0x2f, 0x41, 0x78, 0x87, 0x7c, 0x6d, 0xe1, 0x15, 0x01, 0x19, 0xd0, 0xbb, 0x38, 0xad, + 0x7b, 0x77, 0xab, 0xff, 0x76, 0x97, 0x14, 0x3d, 0xf8, 0x2a, 0x9e, 0xaf, 0x11, 0xec, 0xdf, 0x1f, 0x4e, 0x10, 0x0a, + 0xb8, 0xe8, 0x92, 0x60, 0xa2, 0x1e, 0x4a, 0x1f, 0xa7, 0x09, 0xd5, 0x0f, 0x4b, 0x05, 0x9e, 0xa6, 0x48, 0x28, 0x4e, + 0x02, 0x57, 0x1c, 0x95, 0x8f, 0x28, 0xbe, 0x02, 0xba, 0x94, 0xaa, 0x79, 0x86, 0xca, 0x65, 0xa3, 0x6a, 0x09, 0x76, + 0x0d, 0x3e, 0xa7, 0x45, 0x17, 0xa7, 0x33, 0x14, 0x85, 0xeb, 0xb9, 0xf4, 0xe2, 0x58, 0xad, 0x2c, 0xba, 0x0a, 0x74, + 0x23, 0x16, 0x59, 0x76, 0x36, 0xe7, 0x30, 0x59, 0x87, 0x4b, 0x34, 0xb2, 0x7c, 0x6d, 0xb8, 0x16, 0xbe, 0x01, 0xa2, + 0xb8, 0xe3, 0x0a, 0x4a, 0x55, 0xef, 0x94, 0x37, 0x8f, 0xcf, 0xbd, 0x57, 0xe3, 0x7b, 0xe1, 0x9d, 0xa7, 0x0e, 0x61, + 0xd8, 0xf1, 0x49, 0x8a, 0xab, 0x24, 0xd0, 0x27, 0xae, 0x8c, 0x8b, 0x94, 0xf9, 0x3e, 0xac, 0xf4, 0xdc, 0x18, 0xc3, + 0xc2, 0x87, 0x49, 0x9e, 0x37, 0xbe, 0x53, 0x74, 0xc5, 0x1e, 0xa6, 0x29, 0xeb, 0xe4, 0x3e, 0xaf, 0xd4, 0xcd, 0x48, + 0x43, 0x57, 0x99, 0x2b, 0x8b, 0x0c, 0x54, 0x0e, 0x6d, 0x05, 0x34, 0x20, 0x96, 0x52, 0xe4, 0x2a, 0xbe, 0xb7, 0x0f, + 0x0f, 0xf9, 0x37, 0x2b, 0x4d, 0x04, 0x23, 0xd1, 0x1c, 0xbe, 0x72, 0x8d, 0xb3, 0x15, 0x37, 0xab, 0xaa, 0xaa, 0xaa, + 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, + 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xcb, 0x78, 0x2c, 0x12, 0x7c, 0x16, 0x6c, 0xe7, 0xb0, 0x1a, + 0xf2, 0x0a, 0x20, 0xa7, 0x72, 0x88, 0xdf, 0xef, 0x26, 0x16, 0xa4, 0xf4, 0xcf, 0x38, 0x9e, 0x49, 0xb2, 0x02, 0x65, + 0xb4, 0xc8, 0x5b, 0x71, 0xb9, 0x03, 0x95, 0xfa, 0x91, 0xfa, 0x3b, 0x02, 0xa4, 0x94, 0xd2, 0x17, 0xf6, 0xc7, 0x06, + 0x71, 0x70, 0x80, 0xa5, 0x8a, 0x32, 0xb8, 0xd8, 0x92, 0xd4, 0x8c, 0x00, 0x1d, 0x47, 0x1a, 0x5a, 0xc3, 0x08, 0xec, + 0xbb, 0xc7, 0x86, 0x70, 0xdd, 0x34, 0x29, 0xaa, 0x24, 0xfc, 0xae, 0x34, 0x1b, 0x8c, 0xc0, 0x91, 0x16, 0x5d, 0xe3, + 0x35, 0x2b, 0x76, 0xfe, 0xc0, 0x17, 0x1f, 0x29, 0x1b, 0x02, 0x54, 0x34, 0x4c, 0x73, 0x45, 0x4e, 0x75, 0xe6, 0xed, + 0x13, 0xf7, 0x64, 0xa2, 0x32, 0x9e, 0x28, 0x16, 0xf6, 0x70, 0xce, 0x88, 0xa7, 0xdf, 0x76, 0x28, 0x76, 0x3b, 0xce, + 0xe4, 0x39, 0x83, 0x73, 0x37, 0xa9, 0xfd, 0x1f, 0xd0, 0x81, 0xf1, 0x85, 0x84, 0x1b, 0x88, 0xe4, 0xf2, 0xcd, 0xfe, + 0xfe, 0x1d, 0xea, 0x51, 0xda, 0xfa, 0x30, 0x5d, 0xeb, 0xe7, 0x26, 0xdc, 0xc9, 0x32, 0x68, 0x60, 0x10, 0x31, 0x3f, + 0xe9, 0xce, 0xca, 0x7f, 0x6f, 0x45, 0x87, 0x78, 0xf9, 0x3e, 0x5c, 0x61, 0xf4, 0x2e, 0x41, 0x75, 0xa1, 0x4c, 0xb3, + 0xdd, 0xee, 0x7a, 0x54, 0x62, 0x72, 0xdc, 0x4b, 0x7e, 0xb8, 0x4e, 0xd8, 0x4e, 0xc1, 0x7c, 0xfa, 0x7f, 0x92, 0xc8, + 0xbe, 0x9c, 0x5e, 0x0b, 0xba, 0x6b, 0xf9, 0xc2, 0xa9, 0xa4, 0xfd, 0xf5, 0x7c, 0x6f, 0x64, 0x2f, 0x69, 0xc3, 0x4d, + 0x2c, 0x20, 0xe6, 0x03, 0x33, 0xca, 0xef, 0x93, 0xdc, 0x06, 0x15, 0x86, 0x3d, 0xb0, 0x0a, 0xd2, 0x45, 0xb6, 0x4c, + 0x43, 0x3b, 0x97, 0x38, 0xeb, 0xe7, 0xfc, 0x9d, 0x90, 0x42, 0x94, 0xf0, 0xc3, 0x62, 0x8d, 0xc4, 0xef, 0x08, 0x2b, + 0xba, 0xe1, 0xea, 0x9b, 0x56, 0xaf, 0x68, 0x1a, 0xf8, 0x27, 0x26, 0x66, 0x1c, 0xe2, 0x24, 0x41, 0xc6, 0xae, 0x94, + 0x6c, 0x25, 0x51, 0x72, 0xe9, 0xa4, 0xea, 0x89, 0xfb, 0x1a, 0x8e, 0x43, 0x09, 0x8f, 0x0f, 0x97, 0x8a, 0x39, 0xf3, + 0xcf, 0x9a, 0x5e, 0x78, 0xa4, 0x86, 0xf8, 0x26, 0xc3, 0x04, 0x9d, 0xb8, 0x68, 0xf2, 0x42, 0x60, 0x3d, 0x81, 0x67, + 0xb0, 0xc5, 0x91, 0xbf, 0x2b, 0x42, 0xa8, 0xcf, 0x32, 0x30, 0xd2, 0x6a, 0x2d, 0xd2, 0x18, 0x19, 0x2e, 0x4e, 0x5b, + 0x04, 0x2b, 0x03, 0x26, 0x5c, 0x36, 0x44, 0xc0, 0x92, 0xac, 0xc7, 0x6c, 0x6a, 0x7c, 0x90, 0x78, 0x86, 0x6f, 0x3b, + 0xcd, 0xb2, 0x6f, 0xa8, 0x6d, 0xba, 0xbc, 0x5a, 0x4e, 0x93, 0x64, 0x88, 0x56, 0x1f, 0x15, 0x95, 0x94, 0xef, 0x5d, + 0xc1, 0x41, 0xdf, 0x7e, 0xca, 0x31, 0xe3, 0xc3, 0x0a, 0x4b, 0x0d, 0x9c, 0x21, 0xa5, 0x60, 0xf7, 0xc0, 0x31, 0x67, + 0xf8, 0xc1, 0x42, 0xdf, 0xee, 0x9c, 0x90, 0x4e, 0x1d, 0xf4, 0xe0, 0x26, 0x5f, 0x58, 0x42, 0xeb, 0xc3, 0xc9, 0x8c, + 0xf8, 0x30, 0x3a, 0xe5, 0xd2, 0xfa, 0x59, 0xbc, 0xa9, 0x81, 0xc2, 0xb9, 0xb5, 0x32, 0x58, 0xca, 0x5c, 0x20, 0x40, + 0xb7, 0xb2, 0xe2, 0x7d, 0x5b, 0x69, 0xee, 0x4e, 0xb3, 0x91, 0x18, 0x78, 0xb4, 0x80, 0x54, 0x35, 0x45, 0x7b, 0x02, + 0x36, 0xa5, 0xad, 0x1e, 0x89, 0xcb, 0x28, 0x1e, 0x9c, 0x10, 0x0f, 0x42, 0xa9, 0x4b, 0x73, 0x23, 0x2e, 0xb9, 0xec, + 0xc9, 0xc4, 0xc4, 0xae, 0x3c, 0xd4, 0xc3, 0x55, 0xfa, 0xd9, 0x84, 0x49, 0x35, 0x4b, 0x02, 0x2a, 0xfe, 0x47, 0x54, + 0x8c, 0x9d, 0x87, 0x87, 0x35, 0x44, 0xf7, 0x47, 0xbb, 0x21, 0x5b, 0xb7, 0x68, 0xab, 0x57, 0x5e, 0xbb, 0xb1, 0x5d, + 0x06, 0xe0, 0x06, 0x1d, 0xf0, 0x44, 0x5a, 0x32, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, + 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, + 0xc3, 0x19, 0x1f, 0xda, 0x73, 0xbd, 0x5b, 0xb0, 0x26, 0x85, 0x5a, 0x76, 0x0f, 0x55, 0x6a, 0x51, 0x1f, 0xdd, 0x26, + 0x79, 0x03, 0x1f, 0xd6, 0xae, 0x3f, 0xfe, 0x7d, 0x88, 0x70, 0x0d, 0x83, 0xe2, 0x4a, 0x50, 0x9c, 0xcc, 0xcb, 0x67, + 0xd4, 0x8f, 0x61, 0x6d, 0x97, 0x49, 0x22, 0xb5, 0xb7, 0x67, 0x43, 0x20, 0x9f, 0x34, 0xf5, 0x6f, 0x42, 0xab, 0x1d, + 0xb6, 0xa3, 0x3b, 0x41, 0x42, 0xb3, 0x9f, 0xe8, 0x33, 0x5b, 0x74, 0xb8, 0x2b, 0x68, 0x3e, 0x8b, 0xa8, 0xb9, 0x9d, + 0x71, 0xb4, 0x52, 0x08, 0x30, 0x57, 0x95, 0xea, 0x07, 0x04, 0xf0, 0x5c, 0xa4, 0x77, 0x21, 0x15, 0xaf, 0x27, 0x7c, + 0x01, 0xe1, 0x46, 0x33, 0xe2, 0x88, 0x06, 0x24, 0x2b, 0x48, 0x79, 0xc2, 0x49, 0x10, 0x57, 0x8c, 0x9b, 0x92, 0xe9, + 0xbd, 0xc0, 0x9c, 0x3f, 0x7d, 0x3d, 0x9f, 0xc8, 0x75, 0x8f, 0xbe, 0x86, 0x13, 0xb7, 0xa0, 0x4f, 0xb9, 0x28, 0x08, + 0x87, 0x31, 0x25, 0xdd, 0x81, 0x72, 0x0c, 0xa3, 0x4d, 0x59, 0x57, 0xc6, 0xc9, 0x33, 0x66, 0x22, 0xf5, 0x66, 0x01, + 0x28, 0xc9, 0x17, 0xef, 0x65, 0x5d, 0x4a, 0x14, 0x2a, 0x44, 0x45, 0x2e, 0xaf, 0xe9, 0x91, 0xbf, 0x28, 0x52, 0x08, + 0x1f, 0x1e, 0x66, 0x16, 0x68, 0x98, 0x3c, 0x8c, 0x1e, 0xfa, 0x54, 0xa0, 0x07, 0x94, 0x3c, 0x99, 0x06, 0x19, 0x80, + 0x5a, 0x9d, 0xe9, 0x5c, 0x57, 0xab, 0xad, 0x36, 0x31, 0x95, 0xb2, 0x2b, 0x0d, 0x9e, 0x4b, 0x16, 0x71, 0xf4, 0xd3, + 0x24, 0xc4, 0x4b, 0xdf, 0x8f, 0xe8, 0x64, 0x77, 0x19, 0xbe, 0xad, 0x46, 0xfd, 0x8c, 0xe0, 0x7c, 0x3d, 0xaa, 0x42, + 0xf8, 0x54, 0x46, 0x93, 0xc5, 0x2a, 0x8e, 0x94, 0x09, 0x3c, 0xb2, 0x0a, 0x69, 0x28, 0xe3, 0x37, 0xaa, 0x2e, 0x4f, + 0x60, 0xc0, 0x45, 0xca, 0x97, 0x62, 0x29, 0xcb, 0x34, 0x6f, 0x0d, 0xb3, 0x30, 0xf6, 0xe3, 0xe6, 0x13, 0xdd, 0x97, + 0xb6, 0xf5, 0x36, 0xe5, 0xaf, 0x40, 0xe6, 0x82, 0xe6, 0xe1, 0x83, 0x77, 0xf1, 0x47, 0x1d, 0x7d, 0x2a, 0xab, 0x13, + 0xd9, 0x69, 0xd6, 0x08, 0x54, 0x05, 0x7e, 0x3c, 0xe5, 0x2d, 0xa2, 0x8b, 0x25, 0xd4, 0x56, 0xe7, 0x3b, 0x12, 0x30, + 0xa1, 0xc7, 0x54, 0x13, 0x5e, 0xaa, 0xa1, 0x82, 0x04, 0x7b, 0x60, 0x94, 0xd5, 0xc2, 0xcb, 0x78, 0x48, 0x0e, 0x78, + 0xc8, 0x34, 0xfa, 0xe2, 0xdb, 0x0b, 0x27, 0x61, 0x22, 0x72, 0xcd, 0xeb, 0x7c, 0x66, 0x3b, 0xe2, 0xf1, 0x0b, 0x9d, + 0xf8, 0x71, 0x6e, 0xf7, 0x9d, 0x64, 0xb6, 0x5c, 0x07, 0x84, 0x01, 0x50, 0x61, 0x3c, 0x67, 0x3f, 0xa5, 0x3f, 0x96, + 0xa7, 0x6b, 0xfe, 0x8d, 0xcc, 0x39, 0x5b, 0xbd, 0xb6, 0x6c, 0xad, 0xae, 0x60, 0x0c, 0xf7, 0x1f, 0x48, 0x09, 0x92, + 0xb6, 0x75, 0x22, 0x82, 0xf8, 0x4c, 0x57, 0x5c, 0xad, 0x6e, 0x2b, 0xb7, 0x75, 0x91, 0xa6, 0x96, 0x7c, 0x73, 0x06, + 0x96, 0xb3, 0xa9, 0xaa, 0x59, 0x3b, 0xb7, 0x32, 0x16, 0xdf, 0xa2, 0x8d, 0xca, 0x45, 0xa0, 0x61, 0xce, 0x9e, 0x13, + 0x07, 0x7f, 0xdc, 0x88, 0x99, 0xee, 0x13, 0x13, 0x03, 0x35, 0xf5, 0x8e, 0x00, 0xd1, 0xd8, 0xce, 0xad, 0x52, 0x3d, + 0xb6, 0x1e, 0x39, 0x2a, 0xda, 0x5c, 0x91, 0xe0, 0xf2, 0xd8, 0xd7, 0xb0, 0x37, 0x5a, 0x62, 0x29, 0x63, 0xdf, 0x17, + 0x41, 0x6b, 0x62, 0x8c, 0xdc, 0x85, 0x4b, 0x4a, 0x80, 0x04, 0x9f, 0x4e, 0x54, 0x6c, 0xd3, 0xc1, 0x75, 0x6b, 0x98, + 0xeb, 0xa7, 0x42, 0xfa, 0x54, 0xe3, 0x2e, 0x1a, 0x64, 0xb9, 0x07, 0xd0, 0x4e, 0x70, 0x11, 0xa7, 0xfe, 0xb6, 0x2f, + 0xa1, 0x1a, 0x33, 0xcc, 0x60, 0x94, 0x0b, 0x40, 0xfd, 0xf4, 0xab, 0x1d, 0x26, 0xbc, 0xfb, 0x6f, 0xde, 0x63, 0x15, + 0x6e, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, + 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xa1, 0x95, 0x31, 0xf4, 0xf8, + 0x98, 0x42, 0xf3, 0xe6, 0x61, 0x3b, 0xf1, 0x26, 0x8a, 0xbe, 0x31, 0xc8, 0x83, 0xb2, 0x82, 0xdf, 0x42, 0xc7, 0x8d, + 0xfd, 0xa3, 0xd2, 0x5c, 0xdb, 0x6d, 0x69, 0x14, 0x9e, 0xe7, 0xf4, 0xf6, 0x01, 0x65, 0x8d, 0xfe, 0x85, 0x16, 0xad, + 0xe6, 0xeb, 0x70, 0x39, 0xe5, 0x32, 0xb0, 0x69, 0x39, 0xb2, 0xa6, 0xd3, 0x86, 0xc7, 0x99, 0x75, 0x26, 0x3a, 0x97, + 0x5c, 0x3c, 0xbb, 0x96, 0xd3, 0x0c, 0x22, 0x68, 0xb1, 0xb2, 0xc9, 0xec, 0xd4, 0xa6, 0x7c, 0xdb, 0xb1, 0x4e, 0xf2, + 0x4e, 0xfb, 0x6b, 0x57, 0x23, 0xcf, 0x3b, 0x22, 0x5b, 0xec, 0xc7, 0xb8, 0x28, 0x9c, 0x12, 0x72, 0x9a, 0xa2, 0x92, + 0xaf, 0xe0, 0xa8, 0xca, 0x1d, 0x47, 0x55, 0x9c, 0x90, 0x24, 0x14, 0x82, 0x8f, 0xe1, 0x5a, 0x73, 0x51, 0x95, 0xff, + 0x62, 0x5d, 0x89, 0xe6, 0x3f, 0xd1, 0x7f, 0x5e, 0x6d, 0x5e, 0x80, 0x6f, 0xf4, 0x2a, 0x71, 0x81, 0x71, 0xa8, 0x47, + 0x5b, 0x4d, 0xb3, 0x71, 0xd3, 0xb3, 0x50, 0x7a, 0xb4, 0xf6, 0x57, 0xd7, 0x2e, 0xaa, 0xeb, 0x46, 0x6d, 0x95, 0x0d, + 0x55, 0x42, 0x0f, 0x44, 0x7a, 0x3d, 0xd8, 0x61, 0x9b, 0x99, 0xa6, 0x89, 0x06, 0xb0, 0x70, 0xbc, 0x46, 0xc2, 0x15, + 0x76, 0x91, 0x5b, 0xfc, 0x50, 0xc5, 0xc2, 0x06, 0xf7, 0xcd, 0xa0, 0xcb, 0x70, 0xb3, 0xec, 0x46, 0xe7, 0xce, 0xeb, + 0x0d, 0xdc, 0x04, 0xab, 0x92, 0x65, 0x70, 0xa9, 0xb2, 0xc3, 0x8b, 0x8e, 0x6e, 0x16, 0x99, 0x35, 0xc6, 0x05, 0x4b, + 0xa6, 0xaa, 0x83, 0x76, 0xcb, 0x14, 0x17, 0x6b, 0x40, 0x26, 0x42, 0xbe, 0xe1, 0x0d, 0xd2, 0xf8, 0x76, 0x19, 0x97, + 0x5d, 0x13, 0x24, 0xe3, 0xc0, 0x12, 0x77, 0x56, 0x26, 0x4f, 0xbb, 0xa4, 0x16, 0xd6, 0x58, 0xab, 0x4c, 0x0c, 0xc8, + 0x5c, 0x3a, 0x6c, 0x64, 0x83, 0x6e, 0xd3, 0x0c, 0x63, 0x5a, 0xbc, 0x10, 0x7b, 0x9a, 0xb6, 0xaf, 0x16, 0xe0, 0x8c, + 0x09, 0xf1, 0xb6, 0x01, 0xc2, 0xcc, 0x48, 0xc7, 0x0c, 0xe4, 0x4f, 0x6b, 0x2a, 0x64, 0x65, 0x4d, 0x25, 0x91, 0xe5, + 0xe1, 0xee, 0xb8, 0xc9, 0xab, 0x79, 0x30, 0x55, 0xfb, 0xe6, 0x48, 0xab, 0x3c, 0x53, 0xa2, 0x67, 0x71, 0xfa, 0xa4, + 0x8b, 0x21, 0x10, 0x9d, 0xcd, 0xd5, 0x9c, 0xac, 0x6e, 0xea, 0x73, 0x01, 0xe4, 0x6e, 0x5b, 0x05, 0xb4, 0xf1, 0x94, + 0x30, 0x43, 0x6b, 0xd6, 0xdb, 0x73, 0x24, 0x15, 0x6a, 0x3f, 0xb6, 0xcb, 0x2b, 0x91, 0x10, 0x1d, 0x78, 0xb8, 0xb1, + 0x10, 0xce, 0xd8, 0x42, 0x67, 0xcc, 0x5b, 0x8a, 0xce, 0x30, 0xf8, 0x3a, 0x15, 0xd9, 0x63, 0x35, 0x42, 0x2e, 0xd3, + 0xb7, 0x16, 0x10, 0xcc, 0x24, 0x0e, 0xdf, 0xf0, 0x7b, 0x7a, 0xe5, 0x0c, 0x96, 0xc8, 0xf2, 0xef, 0x96, 0x5f, 0x0d, + 0xf7, 0x26, 0x4f, 0x82, 0x96, 0xba, 0x4e, 0xd8, 0x0b, 0xe3, 0xa3, 0xc1, 0x85, 0xc9, 0x37, 0x03, 0x81, 0x83, 0x40, + 0x4b, 0x8c, 0x18, 0x9a, 0x65, 0x23, 0x5a, 0x20, 0x4a, 0x2e, 0x0a, 0x49, 0xcb, 0x05, 0x00, 0xbd, 0x0e, 0xd2, 0x42, + 0x19, 0x7c, 0xf7, 0xe9, 0x61, 0x48, 0xf8, 0x49, 0x93, 0xc8, 0x63, 0xd6, 0xd3, 0xc4, 0x18, 0x55, 0x59, 0x53, 0xa9, + 0xa2, 0xfc, 0x7d, 0x61, 0x27, 0x04, 0x24, 0xdc, 0xd8, 0x66, 0x8b, 0xfc, 0x9c, 0x1e, 0x9e, 0x38, 0xb6, 0xf7, 0x52, + 0xe5, 0x46, 0x47, 0xbb, 0x5a, 0x78, 0xcc, 0x5c, 0xc5, 0x5b, 0x9d, 0x35, 0x16, 0x16, 0x8e, 0xc5, 0x1a, 0xa5, 0x6d, + 0x65, 0x32, 0x48, 0x55, 0xf6, 0x96, 0x73, 0xc7, 0xfb, 0x1c, 0x9f, 0xaa, 0xce, 0xab, 0x5a, 0x9f, 0x8c, 0x45, 0xdb, + 0xcb, 0x7a, 0x1f, 0x1b, 0x00, 0x3b, 0x01, 0xde, 0xd9, 0xaf, 0x94, 0x50, 0x22, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, + 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, + 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x3a, 0xaa, 0x90, 0x4a, 0x80, 0x05, 0xec, 0x4b, 0x3a, 0x71, 0xa4, 0xe0, + 0x1d, 0x60, 0x2d, 0xcb, 0x23, 0x9b, 0xee, 0x9b, 0xbc, 0xb0, 0xb7, 0xbf, 0xf1, 0x01, 0xbb, 0xb0, 0xa8, 0x9f, 0x40, + 0x50, 0x4f, 0xe0, 0x05, 0x0b, 0x0d, 0x2f, 0x2f, 0x08, 0xd1, 0x39, 0xa3, 0x75, 0x4e, 0x27, 0x41, 0x92, 0x44, 0xcf, + 0x1b, 0xc3, 0x9a, 0xc1, 0x1a, 0x27, 0xab, 0x9e, 0xae, 0x8a, 0x0f, 0x43, 0x67, 0x32, 0x97, 0x2e, 0xc8, 0x8a, 0x78, + 0x14, 0xa2, 0x87, 0x9f, 0x8e, 0x12, 0xf5, 0xe6, 0x9f, 0x6f, 0x56, 0x73, 0x06, 0xed, 0xf3, 0x68, 0xaf, 0x8d, 0xea, + 0xd1, 0x95, 0xc3, 0xf7, 0xc1, 0x68, 0x7f, 0x37, 0xbe, 0xb6, 0xc2, 0x29, 0xde, 0x6b, 0x77, 0xb8, 0x55, 0x67, 0x5c, + 0x5c, 0xeb, 0x53, 0xd0, 0xc1, 0x2f, 0xc3, 0x6a, 0x97, 0x50, 0xaf, 0x4f, 0x4d, 0xf2, 0xd6, 0xee, 0x7b, 0xe0, 0x53, + 0xdd, 0x3b, 0x77, 0x51, 0xfe, 0xae, 0x72, 0xfa, 0x65, 0x47, 0xe1, 0x79, 0xdf, 0xbb, 0xad, 0x03, 0xd6, 0xb6, 0xea, + 0xb5, 0x87, 0xd2, 0xe1, 0xcf, 0xd5, 0x81, 0x94, 0x9f, 0x09, 0x48, 0x3d, 0xd2, 0xb8, 0x29, 0x55, 0x00, 0x36, 0x35, + 0x00, 0xd5, 0x63, 0x2a, 0x1f, 0x75, 0x46, 0xfb, 0xd4, 0x8c, 0x2c, 0xfc, 0xcf, 0x2a, 0x29, 0xd5, 0x1d, 0xb9, 0x37, + 0x2a, 0x62, 0x86, 0x62, 0x8e, 0x83, 0x15, 0x9e, 0x4d, 0x39, 0xb8, 0x7f, 0xef, 0x10, 0xcb, 0xc7, 0x87, 0xd4, 0x18, + 0x88, 0xb3, 0xd4, 0x56, 0x9e, 0xad, 0xdf, 0x78, 0x65, 0x62, 0x2e, 0x8b, 0x7e, 0x94, 0x24, 0x8a, 0x0a, 0x15, 0x08, + 0x49, 0x70, 0x3c, 0x6c, 0x51, 0x8e, 0xae, 0xc2, 0xef, 0x21, 0x05, 0x51, 0xa0, 0xa3, 0x69, 0x78, 0xf7, 0x5d, 0xab, + 0x7e, 0x17, 0xc1, 0xa3, 0x5e, 0xca, 0x7d, 0xaf, 0xb0, 0xf0, 0xc2, 0x52, 0xe6, 0x7e, 0x1d, 0x44, 0x57, 0xb3, 0x4c, + 0xf4, 0x1d, 0x7b, 0x89, 0x5f, 0x55, 0xcd, 0x92, 0xc9, 0x9f, 0x6f, 0x4c, 0x7b, 0xdd, 0x32, 0x5c, 0xab, 0x44, 0xfc, + 0x48, 0x14, 0xae, 0x29, 0x11, 0x5b, 0x67, 0xe8, 0x65, 0x68, 0xb8, 0xe3, 0x5b, 0x83, 0xc2, 0x0e, 0x8e, 0x20, 0xc7, + 0x0c, 0xb3, 0x7a, 0xc8, 0x60, 0xfa, 0xd3, 0x5c, 0x2f, 0xb6, 0xf5, 0xe5, 0x9d, 0x8c, 0x21, 0x75, 0x92, 0x37, 0xae, + 0xdc, 0xc2, 0xe1, 0x70, 0xbd, 0x16, 0xe7, 0xa4, 0x47, 0xb4, 0x6c, 0x15, 0xe5, 0xaf, 0xe7, 0xf8, 0x0d, 0x10, 0xaa, + 0x8f, 0x0f, 0x53, 0x9b, 0x5d, 0x82, 0x60, 0xb9, 0xd8, 0xf4, 0x9e, 0xf6, 0x28, 0x40, 0xaa, 0xab, 0x73, 0x5a, 0x42, + 0xf6, 0x71, 0x6f, 0xd1, 0x0b, 0x34, 0x11, 0xea, 0x1d, 0x66, 0xa9, 0x4a, 0x7c, 0x27, 0xf6, 0x50, 0xf2, 0x8f, 0xb1, + 0x58, 0x59, 0x2a, 0x52, 0x2a, 0xb5, 0x41, 0x14, 0xf7, 0x70, 0x57, 0xf9, 0x0c, 0x4e, 0x1e, 0xae, 0xac, 0x04, 0x3b, + 0x54, 0x54, 0xb7, 0x2b, 0x35, 0x11, 0x3a, 0x10, 0xb7, 0xdc, 0x6a, 0x2d, 0xa5, 0x49, 0xdd, 0x06, 0x55, 0x70, 0x1a, + 0x27, 0x24, 0x37, 0x46, 0x48, 0xa2, 0xf4, 0xe3, 0x49, 0x6b, 0x2b, 0x7d, 0xd8, 0x63, 0xa5, 0x56, 0xd6, 0xc0, 0x94, + 0x2b, 0x10, 0xc9, 0x70, 0x66, 0x9e, 0x08, 0xa0, 0x70, 0x96, 0x14, 0x04, 0x77, 0x96, 0x2a, 0xf3, 0xe9, 0x1f, 0x35, + 0xb0, 0x44, 0x8e, 0xd5, 0x02, 0x78, 0x83, 0xb6, 0x20, 0xd7, 0x1b, 0xc6, 0x73, 0x6a, 0xa3, 0xf4, 0x50, 0xb9, 0x64, + 0x52, 0x91, 0x0d, 0xaf, 0xb0, 0x14, 0xe1, 0xad, 0x19, 0xf6, 0xe7, 0x29, 0x99, 0x26, 0x4b, 0x99, 0x43, 0xf7, 0x10, + 0x83, 0x16, 0xb9, 0x8c, 0x35, 0x22, 0xf3, 0x0b, 0x13, 0x56, 0x11, 0x91, 0xd7, 0x56, 0x2d, 0x36, 0x68, 0x5f, 0x97, + 0x7a, 0xc5, 0x62, 0xd5, 0x8d, 0x40, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, + 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, + 0x40, 0xc5, 0x08, 0xb2, 0x20, 0xba, 0xd2, 0x67, 0x01, 0x89, 0xbe, 0x36, 0xad, 0xd5, 0x56, 0x3c, 0x4b, 0x41, 0xcd, + 0xed, 0x8c, 0x6c, 0x26, 0xce, 0x65, 0x02, 0x47, 0x80, 0x99, 0xf3, 0xad, 0x4a, 0xce, 0x5b, 0xf9, 0x4c, 0x5e, 0x32, + 0xc9, 0xe9, 0x96, 0x02, 0xe5, 0x5f, 0x00, 0xc9, 0x66, 0x2c, 0xf5, 0xab, 0x77, 0xf9, 0x63, 0x72, 0xfd, 0xe4, 0x9e, + 0xb9, 0x6e, 0x28, 0x12, 0x21, 0x23, 0x3a, 0xde, 0x94, 0x2d, 0xa2, 0x0f, 0x91, 0x38, 0xaa, 0x02, 0xbf, 0x91, 0x9b, + 0x2f, 0xb0, 0x7e, 0x45, 0x44, 0x85, 0xc2, 0x6b, 0x76, 0xd8, 0xc9, 0x27, 0xf6, 0x77, 0xd3, 0xec, 0x85, 0x71, 0xa5, + 0x24, 0x39, 0x32, 0x0e, 0x32, 0x15, 0x2f, 0x30, 0x94, 0x95, 0xa3, 0x7d, 0x7c, 0x6b, 0x7c, 0xf8, 0x22, 0xcc, 0xc8, + 0x5a, 0xa0, 0x3d, 0xad, 0x93, 0x66, 0x26, 0x88, 0x71, 0x07, 0xe2, 0x23, 0x68, 0x36, 0xea, 0x7d, 0xb1, 0xf1, 0xe2, + 0x00, 0xe4, 0x2e, 0xba, 0x27, 0xf3, 0x26, 0xa0, 0xc4, 0x65, 0x1d, 0x0b, 0xd8, 0x08, 0x0a, 0x73, 0x9b, 0xa8, 0x1b, + 0x5d, 0x62, 0x40, 0x8b, 0xf0, 0x42, 0x50, 0x3f, 0x04, 0x1b, 0xf6, 0x49, 0xa4, 0xce, 0x4c, 0x44, 0x21, 0xf7, 0xf6, + 0x82, 0x2c, 0x06, 0xab, 0xf8, 0x2a, 0x4f, 0xa5, 0x49, 0x7f, 0xd3, 0xf6, 0x68, 0x80, 0xf8, 0x2a, 0xa7, 0xa3, 0x0c, + 0x4c, 0x66, 0x31, 0x2b, 0x83, 0x05, 0xee, 0xbb, 0xb3, 0x0f, 0x08, 0x6f, 0xe3, 0x98, 0x8e, 0x4f, 0x0d, 0x54, 0xf8, + 0x48, 0xe8, 0xea, 0x97, 0x38, 0x2a, 0x3f, 0x56, 0x83, 0x7e, 0x8f, 0x52, 0x75, 0xd4, 0x1b, 0x9d, 0x6d, 0xcb, 0x5d, + 0x50, 0xee, 0x60, 0x5a, 0x8d, 0xd0, 0xae, 0x23, 0x0d, 0x5d, 0x90, 0x52, 0xc5, 0xbd, 0x87, 0xc0, 0xd4, 0xa1, 0xa2, + 0x90, 0x11, 0xe3, 0x14, 0xfd, 0xf2, 0xad, 0xbe, 0x69, 0x0c, 0x9c, 0x1c, 0x63, 0xca, 0x7d, 0xa0, 0x02, 0x20, 0xa2, + 0x2b, 0x64, 0xd4, 0xc5, 0xe9, 0xe1, 0x1b, 0x8a, 0xad, 0x99, 0x3f, 0xa4, 0x9b, 0x27, 0xe0, 0x60, 0x30, 0x71, 0x6d, + 0x50, 0xe2, 0x11, 0x51, 0x4a, 0xa5, 0xbf, 0x2d, 0x2d, 0x3b, 0xe6, 0x51, 0x75, 0xca, 0xca, 0x0e, 0x12, 0x0b, 0xc4, + 0x27, 0xc4, 0x1a, 0x03, 0xee, 0x69, 0x6c, 0xfc, 0x97, 0xe4, 0xba, 0x3d, 0xf1, 0x6b, 0xd8, 0x2c, 0x66, 0x2f, 0xec, + 0xb1, 0xb8, 0x45, 0xbe, 0x2d, 0x91, 0xc4, 0x2d, 0x36, 0x29, 0xa2, 0xec, 0x79, 0xc8, 0x5d, 0x86, 0x20, 0x88, 0x37, + 0xde, 0x38, 0xcd, 0x7e, 0xe6, 0xc3, 0xe9, 0x8e, 0x1d, 0x07, 0x2a, 0xd2, 0xc8, 0x9e, 0xaa, 0x86, 0x69, 0x15, 0xf2, + 0x2d, 0x0e, 0x9e, 0x72, 0x22, 0x54, 0x68, 0xba, 0x31, 0x78, 0x2b, 0x2c, 0x60, 0xef, 0x49, 0x61, 0xcf, 0x26, 0x25, + 0x08, 0xbc, 0x8b, 0x5e, 0xb3, 0xc7, 0xd5, 0x51, 0xbc, 0x90, 0xe5, 0x25, 0x1f, 0x3e, 0xf4, 0x54, 0xe3, 0xfa, 0x01, + 0x41, 0x83, 0xb4, 0x35, 0x97, 0x45, 0x2c, 0xed, 0x2a, 0x20, 0x71, 0x98, 0x86, 0x4c, 0x9d, 0x60, 0x12, 0xa1, 0x13, + 0x89, 0xba, 0x55, 0xe1, 0xec, 0x57, 0xaa, 0xde, 0xac, 0x6f, 0x06, 0x64, 0x49, 0x0a, 0x7b, 0xd3, 0xb5, 0xa7, 0xea, + 0x21, 0xd8, 0x8c, 0x27, 0x24, 0x5d, 0x5a, 0x3b, 0xdc, 0x16, 0x3c, 0x47, 0x73, 0xfe, 0x15, 0xad, 0xc0, 0x91, 0x31, + 0xf5, 0xab, 0xf3, 0xea, 0x46, 0x05, 0xb6, 0xb0, 0xc0, 0xb7, 0xf3, 0xc5, 0x6a, 0x70, 0xd5, 0x88, 0x91, 0x3b, 0x57, + 0x46, 0x43, 0x46, 0x54, 0x4d, 0xf1, 0x97, 0xc5, 0x5f, 0x2e, 0x64, 0x4e, 0xc5, 0xaf, 0xc4, 0xe8, 0x8f, 0x34, 0xdf, + 0xbe, 0xb7, 0x34, 0xf3, 0xec, 0xa4, 0x41, 0xb4, 0x76, 0x01, 0x84, 0x4d, 0xa7, 0x37, 0xbc, 0x80, 0x8d, 0x43, 0xab, + 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, + 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x0d, 0xce, 0x25, 0x4f, 0x35, 0xe3, 0x49, + 0xb3, 0xc8, 0xbd, 0x73, 0x09, 0x08, 0x92, 0x6a, 0x04, 0x48, 0xb5, 0xe7, 0xa5, 0x5e, 0xc0, 0xcb, 0xd6, 0x1b, 0x1e, + 0xbc, 0xfd, 0x08, 0x77, 0xce, 0x65, 0xcf, 0x03, 0xb0, 0x62, 0x84, 0x24, 0x8b, 0x68, 0x23, 0x1d, 0x80, 0x37, 0x40, + 0x92, 0x61, 0x1f, 0x52, 0x43, 0x6d, 0xc7, 0xb6, 0xce, 0x7d, 0x6e, 0x44, 0xe3, 0xb7, 0x92, 0xac, 0x00, 0x84, 0x42, + 0x49, 0x07, 0xe8, 0x64, 0xff, 0xff, 0x60, 0x84, 0xbd, 0xba, 0x50, 0xb6, 0x38, 0xa1, 0xa0, 0x05, 0xa6, 0x71, 0xb3, + 0x98, 0xa2, 0x79, 0xbb, 0x5d, 0x56, 0xd1, 0xdd, 0x2b, 0x6a, 0xe5, 0xd2, 0x37, 0x57, 0xe0, 0xdf, 0x14, 0x61, 0x9b, + 0x5c, 0x64, 0x6e, 0x57, 0xd1, 0x57, 0xb3, 0x1c, 0x25, 0xe4, 0x4c, 0x02, 0x32, 0x94, 0x14, 0xb6, 0xb6, 0xf7, 0xca, + 0xed, 0xe4, 0x52, 0xbe, 0xf4, 0xdf, 0x4a, 0x83, 0x3e, 0xe3, 0xa4, 0xcd, 0x85, 0xa8, 0xce, 0x60, 0xee, 0xe3, 0x1a, + 0x55, 0xcd, 0x14, 0x7f, 0x37, 0xdb, 0x76, 0x69, 0xb8, 0x1e, 0x82, 0xcd, 0xfb, 0xff, 0xf8, 0x68, 0xc4, 0xde, 0x6c, + 0x46, 0x05, 0x46, 0x7b, 0x5a, 0x07, 0x29, 0x89, 0x99, 0x18, 0xe8, 0xab, 0x31, 0x4f, 0xe0, 0x29, 0xf0, 0x9c, 0xfc, + 0xbe, 0xc4, 0x21, 0x44, 0x95, 0xe5, 0xcc, 0xcc, 0x74, 0xf9, 0x21, 0x0d, 0x5c, 0x39, 0x56, 0xd0, 0x46, 0x2e, 0x84, + 0x43, 0xe1, 0x18, 0x93, 0x0c, 0xf9, 0x15, 0x72, 0xc3, 0xe6, 0x68, 0xdf, 0x66, 0x52, 0xd0, 0x2c, 0xb6, 0xab, 0x78, + 0x79, 0x32, 0xef, 0x7f, 0x5b, 0xd2, 0x61, 0x45, 0xdf, 0x37, 0xe7, 0x41, 0x1f, 0x19, 0x5e, 0x66, 0x6d, 0x79, 0x2f, + 0x52, 0xd0, 0x81, 0x60, 0x19, 0x55, 0x66, 0x60, 0x1b, 0xa1, 0x28, 0x47, 0x6b, 0x35, 0xb6, 0xfb, 0xd5, 0x0a, 0x8a, + 0xb2, 0x0d, 0xef, 0x8c, 0x57, 0x06, 0x7d, 0xef, 0xb9, 0xd8, 0xb4, 0x72, 0xbf, 0x4f, 0x5e, 0x4e, 0x4a, 0x36, 0x1b, + 0x91, 0xdd, 0xac, 0xfb, 0x43, 0xbd, 0xd4, 0x93, 0xdb, 0x95, 0xf6, 0x31, 0xdd, 0x0e, 0x13, 0xe0, 0xae, 0xa6, 0x15, + 0x97, 0xba, 0xa6, 0xbb, 0x3f, 0x4b, 0x07, 0xcc, 0x40, 0xfa, 0x99, 0xe3, 0x4b, 0x69, 0xce, 0x51, 0x1b, 0x9d, 0x3f, + 0x57, 0xa4, 0x86, 0x84, 0x78, 0x24, 0x0e, 0x09, 0x66, 0x8b, 0x49, 0x33, 0x9b, 0x82, 0xe1, 0x9d, 0x58, 0x0b, 0x24, + 0xb4, 0xa3, 0xa0, 0x06, 0xfe, 0xba, 0xe2, 0x3b, 0x95, 0xb2, 0xcd, 0x1e, 0x2f, 0x2a, 0xa7, 0x16, 0x16, 0x97, 0xe8, + 0xb1, 0x89, 0x42, 0x94, 0x8c, 0x12, 0xae, 0xbd, 0x5a, 0x0a, 0x7b, 0xf7, 0x87, 0x8d, 0x2c, 0x75, 0xe2, 0x9f, 0x08, + 0x40, 0x87, 0xba, 0x55, 0x8b, 0x6d, 0x55, 0x44, 0x03, 0x95, 0x87, 0x9a, 0xf7, 0x55, 0x8c, 0x73, 0x78, 0x9c, 0xc8, + 0xc8, 0x8a, 0x08, 0x7d, 0x83, 0x1b, 0x14, 0x0e, 0x22, 0x8d, 0x1b, 0x2c, 0xde, 0x90, 0x50, 0x51, 0x42, 0x17, 0xba, + 0xb9, 0xb8, 0xf6, 0x0e, 0x77, 0xbb, 0x0f, 0xe7, 0xe8, 0x34, 0xdb, 0xd2, 0xcd, 0x18, 0x51, 0xae, 0x09, 0x96, 0xaf, + 0x14, 0xe4, 0x80, 0x2b, 0x45, 0x37, 0xa8, 0x70, 0x47, 0xa7, 0x6b, 0x19, 0x0d, 0x00, 0x0d, 0xd0, 0x26, 0x0b, 0x98, + 0xd4, 0x86, 0x90, 0x5d, 0x76, 0xe7, 0xec, 0xdf, 0xfa, 0xb0, 0x2a, 0x84, 0xc2, 0x89, 0x67, 0x7e, 0xc1, 0xe4, 0xfa, + 0xb0, 0xa7, 0xf0, 0xb1, 0x2d, 0x8d, 0x49, 0x5b, 0x04, 0xd1, 0x27, 0x8d, 0x0a, 0xb8, 0xc3, 0x30, 0x72, 0x6e, 0xc5, + 0x17, 0x59, 0xca, 0x38, 0x05, 0xa5, 0x23, 0xcc, 0xbf, 0x68, 0x56, 0x4a, 0x48, 0x95, 0x97, 0x01, 0x87, 0xdb, 0xa5, + 0x4f, 0xbc, 0x9d, 0x46, 0xf1, 0x85, 0x27, 0xd6, 0x4b, 0xde, 0x43, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, + 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, + 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x42, 0x25, 0x66, 0xf1, 0x7a, 0xb7, 0x08, 0x56, 0x53, 0x65, 0x7e, 0x4d, 0x9a, 0xf7, + 0x06, 0x33, 0xa9, 0xd4, 0xbf, 0x82, 0x8d, 0xca, 0x59, 0x8e, 0x3f, 0x16, 0x81, 0xc9, 0x23, 0xac, 0x81, 0x71, 0x94, + 0xc4, 0xf0, 0x0d, 0x78, 0xbd, 0x14, 0x70, 0xb2, 0x71, 0x2f, 0x4f, 0x6e, 0xa4, 0xe5, 0x65, 0xbb, 0xe3, 0x97, 0x0c, + 0x44, 0x44, 0x04, 0x0a, 0xaf, 0xe9, 0x92, 0x1f, 0xe3, 0xc5, 0x1b, 0x3e, 0x2d, 0xb2, 0x05, 0xf5, 0xb3, 0x6f, 0x3a, + 0x65, 0x8e, 0xc9, 0xec, 0xfa, 0x75, 0x4a, 0x31, 0x11, 0x3b, 0x18, 0xf8, 0x68, 0x0d, 0x92, 0x72, 0xc9, 0x07, 0xcd, + 0xdd, 0x2a, 0xd7, 0x5e, 0xcc, 0x51, 0x81, 0x17, 0xd2, 0x0a, 0x4e, 0xc7, 0xed, 0x60, 0xf9, 0x61, 0x31, 0x14, 0xda, + 0x9a, 0x92, 0x69, 0xa3, 0xf8, 0x01, 0x67, 0x26, 0x04, 0x66, 0x3c, 0x9a, 0x33, 0xd7, 0x17, 0x77, 0xb5, 0xe3, 0x5b, + 0x87, 0xb0, 0x9c, 0xc2, 0x8e, 0xfa, 0x1c, 0x81, 0x46, 0xfe, 0x14, 0x1a, 0x2e, 0x11, 0x34, 0x4b, 0x8e, 0x0b, 0x51, + 0x65, 0xcf, 0xfd, 0x46, 0x99, 0x9e, 0x5c, 0x8e, 0xd7, 0x24, 0x85, 0x99, 0x3a, 0x0a, 0xce, 0x5b, 0xb8, 0x3f, 0xb9, + 0x9d, 0x84, 0xdb, 0x54, 0xea, 0x73, 0x92, 0x72, 0x19, 0xb5, 0xe3, 0x05, 0x11, 0xc4, 0xd9, 0x1e, 0x0a, 0x3b, 0x16, + 0xb9, 0xc9, 0x25, 0x97, 0x0c, 0xa5, 0x4e, 0xe8, 0x80, 0xf0, 0xa6, 0x9f, 0xf8, 0x02, 0xff, 0x5e, 0x81, 0x3f, 0xab, + 0x61, 0x13, 0x97, 0x4e, 0x39, 0x76, 0x92, 0x29, 0x18, 0x9b, 0x98, 0x5f, 0x35, 0x1f, 0x36, 0xd0, 0x1e, 0x84, 0x80, + 0x54, 0x7f, 0x4d, 0xd7, 0x64, 0xf8, 0x58, 0xdf, 0xfd, 0xe2, 0x35, 0xac, 0x82, 0xc1, 0x35, 0x87, 0x4a, 0xab, 0xab, + 0x87, 0x8f, 0x06, 0x23, 0x24, 0xd5, 0x39, 0x43, 0x40, 0x3f, 0xf3, 0xd0, 0x68, 0x5f, 0x68, 0xfd, 0x27, 0x90, 0x31, + 0xe2, 0xb6, 0x43, 0xa0, 0x1e, 0x6f, 0x77, 0x49, 0x5a, 0x24, 0x08, 0xf4, 0x62, 0xb7, 0x3b, 0x5e, 0xc1, 0x41, 0x9d, + 0xe5, 0xa8, 0x70, 0x62, 0x26, 0x44, 0xe6, 0x01, 0xfe, 0x2b, 0x32, 0xb1, 0x2d, 0x65, 0xb0, 0x21, 0xeb, 0x9a, 0x54, + 0xb6, 0x02, 0x5b, 0xfa, 0xcf, 0x92, 0x98, 0xbc, 0x55, 0xd0, 0xeb, 0xd7, 0x21, 0xf5, 0x47, 0xd3, 0x00, 0xf7, 0xc3, + 0x5b, 0x59, 0x50, 0x5f, 0x06, 0x34, 0xc2, 0x69, 0x80, 0xf3, 0xf8, 0x76, 0xc5, 0x6f, 0xb5, 0xb7, 0x9c, 0x15, 0xda, + 0x69, 0x04, 0xf0, 0xa6, 0x25, 0x6c, 0xe6, 0xf9, 0xb3, 0xe8, 0x27, 0x8a, 0xa5, 0xfa, 0x2b, 0x32, 0x40, 0xb4, 0x7c, + 0xf1, 0x15, 0xf5, 0xb5, 0x8b, 0xba, 0x76, 0xb3, 0xde, 0x4c, 0x76, 0xdb, 0x64, 0x01, 0x25, 0x7a, 0xbd, 0xf0, 0x53, + 0x3f, 0x39, 0xe5, 0x58, 0x98, 0xa0, 0x22, 0x16, 0x01, 0x07, 0xe7, 0x86, 0xe5, 0x27, 0xfe, 0xa9, 0x92, 0xaf, 0xb4, + 0xe5, 0x0d, 0x45, 0x0d, 0x8b, 0x5f, 0x7e, 0x65, 0xbc, 0x84, 0x84, 0x4f, 0x8e, 0xfa, 0x0d, 0x1e, 0x5c, 0x60, 0x67, + 0xee, 0x38, 0x65, 0xf2, 0x83, 0xdb, 0x44, 0x32, 0x88, 0x88, 0x79, 0xe5, 0xe7, 0xf1, 0x76, 0x3f, 0x88, 0x63, 0x17, + 0x87, 0xe8, 0x96, 0x0c, 0xca, 0x93, 0xc3, 0x7f, 0x5c, 0xf1, 0x25, 0xf8, 0x3a, 0xc2, 0xe6, 0x26, 0x16, 0xa2, 0xfa, + 0x25, 0xea, 0x85, 0x7e, 0xcc, 0xf7, 0x5d, 0x7b, 0x4d, 0xed, 0xe8, 0x1e, 0xbc, 0xff, 0xbd, 0x53, 0x4a, 0xd5, 0xea, + 0x63, 0x4f, 0x29, 0x61, 0xb2, 0x35, 0x8d, 0x2d, 0xfe, 0x03, 0x96, 0x1d, 0x29, 0x47, 0xd4, 0x63, 0x32, 0x1a, 0xe6, + 0xe1, 0x4e, 0x3d, 0x02, 0x58, 0xb5, 0x13, 0x0e, 0x84, 0x6e, 0x3e, 0xe9, 0x52, 0x5a, 0x34, 0x52, 0x04, 0x7c, 0x2a, + 0xe2, 0xa6, 0x3a, 0x56, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, + 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x0c, 0xdb, + 0x92, 0x99, 0xbc, 0x05, 0x48, 0x78, 0xe2, 0xdb, 0x6a, 0xea, 0xfc, 0x50, 0x18, 0xf2, 0xbf, 0x7d, 0x5d, 0xb7, 0x09, + 0xd8, 0x20, 0x96, 0x05, 0xf6, 0xe5, 0x08, 0x68, 0x85, 0x51, 0x47, 0xcf, 0x28, 0xa8, 0x77, 0x5a, 0x6e, 0xb9, 0x20, + 0xfb, 0x7a, 0xdb, 0x61, 0x5b, 0x14, 0x29, 0x10, 0xf9, 0x73, 0x0a, 0x26, 0xee, 0xc9, 0x37, 0x05, 0x4c, 0xcc, 0xb4, + 0xa5, 0x26, 0x4d, 0xc5, 0x0a, 0x0c, 0xf9, 0xe3, 0xd0, 0x8d, 0xb7, 0x18, 0x20, 0x9f, 0xcf, 0x08, 0x2d, 0xe8, 0x76, + 0xb3, 0xe2, 0xa7, 0x59, 0xba, 0xfd, 0x7b, 0x4e, 0xec, 0x29, 0x2d, 0x60, 0x47, 0x64, 0x8c, 0x15, 0x02, 0x31, 0x25, + 0x05, 0x71, 0x93, 0x3b, 0x56, 0x2c, 0x0c, 0x6f, 0x79, 0x83, 0xc7, 0xe6, 0xb2, 0xfe, 0x91, 0x2c, 0x5a, 0x46, 0x93, + 0xc1, 0x33, 0x39, 0x6c, 0xd6, 0x0b, 0x53, 0x79, 0x5a, 0xfd, 0x3c, 0x12, 0x3e, 0xae, 0xf3, 0xf5, 0x3b, 0xe1, 0x68, + 0xbb, 0xb1, 0x31, 0x71, 0x18, 0x11, 0x03, 0x3a, 0x71, 0x37, 0x4f, 0xef, 0x25, 0xd8, 0xb0, 0x8c, 0x59, 0x4b, 0x72, + 0xf3, 0xab, 0x4e, 0x57, 0xd5, 0x2e, 0x6f, 0xc2, 0x75, 0xba, 0xbf, 0x06, 0x67, 0x2f, 0x07, 0x08, 0x14, 0x76, 0x93, + 0xbb, 0x8f, 0x02, 0xf2, 0x48, 0x8c, 0x6b, 0xce, 0x8b, 0xcb, 0x9e, 0xb2, 0x48, 0x50, 0x7d, 0xfc, 0x20, 0x1c, 0x60, + 0x48, 0x5e, 0x55, 0x18, 0x9e, 0x9a, 0xd8, 0x63, 0xea, 0xe8, 0xe3, 0xba, 0x0d, 0x64, 0x48, 0x07, 0x04, 0xb4, 0xf4, + 0xcd, 0x73, 0xa9, 0x5f, 0xf5, 0xf8, 0xe1, 0xca, 0x03, 0x48, 0x98, 0xa6, 0x22, 0x3f, 0x6f, 0x0d, 0x3e, 0x26, 0xb0, + 0x85, 0x5e, 0xc2, 0x55, 0xdc, 0x57, 0xaa, 0x00, 0xa0, 0x1d, 0x66, 0x5a, 0xc6, 0x0c, 0xd8, 0x1a, 0x15, 0x9c, 0x29, + 0x3d, 0x2c, 0x73, 0xe6, 0xf7, 0x2e, 0x3e, 0x0f, 0x5c, 0x36, 0x0d, 0x9d, 0xac, 0x31, 0x20, 0x6b, 0xbb, 0xf5, 0xf0, + 0xfe, 0x0e, 0x88, 0x3e, 0x05, 0xcf, 0x6b, 0x03, 0x91, 0x16, 0x78, 0xe6, 0x47, 0x01, 0x0b, 0x12, 0x88, 0xc6, 0x0a, + 0x26, 0xfb, 0xf0, 0x7b, 0x94, 0x75, 0x07, 0xa1, 0x9a, 0xcf, 0x91, 0x54, 0x2d, 0xcf, 0xec, 0x00, 0x9a, 0x97, 0x1d, + 0x52, 0xd1, 0xef, 0x57, 0x85, 0x3c, 0x95, 0x17, 0x68, 0x9e, 0xab, 0xbb, 0xe1, 0x06, 0x13, 0xd8, 0xf8, 0xe8, 0xf1, + 0xa5, 0x96, 0x24, 0x8b, 0x91, 0xd0, 0x6c, 0xd9, 0x58, 0x5d, 0x3b, 0x32, 0xa9, 0x08, 0x22, 0x39, 0x12, 0x59, 0x16, + 0x66, 0x77, 0x4f, 0x5d, 0x0c, 0x48, 0x94, 0x6e, 0x21, 0x5d, 0xc7, 0xc0, 0x27, 0x02, 0xdb, 0xc5, 0x95, 0x47, 0x74, + 0xf9, 0xd0, 0x17, 0x88, 0x04, 0x22, 0xd3, 0x15, 0x02, 0x1e, 0x83, 0x72, 0x3c, 0xf3, 0x1f, 0xf8, 0xbe, 0x6e, 0xe2, + 0x9d, 0x57, 0x56, 0x40, 0x4c, 0x6a, 0xa7, 0xf0, 0xc7, 0x26, 0x9e, 0xdc, 0x9d, 0xb5, 0x9e, 0xf5, 0x6b, 0xb4, 0x25, + 0x65, 0x7f, 0x14, 0x73, 0xc8, 0x3a, 0x38, 0x45, 0x05, 0xeb, 0x19, 0xac, 0x11, 0x50, 0x43, 0xe7, 0x77, 0xad, 0x0f, + 0x95, 0x8b, 0x9e, 0x69, 0x90, 0x24, 0xc8, 0xf8, 0xe4, 0xd5, 0x41, 0x5c, 0x53, 0x24, 0xbd, 0xbb, 0x0f, 0x0b, 0x90, + 0xe5, 0xe9, 0xbb, 0x2d, 0x0c, 0xdd, 0xbb, 0x81, 0x01, 0xe6, 0x2c, 0xdb, 0x18, 0x7e, 0x5d, 0x02, 0x2c, 0x9f, 0x1a, + 0x48, 0x75, 0x11, 0xf6, 0x41, 0xdb, 0xb2, 0xb6, 0x61, 0xaf, 0x4b, 0x16, 0xfb, 0xd4, 0x19, 0x9c, 0xfd, 0xfa, 0x3e, + 0xba, 0xde, 0x6d, 0x1b, 0x86, 0xbb, 0xc1, 0x2e, 0x10, 0x65, 0x78, 0xcd, 0xa8, 0xb2, 0x6b, 0xaf, 0x15, 0x9c, 0x6a, + 0xf3, 0xfb, 0xb3, 0xcb, 0x84, 0x18, 0x0d, 0xb3, 0x36, 0x13, 0x77, 0x7b, 0xfe, 0xc9, 0x18, 0x0e, 0xab, 0xaa, 0xaa, + 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, + 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x6d, 0xca, 0x3b, 0xf2, 0x37, 0x10, 0x7c, 0x9b, 0x95, + 0xb8, 0xc0, 0xa7, 0x3c, 0xa2, 0xf0, 0xfb, 0x4e, 0x50, 0xf1, 0x5c, 0xdc, 0x01, 0x49, 0x08, 0x15, 0xcb, 0x78, 0xb4, + 0xa2, 0xc6, 0x2f, 0x23, 0x69, 0x34, 0xde, 0xa7, 0xdc, 0xcc, 0x79, 0x08, 0xb9, 0xd2, 0x02, 0x98, 0x64, 0x20, 0x97, + 0xb6, 0x7d, 0x20, 0x91, 0x18, 0x3a, 0x19, 0x55, 0x2d, 0xbb, 0x60, 0x70, 0xb6, 0xff, 0x31, 0x2a, 0x02, 0x11, 0x08, + 0x29, 0xba, 0xee, 0xa9, 0xa2, 0x22, 0xfb, 0x8a, 0xd5, 0x7d, 0x62, 0x17, 0xfa, 0x28, 0x94, 0x37, 0x56, 0xae, 0x43, + 0x3d, 0xb8, 0x5a, 0xed, 0xb8, 0x1a, 0x35, 0x97, 0xcd, 0xd6, 0x17, 0x46, 0x71, 0x82, 0x32, 0x8d, 0x92, 0x01, 0x45, + 0x02, 0x5b, 0x9f, 0x84, 0x94, 0x27, 0xc4, 0xd0, 0xf4, 0x35, 0xd3, 0x6b, 0xa6, 0xd0, 0x9c, 0xf7, 0x00, 0x3a, 0xe4, + 0x9d, 0x07, 0x2c, 0x72, 0x56, 0xe3, 0x21, 0xfb, 0xc1, 0x69, 0xc0, 0xda, 0xd2, 0x0d, 0xa9, 0xb9, 0x97, 0x7c, 0xdc, + 0x5c, 0xf9, 0xe0, 0xae, 0xdf, 0xfb, 0x91, 0x5e, 0x24, 0xbb, 0xaa, 0x3e, 0x2a, 0xab, 0x1e, 0x3d, 0x1f, 0x27, 0x55, + 0x62, 0x33, 0xd7, 0x4d, 0xeb, 0x82, 0x36, 0xc5, 0x98, 0x97, 0x29, 0xe0, 0x4b, 0xc3, 0x01, 0x11, 0x9e, 0x4a, 0x22, + 0x10, 0xde, 0xa8, 0x42, 0x8a, 0x35, 0xf8, 0x1b, 0x39, 0xb0, 0xf0, 0x67, 0x3b, 0x12, 0xa8, 0xf7, 0xa2, 0x69, 0x33, + 0xa3, 0xb5, 0x61, 0xf3, 0x20, 0x94, 0xb8, 0xc6, 0x2a, 0x40, 0x60, 0x21, 0xb3, 0x83, 0xdb, 0x9c, 0x10, 0xe0, 0xf1, + 0x54, 0x06, 0xfa, 0x90, 0xe1, 0x11, 0x58, 0xb2, 0xe0, 0xf4, 0x24, 0x34, 0x2a, 0x85, 0x00, 0x05, 0x38, 0xae, 0x1b, + 0x37, 0x39, 0x82, 0x9e, 0xb6, 0xdf, 0x9d, 0x38, 0x31, 0xeb, 0x86, 0xfe, 0x30, 0x41, 0x3b, 0x37, 0x73, 0x9a, 0x72, + 0x83, 0x9c, 0x9b, 0xe6, 0x88, 0x28, 0x20, 0xb1, 0xf0, 0x25, 0xaa, 0xc3, 0x48, 0x40, 0xc1, 0x3f, 0x91, 0x3f, 0x32, + 0x8c, 0x39, 0xd2, 0xaa, 0x8e, 0xaa, 0x48, 0xbf, 0xc4, 0xcc, 0x3e, 0x3e, 0x61, 0xab, 0xc3, 0xb3, 0x6d, 0x0e, 0x93, + 0x34, 0x40, 0x65, 0x4b, 0xf2, 0xdc, 0xfd, 0xf7, 0x5a, 0xd5, 0x7c, 0x7f, 0xb0, 0x20, 0xd5, 0xf9, 0x3a, 0x45, 0x42, + 0x40, 0xef, 0x12, 0x6c, 0x44, 0xf3, 0x37, 0xd0, 0x55, 0x0d, 0x52, 0xdf, 0x95, 0x6c, 0x29, 0x08, 0xe9, 0x61, 0x5d, + 0xb2, 0x74, 0xa6, 0x76, 0x7f, 0x0c, 0x51, 0xbc, 0x1d, 0xbc, 0x82, 0xe7, 0x6e, 0x93, 0x43, 0x0e, 0xa3, 0xe4, 0x88, + 0x4d, 0x40, 0x87, 0xed, 0xd3, 0x0a, 0x2f, 0xb8, 0xd4, 0x99, 0xf0, 0x03, 0x7b, 0xcc, 0x89, 0x18, 0x92, 0x53, 0x91, + 0x22, 0x01, 0xd6, 0x94, 0xa5, 0x26, 0x13, 0x21, 0x86, 0xda, 0x83, 0xbb, 0xa7, 0x26, 0x18, 0x11, 0xe8, 0x2d, 0x37, + 0x0b, 0x67, 0x0e, 0xd6, 0x49, 0x31, 0x18, 0x9f, 0x7d, 0xde, 0xe2, 0x47, 0xcf, 0x27, 0xe2, 0xe2, 0x31, 0x03, 0xcc, + 0x03, 0xe4, 0xce, 0x48, 0x4a, 0x12, 0xe5, 0x6a, 0xfe, 0xa8, 0xe3, 0x6f, 0x4a, 0xab, 0x70, 0xa8, 0xab, 0xab, 0xee, + 0xf9, 0x02, 0xd5, 0x1c, 0x82, 0xf5, 0x34, 0xff, 0x06, 0x5b, 0xf3, 0x1e, 0xcc, 0x9f, 0x51, 0x91, 0xd0, 0x5d, 0x3b, + 0x73, 0x50, 0x4c, 0x69, 0xe2, 0x6c, 0x4b, 0x72, 0xdb, 0x47, 0x54, 0xe2, 0x65, 0xaa, 0x7c, 0xbb, 0x92, 0xcc, 0xc7, + 0x8e, 0x4c, 0x26, 0x64, 0x1e, 0x53, 0xc0, 0xce, 0xf1, 0x32, 0x8c, 0xa8, 0x22, 0xb8, 0x67, 0x29, 0x62, 0x6c, 0x8d, + 0xb3, 0xc7, 0x3f, 0xf0, 0x46, 0x42, 0xba, 0x11, 0x90, 0xaa, 0x6b, 0x2a, 0x93, 0x30, 0x8f, 0x6d, 0x5b, 0x52, 0x6d, + 0x08, 0x0b, 0xad, 0xf2, 0x39, 0x66, 0xa4, 0xe5, 0x6f, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, + 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, + 0x08, 0xc3, 0x19, 0x4b, 0x47, 0xe4, 0xbd, 0x94, 0xe4, 0x81, 0x60, 0x08, 0xb8, 0xf7, 0xc2, 0xd4, 0xb4, 0x9f, 0x07, + 0xfa, 0xa7, 0xd1, 0x43, 0x7d, 0x5f, 0xfe, 0x19, 0x73, 0xcd, 0x17, 0xf7, 0xbf, 0xca, 0x1d, 0x0d, 0xe9, 0x7e, 0xbc, + 0xdd, 0x64, 0x1b, 0xe0, 0x3c, 0x90, 0x0b, 0xb6, 0x01, 0x9d, 0xa4, 0x96, 0x0e, 0x1a, 0x91, 0x33, 0xca, 0x9f, 0xea, + 0xc2, 0x33, 0xd5, 0x7c, 0x73, 0x78, 0xe9, 0x1d, 0xec, 0x21, 0x2f, 0x0d, 0x4a, 0x60, 0x99, 0x1f, 0xc9, 0x38, 0xe9, + 0x98, 0x9a, 0x87, 0x84, 0x96, 0x59, 0x85, 0xe9, 0x24, 0x1e, 0x52, 0xb5, 0x8f, 0x21, 0x53, 0x05, 0xf4, 0xd2, 0xfc, + 0x31, 0xac, 0x43, 0x2a, 0x58, 0x8a, 0xb8, 0x12, 0x3d, 0xfe, 0x84, 0x14, 0x48, 0x8f, 0xcc, 0x36, 0xc4, 0xa3, 0x8a, + 0x20, 0x35, 0x5f, 0xad, 0x22, 0x07, 0xbc, 0x02, 0x7f, 0x39, 0x24, 0xb7, 0xab, 0x4e, 0x1b, 0x4d, 0x37, 0xbc, 0x5a, + 0x75, 0x5b, 0xcd, 0x6a, 0x1b, 0xe2, 0x87, 0x7e, 0x47, 0xfd, 0x5f, 0xf2, 0x48, 0x02, 0x7c, 0xa0, 0xb3, 0xa0, 0x05, + 0x14, 0x6d, 0xd6, 0x70, 0x45, 0x47, 0xd0, 0x3a, 0xbe, 0x33, 0x20, 0x5a, 0x61, 0x23, 0xb1, 0x8e, 0x95, 0x6c, 0xe3, + 0x84, 0x72, 0xca, 0x10, 0xbd, 0xe5, 0xe4, 0x8e, 0xd5, 0x1b, 0x6b, 0xc0, 0xec, 0x0b, 0x8c, 0xb0, 0xa9, 0xb9, 0xfb, + 0x8a, 0xa5, 0x82, 0xa5, 0x33, 0xbc, 0x0f, 0xc1, 0xaf, 0xc0, 0x10, 0x8b, 0x8c, 0x34, 0x31, 0xed, 0x59, 0x15, 0x26, + 0x2a, 0x58, 0x9f, 0xdb, 0x9e, 0xb4, 0xda, 0x3a, 0xf1, 0x25, 0x11, 0xe1, 0x63, 0xb6, 0xe4, 0xab, 0x35, 0x2e, 0x00, + 0x1c, 0xac, 0x38, 0xea, 0x53, 0x85, 0xde, 0x6a, 0x80, 0x33, 0x11, 0x46, 0xb4, 0xe3, 0x3d, 0xf4, 0xf8, 0x1f, 0x62, + 0x90, 0xb1, 0x3e, 0x0e, 0xf5, 0x31, 0xcf, 0x5a, 0x2c, 0xac, 0xc3, 0x40, 0x9d, 0xb0, 0x10, 0xba, 0x50, 0x73, 0x0c, + 0xa2, 0xa3, 0x9f, 0xad, 0x89, 0x8d, 0x56, 0xc2, 0xfd, 0x62, 0xc3, 0x48, 0xa2, 0x17, 0x57, 0xe4, 0xca, 0x9c, 0x8b, + 0xa8, 0x55, 0xc0, 0x0b, 0x2a, 0x57, 0x81, 0x85, 0x69, 0xe9, 0xd0, 0x53, 0x2d, 0xc6, 0xca, 0x0d, 0xa0, 0xdf, 0x1d, + 0xdc, 0xea, 0xff, 0xa0, 0x96, 0x94, 0x15, 0x0d, 0x44, 0x5e, 0x29, 0xa8, 0x48, 0x72, 0xf8, 0xf8, 0x81, 0xcb, 0x4d, + 0x70, 0xcb, 0x1e, 0x45, 0x86, 0xdf, 0xe5, 0x60, 0x1d, 0x32, 0xf8, 0x79, 0x83, 0xd9, 0x27, 0x07, 0xac, 0xc3, 0xb5, + 0x03, 0x47, 0xc1, 0xf7, 0x75, 0xff, 0x4d, 0x1b, 0x00, 0x29, 0xfe, 0xeb, 0x08, 0x09, 0xab, 0x4b, 0x75, 0xa0, 0x23, + 0xb9, 0xac, 0x37, 0x17, 0x1b, 0x0d, 0xb6, 0xba, 0x4e, 0xfa, 0x71, 0xf8, 0x23, 0xcf, 0xd6, 0x7c, 0x39, 0x13, 0x9f, + 0x4a, 0x60, 0xe7, 0x77, 0x2a, 0xb7, 0x1b, 0xe8, 0x0e, 0x99, 0x8d, 0xd7, 0xab, 0xed, 0xc2, 0x18, 0xbb, 0xb2, 0xe7, + 0xc2, 0xa3, 0xf2, 0xb7, 0xff, 0x4b, 0x03, 0xea, 0xbf, 0x13, 0xd4, 0xc1, 0x57, 0xc5, 0xda, 0x70, 0xb9, 0x11, 0x04, + 0x5d, 0xd4, 0x9e, 0xce, 0x63, 0xdf, 0x5d, 0x8c, 0x3d, 0xf5, 0x07, 0x62, 0xf4, 0x70, 0xeb, 0x61, 0x6f, 0x1f, 0xc8, + 0xfb, 0x93, 0x6d, 0x57, 0x9b, 0x2e, 0xba, 0xe0, 0x01, 0xab, 0x67, 0xa9, 0x55, 0x40, 0xf7, 0xa6, 0x2c, 0xbf, 0xd0, + 0x71, 0x22, 0xcd, 0x13, 0x32, 0xfa, 0x68, 0x2b, 0xe0, 0x57, 0xf1, 0x97, 0x7c, 0xb0, 0x1d, 0xcf, 0x9e, 0xf3, 0x10, + 0x4a, 0x97, 0xc4, 0x0f, 0x53, 0x1d, 0xc2, 0x65, 0x73, 0x31, 0x47, 0xe0, 0x7a, 0x2a, 0xf9, 0x3c, 0xeb, 0x72, 0xee, + 0x9c, 0xfc, 0xaa, 0xa9, 0x57, 0xb2, 0xb7, 0x31, 0x64, 0x5c, 0xbe, 0x77, 0x5a, 0x46, 0x28, 0x2c, 0xa7, 0x62, 0x4b, + 0x29, 0x41, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, + 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x09, 0xef, 0x51, 0x7f, + 0xd7, 0xa0, 0xf5, 0x94, 0x26, 0x37, 0x2c, 0x5a, 0xc7, 0x14, 0x3f, 0x7c, 0x5c, 0xdc, 0x4f, 0x11, 0xfb, 0x00, 0x02, + 0x31, 0x93, 0x5a, 0x85, 0x41, 0x99, 0x55, 0x7a, 0x71, 0x8e, 0x31, 0x10, 0x87, 0xba, 0x01, 0xef, 0x73, 0xa6, 0xe4, + 0xd8, 0xfd, 0x80, 0xd3, 0x9e, 0x73, 0x55, 0xdc, 0x26, 0x51, 0x31, 0x7f, 0x68, 0x73, 0xa7, 0xf7, 0xdf, 0xe6, 0x6f, + 0x35, 0x2a, 0x3e, 0x9d, 0x53, 0x41, 0x84, 0xcd, 0xef, 0xcc, 0xb1, 0xb1, 0x59, 0x4a, 0x12, 0xf1, 0xd1, 0x6d, 0xf9, + 0xb6, 0x07, 0x71, 0x5e, 0xbc, 0x63, 0x15, 0x73, 0xfc, 0x02, 0x69, 0xfe, 0x5f, 0xb6, 0xf1, 0x07, 0xd3, 0xa2, 0xae, + 0xc0, 0xd9, 0x41, 0xb4, 0x87, 0x8c, 0x5e, 0x8b, 0x2f, 0xee, 0x2f, 0x94, 0xc1, 0x20, 0xe5, 0x32, 0xc4, 0xec, 0x6a, + 0x55, 0x76, 0x8b, 0xf8, 0xc3, 0x9d, 0xba, 0xf4, 0x21, 0x5a, 0x3d, 0x7b, 0xa6, 0x6e, 0x0b, 0x0d, 0x41, 0x02, 0x4b, + 0xab, 0x29, 0xd1, 0xb3, 0x70, 0xe6, 0xcb, 0xe1, 0x06, 0x72, 0x13, 0x39, 0xb6, 0xf6, 0xe6, 0xee, 0x17, 0xa8, 0x4c, + 0xf0, 0x16, 0x5e, 0x2e, 0x3b, 0xee, 0x0e, 0x06, 0x1c, 0x0c, 0x35, 0xe5, 0x25, 0xe8, 0xbb, 0xba, 0x35, 0x4a, 0xb3, + 0x1a, 0xaf, 0x31, 0xf4, 0xd4, 0x15, 0x12, 0xf2, 0x90, 0x09, 0x0e, 0xb5, 0xa1, 0x01, 0xe5, 0x1e, 0x15, 0x71, 0xb7, + 0x21, 0x51, 0x22, 0xbb, 0x46, 0x13, 0x7e, 0x19, 0x4c, 0x7f, 0xf1, 0x56, 0x31, 0xcf, 0xb7, 0xff, 0x44, 0x57, 0xc8, + 0x37, 0x99, 0x7f, 0x4e, 0xa9, 0x79, 0xef, 0x0a, 0x2c, 0xb7, 0x62, 0xae, 0x1f, 0x31, 0xb4, 0x83, 0xca, 0x2c, 0x25, + 0x9b, 0xbc, 0xc6, 0x52, 0xb4, 0x4b, 0xee, 0x8e, 0x85, 0xdd, 0x19, 0xfd, 0xbf, 0xb6, 0x37, 0x30, 0x74, 0x3f, 0xb1, + 0x77, 0x0c, 0x36, 0x99, 0x46, 0x06, 0x17, 0xeb, 0x10, 0x79, 0x3f, 0xe5, 0x48, 0x9f, 0x4c, 0x91, 0x5c, 0x86, 0x90, + 0x15, 0x59, 0xb0, 0xca, 0x6f, 0x83, 0xbc, 0x46, 0x40, 0x9a, 0x64, 0xdc, 0x27, 0x84, 0xc8, 0x8f, 0xc3, 0x5f, 0x82, + 0xb6, 0xce, 0xc8, 0xc4, 0xf5, 0x1c, 0x08, 0x7a, 0xdc, 0xd2, 0x48, 0xc8, 0xd8, 0x1a, 0x01, 0x60, 0xb8, 0x69, 0xbb, + 0xe2, 0xb1, 0x16, 0x26, 0x47, 0xac, 0x66, 0x57, 0x7d, 0x0f, 0xe2, 0x6f, 0xd8, 0x28, 0x8f, 0x54, 0x8b, 0xea, 0xd8, + 0x2c, 0x86, 0x13, 0x73, 0xbb, 0x45, 0xf9, 0xbe, 0x6d, 0xf4, 0x14, 0x42, 0x6e, 0x62, 0xbc, 0xa2, 0x05, 0x4b, 0x67, + 0x6d, 0x16, 0x8d, 0x86, 0x28, 0x0c, 0xea, 0x91, 0x2f, 0x2d, 0x7f, 0x47, 0x7b, 0x38, 0x86, 0x2e, 0x15, 0x0d, 0x04, + 0x8d, 0xdb, 0x7d, 0xc4, 0xde, 0x68, 0x1a, 0x22, 0x0c, 0xc6, 0xa7, 0xc5, 0x9d, 0x9e, 0xe0, 0x9c, 0x32, 0x89, 0x5c, + 0x2a, 0x29, 0x7f, 0xf2, 0x44, 0xd4, 0x6e, 0xfd, 0x96, 0xc6, 0x39, 0x24, 0xea, 0x25, 0x70, 0xa7, 0xef, 0x40, 0x5c, + 0xe2, 0x12, 0x7c, 0xa9, 0xd9, 0x1e, 0xac, 0x14, 0xf5, 0xc6, 0xed, 0x46, 0x3f, 0x83, 0x37, 0xb3, 0xfe, 0xea, 0x7c, + 0x2d, 0x7b, 0x0f, 0x6b, 0xac, 0xd4, 0x10, 0xe9, 0x15, 0x33, 0x70, 0xe6, 0xbc, 0x1c, 0xa1, 0x1f, 0x91, 0xeb, 0x7f, + 0xf8, 0x74, 0x78, 0x9c, 0x09, 0x23, 0x09, 0xc9, 0x7c, 0x2f, 0x3b, 0xa2, 0xe5, 0x8f, 0xc4, 0x6a, 0xc5, 0xf6, 0xab, + 0xc9, 0xda, 0x80, 0x2e, 0x2a, 0xd2, 0xb8, 0xa0, 0xf7, 0x0b, 0x8b, 0x3b, 0x5e, 0x6c, 0x3c, 0x12, 0x4a, 0xf1, 0x4d, + 0x13, 0xb5, 0x67, 0xf9, 0xba, 0x13, 0xea, 0xc3, 0xd3, 0xf4, 0x86, 0x54, 0x46, 0xfd, 0xf7, 0xd6, 0x6d, 0xb3, 0xa1, + 0xe3, 0x70, 0x13, 0xcc, 0xec, 0x72, 0x77, 0x1e, 0x20, 0xe3, 0xeb, 0x77, 0xf2, 0x5f, 0xab, 0xaa, 0xaa, 0xaa, 0x38, + 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, + 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xe1, 0x21, 0x7a, 0xaa, 0x40, 0x45, 0xd5, 0xb9, 0x9d, 0x31, 0x3d, + 0xd0, 0x02, 0x32, 0xac, 0xca, 0x79, 0x2b, 0xca, 0xdd, 0x3d, 0x12, 0x03, 0xf7, 0xf3, 0x6d, 0x55, 0x13, 0x54, 0xbe, + 0xa9, 0x52, 0x87, 0xd7, 0xd4, 0x6d, 0xb8, 0x7f, 0xd3, 0x2b, 0xf2, 0x47, 0x89, 0xd6, 0x7b, 0x14, 0x60, 0x01, 0xb8, + 0x80, 0x35, 0x3d, 0x91, 0xfa, 0xe8, 0xaf, 0x37, 0xd8, 0xe0, 0x25, 0xbf, 0xb2, 0x9d, 0x01, 0x00, 0xf9, 0xb6, 0xf9, + 0x61, 0xbd, 0xd0, 0x3c, 0x2d, 0xe8, 0xc9, 0x4a, 0x1e, 0x61, 0xe9, 0x6f, 0x96, 0x0a, 0x86, 0x08, 0x96, 0x3b, 0x8f, + 0x95, 0x25, 0x64, 0x51, 0x79, 0x9d, 0x01, 0xd8, 0x16, 0xc1, 0x2c, 0x7f, 0x82, 0x26, 0x91, 0x82, 0xdc, 0xf8, 0x05, + 0x9c, 0x06, 0xc6, 0x15, 0xb5, 0x60, 0xa2, 0xc8, 0xeb, 0x6d, 0xf3, 0x38, 0x3d, 0xee, 0x33, 0x1a, 0x73, 0x35, 0x84, + 0x4b, 0x04, 0x3c, 0x00, 0x33, 0x24, 0xd9, 0x1f, 0x45, 0xca, 0xb9, 0x7b, 0xad, 0xa0, 0x79, 0xf2, 0xbb, 0x7e, 0xcb, + 0x64, 0x65, 0x8c, 0x2e, 0x80, 0xcc, 0x09, 0x47, 0x1e, 0x3a, 0x91, 0xdf, 0x5a, 0x2f, 0x1b, 0x4c, 0xda, 0x5a, 0x13, + 0x5d, 0x36, 0x0f, 0x98, 0x5d, 0x4f, 0x99, 0xee, 0x2d, 0x23, 0x52, 0x33, 0x70, 0xb4, 0x9c, 0x09, 0xd1, 0xce, 0x9d, + 0xe9, 0x5b, 0x9b, 0xc2, 0x51, 0x37, 0x30, 0x4e, 0x82, 0x1f, 0x1b, 0x96, 0x36, 0xe5, 0x4f, 0xd8, 0x51, 0x39, 0x9e, + 0x92, 0xe9, 0xa7, 0xff, 0xba, 0xb8, 0x2c, 0x63, 0x50, 0x62, 0x1c, 0xb0, 0xaf, 0x84, 0x19, 0x97, 0x40, 0xdd, 0xb5, + 0x55, 0x9e, 0x77, 0x53, 0x9a, 0xdd, 0x60, 0x68, 0x8a, 0x8c, 0xb5, 0xc4, 0x96, 0xda, 0xcd, 0xac, 0xa1, 0xca, 0xea, + 0x20, 0x5b, 0x4f, 0xc3, 0xb5, 0x8b, 0x59, 0x5b, 0xb6, 0xb6, 0x88, 0x45, 0xa8, 0x19, 0x94, 0xe9, 0x0c, 0xce, 0xe3, + 0x39, 0x8d, 0x1e, 0x13, 0xea, 0x9c, 0x3d, 0x49, 0x7e, 0x59, 0x63, 0x8e, 0xd4, 0xae, 0xe3, 0x21, 0x3f, 0x71, 0x59, + 0x03, 0x9d, 0xce, 0xbf, 0x66, 0xe0, 0x51, 0x3c, 0xab, 0xd0, 0x6f, 0xaf, 0xa0, 0x59, 0x11, 0xfa, 0x30, 0x98, 0x05, + 0x3d, 0xf6, 0x42, 0xc5, 0x3b, 0x10, 0xf1, 0x01, 0xad, 0x4a, 0xd1, 0x93, 0x0f, 0x67, 0x3a, 0xbc, 0xa0, 0x7d, 0xda, + 0x28, 0xe5, 0x20, 0x73, 0x0d, 0x43, 0x24, 0xcc, 0x2e, 0xed, 0xb5, 0xa0, 0x4a, 0x9d, 0x36, 0xe5, 0x6f, 0xfb, 0x07, + 0xe5, 0x15, 0x30, 0xcf, 0x34, 0xc7, 0x97, 0xed, 0xe8, 0x61, 0x1e, 0x06, 0x14, 0x2e, 0x05, 0x5c, 0x89, 0x69, 0x8f, + 0x62, 0x94, 0xec, 0x96, 0xb9, 0xe6, 0x12, 0x64, 0x8c, 0xc0, 0x1b, 0x87, 0xc7, 0x87, 0x99, 0x25, 0x7c, 0x19, 0x42, + 0x27, 0x86, 0x99, 0xb0, 0xa9, 0x57, 0xf4, 0x84, 0x33, 0x68, 0xf4, 0x14, 0x26, 0xaa, 0x2c, 0xde, 0x65, 0x9a, 0x40, + 0x72, 0x0b, 0x93, 0xda, 0xde, 0xd4, 0x11, 0xa1, 0x45, 0xe4, 0x31, 0x9e, 0x22, 0x53, 0xb3, 0x95, 0x46, 0x16, 0x04, + 0x9c, 0xcb, 0xdb, 0x99, 0xd0, 0x05, 0x97, 0x90, 0xff, 0xdc, 0x09, 0xda, 0xd3, 0xc7, 0x13, 0x25, 0x96, 0x55, 0xde, + 0xf9, 0x78, 0x18, 0x6f, 0x4a, 0x1a, 0xd1, 0x12, 0x5f, 0xf4, 0x62, 0xc8, 0x56, 0x61, 0x86, 0x8a, 0xd9, 0xe3, 0x05, + 0x32, 0xc0, 0xf7, 0x12, 0xc8, 0xd2, 0xea, 0x32, 0xcf, 0x7c, 0x54, 0x9b, 0x80, 0xc3, 0x0f, 0xf2, 0x90, 0xe1, 0x63, + 0x83, 0x7d, 0x8c, 0xbe, 0x6c, 0xec, 0x31, 0xbf, 0x8d, 0xf7, 0x23, 0x82, 0x22, 0xd8, 0x19, 0xbe, 0x6d, 0x50, 0xc8, + 0x83, 0xa0, 0xa0, 0xbd, 0x45, 0xc1, 0xbf, 0x0f, 0x53, 0x9a, 0x18, 0xcf, 0xd1, 0xd1, 0xe4, 0x7b, 0x2f, 0x40, 0xcb, + 0x59, 0xfb, 0x70, 0x34, 0x45, 0xad, 0x3c, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, + 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, + 0x19, 0x41, 0x42, 0xec, 0x81, 0x49, 0x68, 0x9a, 0x85, 0xf9, 0xda, 0x21, 0x13, 0xfe, 0x18, 0x41, 0x4a, 0x22, 0xb7, + 0x81, 0x85, 0x09, 0x76, 0xdd, 0x95, 0xe0, 0xf2, 0x50, 0x0c, 0x16, 0x28, 0x59, 0x54, 0x77, 0xff, 0x0c, 0xdd, 0x07, + 0xe8, 0xda, 0x58, 0xfe, 0x86, 0xc0, 0xf5, 0xf7, 0xf7, 0x7e, 0x03, 0xf3, 0x52, 0x4a, 0x8e, 0x3f, 0x0e, 0xf7, 0x54, + 0x49, 0x94, 0x37, 0xc7, 0xad, 0x2c, 0xfd, 0x1c, 0x61, 0x79, 0x0c, 0x64, 0x58, 0xb9, 0xc9, 0x6e, 0xb2, 0x60, 0xb3, + 0xe8, 0xaa, 0xbc, 0xe4, 0xef, 0xbe, 0xfc, 0x48, 0x7a, 0x24, 0xde, 0x62, 0xe7, 0x3c, 0x09, 0x52, 0x99, 0x96, 0x95, + 0xc7, 0x6b, 0x9a, 0xc8, 0xa3, 0x97, 0xa6, 0xc2, 0x76, 0x46, 0x52, 0x0a, 0x3d, 0x6f, 0xf9, 0x75, 0x26, 0x2a, 0x51, + 0x54, 0xe4, 0xe0, 0x97, 0xc3, 0x83, 0x99, 0xae, 0x30, 0x92, 0x79, 0xcc, 0xee, 0x3a, 0x6f, 0x16, 0x43, 0xe5, 0x72, + 0x54, 0xf1, 0x9f, 0x1c, 0x38, 0x72, 0x3e, 0x73, 0xed, 0xd0, 0x40, 0x97, 0x52, 0x02, 0x01, 0xcd, 0x0b, 0xf5, 0x8d, + 0x44, 0xef, 0x5f, 0x1a, 0x59, 0x23, 0x6f, 0x84, 0x1a, 0x97, 0x76, 0x56, 0xac, 0xda, 0xf7, 0xad, 0x58, 0xf9, 0x3e, + 0x95, 0x76, 0x77, 0x90, 0x25, 0x4e, 0x92, 0xe9, 0x30, 0x91, 0x01, 0xcb, 0x70, 0xb5, 0x37, 0x90, 0xef, 0xbb, 0x2c, + 0xc4, 0x68, 0x3c, 0xe1, 0xaf, 0x7e, 0x1d, 0xa1, 0x57, 0xe3, 0x44, 0xe7, 0x6b, 0xc4, 0x07, 0xf1, 0x9a, 0x1e, 0x26, + 0x4f, 0x0c, 0xf3, 0x4a, 0x04, 0x54, 0xf7, 0x3e, 0x78, 0x88, 0x0b, 0xa5, 0x75, 0x76, 0x5a, 0x63, 0x15, 0x0a, 0xdc, + 0xa6, 0xf9, 0xc8, 0x05, 0x52, 0x3c, 0xc8, 0x5b, 0xbb, 0x2f, 0x76, 0x21, 0xeb, 0x44, 0x89, 0x12, 0x33, 0x57, 0xca, + 0x23, 0x43, 0x3e, 0x45, 0xbe, 0xd1, 0xcd, 0x3c, 0x50, 0x18, 0xc7, 0x7b, 0xbb, 0xd2, 0x3e, 0xd7, 0xde, 0xe0, 0xfa, + 0xf8, 0xa0, 0xd3, 0xa3, 0x7b, 0xe9, 0x27, 0x1f, 0xb5, 0xeb, 0x61, 0x43, 0x51, 0xc3, 0x34, 0x4f, 0x4e, 0x4a, 0xe4, + 0x47, 0x36, 0xbd, 0x20, 0xe9, 0xca, 0x6e, 0x31, 0x0a, 0x62, 0xae, 0x6e, 0xd5, 0xb7, 0xb5, 0x73, 0xa4, 0x12, 0x33, + 0x09, 0x39, 0x20, 0x67, 0x76, 0xa4, 0x59, 0x97, 0x17, 0xd6, 0x2c, 0x0c, 0xce, 0x9e, 0xd1, 0x60, 0x73, 0xbb, 0xae, + 0x3f, 0x48, 0xc3, 0xae, 0x70, 0xcb, 0x8c, 0x0c, 0xa3, 0x25, 0x50, 0xf4, 0x61, 0x10, 0x18, 0x7f, 0xac, 0x9d, 0x48, + 0x88, 0x2b, 0x22, 0x1b, 0x20, 0x92, 0xb1, 0x04, 0x34, 0x4f, 0x6b, 0xd0, 0x6a, 0xb8, 0x12, 0xed, 0x57, 0x18, 0xd6, + 0xfa, 0x96, 0xdb, 0xd2, 0xd2, 0xa9, 0x3d, 0x31, 0x43, 0x6e, 0x7d, 0xe9, 0x48, 0x6e, 0xd1, 0x73, 0xbf, 0xee, 0x16, + 0xfc, 0xfe, 0x7f, 0xdb, 0x63, 0xef, 0xe8, 0x2e, 0x63, 0xc5, 0xbf, 0xb0, 0x97, 0x7e, 0x2c, 0xc9, 0x98, 0x95, 0x26, + 0x2e, 0x52, 0xb1, 0x27, 0x8b, 0x7a, 0x70, 0x95, 0x1f, 0xe1, 0x8b, 0x34, 0xde, 0xc6, 0x43, 0x4d, 0x39, 0x0e, 0xf2, + 0x49, 0x09, 0x93, 0x5c, 0x17, 0x51, 0xcf, 0x7c, 0x5c, 0x17, 0x15, 0x67, 0xf7, 0xe5, 0xb6, 0xfc, 0xd6, 0xe5, 0xaa, + 0xe0, 0xd4, 0xa8, 0xde, 0x1a, 0x2b, 0x3b, 0xa5, 0x70, 0x8f, 0xad, 0x31, 0x13, 0x8f, 0x1b, 0x21, 0x8b, 0x6d, 0x34, + 0x96, 0xdf, 0x6c, 0xe5, 0x12, 0x85, 0x2c, 0x62, 0x32, 0x93, 0xd8, 0x3a, 0xec, 0xef, 0x2e, 0x47, 0xb6, 0xc5, 0x82, + 0xd0, 0x93, 0x9b, 0x03, 0xb5, 0x34, 0x98, 0x77, 0xf0, 0xe8, 0xd4, 0xb9, 0x8b, 0x38, 0xdf, 0xfa, 0x5f, 0xc9, 0xc5, + 0xcd, 0x94, 0x83, 0x72, 0x22, 0xe5, 0x2c, 0x69, 0x57, 0x09, 0x78, 0x08, 0xf5, 0xf8, 0x14, 0xf2, 0x69, 0x3b, 0x62, + 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, + 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x5b, 0xd5, 0xc1, 0x31, 0xc5, 0xce, + 0x5b, 0x15, 0x4c, 0x63, 0x6e, 0x80, 0xaf, 0x00, 0x85, 0x77, 0x0a, 0xfb, 0x1e, 0xb4, 0xd1, 0xa3, 0x7e, 0x70, 0x65, + 0xfa, 0x49, 0x50, 0xd3, 0xe6, 0x28, 0x6a, 0xd3, 0x8a, 0x1e, 0x42, 0xf8, 0xda, 0x0b, 0xed, 0x17, 0xf6, 0xf9, 0xd9, + 0xb2, 0x11, 0x88, 0xa8, 0xc0, 0xef, 0x34, 0x5d, 0x5b, 0x87, 0xc2, 0x87, 0x55, 0xb6, 0xd9, 0xc1, 0xf1, 0xe3, 0xcb, + 0x70, 0x23, 0x6b, 0xc6, 0xbe, 0x4c, 0xab, 0x26, 0x96, 0x80, 0x11, 0x72, 0x4b, 0xd2, 0x3b, 0x6a, 0x74, 0x39, 0x0f, + 0xcd, 0x7d, 0x68, 0x03, 0xab, 0x1f, 0x70, 0x01, 0xdd, 0x6b, 0x7f, 0x46, 0xc3, 0x68, 0x71, 0x03, 0xb7, 0x43, 0xb0, + 0x3d, 0xcf, 0x40, 0x62, 0x42, 0x28, 0xfa, 0x22, 0xfc, 0xe2, 0x4f, 0x74, 0x60, 0x85, 0x57, 0x64, 0x92, 0x1d, 0x98, + 0x51, 0x5e, 0x3e, 0x62, 0x95, 0xbe, 0x7c, 0x4d, 0x59, 0x3c, 0x45, 0x03, 0x1e, 0xde, 0xfe, 0x95, 0x79, 0x29, 0x49, + 0xe6, 0x6d, 0x75, 0x11, 0x27, 0x42, 0xb4, 0xf3, 0x7a, 0xf8, 0x19, 0x9e, 0xb1, 0x01, 0x20, 0x3b, 0x7a, 0x57, 0xb5, + 0xaa, 0x5e, 0x8d, 0xec, 0x74, 0x4a, 0x0b, 0xcb, 0x88, 0x92, 0xfd, 0x41, 0x04, 0xef, 0xe7, 0x18, 0x6e, 0xe8, 0xe5, + 0xec, 0x30, 0x3a, 0x66, 0x8c, 0xa7, 0x65, 0x87, 0x3e, 0x80, 0xc4, 0xe8, 0xd0, 0x30, 0x55, 0x06, 0x5f, 0x0f, 0x87, + 0x68, 0x8b, 0xa6, 0x84, 0x2e, 0x9d, 0xd1, 0xbf, 0x59, 0x55, 0x70, 0xe8, 0x4b, 0xce, 0xa8, 0x8a, 0x3e, 0xf5, 0x5c, + 0x0e, 0x33, 0x81, 0xdf, 0xad, 0xe1, 0xc2, 0xf1, 0x6d, 0x35, 0xa8, 0x53, 0x66, 0x0f, 0x18, 0x68, 0xfa, 0x71, 0x14, + 0xdf, 0x5e, 0xcf, 0x67, 0x5a, 0x36, 0x43, 0xee, 0xe0, 0x42, 0x53, 0x32, 0xb4, 0xa0, 0xbd, 0x26, 0xbb, 0xf7, 0x25, + 0xde, 0x87, 0x5d, 0x09, 0x7d, 0xd3, 0xcb, 0x21, 0x91, 0xf4, 0xdd, 0x5d, 0x69, 0x5b, 0x6b, 0x0c, 0x29, 0xf9, 0x6d, + 0x9c, 0x97, 0x46, 0x16, 0xc7, 0x88, 0x89, 0x49, 0xd1, 0x02, 0x09, 0xc3, 0x38, 0x60, 0xe7, 0x16, 0xf0, 0x57, 0x1b, + 0x11, 0xd9, 0x5b, 0x05, 0x87, 0xc2, 0x9f, 0x6f, 0xd2, 0x48, 0xb6, 0x33, 0xec, 0xec, 0xd0, 0x7a, 0x36, 0x05, 0x3a, + 0x38, 0xae, 0x44, 0x9a, 0x4e, 0x88, 0xf2, 0x9f, 0xc8, 0x24, 0x02, 0x5e, 0x9c, 0xa6, 0x20, 0xdd, 0x00, 0x79, 0x43, + 0xac, 0xc4, 0x82, 0xd2, 0xb7, 0xb6, 0xfd, 0xba, 0xc7, 0xf1, 0x7f, 0xae, 0xf0, 0xf9, 0x5e, 0x75, 0xfa, 0x31, 0xa2, + 0x09, 0xd0, 0xa4, 0x4b, 0xf8, 0x60, 0x32, 0x0e, 0x57, 0xf9, 0x6c, 0x8b, 0xf7, 0xb2, 0xe8, 0xd6, 0xf1, 0x01, 0xe9, + 0xad, 0xe0, 0x4c, 0x1a, 0x4a, 0xb9, 0xfc, 0x1a, 0xfd, 0xd1, 0x59, 0xc7, 0x5b, 0xc0, 0x39, 0xf7, 0x05, 0x58, 0xa7, + 0xd8, 0xe1, 0x00, 0x5a, 0x5d, 0x21, 0xdd, 0xd0, 0x85, 0xfb, 0x51, 0xf2, 0xf6, 0x84, 0x5b, 0xed, 0x9d, 0xc4, 0xe8, + 0x47, 0xdf, 0x1f, 0x95, 0xb1, 0xcb, 0x58, 0x71, 0x36, 0xb1, 0x1d, 0xac, 0x76, 0x94, 0x93, 0xea, 0x70, 0x36, 0x27, + 0x75, 0xec, 0x76, 0x48, 0x8f, 0x41, 0x2f, 0xab, 0x22, 0xea, 0x9e, 0x06, 0x45, 0x86, 0x4a, 0x90, 0xd4, 0x36, 0x74, + 0xab, 0x45, 0x20, 0x85, 0x05, 0x23, 0x1f, 0x84, 0x5f, 0x84, 0xab, 0x0f, 0xb2, 0x39, 0x17, 0x45, 0x0f, 0x93, 0xc9, + 0x67, 0xf2, 0x3e, 0xa3, 0xda, 0xad, 0xb0, 0xd1, 0xe0, 0xb6, 0xe9, 0x76, 0x7f, 0x69, 0x89, 0x35, 0x5e, 0x4c, 0xca, + 0x49, 0xfc, 0x1f, 0x62, 0x72, 0xd6, 0xe1, 0xaf, 0x7d, 0x9e, 0x15, 0xe0, 0x9d, 0xc9, 0xce, 0x35, 0xb9, 0x2b, 0x0b, + 0x82, 0x59, 0x76, 0x34, 0x2e, 0x03, 0xad, 0x28, 0xde, 0xa9, 0x94, 0x4d, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, + 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, + 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x2e, 0x8e, 0xb9, 0x74, 0x12, 0xbb, 0xa7, 0xea, 0xd6, 0x3d, 0xdb, 0x50, 0x11, + 0x77, 0x4f, 0xc6, 0xbd, 0x3a, 0xa6, 0xaf, 0x78, 0xde, 0xe0, 0x90, 0xbb, 0x49, 0xcf, 0xbb, 0x88, 0xf7, 0x12, 0x03, + 0x07, 0x0d, 0x46, 0x5f, 0xbc, 0x37, 0xc5, 0xc7, 0xd4, 0xa1, 0xf2, 0xea, 0xc3, 0x70, 0x3b, 0xfa, 0xc4, 0x06, 0x8b, + 0xcb, 0xd7, 0xdb, 0x42, 0x6e, 0x4e, 0xa8, 0x54, 0x66, 0xc2, 0xf4, 0x32, 0x10, 0xb6, 0x8b, 0xe7, 0xcd, 0xb5, 0xd6, + 0xfe, 0x76, 0x89, 0x62, 0x2b, 0xe6, 0x04, 0x83, 0x50, 0x3b, 0x96, 0x69, 0x01, 0x63, 0xcd, 0x94, 0xd2, 0x14, 0x79, + 0xb3, 0x5e, 0x79, 0xc1, 0x18, 0xe0, 0x4d, 0x89, 0x84, 0xb4, 0x94, 0xe9, 0x75, 0xac, 0x03, 0xb6, 0xae, 0x3a, 0x30, + 0x56, 0x2a, 0xd3, 0xa3, 0xdf, 0x48, 0x96, 0x4b, 0x16, 0x37, 0x71, 0x31, 0xba, 0xb4, 0x5a, 0xb1, 0x80, 0x10, 0xf1, + 0x53, 0xba, 0x38, 0x78, 0x65, 0xfe, 0x96, 0xb1, 0xe0, 0xdc, 0x0d, 0xb3, 0x08, 0xdc, 0x02, 0x30, 0x18, 0x1a, 0x7d, + 0x5f, 0xbe, 0xab, 0x5d, 0x8a, 0xbc, 0x75, 0x49, 0xcf, 0x67, 0xc1, 0x2f, 0x47, 0x58, 0x57, 0x47, 0x69, 0xda, 0x1d, + 0x64, 0xc2, 0x55, 0x62, 0x4b, 0xde, 0x8c, 0x9f, 0xac, 0x19, 0x66, 0xe0, 0xec, 0xc3, 0x59, 0xad, 0x42, 0x4e, 0x26, + 0x00, 0x3a, 0x68, 0x29, 0x31, 0x0d, 0x1a, 0x21, 0xa7, 0xd0, 0xef, 0xb8, 0xe4, 0x33, 0x4d, 0x1a, 0x01, 0x4e, 0xd9, + 0xb0, 0x51, 0x40, 0x47, 0x03, 0x89, 0x2c, 0x85, 0x93, 0x97, 0x53, 0xde, 0x3d, 0x65, 0x44, 0x1b, 0x63, 0x31, 0x7f, + 0x7e, 0x23, 0x55, 0x11, 0x9c, 0x1e, 0x1a, 0x02, 0x9d, 0xf1, 0x0c, 0x16, 0x58, 0x53, 0x62, 0x9b, 0x29, 0x50, 0x23, + 0xff, 0x52, 0x08, 0x18, 0x44, 0x50, 0x51, 0xc2, 0x2a, 0xda, 0x83, 0xe9, 0x95, 0x02, 0x61, 0x17, 0xe7, 0x79, 0x48, + 0x7e, 0x72, 0xb6, 0x43, 0xfc, 0x8a, 0xe1, 0x7c, 0x42, 0x9c, 0xf0, 0x9c, 0x40, 0x0a, 0x86, 0x74, 0xa4, 0x8b, 0x9b, + 0x31, 0x97, 0xfe, 0x9a, 0x5c, 0x84, 0xad, 0xfd, 0x72, 0x4a, 0xa8, 0x40, 0x93, 0xa8, 0x0a, 0xb2, 0x0e, 0xc1, 0x4e, + 0x58, 0x64, 0x5d, 0x1c, 0x0c, 0xe0, 0x4b, 0xf9, 0xc9, 0x1b, 0x0b, 0x48, 0xa1, 0xb0, 0x8e, 0x80, 0xa5, 0x63, 0x68, + 0x5b, 0x67, 0x71, 0x90, 0xbc, 0xeb, 0x11, 0x2f, 0x2c, 0x2a, 0x68, 0x2e, 0x32, 0x05, 0xf6, 0x0f, 0x0c, 0x00, 0x70, + 0x16, 0x2e, 0x07, 0x5b, 0x08, 0xa8, 0xa7, 0x4a, 0x71, 0x7a, 0xad, 0xaf, 0x5f, 0x6c, 0x93, 0x33, 0x3d, 0x0f, 0x37, + 0x25, 0x4a, 0xff, 0xe5, 0xe9, 0x9b, 0x09, 0x83, 0x99, 0x7f, 0x76, 0x5a, 0x53, 0x86, 0x9a, 0x7b, 0x17, 0x9f, 0x81, + 0xc5, 0xe9, 0xd1, 0xea, 0x8f, 0xba, 0xa5, 0xfe, 0x6d, 0x3c, 0xd2, 0x92, 0x46, 0xd5, 0x41, 0xef, 0xfd, 0x6f, 0xf9, + 0xb5, 0xd1, 0xb3, 0x13, 0x91, 0x48, 0xc2, 0xed, 0x32, 0x6d, 0xb2, 0xab, 0xab, 0xa4, 0x0a, 0x69, 0xb3, 0x3e, 0x8f, + 0x86, 0x97, 0xc5, 0x08, 0x2d, 0x67, 0x3b, 0x3c, 0x32, 0x4d, 0x89, 0xe6, 0x1a, 0x9e, 0xe6, 0x81, 0x63, 0xab, 0xec, + 0xfd, 0x8a, 0x39, 0x64, 0x74, 0xfb, 0xd8, 0xaf, 0x13, 0x6c, 0xf9, 0x8e, 0x1f, 0xde, 0xe5, 0x86, 0x36, 0x7d, 0x5f, + 0x19, 0x7c, 0xe1, 0x5f, 0xa2, 0xe2, 0x4c, 0xfc, 0x32, 0x87, 0x11, 0xc5, 0x57, 0x45, 0x75, 0x00, 0x8a, 0x58, 0xb2, + 0xd3, 0x1e, 0xc1, 0x2d, 0x3d, 0xa1, 0x68, 0x64, 0x74, 0x4d, 0x4f, 0x03, 0x43, 0x25, 0x3a, 0x15, 0xbe, 0x72, 0x1f, + 0x3b, 0x02, 0xaa, 0xa6, 0x0a, 0x08, 0xb8, 0xa7, 0xcf, 0x11, 0xe7, 0x9b, 0xd9, 0xbc, 0x84, 0x9b, 0xa1, 0xf8, 0x30, + 0x16, 0x62, 0x9d, 0xed, 0x50, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, + 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xd0, + 0xcc, 0xf5, 0x63, 0xf1, 0xfa, 0x6d, 0x43, 0x65, 0xad, 0x55, 0x19, 0x49, 0x4f, 0x5a, 0x2e, 0xf5, 0xf3, 0x2c, 0x53, + 0x9c, 0xd3, 0xe6, 0x1c, 0xf0, 0xdd, 0xa5, 0x97, 0xa2, 0x99, 0xae, 0x37, 0x8f, 0xfa, 0x8c, 0xbc, 0xba, 0x7f, 0x5a, + 0x8b, 0x5e, 0xc5, 0xf4, 0x87, 0x62, 0xed, 0x20, 0xe7, 0x61, 0x60, 0x7d, 0x9c, 0xf9, 0xe9, 0x88, 0xa0, 0xb3, 0x2f, + 0xe5, 0xa5, 0x5e, 0x47, 0x75, 0x1c, 0x07, 0xfd, 0x33, 0x73, 0x60, 0x53, 0x8c, 0xb9, 0xa9, 0x2a, 0xe1, 0x05, 0xe6, + 0x43, 0x02, 0xd5, 0xb5, 0xfc, 0xca, 0xf7, 0x66, 0xf4, 0x9c, 0x0a, 0x87, 0x1f, 0xd6, 0x3c, 0x7b, 0x92, 0x7e, 0x05, + 0x72, 0x12, 0xa4, 0xb2, 0x81, 0x5f, 0x5d, 0xc5, 0xa8, 0x5e, 0xd7, 0x37, 0x10, 0x31, 0xdc, 0x19, 0xb9, 0xe1, 0xfe, + 0xb1, 0xcd, 0x5b, 0x94, 0xf7, 0xfa, 0x59, 0x35, 0x40, 0x07, 0x78, 0x38, 0x47, 0x04, 0xac, 0x89, 0x17, 0x2e, 0x3b, + 0xe8, 0x1d, 0x34, 0x6c, 0x19, 0x63, 0x00, 0x3e, 0x04, 0x36, 0xf6, 0xe8, 0x90, 0x1c, 0xfe, 0x57, 0xbd, 0xbb, 0x39, + 0x35, 0xdf, 0x3d, 0xde, 0x6a, 0x75, 0x68, 0x56, 0x6b, 0x93, 0x7b, 0xd4, 0x41, 0x64, 0xc0, 0x38, 0x01, 0xd8, 0x5a, + 0x25, 0xbe, 0xcb, 0xae, 0xa6, 0x6a, 0xf8, 0x45, 0x14, 0x9f, 0x23, 0x17, 0x4a, 0x9e, 0x61, 0x14, 0xdf, 0x81, 0xec, + 0x13, 0xa9, 0x76, 0xea, 0x2c, 0x9d, 0xca, 0x06, 0x4e, 0x54, 0x85, 0xea, 0xc7, 0x0d, 0xbf, 0x4d, 0x69, 0x6c, 0xbf, + 0x53, 0xf4, 0x0f, 0xcf, 0x53, 0x70, 0xeb, 0xc5, 0xe4, 0xca, 0xb9, 0xb3, 0x31, 0x26, 0x11, 0x60, 0x2a, 0x9b, 0xa5, + 0x80, 0x5c, 0x60, 0xd3, 0x87, 0x42, 0xa9, 0xbf, 0xdf, 0xe8, 0xa5, 0x4d, 0x34, 0x05, 0x3d, 0xfa, 0x17, 0xcb, 0x86, + 0xf5, 0x17, 0x04, 0xbf, 0xbf, 0xb7, 0x68, 0x27, 0xca, 0x30, 0x23, 0x60, 0xfc, 0x50, 0x41, 0xe8, 0x31, 0x69, 0x9e, + 0x2c, 0xe9, 0x98, 0x63, 0x3c, 0xe4, 0xe5, 0xbf, 0xbd, 0xad, 0x01, 0x6c, 0x34, 0x07, 0xe1, 0xbc, 0x98, 0x54, 0x2a, + 0xc2, 0x34, 0x14, 0x26, 0x2b, 0xf2, 0x43, 0x35, 0x65, 0xf1, 0x37, 0x12, 0x1f, 0xb4, 0x40, 0x79, 0x51, 0x10, 0x77, + 0x09, 0xbd, 0xa5, 0x0e, 0xa9, 0x8c, 0x52, 0x86, 0x6b, 0x60, 0xcb, 0xef, 0xa9, 0xe3, 0x0d, 0x69, 0xe2, 0x11, 0xa5, + 0x73, 0x42, 0x90, 0x6d, 0x65, 0x9a, 0x8b, 0x82, 0xad, 0x34, 0x1a, 0x22, 0x07, 0x1b, 0x37, 0x34, 0xee, 0xf2, 0x81, + 0x79, 0x46, 0x7a, 0x84, 0xd0, 0xd8, 0xf1, 0xc5, 0x56, 0x3a, 0xa9, 0x31, 0xcb, 0x9b, 0x69, 0x6a, 0x0d, 0x1f, 0xc8, + 0x7f, 0x0c, 0xe0, 0x54, 0x83, 0x1a, 0xc5, 0xcd, 0x8b, 0xbf, 0x62, 0xae, 0x44, 0xf1, 0x28, 0xa1, 0x0c, 0x47, 0xb6, + 0x0d, 0x68, 0x40, 0x35, 0x09, 0xe5, 0x28, 0xff, 0xb7, 0x29, 0x13, 0x98, 0x23, 0x28, 0x8f, 0x90, 0x3f, 0xb5, 0x3d, + 0x60, 0x86, 0x62, 0x71, 0xe1, 0x50, 0x0a, 0x60, 0xbf, 0x14, 0x6e, 0x02, 0x1c, 0xf7, 0xa4, 0x3b, 0x1f, 0xe9, 0xa3, + 0x1b, 0xdf, 0x76, 0x82, 0x55, 0xe5, 0x6a, 0x75, 0xc6, 0x15, 0x61, 0x8d, 0x11, 0xb7, 0x4a, 0xfe, 0x13, 0x11, 0xd5, + 0xf5, 0x93, 0xdc, 0x72, 0xff, 0x63, 0x59, 0x5d, 0xae, 0x26, 0x6b, 0xa3, 0x90, 0x84, 0x24, 0xf2, 0x09, 0x4c, 0xcc, + 0xf0, 0x5d, 0x20, 0xd3, 0x17, 0x70, 0x24, 0x0e, 0x3e, 0x77, 0xb5, 0x68, 0x7a, 0x91, 0x3b, 0xb0, 0xab, 0x72, 0xe0, + 0x8c, 0x4d, 0x29, 0x0c, 0xa2, 0x0a, 0x84, 0x8d, 0xe0, 0xfe, 0x24, 0xd7, 0x67, 0xc2, 0xdd, 0xad, 0x7e, 0xec, 0xa2, + 0x51, 0xa6, 0x1c, 0xd3, 0x7b, 0xb4, 0xfb, 0xed, 0x9f, 0xb8, 0x5a, 0x2d, 0xc8, 0x4e, 0xbd, 0x0e, 0x3e, 0xab, 0xaa, + 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, + 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x27, 0x54, 0xed, 0xd3, 0xe2, 0x1d, 0x71, 0xd2, + 0x81, 0xa8, 0x10, 0xfe, 0x6d, 0xdd, 0xfa, 0x1d, 0xe0, 0x4c, 0xa0, 0x6e, 0x79, 0xc1, 0x41, 0xfd, 0xcb, 0x31, 0x40, + 0xe9, 0xbd, 0x66, 0x63, 0x2e, 0xcf, 0x4c, 0xb5, 0x3f, 0x37, 0x04, 0x9b, 0xf5, 0x8b, 0xb3, 0x6d, 0x06, 0x3b, 0x04, + 0x40, 0x11, 0x49, 0x1d, 0x7b, 0xed, 0xe1, 0xfc, 0x9c, 0xde, 0xde, 0x11, 0xfe, 0x78, 0x05, 0xcf, 0xcf, 0x1d, 0x82, + 0x13, 0x09, 0x5a, 0x07, 0x4a, 0xa5, 0xaa, 0x9e, 0x51, 0x3f, 0xa1, 0x18, 0x71, 0x51, 0x8a, 0x5c, 0xca, 0xe2, 0x94, + 0xe4, 0xb3, 0xb6, 0xf2, 0x33, 0xed, 0x9e, 0xa0, 0xa6, 0x65, 0x7e, 0x65, 0x9f, 0x7f, 0x82, 0x13, 0x02, 0xcd, 0x22, + 0xbb, 0x10, 0x6d, 0x0d, 0x10, 0x87, 0x3a, 0x36, 0x35, 0xc9, 0x2f, 0x82, 0x7d, 0x3b, 0x25, 0xae, 0x7c, 0xd5, 0xb8, + 0x1c, 0xa8, 0x16, 0x25, 0x91, 0x64, 0xda, 0x2c, 0x90, 0x9f, 0x64, 0xbe, 0x51, 0x81, 0x19, 0x37, 0x40, 0x75, 0x02, + 0x8a, 0xd6, 0x24, 0x08, 0x3b, 0x53, 0x12, 0x9a, 0x6f, 0x8f, 0x3a, 0x22, 0x4e, 0x1d, 0xb1, 0xa6, 0x37, 0x01, 0x50, + 0xd5, 0x91, 0xc4, 0x86, 0xb5, 0x01, 0xcc, 0x27, 0xf8, 0xb2, 0xcd, 0x38, 0x0e, 0x12, 0xa7, 0x8e, 0x9e, 0x00, 0xd4, + 0xa3, 0xc1, 0x4a, 0x3a, 0x6a, 0x40, 0x92, 0xb1, 0x80, 0x08, 0x8a, 0x18, 0x07, 0x66, 0xef, 0xd5, 0x09, 0x0c, 0xfd, + 0x08, 0xd2, 0x3b, 0x14, 0x58, 0x9e, 0x57, 0x44, 0x78, 0x71, 0xae, 0x74, 0x3d, 0xa8, 0x75, 0x60, 0x14, 0x52, 0x2e, + 0xa8, 0x66, 0x63, 0xce, 0x0e, 0x4b, 0x1a, 0x9e, 0x78, 0x62, 0xb1, 0x4e, 0x1c, 0x20, 0xe4, 0x56, 0xd7, 0x9b, 0x15, + 0x62, 0x84, 0xfa, 0x1a, 0x9a, 0xdc, 0x9a, 0x23, 0x45, 0x2b, 0x58, 0x06, 0x14, 0xec, 0x60, 0x07, 0x43, 0xf5, 0x07, + 0x3c, 0x45, 0x35, 0x9b, 0x68, 0x21, 0x9b, 0xe2, 0xad, 0x20, 0x04, 0x8b, 0x7c, 0xd3, 0x71, 0x68, 0x37, 0x1b, 0xa0, + 0x64, 0xc2, 0x21, 0xd3, 0xa7, 0xfd, 0x77, 0xe4, 0x45, 0x2e, 0x72, 0x74, 0x15, 0x69, 0xe6, 0xfe, 0x93, 0xe1, 0x77, + 0x40, 0x48, 0x5f, 0xfa, 0x54, 0x40, 0x4d, 0xcc, 0x40, 0xb4, 0xf3, 0x91, 0x28, 0x00, 0x47, 0xe9, 0x05, 0xa2, 0x3a, + 0xa6, 0x0b, 0xc4, 0xa7, 0x2c, 0x9c, 0xe3, 0x6e, 0xe7, 0x33, 0xb2, 0x68, 0x7b, 0x82, 0xfc, 0x29, 0xe2, 0xc8, 0x17, + 0x62, 0x27, 0x5a, 0xf2, 0x29, 0xb3, 0x15, 0x84, 0x9a, 0xac, 0x8e, 0xa5, 0x1a, 0x49, 0xf6, 0x1f, 0xd4, 0xb9, 0x4d, + 0x37, 0x12, 0x05, 0xfe, 0xed, 0x07, 0xe7, 0x43, 0xa1, 0x8b, 0x9e, 0x43, 0x45, 0xbd, 0x57, 0x66, 0xd0, 0x63, 0xdb, + 0xaa, 0x1f, 0x13, 0x5d, 0x01, 0x4d, 0xb8, 0x0a, 0x51, 0x95, 0x6c, 0xc8, 0x54, 0x16, 0x5d, 0x54, 0x59, 0xfe, 0xf7, + 0x67, 0xdc, 0x6c, 0xb8, 0x8d, 0x8e, 0x4b, 0x28, 0x64, 0x30, 0x1d, 0x8f, 0x5c, 0x97, 0xf8, 0xea, 0x8a, 0xca, 0x3c, + 0xb2, 0xef, 0x3e, 0x08, 0x2d, 0xe2, 0xa7, 0x0b, 0x3c, 0xe8, 0x84, 0xec, 0x85, 0xc4, 0x54, 0xaf, 0x41, 0x49, 0xc9, + 0xe3, 0x18, 0x4d, 0xdd, 0x87, 0x81, 0xce, 0x13, 0xf6, 0x97, 0x3d, 0xa2, 0x99, 0xff, 0x4d, 0xb3, 0x81, 0xbd, 0x57, + 0xf1, 0x02, 0x28, 0x76, 0x99, 0xae, 0xc9, 0x8c, 0x44, 0x09, 0xe1, 0x6b, 0xa8, 0xe0, 0x65, 0x54, 0x72, 0xfe, 0x68, + 0x0d, 0x22, 0x30, 0x58, 0x9b, 0xf8, 0x80, 0x2c, 0x64, 0x17, 0xde, 0x50, 0x33, 0xab, 0x51, 0x67, 0x58, 0xd1, 0x3e, + 0xb8, 0x86, 0x52, 0xcb, 0x47, 0x2d, 0x82, 0x90, 0xa0, 0x0e, 0xb0, 0xe0, 0xc5, 0xa7, 0x05, 0x07, 0x2c, 0x9f, 0x45, + 0xdd, 0x48, 0x92, 0xf5, 0x52, 0x58, 0x78, 0x81, 0x5b, 0x1b, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, + 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, + 0xbd, 0x08, 0xc3, 0x19, 0x29, 0x9d, 0xe5, 0xd1, 0x6e, 0x81, 0xc0, 0x85, 0x11, 0x01, 0x5e, 0x79, 0x62, 0x8c, 0x1c, + 0xdc, 0x0e, 0x54, 0xb9, 0xee, 0x66, 0x7a, 0xb4, 0xf2, 0xa3, 0xc7, 0xbf, 0x09, 0xd4, 0xb7, 0x21, 0x6a, 0x7a, 0x47, + 0x5e, 0x52, 0xc4, 0x53, 0x8f, 0x5b, 0x24, 0x86, 0xec, 0xfe, 0x66, 0xb2, 0x9a, 0x01, 0x67, 0x4f, 0xc6, 0x96, 0xf1, + 0xc9, 0x17, 0xf5, 0xc8, 0xd7, 0x7b, 0xac, 0x9f, 0xa1, 0x10, 0x0e, 0x76, 0x8c, 0x73, 0x2f, 0x70, 0xe7, 0x6b, 0x72, + 0xce, 0xbc, 0x31, 0x4d, 0x6d, 0xc4, 0x42, 0x3f, 0xc7, 0x90, 0x65, 0x1e, 0xac, 0x5c, 0x69, 0x7c, 0x65, 0x70, 0x19, + 0x8b, 0xff, 0xde, 0x6d, 0x36, 0x96, 0xa6, 0x66, 0xbc, 0x4d, 0x93, 0xdd, 0x77, 0xd0, 0xeb, 0xec, 0xac, 0x44, 0xaa, + 0xa6, 0xe9, 0xf3, 0xd5, 0xb4, 0xc9, 0x8a, 0xef, 0xec, 0xe9, 0x25, 0xc5, 0xed, 0xaf, 0xfe, 0x72, 0xc6, 0x44, 0x8c, + 0x5e, 0xa1, 0x42, 0xbb, 0x6d, 0xa6, 0x4c, 0x49, 0xff, 0x3a, 0xd4, 0x45, 0xe2, 0x77, 0x5d, 0xb4, 0x51, 0x43, 0x33, + 0x60, 0x0e, 0xf3, 0xb3, 0x62, 0x36, 0x78, 0x00, 0x13, 0x2a, 0x02, 0x14, 0xf1, 0x85, 0x5f, 0x92, 0x76, 0xe0, 0xc1, + 0x85, 0x4a, 0x06, 0x70, 0xf9, 0xd5, 0x55, 0x13, 0xb8, 0x68, 0x35, 0xd0, 0x38, 0x43, 0x90, 0x0f, 0x69, 0xa4, 0xd1, + 0x7a, 0x7c, 0x8a, 0x14, 0xe8, 0x15, 0xcc, 0x90, 0x12, 0x88, 0x8d, 0xe5, 0xa9, 0x17, 0xd0, 0x6a, 0xa2, 0x3c, 0x55, + 0x77, 0x30, 0xab, 0xd8, 0xb9, 0xa8, 0xa0, 0x17, 0xcf, 0x14, 0xbe, 0x5a, 0x2e, 0x3b, 0x7a, 0x3e, 0x1a, 0xfe, 0x35, + 0xfe, 0xcd, 0x4b, 0xfd, 0xf6, 0x26, 0xa3, 0x7d, 0xdf, 0x22, 0xb7, 0xad, 0x34, 0x9f, 0xfa, 0x6f, 0xcc, 0xdf, 0x5e, + 0xa6, 0xb8, 0xa9, 0xc4, 0x04, 0x9c, 0x75, 0x9e, 0x7e, 0x10, 0xd1, 0x4a, 0x37, 0xca, 0x76, 0x2a, 0xcf, 0x0a, 0xbd, + 0x9d, 0xf4, 0xae, 0x35, 0x1b, 0xbf, 0xe7, 0xdc, 0x03, 0x26, 0x76, 0x7e, 0x75, 0x5b, 0x31, 0x8d, 0x38, 0x57, 0x5c, + 0x8d, 0x23, 0x79, 0xb3, 0x97, 0x8b, 0x43, 0x58, 0xfd, 0x3f, 0x12, 0x1a, 0x70, 0xfa, 0x9f, 0x81, 0x5f, 0x45, 0x05, + 0x91, 0x49, 0xc6, 0x62, 0xae, 0x80, 0xb9, 0xc6, 0x9f, 0x4e, 0x4b, 0x83, 0x3f, 0xae, 0x88, 0x54, 0x70, 0x93, 0xe3, + 0x14, 0xbb, 0x97, 0xff, 0x92, 0x29, 0x27, 0xda, 0xa0, 0x5b, 0x83, 0x9f, 0x9a, 0x20, 0xaf, 0xa3, 0xfb, 0xa8, 0x22, + 0xd3, 0x2b, 0x00, 0xeb, 0x97, 0x6b, 0xd0, 0x80, 0x0d, 0x06, 0xa7, 0xb8, 0xee, 0x59, 0xf6, 0xdf, 0xa1, 0xfa, 0xae, + 0xb4, 0x70, 0x61, 0xfb, 0x50, 0xe0, 0xcc, 0x58, 0x77, 0x83, 0x85, 0x46, 0x7d, 0xf1, 0x26, 0xcf, 0x1c, 0x58, 0x58, + 0xf1, 0x21, 0x34, 0x19, 0x29, 0x45, 0x9a, 0x55, 0x4b, 0x6d, 0x3d, 0x13, 0xae, 0xc4, 0x91, 0x3e, 0xbb, 0x33, 0xb9, + 0x8c, 0xc3, 0x5b, 0xba, 0x68, 0xf2, 0x4a, 0xbc, 0x6c, 0x46, 0x3c, 0xc3, 0x48, 0x84, 0xb2, 0xd0, 0x19, 0xdd, 0xc5, + 0x69, 0x57, 0x79, 0x62, 0x01, 0x17, 0x4d, 0x2e, 0x25, 0x9c, 0x6f, 0xcd, 0xec, 0xe6, 0xc2, 0x8d, 0x4e, 0xbe, 0x37, + 0x8f, 0xc5, 0x8c, 0xef, 0xd8, 0xd7, 0x2c, 0x1d, 0x26, 0x5c, 0x75, 0x74, 0x75, 0xee, 0x4b, 0x29, 0x33, 0x6d, 0x8a, + 0xeb, 0xa2, 0x32, 0x73, 0xb4, 0x93, 0xa1, 0xe8, 0x71, 0xd6, 0xec, 0x83, 0x0f, 0xa3, 0x38, 0x72, 0xda, 0x70, 0x08, + 0x27, 0x0b, 0x0a, 0xde, 0xc3, 0x63, 0xa3, 0x9d, 0x01, 0x14, 0xe1, 0x0d, 0x40, 0xcd, 0xa0, 0xb2, 0x4f, 0x3f, 0xa8, + 0x96, 0xe2, 0xc3, 0x3b, 0x56, 0x12, 0x40, 0xa4, 0x03, 0x4f, 0x2e, 0xa3, 0x6f, 0x71, 0x44, 0xac, 0xb9, 0x73, 0xcb, + 0x66, 0xeb, 0x36, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, + 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xbe, 0x72, 0xb0, + 0x63, 0x4c, 0x6d, 0xea, 0xef, 0x63, 0xda, 0xaf, 0xdd, 0xa9, 0x19, 0xf9, 0x7d, 0x55, 0x8a, 0xbb, 0x83, 0x69, 0xc8, + 0x84, 0x15, 0x6c, 0xfa, 0x99, 0x78, 0x49, 0xb2, 0x5a, 0x5e, 0x8b, 0xca, 0xc9, 0x52, 0x58, 0xe4, 0xd9, 0xf1, 0x0e, + 0x53, 0xe3, 0x22, 0x33, 0xa3, 0xa0, 0xcb, 0xe5, 0x7a, 0xa8, 0x82, 0xc3, 0x24, 0xb5, 0x92, 0x60, 0x84, 0x82, 0x09, + 0x20, 0x9f, 0xca, 0x28, 0xa6, 0x20, 0x7e, 0x3e, 0x7a, 0x44, 0x35, 0x52, 0x96, 0x26, 0x13, 0xe3, 0x80, 0x5b, 0x91, + 0x8e, 0xa5, 0x67, 0x9c, 0x79, 0x07, 0x7d, 0x02, 0xd9, 0xae, 0x15, 0x53, 0x0e, 0x63, 0x57, 0xb3, 0x24, 0x64, 0x61, + 0x3a, 0x94, 0x23, 0xc0, 0xb4, 0x8f, 0x06, 0x84, 0xcb, 0x73, 0x8b, 0x99, 0xf6, 0x35, 0xbb, 0xe5, 0xad, 0x64, 0x37, + 0x40, 0xb6, 0x11, 0x9c, 0x16, 0x66, 0x6b, 0xc9, 0x10, 0x2e, 0x13, 0xde, 0xb5, 0x16, 0x71, 0xbe, 0xbb, 0x13, 0x88, + 0xed, 0xe7, 0x73, 0x86, 0x72, 0x04, 0x79, 0x01, 0xe1, 0x60, 0x3e, 0x84, 0x7b, 0x2e, 0xed, 0x9b, 0x20, 0x0b, 0x9e, + 0xc4, 0xa9, 0xe5, 0x86, 0x71, 0xc3, 0x3a, 0xc1, 0x01, 0xff, 0x06, 0x12, 0x00, 0x2e, 0xa1, 0x07, 0xec, 0x73, 0x0d, + 0x76, 0x85, 0xde, 0x2f, 0xde, 0x77, 0x25, 0xb7, 0x14, 0x04, 0x1d, 0x08, 0xca, 0xd4, 0xc6, 0x31, 0xe7, 0x00, 0x33, + 0x61, 0x55, 0xfd, 0x50, 0x41, 0x07, 0xac, 0x46, 0x10, 0xf2, 0x0b, 0x6a, 0x5b, 0x24, 0xf4, 0x25, 0x99, 0xd8, 0x5f, + 0xb0, 0x56, 0x2f, 0x92, 0x3f, 0xe7, 0xbb, 0x83, 0x83, 0xfa, 0xa3, 0x6b, 0x4e, 0x6b, 0x4b, 0xbd, 0xc4, 0x61, 0x5e, + 0xe2, 0xce, 0xd2, 0x2e, 0x11, 0x94, 0x7d, 0x6e, 0x2a, 0x0b, 0x25, 0x50, 0x54, 0x30, 0xc1, 0x34, 0x1b, 0x87, 0x73, + 0x72, 0x11, 0x43, 0x7e, 0xb3, 0x03, 0x75, 0x04, 0x72, 0x50, 0x30, 0x6e, 0xf2, 0xf2, 0xfe, 0x41, 0xe0, 0x6b, 0x9d, + 0xc0, 0x43, 0xc1, 0x40, 0x46, 0x2d, 0xb8, 0x9e, 0x0d, 0x7b, 0xae, 0xb8, 0xc9, 0x16, 0xfc, 0x6e, 0xc2, 0x95, 0x6e, + 0x1d, 0x9a, 0x91, 0x4f, 0x0a, 0x8e, 0x01, 0xf0, 0xbd, 0xbb, 0xae, 0xc5, 0x66, 0xa4, 0x85, 0x0e, 0xb6, 0x45, 0xcf, + 0x37, 0x8d, 0x66, 0x8f, 0x33, 0x5d, 0xd8, 0x66, 0xdd, 0x53, 0xf8, 0x25, 0x14, 0x94, 0xb8, 0x7c, 0x93, 0x3f, 0xbb, + 0x0c, 0x67, 0xd3, 0x99, 0x9a, 0xfc, 0xcc, 0xfc, 0x98, 0x80, 0x1e, 0xe3, 0xa3, 0xbe, 0x01, 0xed, 0x3c, 0xc8, 0x8c, + 0x49, 0x0d, 0xd4, 0xa8, 0x50, 0x32, 0x32, 0xcf, 0x94, 0x4c, 0x3e, 0x91, 0x4a, 0x4e, 0x45, 0x2e, 0x4b, 0xb3, 0x5d, + 0x65, 0xa2, 0x7b, 0x74, 0x05, 0xea, 0x5e, 0xd0, 0xbd, 0x65, 0x94, 0xb4, 0xe8, 0xd1, 0xd6, 0x3b, 0x90, 0x7d, 0x71, + 0x15, 0xc4, 0x4b, 0x81, 0xcb, 0x23, 0x13, 0x81, 0x3c, 0x13, 0x63, 0xc8, 0x6e, 0xd9, 0x73, 0xf5, 0x3c, 0x3b, 0xe3, + 0x49, 0xb7, 0x43, 0xd8, 0x13, 0xd5, 0x08, 0x22, 0xbc, 0x5e, 0xe3, 0x98, 0xd6, 0x16, 0x5e, 0x74, 0x10, 0xae, 0xa9, + 0xaf, 0x11, 0x1e, 0x09, 0xc6, 0xa3, 0xa2, 0xbf, 0xba, 0x6c, 0x0c, 0xd4, 0x12, 0xad, 0xe7, 0xc2, 0x82, 0xb9, 0x5f, + 0x9b, 0x43, 0x6a, 0x68, 0x3b, 0xae, 0xe7, 0x5b, 0xef, 0x2f, 0xf9, 0x17, 0x70, 0xb3, 0x47, 0x49, 0x9b, 0x26, 0xb7, + 0x6d, 0xc5, 0x85, 0x58, 0x13, 0xb5, 0xa5, 0x8b, 0xae, 0x90, 0x90, 0x05, 0xf0, 0xc5, 0xf1, 0xac, 0x96, 0xfa, 0xb4, + 0x1f, 0x10, 0xec, 0x34, 0x09, 0xae, 0x8d, 0x5a, 0x3a, 0x77, 0x88, 0xa1, 0x4d, 0x3f, 0x77, 0x20, 0x30, 0x4b, 0xaf, + 0x7d, 0xfe, 0x91, 0x12, 0x61, 0x99, 0x6a, 0x6c, 0x7a, 0x26, 0x4d, 0xb7, 0x56, 0x88, 0x72, 0xab, 0xaa, 0xaa, 0xaa, + 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, + 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xe4, 0x48, 0x02, 0xb8, 0xff, 0xb0, 0x3f, 0x1c, 0x2b, 0xaa, + 0x2f, 0xb4, 0x5f, 0x11, 0x57, 0xc9, 0x39, 0x25, 0x79, 0x99, 0x22, 0xf2, 0x50, 0xe8, 0xf1, 0xf0, 0x6e, 0xaf, 0x22, + 0xf5, 0x11, 0x32, 0x31, 0x59, 0xf5, 0x05, 0xf8, 0x8b, 0x37, 0x10, 0x4f, 0x59, 0xb4, 0xd1, 0x09, 0x4e, 0xc4, 0xfd, + 0x50, 0x0f, 0xe9, 0x5a, 0x81, 0x6d, 0x71, 0x4b, 0x9e, 0x86, 0x61, 0x74, 0xdd, 0xd8, 0x36, 0x6b, 0xee, 0x58, 0xdf, + 0xfb, 0xe6, 0xaf, 0x26, 0xd2, 0x18, 0xf4, 0x87, 0x25, 0x08, 0x4e, 0x98, 0xdb, 0xce, 0x2a, 0xdd, 0x0c, 0x13, 0x31, + 0xf3, 0x1a, 0x18, 0x5f, 0x79, 0x64, 0x02, 0x22, 0x22, 0x22, 0xe2, 0x6b, 0xfb, 0x59, 0x28, 0x20, 0x05, 0x7e, 0xd4, + 0xfa, 0x56, 0x17, 0xf6, 0xf1, 0xa9, 0xd9, 0x4a, 0x93, 0xa3, 0xb3, 0xab, 0x2e, 0xb3, 0x8c, 0xf8, 0xeb, 0x3e, 0x73, + 0x5b, 0x94, 0x09, 0x5e, 0x95, 0xe7, 0xba, 0xa6, 0x93, 0x7f, 0xb6, 0x08, 0xdb, 0xac, 0x4a, 0x62, 0xa8, 0xaf, 0xb3, + 0x91, 0x04, 0x75, 0x3f, 0xac, 0xb0, 0xf9, 0x8d, 0x59, 0x71, 0x31, 0x0d, 0x4e, 0x7e, 0x97, 0x0b, 0x31, 0x4a, 0x3f, + 0xda, 0xd3, 0xa7, 0xc6, 0x4f, 0x80, 0x5b, 0x4a, 0x5a, 0x43, 0x77, 0xa2, 0x4f, 0x1b, 0x04, 0x2d, 0xc1, 0x35, 0x43, + 0xe9, 0xb2, 0x64, 0xe9, 0x5b, 0x93, 0xe4, 0xa3, 0xe2, 0x9d, 0x19, 0x60, 0x28, 0x17, 0x39, 0xa7, 0x5f, 0xbe, 0x53, + 0xcb, 0x9e, 0x75, 0x7e, 0x66, 0xd7, 0xa0, 0xb1, 0x80, 0x22, 0x7e, 0xf9, 0xa8, 0xbb, 0xb4, 0x0d, 0x92, 0x20, 0xb5, + 0x76, 0x30, 0xbb, 0x0d, 0x21, 0x7c, 0x0d, 0x18, 0x74, 0x67, 0x30, 0xba, 0xcf, 0x5e, 0x73, 0xe1, 0x5a, 0xd8, 0x55, + 0xa2, 0x45, 0x29, 0x14, 0xfa, 0x72, 0xba, 0x26, 0x42, 0x23, 0xc5, 0x8c, 0xeb, 0x8a, 0xbe, 0xa5, 0x42, 0x52, 0x3a, + 0xa0, 0xf6, 0x87, 0x33, 0x7d, 0x12, 0x6d, 0x33, 0x1e, 0x9e, 0x3d, 0x76, 0x4a, 0xc3, 0x6e, 0x95, 0xe4, 0x3f, 0x9c, + 0x01, 0x8d, 0x31, 0x4a, 0xe6, 0x3e, 0x7d, 0x50, 0x37, 0xe0, 0x9f, 0x43, 0x4d, 0xfd, 0x55, 0x38, 0xfb, 0xdf, 0xaa, + 0x9a, 0xbe, 0xc2, 0x0e, 0xfe, 0x80, 0xff, 0xb9, 0x94, 0x4e, 0xe8, 0x46, 0x01, 0x17, 0xef, 0xb5, 0x8b, 0x3c, 0x69, + 0x1a, 0xf4, 0x81, 0x7c, 0x55, 0x57, 0x3d, 0x21, 0xde, 0x57, 0xdb, 0x50, 0x9e, 0x88, 0xfc, 0xfd, 0x7c, 0xf6, 0x4f, + 0x97, 0xc0, 0x83, 0x09, 0x40, 0xbc, 0xf5, 0x3f, 0xfe, 0x71, 0x3c, 0xe3, 0x1b, 0x2e, 0xf5, 0x4e, 0xb7, 0xda, 0x4e, + 0xe0, 0x99, 0xb9, 0x30, 0x3f, 0x19, 0x61, 0x5b, 0xb5, 0x47, 0x88, 0x81, 0x65, 0x14, 0xa2, 0xd5, 0x00, 0x09, 0x0c, + 0xbb, 0x3b, 0xcb, 0xf9, 0x94, 0x92, 0xa9, 0xee, 0x64, 0x6f, 0xa6, 0x7a, 0x01, 0x25, 0x57, 0x6b, 0x6d, 0xd3, 0xae, + 0x70, 0x42, 0x71, 0xaa, 0xd5, 0xe2, 0x73, 0xcf, 0x6f, 0xfe, 0xa7, 0xa3, 0x4d, 0x90, 0x29, 0xf1, 0xf0, 0xed, 0xb0, + 0x32, 0x19, 0x5b, 0x73, 0xdb, 0x09, 0x26, 0x86, 0x6e, 0xe0, 0xbf, 0x91, 0xad, 0x31, 0x01, 0xf1, 0x5e, 0x56, 0xab, + 0xac, 0xbf, 0x67, 0x44, 0x27, 0xf5, 0x06, 0x12, 0x03, 0x23, 0x50, 0x9c, 0x05, 0xf8, 0x31, 0x71, 0xce, 0xc2, 0x7f, + 0x01, 0x1c, 0x73, 0x4c, 0x94, 0x35, 0xdc, 0xe9, 0x78, 0x30, 0x3f, 0xb9, 0xfa, 0xe7, 0x86, 0xab, 0xab, 0x2b, 0x85, + 0xff, 0xe3, 0xde, 0xc7, 0x69, 0x25, 0xe7, 0xf0, 0x2d, 0xf7, 0x50, 0xf6, 0x6c, 0x5c, 0x39, 0x22, 0xaf, 0xa0, 0xa9, + 0x53, 0x22, 0xad, 0x88, 0xac, 0xf1, 0xe1, 0xdd, 0x1e, 0xf3, 0xbe, 0xe5, 0x40, 0x57, 0x71, 0xfd, 0xa1, 0x36, 0xca, + 0x0b, 0xfc, 0x53, 0xc5, 0xc3, 0x36, 0xba, 0x70, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, + 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, + 0xc3, 0x19, 0x42, 0x7c, 0xd5, 0x3d, 0xe8, 0x9c, 0x2c, 0x3c, 0x2f, 0xa1, 0x9f, 0x84, 0x4d, 0xc7, 0x9d, 0x6d, 0x6c, + 0x98, 0x40, 0xa2, 0x1f, 0xf5, 0xc8, 0x06, 0xc9, 0x42, 0x3e, 0xd6, 0x59, 0x75, 0xaa, 0x49, 0x23, 0x78, 0x55, 0x12, + 0xfc, 0x61, 0xb8, 0x0d, 0x12, 0x8b, 0xec, 0x6e, 0xa9, 0x10, 0x78, 0x4d, 0x80, 0x26, 0xb0, 0x5f, 0x9b, 0x97, 0xed, + 0x3c, 0xd1, 0x16, 0x74, 0xf7, 0x1f, 0x58, 0x8d, 0x0f, 0xe0, 0x61, 0x2b, 0x52, 0xc7, 0x18, 0x8b, 0x6c, 0xe4, 0xa9, + 0x81, 0x43, 0xa9, 0xe1, 0xa2, 0x82, 0x5b, 0x42, 0xb0, 0xff, 0xad, 0x21, 0x34, 0xa4, 0x8a, 0xf2, 0xbd, 0xcd, 0x49, + 0x7f, 0x93, 0x5f, 0xea, 0xaa, 0x38, 0x6f, 0x32, 0x61, 0x68, 0xdd, 0xbd, 0x48, 0x1c, 0x4f, 0x23, 0x7d, 0x8a, 0xed, + 0x59, 0xa2, 0xb9, 0x19, 0xe9, 0xca, 0x30, 0x12, 0x18, 0xaa, 0x69, 0x7c, 0x02, 0x30, 0x47, 0x29, 0xaf, 0x08, 0x6a, + 0x29, 0x68, 0x6c, 0x43, 0x35, 0x7b, 0xe9, 0x2d, 0xc6, 0x7a, 0x9c, 0xbb, 0x46, 0x08, 0xb8, 0xaf, 0x3f, 0x00, 0xcc, + 0x35, 0x15, 0xd2, 0x4c, 0xe8, 0x78, 0x6b, 0xd9, 0x1a, 0x29, 0x65, 0xfd, 0xb7, 0x21, 0x91, 0xba, 0x74, 0x0e, 0x19, + 0xc1, 0xb3, 0x1e, 0xfc, 0x04, 0xfc, 0xa9, 0x4d, 0x00, 0xf1, 0xa4, 0xfb, 0x00, 0xff, 0xe1, 0xe5, 0x5e, 0xa0, 0xf2, + 0x42, 0x8d, 0x58, 0x41, 0xc8, 0x7e, 0xac, 0xbf, 0xf7, 0xc1, 0x11, 0xce, 0xb0, 0xe4, 0xc6, 0xa6, 0x6d, 0x9c, 0x85, + 0xb3, 0x0e, 0xed, 0x16, 0x7d, 0x23, 0xf7, 0x93, 0xaf, 0x6b, 0x82, 0xc9, 0x8c, 0x92, 0x68, 0x9a, 0x26, 0x9f, 0x47, + 0xe1, 0x5b, 0x0c, 0xf1, 0x44, 0x9e, 0x7c, 0x7b, 0xf0, 0x39, 0xcd, 0x65, 0xc4, 0xbf, 0x7f, 0x6f, 0x2d, 0x15, 0xc5, + 0xb1, 0x0f, 0xcb, 0x71, 0x1c, 0xe6, 0xde, 0x11, 0xcc, 0x98, 0x31, 0xdd, 0x3a, 0x40, 0x03, 0x0c, 0xf0, 0xc1, 0xfd, + 0xd8, 0x5b, 0x97, 0xef, 0xe8, 0xff, 0xc5, 0x15, 0xac, 0x03, 0xe4, 0x86, 0x0c, 0xc7, 0x5f, 0x80, 0xbd, 0xd0, 0xd6, + 0xd9, 0xa0, 0x97, 0x49, 0x5b, 0x05, 0x34, 0xeb, 0xf2, 0xb8, 0x44, 0xf8, 0x75, 0xd4, 0x72, 0x8f, 0x42, 0x15, 0x10, + 0x96, 0x12, 0x94, 0x46, 0x82, 0xab, 0xad, 0xae, 0xaa, 0x77, 0x66, 0xd5, 0xed, 0x12, 0xe0, 0x55, 0x5c, 0x1b, 0x4f, + 0xed, 0x93, 0xca, 0xfa, 0xc1, 0x1e, 0xf6, 0xd1, 0xfb, 0xdf, 0xd3, 0x21, 0x13, 0xe5, 0xec, 0x26, 0xa6, 0x91, 0xa1, + 0x43, 0x11, 0xa5, 0xd4, 0x6f, 0x49, 0x77, 0x0e, 0x81, 0xf7, 0xb3, 0x18, 0x36, 0x5e, 0xa0, 0x2c, 0x4b, 0x1a, 0xb5, + 0x71, 0xd5, 0x96, 0x4e, 0x6d, 0x87, 0xd4, 0x7d, 0xe6, 0xb6, 0x9c, 0xce, 0x6c, 0xd0, 0xed, 0xec, 0x8b, 0xd1, 0xb8, + 0xde, 0x87, 0xf1, 0x48, 0x10, 0x23, 0x74, 0x36, 0x0a, 0x93, 0x5e, 0x9a, 0x0e, 0x2b, 0xd3, 0x98, 0x8c, 0x27, 0x5d, + 0x36, 0x48, 0xdb, 0x93, 0xf4, 0x79, 0x0b, 0xaf, 0x93, 0xe1, 0xe1, 0x19, 0x78, 0x61, 0x05, 0xaf, 0x68, 0x4f, 0x09, + 0x57, 0x79, 0x23, 0x23, 0x8b, 0xbe, 0x59, 0x65, 0x0b, 0xc6, 0x17, 0x8e, 0x2f, 0x2e, 0x60, 0x83, 0x69, 0xf8, 0xa5, + 0x7a, 0xb4, 0xa0, 0x68, 0xb3, 0x45, 0x8e, 0x84, 0x22, 0xd8, 0x97, 0xd5, 0x5b, 0x4f, 0xd0, 0xc6, 0x5a, 0x5a, 0x25, + 0xd3, 0xf7, 0xa7, 0xfc, 0x16, 0x0c, 0x9c, 0x0c, 0xdf, 0xda, 0xb6, 0xcf, 0x90, 0xb8, 0x9e, 0x7b, 0x2e, 0xee, 0x1f, + 0xfe, 0x2a, 0xec, 0x83, 0x0f, 0xa1, 0x01, 0x37, 0xe4, 0x6b, 0x74, 0xdd, 0xad, 0xcf, 0xb0, 0x8a, 0x30, 0xd6, 0xf6, + 0xa5, 0xbb, 0x37, 0xaa, 0xd2, 0xf3, 0xba, 0x70, 0x54, 0x4f, 0xbb, 0xca, 0xa1, 0xde, 0x31, 0xd1, 0xca, 0x2f, 0xb1, + 0x3a, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, + 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xa4, 0xe1, 0x0f, 0x62, 0x21, + 0x54, 0xe8, 0x68, 0x13, 0xa8, 0x2f, 0x9c, 0x60, 0xe9, 0xc3, 0xf6, 0x69, 0x2e, 0xa0, 0xb5, 0xf1, 0x5d, 0x38, 0x4c, + 0x1c, 0xd0, 0xe9, 0xcb, 0xc0, 0xb1, 0x7e, 0x1f, 0x98, 0x40, 0x5b, 0x1d, 0xd4, 0x9b, 0xf6, 0x4d, 0xc1, 0xf5, 0x04, + 0x5d, 0x59, 0xf8, 0x7f, 0xc0, 0x7a, 0xd8, 0x8e, 0xff, 0x1c, 0xcb, 0x64, 0xae, 0xb3, 0x94, 0x80, 0x90, 0x59, 0x2c, + 0x7b, 0x08, 0x90, 0xc3, 0xee, 0xb5, 0xda, 0x9a, 0x0f, 0x9a, 0xb8, 0x39, 0x2d, 0xa0, 0x06, 0x5b, 0x8c, 0x26, 0x23, + 0x3b, 0xf9, 0x24, 0x4a, 0x1b, 0x7f, 0x5e, 0x21, 0xb0, 0x63, 0xb9, 0x9e, 0xf4, 0xda, 0x56, 0xb9, 0xd7, 0x12, 0x99, + 0xd8, 0x9d, 0x7d, 0x4f, 0x91, 0x0b, 0xf6, 0x7a, 0x07, 0xf4, 0xce, 0xb4, 0x50, 0x11, 0x03, 0xdf, 0x6c, 0xe1, 0x86, + 0x3a, 0x95, 0x92, 0x68, 0x59, 0xb3, 0x7e, 0x4f, 0x22, 0x48, 0x74, 0x2e, 0xa5, 0x86, 0xda, 0x32, 0x9b, 0xfd, 0xb2, + 0xb4, 0xd6, 0xc1, 0x6a, 0x7c, 0xe8, 0xa5, 0xdb, 0x9f, 0xa0, 0x26, 0x37, 0x5c, 0xa4, 0xbf, 0x66, 0x37, 0x02, 0x5c, + 0x09, 0xf7, 0x59, 0xa9, 0x79, 0xdc, 0x92, 0x84, 0x59, 0xf3, 0x83, 0xd0, 0x8e, 0x06, 0xb4, 0x69, 0xc0, 0xba, 0x25, + 0x29, 0xb5, 0x23, 0x71, 0x92, 0x8c, 0xef, 0xff, 0x53, 0x6d, 0x0b, 0x8c, 0x61, 0xac, 0x28, 0x2d, 0xe5, 0xaa, 0xea, + 0x4f, 0xdd, 0x5d, 0x17, 0x8b, 0xcb, 0x94, 0xf9, 0xa2, 0x01, 0x0e, 0x4b, 0xbb, 0x59, 0x25, 0x22, 0x43, 0xc9, 0x36, + 0x04, 0xc0, 0x0e, 0xd8, 0xf9, 0x65, 0xf7, 0x2e, 0xe8, 0x1c, 0x51, 0x2c, 0xc9, 0xea, 0x6d, 0x74, 0xee, 0x89, 0xe5, + 0x84, 0x72, 0x3e, 0x1f, 0xa0, 0x62, 0x8d, 0x7c, 0xd1, 0xf4, 0xf0, 0xb1, 0xc3, 0x41, 0x5d, 0x16, 0xe8, 0x49, 0x09, + 0x99, 0xe6, 0xb3, 0x52, 0x2a, 0x72, 0xda, 0x81, 0x38, 0xa6, 0x31, 0xbe, 0xee, 0x52, 0xd4, 0x12, 0xe2, 0x00, 0xd3, + 0x7c, 0x54, 0xec, 0x79, 0x9a, 0x32, 0x0f, 0xad, 0x33, 0x4e, 0x0f, 0x77, 0x02, 0x8b, 0x30, 0x5a, 0x0a, 0x81, 0x2b, + 0x00, 0x4a, 0x39, 0xba, 0x55, 0xb3, 0xbc, 0x76, 0x7e, 0xc2, 0x34, 0xf9, 0x2b, 0x73, 0xd8, 0x44, 0xb3, 0x9d, 0xd6, + 0x59, 0x99, 0xc1, 0x28, 0xc1, 0xda, 0x46, 0x12, 0x05, 0x9b, 0x1f, 0xc4, 0x6e, 0xba, 0x7a, 0xbd, 0xd6, 0x6d, 0x9a, + 0xcb, 0x71, 0xb9, 0x6e, 0xfe, 0x9c, 0x4b, 0x57, 0x06, 0xb7, 0xa2, 0xab, 0x83, 0xe0, 0xc2, 0x56, 0x0b, 0xda, 0xb4, + 0x58, 0xec, 0x80, 0x4f, 0x50, 0xa7, 0x8e, 0x48, 0x91, 0x0a, 0xb7, 0x02, 0x8c, 0x18, 0x3d, 0xec, 0xc1, 0xa1, 0x7b, + 0x85, 0x8a, 0x41, 0x43, 0x01, 0x9d, 0x65, 0x71, 0x67, 0xea, 0x0b, 0x55, 0x21, 0x1e, 0x90, 0x6c, 0xad, 0x39, 0x7e, + 0x55, 0x79, 0x83, 0x1d, 0x07, 0x5b, 0x9b, 0x40, 0xee, 0x16, 0x4a, 0x8b, 0xbd, 0xde, 0x40, 0x5e, 0xc2, 0x5a, 0xe7, + 0x38, 0x3d, 0x66, 0x8a, 0xa1, 0xa1, 0x34, 0xa5, 0xf6, 0x2f, 0xcd, 0x03, 0xb0, 0x5e, 0x97, 0x5d, 0x58, 0xd1, 0x85, + 0xcc, 0xe4, 0x08, 0x3f, 0xc4, 0xec, 0x09, 0x01, 0x99, 0x2c, 0x9c, 0x96, 0x31, 0x11, 0x5c, 0x2f, 0x3a, 0x3d, 0x41, + 0x9c, 0x47, 0x25, 0xb8, 0xe3, 0x43, 0xd8, 0xe3, 0xfe, 0x0d, 0x5e, 0x09, 0xef, 0xce, 0x39, 0xa0, 0xb3, 0x95, 0x5b, + 0xfd, 0x93, 0x7a, 0x88, 0x99, 0x70, 0xe9, 0xaf, 0xfb, 0x5e, 0xa5, 0x68, 0x4b, 0x6e, 0x5b, 0xdf, 0x28, 0x2f, 0x26, + 0x35, 0xc5, 0x3b, 0xe7, 0x57, 0x8d, 0xf8, 0x8e, 0xad, 0x7a, 0x81, 0xf7, 0x2f, 0x56, 0x89, 0xbd, 0x09, 0x33, 0x03, + 0xbc, 0x00, 0x63, 0xd3, 0xdb, 0x6d, 0xb4, 0x8b, 0xad, 0x13, 0xf7, 0xac, 0x41, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, + 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, + 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xa1, 0xf5, 0xb0, 0x0e, 0xd2, 0x52, 0x11, 0xb3, 0xf4, 0x81, 0xe0, 0x28, + 0x69, 0xb9, 0xdf, 0xad, 0x40, 0x3e, 0xe9, 0xb2, 0xbd, 0x5f, 0x82, 0x26, 0x4e, 0xe5, 0xdb, 0x43, 0x20, 0x08, 0xd3, + 0x0e, 0x40, 0x10, 0x1b, 0x82, 0xab, 0x0b, 0x18, 0xa3, 0xd5, 0xd7, 0x00, 0x29, 0x46, 0x7d, 0x38, 0x33, 0x83, 0x35, + 0x2f, 0xb2, 0x02, 0x4e, 0x84, 0xf7, 0x07, 0x7b, 0x4f, 0x4b, 0x0f, 0xef, 0x5f, 0x5e, 0x8b, 0x97, 0x36, 0xab, 0x82, + 0x86, 0x4e, 0xf9, 0x99, 0x5a, 0xc7, 0x93, 0xde, 0xe3, 0x5f, 0xb8, 0x38, 0x10, 0x1f, 0x9e, 0xec, 0x8d, 0x8a, 0x81, + 0xd2, 0x4a, 0xe4, 0xfe, 0x16, 0x9c, 0xc0, 0x09, 0xfc, 0x9c, 0xf3, 0x93, 0xf2, 0x7c, 0x3c, 0x49, 0x65, 0x84, 0xe8, + 0xb1, 0xe7, 0xe8, 0x42, 0x8e, 0x36, 0xce, 0x51, 0xb6, 0xcf, 0x33, 0x7e, 0x41, 0x60, 0xf3, 0x2e, 0x40, 0x94, 0x52, + 0xc2, 0x53, 0xc9, 0x99, 0x32, 0x35, 0xfc, 0xed, 0x11, 0x79, 0xbc, 0xdc, 0x68, 0x63, 0x58, 0xb8, 0xd9, 0x06, 0x2a, + 0x06, 0x9f, 0xd4, 0x1e, 0x7d, 0xbd, 0x59, 0xfe, 0x56, 0x07, 0x49, 0x30, 0xc4, 0x42, 0x58, 0x7f, 0x46, 0x72, 0xb0, + 0x00, 0x6e, 0xf7, 0xd8, 0xa6, 0xb5, 0x59, 0x5a, 0x40, 0xfc, 0xe7, 0x86, 0xcf, 0x4c, 0xed, 0x36, 0xf2, 0x37, 0x78, + 0xab, 0x63, 0x92, 0x10, 0x84, 0x80, 0xe7, 0x75, 0x22, 0x73, 0xa2, 0x9f, 0x31, 0x75, 0xb4, 0x6a, 0xfd, 0x0d, 0xb1, + 0x09, 0x8b, 0xa4, 0xc2, 0x74, 0xf1, 0xee, 0x48, 0x47, 0xac, 0x28, 0xe9, 0x62, 0x77, 0x7e, 0x21, 0x31, 0x1d, 0x6b, + 0xd4, 0x5e, 0x52, 0x7d, 0xfe, 0x90, 0x68, 0xd8, 0x54, 0x90, 0xa3, 0x3f, 0x01, 0x96, 0x5c, 0x72, 0x93, 0x00, 0xf8, + 0xf6, 0xea, 0x08, 0xd2, 0xc1, 0x0f, 0xcd, 0xbe, 0xb5, 0x23, 0xd8, 0x7a, 0xec, 0x41, 0xbf, 0x16, 0xb5, 0x50, 0xfd, + 0x82, 0xf2, 0x21, 0x18, 0x9d, 0x15, 0x90, 0x47, 0xf8, 0x8d, 0xa8, 0x77, 0x90, 0x9c, 0x19, 0xcc, 0xf6, 0xdf, 0x77, + 0x11, 0x27, 0xd0, 0x53, 0x1a, 0xd2, 0xef, 0x6b, 0xae, 0x0e, 0x59, 0x30, 0x54, 0x4f, 0x47, 0xed, 0x62, 0x89, 0x9e, + 0x8b, 0xfb, 0x97, 0x94, 0x6b, 0xab, 0xb4, 0x47, 0xc8, 0xd5, 0xb6, 0xb1, 0xdd, 0x32, 0x13, 0x7d, 0x12, 0xa3, 0xce, + 0xb5, 0x74, 0x80, 0x3c, 0xff, 0x12, 0x02, 0x71, 0x98, 0x4b, 0x15, 0x03, 0x0e, 0xa0, 0xa1, 0x83, 0xd9, 0x6d, 0x8c, + 0x44, 0xf9, 0x4a, 0xb5, 0xbc, 0x6e, 0x90, 0xe0, 0x76, 0xde, 0x5a, 0xc8, 0x77, 0x77, 0x14, 0xf2, 0x6f, 0xc6, 0x81, + 0xb4, 0xbc, 0xcf, 0x84, 0xd9, 0x62, 0xec, 0x48, 0xa5, 0xaf, 0xbd, 0xb9, 0x43, 0x77, 0xb5, 0x97, 0x68, 0xe1, 0x23, + 0xfc, 0xbd, 0x8f, 0x8f, 0xd5, 0xc1, 0xf0, 0x3f, 0x15, 0xe4, 0x14, 0x31, 0x01, 0xa1, 0x68, 0x9d, 0x41, 0xd5, 0x96, + 0x2e, 0x4d, 0x09, 0xc3, 0x24, 0x1d, 0x55, 0x7d, 0x11, 0x73, 0x4d, 0x06, 0x8d, 0x02, 0x30, 0xb2, 0xbf, 0xe4, 0x8f, + 0x18, 0xf7, 0x2a, 0x99, 0x2a, 0x0b, 0xf5, 0x33, 0x50, 0x6a, 0xdc, 0x3a, 0x9a, 0x7a, 0x5a, 0xb0, 0x95, 0xc7, 0xa1, + 0x61, 0x12, 0xcb, 0x27, 0x27, 0xf0, 0x13, 0x7c, 0xd5, 0x0f, 0x29, 0x5b, 0xe6, 0x83, 0x50, 0x4d, 0xb2, 0x10, 0x6a, + 0xd5, 0x40, 0x8b, 0x43, 0x93, 0x13, 0x84, 0xcd, 0x14, 0x6c, 0xb6, 0x45, 0x4b, 0x8d, 0xd3, 0x01, 0x3a, 0x01, 0x2f, + 0x2f, 0x87, 0x11, 0xc2, 0xdd, 0x6a, 0xbd, 0x51, 0xd3, 0xc8, 0x39, 0x62, 0xbd, 0xd4, 0x29, 0x1d, 0x1b, 0xe8, 0x99, + 0x7b, 0xfd, 0xc1, 0x2c, 0x75, 0x43, 0xa6, 0x64, 0xba, 0x23, 0x9a, 0x88, 0x0b, 0xcb, 0xcb, 0xd8, 0xda, 0xf8, 0x90, + 0x98, 0x82, 0x29, 0x8d, 0x04, 0x03, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, + 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, + 0xf7, 0x1e, 0x22, 0xd2, 0x5c, 0xc2, 0xbe, 0x43, 0x03, 0x89, 0x6a, 0x37, 0x78, 0x17, 0x39, 0xb5, 0x6d, 0xae, 0x89, + 0x61, 0x4e, 0x4c, 0x28, 0xcb, 0x90, 0xc4, 0x54, 0xd8, 0xa4, 0x5e, 0x4f, 0x4c, 0x7c, 0x93, 0x9b, 0xb1, 0x94, 0x3f, + 0x4b, 0x77, 0x0b, 0x01, 0xfd, 0x7a, 0xe6, 0xe8, 0x73, 0x26, 0x28, 0x57, 0x7f, 0x72, 0xb5, 0x72, 0xc8, 0x09, 0x2a, + 0x05, 0xcb, 0x4f, 0x55, 0xf9, 0x51, 0x06, 0xb1, 0x10, 0xf3, 0xa1, 0xed, 0xe9, 0x36, 0xc5, 0x46, 0x43, 0x39, 0xa4, + 0xf6, 0x1e, 0x10, 0x52, 0x66, 0x26, 0x65, 0x0a, 0xee, 0xf6, 0x94, 0x2e, 0x6b, 0x33, 0x19, 0x45, 0x01, 0xfc, 0xae, + 0x47, 0x2a, 0xeb, 0x7e, 0xb9, 0xf9, 0xf5, 0x96, 0xf0, 0xfc, 0x56, 0x66, 0xc4, 0x35, 0x15, 0x00, 0xb0, 0x10, 0x0c, + 0x34, 0xba, 0x47, 0xe7, 0xd6, 0x59, 0x15, 0xdd, 0x0b, 0x71, 0x88, 0x28, 0xbc, 0x10, 0xb0, 0x0e, 0x16, 0x8c, 0x9f, + 0x69, 0xd7, 0x16, 0xaa, 0xa8, 0xb0, 0xe8, 0xa0, 0xfa, 0x59, 0xfc, 0x67, 0x4e, 0x4f, 0x61, 0x79, 0xb3, 0xf9, 0xc8, + 0x38, 0x19, 0x8f, 0xbf, 0x9e, 0x15, 0x24, 0x56, 0xe8, 0x56, 0x77, 0x1e, 0x4b, 0x10, 0x72, 0x37, 0x8d, 0xa6, 0x70, + 0xad, 0xcd, 0xb5, 0xf1, 0xcd, 0xf3, 0xbb, 0x7c, 0x6d, 0x28, 0x50, 0x62, 0x8a, 0xcf, 0xb6, 0xf7, 0x3b, 0x40, 0x13, + 0xe6, 0x15, 0x4b, 0x39, 0xb3, 0x0c, 0x19, 0x5d, 0x36, 0x45, 0x9c, 0xef, 0xe6, 0xdd, 0xf8, 0x06, 0xc7, 0x9a, 0x32, + 0xea, 0xfb, 0x0e, 0x6b, 0x98, 0x0a, 0x0b, 0x3b, 0xbe, 0xd9, 0xab, 0xf5, 0x2d, 0x65, 0x0e, 0x98, 0x49, 0x6f, 0xcb, + 0xbd, 0xf8, 0x6d, 0x8e, 0xb8, 0x39, 0xd5, 0xaa, 0x8d, 0x0c, 0xb8, 0x33, 0x08, 0x62, 0x3f, 0x1d, 0xc4, 0x6d, 0xcf, + 0xdf, 0xf4, 0x63, 0xe2, 0x61, 0xb9, 0x36, 0x57, 0x2f, 0x82, 0x72, 0x51, 0x77, 0xd6, 0xec, 0xd7, 0x94, 0x65, 0x5c, + 0x08, 0x05, 0x78, 0xb3, 0xc2, 0xe5, 0xa3, 0x85, 0x14, 0xd8, 0xf4, 0xa2, 0x1b, 0x35, 0xf9, 0x87, 0xdb, 0xbb, 0xab, + 0x8b, 0x3c, 0x33, 0x76, 0xe7, 0x74, 0x2e, 0x7a, 0xc4, 0xe5, 0x5f, 0x08, 0xc3, 0x2d, 0x9b, 0x2c, 0x19, 0x10, 0x09, + 0xef, 0x0b, 0x22, 0xe7, 0x89, 0x70, 0xc3, 0xdd, 0x3e, 0xc0, 0xbf, 0x7e, 0x94, 0xf9, 0xce, 0x1a, 0x50, 0x0c, 0x9b, + 0x10, 0x6e, 0x0c, 0x9c, 0x3c, 0x3d, 0xc6, 0x4d, 0x7e, 0xf9, 0xff, 0x78, 0x36, 0xe4, 0x32, 0xc3, 0x90, 0x68, 0x6c, + 0x5c, 0x6f, 0x15, 0x9f, 0x1b, 0x34, 0x28, 0x9a, 0x60, 0x46, 0x27, 0x7c, 0x6e, 0xdf, 0x7e, 0xb1, 0xcd, 0x75, 0x04, + 0x61, 0x05, 0x38, 0x4a, 0x51, 0xf2, 0xbf, 0xbf, 0xc4, 0x23, 0x39, 0xef, 0x61, 0x34, 0x8f, 0xf8, 0xfb, 0xfa, 0x9b, + 0x7b, 0x57, 0xd4, 0x00, 0x81, 0xcb, 0x37, 0x95, 0x43, 0xd5, 0x32, 0xdf, 0x1c, 0xe8, 0xf6, 0xa6, 0xbf, 0x3d, 0x43, + 0x77, 0x6b, 0x5a, 0x9c, 0x1b, 0xc3, 0xde, 0x55, 0x93, 0x4c, 0x50, 0x48, 0xc7, 0xf1, 0x6f, 0x3b, 0x0b, 0x31, 0x9e, + 0xde, 0x29, 0x69, 0x08, 0xb4, 0x1a, 0x28, 0x34, 0xf3, 0x78, 0x4f, 0x47, 0x7e, 0xe8, 0xdb, 0x61, 0x02, 0xec, 0x1f, + 0x73, 0xd0, 0x8f, 0xc7, 0x60, 0xc3, 0xc5, 0x5a, 0xc8, 0x1d, 0x5c, 0x4a, 0x89, 0xda, 0xd3, 0xb0, 0xfd, 0x53, 0x2f, + 0x86, 0x83, 0xc5, 0x4a, 0x27, 0xa2, 0xea, 0x98, 0xe5, 0x24, 0x22, 0x35, 0x4b, 0x93, 0x39, 0x2b, 0x0e, 0x4e, 0x54, + 0x31, 0x77, 0x56, 0x77, 0x6e, 0xe6, 0xf8, 0xe2, 0x40, 0xac, 0xd7, 0x7d, 0x3d, 0x6b, 0x6a, 0xd4, 0x18, 0x43, 0x82, + 0xbd, 0xd5, 0x94, 0xd7, 0x97, 0x86, 0x67, 0x4f, 0xd1, 0xe2, 0x4c, 0xbd, 0xbe, 0x91, 0x5f, 0xa7, 0x11, 0x18, 0xab, + 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, + 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xb2, 0x38, 0xd3, 0x28, 0xe2, 0xd4, 0xd0, + 0x96, 0x8a, 0xa7, 0x2f, 0xa5, 0xe5, 0x72, 0x34, 0x1b, 0x39, 0x61, 0x57, 0x83, 0xf3, 0x1d, 0x9f, 0x3e, 0x31, 0x8a, + 0xa3, 0x10, 0xc8, 0x8d, 0x25, 0x37, 0x26, 0xec, 0xdb, 0x6b, 0x9d, 0xf6, 0x79, 0xf5, 0xf0, 0x34, 0xa4, 0xba, 0xf3, + 0xcd, 0xc2, 0x6d, 0x86, 0xe5, 0x44, 0x1d, 0xba, 0xca, 0xce, 0xa5, 0xa3, 0xf0, 0x16, 0x52, 0x49, 0x96, 0x7a, 0x56, + 0x95, 0xb0, 0x70, 0xf8, 0xc1, 0x7f, 0xce, 0xbc, 0x84, 0x2e, 0xc3, 0x96, 0x1c, 0x56, 0xa1, 0xf3, 0x73, 0xd6, 0xeb, + 0x86, 0xb8, 0x7a, 0xb7, 0xbf, 0xa5, 0x11, 0x52, 0x21, 0xc8, 0x5d, 0xc1, 0x5d, 0xc9, 0x50, 0xdd, 0xa1, 0xb7, 0xa8, + 0x3a, 0xf2, 0x9f, 0x21, 0x38, 0x14, 0xc7, 0xcb, 0x2b, 0xd7, 0x51, 0xb8, 0x4d, 0xba, 0xf1, 0x7b, 0x6f, 0xab, 0xf8, + 0x8d, 0x48, 0x53, 0x7a, 0xad, 0xe1, 0x3e, 0x24, 0xca, 0x30, 0xb4, 0xea, 0xef, 0xa5, 0x2b, 0x9d, 0xfd, 0x8e, 0x27, + 0x62, 0xaf, 0x74, 0xf0, 0x9e, 0x30, 0x1e, 0xd4, 0x2d, 0x85, 0x06, 0xd5, 0xc2, 0xf7, 0x56, 0x77, 0xea, 0x8c, 0xc4, + 0x38, 0xff, 0x5a, 0xc9, 0x6d, 0x56, 0x02, 0xaf, 0xc9, 0xe2, 0xc9, 0x6e, 0xc4, 0x01, 0x67, 0xd6, 0x4a, 0x74, 0x64, + 0xc4, 0x74, 0x4f, 0x37, 0x09, 0x1d, 0xe9, 0x30, 0xb8, 0xd7, 0xf3, 0x37, 0xc7, 0x33, 0x02, 0x69, 0x1d, 0xd6, 0x24, + 0x0e, 0xe1, 0x8a, 0x95, 0xc2, 0xc8, 0x73, 0xa2, 0xd2, 0x19, 0xc9, 0x4d, 0x5c, 0xf4, 0xe7, 0x52, 0x08, 0xaf, 0xd7, + 0xab, 0x52, 0x28, 0x5b, 0x01, 0xec, 0x80, 0x1f, 0x22, 0x1f, 0x3d, 0x78, 0x93, 0xb0, 0x6a, 0x17, 0x6d, 0xfd, 0x73, + 0x3d, 0x26, 0xf5, 0x57, 0x2d, 0x6b, 0xe3, 0xa1, 0x7b, 0xd3, 0x3f, 0x5f, 0x5f, 0xf0, 0xea, 0x71, 0x78, 0x3d, 0xfb, + 0xf4, 0x39, 0x59, 0xe6, 0xb7, 0x1a, 0x82, 0xf1, 0xc7, 0x46, 0xe2, 0x3a, 0xe0, 0x92, 0x53, 0xea, 0x2c, 0x98, 0x55, + 0x29, 0x9d, 0x51, 0x07, 0x95, 0xbf, 0x00, 0x6c, 0xf4, 0x30, 0x16, 0x1e, 0xdf, 0x14, 0x1f, 0x92, 0xd8, 0xc2, 0xb4, + 0xbf, 0xe8, 0x04, 0xe3, 0xd8, 0x1e, 0x78, 0xb5, 0xd3, 0x61, 0xe0, 0xd5, 0x63, 0x0e, 0x82, 0x59, 0xea, 0x8b, 0x83, + 0x35, 0x57, 0xc0, 0x55, 0xef, 0x00, 0x2e, 0x9c, 0x6d, 0x1d, 0xac, 0x9b, 0xbf, 0x8d, 0x29, 0x03, 0xa0, 0x13, 0xc8, + 0x81, 0x69, 0x22, 0xd6, 0x37, 0x13, 0xab, 0x6d, 0xb6, 0xee, 0xcc, 0x34, 0xff, 0xae, 0x4e, 0xbc, 0x2f, 0x48, 0x48, + 0x41, 0x8b, 0x5f, 0x8d, 0x0f, 0x76, 0x20, 0x51, 0x99, 0x17, 0xc8, 0xcd, 0x80, 0xe5, 0xd6, 0x50, 0xf2, 0x9e, 0x00, + 0xfe, 0x33, 0xb9, 0xd1, 0x5a, 0x8f, 0xb8, 0xbc, 0x7b, 0x3c, 0x6d, 0x2b, 0xe1, 0xaf, 0x1a, 0x73, 0xbe, 0x5f, 0xd0, + 0x37, 0xba, 0xe5, 0x66, 0x29, 0xc5, 0x4b, 0x0a, 0xb6, 0xb3, 0x7b, 0x57, 0x2b, 0xe4, 0x67, 0xa2, 0x91, 0xe1, 0xe3, + 0x52, 0xe6, 0x6b, 0x5c, 0x2c, 0x2f, 0xeb, 0x44, 0xdd, 0x42, 0xa9, 0x95, 0x24, 0x98, 0xe1, 0x55, 0xee, 0x66, 0xf9, + 0x3e, 0x82, 0x11, 0xfb, 0x74, 0xc1, 0x50, 0x65, 0x19, 0x79, 0x85, 0xe0, 0x95, 0xf0, 0xa3, 0x8a, 0x91, 0x3a, 0xa2, + 0xd7, 0x1f, 0xab, 0x11, 0x95, 0x7a, 0x30, 0xcc, 0x4a, 0xdc, 0x10, 0xd6, 0x55, 0xc2, 0x06, 0x86, 0x4e, 0xe2, 0xf3, + 0xee, 0xd3, 0x43, 0x84, 0xbf, 0xbb, 0x14, 0x73, 0xbe, 0x7e, 0x84, 0x1f, 0x64, 0xeb, 0xa7, 0xc5, 0x49, 0xfb, 0x43, + 0xa3, 0x5e, 0x4e, 0x86, 0xbb, 0xd4, 0x5a, 0x34, 0x99, 0x3f, 0xe8, 0xdb, 0x11, 0x9b, 0x5f, 0xe5, 0x6f, 0x90, 0x1b, + 0x35, 0x9b, 0x42, 0xa7, 0xa2, 0xe5, 0xed, 0x50, 0xda, 0x96, 0x30, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, + 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, + 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x20, 0xfd, 0x2e, 0xae, 0xed, 0x58, 0x0f, 0xf7, 0x36, 0x8f, 0x3d, 0x93, 0x48, 0xf2, + 0xb0, 0x40, 0x45, 0x75, 0xea, 0xf4, 0x28, 0xe5, 0x62, 0xbc, 0x03, 0x00, 0x57, 0xe2, 0xd0, 0xa8, 0x97, 0x45, 0x4b, + 0xcb, 0x63, 0x66, 0xcd, 0x4a, 0x00, 0x9a, 0x62, 0xb7, 0x69, 0xf8, 0x32, 0x28, 0x49, 0x3b, 0x28, 0x74, 0x48, 0xd7, + 0xef, 0xcd, 0xde, 0xcb, 0x02, 0x1b, 0x79, 0xd4, 0x80, 0xf0, 0xc8, 0x0b, 0xef, 0x09, 0xdd, 0xf9, 0x1d, 0x01, 0x7a, + 0x8c, 0x44, 0xa4, 0x27, 0xea, 0xfe, 0x64, 0x9c, 0xa5, 0xf3, 0x92, 0xad, 0x90, 0x4f, 0xd7, 0xf2, 0x7a, 0xa8, 0x2a, + 0x9b, 0xfb, 0xcf, 0xa5, 0x15, 0x4e, 0x93, 0x9e, 0x9a, 0xd9, 0x6f, 0x4f, 0xa2, 0xaa, 0x8e, 0x9a, 0x7c, 0x3c, 0xa6, + 0x51, 0x3a, 0xe8, 0xe4, 0xc3, 0x5a, 0x9c, 0xeb, 0x18, 0x20, 0x62, 0x67, 0x43, 0xff, 0x58, 0xdd, 0xa7, 0xb5, 0x20, + 0xb9, 0xc4, 0x78, 0x84, 0x8e, 0x68, 0xd1, 0x74, 0x13, 0xdd, 0xbc, 0x10, 0x37, 0x72, 0x7b, 0xce, 0xfa, 0x5d, 0x4c, + 0x7b, 0xc5, 0x5b, 0x93, 0x60, 0xd8, 0x14, 0x65, 0x78, 0x07, 0x9a, 0xbc, 0x13, 0x50, 0xec, 0xa0, 0x3d, 0x1c, 0x7b, + 0xe0, 0x3f, 0x93, 0xca, 0xcf, 0x47, 0xd5, 0x82, 0xd6, 0xae, 0xae, 0x8b, 0x40, 0x1e, 0xf9, 0xf6, 0x29, 0x48, 0x2d, + 0x3a, 0x0a, 0x2a, 0xbe, 0xcc, 0x6c, 0x03, 0x1c, 0x3b, 0x02, 0x1e, 0x67, 0x9d, 0x06, 0x51, 0x99, 0x38, 0x1f, 0x24, + 0x53, 0xfb, 0xf9, 0x70, 0xf6, 0xfd, 0xbe, 0x85, 0x6d, 0x1b, 0x85, 0x16, 0x5f, 0xaf, 0xd1, 0xe3, 0x4e, 0xf8, 0x73, + 0x4b, 0x9a, 0xc1, 0xdc, 0x97, 0x48, 0x98, 0xbd, 0x4a, 0x56, 0x17, 0x18, 0x82, 0x5d, 0x9a, 0x70, 0xa8, 0xc6, 0xca, + 0x6c, 0xab, 0xec, 0x7c, 0x8d, 0xe4, 0xc4, 0x61, 0x5b, 0x08, 0x62, 0xf6, 0x91, 0x71, 0xa6, 0x95, 0xf6, 0xb5, 0x6c, + 0x95, 0xb3, 0x4c, 0xb5, 0xe5, 0x4e, 0xbb, 0x04, 0xc8, 0xb6, 0x18, 0xb7, 0xaf, 0xeb, 0x18, 0x83, 0x9a, 0xfc, 0x65, + 0x33, 0x50, 0x4e, 0xa6, 0xc8, 0xc1, 0xab, 0x73, 0x0f, 0x89, 0x29, 0x50, 0x5c, 0x91, 0x6b, 0x55, 0x4b, 0x39, 0x74, + 0xff, 0x86, 0x45, 0xaf, 0xc1, 0x47, 0x06, 0xab, 0xed, 0x3f, 0x52, 0xa0, 0x65, 0x39, 0xab, 0x95, 0xaa, 0xfc, 0x38, + 0xae, 0x3f, 0x10, 0xd5, 0xed, 0xac, 0xd7, 0x11, 0xd0, 0x7f, 0x09, 0xef, 0xd3, 0x88, 0x82, 0x04, 0x01, 0x11, 0xbb, + 0xdb, 0xf3, 0x76, 0xe8, 0xd9, 0xcd, 0x1f, 0x96, 0x9d, 0x02, 0x99, 0xdd, 0x3d, 0x98, 0x47, 0x42, 0x06, 0x38, 0x26, + 0x3d, 0x47, 0x0b, 0x7f, 0x99, 0x7c, 0x30, 0x24, 0x01, 0x1a, 0x21, 0xb7, 0xe1, 0x6a, 0x4f, 0xc9, 0x3a, 0x20, 0xf2, + 0xb1, 0x6a, 0xd5, 0x10, 0x0f, 0x78, 0x05, 0xd0, 0x24, 0x15, 0x39, 0xe9, 0x8d, 0x8a, 0x6f, 0x2a, 0xa2, 0x81, 0xc2, + 0xbf, 0x36, 0x32, 0x2a, 0x2f, 0xff, 0x2b, 0x6a, 0x22, 0xd0, 0x28, 0x80, 0xb4, 0xa7, 0xfc, 0xd8, 0xcb, 0x80, 0xc1, + 0xc9, 0xf0, 0x64, 0x5c, 0x9f, 0x2a, 0x49, 0x17, 0xf6, 0xd3, 0xe5, 0xf2, 0x61, 0xf1, 0x78, 0x6b, 0xf3, 0x23, 0x28, + 0xdc, 0x98, 0xb5, 0xe7, 0x59, 0x56, 0xe5, 0xb4, 0x10, 0x10, 0xf2, 0x94, 0xef, 0x9d, 0x62, 0x46, 0x4b, 0x56, 0x3f, + 0x4d, 0xb3, 0x36, 0xf4, 0x3a, 0x63, 0xcb, 0x4e, 0x02, 0x41, 0xd1, 0x12, 0x3c, 0xe8, 0xdc, 0xda, 0xdd, 0x97, 0xd8, + 0xc3, 0xbb, 0x4c, 0x07, 0x9f, 0xa2, 0x11, 0x5f, 0xa0, 0x43, 0x55, 0xb2, 0x7a, 0x5c, 0x0e, 0x32, 0xf5, 0x11, 0x46, + 0xbf, 0x59, 0x53, 0xbf, 0x9f, 0xbc, 0x3b, 0x89, 0xd4, 0x3c, 0x86, 0xbc, 0x22, 0xf6, 0x42, 0x16, 0xd1, 0x92, 0xd6, + 0x45, 0x0f, 0xda, 0x28, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, + 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xba, 0x4a, + 0x51, 0xed, 0xc0, 0x25, 0x96, 0x41, 0x35, 0x66, 0x39, 0xc2, 0xfe, 0xac, 0x6a, 0xe7, 0xd9, 0x34, 0x21, 0x0e, 0x72, + 0xbf, 0x53, 0x02, 0xf5, 0x96, 0xff, 0xb1, 0x65, 0x1c, 0xde, 0x1c, 0x17, 0x48, 0xc5, 0x1b, 0xb2, 0x1a, 0xc7, 0x64, + 0xeb, 0xd3, 0x51, 0x7c, 0xea, 0xe1, 0xbf, 0x3e, 0xb8, 0xd4, 0x4a, 0x20, 0xe4, 0x19, 0x91, 0xc3, 0x91, 0x68, 0x10, + 0xdd, 0xec, 0x2f, 0x2a, 0x1b, 0x54, 0xbc, 0x91, 0xbd, 0xdd, 0xcf, 0xce, 0xfd, 0x24, 0x5d, 0xd5, 0x89, 0x22, 0xef, + 0xb1, 0xba, 0x98, 0x09, 0x5b, 0xf1, 0x9e, 0x83, 0xe1, 0xba, 0x86, 0xc0, 0x98, 0x11, 0x23, 0xa7, 0x85, 0x2f, 0x58, + 0xd1, 0xd2, 0x77, 0x45, 0xb5, 0x2d, 0xef, 0x16, 0x72, 0x07, 0xb6, 0x64, 0x4d, 0xc3, 0xaf, 0x08, 0xb1, 0x24, 0x05, + 0x53, 0x5d, 0xab, 0x9e, 0x97, 0xf3, 0xbd, 0x45, 0x83, 0xfb, 0xa1, 0x47, 0x5f, 0x09, 0xc5, 0x23, 0x4b, 0x4b, 0xa1, + 0x6e, 0xe1, 0x17, 0xe3, 0xc1, 0xe6, 0x54, 0xf9, 0x5d, 0xd5, 0x46, 0xed, 0x62, 0xd1, 0xd4, 0x63, 0x1d, 0x64, 0xcf, + 0x97, 0x8d, 0x77, 0x73, 0x9e, 0x1b, 0x1e, 0xce, 0xca, 0xb3, 0xd1, 0x08, 0xcc, 0xa2, 0xbf, 0xdd, 0x16, 0x8d, 0x91, + 0xa4, 0x6b, 0x84, 0x15, 0xf6, 0xbb, 0x12, 0xc5, 0x27, 0xf6, 0xb3, 0x8d, 0x25, 0x82, 0xd0, 0x2b, 0x77, 0x9f, 0x31, + 0xff, 0x32, 0x34, 0xac, 0x2e, 0xd7, 0xd4, 0xe9, 0x11, 0x71, 0xc0, 0x1a, 0xbd, 0xb6, 0xd9, 0x67, 0x45, 0x9e, 0x6a, + 0xaa, 0x04, 0x6e, 0x36, 0x30, 0xe2, 0x51, 0xca, 0x08, 0x44, 0xf3, 0x82, 0x68, 0x7c, 0x0a, 0xbc, 0x3e, 0xd9, 0x89, + 0x9f, 0x32, 0xdc, 0x6f, 0xba, 0x24, 0xea, 0xdc, 0x10, 0xe3, 0x03, 0x3d, 0x27, 0x38, 0x25, 0x07, 0x1c, 0x2d, 0x5e, + 0xc6, 0xff, 0x37, 0xc2, 0x7b, 0x84, 0x5c, 0xb7, 0x59, 0x89, 0x20, 0x97, 0xfd, 0x82, 0xc3, 0xdf, 0x47, 0xe0, 0xf5, + 0x20, 0x03, 0x99, 0x35, 0x84, 0xd7, 0x80, 0x05, 0xdd, 0x9e, 0xa7, 0x45, 0xe3, 0xf5, 0x4b, 0xa0, 0xc0, 0x8d, 0xdf, + 0x22, 0x4a, 0x3d, 0x83, 0x12, 0x51, 0x0d, 0xfc, 0x79, 0x97, 0x78, 0xb4, 0xfe, 0x35, 0x9a, 0x0a, 0x1f, 0x0c, 0x0e, + 0xc5, 0x23, 0xda, 0xf6, 0xec, 0x87, 0xb2, 0x01, 0xd8, 0x44, 0xa2, 0xcc, 0x01, 0x12, 0x6f, 0x0d, 0x8e, 0x76, 0xeb, + 0x2c, 0x73, 0xa3, 0xc0, 0x84, 0x6e, 0x13, 0x5c, 0x66, 0x6a, 0xae, 0x88, 0x3c, 0x2e, 0xdb, 0x3a, 0xf1, 0x4a, 0x4e, + 0x05, 0x17, 0xfb, 0xb2, 0x2b, 0xbd, 0xfd, 0x34, 0xce, 0x20, 0xf9, 0x73, 0x6c, 0xc5, 0x1c, 0x12, 0xdb, 0xdc, 0xf6, + 0xa9, 0xc4, 0x83, 0x53, 0x41, 0xb5, 0x8b, 0xbc, 0x2e, 0x7c, 0x75, 0xb5, 0x37, 0x7a, 0xc8, 0x9c, 0x3d, 0x1b, 0x33, + 0xcd, 0x3c, 0xe8, 0xa6, 0x13, 0xcd, 0x05, 0x17, 0xdd, 0xb4, 0x5d, 0xcc, 0x52, 0x0c, 0xb6, 0xcf, 0x5e, 0xb8, 0x81, + 0xdb, 0xd9, 0xb4, 0x74, 0x1a, 0x7d, 0xaa, 0x09, 0xd4, 0x1d, 0x2f, 0x1e, 0x94, 0xec, 0x33, 0x51, 0x6b, 0x44, 0x4b, + 0xa9, 0xdb, 0x79, 0x54, 0x35, 0x6d, 0x17, 0x8d, 0x7e, 0x23, 0xf8, 0xbf, 0x56, 0x78, 0xd2, 0x18, 0xb0, 0x5b, 0x41, + 0x2d, 0xd1, 0xd0, 0x89, 0x1c, 0xc4, 0xed, 0xfd, 0x59, 0xca, 0x6e, 0x62, 0x85, 0x3e, 0xf4, 0x04, 0x1f, 0x50, 0xa2, + 0x27, 0x7a, 0x59, 0xc1, 0xc8, 0x40, 0x76, 0x0f, 0x9b, 0x95, 0x0d, 0xef, 0xa3, 0x10, 0x14, 0x85, 0x20, 0x60, 0x74, + 0x78, 0x7a, 0x2b, 0x1a, 0x30, 0xf1, 0x9f, 0x1a, 0xf7, 0x7a, 0x49, 0xbe, 0xc6, 0x38, 0x85, 0x8c, 0xb3, 0xe4, 0x27, + 0x05, 0x63, 0xb0, 0x8e, 0x9e, 0x89, 0x2d, 0xbb, 0xf1, 0x1c, 0x63, 0x5c, 0x6d, 0xa7, 0xf2, 0x2c, 0xab, 0xaa, 0xaa, + 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, + 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x55, 0xc9, 0x3f, 0x99, 0x20, 0xbb, 0xf2, 0x0e, 0x26, + 0xdf, 0x90, 0xb5, 0x66, 0xb9, 0xa9, 0xb3, 0x3b, 0xdd, 0xb2, 0x74, 0x59, 0x16, 0xcb, 0x26, 0x89, 0x29, 0x7c, 0x47, + 0xec, 0xa1, 0x1a, 0x2c, 0x18, 0x9b, 0xc4, 0xbe, 0xbc, 0x55, 0xd3, 0x45, 0xbd, 0x5e, 0xef, 0xb6, 0x87, 0x18, 0x58, + 0x37, 0x85, 0x00, 0x0a, 0x19, 0xb7, 0x20, 0x7e, 0x09, 0x9e, 0x59, 0x6d, 0x76, 0x7a, 0xef, 0xd2, 0x65, 0x70, 0x6f, + 0x01, 0x7f, 0xd3, 0x4c, 0x48, 0xc4, 0xc8, 0x2a, 0x9e, 0xca, 0x48, 0xc7, 0x71, 0xff, 0xf6, 0xef, 0xb7, 0xd4, 0x13, + 0xb7, 0xc9, 0x28, 0x8a, 0x56, 0x4f, 0x27, 0xda, 0x7a, 0xfa, 0x06, 0x75, 0xb4, 0xcf, 0x76, 0x30, 0x7e, 0xae, 0x89, + 0xcf, 0x48, 0x76, 0x87, 0xd2, 0xa2, 0xd4, 0xe6, 0x9d, 0xc0, 0x77, 0x25, 0x59, 0xbc, 0x14, 0x69, 0x76, 0xc5, 0x1f, + 0x56, 0xfd, 0x61, 0x72, 0x14, 0x2f, 0x3e, 0x6e, 0xf8, 0x76, 0xd9, 0x8f, 0xd9, 0xf9, 0x4a, 0xba, 0x23, 0x3a, 0xaa, + 0xf9, 0x45, 0xfc, 0x4f, 0x4d, 0x43, 0xf2, 0xf2, 0xcf, 0x81, 0x9b, 0x08, 0xb1, 0x2b, 0x9b, 0xcc, 0xa0, 0x52, 0x67, + 0x72, 0x94, 0x2f, 0xcf, 0x45, 0x07, 0x2e, 0xdc, 0x84, 0x2d, 0x3d, 0x35, 0xaf, 0xd4, 0x2a, 0x8f, 0x71, 0x64, 0x4a, + 0xe0, 0x6e, 0x61, 0x52, 0x8d, 0x69, 0x54, 0xc5, 0xe7, 0xc4, 0x48, 0x3a, 0x66, 0x6c, 0x1e, 0x16, 0x1e, 0x8f, 0x1e, + 0x6c, 0x40, 0x55, 0xd6, 0xbe, 0xb6, 0x88, 0x0a, 0x68, 0xa7, 0xc0, 0xd0, 0x33, 0x97, 0x13, 0xb0, 0xdc, 0x49, 0xa6, + 0x6f, 0x84, 0xe0, 0xe5, 0x89, 0x6f, 0x22, 0x56, 0xf8, 0x01, 0x1c, 0xba, 0x53, 0xe3, 0xf9, 0x15, 0xf0, 0x64, 0xd2, + 0x23, 0x63, 0xb2, 0xb3, 0x10, 0x8f, 0xeb, 0x42, 0x36, 0x9f, 0xef, 0x41, 0x9c, 0x64, 0x2e, 0xff, 0x69, 0xa1, 0x5c, + 0xf7, 0x6d, 0x53, 0x87, 0x0d, 0x30, 0x2e, 0x12, 0xec, 0x15, 0x50, 0x4f, 0x45, 0x9a, 0xfa, 0xd3, 0x85, 0x1e, 0xb1, + 0x68, 0x1a, 0x13, 0x3f, 0x5f, 0xd6, 0x89, 0x93, 0xdf, 0x33, 0xf1, 0xad, 0x5d, 0xcf, 0x53, 0x89, 0x1a, 0x2d, 0x98, + 0x64, 0xb4, 0x83, 0x8b, 0xcc, 0xff, 0xef, 0xf1, 0x56, 0x12, 0x95, 0xf2, 0x2d, 0x8f, 0xf4, 0xd0, 0x1b, 0x63, 0xe7, + 0x68, 0x9a, 0xe3, 0x6f, 0x95, 0x26, 0x04, 0x55, 0xf7, 0x42, 0xaa, 0x0b, 0xba, 0xfd, 0x78, 0xcc, 0x2a, 0x13, 0xed, + 0xd6, 0xbf, 0x73, 0xed, 0x0a, 0x83, 0x3f, 0xa9, 0x7c, 0x94, 0x6c, 0x93, 0x8f, 0xe3, 0x5d, 0x26, 0x85, 0x94, 0x93, + 0x36, 0xf6, 0x0b, 0x0a, 0x06, 0xcb, 0x76, 0xdb, 0x39, 0xa9, 0x58, 0x3f, 0x6a, 0x4a, 0x47, 0xa6, 0x7c, 0x97, 0x85, + 0xce, 0x3b, 0x34, 0x07, 0x31, 0x63, 0x40, 0xb8, 0x58, 0x3b, 0xd3, 0xbc, 0x4c, 0x2d, 0xfa, 0x00, 0x59, 0x83, 0x17, + 0xc4, 0x77, 0x39, 0xa0, 0xb4, 0x4f, 0x20, 0x82, 0x5a, 0xb2, 0x22, 0x70, 0xc8, 0xa1, 0xe6, 0xfc, 0x80, 0x05, 0xfb, + 0x7a, 0x83, 0xde, 0xa2, 0x26, 0x7b, 0x7c, 0x54, 0x77, 0xf3, 0x51, 0xc1, 0x6e, 0xc1, 0x0d, 0xd6, 0xbf, 0x9d, 0xe1, + 0x08, 0x06, 0xb1, 0x68, 0x4b, 0x99, 0xf5, 0x14, 0x02, 0x19, 0x88, 0xb0, 0x04, 0xef, 0x1d, 0xa6, 0x7b, 0x93, 0x52, + 0xe2, 0x38, 0xc3, 0x83, 0x31, 0x17, 0x7c, 0x3f, 0xd1, 0x16, 0xb9, 0x93, 0xed, 0x99, 0xad, 0xca, 0x07, 0x2d, 0xba, + 0x3d, 0xea, 0x3a, 0x23, 0xf5, 0xa3, 0x62, 0xad, 0x17, 0xef, 0x3a, 0xc5, 0xe8, 0x66, 0x2b, 0xbf, 0x2f, 0x78, 0x85, + 0x28, 0x02, 0x53, 0xa0, 0x1a, 0x5d, 0x0b, 0xc9, 0xc3, 0xd3, 0xe6, 0x01, 0xff, 0xf5, 0x72, 0x3d, 0x7c, 0x66, 0x7c, + 0x5f, 0xa7, 0x65, 0x0c, 0x58, 0x6d, 0xe9, 0x3b, 0x44, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, + 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, + 0x08, 0xc3, 0x19, 0x88, 0xf2, 0x7f, 0x4c, 0xe4, 0x6f, 0x0e, 0xc6, 0x1b, 0x2c, 0xb5, 0x46, 0x9c, 0xad, 0x94, 0xfd, + 0x91, 0x6e, 0xf6, 0x0f, 0x3d, 0x32, 0xbd, 0xd2, 0xba, 0x10, 0x8d, 0x93, 0x15, 0x67, 0xf2, 0x5e, 0xd9, 0x34, 0xb6, + 0xef, 0x10, 0x1d, 0x92, 0x6d, 0x99, 0xee, 0x76, 0x59, 0x40, 0x3a, 0xc8, 0x1c, 0xec, 0x27, 0xc1, 0x33, 0x04, 0xae, + 0x59, 0x65, 0x57, 0xb2, 0x2d, 0xa9, 0xbe, 0x1f, 0x0e, 0x51, 0x2a, 0x7c, 0x0e, 0xa6, 0x4a, 0x3d, 0x87, 0xef, 0x6d, + 0x71, 0xee, 0xe2, 0x50, 0x52, 0x07, 0x8a, 0x8e, 0x16, 0x66, 0xf5, 0xca, 0xa4, 0x09, 0xff, 0x7a, 0x29, 0x7f, 0x65, + 0x6b, 0xcc, 0x86, 0x51, 0xee, 0x1a, 0xa7, 0x93, 0xdd, 0x87, 0xb7, 0x5d, 0xae, 0xf4, 0x10, 0xd0, 0x6f, 0xe6, 0xa7, + 0x87, 0xa2, 0xb3, 0x04, 0xd3, 0x1d, 0x69, 0xce, 0x01, 0xf3, 0x5e, 0x63, 0xc5, 0xb5, 0xc9, 0xaa, 0x4e, 0xa1, 0x82, + 0xa4, 0x95, 0xdf, 0xbe, 0xde, 0x36, 0xa5, 0xa2, 0xb3, 0x51, 0xb5, 0x5f, 0x7b, 0x41, 0x64, 0xeb, 0xad, 0x0b, 0xe6, + 0x24, 0xb1, 0x1b, 0x43, 0x66, 0x0f, 0x64, 0x0b, 0x34, 0xb4, 0x1c, 0xe7, 0x52, 0x65, 0xe1, 0x1a, 0x76, 0xf0, 0x2f, + 0x27, 0x8f, 0x68, 0x9c, 0xce, 0x15, 0xda, 0x36, 0xab, 0xfc, 0x20, 0x14, 0x92, 0x0f, 0x29, 0x65, 0x2c, 0x4c, 0xd7, + 0x09, 0x60, 0x4c, 0xce, 0x64, 0x6f, 0xe6, 0xe8, 0x93, 0xab, 0xa2, 0x75, 0x24, 0x93, 0xb8, 0x15, 0xec, 0x22, 0xee, + 0xbe, 0xcc, 0x67, 0xfe, 0xca, 0xd5, 0xdb, 0xdb, 0x35, 0xda, 0xd4, 0x19, 0x8e, 0x8b, 0x91, 0x7e, 0x99, 0x03, 0x18, + 0x8d, 0x16, 0x16, 0xa0, 0x85, 0x9a, 0xc8, 0x86, 0x4c, 0xcb, 0x15, 0x5d, 0x87, 0x14, 0xbf, 0xea, 0xfd, 0xf0, 0x9a, + 0x3d, 0xbf, 0xcb, 0xc4, 0x8f, 0xd9, 0xfa, 0x9a, 0x82, 0xe8, 0x01, 0x55, 0x28, 0xd6, 0xb4, 0xf8, 0x1d, 0x08, 0x87, + 0xf1, 0x2b, 0x34, 0x49, 0x09, 0x26, 0x84, 0x80, 0xf4, 0xb6, 0x6b, 0x2b, 0xe9, 0xd3, 0xfb, 0xc4, 0xab, 0x7d, 0xf0, + 0x43, 0xe8, 0xef, 0x6d, 0x22, 0x61, 0x1d, 0x56, 0xe9, 0xe9, 0x22, 0x50, 0x5b, 0xbd, 0xa8, 0xe2, 0xcd, 0x78, 0x36, + 0xf4, 0xd0, 0xe6, 0xae, 0x04, 0x08, 0x70, 0x4e, 0xfc, 0x00, 0x82, 0x28, 0xda, 0x6d, 0x42, 0x86, 0x6c, 0xae, 0x11, + 0xd2, 0xd0, 0x01, 0x5f, 0x3a, 0x6f, 0xd4, 0xcb, 0xe5, 0x01, 0x6e, 0x19, 0xc9, 0x60, 0x2c, 0x82, 0x53, 0x01, 0x37, + 0x77, 0xf9, 0xe9, 0x4c, 0x64, 0x15, 0xef, 0xa0, 0x2f, 0x87, 0x6f, 0x13, 0x27, 0x3a, 0x3b, 0xd0, 0x33, 0x6e, 0xce, + 0x44, 0xc6, 0xa9, 0xb1, 0x04, 0x9c, 0xbc, 0xc2, 0x59, 0x63, 0xc6, 0x07, 0x5c, 0xa6, 0xaf, 0x1d, 0xb4, 0xd0, 0x50, + 0x31, 0xe8, 0xc5, 0xed, 0x48, 0xf9, 0x62, 0x44, 0x61, 0x96, 0x01, 0x9d, 0x75, 0xbb, 0x51, 0x80, 0x20, 0x5c, 0x93, + 0x36, 0x30, 0x5f, 0x7e, 0xd0, 0xb6, 0xc7, 0x59, 0xc6, 0xe5, 0x19, 0xd6, 0x98, 0x16, 0x94, 0xaa, 0x04, 0xc3, 0x79, + 0x2f, 0xdd, 0xcf, 0xbb, 0x37, 0x7d, 0x85, 0x7f, 0x63, 0xda, 0xc9, 0x06, 0x7e, 0xde, 0x90, 0x33, 0x1d, 0x98, 0x10, + 0xf4, 0x5d, 0xc3, 0xef, 0xb8, 0x63, 0x65, 0x90, 0x16, 0x8c, 0x22, 0x84, 0x33, 0x42, 0x5b, 0x1e, 0x0e, 0xa8, 0xbb, + 0xdf, 0x9b, 0x35, 0x80, 0x0d, 0x0c, 0x9a, 0xfd, 0x47, 0x81, 0xfc, 0x01, 0xe5, 0x57, 0xd7, 0x9f, 0x46, 0x3e, 0xe2, + 0xeb, 0x37, 0x4d, 0x0c, 0x01, 0xba, 0xec, 0x5d, 0x1e, 0xe8, 0x91, 0x4e, 0xc5, 0x0f, 0xc3, 0x0b, 0x22, 0x1a, 0x8c, + 0xa0, 0xa9, 0x84, 0xf5, 0xa2, 0xb5, 0x29, 0xb8, 0xb7, 0xed, 0x04, 0xc3, 0x16, 0x21, 0x2e, 0x7a, 0xb1, 0x1f, 0x95, + 0xe1, 0x13, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, + 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x19, 0x7d, 0x37, 0xc9, + 0xaa, 0x51, 0x76, 0x88, 0xf3, 0x4b, 0x35, 0xf8, 0x69, 0x40, 0xee, 0x9e, 0x7d, 0x1f, 0x24, 0x65, 0x3f, 0xe7, 0xcc, + 0x89, 0x4a, 0x4e, 0x6c, 0x27, 0xce, 0xc1, 0x48, 0x0e, 0x59, 0xe6, 0xab, 0xc9, 0x4b, 0x87, 0xc7, 0x29, 0x93, 0xdc, + 0x91, 0x69, 0x74, 0x99, 0x41, 0x0a, 0xf9, 0xf5, 0xa1, 0x85, 0xa4, 0x04, 0xe2, 0x8e, 0x59, 0x56, 0xbf, 0xac, 0x22, + 0x58, 0x76, 0x48, 0xe4, 0xeb, 0x7b, 0x56, 0x00, 0xba, 0x81, 0xa2, 0x53, 0xe4, 0x32, 0x52, 0x07, 0x0d, 0x04, 0x61, + 0x54, 0xc7, 0x4e, 0xfb, 0xb4, 0x11, 0x2d, 0xbb, 0x32, 0x92, 0xa0, 0x45, 0xd9, 0xc6, 0x8d, 0x6f, 0x51, 0x7f, 0x2c, + 0x24, 0xe9, 0xe6, 0x17, 0x2c, 0x6d, 0x59, 0x5b, 0xf0, 0x4c, 0x6f, 0x8a, 0x7f, 0x6e, 0x9b, 0x0a, 0x2b, 0xe8, 0x14, + 0xad, 0x10, 0x53, 0x79, 0xda, 0x42, 0x71, 0x0e, 0x74, 0x34, 0xd9, 0x0e, 0x33, 0xe1, 0x95, 0xd6, 0x13, 0x9d, 0x99, + 0xbb, 0xca, 0x19, 0xcd, 0x9d, 0x5b, 0x45, 0x75, 0x52, 0x1d, 0x1e, 0x31, 0xce, 0x0a, 0x59, 0xb5, 0xd7, 0x1e, 0x9e, + 0x8d, 0xa1, 0x58, 0x34, 0xc3, 0x71, 0x0f, 0x09, 0xdb, 0xc7, 0x4c, 0xd8, 0xcf, 0xfa, 0xcc, 0xba, 0xa4, 0x10, 0x5b, + 0x07, 0x9e, 0xde, 0xd3, 0xe5, 0xb8, 0xd5, 0x6d, 0xc7, 0xee, 0xb6, 0xf2, 0xfd, 0x21, 0xce, 0xed, 0x67, 0x79, 0x71, + 0x3e, 0x83, 0x45, 0x60, 0xe8, 0x3e, 0xd5, 0x33, 0xd8, 0x20, 0xa7, 0x1f, 0x2b, 0x88, 0x65, 0x3b, 0x00, 0xe0, 0x4e, + 0x0f, 0x9b, 0x4c, 0xaf, 0xbd, 0x18, 0xb2, 0x58, 0x4d, 0x7e, 0x23, 0xee, 0x14, 0xe0, 0x6e, 0x35, 0xa2, 0x4d, 0x87, + 0xac, 0x4d, 0x45, 0xb2, 0xb4, 0x50, 0xe5, 0xd5, 0x3a, 0x1e, 0xfc, 0x56, 0x27, 0xf2, 0x79, 0xda, 0xdc, 0x6f, 0x98, + 0x0c, 0x06, 0x86, 0xf9, 0x49, 0xd3, 0x7e, 0x1d, 0x4d, 0xc0, 0xa9, 0x75, 0x14, 0x6f, 0x30, 0xb9, 0x89, 0xd1, 0x8c, + 0xde, 0x80, 0xca, 0xbf, 0x75, 0xe3, 0x3f, 0x97, 0x5a, 0x36, 0x45, 0xc6, 0xf2, 0x67, 0x4c, 0xc1, 0x1f, 0x5c, 0x04, + 0xca, 0x40, 0x72, 0xad, 0x26, 0x57, 0x54, 0x0f, 0x71, 0x79, 0xec, 0xd2, 0x02, 0x0c, 0xe0, 0x69, 0xb9, 0xd2, 0xb9, + 0x46, 0x25, 0x08, 0xf8, 0xb7, 0x03, 0x6c, 0xa7, 0xef, 0xc0, 0xe6, 0x3f, 0xb5, 0x09, 0x71, 0x4f, 0x67, 0xb1, 0x96, + 0xbc, 0x00, 0xa1, 0x04, 0xd3, 0x09, 0x40, 0xa6, 0xbf, 0x10, 0x78, 0xc5, 0xca, 0x66, 0xa1, 0xd5, 0x69, 0x80, 0xb2, + 0x47, 0xeb, 0x4a, 0x12, 0xa2, 0x61, 0xec, 0x8e, 0x57, 0x5b, 0xe4, 0xef, 0x9f, 0x75, 0x66, 0x74, 0x10, 0x5c, 0xef, + 0x40, 0xbc, 0x17, 0x8a, 0xb8, 0x6d, 0x6e, 0x90, 0x9a, 0xf3, 0x68, 0xd8, 0x3c, 0x5e, 0x64, 0xb5, 0x1e, 0xfa, 0x14, + 0x37, 0x66, 0x36, 0x26, 0xe1, 0x40, 0xac, 0x8f, 0xab, 0x17, 0xc4, 0xb1, 0xbc, 0x7a, 0xb9, 0x4c, 0x97, 0x3f, 0x26, + 0xcc, 0x6f, 0xe0, 0x2d, 0x62, 0x34, 0x2a, 0xd7, 0x02, 0xdd, 0x76, 0xd0, 0x6d, 0xc1, 0x53, 0x38, 0xcf, 0x3d, 0xee, + 0xd7, 0x8d, 0xcb, 0x53, 0x1d, 0x97, 0xbb, 0xf3, 0xa7, 0x37, 0x19, 0xd6, 0x3f, 0x45, 0x89, 0x78, 0x1b, 0x05, 0x5b, + 0x7f, 0x04, 0xf3, 0xe0, 0x1b, 0x33, 0x5f, 0x3f, 0xe1, 0xe5, 0xa8, 0xcb, 0xed, 0x78, 0xd8, 0x0b, 0x68, 0x34, 0xe1, + 0xad, 0x7c, 0xd3, 0xef, 0x0a, 0x85, 0xfa, 0xf7, 0xaa, 0x7c, 0x25, 0xc6, 0x52, 0xa3, 0x51, 0x5e, 0xb0, 0x32, 0x05, + 0x6c, 0xa3, 0xb0, 0x61, 0x53, 0xf6, 0x0a, 0x17, 0x06, 0x4c, 0xb3, 0x2a, 0x9d, 0xe2, 0x1a, 0x5f, 0x75, 0x15, 0xd3, + 0x0a, 0xb2, 0xd8, 0xcc, 0xa8, 0xea, 0x67, 0x42, 0xb3, 0xf3, 0xf6, 0x29, 0xdf, 0x2d, 0xab, 0xaa, 0xaa, 0xaa, 0x38, + 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, + 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x55, 0xb5, 0x31, 0x0b, 0x25, 0xc7, 0x8b, 0x99, 0xba, 0xc6, 0x2c, + 0x9e, 0xa4, 0xdd, 0x7a, 0x4d, 0x93, 0x9e, 0xdf, 0x31, 0x9d, 0x9e, 0xbf, 0x58, 0xf1, 0x44, 0xc5, 0xd2, 0xb9, 0x0a, + 0x87, 0x58, 0xad, 0x79, 0xe1, 0x1d, 0x06, 0xae, 0x40, 0x51, 0x56, 0xcf, 0x42, 0x8f, 0x51, 0x6c, 0x4b, 0x30, 0x5d, + 0x96, 0x74, 0x0d, 0x5e, 0x5d, 0x38, 0x9a, 0xa7, 0x15, 0x67, 0x2c, 0x32, 0x8e, 0x92, 0x1c, 0xfc, 0xbc, 0x2e, 0x45, + 0xa7, 0x31, 0xed, 0xf6, 0x7e, 0xd6, 0x39, 0x2c, 0xe4, 0xb9, 0x82, 0xf0, 0xd9, 0x63, 0x23, 0x85, 0x81, 0x5b, 0x7e, + 0xb0, 0x8d, 0x02, 0x4d, 0x9a, 0x23, 0x53, 0xc5, 0x43, 0xfd, 0x41, 0x69, 0x88, 0x06, 0x7f, 0x2b, 0x65, 0x5d, 0xba, + 0xb5, 0xa7, 0xf3, 0xbb, 0x6b, 0xef, 0xad, 0xb0, 0xe5, 0xbf, 0x86, 0x60, 0xa8, 0x03, 0x8b, 0xaf, 0xa3, 0x40, 0x00, + 0x6d, 0x23, 0x1e, 0x68, 0xec, 0x6d, 0x32, 0x45, 0x7f, 0xf2, 0xb5, 0xb4, 0xa9, 0x2c, 0x55, 0xab, 0xa3, 0x4f, 0xf9, + 0x2a, 0x6a, 0x72, 0x8f, 0xe7, 0xd4, 0xf5, 0x18, 0xf4, 0x86, 0x76, 0xf4, 0xe1, 0x27, 0x5e, 0x6b, 0x7a, 0x52, 0xf5, + 0x08, 0xc6, 0xe6, 0x40, 0xfc, 0x4d, 0x36, 0xe0, 0xc3, 0x76, 0x29, 0x02, 0xb9, 0x71, 0x87, 0xa9, 0xa2, 0x09, 0x34, + 0x4a, 0x97, 0xa8, 0x88, 0x70, 0x61, 0x82, 0x12, 0x26, 0x36, 0x03, 0x7a, 0x0f, 0x66, 0x03, 0x85, 0x36, 0x29, 0xb2, + 0xf2, 0x21, 0x6a, 0xde, 0xda, 0xb7, 0x97, 0x42, 0xd7, 0x25, 0x1a, 0x3c, 0xf4, 0x1a, 0x5e, 0x07, 0xff, 0x7e, 0xb8, + 0x73, 0xe5, 0xa9, 0x3a, 0x14, 0x5f, 0x19, 0x5f, 0xdb, 0x3f, 0x03, 0xc1, 0x71, 0x6a, 0x26, 0x19, 0xa2, 0x2a, 0xdf, + 0xc7, 0x0c, 0x69, 0xef, 0xe0, 0x85, 0x48, 0x30, 0xf3, 0x31, 0xe2, 0x3a, 0x76, 0xcc, 0x15, 0x8f, 0x07, 0xcb, 0x9e, + 0xc4, 0x8e, 0xf8, 0x31, 0x2f, 0xa5, 0xff, 0x6e, 0xe1, 0xec, 0x82, 0xb9, 0xe2, 0xc3, 0x91, 0xba, 0xb5, 0xda, 0x21, + 0xa3, 0xcc, 0x19, 0xef, 0x56, 0x4b, 0x04, 0xe8, 0x65, 0x21, 0x17, 0xe9, 0xba, 0xaa, 0x72, 0xfe, 0xaf, 0x02, 0xa6, + 0x40, 0x0a, 0x76, 0x07, 0x02, 0x8d, 0x01, 0xe0, 0xa6, 0xce, 0xe5, 0x63, 0x1d, 0x52, 0x74, 0x14, 0x54, 0xcf, 0xc8, + 0xc0, 0xc0, 0xe0, 0x24, 0x34, 0x08, 0xcb, 0xb0, 0xac, 0x50, 0xba, 0x21, 0xa0, 0x33, 0xb8, 0x8b, 0xa8, 0xdc, 0x45, + 0x2d, 0x04, 0x23, 0x01, 0x1a, 0x84, 0xbd, 0x22, 0xbb, 0x89, 0x1f, 0x3d, 0x9d, 0x70, 0x13, 0xaf, 0x07, 0x04, 0xfd, + 0xf9, 0x66, 0x06, 0x47, 0x9d, 0x92, 0x2a, 0xf9, 0xbe, 0x59, 0x6f, 0x87, 0x1e, 0x0a, 0x5c, 0xb5, 0x8b, 0x76, 0xfa, + 0x75, 0xa9, 0xd5, 0xf9, 0x4a, 0x83, 0xca, 0x18, 0x58, 0x70, 0x9f, 0x21, 0x17, 0x2f, 0xae, 0x4f, 0x26, 0x1a, 0xcb, + 0xec, 0x0e, 0x89, 0xea, 0x1a, 0x11, 0x1a, 0x69, 0x77, 0x67, 0xd9, 0x4f, 0x53, 0xca, 0x98, 0x69, 0x98, 0xee, 0x45, + 0x0a, 0xf9, 0x71, 0x78, 0x07, 0x65, 0xb9, 0x04, 0xb5, 0xa9, 0x57, 0xd9, 0x0e, 0xa3, 0xb4, 0x79, 0xf8, 0x01, 0x54, + 0xbe, 0x02, 0xd7, 0x12, 0x4c, 0x7e, 0xc9, 0x1c, 0xe9, 0x68, 0x3e, 0x04, 0x22, 0x43, 0x4d, 0x3f, 0xb5, 0x60, 0x34, + 0x0e, 0x84, 0xdd, 0xb1, 0x08, 0x6f, 0x38, 0xb9, 0xa6, 0x86, 0x4e, 0x12, 0x9f, 0x83, 0x17, 0x6c, 0x50, 0xdf, 0x0b, + 0x0e, 0x92, 0xd9, 0x93, 0xf5, 0x99, 0x0c, 0x6a, 0x7a, 0xbf, 0x0d, 0x42, 0x1b, 0x88, 0x95, 0x98, 0xfa, 0x9f, 0x42, + 0xb1, 0x1f, 0x1f, 0xa9, 0xc2, 0x5d, 0xa9, 0xa2, 0x5c, 0xb7, 0x79, 0x71, 0x91, 0x5f, 0x16, 0x99, 0xb8, 0x27, 0xe7, + 0x31, 0x34, 0x15, 0x92, 0x92, 0x73, 0x3e, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, + 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, + 0x19, 0xe0, 0xdc, 0x99, 0x7a, 0xbf, 0x12, 0xae, 0xf5, 0xf0, 0x5c, 0x10, 0xd2, 0xfe, 0xa5, 0x95, 0x16, 0x49, 0xfb, + 0xcb, 0xbd, 0x4f, 0x19, 0x69, 0xd1, 0xc3, 0xf0, 0x8a, 0x9d, 0xad, 0x72, 0x8e, 0x1b, 0x36, 0x27, 0x8b, 0xbf, 0xb6, + 0xfa, 0x87, 0x97, 0x48, 0xe9, 0x1d, 0xff, 0x36, 0xcf, 0x39, 0x37, 0x7e, 0x54, 0x52, 0x74, 0xea, 0xe0, 0xa6, 0xb2, + 0x74, 0x21, 0x2d, 0x53, 0xd2, 0x8e, 0x9e, 0x0b, 0xe1, 0x2b, 0x61, 0x69, 0xae, 0xca, 0x2f, 0xc1, 0xa9, 0x90, 0x5b, + 0xd8, 0xcb, 0xfa, 0x3c, 0x9b, 0x20, 0x9f, 0x59, 0xdd, 0xa5, 0x76, 0xd0, 0xbe, 0x8c, 0xd8, 0xac, 0x22, 0x23, 0xd0, + 0x09, 0x65, 0x0b, 0xcb, 0x7c, 0xb4, 0x4d, 0xe0, 0x34, 0xde, 0x21, 0xbe, 0x1a, 0xfa, 0x22, 0xdb, 0x09, 0xb4, 0xa7, + 0x26, 0x14, 0xc4, 0xc6, 0x8f, 0x56, 0xed, 0x24, 0x3b, 0xe2, 0xf0, 0x09, 0xe8, 0x13, 0x1f, 0x54, 0x32, 0xff, 0x32, + 0xed, 0x2c, 0x85, 0xa7, 0xa8, 0x17, 0x22, 0xa1, 0xf1, 0xf3, 0x5c, 0x7a, 0x76, 0xa1, 0x40, 0xe1, 0xfb, 0xf9, 0xb6, + 0x51, 0x04, 0x4f, 0x2c, 0xd4, 0x5f, 0x92, 0x4f, 0x22, 0xa9, 0x77, 0x70, 0xbc, 0x58, 0x00, 0x45, 0x2d, 0xf6, 0xc5, + 0x2f, 0x7c, 0xce, 0x33, 0xb3, 0xc7, 0xdd, 0xfd, 0x92, 0x24, 0x57, 0xb1, 0xcc, 0x9b, 0x0b, 0xc0, 0x28, 0x99, 0x90, + 0xcc, 0xe9, 0x47, 0x8a, 0x77, 0x50, 0x6f, 0x89, 0xfd, 0x56, 0xe7, 0x1e, 0x62, 0xa1, 0xe1, 0x48, 0xd9, 0xcd, 0xc9, + 0xcb, 0xc9, 0xc7, 0xb7, 0x63, 0xd9, 0xd3, 0x9b, 0x95, 0x89, 0x2b, 0x39, 0x39, 0xcf, 0xb1, 0x46, 0x34, 0x59, 0xcc, + 0xdd, 0x5a, 0x83, 0xdc, 0x3c, 0xcd, 0xc2, 0xb8, 0x6a, 0x85, 0x5f, 0x52, 0x88, 0xc0, 0x51, 0x57, 0x58, 0xad, 0x69, + 0xd6, 0xe9, 0x87, 0xa4, 0xdc, 0x2d, 0x73, 0xe3, 0x11, 0x5d, 0xe4, 0x83, 0xeb, 0x13, 0xd1, 0x61, 0x2b, 0x41, 0xf6, + 0x21, 0x25, 0x04, 0xfe, 0x84, 0x84, 0x30, 0x84, 0x88, 0x7b, 0xfe, 0xd4, 0x81, 0xdc, 0xe4, 0xdc, 0xc0, 0x92, 0x9d, + 0x57, 0x24, 0x75, 0x44, 0xa5, 0x17, 0x81, 0xe0, 0xbd, 0xab, 0x33, 0xe1, 0xd4, 0xa2, 0xd9, 0x53, 0xe7, 0xca, 0xdd, + 0x4c, 0x87, 0x72, 0x54, 0x09, 0x0f, 0xfe, 0xcc, 0xb2, 0x4e, 0xb8, 0x4c, 0xa4, 0xf5, 0xaa, 0xf3, 0x08, 0x61, 0xab, + 0x82, 0xd8, 0x9b, 0x73, 0xee, 0xc8, 0xd2, 0xb6, 0xe0, 0x60, 0x82, 0x0d, 0x81, 0xeb, 0x0f, 0xc5, 0xd0, 0xd1, 0x00, + 0xc6, 0xee, 0x75, 0x77, 0x10, 0xa4, 0x70, 0xee, 0x8e, 0x2f, 0x1a, 0x83, 0x13, 0x1c, 0x23, 0xd9, 0xf4, 0x39, 0x91, + 0x1b, 0xeb, 0x0d, 0xb4, 0xf0, 0x8f, 0xb6, 0x43, 0x23, 0xff, 0x19, 0xcb, 0x2a, 0x0f, 0x99, 0xe8, 0xf9, 0xf4, 0x6b, + 0x4e, 0x5e, 0x68, 0x02, 0x0f, 0x02, 0xc9, 0x2e, 0x7a, 0xfc, 0x9f, 0xa4, 0x63, 0xfc, 0xcf, 0xd5, 0xeb, 0x2c, 0x54, + 0x79, 0xb3, 0xde, 0x11, 0xd9, 0x8d, 0x5c, 0x2d, 0xa3, 0x81, 0x8c, 0xc2, 0x6a, 0x5d, 0x97, 0xf1, 0x92, 0x57, 0x61, + 0xd7, 0x02, 0x1a, 0xe0, 0xef, 0xc0, 0x21, 0xe5, 0x0c, 0xa8, 0xb9, 0x49, 0xd6, 0x3b, 0xe8, 0xcf, 0xe0, 0x28, 0xaf, + 0xae, 0x5c, 0xed, 0x4c, 0xc7, 0x07, 0x46, 0xdd, 0x83, 0xaa, 0x9c, 0x2d, 0x1f, 0x4d, 0xa5, 0x6c, 0xfb, 0x73, 0xa2, + 0xe5, 0xda, 0x89, 0x46, 0xd4, 0xb9, 0xdb, 0x29, 0xca, 0xe1, 0x66, 0x5c, 0xeb, 0x52, 0xab, 0x5e, 0x35, 0xce, 0x33, + 0x4e, 0xcc, 0x52, 0xcb, 0x86, 0x41, 0x02, 0xd1, 0xe9, 0x71, 0x93, 0x72, 0x2e, 0x67, 0x34, 0xbb, 0xf9, 0xe9, 0x74, + 0xb1, 0x03, 0xb4, 0x0e, 0xc9, 0x3c, 0x0f, 0x13, 0xc7, 0x13, 0x84, 0xbf, 0x7d, 0xed, 0xa0, 0x0d, 0x87, 0x5b, 0x4d, + 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, + 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xf8, 0x83, 0xf2, 0x3f, 0x24, 0x8a, + 0x5e, 0xfc, 0x98, 0x40, 0x16, 0xb9, 0x6d, 0xb2, 0x79, 0x59, 0x69, 0x77, 0x38, 0xe5, 0x56, 0x2a, 0xb8, 0x35, 0xfe, + 0x61, 0x76, 0x9e, 0x88, 0x7a, 0xbb, 0x16, 0x60, 0xb4, 0x6a, 0x6e, 0xd2, 0xf6, 0x2a, 0xa3, 0x5b, 0x68, 0x8a, 0x02, + 0x4d, 0x03, 0x3f, 0x92, 0xa7, 0x5b, 0x9b, 0x1f, 0xcb, 0x40, 0x2a, 0x78, 0xe0, 0x13, 0x7b, 0xb5, 0xd5, 0xe8, 0x32, + 0x34, 0x3a, 0x7f, 0x52, 0x1f, 0x95, 0x5b, 0x26, 0xc8, 0x0f, 0x8c, 0xbb, 0x86, 0x26, 0x67, 0x65, 0x17, 0xd2, 0x5a, + 0x27, 0x04, 0x3b, 0x10, 0x76, 0x70, 0xc9, 0x30, 0x95, 0x0d, 0x70, 0x0b, 0xb5, 0x52, 0xb3, 0xc0, 0xaf, 0x8d, 0x6d, + 0x2f, 0xba, 0xb9, 0xde, 0xd5, 0xec, 0xae, 0xc7, 0x96, 0xdf, 0xe8, 0xbc, 0x26, 0x2a, 0x6c, 0x29, 0x24, 0xa2, 0xc8, + 0xfc, 0x4f, 0x39, 0x54, 0x25, 0x87, 0x59, 0x36, 0xe1, 0xc2, 0x8d, 0x89, 0xf2, 0xca, 0xa7, 0xf3, 0x76, 0xef, 0x24, + 0x5a, 0x77, 0x1a, 0xb2, 0x68, 0x4a, 0xbb, 0x81, 0x0a, 0x48, 0x28, 0x2c, 0x49, 0x18, 0x72, 0xf4, 0xc5, 0xd5, 0x60, + 0xbb, 0x38, 0x71, 0xa5, 0x74, 0xf6, 0x37, 0xa5, 0x1f, 0x61, 0x00, 0x2a, 0x0d, 0x60, 0xeb, 0xd1, 0x91, 0xac, 0x0c, + 0x58, 0x31, 0xb6, 0xa7, 0x22, 0x12, 0x1b, 0x5d, 0xc8, 0xfc, 0xb5, 0x7b, 0x5b, 0xe6, 0x2e, 0x46, 0x49, 0x0c, 0x1d, + 0x72, 0x0b, 0xea, 0x4e, 0xb6, 0x49, 0xaf, 0xa1, 0x10, 0x82, 0x6f, 0x83, 0x4e, 0x7e, 0x7b, 0x27, 0xf8, 0xfd, 0x75, + 0xe4, 0x3f, 0xc8, 0x71, 0xae, 0xb2, 0xc7, 0x81, 0x16, 0xe9, 0xc7, 0x8c, 0x0f, 0x0f, 0x87, 0xab, 0x31, 0x78, 0x7d, + 0x42, 0x17, 0xe7, 0xa6, 0x62, 0xdb, 0x72, 0x47, 0xab, 0xa8, 0xab, 0x91, 0x59, 0x33, 0x6c, 0xc1, 0x4b, 0x46, 0x25, + 0xd3, 0x44, 0x10, 0xfe, 0x10, 0xef, 0x84, 0x30, 0x7f, 0xa5, 0x8f, 0x46, 0x42, 0x80, 0x79, 0x64, 0xea, 0xe9, 0xe5, + 0x03, 0xfb, 0x8a, 0xf7, 0xf0, 0xa1, 0x35, 0x8c, 0x3d, 0x51, 0xd3, 0x80, 0x47, 0x84, 0xb9, 0x13, 0xce, 0x6a, 0x87, + 0x57, 0xd7, 0x5e, 0x54, 0x47, 0x25, 0xd0, 0x9e, 0x47, 0xf3, 0xec, 0xd4, 0x0e, 0x21, 0xd6, 0x4a, 0x1c, 0xd9, 0x39, + 0x88, 0x39, 0x74, 0x73, 0xd6, 0xd3, 0x82, 0x3e, 0xb7, 0x49, 0x25, 0x26, 0xd5, 0x5f, 0xd8, 0x02, 0x7f, 0x25, 0xee, + 0x9d, 0x45, 0x5e, 0x06, 0xa0, 0x84, 0x60, 0x17, 0x1e, 0x58, 0x51, 0x6f, 0xdb, 0xb2, 0x29, 0x90, 0xed, 0x09, 0x4e, + 0x02, 0xae, 0x47, 0x5e, 0x5b, 0x93, 0x42, 0x00, 0x46, 0x3f, 0x8b, 0x34, 0x54, 0x91, 0xde, 0x48, 0x7c, 0xd5, 0x15, + 0x4d, 0x59, 0xcd, 0x74, 0xb1, 0x87, 0x6a, 0xc5, 0x65, 0x56, 0x71, 0x49, 0x2e, 0x40, 0x3b, 0x67, 0x6e, 0x86, 0xf8, + 0xd6, 0x4f, 0xa9, 0x34, 0x3f, 0x89, 0x77, 0xbe, 0x97, 0x25, 0xda, 0x9a, 0xc1, 0xf1, 0xab, 0x9c, 0xc3, 0x83, 0x2e, + 0x52, 0xe2, 0xc8, 0x54, 0xae, 0xd2, 0xba, 0x07, 0x00, 0xbf, 0x2f, 0xdf, 0xd7, 0x6d, 0xef, 0x6c, 0x67, 0xa2, 0xb7, + 0x88, 0x6a, 0x98, 0xac, 0xc8, 0x4a, 0xb4, 0xbe, 0x68, 0x81, 0x1f, 0xb9, 0x09, 0x04, 0xb9, 0x92, 0xa0, 0x2f, 0x04, + 0x41, 0xc2, 0x64, 0xf1, 0x27, 0xb5, 0x0c, 0xa8, 0x4e, 0xc3, 0xc0, 0x8e, 0x29, 0xa3, 0x78, 0x77, 0x2b, 0x46, 0x67, + 0x7a, 0xea, 0x85, 0x97, 0xff, 0x7d, 0x9b, 0x36, 0x2b, 0x05, 0x4c, 0x16, 0x10, 0x1c, 0xa1, 0x4e, 0xa0, 0x34, 0x3d, + 0x17, 0x3f, 0xba, 0x08, 0xa0, 0x4e, 0x40, 0x0c, 0x98, 0x14, 0xb4, 0xff, 0xf3, 0xa1, 0x53, 0x69, 0xbb, 0xe4, 0x57, + 0x43, 0xb3, 0x1e, 0xef, 0xb4, 0x59, 0x39, 0xdb, 0x7b, 0xce, 0xc4, 0x35, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, + 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, + 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xae, 0xa4, 0xee, 0xa7, 0x13, 0xa2, 0x32, 0x32, 0xb8, 0x98, 0x6c, 0x06, 0x37, + 0xd2, 0xb7, 0x89, 0xe7, 0x59, 0x4f, 0xb1, 0x5e, 0x15, 0x17, 0xca, 0x43, 0x0a, 0xaa, 0xbe, 0x19, 0xdd, 0x2c, 0x10, + 0xf9, 0xce, 0x8a, 0xa8, 0x4a, 0xa3, 0x6e, 0x12, 0x46, 0x8b, 0x32, 0x99, 0x7d, 0xa6, 0xf1, 0x3c, 0x46, 0x7c, 0x69, + 0x4b, 0xa0, 0x4e, 0x61, 0xd5, 0xdc, 0xf1, 0x4e, 0x18, 0x1b, 0x4e, 0xaa, 0x66, 0x8c, 0xcb, 0x5c, 0x0c, 0x46, 0x49, + 0xea, 0x56, 0x97, 0x3b, 0xf8, 0x38, 0x5e, 0x2c, 0xf2, 0x74, 0x09, 0xee, 0xe4, 0x1c, 0xda, 0x93, 0xe1, 0x76, 0xe1, + 0xd5, 0xea, 0x5e, 0xe7, 0xb3, 0xf9, 0x0f, 0xbe, 0x72, 0x48, 0x21, 0xcf, 0xa6, 0xd6, 0x30, 0x15, 0x92, 0x67, 0x0b, + 0x51, 0xa7, 0x44, 0x11, 0x90, 0x2d, 0x24, 0xe3, 0xf4, 0x79, 0xc8, 0x16, 0x87, 0xb5, 0x14, 0x42, 0xf1, 0x40, 0xf1, + 0x33, 0x66, 0x06, 0x90, 0xa1, 0xbe, 0x8b, 0x69, 0xb6, 0xcc, 0x48, 0x3d, 0xeb, 0x37, 0x4f, 0xa7, 0x8e, 0xab, 0x6c, + 0x17, 0x82, 0xaa, 0xe0, 0x52, 0x6c, 0xb7, 0xa0, 0xdb, 0x77, 0x84, 0x51, 0xb4, 0x50, 0xfe, 0x69, 0x96, 0x42, 0x23, + 0x51, 0x9c, 0x2a, 0x60, 0xc5, 0xc0, 0x78, 0x2f, 0x14, 0x7c, 0x1a, 0x0c, 0x92, 0xff, 0x93, 0x61, 0x6b, 0x39, 0x9e, + 0xc9, 0xeb, 0x55, 0xc5, 0xb1, 0x55, 0xb0, 0x10, 0x80, 0xa6, 0x44, 0x52, 0xc5, 0x55, 0x3b, 0x1e, 0x6d, 0x21, 0xb0, + 0x7c, 0xaf, 0xa9, 0x7c, 0xa3, 0x40, 0x57, 0xc3, 0xf6, 0xfe, 0x5c, 0x0c, 0x19, 0xed, 0x62, 0x81, 0x52, 0x7c, 0xf3, + 0xe0, 0x6c, 0x77, 0x30, 0xad, 0x32, 0xf1, 0x28, 0xb5, 0x75, 0xf5, 0x3d, 0x81, 0x15, 0x34, 0xd4, 0x5a, 0x92, 0x4e, + 0xaf, 0x76, 0x01, 0x0c, 0x3f, 0x32, 0x6b, 0xc9, 0x00, 0xfc, 0x78, 0x2e, 0xab, 0xa2, 0x38, 0x03, 0xd3, 0x68, 0xee, + 0x31, 0x2e, 0x11, 0x69, 0x87, 0x45, 0x3c, 0xc7, 0xad, 0x21, 0xd0, 0xf7, 0x29, 0xa0, 0xe5, 0xd8, 0xf5, 0xe3, 0x18, + 0x71, 0x26, 0xc7, 0xa7, 0x96, 0x39, 0x17, 0xf3, 0x1e, 0xb8, 0x7d, 0xdf, 0xdf, 0x92, 0xa4, 0x03, 0x70, 0xe1, 0xca, + 0xca, 0x26, 0x02, 0x97, 0x8a, 0x39, 0xd1, 0x4d, 0xe7, 0xdd, 0x44, 0xd3, 0xde, 0xbf, 0x86, 0xba, 0xa7, 0x36, 0xf8, + 0x0b, 0x40, 0x09, 0x2f, 0xcc, 0x89, 0x79, 0xb3, 0x2e, 0x9a, 0x6f, 0x6b, 0x94, 0xd5, 0xd7, 0x30, 0x11, 0x6c, 0x3f, + 0x70, 0x34, 0x16, 0x14, 0x20, 0xd1, 0xfb, 0xab, 0xa8, 0x02, 0x0f, 0x34, 0x98, 0x45, 0xba, 0x11, 0x9c, 0x3b, 0x54, + 0xa6, 0xf3, 0x39, 0xe3, 0x82, 0x2c, 0x43, 0xc5, 0x2c, 0xcb, 0x90, 0x5f, 0x11, 0xf1, 0x9c, 0x18, 0x1c, 0xf7, 0x39, + 0xdc, 0xb2, 0xd4, 0xb0, 0xec, 0xee, 0x69, 0xd9, 0xb7, 0x0b, 0xd3, 0xa8, 0xd3, 0x22, 0x11, 0xfb, 0x1e, 0x8e, 0xe6, + 0xa7, 0x87, 0xdd, 0x9a, 0x54, 0x56, 0xd5, 0xf3, 0x49, 0x4a, 0xcf, 0x7c, 0x5a, 0x1c, 0xf2, 0x72, 0xb5, 0x6a, 0x6b, + 0xf2, 0x23, 0x6e, 0x03, 0xb8, 0xaf, 0x2a, 0x72, 0x2a, 0x84, 0x08, 0xff, 0xc8, 0x8d, 0x5c, 0xdc, 0xbb, 0xd4, 0x98, + 0xc8, 0x78, 0x5d, 0x5d, 0x0a, 0x9d, 0xc6, 0x60, 0x37, 0x43, 0x91, 0x52, 0xbf, 0xea, 0x32, 0x68, 0x6d, 0x36, 0xf1, + 0x39, 0xf2, 0x09, 0xa7, 0xc2, 0x96, 0xb0, 0x7c, 0x9d, 0x71, 0x06, 0x53, 0x69, 0x2d, 0xc9, 0x51, 0x6c, 0xfe, 0xc0, + 0xe8, 0x24, 0xf3, 0xac, 0x9e, 0x5b, 0x6c, 0xc1, 0x59, 0x4b, 0x44, 0xaa, 0xc5, 0xe8, 0xbb, 0x18, 0x7c, 0xdc, 0xf8, + 0x05, 0xd9, 0x5e, 0x85, 0x05, 0x8a, 0x43, 0xc0, 0x3f, 0x02, 0xeb, 0x0c, 0x35, 0x44, 0x50, 0xd2, 0x95, 0xa9, 0x2d, + 0x6f, 0xc2, 0xc8, 0xaf, 0x19, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, + 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xbb, + 0x94, 0x34, 0xa1, 0x59, 0x7d, 0xfb, 0x3d, 0x7b, 0xdc, 0x33, 0xeb, 0xde, 0xbd, 0x2f, 0xd0, 0x75, 0x7d, 0xaf, 0x22, + 0x72, 0xae, 0xa4, 0x9c, 0x97, 0x36, 0x4b, 0x64, 0x3c, 0xfa, 0x6f, 0x04, 0x99, 0x9b, 0xae, 0xf6, 0x0b, 0x6c, 0xe6, + 0xde, 0xbc, 0x8f, 0xd7, 0xd8, 0x7f, 0xc3, 0x74, 0xf7, 0x2a, 0xf2, 0x7c, 0x4d, 0xc2, 0xc0, 0xb7, 0x89, 0x71, 0xbb, + 0xdb, 0xb4, 0xab, 0x31, 0x6b, 0x1b, 0xd0, 0x35, 0xe0, 0xa0, 0x6b, 0xbe, 0xf4, 0x88, 0x8f, 0x04, 0x9c, 0xc8, 0xf5, + 0xaa, 0x89, 0xf2, 0xec, 0xad, 0xd9, 0x33, 0x19, 0x99, 0xd9, 0x74, 0xf0, 0x0c, 0x7e, 0x80, 0xa5, 0xbb, 0x2a, 0x70, + 0x59, 0x82, 0x9e, 0xe3, 0x20, 0x83, 0x0e, 0x87, 0xa1, 0x97, 0x22, 0x1a, 0xf8, 0x06, 0xde, 0x0b, 0x26, 0x13, 0x61, + 0x1f, 0x77, 0xfb, 0x41, 0x6b, 0xe3, 0xcf, 0xfb, 0x19, 0x0c, 0xf3, 0xa9, 0x53, 0x5b, 0x4e, 0xfd, 0xc0, 0x38, 0xfb, + 0x65, 0x1b, 0x19, 0x9f, 0x52, 0x0b, 0x67, 0x54, 0x3c, 0x9e, 0x4b, 0x56, 0xac, 0xa3, 0x7f, 0xf1, 0x8f, 0xac, 0x55, + 0x5e, 0x52, 0x2b, 0x14, 0x18, 0x48, 0x0b, 0xd8, 0x55, 0xbf, 0x19, 0x2b, 0x21, 0x35, 0xba, 0x17, 0xa6, 0x87, 0xda, + 0x3e, 0x73, 0x2b, 0xee, 0x6b, 0x2d, 0xde, 0xe8, 0x95, 0xc3, 0x38, 0x1f, 0xa7, 0xac, 0xb0, 0x3d, 0x02, 0xca, 0x19, + 0x41, 0xf3, 0x34, 0xed, 0x2f, 0x31, 0x7c, 0x34, 0x79, 0xc0, 0x47, 0x7d, 0xde, 0x68, 0xd0, 0x37, 0x66, 0x28, 0x5a, + 0xf2, 0x43, 0x60, 0x96, 0x68, 0x18, 0x15, 0xa6, 0xc0, 0x42, 0xa9, 0xeb, 0x94, 0x62, 0x31, 0xb5, 0xf6, 0x8c, 0x1d, + 0x2c, 0x90, 0x78, 0x73, 0x6d, 0x5b, 0x6a, 0x07, 0x69, 0x6c, 0x17, 0x96, 0xce, 0x9e, 0x1d, 0x70, 0x1c, 0x71, 0xa9, + 0x8b, 0x1f, 0x75, 0x45, 0xf7, 0x5e, 0xe4, 0x6e, 0x6a, 0xe8, 0x4b, 0xd4, 0x13, 0xbb, 0xec, 0xaf, 0x8d, 0xdd, 0xe4, + 0x54, 0xb4, 0x30, 0xdb, 0xbd, 0x81, 0x87, 0xc3, 0xbf, 0x41, 0xf0, 0xf4, 0x73, 0xe2, 0x44, 0x8e, 0x7f, 0x4d, 0x74, + 0x10, 0x08, 0xa5, 0x82, 0x91, 0xc8, 0x43, 0x77, 0x9a, 0x43, 0x86, 0x57, 0x37, 0x52, 0x1d, 0x91, 0x9e, 0x90, 0xbf, + 0x01, 0xfb, 0xbf, 0xbe, 0x81, 0xd7, 0xb2, 0xff, 0xbd, 0xd7, 0xfc, 0xf5, 0x18, 0x76, 0x32, 0xbe, 0x31, 0xc9, 0xc1, + 0x54, 0x3b, 0x27, 0x4e, 0x6f, 0xd4, 0x48, 0x65, 0x04, 0x45, 0x20, 0xef, 0x0d, 0xcd, 0xbf, 0xa1, 0x65, 0xc8, 0x28, + 0x72, 0xb8, 0xaf, 0x15, 0x45, 0x53, 0xd3, 0x45, 0x0a, 0x5e, 0x56, 0xf7, 0xf9, 0x6f, 0xb1, 0x33, 0xc4, 0xfb, 0x29, + 0x66, 0xc0, 0xae, 0xc7, 0x83, 0x08, 0xbc, 0x68, 0x4b, 0xfa, 0x50, 0x65, 0x4c, 0x89, 0x62, 0xca, 0xff, 0xb9, 0xbe, + 0x6a, 0xea, 0x37, 0x19, 0x67, 0xd1, 0xa2, 0x1e, 0x30, 0xf5, 0x2d, 0x0a, 0xd9, 0x2b, 0x0e, 0xed, 0xf3, 0xe3, 0x68, + 0x53, 0x17, 0xb1, 0xac, 0xef, 0xfa, 0x54, 0x04, 0x1d, 0x5c, 0x77, 0xd1, 0xd3, 0x93, 0xb7, 0x65, 0x3a, 0xc1, 0x6f, + 0x44, 0xc3, 0xd7, 0x59, 0x78, 0x84, 0x2c, 0xdb, 0x20, 0x55, 0x1a, 0x7a, 0x2a, 0x35, 0xce, 0xeb, 0x12, 0xd2, 0x84, + 0x66, 0x7e, 0xbd, 0x01, 0x2a, 0xad, 0xb6, 0x58, 0x0c, 0x44, 0x36, 0x33, 0x39, 0xd9, 0xdf, 0x1e, 0x70, 0x93, 0x86, + 0xba, 0xc4, 0x67, 0xe4, 0x10, 0xc8, 0x0a, 0xad, 0x5c, 0xe9, 0x63, 0x30, 0x2c, 0x34, 0xb5, 0x47, 0x07, 0xad, 0xc2, + 0x00, 0x40, 0x21, 0x27, 0x9b, 0x7b, 0xcf, 0xe0, 0xa1, 0xaf, 0x85, 0x9b, 0x13, 0xd9, 0xe7, 0x15, 0x34, 0x4d, 0x0d, + 0x39, 0xd0, 0x70, 0xac, 0x9e, 0xc8, 0x80, 0x85, 0x8f, 0x5e, 0x95, 0x8c, 0x8d, 0xf5, 0xd1, 0x38, 0x58, 0xab, 0xaa, + 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, + 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xe1, 0xfb, 0x29, 0x84, 0x5a, 0xb0, 0xfd, 0x3c, + 0x75, 0xc1, 0xd9, 0x89, 0x82, 0xd4, 0x48, 0x91, 0x51, 0xde, 0x78, 0x3e, 0x23, 0x60, 0x1d, 0x73, 0x72, 0x30, 0xfb, + 0xec, 0xc9, 0x4f, 0x19, 0x06, 0x85, 0x17, 0xb0, 0xee, 0xa0, 0x93, 0xbc, 0x46, 0x00, 0xde, 0x22, 0xed, 0x41, 0x71, + 0xfb, 0xf6, 0xed, 0x8a, 0xf9, 0xb9, 0x52, 0x59, 0x87, 0x6d, 0xe1, 0xa3, 0x94, 0x1d, 0x82, 0x25, 0xda, 0x72, 0xc0, + 0xe2, 0x02, 0x7a, 0x2d, 0x12, 0x3a, 0x25, 0x2b, 0x97, 0xfb, 0x62, 0xd4, 0xb2, 0xa4, 0x79, 0xdb, 0x83, 0x79, 0x20, + 0x56, 0xee, 0xc8, 0xc0, 0x24, 0x36, 0xa3, 0x6d, 0x69, 0xc1, 0x72, 0x4e, 0x02, 0x2e, 0x9b, 0x80, 0x14, 0x0d, 0x3a, + 0x22, 0x60, 0x79, 0xe3, 0x24, 0x28, 0xce, 0x6a, 0xf2, 0x61, 0xcc, 0xa3, 0x41, 0xcf, 0xcd, 0x98, 0x03, 0x95, 0x4e, + 0x97, 0xcb, 0x19, 0xed, 0x94, 0x3a, 0xd4, 0x89, 0x49, 0x9a, 0xdc, 0x72, 0xea, 0xba, 0x53, 0xba, 0x91, 0x56, 0xc1, + 0x97, 0x32, 0x33, 0x5b, 0x41, 0xa9, 0xe1, 0x87, 0xc8, 0xeb, 0x4b, 0xb9, 0x5f, 0xf3, 0x14, 0x78, 0x89, 0x95, 0x6b, + 0x77, 0xaf, 0xfa, 0x70, 0x7e, 0xe3, 0x9a, 0xbb, 0x65, 0x3d, 0x68, 0x64, 0xe1, 0x17, 0xa9, 0xe4, 0x2f, 0x39, 0x6b, + 0x45, 0xbc, 0x9a, 0x31, 0x1d, 0x73, 0xbb, 0x1a, 0x77, 0xd4, 0x3c, 0x60, 0x07, 0x48, 0xea, 0xa0, 0xe6, 0xd1, 0xf6, + 0x80, 0x89, 0x0e, 0x5f, 0xa9, 0x32, 0xeb, 0x80, 0x5c, 0x9a, 0x76, 0xe8, 0x00, 0xb0, 0x84, 0xc2, 0xc6, 0xa2, 0xff, + 0xec, 0x9e, 0x46, 0x77, 0x8d, 0xbe, 0x11, 0x37, 0xfc, 0x67, 0x3c, 0x2c, 0x7d, 0x43, 0x30, 0x04, 0xe5, 0x63, 0x11, + 0xc8, 0x44, 0xce, 0x54, 0x13, 0x32, 0x03, 0x80, 0x10, 0x15, 0x23, 0xe5, 0xb9, 0x94, 0x70, 0xdf, 0xf0, 0xd3, 0xdd, + 0x52, 0x03, 0x5a, 0xf4, 0xe9, 0x0a, 0xc7, 0xd4, 0x02, 0x5e, 0xce, 0x47, 0xa1, 0xee, 0x0d, 0xe5, 0xbc, 0xec, 0xcc, + 0xd2, 0x4d, 0x41, 0x49, 0xb3, 0xce, 0x23, 0x3d, 0x1e, 0x36, 0x37, 0xde, 0x02, 0x25, 0xa8, 0x09, 0x6f, 0x98, 0x3c, + 0xa5, 0xd6, 0xed, 0xd3, 0x34, 0x6b, 0x5f, 0x88, 0x55, 0x0d, 0xf7, 0xb3, 0xee, 0x31, 0x0e, 0x16, 0x44, 0x48, 0x9a, + 0x2f, 0xd3, 0x19, 0xc8, 0xf5, 0x40, 0xdd, 0x70, 0x6b, 0x41, 0x02, 0xb4, 0x9f, 0x3c, 0xf7, 0xe5, 0xf5, 0xda, 0xc0, + 0x88, 0x19, 0x39, 0xf0, 0xa3, 0x83, 0xb2, 0x47, 0x6d, 0x5f, 0xba, 0x73, 0x8f, 0x55, 0x75, 0x0b, 0x83, 0xf8, 0x87, + 0x1b, 0x46, 0x68, 0x22, 0x4e, 0x5d, 0x77, 0xbd, 0x86, 0x3f, 0xce, 0x6d, 0xed, 0x4c, 0x63, 0x1b, 0x43, 0xb5, 0x8c, + 0xd7, 0x20, 0x0a, 0xcc, 0xe1, 0x5b, 0x22, 0xdc, 0xf5, 0x4b, 0x38, 0x46, 0x59, 0x84, 0x31, 0x94, 0x6e, 0xce, 0x10, + 0x33, 0x31, 0xda, 0xb5, 0x01, 0xe9, 0xd1, 0x4b, 0x9c, 0xf7, 0xc2, 0x45, 0x75, 0x8f, 0xa6, 0x6d, 0x2b, 0xb6, 0x1d, + 0x4a, 0x3d, 0x2e, 0x21, 0x0a, 0xe5, 0x09, 0x5f, 0x07, 0x2f, 0xd0, 0xe7, 0x48, 0x17, 0x30, 0x4c, 0x21, 0x23, 0xea, + 0x0a, 0x9c, 0x6e, 0xe7, 0xc7, 0xc1, 0xea, 0x72, 0xac, 0x62, 0x09, 0x97, 0x0b, 0xca, 0xd7, 0x81, 0x28, 0x6e, 0xe5, + 0x4e, 0x51, 0x4b, 0x2e, 0x2e, 0x7b, 0xa7, 0x58, 0xcd, 0x21, 0x09, 0x59, 0xf8, 0xa0, 0xeb, 0xf1, 0xf6, 0x13, 0x47, + 0x4b, 0xcb, 0xaa, 0x99, 0xf6, 0x92, 0x15, 0x0f, 0x7b, 0xea, 0xd2, 0xde, 0x21, 0x3c, 0x85, 0x33, 0x16, 0x66, 0x2f, + 0x13, 0x01, 0x21, 0x5c, 0xba, 0x5a, 0x38, 0x06, 0x5f, 0x3d, 0x78, 0x1c, 0x4e, 0x02, 0x1f, 0xc3, 0x6b, 0x0a, 0x30, + 0x3d, 0xac, 0xc4, 0xe1, 0x15, 0xa7, 0xd3, 0x41, 0x14, 0x2d, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, + 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, + 0xbd, 0x08, 0xc3, 0x19, 0x97, 0x45, 0x35, 0x73, 0xbb, 0xc0, 0x97, 0xa7, 0xea, 0x3a, 0xcd, 0x36, 0x54, 0x5a, 0x98, + 0xcd, 0x19, 0x50, 0xdf, 0xec, 0xd4, 0xb8, 0x34, 0xe3, 0x0e, 0xd9, 0x54, 0x89, 0x74, 0xf2, 0xe1, 0x3c, 0x08, 0x67, + 0x81, 0xb4, 0x51, 0x10, 0x89, 0x94, 0x04, 0xda, 0x4a, 0xff, 0x22, 0x20, 0xe6, 0x3a, 0x15, 0xa1, 0xdc, 0x6c, 0x4d, + 0xf1, 0x81, 0x04, 0x6b, 0xe9, 0x4e, 0x07, 0xbe, 0xd6, 0xfe, 0x0a, 0x85, 0xa6, 0xa8, 0xe0, 0x9c, 0xe6, 0x38, 0x2f, + 0x96, 0x06, 0x42, 0x98, 0x40, 0x9d, 0xda, 0xdf, 0x2f, 0xf9, 0x27, 0x7b, 0x70, 0xe0, 0xa4, 0x5d, 0x4a, 0x1f, 0x9b, + 0x33, 0xfc, 0x37, 0xd0, 0x44, 0x30, 0x07, 0x1a, 0x20, 0x80, 0xc1, 0x8a, 0x96, 0xd4, 0xf6, 0xa5, 0x0f, 0xcb, 0xe6, + 0x40, 0x18, 0x92, 0xc5, 0x90, 0x56, 0x06, 0xce, 0x71, 0xfa, 0x91, 0xf2, 0x55, 0xc1, 0x55, 0x62, 0x0f, 0x20, 0x41, + 0x89, 0x31, 0xf8, 0xed, 0x16, 0x99, 0xcc, 0xcc, 0x5b, 0xb8, 0x5c, 0x56, 0xae, 0x10, 0xe5, 0x78, 0x86, 0x8a, 0x3f, + 0xdb, 0x48, 0xfc, 0xfa, 0x39, 0xa9, 0x80, 0x3a, 0xf9, 0x71, 0x96, 0x0c, 0x0f, 0xd6, 0x9b, 0xb7, 0xab, 0x63, 0x09, + 0x3a, 0x29, 0x0a, 0x77, 0x95, 0xbe, 0xc6, 0x81, 0x36, 0xa8, 0xfb, 0x2e, 0xd7, 0x9c, 0x3a, 0x3e, 0x8d, 0xe3, 0xac, + 0xa4, 0xec, 0x49, 0x00, 0x6f, 0x68, 0x3f, 0x77, 0x59, 0x0e, 0xf4, 0x5c, 0x02, 0x84, 0x3b, 0xd3, 0x8e, 0xf3, 0x56, + 0xc7, 0x58, 0x5c, 0xc2, 0x27, 0x4b, 0x47, 0x47, 0xfe, 0xde, 0xc3, 0xb0, 0x5e, 0xcb, 0xdc, 0xd8, 0x20, 0x5d, 0x49, + 0x49, 0xa2, 0xdb, 0x86, 0x5c, 0x11, 0x01, 0x37, 0x9d, 0x43, 0x11, 0xd8, 0x1d, 0x55, 0xc7, 0x28, 0x04, 0xa7, 0xe3, + 0xeb, 0x65, 0x41, 0xbd, 0x76, 0xe5, 0x3c, 0x88, 0xa5, 0x24, 0xc4, 0xa7, 0x4f, 0xd7, 0x3c, 0x20, 0x7f, 0x1f, 0x6d, + 0x18, 0x54, 0xe7, 0x69, 0x4e, 0x7f, 0xbe, 0x7a, 0x15, 0x4d, 0xac, 0x89, 0x1f, 0x4b, 0xa0, 0xf5, 0x9c, 0xc1, 0xcb, + 0xb0, 0x75, 0x8c, 0x01, 0x89, 0x5c, 0x49, 0xe8, 0xb7, 0xbe, 0x18, 0x45, 0x5d, 0x28, 0x31, 0x62, 0x2b, 0x6f, 0x2d, + 0x7f, 0x5d, 0x81, 0x3e, 0x01, 0x06, 0xe7, 0xc2, 0x70, 0x7b, 0xca, 0x78, 0xc4, 0x3b, 0xe5, 0xdd, 0x49, 0xce, 0xd7, + 0x04, 0xb4, 0xbf, 0x9c, 0xdf, 0x03, 0xf2, 0xab, 0x58, 0x6c, 0x20, 0x39, 0xcf, 0x5d, 0xbb, 0x75, 0x70, 0x8f, 0x60, + 0x1a, 0xa9, 0x1b, 0x6a, 0x0e, 0xe7, 0x93, 0xad, 0x77, 0x33, 0x54, 0xb7, 0x2b, 0x37, 0xe4, 0x33, 0x0f, 0xd9, 0x24, + 0x10, 0x64, 0xf7, 0x0a, 0x87, 0xd1, 0x27, 0x5c, 0x02, 0x35, 0xc9, 0xf6, 0xe0, 0xa8, 0x5b, 0x53, 0xf6, 0x54, 0xc6, + 0xea, 0x43, 0xdf, 0xa8, 0x6b, 0x6e, 0x76, 0x0e, 0xff, 0x53, 0xa4, 0x2a, 0x41, 0xc2, 0xd6, 0x46, 0xe9, 0x40, 0x70, + 0xc9, 0xa2, 0xbd, 0xa0, 0x28, 0x5f, 0x38, 0x38, 0xad, 0x4f, 0x6e, 0xee, 0xbd, 0x6f, 0x4e, 0x15, 0xc1, 0x0a, 0x5a, + 0xd8, 0x64, 0xb2, 0x5f, 0xde, 0xca, 0x14, 0x62, 0xfb, 0x8f, 0xc2, 0x9e, 0x8b, 0xe8, 0x71, 0xab, 0x00, 0x92, 0x32, + 0x45, 0xd6, 0xfb, 0xcc, 0x28, 0xba, 0xf0, 0xe0, 0x3d, 0xa0, 0xe8, 0x9a, 0xec, 0xbd, 0x43, 0x84, 0x3c, 0x13, 0x53, + 0xf4, 0xde, 0xe2, 0x71, 0xc8, 0xf8, 0x9f, 0xab, 0xa2, 0xa5, 0x97, 0xd1, 0x90, 0x46, 0x33, 0x00, 0x20, 0x69, 0xb1, + 0x79, 0xf4, 0x47, 0xa8, 0x90, 0xad, 0x5a, 0x43, 0x35, 0x00, 0x3b, 0xd1, 0x3a, 0x2f, 0xcd, 0x91, 0xb0, 0x7b, 0xa0, + 0x00, 0xba, 0xbc, 0x60, 0xf2, 0xf8, 0x61, 0x38, 0x86, 0xfc, 0x37, 0x6d, 0xc0, 0x6b, 0x1f, 0x5a, 0x08, 0x6a, 0x7d, + 0x3b, 0x39, 0x19, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, + 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x87, 0x97, 0x72, + 0x1b, 0x65, 0x4f, 0x21, 0x2e, 0x4a, 0xe4, 0xf7, 0x21, 0xb6, 0xed, 0xcc, 0xdb, 0xac, 0x5e, 0x80, 0x65, 0x24, 0xc2, + 0x5c, 0x76, 0xcf, 0x17, 0x85, 0x85, 0x8a, 0x41, 0x57, 0x34, 0x72, 0xd0, 0xb4, 0x63, 0xe6, 0xbd, 0x80, 0x78, 0x20, + 0x6e, 0x59, 0x9f, 0xdf, 0x89, 0x68, 0xa6, 0x71, 0x21, 0xe5, 0x13, 0xd3, 0xf1, 0x56, 0x1e, 0x2b, 0xdf, 0xa1, 0x58, + 0x1a, 0xeb, 0x15, 0x56, 0x19, 0xe3, 0x60, 0x6e, 0xd2, 0x44, 0x62, 0x8a, 0xa7, 0xa5, 0xcf, 0xfd, 0xc9, 0x61, 0xf7, + 0x57, 0xf8, 0x5d, 0x91, 0xfa, 0x56, 0xd5, 0x29, 0xbe, 0x25, 0x69, 0x23, 0x78, 0xb7, 0x52, 0x3d, 0x0f, 0x2d, 0x2f, + 0xb0, 0x3d, 0xa3, 0xf9, 0xb7, 0x84, 0x74, 0x81, 0x35, 0xa7, 0x7a, 0x24, 0x32, 0x81, 0x17, 0x22, 0x71, 0xdd, 0xcc, + 0x68, 0xa4, 0xeb, 0xad, 0xba, 0x63, 0x11, 0xe9, 0x1d, 0x7e, 0x01, 0x80, 0xed, 0x2b, 0xf0, 0xfb, 0x34, 0xc8, 0x33, + 0x9f, 0x7e, 0xdc, 0x3d, 0xe5, 0xef, 0xab, 0xd1, 0x68, 0x29, 0x97, 0xde, 0x60, 0xa0, 0x68, 0xe6, 0x8f, 0x66, 0xef, + 0x3c, 0xbe, 0x02, 0xdb, 0x6a, 0xcb, 0xf4, 0xd7, 0xb9, 0x4b, 0x52, 0xcd, 0x6b, 0x2b, 0x41, 0xf8, 0xcc, 0x6a, 0xd9, + 0x84, 0x82, 0xc8, 0x77, 0x90, 0x9d, 0xca, 0xa2, 0x0c, 0xa3, 0xdb, 0x81, 0x8d, 0xf8, 0x95, 0x7b, 0xaf, 0x31, 0x1b, + 0xd0, 0xd4, 0x6c, 0xc4, 0x1b, 0xb8, 0xdb, 0x1b, 0x91, 0x87, 0xf4, 0x73, 0x33, 0x89, 0xeb, 0xa3, 0x2e, 0x2a, 0x95, + 0xfd, 0xc6, 0x95, 0x05, 0xdc, 0x68, 0xeb, 0x63, 0x13, 0xd7, 0x04, 0x2c, 0xb7, 0xfd, 0x51, 0x80, 0x63, 0x0c, 0x21, + 0x1c, 0x1b, 0x00, 0x05, 0x38, 0x07, 0x42, 0x4f, 0xa4, 0x86, 0xd0, 0x90, 0x4e, 0x82, 0xcf, 0x1d, 0x97, 0xb8, 0xfc, + 0xff, 0xf6, 0x67, 0xf1, 0xca, 0x3e, 0x73, 0xf3, 0xb0, 0xae, 0xa7, 0x84, 0x0e, 0xf9, 0x7a, 0x38, 0x60, 0x3d, 0x38, + 0x4e, 0x02, 0xd6, 0x07, 0xa8, 0x5c, 0x9e, 0xd1, 0x45, 0xb0, 0x1e, 0x42, 0x99, 0x50, 0xc0, 0x86, 0xbd, 0x35, 0x73, + 0x18, 0xda, 0x9c, 0x53, 0xcb, 0x75, 0x57, 0x8f, 0xb9, 0x60, 0xe2, 0x4f, 0xcc, 0x01, 0x5a, 0x1a, 0x6e, 0xae, 0x75, + 0x77, 0x5f, 0x1b, 0x92, 0x11, 0x00, 0xfd, 0xf7, 0x88, 0x45, 0x04, 0x45, 0x1f, 0xb0, 0xa9, 0x81, 0x09, 0xe5, 0x95, + 0x8d, 0x4d, 0xcd, 0x35, 0x69, 0x8a, 0x67, 0x9c, 0x85, 0x3b, 0xc0, 0x87, 0x6e, 0xef, 0x74, 0x30, 0xb1, 0xf2, 0xa1, + 0x2e, 0x72, 0x0c, 0xcf, 0x4c, 0x7f, 0x1f, 0x11, 0xc7, 0x21, 0xa3, 0x06, 0x96, 0xfe, 0xe4, 0x6d, 0x55, 0x45, 0x5b, + 0x05, 0x6d, 0x5b, 0x6c, 0x93, 0x2d, 0x25, 0x1a, 0x67, 0x74, 0xbe, 0x55, 0xfb, 0x33, 0x5d, 0x98, 0x2f, 0xa7, 0xa4, + 0x25, 0x07, 0xcf, 0xda, 0xc7, 0xe4, 0x85, 0x5c, 0x12, 0x50, 0x80, 0xdd, 0x54, 0xdc, 0x91, 0xd5, 0x96, 0xbf, 0x40, + 0x66, 0xe2, 0x3d, 0xad, 0xa5, 0x21, 0x4e, 0xfd, 0xbb, 0x7a, 0x17, 0xa9, 0xed, 0x42, 0xa0, 0xc0, 0xa7, 0xd8, 0x14, + 0x56, 0xe0, 0xd1, 0xdd, 0x57, 0x13, 0x83, 0x03, 0x6c, 0x0b, 0x14, 0xd8, 0x1c, 0xa6, 0xff, 0xc0, 0xd9, 0xda, 0x0e, + 0x43, 0x5b, 0x38, 0x4c, 0x53, 0x9c, 0x50, 0x42, 0x64, 0x7d, 0x0e, 0x69, 0xc5, 0x24, 0x0f, 0x71, 0x2f, 0x61, 0x1e, + 0x84, 0x04, 0x52, 0xdc, 0x2d, 0xf8, 0xd5, 0xa7, 0x00, 0x44, 0x46, 0xfb, 0x69, 0xbb, 0x89, 0x24, 0x57, 0x3d, 0x27, + 0xa9, 0x36, 0x8a, 0x8a, 0xfa, 0x12, 0xd0, 0xf8, 0x17, 0xd4, 0x59, 0x23, 0x91, 0x1b, 0xa6, 0x02, 0x6a, 0x4f, 0x84, + 0x0d, 0xd9, 0xaf, 0xb7, 0x64, 0x13, 0xec, 0x39, 0xaa, 0xc4, 0xf0, 0xe1, 0xe4, 0x4b, 0x20, 0xab, 0xaa, 0xaa, 0xaa, + 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, + 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xc7, 0x2a, 0x76, 0x74, 0x5f, 0xbf, 0x8d, 0xa6, 0x70, 0x09, + 0xe1, 0x44, 0x72, 0x0a, 0xa1, 0xe8, 0x97, 0x2c, 0xc1, 0x69, 0x85, 0xbc, 0x1b, 0x07, 0x8d, 0xc0, 0xa1, 0xf3, 0x23, + 0x6f, 0xfc, 0x33, 0x8c, 0xf2, 0x82, 0x22, 0xfe, 0x43, 0x2d, 0x8e, 0x2b, 0xa1, 0xad, 0xff, 0x53, 0xbc, 0x8f, 0xe3, + 0xf5, 0xe3, 0x27, 0x40, 0xc6, 0x9d, 0xed, 0xca, 0x11, 0x3b, 0x5b, 0x47, 0xa1, 0x66, 0x61, 0x29, 0xbb, 0xc0, 0x91, + 0x65, 0x80, 0x74, 0xd8, 0xcf, 0x8b, 0xcd, 0x13, 0xe1, 0x6b, 0x7e, 0xf5, 0x04, 0x3f, 0xac, 0x2d, 0x0e, 0x88, 0x24, + 0xa1, 0x7f, 0xdc, 0xd9, 0xf6, 0x4f, 0x94, 0x30, 0x8f, 0x5f, 0x78, 0x60, 0xd8, 0x8c, 0x9d, 0xbf, 0xb5, 0xaa, 0xf2, + 0x8d, 0x89, 0x66, 0xd5, 0x26, 0xcd, 0x43, 0x56, 0xc0, 0x24, 0x47, 0x12, 0x25, 0x78, 0x47, 0x33, 0xd9, 0x3b, 0xfd, + 0x93, 0x17, 0x4e, 0x49, 0x0a, 0x89, 0xa5, 0x97, 0xca, 0x6e, 0x30, 0x63, 0x68, 0x75, 0x83, 0x82, 0x45, 0x40, 0x0b, + 0x39, 0xb3, 0x5c, 0xc2, 0x6e, 0xdb, 0x70, 0x03, 0x2a, 0x68, 0x8f, 0x54, 0x2c, 0x5b, 0xdf, 0xd2, 0x08, 0xa2, 0xbb, + 0x86, 0x18, 0xe5, 0xc7, 0x1e, 0xc2, 0xb6, 0xda, 0x72, 0x10, 0x60, 0xe9, 0x75, 0x6f, 0xf3, 0xad, 0x10, 0x50, 0x57, + 0x21, 0x36, 0x7d, 0x7c, 0x8b, 0xa9, 0x04, 0xba, 0x48, 0x6f, 0x01, 0x5f, 0x86, 0xfe, 0x93, 0xf2, 0x3f, 0x5f, 0xe2, + 0x76, 0x05, 0x29, 0x88, 0x45, 0x49, 0x43, 0xb4, 0x6a, 0x8a, 0xbc, 0x8a, 0x10, 0x98, 0x54, 0xd0, 0xbe, 0x0b, 0xdb, + 0xdc, 0x5b, 0xf8, 0xfb, 0x15, 0xd3, 0x72, 0x14, 0xbf, 0xf0, 0x75, 0xae, 0x4d, 0xe5, 0xea, 0x09, 0xe3, 0x36, 0x23, + 0x79, 0x55, 0x61, 0x19, 0x8f, 0x53, 0xd7, 0x9c, 0x68, 0x02, 0x2d, 0xbe, 0x18, 0xe7, 0x48, 0xb8, 0x6e, 0x06, 0x09, + 0x5c, 0xd7, 0x61, 0xde, 0xde, 0x12, 0x15, 0x10, 0xe5, 0x9d, 0xc3, 0x58, 0xa3, 0x8c, 0xa1, 0x6b, 0x19, 0x92, 0x5f, + 0x2d, 0x99, 0xae, 0xb4, 0x16, 0xad, 0xd6, 0x1e, 0x81, 0x48, 0x99, 0x16, 0xe6, 0xed, 0xd2, 0x56, 0x2b, 0x03, 0xf7, + 0xd0, 0xf8, 0xf5, 0x81, 0x4d, 0x4f, 0x32, 0xf4, 0x4b, 0xac, 0xe9, 0x20, 0x70, 0xc8, 0xf5, 0xa8, 0x25, 0xab, 0x21, + 0x08, 0x06, 0x18, 0x64, 0x94, 0x40, 0x13, 0x30, 0xb8, 0x43, 0xc2, 0xad, 0x76, 0xf2, 0x46, 0xfb, 0x72, 0xc5, 0x95, + 0x32, 0xed, 0xcc, 0x41, 0x43, 0x06, 0xb3, 0x9e, 0xcd, 0x81, 0x2a, 0x84, 0x6c, 0x62, 0x46, 0x19, 0xee, 0xb0, 0x5e, + 0xde, 0x70, 0xd1, 0x48, 0xed, 0x68, 0x8b, 0x2c, 0xaf, 0xe4, 0x57, 0x69, 0xfe, 0x1b, 0xd7, 0x29, 0x25, 0x13, 0xd0, + 0xfd, 0x53, 0x84, 0xc4, 0x9c, 0xa1, 0x9c, 0x57, 0x57, 0x53, 0xe2, 0x3d, 0x29, 0x17, 0x2f, 0xaf, 0xa2, 0x9c, 0x73, + 0xec, 0x5a, 0x65, 0xef, 0xb3, 0x67, 0x61, 0x27, 0xa4, 0x75, 0x06, 0xa4, 0x54, 0xc8, 0x5e, 0x98, 0xff, 0x44, 0xc0, + 0x5b, 0x2f, 0xdc, 0xcc, 0xa3, 0x18, 0x02, 0x2b, 0x38, 0x25, 0x97, 0xe5, 0x8a, 0xf3, 0xa1, 0x8c, 0xae, 0xc3, 0x3a, + 0x84, 0x8e, 0x84, 0xbe, 0x1f, 0xb1, 0x52, 0xdd, 0x10, 0x2e, 0x89, 0xa8, 0x5a, 0xed, 0xb1, 0x2a, 0x42, 0x07, 0x91, + 0x24, 0xaa, 0x64, 0x84, 0x6f, 0x53, 0x83, 0x37, 0xfe, 0xfc, 0xbe, 0x31, 0x4f, 0x1e, 0x0d, 0x3b, 0x5c, 0x1e, 0x85, + 0xe2, 0x51, 0xc4, 0xed, 0x9d, 0x73, 0xe6, 0xce, 0x33, 0xe7, 0xfa, 0x03, 0x5f, 0x1a, 0x4c, 0x89, 0xad, 0x72, 0xd5, + 0xc0, 0x59, 0x82, 0x67, 0x4a, 0xc3, 0x9e, 0xbc, 0x19, 0xc5, 0x78, 0xd4, 0x5e, 0x2d, 0x3e, 0x7c, 0x13, 0x51, 0x3b, + 0x4b, 0xa3, 0x17, 0x68, 0x69, 0x04, 0xb3, 0x6f, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, + 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, + 0xc3, 0x19, 0x92, 0xc8, 0x8e, 0xa7, 0x2a, 0x12, 0x2a, 0xd8, 0xe9, 0xfc, 0x0e, 0x44, 0x5a, 0x9e, 0x03, 0x5a, 0x34, + 0xc0, 0xbd, 0xb6, 0x22, 0x8a, 0x46, 0xa4, 0xa2, 0xe2, 0x4e, 0x41, 0x71, 0xf0, 0x62, 0x35, 0xb6, 0x8c, 0xdf, 0x35, + 0x48, 0x19, 0x56, 0x64, 0x7e, 0x25, 0x9b, 0xaa, 0xb5, 0xb5, 0xa9, 0x13, 0x55, 0x93, 0x4c, 0x2b, 0xe4, 0x74, 0x99, + 0x3c, 0xa5, 0xd8, 0x21, 0x13, 0x48, 0x85, 0xdb, 0x1a, 0xd6, 0x90, 0xd1, 0xfb, 0x4a, 0xb7, 0x65, 0x70, 0x02, 0xf3, + 0xa8, 0x12, 0xa3, 0x6e, 0x9a, 0xbd, 0xce, 0x5d, 0x2b, 0x7f, 0x34, 0xce, 0x01, 0x08, 0x3f, 0x60, 0x75, 0xac, 0xf9, + 0x96, 0x6f, 0x46, 0x39, 0x1f, 0x26, 0x9c, 0xb4, 0x75, 0xe1, 0xc0, 0xd4, 0xee, 0x65, 0x82, 0xf1, 0x4d, 0x81, 0x09, + 0x23, 0x89, 0xad, 0xbb, 0x7c, 0x23, 0x25, 0x0e, 0xf0, 0xbb, 0xbf, 0x4c, 0x27, 0x57, 0x37, 0x29, 0x82, 0xc1, 0x82, + 0xd0, 0x34, 0x8a, 0x16, 0x0b, 0xa4, 0x8f, 0xd6, 0x87, 0xda, 0x14, 0x6b, 0x5c, 0xa0, 0x5f, 0xbe, 0x8b, 0x53, 0x7d, + 0x67, 0xc7, 0xaa, 0x6a, 0xd8, 0x11, 0xaf, 0xfc, 0x77, 0x0a, 0x7b, 0xd6, 0x59, 0xb4, 0x21, 0x3c, 0xc5, 0x8d, 0xe1, + 0xbd, 0x9b, 0xc5, 0x57, 0x5a, 0xc8, 0xf4, 0xbc, 0x65, 0xb1, 0x81, 0x68, 0x97, 0xb0, 0x36, 0xc4, 0x90, 0x41, 0xad, + 0x86, 0xde, 0xab, 0x05, 0x06, 0x91, 0x3e, 0x6f, 0x46, 0x3b, 0x4d, 0xec, 0x5f, 0x42, 0xf2, 0xf3, 0x64, 0xe8, 0x11, + 0xdb, 0x68, 0xbd, 0x63, 0x1c, 0x12, 0xb8, 0xfc, 0xfb, 0xc0, 0x37, 0x2c, 0x39, 0x10, 0xa2, 0x0e, 0x26, 0xed, 0xd1, + 0x91, 0xd9, 0x73, 0xcc, 0xdd, 0xe8, 0xa4, 0x3e, 0x95, 0xa7, 0xda, 0xc6, 0x0e, 0x72, 0xf5, 0x7b, 0x5f, 0x9d, 0x23, + 0xbf, 0xfa, 0x1c, 0xec, 0x80, 0x5b, 0x10, 0xab, 0xf1, 0x79, 0x57, 0x10, 0x99, 0xfc, 0x74, 0x36, 0xc2, 0x3f, 0x0d, + 0x2b, 0x6f, 0xbf, 0xac, 0x9c, 0x06, 0x06, 0xba, 0x5d, 0xe0, 0x3a, 0xe0, 0xdb, 0x1a, 0x8f, 0x84, 0x7f, 0x67, 0x4c, + 0x09, 0xcb, 0x17, 0x85, 0x26, 0xd5, 0x25, 0x38, 0x88, 0x44, 0x95, 0x8f, 0xd1, 0x9b, 0x19, 0x04, 0xb1, 0x47, 0x8c, + 0x81, 0x88, 0xb7, 0x28, 0x24, 0x86, 0xa7, 0xe8, 0x48, 0x0a, 0x92, 0x30, 0x4c, 0x7c, 0xbf, 0x4f, 0x75, 0x40, 0xb5, + 0xb1, 0x48, 0xb8, 0xf1, 0xed, 0xac, 0x5a, 0x06, 0xd8, 0x0f, 0x98, 0x36, 0xc9, 0x4d, 0x6e, 0x92, 0xf5, 0x31, 0x7d, + 0xdd, 0xb9, 0x08, 0xbb, 0x2a, 0x49, 0xb5, 0x40, 0xc7, 0xbc, 0x6a, 0x2b, 0x07, 0xc5, 0x46, 0x7f, 0x71, 0xcc, 0x96, + 0xb1, 0xba, 0x4e, 0x65, 0x5a, 0x1a, 0xdb, 0x05, 0x60, 0xba, 0xc8, 0xb6, 0x51, 0x6b, 0x26, 0x41, 0xff, 0x1e, 0xbd, + 0x84, 0xf9, 0x75, 0x1e, 0x72, 0x1f, 0xf2, 0xf3, 0x53, 0x4b, 0x39, 0x65, 0x94, 0x80, 0xf9, 0xe6, 0xbe, 0xfd, 0x26, + 0x7a, 0x54, 0x74, 0x9a, 0xbe, 0x2c, 0x3d, 0xe1, 0xb7, 0x81, 0x1d, 0x42, 0xbc, 0x4e, 0x58, 0x53, 0x6a, 0x9a, 0x52, + 0x21, 0x83, 0xa4, 0x34, 0x33, 0x6e, 0x20, 0x6d, 0x58, 0x54, 0x78, 0x72, 0xf6, 0x54, 0xc2, 0xe4, 0x7f, 0x6b, 0xf6, + 0xac, 0xec, 0x11, 0x3c, 0x22, 0xbd, 0x62, 0x8f, 0x85, 0x69, 0x47, 0xaa, 0x6c, 0x57, 0x56, 0x24, 0xd0, 0x5b, 0x80, + 0x7d, 0x6c, 0xd1, 0x6f, 0xcb, 0xda, 0xcd, 0x67, 0xa7, 0x0c, 0xa0, 0x6a, 0xb8, 0x67, 0x57, 0x85, 0xb7, 0x0b, 0xe3, + 0xdb, 0x90, 0x52, 0xb7, 0x1c, 0xec, 0x50, 0x1d, 0xeb, 0xd5, 0xde, 0xa1, 0x8f, 0xff, 0x1f, 0x39, 0x6e, 0x13, 0x69, + 0xe4, 0x15, 0xcd, 0x61, 0x72, 0x16, 0x85, 0xdb, 0xf4, 0xf9, 0xe6, 0x5d, 0x6d, 0x4e, 0x86, 0xc6, 0xd9, 0xd8, 0x89, + 0x30, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, + 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xd5, 0x5f, 0xf2, 0x2c, 0xd2, + 0x1b, 0x7c, 0x66, 0x29, 0xc3, 0x72, 0xea, 0x27, 0xcf, 0x57, 0x57, 0xe7, 0x66, 0x11, 0xb6, 0x59, 0x5a, 0xbf, 0x51, + 0x19, 0x3f, 0x95, 0x29, 0x05, 0x37, 0x59, 0x3a, 0x74, 0x12, 0x8d, 0xbc, 0x11, 0x43, 0x0b, 0xe5, 0x07, 0x33, 0x53, + 0x01, 0xa1, 0x73, 0xdb, 0x8a, 0x0e, 0x67, 0x1b, 0x6d, 0x7e, 0x82, 0xbc, 0x15, 0x65, 0x95, 0x3f, 0xa8, 0x37, 0x1d, + 0x52, 0x4c, 0xad, 0x47, 0xfa, 0xeb, 0x2d, 0xd9, 0x3c, 0xef, 0x3f, 0xbc, 0xb9, 0xa5, 0xbc, 0xe9, 0xff, 0x2b, 0x1a, + 0x86, 0x55, 0x2a, 0x68, 0xae, 0x5b, 0xd6, 0x13, 0x72, 0xc5, 0xb4, 0xed, 0x15, 0x7e, 0x09, 0x23, 0x6b, 0x77, 0x57, + 0x9e, 0x12, 0x2f, 0xe7, 0x7a, 0x49, 0x4d, 0x38, 0x9b, 0xa8, 0x19, 0x19, 0x47, 0xaf, 0x2b, 0x78, 0x76, 0x30, 0x3c, + 0xc8, 0xe9, 0xeb, 0xc2, 0x96, 0x4d, 0x44, 0x05, 0x5f, 0xfd, 0xb1, 0xb7, 0x17, 0x0c, 0x49, 0x35, 0xc7, 0xb2, 0xfd, + 0x7c, 0xf6, 0x70, 0x5a, 0x97, 0xff, 0x00, 0x60, 0x66, 0x89, 0x4e, 0xe8, 0x7e, 0x2b, 0xf7, 0x91, 0x7f, 0x4d, 0x0e, + 0x74, 0xd9, 0x6e, 0x86, 0x9d, 0x7d, 0x41, 0xb1, 0x1f, 0xcd, 0x3a, 0xeb, 0x67, 0x7a, 0xe6, 0x6c, 0x81, 0x3a, 0x42, + 0x8a, 0x74, 0xec, 0x4c, 0xbd, 0x3c, 0x5b, 0x81, 0xd3, 0x2b, 0x3b, 0xbe, 0x7e, 0xac, 0x47, 0x6d, 0x86, 0x89, 0xa5, + 0x22, 0xfa, 0x44, 0x2a, 0x59, 0x34, 0x77, 0x40, 0x33, 0xa0, 0xc2, 0xf1, 0x59, 0xfb, 0x41, 0xe9, 0x22, 0xcc, 0x28, + 0xc0, 0xb9, 0xd7, 0x53, 0x65, 0x8f, 0xf4, 0x89, 0x94, 0x63, 0xf3, 0x1b, 0xe3, 0x65, 0x1c, 0xd0, 0x19, 0x84, 0x3a, + 0x8b, 0xe5, 0xf5, 0x19, 0x4a, 0x12, 0x1e, 0x7b, 0xad, 0x97, 0x5b, 0x1b, 0x52, 0xd6, 0x29, 0xc1, 0xe4, 0x79, 0x87, + 0x55, 0x30, 0xd8, 0x09, 0xdc, 0x8c, 0x0e, 0x9c, 0x26, 0xf4, 0x76, 0xc1, 0x45, 0xe1, 0x19, 0xc9, 0xa6, 0x76, 0x11, + 0xd8, 0xf6, 0x1c, 0x42, 0xa0, 0x53, 0xe7, 0x06, 0x18, 0x2a, 0x50, 0x61, 0xc5, 0xa5, 0x38, 0x53, 0x31, 0x89, 0x77, + 0x84, 0x1e, 0xcf, 0x5b, 0x13, 0x72, 0xb9, 0x4c, 0x0b, 0xaa, 0xae, 0x5e, 0x3e, 0x11, 0xc4, 0xb2, 0x7b, 0x2c, 0x9e, + 0xf4, 0xf2, 0xa2, 0x81, 0xb2, 0x9c, 0x58, 0xd4, 0x5e, 0xd9, 0x51, 0x9b, 0xcd, 0xbf, 0x96, 0x59, 0x00, 0x1d, 0x50, + 0xc7, 0x51, 0xde, 0xf0, 0x6d, 0x99, 0x69, 0x93, 0x4c, 0xd0, 0xdd, 0x81, 0xf7, 0xc3, 0xeb, 0xb7, 0xfa, 0xe9, 0x8b, + 0x81, 0x97, 0xb8, 0xd5, 0x5c, 0x43, 0x79, 0xa3, 0x93, 0x06, 0x9a, 0x31, 0xc2, 0x6a, 0xfa, 0xb5, 0x21, 0xa4, 0xb1, + 0xe3, 0xa8, 0x37, 0x30, 0xb8, 0x4f, 0x51, 0xc9, 0xaf, 0x40, 0xbb, 0x08, 0x12, 0xc0, 0x1c, 0x2a, 0x36, 0x0b, 0x41, + 0x7f, 0x64, 0x66, 0xd8, 0xcf, 0x1b, 0xc7, 0x2a, 0x81, 0x1c, 0x2c, 0xde, 0x58, 0x5b, 0x93, 0x38, 0x01, 0xdb, 0x1b, + 0xbb, 0x3f, 0x42, 0x87, 0x4c, 0x82, 0x5b, 0x4c, 0xd6, 0x2b, 0x5e, 0x4e, 0xc6, 0xdf, 0x83, 0xeb, 0x7f, 0x65, 0x18, + 0xfc, 0x6e, 0x71, 0x32, 0x5f, 0x23, 0xc0, 0x5c, 0xb1, 0x94, 0xf3, 0xfe, 0xf0, 0x41, 0x19, 0xb7, 0xf3, 0x31, 0xfe, + 0xfc, 0x54, 0xa6, 0x43, 0x91, 0x51, 0x7b, 0x2e, 0x21, 0xad, 0xf9, 0xbb, 0xad, 0x13, 0xb5, 0xe4, 0x71, 0x37, 0x90, + 0xbf, 0xa3, 0xa5, 0x5b, 0x65, 0x76, 0x0d, 0xf4, 0xd2, 0xa5, 0x92, 0xe8, 0xd9, 0x4f, 0xf3, 0x81, 0x51, 0xdf, 0x3a, + 0x2b, 0x38, 0xb0, 0x68, 0xf2, 0xdd, 0x8b, 0x5b, 0x69, 0xd9, 0xd3, 0x07, 0xbe, 0xd4, 0x66, 0x83, 0x83, 0xbf, 0x6d, + 0xaf, 0x3c, 0x25, 0x84, 0x12, 0x06, 0x7d, 0x74, 0x3e, 0x2c, 0x0d, 0x68, 0x1e, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, + 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, + 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0xde, 0xcd, 0x5a, 0xcf, 0x1a, 0x0c, 0xc6, 0xa3, 0xd6, 0xda, 0x9e, 0xa0, + 0x33, 0x5b, 0x1c, 0x01, 0xac, 0x38, 0x27, 0x93, 0x0b, 0x4b, 0x0e, 0xf6, 0xf5, 0xd3, 0x76, 0xc6, 0x73, 0x6d, 0x2f, + 0x19, 0x7f, 0x3e, 0xba, 0x01, 0x74, 0x6b, 0xc6, 0xd4, 0xed, 0xec, 0x7a, 0x8b, 0x89, 0x3b, 0xad, 0x14, 0x9a, 0xac, + 0x58, 0x52, 0x6c, 0x81, 0xb7, 0x59, 0xe2, 0x60, 0x09, 0xdd, 0x58, 0x82, 0x43, 0x11, 0x21, 0x2a, 0xdf, 0xd1, 0xb1, + 0x1d, 0x20, 0x47, 0x77, 0x8e, 0x4b, 0x69, 0xb5, 0x7f, 0x97, 0x3b, 0xdc, 0xa0, 0x62, 0xb7, 0x91, 0x47, 0x16, 0x88, + 0x26, 0x9f, 0x9b, 0xe3, 0xdc, 0x4d, 0xfe, 0x5b, 0x9e, 0x88, 0x35, 0x69, 0x9d, 0x07, 0x1c, 0x67, 0xea, 0x83, 0xef, + 0x13, 0xdd, 0x92, 0x54, 0x62, 0x05, 0x6c, 0x44, 0x3f, 0x84, 0x34, 0x5b, 0xe6, 0x4d, 0x33, 0x10, 0x6a, 0x07, 0xe2, + 0x8e, 0x3e, 0x29, 0xf7, 0x62, 0xf6, 0xbd, 0x5a, 0x9c, 0xaa, 0xa3, 0xa1, 0x6c, 0xf5, 0x50, 0x77, 0xd3, 0x67, 0x2d, + 0x98, 0xf9, 0x49, 0x9f, 0x7e, 0x4d, 0x5f, 0x14, 0x6d, 0x06, 0x82, 0x57, 0xe5, 0xb2, 0x2d, 0x50, 0x02, 0xf2, 0x2e, + 0x1f, 0xb7, 0x43, 0x8d, 0xcf, 0x7a, 0x40, 0x7e, 0x4c, 0xc1, 0x56, 0x42, 0x55, 0xfb, 0x44, 0xf5, 0xec, 0xed, 0x26, + 0x69, 0x3c, 0xf2, 0x72, 0x16, 0x21, 0x85, 0x21, 0x34, 0xe1, 0x8f, 0xb8, 0xc2, 0x10, 0x1a, 0xd7, 0xfc, 0xdf, 0x08, + 0x39, 0x54, 0x43, 0xb0, 0xb2, 0x27, 0x21, 0x4c, 0xc4, 0x5d, 0x4e, 0x5d, 0xd8, 0x7c, 0x86, 0xe5, 0xad, 0xae, 0x30, + 0x03, 0x31, 0x09, 0x10, 0xce, 0x16, 0x9c, 0xf2, 0xcb, 0x62, 0x21, 0xff, 0xc1, 0x47, 0x79, 0x44, 0x2f, 0x35, 0x62, + 0x8f, 0x0d, 0xb7, 0x11, 0xdf, 0x8e, 0x90, 0x12, 0x04, 0xeb, 0x3a, 0x39, 0xca, 0x9c, 0x78, 0x72, 0xe6, 0xec, 0xcd, + 0xad, 0xc9, 0xb3, 0xa5, 0x28, 0xf9, 0x16, 0x04, 0x67, 0x23, 0x54, 0x2a, 0xf1, 0xff, 0xe3, 0x35, 0xd8, 0x12, 0xc3, + 0xff, 0xb4, 0x63, 0x1f, 0xfa, 0xcb, 0x12, 0xac, 0x81, 0x0d, 0x61, 0x40, 0xeb, 0x18, 0x23, 0xbe, 0x35, 0x4f, 0x4c, + 0x8e, 0x27, 0x2a, 0x5e, 0x31, 0xda, 0xe7, 0xc6, 0xbe, 0xc7, 0x38, 0xfe, 0x64, 0xd5, 0xd4, 0x4f, 0xde, 0xe5, 0xd7, + 0x0a, 0x68, 0x33, 0x33, 0x2a, 0x8e, 0xa6, 0xa4, 0x15, 0x8a, 0x38, 0x2b, 0x1c, 0x49, 0x3f, 0xa9, 0xea, 0xed, 0xd1, + 0xdb, 0xd3, 0x8b, 0x09, 0x8b, 0xcc, 0x36, 0x81, 0x63, 0x6f, 0xa0, 0x56, 0x1b, 0x14, 0x74, 0x77, 0x2e, 0x51, 0xf5, + 0x60, 0xc5, 0xb0, 0x7b, 0x7d, 0xf4, 0xf7, 0x31, 0x1c, 0xcb, 0xa2, 0x89, 0x07, 0xc1, 0x94, 0x04, 0x8f, 0x17, 0x8c, + 0x5f, 0x83, 0xb2, 0x1c, 0x49, 0xda, 0x11, 0xe7, 0x22, 0xc5, 0x06, 0x74, 0xa5, 0x7b, 0x9b, 0x79, 0xd4, 0xb8, 0xe8, + 0x9b, 0x0a, 0x68, 0x7c, 0xc2, 0x3d, 0x95, 0x08, 0xe6, 0x58, 0x63, 0x33, 0xf2, 0x83, 0x65, 0xd0, 0x0a, 0x0d, 0xcf, + 0x25, 0x6b, 0x10, 0x45, 0x0c, 0xa1, 0x20, 0x87, 0x9c, 0x63, 0x1b, 0xb5, 0xee, 0x68, 0x7f, 0x4c, 0x1b, 0x95, 0x2b, + 0x1b, 0xca, 0x0b, 0x55, 0x9a, 0x94, 0x5c, 0x86, 0xce, 0xa0, 0xe2, 0x77, 0xc9, 0x65, 0xa1, 0x13, 0x95, 0x64, 0x8f, + 0x0e, 0x9d, 0x95, 0x3b, 0xa8, 0x3d, 0x2c, 0x0f, 0xfd, 0x11, 0x3f, 0x3e, 0x10, 0x60, 0x94, 0x32, 0x0c, 0x23, 0xce, + 0x83, 0x2a, 0xdf, 0x13, 0xba, 0x90, 0x5c, 0xe5, 0xeb, 0x77, 0x44, 0x4b, 0xca, 0x68, 0x6c, 0xaf, 0xdc, 0x23, 0xb5, + 0xfd, 0xbf, 0x88, 0x66, 0xd0, 0xff, 0xb5, 0x64, 0x6c, 0xd3, 0xe2, 0x92, 0x8b, 0xe1, 0xda, 0x27, 0x21, 0x9b, 0x10, + 0xc8, 0xbb, 0x65, 0x5b, 0xfe, 0x07, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, + 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, + 0x00, 0x00, 0x66, 0xeb, 0x22, 0x02, 0x75, 0xc8, 0x14, 0xfc, 0xf9, 0x17, 0x6d, 0xf6, 0x8a, 0xa1, 0x40, 0x89, 0xd4, + 0xd5, 0xe5, 0x83, 0x1e, 0xeb, 0x1f, 0xa9, 0xf1, 0xae, 0x3e, 0xc5, 0xd0, 0x09, 0xea, 0xa2, 0x7f, 0xf1, 0xdc, 0x08, + 0x23, 0x99, 0x24, 0x8e, 0x12, 0xa6, 0x8e, 0x8a, 0x6a, 0xf9, 0xfc, 0x46, 0x6d, 0x6a, 0xfd, 0xe2, 0x8b, 0x07, 0xd3, + 0xfe, 0xf7, 0x3e, 0x42, 0x48, 0x37, 0x24, 0xfc, 0xff, 0x90, 0x6d, 0x40, 0x04, 0x79, 0x0d, 0xf3, 0xaa, 0x78, 0xa2, + 0xc3, 0x96, 0xb4, 0xd3, 0x7b, 0x41, 0xc7, 0xec, 0x3d, 0x98, 0x15, 0xa8, 0x6c, 0x62, 0x44, 0xa7, 0x78, 0x3c, 0x7c, + 0x3c, 0x66, 0x52, 0x0a, 0xe8, 0x8b, 0x6c, 0x8d, 0x41, 0x41, 0x46, 0xc9, 0xfd, 0xf5, 0xff, 0xd4, 0x3b, 0x34, 0x25, + 0xd3, 0x1c, 0xc0, 0xbb, 0x8d, 0x55, 0xbe, 0xfb, 0xc8, 0x6e, 0xb2, 0xfc, 0x4a, 0x72, 0x66, 0x62, 0x89, 0x7d, 0x18, + 0x0e, 0xb4, 0x25, 0x47, 0x60, 0xe1, 0xf2, 0x1c, 0xb2, 0x40, 0x0b, 0x4a, 0xc4, 0xa9, 0x51, 0x8f, 0x21, 0xc2, 0x51, + 0x25, 0x48, 0x45, 0x61, 0x63, 0xc9, 0x9f, 0x71, 0x0f, 0x00, 0x64, 0x56, 0x63, 0x64, 0xd9, 0xfc, 0xfe, 0xd6, 0xc9, + 0x8a, 0xd5, 0x50, 0xc0, 0xbf, 0x00, 0xf3, 0x71, 0x7d, 0x1f, 0x81, 0x34, 0x45, 0xdb, 0xc9, 0xcb, 0xe4, 0x86, 0x1a, + 0x1c, 0x02, 0xbe, 0x8e, 0x16, 0x92, 0xd4, 0xc1, 0x30, 0x61, 0x20, 0xb1, 0xda, 0x51, 0xf4, 0xef, 0x80, 0xeb, 0xb8, + 0x70, 0xde, 0x6b, 0x69, 0xda, 0xa8, 0xce, 0x25, 0x88, 0x2c, 0x92, 0x18, 0x6d, 0xd1, 0x18, 0xc2, 0x22, 0x8e, 0xe0, + 0x8d, 0x28, 0x7a, 0x0e, 0x7d, 0xc8, 0x50, 0x7f, 0x72, 0xd4, 0xaa, 0xc6, 0xe3, 0x0c, 0x6c, 0xab, 0xcb, 0x3b, 0xe5, + 0x93, 0x90, 0x4f, 0x22, 0xb7, 0x7f, 0x5b, 0x4c, 0x20, 0x0e, 0x1d, 0xef, 0x0d, 0x3c, 0x98, 0xbc, 0xa2, 0xc2, 0xe3, + 0xdf, 0x48, 0x79, 0xb6, 0xac, 0x96, 0xb4, 0x94, 0xad, 0x64, 0x27, 0x29, 0x63, 0xd7, 0x8b, 0x07, 0x51, 0xf4, 0x30, + 0xaf, 0x99, 0x48, 0x37, 0x5f, 0x3e, 0x20, 0xad, 0xee, 0xf4, 0x0e, 0xf1, 0x01, 0x00, 0xef, 0xf8, 0x71, 0xf9, 0xb3, + 0xba, 0x5f, 0x38, 0xa3, 0xd7, 0x39, 0x7b, 0xf9, 0x5f, 0xd6, 0x8e, 0xb1, 0x93, 0x32, 0xcf, 0x46, 0x57, 0x54, 0x67, + 0x60, 0xb4, 0xbf, 0x1d, 0x85, 0xc9, 0x5a, 0x5b, 0xb5, 0xfb, 0x49, 0x99, 0xff, 0xc9, 0xcb, 0xa9, 0x15, 0xdb, 0x9c, + 0xee, 0xba, 0x2f, 0xee, 0xd1, 0xbb, 0x45, 0xe3, 0x3b, 0x0c, 0x38, 0x30, 0x49, 0x92, 0x7a, 0xeb, 0x10, 0x78, 0xeb, + 0x9f, 0xe6, 0xe0, 0x41, 0xe0, 0x2c, 0xe7, 0xe9, 0xbc, 0x8f, 0x8b, 0x84, 0xda, 0x31, 0x72, 0xab, 0x37, 0x84, 0x49, + 0x4f, 0xd0, 0x23, 0x40, 0xba, 0x43, 0x31, 0x61, 0x04, 0x3b, 0x94, 0xd7, 0x3b, 0xdd, 0x49, 0xe5, 0x34, 0x5d, 0x33, + 0xfc, 0xb2, 0x5c, 0x95, 0x92, 0x95, 0x64, 0x72, 0x61, 0xde, 0xec, 0x36, 0x53, 0x07, 0xed, 0xf5, 0x0b, 0x3a, 0x68, + 0x43, 0x14, 0x1a, 0x86, 0xc8, 0xb5, 0xf3, 0xc0, 0x69, 0x0b, 0x47, 0x6c, 0x77, 0xad, 0xb0, 0x49, 0xb0, 0x4a, 0x34, + 0x6b, 0x41, 0x57, 0x4c, 0x51, 0x18, 0xfe, 0xeb, 0x25, 0xcb, 0x55, 0xd0, 0x57, 0xec, 0x41, 0xa0, 0x2c, 0x74, 0x3a, + 0xa0, 0x29, 0x5f, 0x6d, 0xa5, 0xe5, 0x31, 0x65, 0xbb, 0x5f, 0x6b, 0x97, 0x56, 0x5e, 0x7b, 0xaa, 0x9c, 0xd7, 0x55, + 0x1e, 0x14, 0xda, 0x62, 0x17, 0x5e, 0xfe, 0xef, 0xd0, 0x9d, 0xa1, 0xf8, 0x55, 0x19, 0x85, 0xe7, 0xb4, 0xc4, 0x2d, + 0x4c, 0xe6, 0x2b, 0x63, 0x5a, 0xba, 0x83, 0x57, 0x66, 0xf6, 0x0c, 0xca, 0xdd, 0xbb, 0x8d, 0x3c, 0xbf, 0x3b, 0xab, + 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, + 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x00, 0x80, 0x94, 0xa1, 0xb6, 0x10, 0xb3, + 0x5e, 0xf4, 0x62, 0xb6, 0x24, 0x09, 0x0b, 0xf6, 0x0a, 0x25, 0x18, 0xcb, 0x76, 0x03, 0x06, 0xb0, 0x19, 0xa7, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x57, 0x3b, 0x4f, 0xec, 0xa1, 0x0a, 0xaf, 0x76, 0x3b, 0x53, 0xe6, 0xc5, + 0xc9, 0x3d, 0xd0, 0x79, 0xe9, 0xe2, 0x62, 0x19, 0xe0, 0x09, 0x33, 0x25, 0xca, 0x33, 0x93, 0xe0, 0xef, 0x13, 0x15, + 0x18, 0xdd, 0x7c, 0x42, 0x7a, 0xad, 0xb9, 0x75, 0xf5, 0xf7, 0x91, 0x73, 0x52, 0x1f, 0x65, 0xe3, 0x0d, 0x5c, 0x63, + 0x75, 0x19, 0x1f, 0x2c, 0x23, 0x9a, 0x2e, 0xd0, 0x4c, 0x82, 0xbf, 0x4f, 0x54, 0xbc, 0xd9, 0xf8, 0x2f, 0x46, 0xc2, + 0xda, 0x16, 0x0c, 0x11, 0xf7, 0x3d, 0xc5, 0xc0, 0xc5, 0x76, 0xe8, 0x01, 0x40, 0xc5, 0x2d, 0x69, 0x1f, 0x4c, 0x28, + 0x45, 0x1a, 0x79, 0xe7, 0x24, 0x3e, 0x03, 0x9e, 0x58, 0x54, 0x06, 0x47, 0x6e, 0x04, 0x41, 0x57, 0xb0, 0xed, 0x67, + 0x8f, 0x81, 0xad, 0x92, 0x94, 0x91, 0x35, 0xc6, 0x6c, 0xd3, 0x89, 0xdf, 0xcb, 0xc8, 0x4a, 0x4e, 0xeb, 0x60, 0x81, + 0x35, 0xd9, 0x49, 0x22, 0xd4, 0xcb, 0x6d, 0x53, 0xdb, 0xa2, 0xec, 0x39, 0x15, 0x8b, 0x18, 0x03, 0xfb, 0x82, 0xb1, + 0x05, 0xa9, 0x13, 0x46, 0xc5, 0x85, 0x41, 0xbd, 0x3a, 0xc1, 0x6e, 0x7b, 0x96, 0x2c, 0xb2, 0x53, 0x16, 0xf8, 0x23, + 0xf1, 0x4f, 0xa5, 0xfa, 0xfa, 0x0d, 0xbe, 0xaf, 0x48, 0x50, 0x37, 0x2c, 0x1e, 0x6d, 0x8e, 0xf3, 0xe8, 0x96, 0x06, + 0xe8, 0x04, 0x7a, 0x82, 0xdd, 0xf6, 0x2c, 0x59, 0x94, 0x4d, 0x11, 0x59, 0x3f, 0x7a, 0xe5, 0xb3, 0x92, 0x47, 0x6b, + 0x17, 0x2f, 0x46, 0x82, 0x3e, 0x1a, 0x95, 0x80, 0xef, 0x8d, 0xe2, 0xc4, 0x89, 0x4a, 0x25, 0x31, 0x5a, 0xf6, 0x73, + 0xd0, 0x66, 0xc9, 0x96, 0xca, 0x2c, 0xe7, 0xba, 0x6d, 0xea, 0x9d, 0xab, 0x22, 0xf7, 0x51, 0x53, 0x8b, 0xf0, 0xbe, + 0x9d, 0x33, 0xf6, 0x06, 0x27, 0xfc, 0xd5, 0x27, 0x44, 0x04, 0x88, 0x54, 0xa1, 0x7f, 0x5d, 0xdc, 0xcc, 0x7d, 0x9b, + 0x73, 0xc0, 0xf8, 0xbe, 0x9a, 0xe2, 0x1e, 0x24, 0x14, 0x63, 0x9f, 0x73, 0xa2, 0x05, 0x24, 0x57, 0xd7, 0xca, 0xb2, + 0xde, 0x8e, 0xc7, 0x41, 0xd0, 0x81, 0x37, 0xe2, 0x4a, 0x09, 0xab, 0x6d, 0x6c, 0x30, 0x2e, 0x36, 0xf0, 0x13, 0x9d, + 0x3e, 0x1a, 0x49, 0xbf, 0xf8, 0x30, 0x8b, 0xb4, 0x8e, 0x12, 0x9e, 0x4e, 0xfe, 0x95, 0xa8, 0x54, 0xbe, 0xce, 0x8b, + 0x9e, 0xb0, 0x23, 0x41, 0x08, 0xe1, 0x0e, 0x9c, 0xfc, 0x94, 0x9f, 0x31, 0xda, 0xcf, 0x21, 0x66, 0x0e, 0x03, 0x23, + 0xba, 0xf2, 0x6e, 0x41, 0xe1, 0x97, 0xe2, 0x0d, 0x72, 0xf6, 0x49, 0x88, 0x6a, 0x5e, 0xd4, 0x4a, 0xa9, 0x8a, 0x38, + 0x69, 0x49, 0xb6, 0x07, 0x5f, 0x95, 0x36, 0x42, 0xa3, 0xc9, 0x8c, 0xb4, 0x4c, 0xf0, 0xf1, 0x9a, 0x49, 0x82, 0x2e, + 0xa5, 0x11, 0x7b, 0x3c, 0xb2, 0x21, 0xda, 0x38, 0x04, 0x6e, 0x97, 0x6d, 0x76, 0xbd, 0x4a, 0x78, 0x82, 0xe5, 0x9f, + 0x15, 0x24, 0xb8, 0xb3, 0x1a, 0xec, 0x5a, 0x84, 0x89, 0x2b, 0x1c, 0x8e, 0x00, 0xc4, 0x01, 0x7f, 0x1e, 0x3c, 0x0b, + 0x5d, 0x8c, 0xe2, 0x3d, 0x50, 0xfe, 0x17, 0x15, 0x2d, 0xf6, 0xcd, 0x9c, 0x47, 0x40, 0xdf, 0x76, 0x83, 0x64, 0x03, + 0xfa, 0x85, 0x67, 0xd5, 0xd4, 0x41, 0xb2, 0x6c, 0x69, 0xf1, 0x6c, 0xaa, 0x3c, 0xf4, 0x7a, 0xe9, 0x46, 0x05, 0xbd, + 0x58, 0x67, 0x50, 0xa9, 0xef, 0x51, 0xa8, 0xdd, 0xda, 0x63, 0x4a, 0xc2, 0x02, 0x33, 0x08, 0x80, 0x40, 0x7c, 0xe1, + 0x1f, 0xc8, 0x16, 0xb2, 0x09, 0x80, 0xde, 0x57, 0xbd, 0x87, 0x1a, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, + 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, + 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x00, 0x58, 0xa6, 0xab, 0xd0, 0x6b, 0x7c, 0x98, 0x75, 0x5c, 0x91, 0xe2, 0x76, 0x7a, + 0x43, 0x17, 0x8c, 0x88, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd2, + 0x95, 0xfd, 0x2d, 0x7f, 0x48, 0x99, 0x98, 0x0f, 0x63, 0x91, 0xad, 0xb4, 0x6f, 0xfa, 0x94, 0x6f, 0x9c, 0x36, 0x5a, + 0x04, 0x30, 0xab, 0x04, 0xb3, 0xb8, 0x9b, 0xb9, 0xa1, 0xcf, 0x3b, 0x3f, 0xd2, 0xa9, 0x30, 0xf1, 0x93, 0x78, 0xb4, + 0xb9, 0x22, 0x68, 0x6f, 0x9a, 0x6a, 0xb2, 0xf1, 0x36, 0x6c, 0xe7, 0xa1, 0x88, 0x04, 0x30, 0xab, 0x04, 0xb3, 0xb8, + 0x9b, 0xb9, 0xa1, 0xcf, 0x3b, 0x3f, 0xe0, 0x3d, 0xa5, 0x28, 0x40, 0x9d, 0xe1, 0xc1, 0xfc, 0x52, 0x4a, 0x99, 0x42, + 0xc3, 0xaa, 0x2f, 0x26, 0x8e, 0xa8, 0x43, 0x8b, 0x9d, 0x6d, 0x36, 0x98, 0x6c, 0xdd, 0xc8, 0x3b, 0x27, 0xf1, 0x19, + 0xb2, 0xdb, 0xbc, 0xab, 0xe7, 0x56, 0x1e, 0x25, 0xd6, 0xe3, 0xb2, 0xee, 0x10, 0x48, 0xea, 0x39, 0x18, 0x7b, 0x7d, + 0x98, 0x90, 0xcd, 0x18, 0x3b, 0x4b, 0x25, 0x79, 0x82, 0xdd, 0xf6, 0x2c, 0x59, 0x63, 0x37, 0xa8, 0xf1, 0xdb, 0xd7, + 0x7d, 0x31, 0x5b, 0xfd, 0x72, 0x71, 0xc8, 0xb8, 0xfb, 0x44, 0x3e, 0x43, 0x54, 0x86, 0x17, 0xc3, 0xf7, 0x42, 0x4e, + 0xcd, 0x54, 0xdb, 0x67, 0x46, 0x6c, 0x3e, 0x77, 0xf3, 0x02, 0xe8, 0x22, 0xf3, 0xed, 0x98, 0x72, 0xcc, 0x03, 0x04, + 0x5c, 0x37, 0xf3, 0x28, 0x3e, 0x70, 0x95, 0x44, 0xb8, 0x7b, 0xce, 0x8d, 0x9f, 0x42, 0x85, 0x0f, 0x5a, 0xdc, 0x17, + 0x62, 0x3d, 0x4c, 0xf5, 0x3d, 0xe5, 0x08, 0x83, 0x39, 0x22, 0xd3, 0x82, 0x6c, 0x6d, 0x04, 0xe0, 0x58, 0x80, 0x46, + 0x89, 0x46, 0x33, 0xa5, 0x95, 0x90, 0x91, 0x23, 0x2d, 0x7a, 0x21, 0xad, 0xa6, 0x58, 0x07, 0xf8, 0xc0, 0x13, 0x98, + 0x1b, 0xf0, 0xa3, 0x32, 0xbc, 0x92, 0x57, 0x8d, 0x1c, 0x8f, 0xbd, 0xc8, 0x8d, 0xdd, 0xfc, 0xad, 0x06, 0x97, 0xc1, + 0x8a, 0xbc, 0x92, 0x12, 0x49, 0x69, 0x7f, 0x2a, 0x77, 0x68, 0x55, 0x4c, 0x6f, 0xa5, 0x86, 0x82, 0x2d, 0x26, 0x9b, + 0x76, 0xb0, 0xb2, 0x0e, 0x4b, 0xf7, 0x5a, 0x98, 0x3a, 0x94, 0xa6, 0x08, 0x72, 0x95, 0xd8, 0x10, 0x7e, 0xfb, 0x8d, + 0xd1, 0x1c, 0x6f, 0x9a, 0x83, 0x8a, 0xf0, 0xf2, 0xdc, 0xbf, 0x62, 0xba, 0x61, 0x8f, 0x7a, 0x76, 0xd8, 0x15, 0xb7, + 0x45, 0x86, 0x36, 0xdf, 0x7b, 0x20, 0x31, 0xe8, 0xc4, 0x00, 0x5b, 0xd0, 0x34, 0xeb, 0x51, 0xd6, 0xea, 0x99, 0x49, + 0x90, 0x1c, 0x3d, 0x0f, 0xc6, 0xfc, 0x12, 0xf7, 0x95, 0x4e, 0x8c, 0x3d, 0x40, 0x42, 0x88, 0xdc, 0x6c, 0xe0, 0x77, + 0x75, 0x65, 0xf2, 0xf2, 0xfd, 0xfb, 0x69, 0xca, 0x59, 0xcf, 0x03, 0x2b, 0x42, 0xc9, 0x34, 0x74, 0x47, 0x96, 0xdd, + 0xaa, 0x80, 0x9a, 0x8a, 0x21, 0x72, 0x35, 0x41, 0x71, 0x2f, 0x88, 0x1b, 0xae, 0xde, 0x58, 0xc4, 0x10, 0x6f, 0x77, + 0x4c, 0x5d, 0x41, 0xee, 0xc9, 0x5d, 0x38, 0x7b, 0x74, 0x16, 0xec, 0x6d, 0xc8, 0x34, 0xb2, 0x5e, 0xb9, 0xc7, 0x55, + 0xed, 0x2c, 0x07, 0x28, 0xd5, 0xba, 0x92, 0x6c, 0xe5, 0x73, 0xc1, 0x8d, 0x5a, 0xed, 0xfc, 0x1a, 0x94, 0xa3, 0x63, + 0x8d, 0xad, 0x14, 0xa9, 0x6c, 0x26, 0x94, 0x9e, 0x40, 0x56, 0x4a, 0x31, 0xe1, 0x0a, 0x80, 0x9e, 0x93, 0xab, 0x94, + 0x30, 0xd3, 0x5b, 0x4f, 0x19, 0x71, 0xc0, 0xc4, 0x41, 0x40, 0xbd, 0xef, 0xb2, 0xbb, 0x9d, 0x4c, 0x90, 0xba, 0x15, + 0x3a, 0x9d, 0xc4, 0x34, 0x01, 0xca, 0xdb, 0xa5, 0x74, 0x9d, 0x9d, 0x16, 0xbc, 0x22, 0x8d, 0x01, 0x19, 0x97, 0x76, + 0x91, 0x23, 0x83, 0x30, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, + 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x00, 0x02, + 0x48, 0xa6, 0x29, 0xa2, 0x89, 0xff, 0x60, 0xc3, 0x15, 0x9a, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbb, 0xf9, 0x4c, 0x72, 0x3f, 0x24, 0x66, 0x2f, + 0xc2, 0x64, 0xf4, 0xf3, 0x2c, 0x3e, 0xf8, 0x15, 0xed, 0x6a, 0x84, 0x93, 0x06, 0xc8, 0x00, 0x87, 0x0c, 0x95, 0x69, + 0x96, 0x72, 0xb7, 0xd9, 0x5e, 0x5e, 0x06, 0x30, 0x29, 0x8e, 0x45, 0x36, 0x9a, 0xdd, 0xb5, 0x07, 0x43, 0x8a, 0xfc, + 0xda, 0x34, 0x79, 0x21, 0x93, 0x4e, 0x07, 0x50, 0x1d, 0x5d, 0x2a, 0x89, 0x03, 0xe0, 0x62, 0xaf, 0x63, 0x69, 0x4d, + 0xc8, 0x96, 0x6f, 0x66, 0x16, 0x64, 0x2f, 0xce, 0x38, 0x04, 0x99, 0x15, 0x83, 0x9d, 0x5e, 0xab, 0xa5, 0xbb, 0xab, + 0xf3, 0xbc, 0xd0, 0x1e, 0x8f, 0x74, 0x4a, 0xbe, 0x9c, 0x38, 0x33, 0x6a, 0x3c, 0x4b, 0xa7, 0x76, 0x1b, 0x91, 0x64, + 0xe0, 0x43, 0x25, 0x12, 0xef, 0xd5, 0x6f, 0x60, 0x88, 0xdd, 0x29, 0xe4, 0x08, 0xe0, 0x29, 0x84, 0xe0, 0xf3, 0x5f, + 0x91, 0x9c, 0xd6, 0xc1, 0x02, 0x6b, 0x4f, 0xc7, 0x85, 0x9e, 0xf0, 0xfd, 0x74, 0x57, 0x88, 0xa9, 0x87, 0x44, 0xdf, + 0xef, 0x17, 0x62, 0x77, 0x0a, 0x39, 0x02, 0x78, 0x0a, 0x21, 0xf8, 0xfc, 0x57, 0x24, 0xa7, 0x75, 0xb0, 0xc0, 0x1a, + 0xd9, 0x8e, 0x90, 0xc0, 0xe9, 0xdc, 0xcd, 0xb5, 0x38, 0x53, 0x25, 0xa1, 0x42, 0xd9, 0xd2, 0xf8, 0xc6, 0x66, 0xb4, + 0x03, 0xc8, 0x66, 0x8c, 0x9d, 0xa5, 0x92, 0x3c, 0xc1, 0x6e, 0x7b, 0x96, 0x2c, 0xc1, 0xe9, 0xbc, 0x1f, 0x76, 0x02, + 0xb6, 0x67, 0x6c, 0xd0, 0x19, 0xab, 0x3e, 0x7c, 0xa4, 0x89, 0xd8, 0x35, 0xa6, 0x71, 0x71, 0xcc, 0xd4, 0xe2, 0x12, + 0x46, 0x1d, 0x20, 0xd2, 0x6f, 0x24, 0x63, 0x43, 0xcf, 0xbe, 0x87, 0xae, 0x5d, 0xfd, 0x2e, 0x24, 0x28, 0x23, 0x11, + 0x55, 0x39, 0x3d, 0xfb, 0xfe, 0xc4, 0x2a, 0xeb, 0xda, 0x10, 0x34, 0x61, 0x8f, 0x2b, 0xc8, 0x3a, 0x16, 0x27, 0x7e, + 0x41, 0x89, 0xee, 0x80, 0x44, 0x5a, 0x03, 0x46, 0xa0, 0x70, 0x7b, 0x3b, 0xb9, 0x44, 0x01, 0xce, 0xe5, 0xbf, 0x9b, + 0x7a, 0x43, 0xe5, 0x3e, 0xe5, 0x3a, 0x2e, 0xfa, 0x3f, 0xfa, 0x89, 0xf5, 0xf9, 0x09, 0x4c, 0xcc, 0x39, 0x30, 0x7e, + 0x49, 0xe2, 0xd8, 0xf2, 0xd3, 0xac, 0x6d, 0xa4, 0x19, 0x83, 0xdd, 0x19, 0xc8, 0xe1, 0x0a, 0x12, 0xef, 0xd6, 0xd1, + 0x33, 0xe3, 0x4d, 0xdb, 0x1e, 0x0e, 0x0b, 0x47, 0x44, 0xa0, 0x43, 0x99, 0xbb, 0x09, 0xef, 0x38, 0x67, 0x4f, 0xf8, + 0x8e, 0x33, 0x0a, 0x17, 0xcb, 0xc6, 0xf7, 0xe0, 0xae, 0x2d, 0x3e, 0xf1, 0x54, 0xd6, 0xef, 0x0b, 0xfe, 0x15, 0xae, + 0xec, 0x64, 0xbb, 0x17, 0x2b, 0xa5, 0x11, 0x2f, 0xc7, 0xca, 0x0f, 0x3b, 0xcd, 0xd2, 0x58, 0xab, 0x29, 0x79, 0x43, + 0xd8, 0x65, 0xfb, 0x8e, 0x55, 0x6a, 0x0b, 0xc2, 0x50, 0x27, 0xb4, 0x38, 0x82, 0xdd, 0x5e, 0x9f, 0x47, 0xfc, 0x33, + 0x6a, 0xe2, 0x07, 0x57, 0xbb, 0x92, 0x0c, 0x91, 0xd8, 0x88, 0xae, 0xb7, 0xd8, 0xff, 0x34, 0x51, 0xbb, 0xa6, 0x3f, + 0x1f, 0x1a, 0xc7, 0x3e, 0x39, 0x04, 0x0d, 0xbf, 0x6a, 0xfd, 0x3d, 0x4d, 0x59, 0xeb, 0x33, 0x0c, 0x86, 0x5c, 0x73, + 0xaa, 0xfc, 0x9e, 0x0e, 0x48, 0xab, 0x20, 0x9c, 0x60, 0xeb, 0x1e, 0xe3, 0x5e, 0x6a, 0x74, 0x22, 0x80, 0xa1, 0x26, + 0xa1, 0x98, 0x34, 0x20, 0xb8, 0x7b, 0xfe, 0xde, 0x5f, 0x8d, 0x55, 0x1c, 0xb1, 0x6d, 0xb5, 0xde, 0x5d, 0x4f, 0xf7, + 0x12, 0x62, 0x2a, 0x64, 0xc9, 0x4c, 0xd7, 0x23, 0xf1, 0xdf, 0xaf, 0x2c, 0x6f, 0xf3, 0xc3, 0x05, 0xab, 0xaa, 0xaa, + 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, + 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, 0x08, 0xc3, 0x19, 0x60, 0x15, 0xe6, 0xf2, 0x9e, 0x6e, 0x0d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x9e, 0x05, 0x8f, 0xd0, 0xac, 0x48, 0x96, 0xb9, 0x8a, 0xf6, 0xcf, 0x45, 0x31, 0xf2, 0xda, + 0x34, 0x79, 0x21, 0x93, 0x4e, 0x07, 0x50, 0x1d, 0x5d, 0x2a, 0x89, 0x03, 0xe0, 0x62, 0xaf, 0x63, 0x69, 0x33, 0x4e, + 0x92, 0xf6, 0x93, 0x05, 0x9e, 0x48, 0x74, 0x65, 0x2e, 0xba, 0xd1, 0xb1, 0xe2, 0x1e, 0x8c, 0xb6, 0x0e, 0xbb, 0x00, + 0x88, 0x1c, 0xd6, 0x1d, 0xf4, 0x99, 0x49, 0xf0, 0xf7, 0x89, 0x0a, 0xe1, 0xbb, 0x81, 0x78, 0x8a, 0x03, 0x2d, 0xc3, + 0xe0, 0x3a, 0xc7, 0x70, 0x12, 0x3d, 0x68, 0x1b, 0xc0, 0x51, 0x91, 0x64, 0x7c, 0x3a, 0xcc, 0xfc, 0xaf, 0x10, 0xc0, + 0x60, 0x17, 0x80, 0xfc, 0x59, 0xf9, 0xa8, 0x5e, 0xa9, 0xa3, 0xb4, 0xe7, 0xf6, 0xeb, 0xc0, 0x26, 0x76, 0xed, 0xc8, + 0xd2, 0xf8, 0xc6, 0x66, 0xb4, 0x03, 0xc8, 0x66, 0x8c, 0x9d, 0xa5, 0x92, 0x3c, 0xc1, 0x6e, 0x7b, 0x96, 0x2c, 0xf2, + 0x9b, 0xdf, 0xd3, 0x11, 0x39, 0x5a, 0xcf, 0xd7, 0x81, 0x4d, 0xec, 0xda, 0x91, 0xa5, 0xf1, 0x8d, 0xcd, 0x68, 0x07, + 0x90, 0xcd, 0x18, 0x3b, 0x4b, 0x25, 0x79, 0x82, 0xdd, 0xf6, 0x2c, 0x59, 0xa9, 0x87, 0xb4, 0x06, 0x4f, 0x74, 0xdf, + 0x66, 0x62, 0xf3, 0x3a, 0xb1, 0x62, 0x5b, 0x5d, 0xcb, 0x27, 0xae, 0xbd, 0x00, 0x28, 0xae, 0xb5, 0x52, 0x54, 0x1d, + 0x0c, 0x8d, 0x7c, 0xe5, 0xea, 0x08, 0x6d, 0xf6, 0xc9, 0x7f, 0xbe, 0x98, 0xe3, 0xd8, 0xe7, 0x4f, 0xc3, 0x4e, 0x73, + 0x7f, 0x7a, 0xba, 0xbf, 0x63, 0xa2, 0x36, 0x95, 0x36, 0x2d, 0x89, 0x61, 0x76, 0x6d, 0x08, 0x63, 0x80, 0xd4, 0x71, + 0x45, 0x44, 0x44, 0x44, 0x49, 0x9f, 0xf4, 0x49, 0xa4, 0x83, 0x4e, 0xfa, 0x95, 0x0a, 0xe9, 0xc7, 0xca, 0x39, 0x2b, + 0x8f, 0x60, 0x78, 0x1c, 0x4b, 0x15, 0xc8, 0x0b, 0x28, 0x17, 0x9b, 0xdc, 0x4f, 0x23, 0x22, 0x22, 0x22, 0x68, 0xb0, + 0xdb, 0x6d, 0x32, 0xe1, 0xb0, 0xdc, 0x12, 0xc6, 0x52, 0x07, 0xd8, 0xa5, 0xf7, 0x3f, 0xfe, 0x33, 0x0a, 0xad, 0x3c, + 0x8a, 0x12, 0xa0, 0xe7, 0x22, 0xad, 0x5f, 0x28, 0x7d, 0xd2, 0xa7, 0x6d, 0x9d, 0x0f, 0xf1, 0xb5, 0xd6, 0x5f, 0xfc, + 0x5a, 0x7c, 0xad, 0xf0, 0x54, 0xd4, 0x26, 0x9e, 0x67, 0x2d, 0xec, 0x52, 0x6e, 0x1a, 0x1e, 0x07, 0xc5, 0xf1, 0x1f, + 0x10, 0xbf, 0xee, 0xeb, 0x1e, 0x24, 0xd3, 0x9c, 0x86, 0x26, 0x65, 0xe7, 0x33, 0xab, 0xeb, 0x4e, 0xeb, 0xfa, 0xff, + 0xde, 0x6c, 0x73, 0xad, 0x85, 0x0d, 0xb3, 0x63, 0x34, 0x16, 0x38, 0xe6, 0xdf, 0x04, 0xb7, 0x2c, 0x98, 0xcf, 0xd4, + 0xc6, 0x03, 0x6f, 0x4a, 0x7d, 0xd9, 0xa9, 0x36, 0x80, 0x1f, 0x02, 0xe3, 0x44, 0x1e, 0x64, 0x9e, 0x64, 0x4f, 0x0a, + 0xad, 0x9a, 0xb5, 0xd5, 0xff, 0xef, 0x99, 0x70, 0x36, 0x9e, 0xf9, 0x8b, 0x75, 0x81, 0x4a, 0xab, 0xb6, 0xe7, 0xd8, + 0xc2, 0xab, 0xc7, 0x78, 0xba, 0x15, 0x3d, 0x6d, 0x2d, 0x71, 0xb0, 0xbe, 0xd3, 0x88, 0xd9, 0x7d, 0xae, 0x34, 0xb1, + 0x5f, 0x1d, 0x9c, 0x87, 0xfa, 0x47, 0xc6, 0x62, 0xa1, 0x56, 0x0d, 0xd4, 0x33, 0x43, 0x16, 0xf6, 0xf6, 0xa7, 0x55, + 0x4b, 0x56, 0x82, 0x42, 0xf1, 0xdd, 0x96, 0x46, 0x36, 0x0f, 0x0d, 0xc6, 0x1f, 0xd5, 0x18, 0xc5, 0xb8, 0xe3, 0x4d, + 0x9f, 0x02, 0x33, 0x2b, 0xa1, 0x7e, 0x09, 0x05, 0xb5, 0x67, 0x43, 0xe5, 0xac, 0xb3, 0x13, 0x74, 0x3d, 0xf7, 0x63, + 0x44, 0xb8, 0x86, 0xe7, 0xf2, 0x5c, 0x5f, 0x3e, 0x71, 0xab, 0xaa, 0xaa, 0xaa, 0x38, 0x8e, 0xe3, 0x38, 0x1c, 0xbf, + 0xc6, 0x71, 0x72, 0x24, 0x2a, 0xf6, 0x72, 0x4c, 0x79, 0x57, 0xe5, 0x68, 0xf0, 0xee, 0x48, 0x38, 0xb1, 0x25, 0xbd, + 0x08, 0xc3, 0x19, 0x75, 0x66, 0x66, 0x66, 0x99, 0x99, 0x99, 0x99, 0xcc, 0x78, 0xcc, 0xcc, 0x33, 0x87, 0xbf, 0x10, + 0x01, 0xf8, 0xb9, 0xce, 0x34, 0x2b, 0xa5, 0x70, 0x0e, 0x19, 0xb9, 0x6e, 0xdd, 0x87, 0x2f, 0x17, 0x10, 0x66, 0x66, + 0x66, 0x6a, 0xdf, 0xb0, 0xf6, 0x11, 0x74, 0xb4, 0x6f, 0x4c, 0x00, 0x2d, 0xab, 0xbd, 0x88, 0x03, 0x76, 0x38, 0xd3, + 0x33, 0x9f, 0xa3, 0xdd, 0xba, 0xde, 0x8e, 0x5f, 0xe1, 0x4b, 0x23, 0x01, 0x00, 0x00, 0x45, 0x17, 0x5d, 0x74, 0x16, + 0x91, 0xa1, 0x8b, 0x5f, 0x40, 0xf8, 0x15, 0xed, 0x6a, 0x84, 0x93, 0x06, 0xc8, 0x00, 0x87, 0x0c, 0x95, 0x69, 0x96, + 0x72, 0xb7, 0xd9, 0x5e, 0xca, 0x38, 0xb1, 0x13, 0x9f, 0x69, 0x6b, 0xfc, 0x41, 0x05, 0x1e, 0xa1, 0xce, 0x13, 0x60, + 0xdf, 0x0d, 0x97, 0xb2, 0x19, 0x3d, 0x51, 0x3b, 0x3d, 0x2b, 0x1a, 0xf9, 0x41, 0x23, 0x4c, 0x2f, 0x1d, 0xba, 0x8c, + 0x9d, 0xd8, 0xd7, 0x89, 0x9d, 0xd8, 0xd7, 0x81, 0x4d, 0xec, 0xda, 0x91, 0xa5, 0xf1, 0x8d, 0xcd, 0x68, 0x07, 0x90, + 0xcd, 0x18, 0x3b, 0x4b, 0x25, 0x79, 0x82, 0xdd, 0xf6, 0x2c, 0x59, 0xfb, 0xf1, 0x42, 0x2f, 0x95, 0x5a, 0xa9, 0x95, + 0xfb, 0xe4, 0xd3, 0x4a, 0xca, 0x69, 0xdc, 0xec, 0x29, 0x9e, 0x31, 0x9e, 0x91, 0x04, 0x00, 0x34, 0x71, 0x4f, 0x7e, + 0x6a, 0x37, 0xf5, 0x49, 0x37, 0x71, 0xe1, 0x07, 0x7e, 0xe3, 0x46, 0x6e, 0xe4, 0x49, 0x99, 0x35, 0x72, 0x1a, 0x8e, + 0x0c, 0xb1, 0x18, 0xb3, 0xa3, 0xa2, 0x81, 0x19, 0x42, 0x24, 0x6b, 0xff, 0xc6, 0xb8, 0x22, 0x56, 0xcb, 0x6c, 0x17, + 0x7e, 0x2f, 0xc3, 0x24, 0x60, 0x11, 0xa5, 0x06, 0x6c, 0xc4, 0xce, 0xf8, 0x08, 0x4d, 0x7a, 0x16, 0xca, 0x96, 0xa8, + 0x71, 0x24, 0x95, 0x75, 0x74, 0x74, 0x0a, 0x30, 0x14, 0x71, 0x68, 0x23, 0x9a, 0x99, 0x99, 0x19, 0x66, 0x66, 0x66, + 0xe6, 0x32, 0xb5, 0x32, 0xb3, 0xcd, 0x4a, 0x1f, 0x99, 0x01, 0xf4, 0x16, 0x36, 0xcf, 0xc0, 0xf7, 0xa8, 0x95, 0xa5, + 0x15, 0x26, 0xcc, 0x4b, 0xc7, 0x22, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x8b, 0x2e, 0xba, 0x8a, 0xf6, 0xcf, 0x45, 0x31, + 0xf2, 0xda, 0x34, 0x79, 0x21, 0x93, 0x4e, 0x07, 0x50, 0x1d, 0x5d, 0x2a, 0x89, 0x03, 0xe0, 0x62, 0xaf, 0x63, 0x69, + 0x01, 0x00, 0x00, 0xc0, 0xa9, 0xaa, 0xaa, 0x6a, 0x54, 0xd4, 0x53, 0x15, 0x58, 0xd6, 0x6d, 0x37, 0x5a, 0x5b, 0xd4, + 0x08, 0xb2, 0xb0, 0x9f, 0xd9, 0x2c, 0x08, 0x7b, 0x3b, 0x0c, 0x84, 0x44, 0x6a, 0x3c, 0xb1, 0x13, 0x3b, 0x3a, 0xb1, + 0x13, 0x3b, 0x3a, 0x75, 0x88, 0x9d, 0x3d, 0xed, 0x02, 0xbd, 0xb5, 0x7b, 0x26, 0x08, 0xb8, 0x7b, 0xce, 0x8d, 0x9f, + 0x42, 0x85, 0x0f, 0x5a, 0xdc, 0x17, 0x62, 0x93, 0x24, 0x49, 0x12, 0x6d, 0xdb, 0xb6, 0xed, 0x23, 0x3b, 0x91, 0xa4, + 0x6f, 0xe9, 0xf9, 0xfe, 0x27, 0x9d, 0x0c, 0xbd, 0x29, 0x9d, 0x80, 0x45, 0x65, 0x87, 0x77, 0x08, 0xda, 0x7d, 0x86, + 0x4a, 0x67, 0x66, 0x66, 0x66, 0xee, 0xee, 0xee, 0xee, 0x76, 0x97, 0x76, 0x77, 0xdf, 0xbd, 0xfe, 0x81, 0xad, 0xea, + 0xef, 0xd1, 0x8c, 0xc8, 0x0d, 0xd7, 0x7b, 0xed, 0x42, 0x27, 0xf9, 0x14, 0xd4, 0x3d, 0x01, 0x00, 0x00, 0x10, 0xff, + 0xff, 0xff, 0x0f, 0x3f, 0x76, 0xfe, 0xcf, 0xc2, 0xc9, 0x81, 0xfe, 0x84, 0xba, 0x07, 0x89, 0x87, 0x3a, 0x06, 0xb0, + 0x73, 0xa5, 0x03, 0xf7, 0xdd, 0xcc, 0xae, 0x6c, 0xb5, 0xb4, 0xb4, 0xb4, 0xf0, 0xf0, 0xf0, 0xf0, 0x2c, 0x9d, 0xff, + 0xff, 0x4b, 0xdb, 0x68, 0xc8, 0x88, 0xe7, 0xf8, 0xb6, 0xd4, 0x32, 0xa4, 0xa2, 0xb6, 0x59, 0x70, 0xaf, 0x31, 0xfa, + 0x46, 0x1b}; unsigned int constants_8_len = 40320; diff --git a/icicle/appUtils/poseidon/poseidon.cu b/icicle/appUtils/poseidon/poseidon.cu index 0d385616..a8083a06 100644 --- a/icicle/appUtils/poseidon/poseidon.cu +++ b/icicle/appUtils/poseidon/poseidon.cu @@ -1,273 +1,266 @@ #include "poseidon.cuh" template -__global__ void prepare_poseidon_states(S * states, size_t number_of_states, S domain_tag, const PoseidonConfiguration config) { - int idx = (blockIdx.x * blockDim.x) + threadIdx.x; - int state_number = idx / config.t; - if (state_number >= number_of_states) { - return; - } - int element_number = idx % config.t; +__global__ void +prepare_poseidon_states(S* states, size_t number_of_states, S domain_tag, const PoseidonConfiguration config) +{ + int idx = (blockIdx.x * blockDim.x) + threadIdx.x; + int state_number = idx / config.t; + if (state_number >= number_of_states) { return; } + int element_number = idx % config.t; - S prepared_element; + S prepared_element; - // Domain separation - if (element_number == 0) { - prepared_element = domain_tag; - } else { - prepared_element = states[state_number * config.t + element_number - 1]; - } + // Domain separation + if (element_number == 0) { + prepared_element = domain_tag; + } else { + prepared_element = states[state_number * config.t + element_number - 1]; + } - // Add pre-round constant - prepared_element = prepared_element + config.round_constants[element_number]; + // Add pre-round constant + prepared_element = prepared_element + config.round_constants[element_number]; - // Store element in state - states[idx] = prepared_element; + // Store element in state + states[idx] = prepared_element; } template -__device__ __forceinline__ S sbox_alpha_five(S element) { - S result = S::sqr(element); - result = S::sqr(result); - return result * element; +__device__ __forceinline__ S sbox_alpha_five(S element) +{ + S result = S::sqr(element); + result = S::sqr(result); + return result * element; } template -__device__ S vecs_mul_matrix(S element, S * matrix, int element_number, int vec_number, int size, S * shared_states) { - shared_states[threadIdx.x] = element; - __syncthreads(); +__device__ S vecs_mul_matrix(S element, S* matrix, int element_number, int vec_number, int size, S* shared_states) +{ + shared_states[threadIdx.x] = element; + __syncthreads(); - element = S::zero(); - for (int i = 0; i < size; i++) { - element = element + (shared_states[vec_number * size + i] * matrix[i * size + element_number]); - } - __syncthreads(); - return element; + element = S::zero(); + for (int i = 0; i < size; i++) { + element = element + (shared_states[vec_number * size + i] * matrix[i * size + element_number]); + } + __syncthreads(); + return element; } template -__device__ S full_round(S element, - size_t rc_offset, - int local_state_number, - int element_number, - bool multiply_by_mds, - bool add_round_constant, - S * shared_states, - const PoseidonConfiguration config) { - element = sbox_alpha_five(element); - if (add_round_constant) { - element = element + config.round_constants[rc_offset + element_number]; - } +__device__ S full_round( + S element, + size_t rc_offset, + int local_state_number, + int element_number, + bool multiply_by_mds, + bool add_round_constant, + S* shared_states, + const PoseidonConfiguration config) +{ + element = sbox_alpha_five(element); + if (add_round_constant) { element = element + config.round_constants[rc_offset + element_number]; } - // Multiply all the states by mds matrix - S * matrix = multiply_by_mds ? config.mds_matrix : config.non_sparse_matrix; - return vecs_mul_matrix(element, matrix, element_number, local_state_number, config.t, shared_states); + // Multiply all the states by mds matrix + S* matrix = multiply_by_mds ? config.mds_matrix : config.non_sparse_matrix; + return vecs_mul_matrix(element, matrix, element_number, local_state_number, config.t, shared_states); } // Execute full rounds template -__global__ void full_rounds(S * states, size_t number_of_states, size_t rc_offset, bool first_half, const PoseidonConfiguration config) { - extern __shared__ S shared_states[]; +__global__ void full_rounds( + S* states, size_t number_of_states, size_t rc_offset, bool first_half, const PoseidonConfiguration config) +{ + extern __shared__ S shared_states[]; - int idx = (blockIdx.x * blockDim.x) + threadIdx.x; - int state_number = idx / config.t; - if (state_number >= number_of_states) { - return; - } - int local_state_number = threadIdx.x / config.t; - int element_number = idx % config.t; + int idx = (blockIdx.x * blockDim.x) + threadIdx.x; + int state_number = idx / config.t; + if (state_number >= number_of_states) { return; } + int local_state_number = threadIdx.x / config.t; + int element_number = idx % config.t; - for (int i = 0; i < config.full_rounds_half - 1; i++) { - states[idx] = full_round(states[idx], - rc_offset, - local_state_number, - element_number, - true, - true, - shared_states, - config); - rc_offset += config.t; - } + for (int i = 0; i < config.full_rounds_half - 1; i++) { + states[idx] = + full_round(states[idx], rc_offset, local_state_number, element_number, true, true, shared_states, config); + rc_offset += config.t; + } - states[idx] = full_round(states[idx], - rc_offset, - local_state_number, - element_number, - !first_half, - first_half, - shared_states, - config); + states[idx] = full_round( + states[idx], rc_offset, local_state_number, element_number, !first_half, first_half, shared_states, config); } template -__device__ S partial_round(S * state, - size_t rc_offset, - int round_number, - const PoseidonConfiguration config) { - S element = state[0]; - element = sbox_alpha_five(element); - element = element + config.round_constants[rc_offset]; +__device__ S partial_round(S* state, size_t rc_offset, int round_number, const PoseidonConfiguration config) +{ + S element = state[0]; + element = sbox_alpha_five(element); + element = element + config.round_constants[rc_offset]; - S * sparse_matrix = &config.sparse_matrices[(config.t * 2 - 1) * round_number]; + S* sparse_matrix = &config.sparse_matrices[(config.t * 2 - 1) * round_number]; - state[0] = element * sparse_matrix[0]; - for (int i = 1; i < config.t; i++) { - state[0] = state[0] + (state[i] * sparse_matrix[i]); - } + state[0] = element * sparse_matrix[0]; + for (int i = 1; i < config.t; i++) { + state[0] = state[0] + (state[i] * sparse_matrix[i]); + } - for (int i = 1; i < config.t; i++) { - state[i] = state[i] + (element * sparse_matrix[config.t + i - 1]); - } + for (int i = 1; i < config.t; i++) { + state[i] = state[i] + (element * sparse_matrix[config.t + i - 1]); + } } // Execute partial rounds template -__global__ void partial_rounds(S * states, size_t number_of_states, size_t rc_offset, const PoseidonConfiguration config) { - int idx = (blockIdx.x * blockDim.x) + threadIdx.x; - if (idx >= number_of_states) { - return; - } +__global__ void +partial_rounds(S* states, size_t number_of_states, size_t rc_offset, const PoseidonConfiguration config) +{ + int idx = (blockIdx.x * blockDim.x) + threadIdx.x; + if (idx >= number_of_states) { return; } - S * state = &states[idx * config.t]; + S* state = &states[idx * config.t]; - for (int i = 0; i < config.partial_rounds; i++) { - partial_round(state, rc_offset, i, config); - rc_offset++; - } + for (int i = 0; i < config.partial_rounds; i++) { + partial_round(state, rc_offset, i, config); + rc_offset++; + } } // These function is just doing copy from the states to the output template -__global__ void get_hash_results(S * states, size_t number_of_states, S * out, int t) { - int idx = (blockIdx.x * blockDim.x) + threadIdx.x; - if (idx >= number_of_states) { - return; - } +__global__ void get_hash_results(S* states, size_t number_of_states, S* out, int t) +{ + int idx = (blockIdx.x * blockDim.x) + threadIdx.x; + if (idx >= number_of_states) { return; } - out[idx] = states[idx * t + 1]; + out[idx] = states[idx * t + 1]; } template -__host__ void Poseidon::hash_blocks(const S * inp, size_t blocks, S * out, HashType hash_type, cudaStream_t stream) { - S * states; +__host__ void Poseidon::hash_blocks(const S* inp, size_t blocks, S* out, HashType hash_type, cudaStream_t stream) +{ + S* states; - // allocate memory for {blocks} states of {t} scalars each - if (cudaMallocAsync(&states, blocks * this->t * sizeof(S), stream) != cudaSuccess) { - throw std::runtime_error("Failed memory allocation on the device"); - } + // allocate memory for {blocks} states of {t} scalars each + if (cudaMallocAsync(&states, blocks * this->t * sizeof(S), stream) != cudaSuccess) { + throw std::runtime_error("Failed memory allocation on the device"); + } - // This is where the input matrix of size Arity x NumberOfBlocks is - // padded and coppied to device in a T x NumberOfBlocks matrix - cudaMemcpy2DAsync(states, this->t * sizeof(S), // Device pointer and device pitch - inp, (this->t - 1) * sizeof(S), // Host pointer and pitch - (this->t - 1) * sizeof(S), blocks, // Size of the source matrix (Arity x NumberOfBlocks) - cudaMemcpyHostToDevice, stream); + // This is where the input matrix of size Arity x NumberOfBlocks is + // padded and coppied to device in a T x NumberOfBlocks matrix + cudaMemcpy2DAsync( + states, this->t * sizeof(S), // Device pointer and device pitch + inp, (this->t - 1) * sizeof(S), // Host pointer and pitch + (this->t - 1) * sizeof(S), blocks, // Size of the source matrix (Arity x NumberOfBlocks) + cudaMemcpyHostToDevice, stream); - size_t rc_offset = 0; + size_t rc_offset = 0; - // The logic behind this is that 1 thread only works on 1 element - // We have {t} elements in each state, and {blocks} states total - int number_of_threads = (256 / this->t) * this->t; - int hashes_per_block = number_of_threads / this->t; - int total_number_of_threads = blocks * this->t; - int number_of_blocks = total_number_of_threads / number_of_threads + - static_cast(total_number_of_threads % number_of_threads); + // The logic behind this is that 1 thread only works on 1 element + // We have {t} elements in each state, and {blocks} states total + int number_of_threads = (256 / this->t) * this->t; + int hashes_per_block = number_of_threads / this->t; + int total_number_of_threads = blocks * this->t; + int number_of_blocks = + total_number_of_threads / number_of_threads + static_cast(total_number_of_threads % number_of_threads); - // The partial rounds operates on the whole state, so we define - // the parallelism params for processing a single hash preimage per thread - int singlehash_block_size = 128; - int number_of_singlehash_blocks = blocks / singlehash_block_size + static_cast(blocks % singlehash_block_size); + // The partial rounds operates on the whole state, so we define + // the parallelism params for processing a single hash preimage per thread + int singlehash_block_size = 128; + int number_of_singlehash_blocks = blocks / singlehash_block_size + static_cast(blocks % singlehash_block_size); - // Pick the domain_tag accordinaly - S domain_tag; - switch (hash_type) { - case HashType::ConstInputLen: - domain_tag = this->const_input_no_pad_domain_tag; - break; + // Pick the domain_tag accordinaly + S domain_tag; + switch (hash_type) { + case HashType::ConstInputLen: + domain_tag = this->const_input_no_pad_domain_tag; + break; - case HashType::MerkleTree: - domain_tag = this->tree_domain_tag; - } + case HashType::MerkleTree: + domain_tag = this->tree_domain_tag; + } - #if !defined(__CUDA_ARCH__) && defined(DEBUG) - auto start_time = std::chrono::high_resolution_clock::now(); - #endif +#if !defined(__CUDA_ARCH__) && defined(DEBUG) + auto start_time = std::chrono::high_resolution_clock::now(); +#endif - // Domain separation and adding pre-round constants - prepare_poseidon_states <<< number_of_blocks, number_of_threads, 0, stream >>> (states, blocks, domain_tag, this->config); - rc_offset += this->t; + // Domain separation and adding pre-round constants + prepare_poseidon_states<<>>(states, blocks, domain_tag, this->config); + rc_offset += this->t; - #if !defined(__CUDA_ARCH__) && defined(DEBUG) - cudaStreamSynchronize(stream); - std::cout << "Domain separation: " << rc_offset << std::endl; - //print_buffer_from_cuda(states, blocks * this->t); +#if !defined(__CUDA_ARCH__) && defined(DEBUG) + cudaStreamSynchronize(stream); + std::cout << "Domain separation: " << rc_offset << std::endl; + // print_buffer_from_cuda(states, blocks * this->t); - auto end_time = std::chrono::high_resolution_clock::now(); - auto elapsed_time = std::chrono::duration_cast(end_time - start_time); - std::cout << "Elapsed time: " << elapsed_time.count() << " ms" << std::endl; - start_time = std::chrono::high_resolution_clock::now(); - #endif + auto end_time = std::chrono::high_resolution_clock::now(); + auto elapsed_time = std::chrono::duration_cast(end_time - start_time); + std::cout << "Elapsed time: " << elapsed_time.count() << " ms" << std::endl; + start_time = std::chrono::high_resolution_clock::now(); +#endif - // execute half full rounds - full_rounds <<< number_of_blocks, number_of_threads, sizeof(S) * hashes_per_block * this->t, stream >>> (states, blocks, rc_offset, true, this->config); - rc_offset += this->t * this->config.full_rounds_half; + // execute half full rounds + full_rounds<<t, stream>>>( + states, blocks, rc_offset, true, this->config); + rc_offset += this->t * this->config.full_rounds_half; - #if !defined(__CUDA_ARCH__) && defined(DEBUG) - cudaStreamSynchronize(stream); - std::cout << "Full rounds 1. RCOFFSET: " << rc_offset << std::endl; - // print_buffer_from_cuda(states, blocks * this->t); +#if !defined(__CUDA_ARCH__) && defined(DEBUG) + cudaStreamSynchronize(stream); + std::cout << "Full rounds 1. RCOFFSET: " << rc_offset << std::endl; + // print_buffer_from_cuda(states, blocks * this->t); - end_time = std::chrono::high_resolution_clock::now(); - elapsed_time = std::chrono::duration_cast(end_time - start_time); - std::cout << "Elapsed time: " << elapsed_time.count() << " ms" << std::endl; - start_time = std::chrono::high_resolution_clock::now(); - #endif + end_time = std::chrono::high_resolution_clock::now(); + elapsed_time = std::chrono::duration_cast(end_time - start_time); + std::cout << "Elapsed time: " << elapsed_time.count() << " ms" << std::endl; + start_time = std::chrono::high_resolution_clock::now(); +#endif - // execute partial rounds - partial_rounds <<< number_of_singlehash_blocks, singlehash_block_size, 0, stream >>> (states, blocks, rc_offset, this->config); - rc_offset += this->config.partial_rounds; + // execute partial rounds + partial_rounds<<>>( + states, blocks, rc_offset, this->config); + rc_offset += this->config.partial_rounds; - #if !defined(__CUDA_ARCH__) && defined(DEBUG) - cudaStreamSynchronize(stream); - std::cout << "Partial rounds. RCOFFSET: " << rc_offset << std::endl; - //print_buffer_from_cuda(states, blocks * this->t); +#if !defined(__CUDA_ARCH__) && defined(DEBUG) + cudaStreamSynchronize(stream); + std::cout << "Partial rounds. RCOFFSET: " << rc_offset << std::endl; + // print_buffer_from_cuda(states, blocks * this->t); - end_time = std::chrono::high_resolution_clock::now(); - elapsed_time = std::chrono::duration_cast(end_time - start_time); - std::cout << "Elapsed time: " << elapsed_time.count() << " ms" << std::endl; - start_time = std::chrono::high_resolution_clock::now(); - #endif + end_time = std::chrono::high_resolution_clock::now(); + elapsed_time = std::chrono::duration_cast(end_time - start_time); + std::cout << "Elapsed time: " << elapsed_time.count() << " ms" << std::endl; + start_time = std::chrono::high_resolution_clock::now(); +#endif - // execute half full rounds - full_rounds <<< number_of_blocks, number_of_threads, sizeof(S) * hashes_per_block * this->t, stream >>> (states, blocks, rc_offset, false, this->config); + // execute half full rounds + full_rounds<<t, stream>>>( + states, blocks, rc_offset, false, this->config); - #if !defined(__CUDA_ARCH__) && defined(DEBUG) - cudaStreamSynchronize(stream); - std::cout << "Full rounds 2. RCOFFSET: " << rc_offset << std::endl; - //print_buffer_from_cuda(states, blocks * this->t); - end_time = std::chrono::high_resolution_clock::now(); - elapsed_time = std::chrono::duration_cast(end_time - start_time); - std::cout << "Elapsed time: " << elapsed_time.count() << " ms" << std::endl; - start_time = std::chrono::high_resolution_clock::now(); - #endif +#if !defined(__CUDA_ARCH__) && defined(DEBUG) + cudaStreamSynchronize(stream); + std::cout << "Full rounds 2. RCOFFSET: " << rc_offset << std::endl; + // print_buffer_from_cuda(states, blocks * this->t); + end_time = std::chrono::high_resolution_clock::now(); + elapsed_time = std::chrono::duration_cast(end_time - start_time); + std::cout << "Elapsed time: " << elapsed_time.count() << " ms" << std::endl; + start_time = std::chrono::high_resolution_clock::now(); +#endif - // get output - S * out_device; - cudaMalloc(&out_device, blocks * sizeof(S)); - get_hash_results <<< number_of_singlehash_blocks, singlehash_block_size, 0, stream >>> (states, blocks, out_device, this->config.t); + // get output + S* out_device; + cudaMalloc(&out_device, blocks * sizeof(S)); + get_hash_results<<>>( + states, blocks, out_device, this->config.t); - #if !defined(__CUDA_ARCH__) && defined(DEBUG) - cudaStreamSynchronize(stream); - std::cout << "Get hash results" << std::endl; - end_time = std::chrono::high_resolution_clock::now(); - elapsed_time = std::chrono::duration_cast(end_time - start_time); - std::cout << "Elapsed time: " << elapsed_time.count() << " ms" << std::endl; - #endif - cudaMemcpyAsync(out, out_device, blocks * sizeof(S), cudaMemcpyDeviceToHost, stream); - cudaFreeAsync(out_device, stream); - cudaFreeAsync(states, stream); +#if !defined(__CUDA_ARCH__) && defined(DEBUG) + cudaStreamSynchronize(stream); + std::cout << "Get hash results" << std::endl; + end_time = std::chrono::high_resolution_clock::now(); + elapsed_time = std::chrono::duration_cast(end_time - start_time); + std::cout << "Elapsed time: " << elapsed_time.count() << " ms" << std::endl; +#endif + cudaMemcpyAsync(out, out_device, blocks * sizeof(S), cudaMemcpyDeviceToHost, stream); + cudaFreeAsync(out_device, stream); + cudaFreeAsync(states, stream); - #if !defined(__CUDA_ARCH__) && defined(DEBUG) - cudaDeviceReset(); - #endif +#if !defined(__CUDA_ARCH__) && defined(DEBUG) + cudaDeviceReset(); +#endif } \ No newline at end of file diff --git a/icicle/appUtils/poseidon/poseidon.cuh b/icicle/appUtils/poseidon/poseidon.cuh index 7bf423f5..ecfa2d83 100644 --- a/icicle/appUtils/poseidon/poseidon.cuh +++ b/icicle/appUtils/poseidon/poseidon.cuh @@ -2,19 +2,20 @@ #include "constants.cuh" #if !defined(__CUDA_ARCH__) && defined(DEBUG) -#include -#include -#include -#include #include +#include +#include +#include +#include template -__host__ void print_buffer_from_cuda(S * device_ptr, size_t size, size_t t) { - S * buffer = static_cast< S * >(malloc(size * sizeof(S))); +__host__ void print_buffer_from_cuda(S* device_ptr, size_t size, size_t t) +{ + S* buffer = static_cast(malloc(size * sizeof(S))); cudaMemcpy(buffer, device_ptr, size * sizeof(S), cudaMemcpyDeviceToHost); std::cout << "Start print" << std::endl; - for(int i = 0; i < size / t; i++) { + for (int i = 0; i < size / t; i++) { std::cout << "State #" << i << std::endl; for (int j = 0; j < t; j++) { std::cout << buffer[i * t + j] << std::endl; @@ -28,136 +29,129 @@ __host__ void print_buffer_from_cuda(S * device_ptr, size_t size, size_t t) { #ifdef DEBUG template -__device__ void print_scalar(S element, int data) { - printf("D# %d, T# %d: 0x%08x%08x%08x%08x%08x%08x%08x%08x\n", - data, - threadIdx.x, - element.limbs_storage.limbs[0], - element.limbs_storage.limbs[1], - element.limbs_storage.limbs[2], - element.limbs_storage.limbs[3], - element.limbs_storage.limbs[4], - element.limbs_storage.limbs[5], - element.limbs_storage.limbs[6], - element.limbs_storage.limbs[7] - ); +__device__ void print_scalar(S element, int data) +{ + printf( + "D# %d, T# %d: 0x%08x%08x%08x%08x%08x%08x%08x%08x\n", data, threadIdx.x, element.limbs_storage.limbs[0], + element.limbs_storage.limbs[1], element.limbs_storage.limbs[2], element.limbs_storage.limbs[3], + element.limbs_storage.limbs[4], element.limbs_storage.limbs[5], element.limbs_storage.limbs[6], + element.limbs_storage.limbs[7]); } #endif template struct PoseidonConfiguration { - uint32_t partial_rounds, full_rounds_half, t; - S * round_constants, * mds_matrix, * non_sparse_matrix, *sparse_matrices; + uint32_t partial_rounds, full_rounds_half, t; + S *round_constants, *mds_matrix, *non_sparse_matrix, *sparse_matrices; }; template -class Poseidon { - public: - uint32_t t; - PoseidonConfiguration config; +class Poseidon +{ +public: + uint32_t t; + PoseidonConfiguration config; - enum HashType { - ConstInputLen, - MerkleTree, - }; + enum HashType { + ConstInputLen, + MerkleTree, + }; - Poseidon(const uint32_t arity, cudaStream_t stream) { - t = arity + 1; - this->config.t = t; - this->stream = stream; + Poseidon(const uint32_t arity, cudaStream_t stream) + { + t = arity + 1; + this->config.t = t; + this->stream = stream; - // Pre-calculate domain tags - // Domain tags will vary for different applications of Poseidon - uint32_t tree_domain_tag_value = 1; - tree_domain_tag_value = (tree_domain_tag_value << arity) - tree_domain_tag_value; - tree_domain_tag = S::from(tree_domain_tag_value); + // Pre-calculate domain tags + // Domain tags will vary for different applications of Poseidon + uint32_t tree_domain_tag_value = 1; + tree_domain_tag_value = (tree_domain_tag_value << arity) - tree_domain_tag_value; + tree_domain_tag = S::from(tree_domain_tag_value); - const_input_no_pad_domain_tag = S::one(); + const_input_no_pad_domain_tag = S::one(); - // TO-DO: implement binary shifts for scalar type - // const_input_no_pad_domain_tag = S::one() << 64; - // const_input_no_pad_domain_tag *= S::from(arity); + // TO-DO: implement binary shifts for scalar type + // const_input_no_pad_domain_tag = S::one() << 64; + // const_input_no_pad_domain_tag *= S::from(arity); - this->config.full_rounds_half = FULL_ROUNDS_DEFAULT; - this->config.partial_rounds = partial_rounds_number_from_arity(arity); + this->config.full_rounds_half = FULL_ROUNDS_DEFAULT; + this->config.partial_rounds = partial_rounds_number_from_arity(arity); - uint32_t round_constants_len = t * this->config.full_rounds_half * 2 + this->config.partial_rounds; - uint32_t mds_matrix_len = t * t; - uint32_t sparse_matrices_len = (t * 2 - 1) * this->config.partial_rounds; + uint32_t round_constants_len = t * this->config.full_rounds_half * 2 + this->config.partial_rounds; + uint32_t mds_matrix_len = t * t; + uint32_t sparse_matrices_len = (t * 2 - 1) * this->config.partial_rounds; - // All the constants are stored in a single file - S * constants = load_constants(arity); + // All the constants are stored in a single file + S* constants = load_constants(arity); - S * mds_offset = constants + round_constants_len; - S * non_sparse_offset = mds_offset + mds_matrix_len; - S * sparse_matrices_offset = non_sparse_offset + mds_matrix_len; + S* mds_offset = constants + round_constants_len; + S* non_sparse_offset = mds_offset + mds_matrix_len; + S* sparse_matrices_offset = non_sparse_offset + mds_matrix_len; - #if !defined(__CUDA_ARCH__) && defined(DEBUG) - std::cout << "P: " << this->config.partial_rounds << " F: " << this->config.full_rounds_half << std::endl; - #endif +#if !defined(__CUDA_ARCH__) && defined(DEBUG) + std::cout << "P: " << this->config.partial_rounds << " F: " << this->config.full_rounds_half << std::endl; +#endif - // Create streams for copying constants - cudaStream_t stream_copy_round_constants, stream_copy_mds_matrix, stream_copy_non_sparse, stream_copy_sparse_matrices; - cudaStreamCreate(&stream_copy_round_constants); - cudaStreamCreate(&stream_copy_mds_matrix); - cudaStreamCreate(&stream_copy_non_sparse); - cudaStreamCreate(&stream_copy_sparse_matrices); - - // Create events for copying constants - cudaEvent_t event_copied_round_constants, event_copy_mds_matrix, event_copy_non_sparse, event_copy_sparse_matrices; - cudaEventCreateWithFlags(&event_copied_round_constants, cudaEventDisableTiming); - cudaEventCreateWithFlags(&event_copy_mds_matrix, cudaEventDisableTiming); - cudaEventCreateWithFlags(&event_copy_non_sparse, cudaEventDisableTiming); - cudaEventCreateWithFlags(&event_copy_sparse_matrices, cudaEventDisableTiming); + // Create streams for copying constants + cudaStream_t stream_copy_round_constants, stream_copy_mds_matrix, stream_copy_non_sparse, + stream_copy_sparse_matrices; + cudaStreamCreate(&stream_copy_round_constants); + cudaStreamCreate(&stream_copy_mds_matrix); + cudaStreamCreate(&stream_copy_non_sparse); + cudaStreamCreate(&stream_copy_sparse_matrices); - // Malloc memory for copying constants - cudaMallocAsync(&this->config.round_constants, sizeof(S) * round_constants_len, stream_copy_round_constants); - cudaMallocAsync(&this->config.mds_matrix, sizeof(S) * mds_matrix_len, stream_copy_mds_matrix); - cudaMallocAsync(&this->config.non_sparse_matrix, sizeof(S) * mds_matrix_len, stream_copy_non_sparse); - cudaMallocAsync(&this->config.sparse_matrices, sizeof(S) * sparse_matrices_len, stream_copy_sparse_matrices); + // Create events for copying constants + cudaEvent_t event_copied_round_constants, event_copy_mds_matrix, event_copy_non_sparse, event_copy_sparse_matrices; + cudaEventCreateWithFlags(&event_copied_round_constants, cudaEventDisableTiming); + cudaEventCreateWithFlags(&event_copy_mds_matrix, cudaEventDisableTiming); + cudaEventCreateWithFlags(&event_copy_non_sparse, cudaEventDisableTiming); + cudaEventCreateWithFlags(&event_copy_sparse_matrices, cudaEventDisableTiming); - // Copy constants - cudaMemcpyAsync(this->config.round_constants, constants, - sizeof(S) * round_constants_len, - cudaMemcpyHostToDevice, stream_copy_round_constants - ); - cudaMemcpyAsync(this->config.mds_matrix, mds_offset, - sizeof(S) * mds_matrix_len, - cudaMemcpyHostToDevice, stream_copy_mds_matrix - ); - cudaMemcpyAsync(this->config.non_sparse_matrix, non_sparse_offset, - sizeof(S) * mds_matrix_len, - cudaMemcpyHostToDevice, stream_copy_non_sparse - ); - cudaMemcpyAsync(this->config.sparse_matrices, sparse_matrices_offset, - sizeof(S) * sparse_matrices_len, - cudaMemcpyHostToDevice, stream_copy_sparse_matrices - ); + // Malloc memory for copying constants + cudaMallocAsync(&this->config.round_constants, sizeof(S) * round_constants_len, stream_copy_round_constants); + cudaMallocAsync(&this->config.mds_matrix, sizeof(S) * mds_matrix_len, stream_copy_mds_matrix); + cudaMallocAsync(&this->config.non_sparse_matrix, sizeof(S) * mds_matrix_len, stream_copy_non_sparse); + cudaMallocAsync(&this->config.sparse_matrices, sizeof(S) * sparse_matrices_len, stream_copy_sparse_matrices); - // Record finished copying event for streams - cudaEventRecord(event_copied_round_constants, stream_copy_round_constants); - cudaEventRecord(event_copy_mds_matrix, stream_copy_mds_matrix); - cudaEventRecord(event_copy_non_sparse, stream_copy_non_sparse); - cudaEventRecord(event_copy_sparse_matrices, stream_copy_sparse_matrices); + // Copy constants + cudaMemcpyAsync( + this->config.round_constants, constants, sizeof(S) * round_constants_len, cudaMemcpyHostToDevice, + stream_copy_round_constants); + cudaMemcpyAsync( + this->config.mds_matrix, mds_offset, sizeof(S) * mds_matrix_len, cudaMemcpyHostToDevice, stream_copy_mds_matrix); + cudaMemcpyAsync( + this->config.non_sparse_matrix, non_sparse_offset, sizeof(S) * mds_matrix_len, cudaMemcpyHostToDevice, + stream_copy_non_sparse); + cudaMemcpyAsync( + this->config.sparse_matrices, sparse_matrices_offset, sizeof(S) * sparse_matrices_len, cudaMemcpyHostToDevice, + stream_copy_sparse_matrices); - // Main stream waits for copying to finish - cudaStreamWaitEvent(stream, event_copied_round_constants); - cudaStreamWaitEvent(stream, event_copy_mds_matrix); - cudaStreamWaitEvent(stream, event_copy_non_sparse); - cudaStreamWaitEvent(stream, event_copy_sparse_matrices); - } + // Record finished copying event for streams + cudaEventRecord(event_copied_round_constants, stream_copy_round_constants); + cudaEventRecord(event_copy_mds_matrix, stream_copy_mds_matrix); + cudaEventRecord(event_copy_non_sparse, stream_copy_non_sparse); + cudaEventRecord(event_copy_sparse_matrices, stream_copy_sparse_matrices); - ~Poseidon() { - cudaFreeAsync(this->config.round_constants, this->stream); - cudaFreeAsync(this->config.mds_matrix, this->stream); - cudaFreeAsync(this->config.non_sparse_matrix, this->stream); - cudaFreeAsync(this->config.sparse_matrices, this->stream); - } + // Main stream waits for copying to finish + cudaStreamWaitEvent(stream, event_copied_round_constants); + cudaStreamWaitEvent(stream, event_copy_mds_matrix); + cudaStreamWaitEvent(stream, event_copy_non_sparse); + cudaStreamWaitEvent(stream, event_copy_sparse_matrices); + } - // Hash multiple preimages in parallel - void hash_blocks(const S * inp, size_t blocks, S * out, HashType hash_type, cudaStream_t stream); + ~Poseidon() + { + cudaFreeAsync(this->config.round_constants, this->stream); + cudaFreeAsync(this->config.mds_matrix, this->stream); + cudaFreeAsync(this->config.non_sparse_matrix, this->stream); + cudaFreeAsync(this->config.sparse_matrices, this->stream); + } - private: - S tree_domain_tag, const_input_no_pad_domain_tag; - cudaStream_t stream; + // Hash multiple preimages in parallel + void hash_blocks(const S* inp, size_t blocks, S* out, HashType hash_type, cudaStream_t stream); + +private: + S tree_domain_tag, const_input_no_pad_domain_tag; + cudaStream_t stream; }; \ No newline at end of file diff --git a/icicle/appUtils/poseidon/poseidon_test.cu b/icicle/appUtils/poseidon/poseidon_test.cu index 46a738cb..b0e8f859 100644 --- a/icicle/appUtils/poseidon/poseidon_test.cu +++ b/icicle/appUtils/poseidon/poseidon_test.cu @@ -4,16 +4,15 @@ #include "../../curves/bls12_381/poseidon.cu" #ifndef __CUDA_ARCH__ -#include #include #include +#include + +int main(int argc, char* argv[]) +{ + using FpMilliseconds = std::chrono::duration; + using FpMicroseconds = std::chrono::duration; -int main(int argc, char* argv[]) { - using FpMilliseconds = - std::chrono::duration; - using FpMicroseconds = - std::chrono::duration; - const int arity = 2; const int t = arity + 1; @@ -34,14 +33,16 @@ int main(int argc, char* argv[]) { int number_of_blocks = 1024; BLS12_381::scalar_t input = BLS12_381::scalar_t::zero(); - BLS12_381::scalar_t * in_ptr = static_cast< BLS12_381::scalar_t * >(malloc(number_of_blocks * arity * sizeof(BLS12_381::scalar_t))); + BLS12_381::scalar_t* in_ptr = + static_cast(malloc(number_of_blocks * arity * sizeof(BLS12_381::scalar_t))); for (uint32_t i = 0; i < number_of_blocks * arity; i++) { in_ptr[i] = input; input = input + BLS12_381::scalar_t::one(); } std::cout << std::endl; - BLS12_381::scalar_t * out_ptr = static_cast< BLS12_381::scalar_t * >(malloc(number_of_blocks * sizeof(BLS12_381::scalar_t))); + BLS12_381::scalar_t* out_ptr = + static_cast(malloc(number_of_blocks * sizeof(BLS12_381::scalar_t))); auto start_time = std::chrono::high_resolution_clock::now(); @@ -60,1038 +61,1037 @@ int main(int argc, char* argv[]) { cudaEventDestroy(end_event); BLS12_381::scalar_t expected[1024] = { - { 2583881727, 773864502, 2634393245, 2801510707, 49275233, 1939738585, 1584833899, 962922711 }, - { 1482052501, 2945755510, 2790332687, 3994795689, 2690398473, 2055226187, 3927265331, 526041267 }, - { 908959580, 3968357170, 168369822, 4279251122, 172491869, 1810633943, 1108167336, 461319268 }, - { 4027140347, 2893980563, 921480450, 501609030, 2327498415, 3169336813, 3929258806, 737280672 }, - { 4055714606, 2743326044, 2857702856, 1584420791, 1660813445, 3348655617, 3787458226, 3699425 }, - { 1985741293, 4089215036, 1210827339, 2345137603, 1161636418, 1599639659, 321012535, 194290036 }, - { 1750888684, 3456174369, 3318295268, 1497259571, 2073515266, 4072260308, 3437570998, 1635895511 }, - { 4034710333, 2610124732, 1290861184, 4036862757, 883362062, 567869034, 2024849712, 1701263846 }, - { 2625474608, 2754606612, 361203290, 1487232625, 2688318352, 2549310207, 2466099371, 1733038062 }, - { 3345001546, 3042331439, 4011626368, 3133515243, 2486233703, 1331042170, 1361957740, 650666142 }, - { 1584567590, 1084515947, 4098195566, 3866758584, 3356823276, 1832067525, 1818740948, 741849726 }, - { 3286393376, 4136788043, 10996123, 492094606, 528500176, 2438101940, 2875284654, 1786544386 }, - { 1969597223, 790536143, 2237882132, 3796626452, 2790109442, 1011819674, 3528538383, 589770849 }, - { 407685073, 1453168838, 2179621584, 788291901, 1106952489, 1446367022, 4069426728, 1396878930 }, - { 3290109019, 4015017806, 3934117633, 4158617411, 2939969774, 106961513, 14918808, 1001708086 }, - { 996002275, 1928470656, 2623701620, 2551598991, 3751170806, 508902944, 369242849, 1498870796 }, - { 565255546, 3022177816, 293742057, 2157713418, 1983002409, 1107184702, 1767026869, 1183824511 }, - { 2311948870, 2800572440, 3145540846, 3682970284, 1080117063, 2915402481, 3269455294, 716122601 }, - { 2295776029, 501186048, 942983026, 4051534110, 2477546403, 2935458647, 254557289, 178729694 }, - { 3337435330, 4030596207, 3117011884, 2422164923, 2397253028, 875773417, 3477084352, 1126142070 }, - { 3431800845, 4060912624, 2245793080, 2499622891, 91998757, 2164075869, 3803348693, 166480081 }, - { 966663497, 630611456, 167291166, 773313755, 1503785959, 1202596199, 3191514300, 1306382185 }, - { 3933637844, 1226332868, 3032390356, 1110249575, 3533687435, 1934216432, 1494095598, 1682810774 }, - { 663270725, 384860935, 2827178047, 827465888, 3087237951, 3255426106, 1373579066, 499572712 }, - { 2577656678, 3066691302, 1684488911, 1957939881, 4019083797, 1755409167, 1832816180, 1223903171 }, - { 1063044264, 1259737746, 3048015260, 1826994984, 3349938836, 637174051, 3186708364, 1072388481 }, - { 424144692, 2929334085, 3898061065, 1345722322, 2247127222, 2049099905, 2811348666, 1160935385 }, - { 1742356760, 455132233, 567937646, 1446680057, 606998240, 4160248945, 3056763692, 304816744 }, - { 3902143865, 2475092117, 3760400589, 355228026, 1716941022, 3657064101, 3335169844, 311397023 }, - { 3136484494, 2477484115, 3189327926, 3887284100, 1520306748, 1408584587, 360476494, 468824213 }, - { 2650171511, 3917673809, 3045237931, 4207688203, 429415446, 1750523088, 1223306704, 1525104464 }, - { 3339231665, 2528413500, 2046295048, 418068806, 685542366, 1682284588, 1485485833, 1473238879 }, - { 711161825, 3514077185, 3534145946, 1223731975, 2083004206, 1591181325, 146921769, 1335013702 }, - { 3360230958, 1823167614, 1476318054, 3466563514, 2415011524, 1769592146, 1575481551, 948928279 }, - { 2203262174, 1048259904, 2990768499, 1722929916, 163385007, 3862551299, 3245410259, 660227543 }, - { 2420337797, 388803468, 2995221236, 178657789, 724044101, 1928913452, 391326078, 738986320 }, - { 376206369, 1284511059, 2214401189, 891395247, 1960216581, 3830403005, 3904641289, 286711373 }, - { 599464569, 2411718164, 3735534528, 1577933164, 1934209663, 208697469, 4240204984, 1878780213 }, - { 2248371995, 1913736731, 845860752, 2437601421, 2181099977, 3047079036, 2994731640, 1056395413 }, - { 1616682327, 1644006237, 4168209898, 668467850, 2455928538, 1293832315, 1951304978, 733478871 }, - { 2918737298, 3521094856, 1829452807, 2725951918, 200736933, 3770832430, 302979408, 1669366138 }, - { 387191313, 3173401215, 4094986219, 4046955536, 2468524524, 1397566203, 1547260481, 1630494205 }, - { 1611875529, 3743344191, 2871657641, 2077834981, 2265555313, 2220128636, 3401817316, 730340725 }, - { 2970289894, 2504545394, 2645966447, 1893372766, 211607532, 48403161, 2511733484, 1777123856 }, - { 4026002355, 2848115047, 2779427621, 1719017788, 1519304609, 3000001502, 1762163589, 1651472793 }, - { 2675453183, 2789246503, 4130550033, 1391534849, 892965520, 840706700, 694359255, 1471724826 }, - { 820595074, 3339511113, 1226826204, 4002836485, 3062031653, 3909036982, 3234099926, 478805481 }, - { 2754248472, 2077338143, 1320736316, 1958645234, 3844752893, 3889630124, 2015730162, 1490420502 }, - { 460441047, 350047886, 2731923076, 3535777260, 1340261262, 1608902027, 4234035213, 1536752667 }, - { 114082443, 3561864573, 3250444094, 2685014404, 665145438, 2794487913, 2897233421, 1911369787 }, - { 3964405473, 1106848460, 2730715961, 2096494338, 432077991, 1817935912, 2825329005, 364568296 }, - { 1541495233, 533720033, 1539839704, 963087454, 3318790731, 3533292343, 3370280345, 1088979921 }, - { 31440674, 1086708697, 3205357768, 1917821690, 4056968740, 2683764451, 1041894546, 548238649 }, - { 1917051981, 2014974056, 4094529913, 154561501, 2688770477, 2718119219, 2705815412, 1716758521 }, - { 4067501667, 2229507042, 1856704407, 3392292278, 517345750, 3716036323, 3218796244, 1233797639 }, - { 493354704, 810143557, 149270290, 3129000957, 1614740539, 852245369, 1103758623, 1444391322 }, - { 1605729361, 2765340595, 2072059042, 272378393, 200608211, 1405978231, 2442707275, 1356618195 }, - { 614194557, 2969487285, 3926681252, 3394676563, 2726949908, 16435247, 2403689085, 1204665742 }, - { 2460966997, 186611346, 3986216756, 4264387316, 2217732635, 1106203394, 615954162, 1452862218 }, - { 1974864998, 3557372049, 2306291317, 1337077016, 3157009519, 3694567151, 2200295624, 951056188 }, - { 1787294003, 4192197592, 3312641269, 2356072500, 3461522896, 108687088, 4157440844, 526413998 }, - { 2399361279, 1706831513, 3887495132, 2793491621, 1958115904, 3177075308, 2155894953, 145589220 }, - { 2352454770, 864469346, 2670274751, 1614948498, 3267466158, 3191597377, 1776987447, 1357175017 }, - { 2740743875, 3345691126, 2816549323, 3348140332, 1516932249, 897622960, 2037058063, 995705082 }, - { 880606236, 1189688463, 4234153518, 2339439358, 2923718870, 1042013320, 1678648541, 1104462183 }, - { 1073654866, 3413686839, 685570659, 3037652080, 947636738, 3700390221, 3693398039, 415494178 }, - { 2419572877, 1150916625, 2249277119, 683261527, 1864331069, 1244761785, 552125966, 1347677685 }, - { 3396762050, 2693884475, 424685848, 1664147381, 1834283263, 2542432283, 3974116944, 68536520 }, - { 3063924165, 1932015124, 2217710816, 3830128168, 3370081034, 574155316, 3313875014, 1855459315 }, - { 3386803395, 2820493340, 3308680514, 1427392357, 1583014142, 1749204707, 221657680, 547450834 }, - { 1041777630, 161530099, 1155566993, 1892707944, 3757054220, 2087391796, 3585530204, 977318577 }, - { 2665571342, 2429563664, 3195162290, 2644863207, 2114978363, 3231080092, 3457160023, 725625708 }, - { 1287942936, 2906541389, 3888844666, 3045944547, 1704436269, 935499132, 2453611416, 1213734667 }, - { 1117593248, 2743290884, 2066542181, 3835707713, 1920393447, 1618056951, 1297468894, 900716017 }, - { 2453584163, 3404571319, 2858950303, 115950125, 4024397824, 646888038, 2302216357, 2756808 }, - { 2613043977, 3417804754, 1884878530, 3335038875, 6972604, 711348538, 2748028015, 826527564 }, - { 2713903867, 3794506523, 790592691, 1992735309, 2847369131, 4204363625, 1087865122, 1443814505 }, - { 1146497564, 848229830, 1946260269, 3010322816, 2207800574, 2200410833, 2844194823, 342476999 }, - { 536000215, 56179675, 101847642, 3011739994, 2872487441, 89501866, 898367473, 331781205 }, - { 792457657, 1377513795, 2577314200, 3373384733, 4274706950, 2925205477, 890772987, 1095800397 }, - { 182796072, 1578145882, 2336921029, 3162145845, 4062838559, 3023577617, 2330808132, 1428434925 }, - { 2403626545, 3974944436, 3485684469, 553830322, 38386987, 4043096538, 2935160779, 1605533456 }, - { 3592979798, 3846514876, 4128835545, 3365534930, 3661819211, 206722386, 3701547698, 1155118261 }, - { 3518352518, 552097980, 1106877825, 3098440123, 1904097843, 798323810, 2937297984, 306844313 }, - { 846683726, 1141034129, 2737947207, 3948706817, 3691508076, 1515816987, 3737359958, 479108481 }, - { 1925088217, 3196619024, 3151602276, 1132584884, 398312424, 3664593321, 1435127993, 640739107 }, - { 4007582001, 4056833411, 1681991589, 3159809312, 3733176952, 2658324364, 4156115728, 793757139 }, - { 2186520143, 188914433, 3154274450, 702884605, 687995516, 3197971561, 1743850711, 439513656 }, - { 3681243065, 4194035329, 3413995370, 207340710, 2792859700, 3621365942, 690238239, 650694641 }, - { 4194002326, 2754965636, 2026612339, 3417461073, 3389514679, 289083315, 945831954, 1646504390 }, - { 3728664917, 874441051, 4237550353, 1267640098, 1493897726, 235351278, 1343778823, 512604703 }, - { 1832471478, 3107338776, 1857313534, 3280811411, 3036888090, 3889765552, 1968816396, 1225855424 }, - { 744301333, 3406502346, 783212095, 2374949182, 781907448, 2557584046, 3381526102, 1029233876 }, - { 344800482, 222185159, 2883488241, 779251249, 2822944331, 3330005398, 3591215672, 302028091 }, - { 1210514521, 1750377041, 2565419, 2503857968, 1425360604, 2528973098, 857792357, 1195257810 }, - { 2196986518, 237838621, 1892525295, 286690471, 1622780101, 2639346316, 4286156169, 1597775594 }, - { 2338818263, 2938274921, 1230254141, 727173531, 3273895384, 2463754633, 41765405, 490358949 }, - { 3971405844, 2427101257, 4260135480, 3905725796, 2272941250, 1815202830, 2674840136, 1151632468 }, - { 772068597, 2077570282, 3573641073, 3594585180, 1796738974, 69390997, 2819669018, 109156866 }, - { 3407797779, 4273031067, 2447795211, 2617274976, 3350369456, 1810165409, 495004487, 280805960 }, - { 1854400152, 1015997936, 4178837499, 2969860395, 3276208401, 2266705868, 3474085081, 381373149 }, - { 4273910617, 3432009007, 1963113415, 3478788384, 4263358486, 1474675855, 1363869172, 1404241549 }, - { 3347173429, 3488817444, 3586742747, 1881341598, 2866825457, 4123090347, 1133449072, 1012876069 }, - { 3766326425, 2549726737, 2395067040, 94384143, 2981277617, 3903715059, 1418402831, 1086843578 }, - { 1066353224, 947945827, 641160302, 3710315689, 2100152022, 362375464, 3382102350, 696249971 }, - { 3715078923, 4177862627, 3773159689, 752863577, 1567881938, 2890233387, 2275434392, 761611465 }, - { 1136563047, 293855491, 907210887, 3459013925, 2467328309, 2508366795, 1653911948, 171845987 }, - { 612379611, 1887075760, 487087448, 225291858, 132676616, 2064671605, 2406766416, 1233233811 }, - { 2092184335, 1015806827, 1146757670, 1090496205, 1043022102, 3737237655, 3806015317, 14600533 }, - { 499304627, 4098834222, 3759308706, 1388356421, 210173650, 1741203929, 1772159179, 495805071 }, - { 2229669327, 1545664598, 349055216, 3833190775, 358708937, 2983722085, 3017903221, 1531390637 }, - { 4072290516, 1556732269, 4022277258, 1306533569, 2391722068, 3016774265, 1908302439, 494704407 }, - { 1167973235, 1627746966, 219299288, 110675411, 4208405345, 3855064237, 4061394129, 1651264307 }, - { 807895823, 1850319638, 3286622806, 1614836268, 2867522342, 411515703, 1793528862, 552472260 }, - { 2900983917, 3294231504, 2202011636, 3574159155, 1974489724, 2886293794, 3281774714, 484959753 }, - { 2742711752, 1287345215, 3181531962, 2021440514, 3439017902, 715452484, 4180842775, 134122585 }, - { 1531199361, 2983901779, 3903415668, 3964463567, 2644568942, 2487255696, 2599734899, 1249314973 }, - { 1518027012, 198792757, 3469220298, 2822826170, 3866069214, 2099371040, 1756790447, 285411729 }, - { 3165530355, 895959300, 809561874, 2072573055, 3986839699, 793131249, 2061077774, 1133461696 }, - { 2582197220, 213769082, 274179281, 3142523875, 3736763344, 1583183690, 4062325045, 1061009665 }, - { 644857811, 886625807, 1464693834, 3050181877, 3725483719, 1505440349, 4086205221, 991794257 }, - { 3162388994, 1162627825, 3204861587, 811326633, 1365038410, 3031769664, 1687403961, 915654805 }, - { 1995779911, 3004580585, 1515285492, 522932916, 1212660322, 2864409226, 3097856431, 693847144 }, - { 2053050441, 1115202172, 1549567112, 655697921, 3671500054, 3835118574, 3214011205, 1821384668 }, - { 1872231643, 872021024, 1336655960, 211273340, 3354505888, 1417807145, 456513608, 963893896 }, - { 452599830, 776408152, 1550676549, 3703127187, 3209628512, 1940886032, 1738721553, 495522259 }, - { 2691751653, 1779937431, 1288368656, 3208747915, 2780559745, 2526828312, 1763994228, 333231547 }, - { 4275513205, 440735411, 1258948293, 2390465823, 4235700884, 3091458168, 1642110956, 270470060 }, - { 73709337, 934739763, 3725340396, 2974472721, 654855744, 31917987, 2323016052, 1857308314 }, - { 1075049988, 1079953406, 1400698963, 3042997804, 561842384, 2210762367, 855910595, 481838082 }, - { 3509794358, 3953903735, 1903811147, 1779485279, 2029632368, 2456759721, 1704304047, 877779598 }, - { 2738753066, 2806260921, 1791674756, 1760096472, 56716860, 2060443887, 1270948691, 1225038684 }, - { 937515698, 26813463, 1445864152, 1294151654, 654837221, 2383845053, 196479405, 58956140 }, - { 1871576453, 1698949245, 60390505, 564468800, 453271267, 631487095, 3269198514, 542634707 }, - { 2291302129, 265277242, 2254979206, 254426696, 2728354797, 3558541347, 2740502735, 1448518356 }, - { 564456082, 1249012296, 2639616381, 3434809938, 2677856100, 2718115901, 587788226, 1356563198 }, - { 3402304817, 4194246240, 2968342419, 705018855, 2974056477, 4111402898, 3057995427, 1166666131 }, - { 2056307580, 543524209, 2301580143, 4185614334, 559030639, 3128036650, 4111599671, 1284904614 }, - { 359831047, 799580308, 3060864000, 2258889659, 394243714, 2348819117, 55818159, 68526609 }, - { 2737339548, 4287675470, 1542231980, 933340600, 3207838359, 567359477, 2710989220, 492016188 }, - { 1813175421, 3478591534, 2351824610, 2397870923, 2578469006, 746676008, 1499857351, 1153852272 }, - { 1156137895, 2952177058, 2242206449, 2432815871, 806441386, 1218734739, 1326208773, 1354398562 }, - { 381364386, 1263934940, 2102136766, 3983497213, 3529312069, 1576491044, 2439933774, 1719806867 }, - { 3080823690, 4163355065, 3530321023, 518995624, 3597768387, 1951975478, 3342258628, 1893032288 }, - { 2668980496, 1399144065, 3171564560, 2879158337, 2049822937, 1283854944, 3719298147, 1415657877 }, - { 314419813, 138438272, 2740872598, 1446144675, 270275230, 392044674, 3657556548, 1178795820 }, - { 3099056818, 4210653656, 2863127405, 4014782863, 1880375366, 2575900391, 3450884471, 81766256 }, - { 2403440534, 3903938443, 2341281741, 1042650223, 3078916646, 1456864996, 788189722, 472670325 }, - { 1738163024, 1473909145, 2674866561, 4011133817, 2015896597, 856062266, 2711118437, 1049952681 }, - { 2156132303, 1217145778, 1978361217, 2812284834, 2765205016, 1617644935, 3185836803, 1275814667 }, - { 2139444894, 1728125596, 550329386, 2106026961, 3190911779, 2805748561, 367259216, 344120108 }, - { 1604819906, 1547353738, 2286973177, 142156392, 1168379200, 2863089066, 2325097648, 619149130 }, - { 476476869, 125107322, 4242120686, 2845323427, 4064291205, 3917126424, 1748893411, 1903681834 }, - { 265863512, 216982475, 897166961, 1564843947, 3223825511, 1700060563, 2015862784, 1003671286 }, - { 3625714394, 3340083696, 3853899793, 1293453510, 1114045522, 1313270480, 725703339, 736671172 }, - { 343313943, 877917671, 266408438, 3323120098, 3147007930, 913257583, 2191771258, 399381021 }, - { 4013991165, 1416418041, 3832036954, 2938470425, 221845214, 1167203774, 1768914611, 902153570 }, - { 3502117386, 1386058830, 562022867, 1449753541, 3601428107, 2264692620, 4035074555, 1470772422 }, - { 2152687219, 2831804035, 3822495442, 3564473016, 754416363, 2034497626, 2394459393, 1033406266 }, - { 523865120, 1895475540, 1242600002, 3025061292, 3228720770, 1111003417, 46000713, 1658545305 }, - { 2782351140, 732806496, 543771103, 815167696, 1354719155, 1146263627, 2780139930, 260438830 }, - { 3769722236, 1031924627, 2938914690, 3845552382, 187349171, 2082492512, 3105533582, 349133714 }, - { 226101091, 3932996043, 1261834526, 3639471815, 3783975045, 2773435294, 72097575, 397612131 }, - { 345326414, 2071360836, 1230788147, 1256092033, 3275882835, 1895960541, 3970380183, 1116445256 }, - { 1253210318, 3196861338, 2659951767, 1708719847, 910090836, 1778803537, 99897865, 397987309 }, - { 2660390903, 4163502563, 428053853, 865236208, 702120899, 1136730868, 279386348, 327194324 }, - { 3069679620, 2753662961, 1245152705, 3383900875, 745828980, 877948018, 244740169, 1199116042 }, - { 2787134555, 3165922826, 1952888254, 3269480812, 2902699638, 1771993944, 3157498020, 1865440178 }, - { 628321080, 1876194052, 1060136558, 3323455987, 1073153554, 335731429, 2331228708, 392686317 }, - { 1455178159, 264261804, 378146754, 1078226682, 4192580179, 2437831674, 2070380519, 928830846 }, - { 2046104580, 231990579, 2210106235, 1464674297, 109152583, 1324560308, 1252815627, 800092277 }, - { 1901999225, 3840850086, 1764548120, 80760982, 3738060630, 1024821752, 3328852270, 473577239 }, - { 373825875, 796216585, 4178146910, 4280788818, 3209858978, 606647393, 3688582072, 443935899 }, - { 2704366167, 3231575353, 2874634614, 1634692969, 1453550797, 869562435, 1887309440, 173080423 }, - { 3762416407, 4244000016, 3684384886, 1357551174, 3638253892, 4172136845, 2648676306, 1011306758 }, - { 1993969839, 1763229071, 3961301037, 2419255917, 1460744145, 3682944608, 236434257, 920525286 }, - { 3837242033, 1332515327, 2877509306, 3999499732, 80284978, 2955970898, 1434413023, 171125802 }, - { 3913213042, 1869099339, 4000113933, 220596640, 3872047924, 3271984538, 3828790351, 1040203103 }, - { 2265046564, 3967925010, 1013586304, 3275083335, 1069009185, 1278744283, 3942942004, 454264129 }, - { 1338410339, 3817156291, 3328265761, 1084661106, 3335518316, 69993660, 2093068110, 1921514120 }, - { 804999781, 2105393429, 1765592882, 2475222271, 2266336204, 3217607476, 2923318831, 142791235 }, - { 430419998, 934748265, 2313948093, 4037500455, 3625196372, 2119493746, 4212583891, 1592186257 }, - { 746805018, 4089285572, 4085026197, 3000374567, 615498630, 2145887823, 1590773924, 1527345179 }, - { 2845853102, 2707089717, 1630166363, 2450336300, 2928041496, 3649727030, 2127929440, 509779551 }, - { 469352672, 1049942390, 43141745, 1542346042, 1506664989, 55847996, 2817304678, 355733074 }, - { 1506331341, 3468047035, 1937187646, 4098911134, 3542947986, 1209786738, 1094711193, 829552324 }, - { 513448314, 3121065069, 3605207936, 165454555, 4223276459, 2021790882, 2269303689, 1488770403 }, - { 3082206741, 4006834512, 4234068655, 4129328001, 3776219139, 2261826564, 224971455, 302063336 }, - { 954498204, 1809052356, 4166983587, 3337321629, 3049995803, 2419783320, 174720186, 1274614944 }, - { 1445122460, 3758988704, 196996475, 1204057615, 3686956470, 778267856, 4120734921, 711037096 }, - { 3229198649, 607230863, 1767796456, 3082748802, 516717612, 1139856567, 4283954815, 1377621433 }, - { 915505554, 3466785809, 1620352891, 3551426400, 2349243035, 181069790, 2355409970, 193494961 }, - { 371035398, 515131065, 1254963835, 2792970006, 3327859005, 7229292, 3512269118, 163262359 }, - { 3892161377, 2198594287, 2836914912, 2416204375, 3023970432, 3772766634, 676588254, 1628802600 }, - { 270068354, 2859732653, 215090601, 3726973605, 2118038468, 2390978685, 2598507126, 302182063 }, - { 3713755513, 2174696396, 126948634, 3284315619, 385003137, 2403755756, 3317463094, 901619973 }, - { 2334702884, 2222368366, 1758774502, 1908347511, 3211427437, 692975498, 562413342, 142488264 }, - { 4110857536, 3489423189, 93567419, 4212065264, 234052753, 2394672508, 34873324, 1773261916 }, - { 657961333, 1978614618, 534179675, 2535215399, 1387596249, 3862387036, 4106161926, 1728854459 }, - { 1473901033, 2719557261, 3736474389, 672950929, 3597017256, 3387708956, 186397118, 1308454217 }, - { 1598517477, 56391826, 2422540582, 4067339205, 1918310686, 1632414443, 62440299, 823971542 }, - { 398165140, 2017823557, 2362950145, 418114087, 220453310, 4274014861, 812529230, 79440548 }, - { 931974626, 2453769606, 2120177821, 2490354275, 1515775164, 380736393, 3854197615, 1064794549 }, - { 2243581620, 1135594669, 2063501796, 3958798254, 3522641296, 1398431830, 1666677894, 1281600955 }, - { 696950615, 396002275, 3867860745, 1285374694, 1389737165, 2304653218, 1392054902, 1003929621 }, - { 950116283, 1944502872, 3293727989, 2063659083, 1642146638, 2810731694, 1962444104, 1653257001 }, - { 923027348, 1377431764, 1140187612, 3211115003, 2540299968, 4139500757, 1178298142, 509964099 }, - { 3242550779, 297201291, 2611144989, 3500022767, 2506975200, 4179868347, 1169516495, 484845910 }, - { 3516581806, 2137438341, 1432542589, 2474852430, 3172619951, 1938803064, 3183844610, 214177059 }, - { 3336368782, 2998429373, 2732636385, 3498786925, 3423014853, 3403822600, 3773505469, 570273240 }, - { 1953913020, 3999791546, 3620452074, 792587486, 3635399265, 1251811707, 3385375737, 513060391 }, - { 1881966423, 1309648177, 3325898535, 1929050829, 3895419908, 4275819134, 2281833898, 160590489 }, - { 1970362525, 2445205444, 1790488087, 2734332599, 1804077338, 3950453045, 4274887535, 857840483 }, - { 4190203910, 3771017405, 1560796520, 757251766, 723791912, 1000875239, 2368697803, 1715120437 }, - { 1105312635, 1831981367, 590956174, 533990082, 1363977346, 1419039220, 1424959217, 1862918088 }, - { 1707585526, 3331321438, 1309462872, 3954260220, 3872107076, 4190563964, 3468333954, 1167672400 }, - { 3290485895, 1269155196, 2037242141, 766438624, 3795465654, 568772216, 2294587139, 1395729155 }, - { 1664582309, 4084244811, 1649685753, 917700155, 401871110, 1397653248, 1528924423, 1685365442 }, - { 1100283454, 3800687800, 1888440772, 1876077613, 2234407812, 3261430464, 583854630, 1650774478 }, - { 2582264375, 1083743606, 3735988203, 3363613861, 4080168950, 1456807404, 2527909687, 1879990242 }, - { 1163643019, 2326226240, 2656203927, 2330205431, 25504108, 3300175042, 3903825481, 1839014178 }, - { 423345650, 2455357908, 3518777459, 1060241297, 1612334065, 3049842316, 889627670, 291754731 }, - { 4070649682, 137635832, 1696702407, 250369810, 596179526, 750439364, 1570467152, 109259203 }, - { 1734261564, 1556520664, 3486765496, 3854393185, 552312591, 2634175366, 2171959629, 1597361430 }, - { 1393387068, 3729055216, 1510477586, 1982896429, 3587855757, 251368586, 609561594, 428465275 }, - { 1111756681, 3514989840, 3252037939, 3176047280, 2786052296, 198487204, 802202742, 1512982127 }, - { 1694930105, 3351577968, 1317820916, 3720137640, 2831824873, 583452628, 1419839298, 34784732 }, - { 3188669622, 3249938714, 406543497, 682942938, 3453841653, 74420291, 2829460527, 1195686084 }, - { 712118392, 1490184923, 860812241, 1347346526, 517623618, 1065790763, 1500772847, 553582357 }, - { 1748542702, 893633609, 4021443164, 1592941236, 3964348995, 2448108769, 2526663836, 511128264 }, - { 2487984458, 319607302, 2700231013, 158702297, 2241852635, 1404705821, 1944118438, 1563972193 }, - { 220616777, 1273842898, 2774047558, 4260187262, 3480554529, 1278678043, 2260888426, 1110404237 }, - { 632015945, 1567498391, 2348672297, 323487993, 1647717869, 1318689620, 348657605, 575523659 }, - { 322342457, 4213527948, 734126757, 2283282395, 3304441481, 64755967, 3769470911, 1060077480 }, - { 1389269222, 296759250, 3737490997, 2196425575, 2357516694, 3288136873, 775260214, 1741808722 }, - { 4201403095, 2332065162, 95069321, 4077053892, 997223034, 3969941838, 225831704, 626550268 }, - { 1694304643, 2170580095, 1199790149, 3070413394, 4249852320, 3590098066, 3120800184, 1198436435 }, - { 1263448817, 118724347, 1823364498, 3620078081, 3835571852, 137274613, 1071431144, 376406456 }, - { 3276982759, 1709151202, 1592474299, 779170521, 2267148223, 95614388, 1494476679, 550085827 }, - { 149028973, 2665473834, 142373483, 906500453, 3609802090, 2080183894, 4059075003, 1259998568 }, - { 3314185079, 2592750974, 3187271770, 497977851, 2310167987, 2388803657, 2429258860, 588929998 }, - { 1584863944, 2740517066, 180562886, 2343560988, 2553645666, 1797925185, 1445919046, 883240130 }, - { 2695052512, 3080056905, 2944255733, 524598736, 721509110, 3015485800, 3562169346, 350030491 }, - { 1781903568, 2573349227, 4036008195, 1779437155, 2831856100, 4080153088, 2441887785, 494613468 }, - { 2688769197, 2588856973, 436609710, 2562408752, 3321781996, 1747969286, 2494064400, 627262492 }, - { 19652838, 2121114980, 1166835629, 3570198584, 4172897157, 2414490360, 3118975457, 730646157 }, - { 247348053, 402080343, 3906663020, 3205886674, 2818004445, 2874832302, 2475237513, 598660841 }, - { 4210699814, 2672106286, 4107171028, 2543600037, 1207267039, 3308535391, 1630289688, 1290017174 }, - { 3734853075, 2993451155, 30368696, 3618170210, 3890794620, 2370304327, 2456896337, 1537726352 }, - { 3606639591, 3006653490, 2071337867, 3473919288, 1219335926, 1964959707, 698915659, 205048426 }, - { 1888896684, 1427457339, 684714131, 1545174634, 3843597507, 1402275550, 2642964568, 1558471684 }, - { 3219842360, 2830621537, 4133306489, 3210387892, 3526407254, 4118727786, 4255445958, 1594084648 }, - { 973121395, 2734064124, 3521586471, 3536606172, 2106965927, 950544410, 1586409070, 100704970 }, - { 2710404937, 2381418982, 1482593636, 3347081592, 566833824, 3498983415, 2587484332, 379350456 }, - { 2513500266, 2882093180, 1202464741, 2785664179, 3191639950, 3657596713, 2047660027, 317900060 }, - { 3704353329, 2127612430, 1043532384, 1962107162, 3098459807, 2620105100, 1260792491, 754940379 }, - { 698134874, 3211479104, 4046637290, 2067740780, 697493331, 3993383967, 1954041261, 19400542 }, - { 738564787, 3489058919, 2600389225, 532930421, 3107998724, 687295225, 3726229589, 349932472 }, - { 1688973585, 573872427, 1726523404, 4041331724, 2039152832, 2569910077, 459968058, 1384088376 }, - { 3786960147, 141182376, 3690089544, 1210383590, 951092194, 318076018, 1812506766, 1635502263 }, - { 1893587435, 3873004461, 465654767, 2831662799, 1814186876, 2836835193, 816772605, 85328125 }, - { 1015540063, 305781240, 1186151288, 2686326657, 340577005, 2360847305, 1494410987, 632166032 }, - { 3296927968, 933213368, 1002255269, 753370551, 4240730846, 3175235478, 1407538308, 840130843 }, - { 3558380461, 2063688632, 1852584331, 211740888, 2165452559, 207633457, 2646644533, 1567316986 }, - { 3008359334, 1858866901, 4061071849, 4256503210, 4190637264, 3386104505, 2949451441, 1283889010 }, - { 1059130132, 3665152194, 2200245742, 150965660, 1257088006, 1084535024, 552036867, 1425619566 }, - { 815595305, 2028930841, 500286945, 3057894403, 86768234, 912568788, 1698919799, 2732298 }, - { 2421217535, 3939443496, 1701404112, 416170082, 538510953, 2040589524, 163629589, 1172946984 }, - { 3185978537, 4045905816, 3395818418, 3030540530, 1857613911, 1496095014, 2064134544, 1475405180 }, - { 3600826229, 652244165, 1854655282, 1335125734, 4162477060, 1834856449, 1907064611, 639651509 }, - { 1099915413, 1696066455, 3667131044, 2801281464, 2825799514, 3122992997, 1990603158, 1482909889 }, - { 357999973, 1948117934, 1767465795, 1503534480, 1280636041, 2172872676, 42049083, 1507085018 }, - { 1586385686, 1815009774, 2204636782, 3621368897, 3863852407, 2054076750, 1592313794, 190891089 }, - { 3354686214, 3863977972, 317192338, 4056114909, 2843296861, 611712348, 1761686802, 335382807 }, - { 1567080100, 2565673356, 358261369, 440446404, 945530996, 2339024814, 2515226184, 229064451 }, - { 1785588133, 1849946439, 2522498743, 1446287958, 1912602746, 4110170320, 462325958, 1570458567 }, - { 188733005, 1335757961, 4199795493, 2182031581, 238332795, 2380909847, 202207215, 1631157542 }, - { 31496023, 2369924941, 3876746531, 2425430852, 1269810063, 1280474251, 1082015996, 1685975648 }, - { 2435326671, 2137599669, 1664930336, 1972722016, 3539431175, 449743269, 2111822119, 511379179 }, - { 1711920667, 1411331215, 779359286, 2188614788, 2187562219, 3514145917, 449509116, 718778800 }, - { 939327715, 4017316180, 3184864945, 2907043743, 3454380149, 3224547147, 2372894553, 1676378158 }, - { 3839199964, 939098512, 2024577562, 4081436888, 3714080470, 2588849969, 1695842745, 1531321817 }, - { 1211023589, 793564404, 2199087717, 1630300491, 2597931989, 3445033248, 3601431661, 1374506943 }, - { 2965008603, 2759601010, 3587253823, 548345370, 1544684162, 1536496905, 2096390346, 777587904 }, - { 442360470, 3128324811, 1050259196, 2968748797, 3681207914, 2355676928, 3623016236, 1108028206 }, - { 3708091553, 144320768, 3256383057, 2524290544, 1754607964, 3299663064, 52564954, 341716323 }, - { 3843625606, 4111637138, 809737716, 3699441361, 1168446886, 47563080, 4272693131, 127345596 }, - { 680115398, 662336941, 1927619347, 3905088120, 2903942753, 537932381, 2657862705, 1178037043 }, - { 4163011957, 3149539059, 2163725477, 3266998162, 4210432573, 1952270323, 2385520511, 478315846 }, - { 789151636, 436726598, 420313348, 2485009947, 1544771724, 3706962115, 1756848937, 1656980041 }, - { 1026192729, 2143989567, 1225912383, 4265700455, 865919410, 3004070371, 3793044584, 711820431 }, - { 3074622406, 1499870065, 148729599, 700860722, 3901921468, 4249074197, 3072633552, 998987995 }, - { 1728889694, 1519430990, 3546828861, 3258261967, 3495054313, 1102352066, 2484900668, 538587683 }, - { 323328591, 3431567383, 993028075, 1770597343, 2945870618, 3278688158, 590692810, 820795638 }, - { 648432380, 3177803313, 2969204008, 3004335537, 3521610509, 2517009887, 1828467604, 733128907 }, - { 2677755643, 1903024099, 2775285626, 3676465242, 4174759248, 647113185, 452482319, 66824575 }, - { 3034780689, 2654656829, 2817722523, 1278666243, 1258679268, 1395316299, 1696496920, 1844954148 }, - { 1614955630, 4051903901, 2729187762, 882600100, 4253701348, 515117132, 3100593881, 1708807533 }, - { 4172490145, 1075052902, 1626886089, 93674269, 1165755460, 3972839361, 492559171, 1219041240 }, - { 1692811688, 1582006388, 1971739532, 266853730, 2591499286, 1309416939, 4285615191, 70759855 }, - { 3202371061, 2791601203, 10296181, 3923861854, 2432228797, 3645206817, 2259317370, 1043934012 }, - { 1289656658, 3254713406, 657578453, 297376404, 1786930291, 2623554605, 584246050, 1340463025 }, - { 2011295238, 1032324275, 2907804244, 1322922992, 1606367538, 262389818, 3964671566, 825853816 }, - { 3889077992, 3238322947, 1242547002, 2075266549, 1397456799, 3386559106, 2614499281, 1897188318 }, - { 914464231, 1800009680, 1976696388, 4175014812, 565507719, 2935701528, 1061766695, 1091464266 }, - { 1713674186, 1842124942, 2138138453, 1862758320, 1457479793, 4257841417, 1581888569, 1575002281 }, - { 2141548881, 3224214604, 883804295, 1438123617, 648526089, 13085009, 3819729879, 684628694 }, - { 2544121603, 3421125483, 912712630, 3393499560, 3307776357, 2951365890, 3051717743, 1747763038 }, - { 2378439041, 1068953280, 3267226470, 2241270850, 3977868198, 4143306418, 445486592, 1909270247 }, - { 341827399, 1113035149, 2557745857, 1149856598, 3782499853, 2703402864, 1688803720, 1864288115 }, - { 2975696726, 2722312306, 4173590484, 1671007158, 341455217, 2145732041, 2398917642, 254345528 }, - { 1277631748, 2877986998, 3909284374, 1072038631, 652226894, 2042406851, 3688482439, 353455731 }, - { 1166144007, 605798108, 2483357657, 1169298653, 2874954781, 2941868905, 3941904276, 240293473 }, - { 3776986149, 3072780109, 2641400208, 3648555247, 78378227, 1983090111, 1272804736, 19904354 }, - { 3776450730, 543442460, 3136422014, 1083330519, 3716925603, 2572688658, 3572882793, 1386468511 }, - { 517079469, 2490614817, 544774125, 3082988665, 203246742, 3296588456, 3474932524, 1113990206 }, - { 746251584, 3037645185, 1026513110, 273085874, 2687781063, 3399525620, 603721045, 842130755 }, - { 1076887678, 600145788, 291759840, 664443679, 3012388813, 3088048776, 2123026488, 1862823757 }, - { 910923650, 2995098359, 3571918000, 2893329309, 223680374, 1087087437, 2240090604, 497844837 }, - { 3241104453, 2856621605, 2670545529, 243603760, 2039849963, 3861942460, 1938658564, 951296000 }, - { 2248669424, 2900598904, 4063541710, 479435103, 3147684516, 1209332670, 3434361206, 1436216184 }, - { 2918449892, 2362889214, 1584220001, 3945153476, 2748127147, 342974344, 1971398657, 960153289 }, - { 2424894076, 1169594142, 3338530882, 2752058663, 3312862251, 4129312830, 2710414793, 503956715 }, - { 30192267, 1661227382, 61646586, 1962967542, 466430133, 3217419594, 1372697721, 272363379 }, - { 370230324, 268002262, 29149647, 1025393181, 3553738297, 564168895, 2506049328, 1323560497 }, - { 4275078845, 682648643, 3844417723, 4097926444, 2316516834, 2985101985, 879751542, 1314741436 }, - { 2181031230, 349281995, 2044616380, 2077628557, 970466985, 1373412978, 2909341695, 1143220892 }, - { 3941893517, 101679037, 2468966767, 1955599472, 1561666088, 4007079728, 4017763039, 1811631282 }, - { 4121521983, 2287055885, 2087825363, 2613440848, 2546293537, 3592539158, 1489265377, 600990456 }, - { 3234065255, 242482551, 1056577258, 3047745727, 534813408, 3952386734, 1044556299, 1391878159 }, - { 3404288209, 966802585, 427761193, 2235986992, 1765044523, 2827076569, 2321951771, 1791207028 }, - { 2126661281, 2785207929, 2088153009, 4289919279, 3848979323, 95071925, 3925114544, 870014541 }, - { 3590768211, 213585404, 3428914230, 3443679583, 3161107983, 1522536635, 833104529, 1208096868 }, - { 2722488606, 2278859831, 2518449035, 2786501044, 533899100, 1572003181, 58231376, 828940455 }, - { 2417864339, 620439511, 3403771966, 676858748, 213307, 1116410136, 4270164566, 139079231 }, - { 3175213619, 3804247334, 3980028699, 341811998, 2038455583, 2396269050, 71327605, 1620162266 }, - { 4262820372, 1764256424, 3142313143, 2141791381, 585838205, 1862681148, 3785045454, 1813772657 }, - { 1863045156, 192988710, 1781157601, 1556316350, 2394229836, 3120053538, 3827694371, 1167620661 }, - { 3964368047, 256445384, 481776758, 2194029209, 1174012674, 1221446621, 902769345, 1144739250 }, - { 189379309, 2978540076, 4049152452, 4174062101, 319162026, 4261060865, 1360031373, 786910655 }, - { 4020256250, 3800816759, 1355551333, 1296253141, 2763797796, 3289717164, 1666415716, 913018023 }, - { 53298133, 4263617297, 2686479995, 1882382971, 74905384, 1533862409, 1958579041, 1859823905 }, - { 3745516093, 1192287829, 769440408, 3358072776, 1989674880, 3642134364, 3185140225, 1674472590 }, - { 1142927967, 1652398415, 2008926028, 118315735, 337508799, 3338191347, 193495485, 1720409162 }, - { 2042113095, 3852417646, 1598522416, 3293757097, 1204167091, 1214121784, 2449650430, 1723149625 }, - { 1726653374, 3782189066, 1667243174, 318348407, 535312537, 2579256902, 1807698322, 898987147 }, - { 3921630158, 262664017, 664181110, 1309785715, 2193538929, 4152147745, 1554245806, 815177769 }, - { 2166110444, 3807376396, 3228766327, 4271794109, 675772778, 1170851044, 4268360885, 1210810388 }, - { 1431701252, 3952891811, 4055238099, 1581094057, 110975812, 3146173832, 1580335304, 1021450678 }, - { 2930286043, 2417036048, 2693347730, 1299996071, 4035224480, 116938481, 53135240, 1081123965 }, - { 3477159834, 1409310724, 2864631824, 607425278, 2868171372, 1073036622, 12797428, 1018775310 }, - { 815574887, 3876015827, 2391858447, 2919306148, 1514299099, 413285360, 2992238223, 732422595 }, - { 3931770188, 1278309715, 694862119, 2330192648, 224723906, 3073675935, 3364354157, 309279808 }, - { 793607897, 3900017841, 2812940743, 712006533, 2076614184, 664707590, 2196905999, 940097429 }, - { 2650548718, 1327128046, 1990650921, 2743924815, 2240814340, 3316578156, 1063459063, 1458083011 }, - { 1058084650, 1514373208, 3761758204, 765528328, 1832793534, 589695770, 1944461522, 1731962243 }, - { 4213831768, 843235971, 3902801631, 2724606299, 554240717, 455554786, 630086216, 947555355 }, - { 3239650201, 3840225819, 3874758869, 3744462227, 3593707497, 3706666189, 3628941580, 1039436081 }, - { 2339612914, 696099009, 1182083790, 2422764707, 342598251, 1470218203, 2322796412, 196858966 }, - { 423141315, 655966493, 2385341758, 3167820333, 1244537310, 824763223, 3471392795, 1453529142 }, - { 1594190374, 2039588679, 571161480, 929420708, 1021769394, 3623378687, 2590906391, 951497431 }, - { 835961243, 3446480315, 1048714289, 1460106604, 93933583, 3021001863, 3114329712, 1644913099 }, - { 219322345, 1015335091, 915295705, 156539359, 1162722348, 2774528884, 265224284, 1367097978 }, - { 3263292862, 39450632, 2849522352, 2139330830, 698945241, 3206402812, 913158885, 1102302851 }, - { 2267242892, 4153968116, 1384951567, 2907451047, 824641802, 2988566013, 1687946471, 1494793578 }, - { 3520268502, 2100737683, 220064712, 232888343, 113196741, 2659408613, 4171114433, 507535494 }, - { 3666540515, 3321756155, 2030933593, 86667735, 1817024169, 605716965, 3530639518, 1595274643 }, - { 1501750861, 259012659, 3391819572, 2743334435, 820339089, 98480575, 2523271898, 1501316758 }, - { 2252450543, 1007055792, 2214270654, 3879563325, 3963813614, 548661760, 2060204160, 260844027 }, - { 3456931588, 1183061888, 81787005, 693589220, 3342342016, 2102712637, 1664212094, 685669902 }, - { 472518722, 3461106544, 4005914859, 2698166500, 114210283, 2163010326, 405018820, 281264531 }, - { 254475869, 946819357, 74967276, 2331715283, 834311860, 3178973962, 566585296, 627211285 }, - { 3616584473, 2123850075, 3311874966, 445706907, 3613916101, 2018062240, 1368353914, 1633637159 }, - { 1724041102, 2150714134, 518963103, 4183149487, 990753201, 4135568171, 781278503, 878348971 }, - { 3527632489, 1303615559, 2565820829, 4223227186, 2135741654, 3387473953, 789264631, 1482555809 }, - { 4086126038, 2608829451, 4032805521, 209965523, 2010209371, 2770445857, 998506842, 1368248296 }, - { 3732402540, 1252982661, 2691308048, 3169495715, 3929381968, 3394459017, 3925012298, 1829426883 }, - { 667626296, 2556765149, 451142974, 2091141285, 1353926677, 1119882244, 832654112, 923218532 }, - { 3563181908, 3171304423, 951735115, 1890771678, 2719728347, 1995778940, 4000932321, 1351186940 }, - { 3129765393, 2944817788, 2545970568, 267578757, 3259097882, 2865791851, 941032793, 1870900289 }, - { 3832351305, 222124977, 3392111804, 2030308363, 3725179267, 4247508145, 2826658929, 1323644805 }, - { 707199704, 1630819157, 896761014, 3457598167, 3330154541, 3603138995, 2791504320, 171212611 }, - { 2652175888, 4114365588, 3237033706, 3548237537, 1919218823, 1485443253, 830286804, 1088885063 }, - { 2304739680, 786592316, 517654165, 545835680, 2711049687, 3937778231, 1451791799, 241163603 }, - { 144870567, 4101610143, 761598773, 2260661094, 248209186, 2940538942, 2696674209, 270682582 }, - { 1487412575, 4032531792, 2088136608, 3109683668, 1607772301, 3414494269, 1822958014, 1931148603 }, - { 761328614, 561333843, 2571566360, 3409050672, 155462512, 3860375006, 1370393560, 1862987046 }, - { 2391946363, 3521556094, 334542725, 1764421183, 3758932256, 3367836845, 1223591581, 343651553 }, - { 578597318, 3112570220, 4074082385, 1034871456, 2625169202, 139809664, 4193038276, 250499360 }, - { 4223445976, 1116602594, 2037422654, 1447987114, 1347023248, 2622313507, 2960527846, 1244436266 }, - { 3048003747, 3393889671, 3624016930, 4031650432, 1945381826, 127437187, 1470865902, 1123334779 }, - { 1968408231, 2609556692, 3774962062, 76255384, 872236928, 138702532, 282416005, 1576895264 }, - { 1474143593, 132691089, 1939774642, 1453735296, 649735243, 810212424, 141640336, 1281247676 }, - { 3117281446, 2436606010, 169967548, 3482399243, 41939653, 3847768906, 3403228943, 1766457976 }, - { 948658702, 1177463041, 3908040578, 608993586, 1931223146, 2665095585, 355603520, 726286820 }, - { 1615261608, 1818311148, 3382320147, 602273397, 2851221442, 2622419212, 1208740016, 680929892 }, - { 787606275, 4280243890, 3682006461, 2885259103, 3316837636, 777489793, 3424249995, 774637468 }, - { 758584642, 288495970, 4237568340, 2330420818, 1170431649, 305099812, 1401597851, 856608523 }, - { 3969567197, 1641332982, 2802700719, 2538783229, 2347908957, 2593192805, 205506871, 341298327 }, - { 549871192, 2750165535, 3989049541, 3300516047, 4076666667, 4091561547, 1625424329, 1101423567 }, - { 81385684, 3200721944, 3847457446, 2538339051, 3167264363, 594059864, 2603543604, 1251575342 }, - { 3347189384, 1471400752, 2319428968, 4262993269, 3289623906, 326923728, 2314141967, 1564255768 }, - { 812887677, 2947732774, 3196914233, 1265981774, 656035176, 2775732105, 3971137401, 710932211 }, - { 3504901580, 225476675, 318614555, 3447479937, 1252347834, 905431378, 1497544559, 425270101 }, - { 2785645300, 3789486954, 1518864140, 3313891902, 2909884115, 1142609007, 2928516712, 46137297 }, - { 1620257092, 457344946, 1008890301, 4002068971, 888919163, 1372413746, 3808929122, 1561047161 }, - { 1084322991, 994130922, 4215449978, 424233685, 3401600296, 3520510052, 3355278648, 360387733 }, - { 2619474720, 455871084, 35579410, 2352456869, 4108910856, 3979133541, 2505657142, 20440527 }, - { 1885566687, 197730610, 3865634088, 606374768, 1661524806, 987736698, 1305015704, 121108014 }, - { 264037081, 163659885, 4253922641, 935274525, 4238403768, 2954818872, 67531374, 630333298 }, - { 3239890397, 2093635584, 4241758865, 3672461528, 937047838, 431221007, 4217207054, 1934572831 }, - { 2727935337, 893198860, 2328305888, 4008029335, 2607934609, 1903255279, 2144098190, 282165720 }, - { 3183190325, 2043062739, 231584680, 4181619788, 2458465170, 1986606275, 1985938495, 1342677652 }, - { 2155013864, 426232192, 1640462783, 231542722, 991634415, 1434409070, 3543126845, 958199857 }, - { 471545968, 2131913486, 612227863, 1548578308, 2650875283, 1116326311, 2325578238, 291565922 }, - { 3680663773, 1098738218, 761993760, 688698467, 3874615530, 188029550, 2910388464, 545956947 }, - { 2729255069, 134010684, 1776229293, 389090587, 1781270321, 3636353502, 321719504, 646831059 }, - { 1913233680, 2637543456, 2629109191, 642016866, 2808973801, 1699752790, 3272502114, 762313929 }, - { 170165662, 209770368, 2801591344, 474411677, 3328762739, 1217678584, 2660789355, 995110408 }, - { 3833916109, 1791858517, 1946105958, 110166097, 2692367275, 53713661, 4053896817, 1185332919 }, - { 1978222854, 68709740, 1587210215, 2268657522, 3824205820, 2019880374, 2650943337, 1839932966 }, - { 1735480396, 2109789643, 1000792087, 2085035831, 4040540509, 3301596397, 3854755870, 1404548587 }, - { 2826393323, 1842874451, 3726242565, 3821457216, 166263227, 1615509700, 4099800680, 446361836 }, - { 3458894246, 1252443772, 1025159829, 2706074000, 1427283370, 3812678027, 2169882811, 471791832 }, - { 1919250214, 1389575583, 1689558529, 3842835766, 3273152660, 4222738223, 3750006394, 1590918911 }, - { 3969608630, 90743036, 1943840898, 3556194774, 1957994054, 1246189991, 1335955866, 1625748291 }, - { 352482557, 1106476208, 1138770607, 692211917, 2746936498, 1880815832, 3399996927, 514305061 }, - { 4036589958, 850890706, 1016790431, 88244732, 2642751661, 2580434498, 702857128, 1371252774 }, - { 3837054157, 509800430, 3778820095, 1659200294, 985263719, 924903197, 3660472719, 1201049816 }, - { 317615025, 1721537493, 2762946257, 2714876834, 2812682061, 1285619519, 2915035539, 1487055358 }, - { 4294433552, 2584171381, 1828129594, 3142298913, 3358744590, 705110898, 1551796154, 1297618472 }, - { 3895520633, 582148561, 3993163182, 4286377168, 2167546790, 2317945560, 999753882, 1355710744 }, - { 4062223174, 3508994874, 2348830867, 2661545403, 1147147174, 2081026324, 27614072, 465161046 }, - { 3137718385, 1116128513, 1852679109, 2788515038, 2711167097, 3353550601, 1287376446, 782190115 }, - { 847132278, 3098775979, 472331490, 2584134008, 3196357036, 2175201380, 2725910692, 1474647183 }, - { 2624320214, 233095094, 3538495089, 3060247467, 1829488511, 3324351680, 500469477, 168169435 }, - { 4027895340, 1628592361, 3750496678, 2069300564, 336021745, 3498363652, 1948807584, 1137613698 }, - { 2344336129, 1880946419, 3042219550, 821678235, 628089059, 3781880744, 1504019336, 1719126831 }, - { 2652201285, 1268019503, 1970293783, 1693713695, 1024179778, 1694529728, 1807016586, 479427490 }, - { 2191371856, 3642721262, 3577997576, 756264969, 795826764, 2160857398, 1341767912, 522153226 }, - { 1794757341, 2265054450, 4181301188, 3494646147, 3123514504, 1785704307, 4290243727, 1413416417 }, - { 2814384900, 951409978, 365645092, 3756107530, 2420402628, 339865579, 1321491554, 345504923 }, - { 1374093493, 1198898705, 1091811545, 1473828001, 1151769095, 349046949, 2376332354, 1132341850 }, - { 1754225818, 864577677, 2850777589, 1294672368, 1232766087, 2402981575, 1026815226, 1091715184 }, - { 910829534, 2773173332, 591151255, 1288613235, 18598087, 2292072128, 928455776, 1498837922 }, - { 1905543706, 710745898, 4007740601, 3419218137, 1059495598, 380063937, 1257286189, 850646125 }, - { 2219526422, 3177522431, 3715625327, 329224084, 1228116732, 765802341, 1242281432, 824411235 }, - { 51795872, 4165623987, 1946334540, 254361242, 3329497894, 343414023, 1236648950, 263837866 }, - { 3051517145, 1876242010, 3329635069, 527624444, 2444726325, 3813716092, 3117012372, 456298650 }, - { 1552475525, 58388794, 2758757181, 4040854065, 835997848, 1782977670, 2946737867, 19469545 }, - { 86875442, 1369483452, 4077474047, 1653280114, 1780804565, 2417851301, 787653339, 805844122 }, - { 2155758358, 636787927, 2603097323, 3840784955, 1330299800, 2455874042, 3308071726, 572469664 }, - { 634062117, 114615432, 810039807, 2117634176, 4181150428, 692180593, 4222734341, 1035199352 }, - { 4159031011, 862631245, 4012802618, 3641254479, 1828555464, 2386098094, 3314520443, 1665336800 }, - { 1993986002, 2923271729, 3381149006, 2901302348, 731865657, 1107257692, 1526193529, 555349421 }, - { 2500642033, 2462476052, 2520235047, 567802662, 3648512061, 1676084440, 1421888599, 483133193 }, - { 3568905054, 518227470, 898060854, 3604513886, 1489387592, 1037650548, 2686700772, 174210228 }, - { 1268511932, 3892160913, 3872948211, 3669861040, 2563147223, 1516823148, 1961502390, 791550087 }, - { 1702386110, 4029899944, 474569279, 2717913175, 2270815830, 3800650878, 545343436, 417361416 }, - { 1290773778, 4068928361, 1740931225, 513053628, 1544944911, 79830067, 3009135415, 1215285067 }, - { 71332950, 2118439353, 3931820944, 2497445055, 2327155613, 4229094699, 3856617135, 726768703 }, - { 300087803, 1591211514, 3495489909, 3805097934, 3919113803, 572736585, 2480582313, 757628100 }, - { 1548349635, 1148326380, 3074595978, 1128091636, 3969371607, 340293881, 3685265560, 1755733425 }, - { 635892891, 1839980555, 3810852444, 4018221136, 479978248, 1652813185, 3650837181, 1468644610 }, - { 1766104968, 3183526168, 1631398438, 430939607, 3799286483, 3358149178, 3493736099, 382285674 }, - { 2916236843, 3709082367, 661513842, 3129624955, 850565336, 4136942993, 2730115121, 285308200 }, - { 1030213669, 2081816829, 3517193078, 3496632000, 2843891884, 366282838, 612325075, 1713887946 }, - { 1623150448, 2387813131, 2272195995, 285004650, 2767275430, 1125291751, 1806338074, 745668017 }, - { 2238318877, 164752390, 2866310760, 422709919, 3312995529, 740981154, 1807048544, 1431541927 }, - { 677358335, 2733353967, 3814737235, 451763514, 688138773, 2619194660, 103753101, 242374319 }, - { 3961800308, 316359904, 2484139029, 3667128173, 3897146200, 2780712730, 4540236, 74379872 }, - { 198708707, 1935481794, 1877890945, 1844223137, 3540211526, 1016426892, 2597996599, 589370132 }, - { 1991171666, 976010662, 3086905861, 705291365, 1998146069, 1134208917, 4090098069, 560409986 }, - { 2956659199, 3476232129, 680518610, 2432590937, 3864059446, 1739396511, 862118036, 1000476021 }, - { 3100036701, 1747623262, 583872793, 2371097766, 675815958, 3049933113, 3229941711, 337241177 }, - { 1441432686, 4052684588, 3133832818, 4168077507, 4273059023, 2425951999, 3226627977, 1936189199 }, - { 1214723540, 889953410, 1299510993, 2965550852, 953301252, 3421003437, 3783361337, 1633897273 }, - { 3068513015, 1695373873, 98795258, 4070368789, 3521188611, 2704578687, 430598058, 984699617 }, - { 2873089882, 3103232415, 2362215496, 2650304489, 2237249162, 3577676228, 2596339249, 378684242 }, - { 1066143529, 3362251732, 4084266388, 2305916404, 2413565933, 2160673687, 3280712730, 1680589244 }, - { 798279388, 2895134077, 1042246953, 3752472643, 1203973341, 42392415, 3009206821, 1454312795 }, - { 1223019506, 3186628211, 22692715, 3541784573, 2151336153, 3937780337, 1466070946, 88160548 }, - { 1591403966, 1371742623, 3998331569, 4261503113, 3891883228, 1808647738, 2096751041, 494882170 }, - { 3536442733, 3670162456, 3687745143, 1207093047, 385554659, 148392349, 2969686102, 179383852 }, - { 797079392, 955103476, 2544496819, 1075644742, 2378823010, 2005284251, 3421284804, 640679390 }, - { 1238069896, 4164478737, 3511306801, 3124436102, 2009861954, 2799431975, 4037123274, 1566370021 }, - { 2286295294, 2783807842, 1506899578, 3738864358, 1714871786, 1873651068, 743810527, 1800277858 }, - { 807812091, 1236938799, 3402007972, 660340350, 2355649246, 151868059, 3454358027, 636436221 }, - { 1562854089, 1847555494, 2875264609, 1156440929, 2841410849, 454767684, 851707933, 802240271 }, - { 411229310, 419749204, 3728678705, 1136760857, 2318136443, 260056608, 174856102, 979003979 }, - { 884610675, 536271338, 1255228544, 2017366326, 3635187013, 1280460758, 1337877773, 976484603 }, - { 3471751433, 1360922142, 1078287246, 2942476403, 3776515526, 4016738396, 4200291836, 1604430075 }, - { 3821294692, 3607322503, 4150090654, 1386906209, 1842236778, 3066286473, 3538085801, 1024815996 }, - { 1974084364, 166512893, 990814107, 4141558535, 2591837233, 3310153051, 812417510, 1618382441 }, - { 1428843105, 1672638935, 4238534783, 821078732, 3607099227, 1036640655, 1790248666, 972236877 }, - { 1647076417, 3181239055, 2385112973, 3563532882, 1962361978, 361268550, 1541042584, 986377039 }, - { 1687526528, 156030580, 3527730815, 2028788112, 3743857536, 1895609593, 184296639, 1597996012 }, - { 2486234731, 1924561548, 594556365, 3065223802, 3624011150, 4249473722, 2270069130, 1461518970 }, - { 1798395610, 2921563544, 3617638149, 4161763408, 3507484692, 1083130495, 323848120, 945449455 }, - { 718041157, 3472156411, 2123683336, 3024515928, 3566387835, 179786787, 112508514, 1128923094 }, - { 3155872981, 3428894843, 656464202, 611609366, 2047899994, 709816524, 96266766, 436775146 }, - { 2598679025, 2837290054, 3376405285, 1542443911, 1610980947, 1454524450, 3054339763, 1211751487 }, - { 3661009719, 3248960072, 2075799066, 1826350582, 1280062070, 2625864535, 410625415, 1311662480 }, - { 1343650948, 3610882313, 3648425523, 629297813, 1982582669, 1988920854, 1765824609, 780322693 }, - { 50754536, 3010291363, 4128865945, 1348073329, 3767912805, 201456295, 2871359612, 541978512 }, - { 4158044386, 899388659, 1566471244, 4067232497, 2315221281, 1732083943, 1185354145, 1036761399 }, - { 996172582, 2347735875, 2933946735, 2027733132, 2716851235, 1278987462, 1144293605, 579518778 }, - { 3366376933, 3394312560, 3074246843, 3131194003, 1925651423, 2797040279, 2617734735, 1371948779 }, - { 4115581784, 2670788442, 366244463, 1676540098, 3348947825, 3654150902, 3270050800, 1621491375 }, - { 704252674, 2645222722, 2086999972, 180871242, 4290681694, 2944716111, 1221690338, 222107131 }, - { 1169710762, 2936056843, 1221834337, 1457237466, 1106508734, 877557547, 701919463, 193131140 }, - { 2126945540, 3428473896, 2619741407, 198323011, 547348573, 539941673, 2421056583, 164152296 }, - { 977853453, 1925690130, 3230145115, 3712130927, 818599407, 2212096300, 3217117883, 324229193 }, - { 2610906896, 3699303441, 175236795, 800081207, 1350110898, 3268654645, 3006384691, 420933711 }, - { 2463905963, 3020686902, 214840191, 3522044464, 3828138917, 2480880262, 1166474899, 1670009864 }, - { 2691785572, 28858841, 1973640047, 4290926520, 658197133, 3989775096, 3700454180, 1579860932 }, - { 3736920992, 3951442462, 3042669764, 3240228479, 1152424146, 2321528969, 3333121396, 568994637 }, - { 2029802738, 1730625053, 3241179619, 1197313980, 3060169255, 2109830965, 760806000, 1241591214 }, - { 2014471656, 3304490546, 355148115, 1806806685, 3246704038, 1474511419, 448376531, 803206063 }, - { 1057547247, 2667862596, 718322946, 3286666699, 3496670032, 2119384402, 2893259498, 419604849 }, - { 1615136712, 403814457, 2340668776, 3540636556, 4061648166, 1792462416, 2443547810, 165899357 }, - { 1648972526, 3379327585, 420366967, 2595865387, 3189925534, 2191578472, 1952391714, 1176574336 }, - { 3553331703, 2343062301, 3595847886, 2017555056, 3195004786, 196183342, 26145605, 622810412 }, - { 3207604813, 1334363676, 787401037, 4122225426, 2095577247, 2987988819, 3347156417, 1693610104 }, - { 899974687, 2804291169, 3678884499, 4085591116, 1399303847, 2953654148, 1676051419, 1935267267 }, - { 3010210811, 4294948642, 3114311654, 244963135, 3817101647, 53898765, 3588859725, 904262591 }, - { 312893329, 2652643897, 929966138, 1850733683, 1979954109, 1519000193, 1407154141, 1428155732 }, - { 1874065879, 3663595882, 3532340747, 1750911951, 1325347287, 2329405362, 3316921116, 1922192494 }, - { 2584684557, 375416299, 1458098054, 887755119, 1822531492, 2621228836, 1499073129, 702155043 }, - { 1472766194, 232363699, 3901865306, 3899500148, 779598163, 1553455497, 1693233979, 1421283617 }, - { 2070646012, 1290928372, 3911017013, 4291258984, 3188914583, 1142162384, 1613006263, 1402307389 }, - { 3302941860, 557862840, 3809702617, 2681070525, 4072591321, 3497544043, 2919331207, 1082637874 }, - { 572536401, 3749985551, 3821722383, 2711533217, 3537483348, 2777665083, 1904216219, 1910342397 }, - { 2457337525, 470448209, 483238980, 1641938133, 179886615, 175455134, 3454742139, 150447713 }, - { 3852847272, 978333192, 3000683814, 1389300496, 1209960084, 4097115078, 1857374414, 278274631 }, - { 585828264, 1771065041, 613399513, 4149916139, 820729419, 2493602362, 675037615, 1558378197 }, - { 2762121596, 1924349706, 3953981677, 1323325693, 100452261, 1302952124, 279394074, 650784415 }, - { 3510636783, 2626025135, 1119248654, 2776315981, 3922879865, 3563826932, 3630147599, 1805169513 }, - { 3522175622, 1939760970, 1030347720, 1780003019, 2797381033, 4287955430, 3781142732, 1861092018 }, - { 2002978827, 770939300, 2876539767, 3579623771, 3188259516, 2048596947, 4026900090, 726072321 }, - { 3317631582, 1992028821, 3465766783, 2431452984, 2363632605, 2651539632, 1789972722, 164586921 }, - { 950783799, 2266489571, 1147117581, 972266220, 2111883622, 2754766875, 3643978425, 328700122 }, - { 2733562717, 2289475329, 109140616, 3810309938, 3003231041, 2861500738, 539687081, 31794390 }, - { 3243338072, 853056736, 632545102, 1083379051, 3443278938, 2836082400, 1139356577, 1298570519 }, - { 550535936, 3492082765, 2051012158, 2444355290, 3784853826, 433770131, 1268911115, 1229229780 }, - { 926838140, 2847265422, 101219629, 3726839198, 3203868174, 2320934100, 257329622, 1201941379 }, - { 1194610909, 2317971320, 2002987439, 446197061, 2402124620, 1587581534, 2952048793, 710388039 }, - { 3012012667, 1699197935, 457068856, 2836058552, 2470742, 2163259917, 706658822, 1408933939 }, - { 2318242966, 624945927, 3465363216, 465106944, 1564630213, 859415147, 2041388425, 505342913 }, - { 4093839963, 3309309551, 2109632695, 2874504131, 1298879423, 2982252157, 220340098, 1666470234 }, - { 1133907187, 1402704817, 3639325504, 2527429147, 3064773098, 3577241489, 3174057465, 480756996 }, - { 1796074384, 1954961841, 2874587679, 581615226, 2161331274, 4139146026, 1134993143, 367984452 }, - { 3343649337, 958980491, 1182204352, 2575008972, 1949510271, 984191789, 1121431248, 1374638592 }, - { 3618087237, 3238176422, 2049430523, 1712076580, 1951632494, 4190704265, 336963596, 908005325 }, - { 529712085, 3246555899, 2416266008, 2817929012, 4164240436, 2915917143, 3045619795, 953062740 }, - { 2015033635, 2706972729, 3993600252, 690677201, 2550102309, 3769066761, 3499931439, 1471679291 }, - { 3842146768, 3996578443, 1060405904, 2059612338, 3729219091, 1305666213, 2793410929, 1437597900 }, - { 3669015146, 1049416771, 541173014, 94675936, 1444982566, 99439797, 701766276, 237105426 }, - { 829230678, 2161102718, 2474687008, 3341454748, 3334423119, 825404816, 1259356520, 1537663010 }, - { 1012815752, 2308787976, 208660299, 2342944052, 1077339320, 1216016352, 3622124471, 366045990 }, - { 3063968622, 2072002671, 624639204, 2236265803, 1992507271, 2244414429, 54015169, 319667343 }, - { 448502338, 1733380641, 2921606594, 3712288438, 2035551499, 2423476733, 663503677, 586056166 }, - { 3185380982, 2017146427, 206427419, 2986588080, 3306821035, 1756021343, 3915063477, 661016230 }, - { 1287619713, 454608988, 2554138983, 1554034261, 2095171868, 1591118032, 648744165, 1472738474 }, - { 2897049937, 3123506107, 2653180461, 1544135513, 1615368529, 4122032286, 4135458001, 1353228788 }, - { 803282460, 754371232, 3093387288, 3646854792, 188712970, 971643356, 149554078, 1212220850 }, - { 617029592, 1798349690, 1128975874, 186073906, 1346590371, 2801404420, 1760692270, 1838336321 }, - { 1763101392, 2248791047, 3340966512, 2488904091, 2023899428, 3336478964, 1414887015, 730653726 }, - { 2958710979, 2624445257, 1202223748, 139763097, 3078429163, 2354873588, 481902109, 871279700 }, - { 774327101, 3371484099, 105589006, 567432932, 936993196, 3646704994, 432907355, 1841939820 }, - { 585856758, 2063562584, 515392375, 253587845, 2573622239, 2279419595, 1227078487, 888049111 }, - { 2060909921, 3245945997, 366630538, 764566016, 2352523732, 1179787365, 4223389076, 340811283 }, - { 2272606047, 3618417128, 4096637243, 2722576085, 2718591670, 1063398726, 640772112, 603118740 }, - { 2934230896, 1095336368, 2942677214, 4203070910, 1119929332, 1519731619, 232043554, 1362120529 }, - { 291977439, 430627348, 1800869742, 1575105122, 1939521807, 827604683, 931839641, 1130697950 }, - { 1042656261, 2684170993, 1946631764, 1444484920, 3997937281, 224086691, 1135394640, 536439892 }, - { 2019599588, 1113015472, 4089330626, 1411700225, 2818412124, 402265000, 335467454, 1927446568 }, - { 3838300103, 1988451700, 1732187190, 3014225627, 1301362706, 211889731, 1353147390, 1369875597 }, - { 1529171082, 3252658532, 2418309856, 474954060, 2956066290, 2506482828, 3354662178, 754040778 }, - { 1986340769, 315381619, 3293221419, 2978626734, 647628915, 2248739524, 3562284891, 169577962 }, - { 1868628908, 1741972470, 98479643, 387078354, 340245589, 1828597519, 75484111, 511402346 }, - { 336603216, 373903406, 2435395408, 3782563042, 355343179, 1138912427, 2650102475, 940834585 }, - { 1054864269, 281369431, 1787305578, 733384534, 491561496, 378406643, 933052151, 1521750603 }, - { 4188769536, 1861219869, 3168058383, 4030708738, 4226189499, 2790840726, 1906956211, 1280394466 }, - { 3906824428, 2854393663, 2536797550, 1943384825, 4283280483, 246746398, 3088750922, 621568000 }, - { 2837297899, 3177075042, 1620955552, 4175208390, 731646077, 3524691743, 2111536980, 1741354648 }, - { 3410559223, 2453668151, 520791203, 279990946, 3604117628, 900214637, 4152489879, 707615664 }, - { 2314421456, 970751974, 1866854800, 2432282072, 2875207586, 3255836815, 3685776196, 1599400242 }, - { 3972244617, 3809195626, 351163809, 2878804964, 2590386424, 4227343965, 3494416250, 430067046 }, - { 1141315409, 3368165794, 2820964768, 1319788886, 1786586336, 2004955541, 4134609980, 1324295193 }, - { 276211304, 916270534, 3525393311, 1168821709, 1189411418, 3620270279, 1847316788, 323550129 }, - { 2676078937, 3751535434, 47909589, 1336077814, 3256807595, 3019638048, 3781417152, 1182416378 }, - { 3737635220, 1918949676, 1872483754, 54094365, 1430314024, 1814840835, 3138757398, 1709580348 }, - { 3473036205, 1450473219, 2586461828, 794349686, 1743264827, 1856780780, 2253532995, 458799024 }, - { 1883563333, 2581126873, 31687584, 3725047749, 2203534786, 3918306119, 11469506, 369238990 }, - { 3730296594, 162467166, 3120865826, 2476708854, 2110968037, 2912634483, 1761754242, 392160815 }, - { 3396089298, 508820169, 1628236926, 1412316258, 269513164, 1806375354, 1174683937, 756608442 }, - { 115933368, 3283576533, 4068598404, 1616903173, 919085508, 3363899177, 3292031967, 380944183 }, - { 2767838992, 3615469355, 1457920284, 3488541790, 1136296948, 337454997, 3760778776, 1728514669 }, - { 2053966021, 1872397990, 459843337, 106354487, 2592233081, 3690369361, 4192146683, 905007816 }, - { 1233145800, 751951084, 222408922, 1069750664, 3075336012, 2956190831, 1466167786, 1828263849 }, - { 2531105736, 714306738, 2266824986, 21322915, 1879572721, 1520601460, 1069473537, 776511045 }, - { 691523326, 699623920, 910082757, 3787856847, 923707112, 3665063636, 3584907463, 1401056131 }, - { 604173639, 3588265712, 4197756312, 2311622250, 3552644425, 439374359, 2795529113, 1052326694 }, - { 2277301408, 1727915590, 1280030740, 2428288838, 1193577569, 1181434965, 391025511, 1885469015 }, - { 868180457, 729089507, 1460540479, 2051240080, 1109140030, 3553001444, 2731487981, 1875991002 }, - { 3134266539, 3474387840, 310628053, 2080523226, 2020380794, 3180979847, 2245276249, 1153360399 }, - { 1643164809, 3753782531, 3376812668, 2935303209, 2155372445, 31768373, 1448662010, 863081977 }, - { 2261570594, 1355817664, 1841872580, 3834972376, 4217262885, 3639682957, 328216565, 482359178 }, - { 876583476, 414995491, 4018083614, 3788006696, 395471684, 4242686783, 3170868106, 505461556 }, - { 1045142671, 3222689152, 457302299, 3055344129, 2570186769, 1898771515, 4291510802, 866139693 }, - { 3860490958, 2088115262, 1624328855, 1137457032, 2311236999, 3723469786, 3037475628, 1834911648 }, - { 3131035840, 4147201286, 1247516686, 550152457, 677862393, 3111695681, 521219566, 1573454403 }, - { 3094038316, 714492411, 2863454673, 647152608, 4249115171, 3799857918, 1458117671, 1033776350 }, - { 1631894807, 1692505058, 2475338256, 2855864572, 378324225, 3244364358, 3558107967, 1113052945 }, - { 2134497841, 3998045641, 3273454779, 269210040, 1210592281, 295091767, 2383990553, 1665596813 }, - { 4098400143, 2656571877, 244108068, 2980428026, 2241020377, 1018056346, 1253473879, 1039640274 }, - { 1567967834, 802749328, 2709749577, 876124186, 3410157909, 1740009701, 1151316794, 10051958 }, - { 3868180423, 295404831, 3369683985, 1409969469, 1334068458, 2272205642, 1234209257, 400360686 }, - { 3538124453, 729979990, 1234606059, 1995346275, 3496596972, 2569498850, 2256999019, 923280520 }, - { 2230747628, 4277885462, 1332112028, 2559105433, 3906488360, 612695651, 3310368401, 1221286882 }, - { 2396553827, 1989620823, 2272056469, 1809179457, 3489471193, 2297711031, 1190271452, 106134171 }, - { 3301421637, 4219202387, 452437008, 2236560517, 555379270, 439462913, 2919717764, 640198723 }, - { 3131919918, 2315171643, 843402303, 1595650838, 2161137862, 3204076166, 3326407554, 1437140900 }, - { 2101088890, 2467453907, 1147123595, 2804801642, 3384751318, 4088647319, 2044651274, 436798128 }, - { 90599039, 4289537224, 1184597389, 2240948405, 2112990731, 3979079747, 2692189881, 673992341 }, - { 205162084, 2736238921, 1971760788, 141249275, 2962997090, 3351795571, 3436043818, 1065409777 }, - { 618964887, 2478173237, 2791704294, 1450623960, 3372162416, 3975100275, 2739385261, 879154668 }, - { 2721889894, 1792783809, 2232054228, 2185530035, 4144578063, 1144924698, 1199438422, 594149366 }, - { 3100377933, 3824469578, 1984361129, 2734023003, 3316994182, 3402972431, 2310372310, 1514592410 }, - { 1963792705, 2591340980, 2220641403, 2980357521, 3700908285, 2787955978, 1739305292, 1849262846 }, - { 3893355724, 2423400138, 3580862269, 201506652, 503190491, 575421232, 1723848495, 790066632 }, - { 1442436022, 740012463, 2313193046, 3495323261, 4112180838, 1998519579, 305923464, 933883677 }, - { 2126137699, 1729865772, 1334096458, 149244464, 1291092625, 1328897732, 3434976450, 1443086788 }, - { 4269631698, 1020821438, 1519307588, 3914440386, 1176365275, 3498624896, 601008024, 525558045 }, - { 2844327887, 412676104, 1838872849, 1535268589, 4265193290, 3504695966, 3547027930, 156167469 }, - { 35100648, 3218151162, 4064484601, 4053149017, 946135516, 3057267168, 3593107412, 384124601 }, - { 277885344, 2139893990, 1737114662, 77766908, 542905582, 691653260, 2932886128, 903319972 }, - { 1488054427, 1453168794, 1168059276, 515220738, 3976419842, 303928717, 1447760713, 756486089 }, - { 1929981134, 1066027603, 3466613927, 4022389353, 1498804335, 1311753186, 83202479, 1179936296 }, - { 2855732161, 2151353128, 1581935573, 4011950707, 3328827494, 3609707009, 2251830636, 1501753673 }, - { 3721685215, 6845132, 1345662659, 3057266278, 1564561214, 1060022896, 2712740368, 851111270 }, - { 1994969057, 1425980908, 4293629736, 645612740, 3051174823, 1505746867, 3991485024, 1090765106 }, - { 3515837424, 3159765690, 2824208490, 1921216119, 826851207, 911297363, 427223014, 107853250 }, - { 3728491451, 2111398619, 219666932, 1396267370, 1886390737, 4164258787, 17242876, 53253907 }, - { 2799719192, 2301019144, 4054544734, 4058337935, 335927259, 2309494481, 2686162136, 1389430247 }, - { 2627711276, 288023961, 1117766465, 4255099071, 2726189440, 2513779978, 3844330276, 1224051213 }, - { 1019305009, 874832348, 3885042475, 1121596977, 3596347791, 4233942935, 2215249637, 546687122 }, - { 4168304610, 1255411645, 4023760851, 1278085198, 3349967009, 1286070986, 2911373655, 975283320 }, - { 3110409426, 1650202706, 3568323034, 3304242567, 2204177789, 3813716757, 3385558870, 51270529 }, - { 3339753163, 2989957275, 2836672343, 2026218139, 367604820, 3548934453, 895353869, 99513842 }, - { 1994659023, 1311139307, 2860659576, 426635242, 2062865645, 61528337, 2770909786, 1778236688 }, - { 3557113973, 1076600720, 3249509844, 1759390214, 2277321495, 1369475124, 2310857789, 225446714 }, - { 2729170660, 2957329929, 1806684840, 2152421168, 152805633, 4218122324, 316937165, 813661602 }, - { 2930419109, 3802582141, 1653054811, 302181378, 200744958, 1151863335, 4099168030, 1939175060 }, - { 1192792522, 944322921, 1436794512, 2469488443, 3641503116, 3357092543, 608983518, 1551680338 }, - { 546068686, 4293346612, 872870339, 3007877187, 4204980536, 1888846331, 3276421505, 1869937959 }, - { 1175839206, 529112268, 1609279626, 3389821996, 1839068732, 2067281004, 2147394977, 980155081 }, - { 2304723683, 4228050595, 2666295734, 800866821, 4206814032, 928484817, 2902609929, 1298860456 }, - { 903518199, 44434606, 1186833101, 2009907331, 1629278866, 2983793011, 1068530440, 830870585 }, - { 1890083213, 1149347163, 862966590, 4248479267, 2037986780, 3828310062, 2553529814, 1409115123 }, - { 3729574882, 1114552239, 1612115201, 296820139, 1299309570, 2170029674, 3585643971, 980486896 }, - { 3268869941, 353576184, 3677682530, 3656016672, 1915943401, 3838253032, 3559938602, 1474743729 }, - { 597454964, 3704685476, 2869565999, 2668818722, 1283636818, 2055594927, 1863868006, 1553548973 }, - { 1154049899, 243087279, 3706629606, 373042118, 3409932152, 3689972773, 2795732873, 72298242 }, - { 1423977713, 468728268, 2543797385, 968448585, 538591950, 1463954983, 4282521815, 1575503815 }, - { 4190928075, 2058662062, 506973710, 470648533, 151698395, 2623460284, 4199829808, 456014354 }, - { 2482383091, 1771047577, 3307795519, 1258194117, 133699990, 3784828695, 3092912044, 1788766530 }, - { 2111703791, 1544117080, 2232388940, 464954821, 2725973495, 1731778507, 1926094536, 127684750 }, - { 1685758950, 656297418, 3558216067, 3083166728, 1995856706, 963480842, 2454973583, 386790814 }, - { 1001655825, 2934724064, 823056205, 732081228, 271528098, 1978566854, 1398707245, 898723258 }, - { 3789688529, 1181660027, 2966335136, 244917438, 1154969320, 2236824827, 1792248795, 678196525 }, - { 3649113561, 2931813537, 4015188023, 2013039783, 683267095, 3993891458, 2907161241, 1248713062 }, - { 3633456249, 3809782918, 172741734, 1981378852, 1511321891, 3267597584, 16491768, 1608914056 }, - { 167585751, 3915196428, 586147943, 635186867, 4181376869, 211597652, 1416644817, 647928736 }, - { 3126793456, 1268067542, 556450650, 4021973165, 3167661626, 2670143917, 2898662046, 1060217202 }, - { 3231466979, 207268438, 244041189, 2067026282, 3667201804, 4248696350, 3546971388, 1537617357 }, - { 2380546282, 2703066805, 174383013, 1327464554, 4197549185, 1361942110, 2136006772, 629621933 }, - { 1810422529, 2395010473, 2068259315, 708084309, 2074974898, 2998882661, 1120585616, 1141256343 }, - { 698107073, 2808963791, 4230321838, 1394195126, 3160757935, 63394658, 2859631134, 908191802 }, - { 819076553, 924276624, 2351878654, 2965873760, 3046258410, 3611346648, 3077011366, 1551328952 }, - { 2561773411, 4100183474, 2434303551, 1174525885, 3208015631, 3955146259, 2264949967, 1019561042 }, - { 2263044834, 627585071, 2481069257, 589859935, 4012673452, 1350566465, 437381629, 927590350 }, - { 3518217097, 1644921318, 939467638, 3299678077, 2202539595, 575724233, 3782244426, 86882380 }, - { 1051821981, 1666578619, 3838280176, 1418645978, 337803690, 2145380230, 388790014, 1843703743 }, - { 398678213, 1213919650, 3309471376, 488546361, 2900857680, 940570213, 2905581944, 823358292 }, - { 2362194760, 4081524862, 1683352810, 1259573653, 1022712000, 2548496241, 2931780609, 874751741 }, - { 3914368378, 3681952936, 3733171460, 2737787909, 4113815325, 226022535, 4020385791, 1055042093 }, - { 998866335, 1576311551, 4188272252, 3449774599, 3688082176, 1853507437, 1364552817, 506971467 }, - { 2497160432, 1582891868, 2949971513, 3306645940, 3828661853, 107301560, 813037133, 1069728095 }, - { 2451855202, 1250236030, 3731878692, 3951175437, 2419832997, 4224544984, 4098345124, 533954064 }, - { 1339586844, 1152109061, 2068387510, 1200721808, 584907637, 1003299443, 22602588, 535180215 }, - { 1393882367, 1196567788, 1932902972, 4223876446, 2883178633, 3912325044, 1070787846, 434219495 }, - { 1541098225, 722728657, 2851058962, 1544071578, 2765374463, 4093335391, 2791410841, 261948485 }, - { 974798456, 2526394221, 723302966, 3953091809, 3062659738, 1396137478, 3843437163, 283723391 }, - { 2719470325, 3313824488, 2412431407, 2472785329, 4205573380, 4280762882, 2069347406, 134714492 }, - { 4078520353, 2085577022, 3048460931, 169097363, 1648927659, 2121329488, 4014357774, 946951058 }, - { 3785107783, 326715018, 3961640709, 983673692, 634502922, 2236856739, 361072949, 738312844 }, - { 3776447532, 2997338265, 3296443848, 2291412782, 354874981, 1592476579, 3702909261, 1322877814 }, - { 3239503661, 596223737, 3809805381, 2219420292, 1456905071, 3556700807, 2034410283, 1398290784 }, - { 3567874659, 1215611279, 174290847, 2738708075, 3518785696, 4071911130, 2131588073, 1826936379 }, - { 3956302934, 74833333, 1643310539, 210417382, 3256380634, 1436730707, 3280805632, 1354488797 }, - { 1692124872, 36672492, 761017263, 2411138201, 3356999563, 621185077, 1303986418, 1484063250 }, - { 3945174052, 2474936529, 3285106377, 441872968, 3340740050, 669221180, 3464742482, 551649273 }, - { 4140863165, 212937986, 1001986440, 1654541897, 3272788301, 3295802356, 3459767106, 224548764 }, - { 3507376711, 3626778267, 1940777622, 1360722840, 2249391640, 191098011, 3244493527, 399302268 }, - { 3432706205, 1964781834, 1373121120, 2450817960, 1835590185, 2781846560, 1939093130, 975535510 }, - { 3993651882, 1293015171, 2202202498, 1741843243, 2269839296, 557474261, 2131558027, 1115873733 }, - { 2159225717, 1649455740, 1227694869, 46685643, 2611056350, 3408880165, 2879577711, 1080510587 }, - { 2328526353, 3356308772, 799467633, 2261159901, 94297915, 3804061347, 1957296031, 1851161663 }, - { 1299021470, 1309731759, 3095491254, 2455080921, 2567798451, 100412506, 562595316, 1155256611 }, - { 2601680772, 3529004316, 1858487324, 3030856331, 1026195722, 1272027233, 504884475, 113208094 }, - { 754082893, 312380793, 1838939553, 1882903745, 3521928675, 448964731, 774924585, 1368655882 }, - { 1967728071, 2551705168, 2926286964, 2300369817, 1003211610, 4142613009, 49272412, 691143088 }, - { 3930011939, 3640090614, 4220713669, 3491142257, 3239357328, 2144036732, 1978297782, 969923164 }, - { 333623991, 1778107113, 496486363, 3760900707, 1213210778, 4149295583, 922163035, 1508729316 }, - { 2384863661, 1255721367, 3635606257, 2929438498, 3391243809, 2865226555, 3003136653, 1241083328 }, - { 1634734076, 2158298703, 713126082, 2042863232, 943269271, 2963456296, 3254035813, 464534961 }, - { 3212696103, 488954932, 2470012929, 1860342297, 3266799844, 2212809234, 2385277465, 974332084 }, - { 3277201655, 2310253961, 1880896598, 1144839962, 1894245956, 1055102934, 706692114, 1285170153 }, - { 3288536319, 2384988163, 2446216009, 864583508, 2921628868, 2999355761, 3831989354, 1158346277 }, - { 3134112454, 3592677581, 4294579377, 1936386053, 4190190343, 2265134286, 3002358126, 1291435793 }, - { 1343797465, 3276703466, 4110534459, 3470198089, 4115398864, 1537141946, 769201342, 138150434 }, - { 2827539664, 985939410, 3428544564, 1452672249, 345513814, 602346975, 2983097097, 1837551020 }, - { 340601250, 3594278418, 3644438987, 914863549, 1600118341, 1842486625, 1675422935, 112835238 }, - { 4037460812, 1662925878, 836552772, 120897521, 2610133436, 1803316564, 2502454429, 707476911 }, - { 3990782573, 3054181651, 2863080584, 1760701544, 2308951124, 297927573, 2836463218, 1353475312 }, - { 3844189097, 1636233078, 1996162013, 4011653202, 3892800791, 656004109, 3038958287, 96385643 }, - { 3086254110, 80104107, 279070571, 1055801474, 3317331389, 1461002959, 443251564, 1499564256 }, - { 1559373893, 3941053078, 1393493109, 836192229, 3139636634, 3111020452, 2269462416, 40862669 }, - { 2515655674, 1783053568, 4059478362, 3833438569, 1267260864, 3496102109, 2942551768, 1125082805 }, - { 1262152933, 1531717103, 2230703248, 770639596, 2705584872, 305703008, 1937142651, 1905276561 }, - { 1361419619, 3656794017, 1023031584, 4037711797, 2112327144, 2928342073, 3078245825, 1540440475 }, - { 3883317160, 1503010516, 3828904397, 2036936179, 570520732, 991921868, 1366917213, 1111215943 }, - { 996677676, 4006510040, 826930518, 1095654261, 980857930, 35859825, 2194942512, 1282030675 }, - { 2919392288, 3734626979, 3059819142, 2621632113, 4203685809, 325851819, 1699499993, 758919645 }, - { 1626163086, 2808512328, 233131032, 2175368810, 1364915484, 1791204613, 3752808841, 1431834140 }, - { 3085595962, 1662053510, 144064855, 3121316764, 2344371299, 1890632251, 2688286694, 643957739 }, - { 2129979379, 164104166, 939346661, 2128988582, 125967764, 4282748371, 3566335636, 1620494400 }, - { 1563646787, 407872866, 4287538616, 3165597891, 769792104, 2670797241, 543684169, 781806885 }, - { 343310878, 3401747510, 1112868269, 920256600, 3612855536, 1699127703, 197841836, 1755189520 }, - { 2116362287, 553918248, 4279909342, 1796621626, 2222234954, 1077423344, 4254246063, 1656399277 }, - { 3096495886, 2521757684, 4294081304, 1720161213, 4060496497, 3043330443, 882534116, 1130148048 }, - { 2322602476, 3956711370, 679394083, 2059802551, 2638797839, 1789050853, 2547478109, 498744030 }, - { 3713613404, 1645469641, 961949443, 2462022201, 2615468307, 360969388, 1804236279, 337147438 }, - { 3250379883, 349865427, 560565854, 3539716763, 977012592, 3577097755, 2011366680, 418812171 }, - { 2571345597, 763002277, 1403359922, 1778611434, 1973955920, 3070156835, 4074398225, 1793267788 }, - { 1199067682, 2152584215, 1742263061, 1972198457, 1537908430, 1285589810, 1431206541, 108031295 }, - { 2568707198, 1443416901, 1444889582, 142527676, 4130541398, 174118060, 2655000820, 453188203 }, - { 777138504, 1093927184, 3521281457, 3468818384, 43839853, 3348461807, 3797445504, 125816153 }, - { 3005379551, 3162612860, 3108773272, 1785213822, 333163720, 2121906484, 1230129169, 757930832 }, - { 900626821, 3200338209, 3575953945, 3543822330, 3465076989, 1676414035, 1580362201, 465993965 }, - { 4072412095, 97110064, 2717769689, 2025638617, 3126346730, 3148482070, 1218933594, 117458460 }, - { 659182451, 3731196777, 4202401307, 3138387738, 1503816190, 535111410, 1906677648, 1104704507 }, - { 404553275, 2991512828, 2954503888, 598815531, 2987115215, 1871790135, 1130073618, 1086845729 }, - { 1277102574, 1974025016, 1347490777, 1686309731, 2409850003, 4094538711, 1204627568, 815210005 }, - { 2337355303, 3991274562, 1645568638, 3082006855, 223677602, 1983872528, 1147270845, 1930503915 }, - { 1819105307, 3475620364, 3106975947, 2203649312, 804730297, 273993761, 697200002, 1439507462 }, - { 2041396564, 2122260108, 1577402730, 2844869204, 4172950789, 2442495956, 2157769500, 1711623138 }, - { 3135206713, 2692492085, 2589729017, 3453007250, 1337537660, 3806220679, 653405291, 1162249656 }, - { 3210087842, 1515705882, 1474733469, 1825247894, 3730304767, 3017140889, 2539544637, 1449253847 }, - { 2010093790, 1101759649, 1206426407, 2384267332, 856100632, 1694232135, 3889117576, 73635321 }, - { 3064866472, 3175205015, 2278552899, 310640213, 903513885, 2685999319, 2781999149, 493094093 }, - { 3258895217, 2226064979, 4043311058, 2289116357, 1366123863, 2548703581, 3439771945, 21400036 }, - { 520427106, 3457052911, 2422650456, 2064586832, 831276473, 3876761230, 2729310634, 1551691162 }, - { 4065514394, 3668695382, 921611947, 1199479909, 1738074637, 714389582, 415482966, 1145024203 }, - { 2882275492, 130417631, 246152776, 1749919725, 3798195774, 2218489227, 2265994100, 1684919587 }, - { 1804386784, 2711253855, 2798250736, 2157432381, 1580589463, 2422780570, 1307394003, 39589379 }, - { 3791873272, 3200786236, 2105930778, 1940874897, 1700759111, 1244778128, 4186760981, 1415479313 }, - { 616605156, 314053278, 176626840, 3479774459, 701354757, 1273235049, 712094712, 678164991 }, - { 707772781, 1895469792, 783216100, 2813270045, 1694865574, 3428766084, 398611011, 121008526 }, - { 2226850900, 2916138248, 1818241145, 1803120860, 1706583887, 2411268065, 3423514205, 1905053806 }, - { 1899052035, 3902637075, 1983026562, 2691521186, 3477865964, 1683965215, 1171151901, 1540465735 }, - { 1220092661, 724993075, 3320053615, 2939627802, 606044758, 308883326, 3146137073, 322166579 }, - { 3613363599, 3816022355, 3606450117, 3722583389, 1865338254, 3442356258, 255147427, 1410898523 }, - { 3238645747, 673883927, 3043051530, 240124367, 1158104968, 2511773070, 3984165217, 1578177518 }, - { 2221484863, 4175331686, 3642386104, 3741091172, 3662460768, 2422330144, 2702732636, 660028919 }, - { 1213148910, 1321886159, 2524403488, 1740548942, 1764653515, 2440002743, 3976098942, 1398707813 }, - { 641470395, 2638637644, 3018053696, 4414181, 2104628172, 2724668972, 3973051209, 485478822 }, - { 4135501486, 1703233428, 1978216138, 1749152727, 3052717291, 717963996, 597352958, 775493798 }, - { 95044143, 505758316, 3092060964, 4240393049, 83875168, 3142471987, 182474871, 1793159494 }, - { 2351991687, 2705668014, 2568280047, 1869207689, 215980416, 1679241506, 1402393431, 1681852608 }, - { 1691080297, 1814938808, 2588859430, 818018691, 3530266161, 1052252291, 3305622919, 1110576344 }, - { 595258066, 3786253682, 2698512578, 2776064296, 545487197, 1094803122, 3655008034, 1131712870 }, - { 3351195980, 837908732, 984975828, 3593950282, 2905762722, 1146100664, 2133374398, 564365667 }, - { 2099279470, 2386971721, 4225835629, 2993902852, 1632111459, 191259238, 3742107246, 163324241 }, - { 2925985781, 4105723700, 550276286, 251664946, 712378252, 888918494, 698786649, 1334330152 }, - { 3641796883, 3151847119, 1079730350, 3652768752, 3414176548, 359047330, 2427148148, 357911434 }, - { 3146659229, 206619044, 2759526501, 2875038778, 613935786, 1836379034, 288454942, 1273201834 }, - { 3295933400, 451176497, 3175559236, 3772839435, 152274261, 3191943921, 1074069979, 1313790294 }, - { 1508656320, 1024574241, 642095408, 2120719814, 1201898503, 536932161, 3345693483, 1332914592 }, - { 3608804893, 2196949748, 825068440, 230486040, 2559780231, 3179025345, 2798190599, 1732643554 }, - { 895427224, 3409014082, 3317420063, 3232725696, 528702173, 4163197819, 3112527539, 831984934 }, - { 818279135, 1999578576, 3847172875, 118532177, 1695257930, 2178372680, 3191835917, 682653893 }, - { 2180589637, 3362570373, 4175940137, 2811950965, 851709622, 2478979998, 4034681551, 843361118 }, - { 861082571, 3601042269, 2327997264, 4106399701, 2698007850, 3272183799, 2563553031, 1622399096 }, - { 443201739, 1155826620, 2945645810, 135330825, 1195082697, 2101058619, 517796407, 1580743830 }, - { 2718616444, 2062926428, 2663644156, 2604883409, 3752908729, 2256977695, 2565276528, 646956489 }, - { 46903149, 1104206020, 965235062, 1303484010, 4132705050, 3346035239, 3505666469, 665090607 }, - { 2347198407, 846656139, 3083153045, 3324357555, 445364334, 927272745, 1124108148, 1156636978 }, - { 3551999843, 257544911, 4043532401, 246250306, 4133733213, 3864692703, 3972079428, 876522195 }, - { 2975619183, 714735743, 2540833387, 2356265823, 2951350470, 1252747126, 2223044197, 757559092 }, - { 3689455935, 2133300686, 872350392, 1911582393, 1400154244, 2506832808, 676892892, 1918463657 }, - { 317455908, 2143415808, 2446696143, 1305482801, 708391843, 1184401536, 1391692741, 1784733527 }, - { 3694535745, 2178401055, 3166826997, 3331018845, 4233000190, 2965003654, 2610869518, 1461737086 }, - { 2007220456, 3574151085, 1681121983, 2890504588, 274722671, 2170869388, 1693980833, 1525005551 }, - { 572617780, 70041471, 1347266085, 2035029329, 3653837028, 2445089308, 672187013, 1469136914 }, - { 295528247, 2064338613, 1078285, 3140364406, 2907080238, 2311083557, 1347946238, 136642145 }, - { 806952804, 3899023972, 918853362, 2561712047, 2298592111, 1233722621, 3553550440, 929603250 }, - { 1556896813, 922619579, 2214621471, 109844777, 2597368618, 3688596714, 478121916, 1154847538 }, - { 458007547, 787367505, 2016187047, 1617043470, 2547605544, 295171506, 623695521, 1010398301 }, - { 3945165212, 2756234297, 814654751, 3035038796, 2267569843, 2765280936, 2069392964, 536612738 }, - { 2917688319, 1139748424, 2056578004, 1509432555, 2356183838, 322286942, 2664348175, 737819391 }, - { 584912954, 3924153903, 1907461245, 1638552358, 479025516, 1660104603, 1683551070, 986850086 }, - { 1959449279, 3425950697, 983574422, 3332318595, 1767839164, 2739266494, 3461001049, 637658284 }, - { 185729824, 2331339656, 351838749, 3943393477, 3835678717, 2478175506, 1954520881, 984444986 }, - { 590237735, 3665847004, 973139226, 2784158462, 3638360454, 3248066917, 1527057112, 1641210354 }, - { 2469053175, 363692737, 3213514373, 1995614248, 575613886, 1216561589, 3390891189, 1859082854 }, - { 132060084, 735120524, 1172601163, 2601712793, 855577571, 2496523367, 2503586389, 1384982966 }, - { 3924331367, 1072029249, 3281893426, 2602890310, 3933671317, 3300278963, 1879292003, 1188350901 }, - { 1448555789, 1813410174, 69396746, 3189425272, 1435839458, 1037839942, 2528762149, 1681229404 }, - { 1822399921, 2373696630, 904052872, 3736818967, 2578198736, 2081473891, 3777047932, 1115559966 }, - { 3205168653, 2516313727, 2278081261, 1046559712, 199070449, 2316330025, 4027468396, 309873065 }, - { 343175302, 1015937276, 3886765243, 3460604530, 189191898, 2475550205, 1868779137, 741587361 }, - { 4164267148, 3636407589, 4121764772, 2562040328, 2277185369, 2036967757, 2920803554, 1447856781 }, - { 3620150589, 422327850, 1406551763, 1283226008, 1569143452, 1990757291, 2787079490, 296355912 }, - { 1391709112, 1080145303, 2323598007, 3275974714, 88278907, 3518379077, 1337559237, 1255445639 }, - { 4275339894, 3322615722, 999283110, 1989717727, 1477813347, 1179408600, 1466745409, 63958603 }, - { 1277725917, 2101040050, 680369244, 2535367010, 2974767919, 654895876, 469345148, 1500315112 }, - { 2528424683, 4167991709, 3634900079, 55704049, 2660431252, 2533333990, 1932222636, 314211625 }, - { 1783796209, 3609077861, 70799647, 3914820519, 2319212425, 2300800010, 2791687943, 1042957831 }, - { 3229303627, 910583782, 1699685518, 2988365064, 185678658, 3679714984, 407710973, 157892038 }, - { 1674563392, 1113938227, 1844274794, 610973744, 1907632275, 37519742, 1112685383, 317664339 }, - { 1901328849, 3600318894, 3176905104, 1653520306, 1818114488, 1255550361, 3319403406, 410956562 }, - { 2426360843, 3958563182, 1863692255, 3578570124, 3138604421, 3465890595, 444217223, 528115737 }, - { 3653004784, 587783495, 201775166, 2619132540, 571166040, 645569384, 3624910502, 1907606014 }, - { 3335214179, 2791837193, 898802077, 2210767583, 763854621, 3099361680, 2105977296, 502573995 }, - { 1204542705, 563169188, 2700126602, 990948180, 44769650, 796838214, 402014501, 862418036 }, - { 4113127602, 3741558586, 4186328399, 1880260080, 3679390061, 2747504178, 1855859080, 873006051 }, - { 738335101, 4220331321, 1805075826, 1065837971, 1583360563, 1464632119, 1968758785, 1886618515 }, - { 4115738822, 108027759, 2727023273, 1141807570, 843729891, 1866436380, 3856941416, 303047471 }, - { 2306264057, 2648212836, 3512013199, 1103152762, 3334950965, 2346418059, 2430049418, 30080596 }, - { 1078766527, 1798361910, 2626698784, 267714642, 984522271, 1022386452, 1674922673, 1910155330 }, - { 1616825592, 1945077100, 1150159901, 1497862606, 4042172965, 3231481282, 2036340514, 1317098071 }, - { 2156732362, 3379714616, 1728904211, 2339864593, 1802170126, 879913207, 1136039357, 1554914218 }, - { 2904810444, 3231433818, 3786299212, 3395663219, 3421054289, 406888281, 496261084, 1771882149 }, - { 3158203605, 2430818428, 690193887, 1345599056, 325655972, 2647423094, 766199000, 218982045 }, - { 1253573745, 826935657, 3389411821, 250054154, 3778910062, 2514957377, 277842428, 591931439 }, - { 2377680509, 200406991, 3759891274, 1363638715, 380459403, 828242027, 3092989623, 1043467571 }, - { 3449229138, 1683275024, 3348129495, 2677979436, 1598758371, 2574781389, 1903502888, 1923380978 }, - { 612328668, 233658390, 3298458635, 4135799756, 2247499649, 3230823710, 2594518304, 1078415221 }, - { 4160123091, 2747089867, 2077828114, 3415411483, 1826203596, 1871857149, 3423281998, 1792535122 }, - { 3797513554, 849835695, 695064438, 3616751, 2757593438, 2216096749, 958896798, 292287196 }, - { 3058446076, 312611589, 1816753274, 2282637676, 688912590, 1286715011, 1926522103, 1620175524 }, - { 894099059, 2107843670, 90473574, 3926214847, 4017500613, 4139625748, 2778386277, 372531327 }, - { 3846620731, 2763565824, 1030849161, 3722564613, 106204236, 2805800579, 3014963911, 853884 }, - { 868221812, 3028462589, 2517200059, 1075873131, 1615227464, 2664965296, 2247435687, 1906137263 }, - { 2654093673, 3630004545, 2692274895, 329814301, 777045888, 335182861, 880204165, 997587158 }, - { 1409898785, 454440005, 835803608, 2480543853, 2615513691, 1910727765, 1444293241, 1291515947 }, - { 2620404582, 2681104512, 577971677, 2965486069, 4142277540, 256720853, 2301809509, 101466900 }, - { 212544155, 2394283965, 2159102230, 2678426734, 1586397050, 419075079, 3549138113, 1626929079 }, - { 463368724, 4278800077, 121678579, 2475242346, 1075897497, 3448179485, 3389870091, 1674361358 }, - { 2820904246, 2653418934, 3156021479, 4166342315, 2226907614, 945883236, 3517889316, 60977301 }, - { 2436766805, 1527470861, 1810902218, 416693232, 1212243710, 1416544789, 2783104366, 19354758 }, - { 991989696, 412809894, 1982078502, 3747155739, 4020106180, 1837552348, 1447138523, 1715800927 }, - { 1075706868, 161768018, 2216419444, 426189788, 3357390596, 4217099003, 1143091946, 472182473 }, - { 3860851145, 2532419037, 3698472955, 2973528973, 4178960474, 1907810146, 1408428832, 503121091 }, - { 2727851231, 1367048062, 497509216, 4152209745, 995818348, 475140479, 731605077, 1579818914 }, - { 2179349385, 1117826292, 3610720939, 1691972160, 1356890112, 3391300549, 2085388023, 1372466110 }, - { 2756710446, 838203440, 723748394, 3072790575, 1911372460, 1761174169, 4273114822, 1242532062 }, - { 105315934, 3368428170, 4093227436, 2745723472, 3932937476, 3890246976, 2522133394, 73971670 }, - { 1740686611, 2321466238, 361569435, 2543179637, 587598216, 549084142, 1031482446, 774553065 }, - { 3597839683, 57524535, 2874482764, 3754865206, 2526324979, 3949589364, 1429624884, 1814988441 }, - { 2603622200, 2231461860, 1290377540, 466149376, 3609788353, 176455017, 2277484576, 1786778976 }, - { 1458938343, 2114729081, 1997838023, 3174455686, 2085831993, 3374355967, 3537949622, 992228618 }, - { 3801779046, 3454149421, 3303188603, 4014012970, 3354143289, 4217252326, 2969552754, 1483525923 }, - { 3774677938, 673773056, 3893908267, 560635561, 1973082266, 2589866112, 226449903, 294394931 }, - { 454183250, 622354922, 651231551, 1149744170, 1960948252, 3895479982, 2449209143, 77483583 }, - { 435983115, 2725880327, 4239281529, 717778529, 3567046934, 4113576062, 1152721395, 220366372 }, - { 1567730961, 3200793646, 3984661793, 2380777305, 241425703, 644542002, 517867517, 1120930189 }, - { 4091558388, 1504202833, 2939319260, 589777927, 3633462270, 3968642639, 689433942, 875828199 }, - { 1169240439, 4023749275, 505276587, 739412219, 3339493980, 3341973266, 2883802497, 655174094 }, - { 653130810, 3172296535, 1265004384, 1761056218, 1377804587, 2256121563, 3698659750, 1121919585 }, - { 2570353741, 858136811, 519813245, 2971965305, 4139218340, 1004901999, 703947824, 369752264 }, - { 3381271355, 2247712112, 3804029242, 782729804, 2369527314, 551659921, 1984380788, 1656806692 }, - { 2483781, 2949392667, 1189020459, 3250966616, 1609642161, 3238126398, 1343829017, 1734006467 }, - { 1679694226, 261045875, 3453919182, 2843519068, 2537910343, 3612747165, 1179484153, 1287910372 }, - { 3886108056, 175774613, 2779904680, 2520791721, 3633264823, 3088890516, 3171420597, 1708838777 }, - { 3386670873, 1643376616, 3638160836, 1032312649, 1924528658, 2431707134, 1887411524, 1176129208 }, - { 478740092, 2667125643, 955815359, 403657233, 3654480077, 1892273735, 3030473747, 1279153681 }, - { 622951477, 1836709941, 3471753927, 3071411759, 4188645204, 1304782838, 3750264876, 1758729028 }, - { 4212312802, 628660758, 2220396913, 1560335019, 2896351016, 1319825091, 729312637, 953649256 }, - { 1364715321, 2936585404, 234408968, 127446159, 3397653597, 2651255026, 1375085118, 477471465 }, - { 2710853830, 4127478579, 548357138, 1735304330, 940446512, 524478964, 1336122623, 1066821318 }, - { 3766588288, 3896370209, 4259952803, 1806904855, 1150798304, 839549686, 2248481031, 744112689 }, - { 3535284327, 2858794953, 4005765276, 4006887989, 4268762433, 865196190, 1300862889, 1438797811 }, - { 3708161311, 3748350761, 4293107851, 698313269, 3580412612, 3841566940, 1969404956, 87829299 }, - { 1114079039, 2705437913, 2247757466, 1236417109, 666902814, 2764318532, 1575386375, 826633222 }, - { 1531503202, 2409957678, 3480592789, 3467513812, 2289114260, 861670570, 511341934, 1201345311 }, - { 1425706430, 384883443, 2290846815, 3750349539, 1923434778, 4100874906, 3392509321, 651517790 }, - { 3245117770, 2027239361, 3516685052, 44771713, 952538903, 707901494, 3459655826, 1358880906 }, - { 3014646133, 1382455837, 301906613, 2861083361, 3798150560, 1525636082, 3355352515, 1380869124 }, - { 2204471000, 2799721575, 3323912709, 2939200089, 2253676579, 356366083, 4081702668, 585547243 }, - { 1316673410, 3380281859, 3230332878, 4194572788, 2206662744, 1322453485, 1307687604, 1150806082 }, - { 3955184554, 645093054, 831272469, 23113738, 3907323230, 2872544861, 2903951922, 1893786979 }, - { 529324033, 1253431892, 3657061952, 3430133189, 3671708123, 830427670, 1473910747, 944197919 }, - { 1455215999, 4249915366, 4018045192, 3421291903, 3662922044, 706558904, 2004583833, 1547170663 }, - { 4198919386, 1532592548, 2092400188, 1771011495, 3557514147, 830582067, 461093970, 1094845418 }, - { 3965857203, 1420349242, 2987400806, 2945269948, 671844914, 3279978780, 1590577495, 639959158 }, - { 2631953136, 966542016, 3262035856, 1188067231, 3010568258, 1383826099, 1647451951, 1639080332 }, - { 3299877462, 1758037487, 2469543141, 3382570198, 994409143, 4140306916, 2582473918, 1941425240 }, - { 506847456, 3774871840, 3765619629, 2737265395, 316216967, 1190876074, 815012758, 1775191240 }, - { 4095284326, 2761904818, 1041189772, 1912084700, 2188976054, 1676045795, 1037577760, 1174766087 }, - { 2571802401, 2064159379, 316472485, 503083643, 3742128083, 2292502277, 2433289289, 1470620533 }, - { 4181236707, 509323179, 2721130214, 566343647, 4104777532, 706723607, 2480670733, 1828144610 }, - { 1640870646, 2376869775, 980887916, 31304715, 3545694899, 200038752, 1267622125, 276262512 }, - { 4067333496, 1584572330, 3120245423, 2623765026, 3701101375, 1890454410, 280796595, 1024452380 }, - { 3958353326, 959843138, 15603207, 1087037058, 3994847078, 2894723453, 1362201293, 1295117 }, - { 2118278824, 3346376444, 980226751, 1938993189, 1602753043, 3986146446, 278357737, 942012195 }, - { 2360445498, 2597333442, 3755528813, 4051076016, 486209576, 4047827810, 3870271271, 698260411 }, - { 916641695, 112871463, 1375728632, 2831375159, 2719057054, 4283639709, 1774419313, 1677517378 }, - { 3664708795, 628966728, 874461269, 700513291, 3863195757, 2868687306, 643241788, 564680329 }, - { 4291584944, 2064143542, 3566192754, 3631582215, 570188429, 4209781945, 443734049, 614091722 }, - { 3069069469, 4088751549, 2560655243, 1102920214, 1339056880, 392177957, 3775403563, 103351416 }, - { 1978670480, 559380286, 2129781335, 2279781585, 4003913740, 876155266, 2017319059, 1022114268 }, - { 3399580107, 347995548, 2135010153, 3534108079, 787528257, 1650095916, 3554222643, 1324395676 }, - { 1390715225, 2542846513, 1920125832, 2773259984, 2392093563, 1474125935, 4111746319, 1575570254 }, - { 1414379708, 2194547540, 2136366108, 565823792, 1182541891, 1437696296, 257811543, 1693556452 }, - { 1769627574, 441318884, 4275471352, 1225305659, 1963440374, 274686265, 1327693569, 1307282634 }, - { 3962887763, 1274112501, 953701428, 2657890, 3640225032, 3337301175, 774716314, 517547689 }, - { 3510127426, 1825054124, 2742951927, 4088849944, 1296092018, 3517145103, 3716014278, 1523220247 }, - { 3437557293, 1335307854, 676263679, 695629073, 2517666650, 3149455292, 754188451, 1109133164 }, - { 317104587, 186367548, 3618930041, 2323515208, 1126571958, 2173439049, 1794524348, 821270044 }, - { 533940706, 3306560820, 485111606, 1110490136, 1691045017, 3916338163, 3834353242, 1723009909 }, - { 1522776964, 3152860531, 3864900579, 2708980912, 2825208934, 1853581305, 1871784249, 469623239 }, - { 629470938, 1180959567, 1143967216, 1676663938, 2033440702, 3103439248, 2848818350, 496529218 }, - { 1668440079, 4106247086, 2846673337, 3427488558, 1573684099, 4244651853, 1787924212, 817752849 }, - { 959928167, 928638112, 1947092966, 2492403678, 2077619418, 3613569215, 340218837, 56292221 }, - { 2244563087, 330850889, 2446107519, 3032863607, 2246847974, 2330504123, 313250997, 530346501 }, - { 439888186, 742276209, 1518997317, 3329443255, 1360660101, 2763295008, 3055099045, 796611931 }, - { 4078233972, 1775514946, 3012527500, 1624374123, 1763430831, 3187441037, 2656504011, 1143866783 }, - { 4170586740, 2928594946, 807370988, 3196828704, 3715200989, 1785545342, 3815991981, 658702201 }, - { 1271692642, 2524794605, 3689714695, 4151774701, 1782222951, 1122104646, 2941535594, 363885131 }, - { 2568395099, 4253432442, 2472440390, 1010827, 893028692, 3450729936, 1433786871, 1420562842 }, - { 630239660, 96497969, 1490196774, 309046841, 500989448, 3404356406, 2504164279, 1047360987 }, - { 3371938549, 1995338116, 3896838008, 3249643108, 2016034697, 2491786944, 3453332073, 1648368279 }, - { 2098156814, 504493683, 931717539, 1540724668, 2432965706, 2117704370, 3103558563, 779673588 }, - { 3868282192, 3896728543, 1641758980, 792476101, 525433967, 3110670462, 1421269288, 220176096 }, - { 2620564797, 2625122866, 2915425220, 449957382, 590824145, 1679968989, 1189560671, 475681185 }, - { 1145173448, 1709038200, 2861938934, 136339323, 2826961300, 2388635777, 3420608538, 1906665320 }, - { 2226474591, 1560261858, 1348225088, 2080577216, 2560699060, 3334381882, 1677043917, 1446031159 }, - { 680198261, 97982608, 4128915912, 1447797031, 771294684, 2205531897, 3837933208, 1140608019 }, - { 4019845348, 2780954667, 3666790153, 3049812530, 3794754023, 4139691515, 3642937410, 528170768 }, - { 2343737800, 299425856, 57372951, 3568588149, 138336219, 3929318227, 355883645, 1448303394 }, - { 1470819193, 1057233400, 3059279523, 1435491520, 1728705269, 1738009488, 1813922736, 1131035466 }, - { 3714998176, 946792583, 4091301620, 3103561972, 4212945922, 1306901742, 1677747550, 367756959 }, - { 4290802170, 1442844728, 3568664803, 3109703799, 3712289323, 1103961612, 3884581427, 133043288 }, - { 4224797577, 4017336829, 1982824538, 2932060029, 1275876134, 1916379898, 954817337, 217724987 }, - { 1350006586, 3593424936, 3946802048, 2123450605, 3937687709, 263753548, 3659737972, 1248416168 }, - { 2855243089, 1749694247, 1893516017, 3063597958, 3761834467, 3107333500, 2567222286, 64174050 }, - { 3827701681, 597847911, 2402298108, 990634306, 1910494682, 109389870, 792962182, 1860229547 }, - { 2351596159, 3821622679, 1524787952, 337588373, 3176196813, 2745214911, 3056565596, 749848187 }, - { 3441934269, 4009580521, 149973158, 2525521624, 2590519299, 243406408, 779815363, 1035336820 }, - { 3764884153, 3423196148, 3177819966, 271477310, 2889561349, 1456167120, 3528525874, 1934020755 }, - { 235163986, 1049028213, 3108747509, 1292619731, 2559491669, 108486495, 3749672101, 453280944 }, - { 2556948087, 3100298378, 310322620, 380246317, 2957239317, 4222409270, 3409034915, 48863427 }, - { 1308029599, 3679151940, 2272575199, 3613989467, 4082056, 4148009605, 2464036802, 1479759781 }, - { 1251181642, 2621737112, 2750492153, 54284847, 4204112325, 3130067309, 94545115, 13374201 }, - { 4025181974, 211296560, 792666534, 710536069, 3920141993, 1567548062, 1375284379, 557289795 }, - { 2546287581, 1957917631, 1467535727, 3441969759, 1000142232, 2773766896, 2421953538, 716288211 }, - { 1930992706, 2960485970, 1418111476, 1220565458, 2414507866, 1025251115, 3753551968, 19632370 }, - { 963902123, 3681818036, 2924382299, 2887776846, 2144883791, 3946320878, 480635001, 1912874928 }, - { 2468766879, 778346573, 1474514048, 4121315751, 1512180969, 904418434, 1136251375, 1319914909 }, - { 2501603373, 3538565524, 284824834, 1451336583, 1293267847, 3170116086, 3254403159, 719213547 }, - { 2474812956, 77386015, 1931765089, 3098132001, 420441098, 2456483837, 1422426453, 641318198 }, - { 3644137427, 4287985815, 394664607, 1233537396, 421825453, 651742535, 387125474, 662823303 }, - { 4212030094, 1122465335, 1624022888, 3610548406, 353634777, 2552519412, 3801211635, 307132084 }, - { 1812732959, 3053502143, 2631811210, 2586361940, 1962179385, 3483070162, 4155788085, 1550838787 }, - { 1003031331, 1302317500, 2617903797, 2734240305, 989510592, 4089046563, 2821236351, 414611967 }, - { 1484639241, 726371698, 2901761099, 1076175113, 1726435871, 1077578729, 1890799589, 1909509214 }, - { 3700769167, 1752821084, 513320038, 1307836100, 578628329, 2406730051, 2995527212, 837313727 }, - { 122300200, 2966018197, 2685843456, 753118815, 1457197440, 957992679, 1985405656, 883670266 }, - { 1406210640, 2351047507, 3269280518, 3490188984, 4142280886, 3025376962, 3963346097, 994860097 }, - { 2508852230, 2631286947, 258546584, 3864880274, 1835714337, 2164344383, 266610560, 1805588083 }, - { 1399945673, 4184106804, 789724757, 1079151694, 2482798800, 3333268030, 1316021989, 1255596472 }, - { 803951911, 2989032923, 3770186442, 1016864736, 2468907700, 2913064459, 1185103480, 636741796 }, - { 1231369251, 4135232566, 2733627621, 833380325, 29278262, 1838736816, 282517621, 838375152 }, - { 1317232431, 1026204235, 1068913493, 407775287, 3334561628, 795893931, 4235491726, 1615001328 }, - { 553856711, 971855917, 3933094274, 2073072684, 3392281711, 2796369744, 2729547217, 1071905806 }, - { 1887240778, 16049011, 1301729181, 3042530676, 936796797, 1994942578, 2223529819, 647936271 }, - { 2704422729, 1675170249, 3552773842, 3396498429, 3400652126, 3505392417, 761033286, 124643040 }, - { 1889942262, 3227942591, 2292339076, 3457625997, 2126114223, 2180302021, 284476605, 44924534 }, - { 141984372, 2951276745, 35118693, 593555826, 3272461528, 3950614747, 3504508970, 885326384 }, - { 2305593269, 453447852, 4198398217, 3289740015, 3148298721, 2531766886, 1665567516, 31461126 }, - { 2961594960, 2531642714, 1639520373, 2621506607, 2179476118, 2885320184, 1723902844, 1018079279 }, - { 2946288140, 3272340504, 3540734279, 4197505952, 3276858996, 1346238140, 4252445552, 353887417 }, - { 1372501495, 824753971, 860420574, 2514019588, 3560899823, 4247421862, 4088400720, 1657596004 }, - { 3547216933, 213080010, 1327670122, 612432652, 1467988350, 1684096876, 1071303132, 628211428 }, - { 3090209150, 1759114382, 3187913922, 3152697956, 1184367906, 1160970938, 2392528111, 800739539 }, - { 621315835, 1089798189, 674639458, 3890294633, 2648105579, 3553900581, 4112938456, 1490904470 }, - { 3765350890, 759301313, 1861950123, 4059907539, 1733775257, 2250513344, 1658744551, 1153214746 }, - { 1170138394, 1137625749, 2897796390, 3416594251, 391570540, 4019828978, 3251064953, 816833270 }, - { 1231309804, 3780640118, 2711898201, 3491043249, 3439535076, 4207721813, 2305741506, 1028659493 }, - { 1253871575, 2948351374, 1135039949, 1734394040, 142360803, 3446688949, 4049427930, 944770588 }, - { 1941541664, 410182229, 946427815, 1738300148, 1710743312, 726482062, 635454546, 357241893 }, - { 1020511136, 2100021722, 3298155473, 2108863026, 3280566308, 1760065744, 3252469090, 1429387071 }, - { 1217925349, 3637413438, 1551351736, 423738310, 2990537205, 3220442810, 3931295343, 906723644 }, - { 972280401, 2780016393, 3173872770, 1356012643, 2461239415, 4162849661, 3861310034, 1831469808 }, - { 1389822966, 2952619570, 4129543154, 1090053600, 2373269118, 1012273040, 3572998746, 735743939 }, - { 1860915644, 4058588150, 3985807003, 3283071968, 1648222944, 3385052127, 3497619137, 385683862 }, - { 884383025, 3552407191, 3469324339, 3465009688, 3813476498, 3729803703, 3537345067, 234943732 }, - { 555727800, 626558964, 1415912308, 2973550418, 2237386952, 1244544807, 4213281194, 809110235 }, - { 2588631464, 469863063, 3737851331, 837541418, 1967059868, 2427883562, 3072041960, 960796293 }, - { 1207065556, 1770203065, 3879628650, 973162225, 2309503005, 2047327014, 3465067208, 336588005 }, - { 2785167982, 2995223308, 72923062, 974823923, 1628617410, 4097389313, 542947051, 539026017 }, - { 2236323182, 3282563504, 1224066908, 3047814769, 1295019432, 438565816, 619226031, 223436864 }, - { 786918017, 2048377421, 589200564, 4079431549, 590547127, 1581163706, 2544682669, 52267199 }, - { 2655976805, 2376527940, 3402099846, 3970317208, 3576646612, 1791464619, 1974470062, 1726193434 }, - { 7025984, 1951598457, 3431147596, 3998422323, 2645714763, 1438112310, 3971388058, 1607757765 }, - { 518311553, 3785088372, 1131104604, 1849385860, 1783473879, 2100330799, 2095617988, 1865596046 }, - { 1681239869, 1999613256, 1685314892, 3568687870, 2223144938, 1715202611, 2718808748, 1010745768 }, - { 3996328427, 801631366, 806151229, 1284360371, 3127991234, 4258117530, 2210082045, 1193672326 }, - { 3906397586, 3290474371, 1675512984, 4178526889, 2952985253, 3592646253, 1572272369, 508740262 }, - { 4126315652, 3786312147, 3699923125, 3674356834, 1459586774, 373249965, 2436297855, 1091365949 } - }; + {2583881727, 773864502, 2634393245, 2801510707, 49275233, 1939738585, 1584833899, 962922711}, + {1482052501, 2945755510, 2790332687, 3994795689, 2690398473, 2055226187, 3927265331, 526041267}, + {908959580, 3968357170, 168369822, 4279251122, 172491869, 1810633943, 1108167336, 461319268}, + {4027140347, 2893980563, 921480450, 501609030, 2327498415, 3169336813, 3929258806, 737280672}, + {4055714606, 2743326044, 2857702856, 1584420791, 1660813445, 3348655617, 3787458226, 3699425}, + {1985741293, 4089215036, 1210827339, 2345137603, 1161636418, 1599639659, 321012535, 194290036}, + {1750888684, 3456174369, 3318295268, 1497259571, 2073515266, 4072260308, 3437570998, 1635895511}, + {4034710333, 2610124732, 1290861184, 4036862757, 883362062, 567869034, 2024849712, 1701263846}, + {2625474608, 2754606612, 361203290, 1487232625, 2688318352, 2549310207, 2466099371, 1733038062}, + {3345001546, 3042331439, 4011626368, 3133515243, 2486233703, 1331042170, 1361957740, 650666142}, + {1584567590, 1084515947, 4098195566, 3866758584, 3356823276, 1832067525, 1818740948, 741849726}, + {3286393376, 4136788043, 10996123, 492094606, 528500176, 2438101940, 2875284654, 1786544386}, + {1969597223, 790536143, 2237882132, 3796626452, 2790109442, 1011819674, 3528538383, 589770849}, + {407685073, 1453168838, 2179621584, 788291901, 1106952489, 1446367022, 4069426728, 1396878930}, + {3290109019, 4015017806, 3934117633, 4158617411, 2939969774, 106961513, 14918808, 1001708086}, + {996002275, 1928470656, 2623701620, 2551598991, 3751170806, 508902944, 369242849, 1498870796}, + {565255546, 3022177816, 293742057, 2157713418, 1983002409, 1107184702, 1767026869, 1183824511}, + {2311948870, 2800572440, 3145540846, 3682970284, 1080117063, 2915402481, 3269455294, 716122601}, + {2295776029, 501186048, 942983026, 4051534110, 2477546403, 2935458647, 254557289, 178729694}, + {3337435330, 4030596207, 3117011884, 2422164923, 2397253028, 875773417, 3477084352, 1126142070}, + {3431800845, 4060912624, 2245793080, 2499622891, 91998757, 2164075869, 3803348693, 166480081}, + {966663497, 630611456, 167291166, 773313755, 1503785959, 1202596199, 3191514300, 1306382185}, + {3933637844, 1226332868, 3032390356, 1110249575, 3533687435, 1934216432, 1494095598, 1682810774}, + {663270725, 384860935, 2827178047, 827465888, 3087237951, 3255426106, 1373579066, 499572712}, + {2577656678, 3066691302, 1684488911, 1957939881, 4019083797, 1755409167, 1832816180, 1223903171}, + {1063044264, 1259737746, 3048015260, 1826994984, 3349938836, 637174051, 3186708364, 1072388481}, + {424144692, 2929334085, 3898061065, 1345722322, 2247127222, 2049099905, 2811348666, 1160935385}, + {1742356760, 455132233, 567937646, 1446680057, 606998240, 4160248945, 3056763692, 304816744}, + {3902143865, 2475092117, 3760400589, 355228026, 1716941022, 3657064101, 3335169844, 311397023}, + {3136484494, 2477484115, 3189327926, 3887284100, 1520306748, 1408584587, 360476494, 468824213}, + {2650171511, 3917673809, 3045237931, 4207688203, 429415446, 1750523088, 1223306704, 1525104464}, + {3339231665, 2528413500, 2046295048, 418068806, 685542366, 1682284588, 1485485833, 1473238879}, + {711161825, 3514077185, 3534145946, 1223731975, 2083004206, 1591181325, 146921769, 1335013702}, + {3360230958, 1823167614, 1476318054, 3466563514, 2415011524, 1769592146, 1575481551, 948928279}, + {2203262174, 1048259904, 2990768499, 1722929916, 163385007, 3862551299, 3245410259, 660227543}, + {2420337797, 388803468, 2995221236, 178657789, 724044101, 1928913452, 391326078, 738986320}, + {376206369, 1284511059, 2214401189, 891395247, 1960216581, 3830403005, 3904641289, 286711373}, + {599464569, 2411718164, 3735534528, 1577933164, 1934209663, 208697469, 4240204984, 1878780213}, + {2248371995, 1913736731, 845860752, 2437601421, 2181099977, 3047079036, 2994731640, 1056395413}, + {1616682327, 1644006237, 4168209898, 668467850, 2455928538, 1293832315, 1951304978, 733478871}, + {2918737298, 3521094856, 1829452807, 2725951918, 200736933, 3770832430, 302979408, 1669366138}, + {387191313, 3173401215, 4094986219, 4046955536, 2468524524, 1397566203, 1547260481, 1630494205}, + {1611875529, 3743344191, 2871657641, 2077834981, 2265555313, 2220128636, 3401817316, 730340725}, + {2970289894, 2504545394, 2645966447, 1893372766, 211607532, 48403161, 2511733484, 1777123856}, + {4026002355, 2848115047, 2779427621, 1719017788, 1519304609, 3000001502, 1762163589, 1651472793}, + {2675453183, 2789246503, 4130550033, 1391534849, 892965520, 840706700, 694359255, 1471724826}, + {820595074, 3339511113, 1226826204, 4002836485, 3062031653, 3909036982, 3234099926, 478805481}, + {2754248472, 2077338143, 1320736316, 1958645234, 3844752893, 3889630124, 2015730162, 1490420502}, + {460441047, 350047886, 2731923076, 3535777260, 1340261262, 1608902027, 4234035213, 1536752667}, + {114082443, 3561864573, 3250444094, 2685014404, 665145438, 2794487913, 2897233421, 1911369787}, + {3964405473, 1106848460, 2730715961, 2096494338, 432077991, 1817935912, 2825329005, 364568296}, + {1541495233, 533720033, 1539839704, 963087454, 3318790731, 3533292343, 3370280345, 1088979921}, + {31440674, 1086708697, 3205357768, 1917821690, 4056968740, 2683764451, 1041894546, 548238649}, + {1917051981, 2014974056, 4094529913, 154561501, 2688770477, 2718119219, 2705815412, 1716758521}, + {4067501667, 2229507042, 1856704407, 3392292278, 517345750, 3716036323, 3218796244, 1233797639}, + {493354704, 810143557, 149270290, 3129000957, 1614740539, 852245369, 1103758623, 1444391322}, + {1605729361, 2765340595, 2072059042, 272378393, 200608211, 1405978231, 2442707275, 1356618195}, + {614194557, 2969487285, 3926681252, 3394676563, 2726949908, 16435247, 2403689085, 1204665742}, + {2460966997, 186611346, 3986216756, 4264387316, 2217732635, 1106203394, 615954162, 1452862218}, + {1974864998, 3557372049, 2306291317, 1337077016, 3157009519, 3694567151, 2200295624, 951056188}, + {1787294003, 4192197592, 3312641269, 2356072500, 3461522896, 108687088, 4157440844, 526413998}, + {2399361279, 1706831513, 3887495132, 2793491621, 1958115904, 3177075308, 2155894953, 145589220}, + {2352454770, 864469346, 2670274751, 1614948498, 3267466158, 3191597377, 1776987447, 1357175017}, + {2740743875, 3345691126, 2816549323, 3348140332, 1516932249, 897622960, 2037058063, 995705082}, + {880606236, 1189688463, 4234153518, 2339439358, 2923718870, 1042013320, 1678648541, 1104462183}, + {1073654866, 3413686839, 685570659, 3037652080, 947636738, 3700390221, 3693398039, 415494178}, + {2419572877, 1150916625, 2249277119, 683261527, 1864331069, 1244761785, 552125966, 1347677685}, + {3396762050, 2693884475, 424685848, 1664147381, 1834283263, 2542432283, 3974116944, 68536520}, + {3063924165, 1932015124, 2217710816, 3830128168, 3370081034, 574155316, 3313875014, 1855459315}, + {3386803395, 2820493340, 3308680514, 1427392357, 1583014142, 1749204707, 221657680, 547450834}, + {1041777630, 161530099, 1155566993, 1892707944, 3757054220, 2087391796, 3585530204, 977318577}, + {2665571342, 2429563664, 3195162290, 2644863207, 2114978363, 3231080092, 3457160023, 725625708}, + {1287942936, 2906541389, 3888844666, 3045944547, 1704436269, 935499132, 2453611416, 1213734667}, + {1117593248, 2743290884, 2066542181, 3835707713, 1920393447, 1618056951, 1297468894, 900716017}, + {2453584163, 3404571319, 2858950303, 115950125, 4024397824, 646888038, 2302216357, 2756808}, + {2613043977, 3417804754, 1884878530, 3335038875, 6972604, 711348538, 2748028015, 826527564}, + {2713903867, 3794506523, 790592691, 1992735309, 2847369131, 4204363625, 1087865122, 1443814505}, + {1146497564, 848229830, 1946260269, 3010322816, 2207800574, 2200410833, 2844194823, 342476999}, + {536000215, 56179675, 101847642, 3011739994, 2872487441, 89501866, 898367473, 331781205}, + {792457657, 1377513795, 2577314200, 3373384733, 4274706950, 2925205477, 890772987, 1095800397}, + {182796072, 1578145882, 2336921029, 3162145845, 4062838559, 3023577617, 2330808132, 1428434925}, + {2403626545, 3974944436, 3485684469, 553830322, 38386987, 4043096538, 2935160779, 1605533456}, + {3592979798, 3846514876, 4128835545, 3365534930, 3661819211, 206722386, 3701547698, 1155118261}, + {3518352518, 552097980, 1106877825, 3098440123, 1904097843, 798323810, 2937297984, 306844313}, + {846683726, 1141034129, 2737947207, 3948706817, 3691508076, 1515816987, 3737359958, 479108481}, + {1925088217, 3196619024, 3151602276, 1132584884, 398312424, 3664593321, 1435127993, 640739107}, + {4007582001, 4056833411, 1681991589, 3159809312, 3733176952, 2658324364, 4156115728, 793757139}, + {2186520143, 188914433, 3154274450, 702884605, 687995516, 3197971561, 1743850711, 439513656}, + {3681243065, 4194035329, 3413995370, 207340710, 2792859700, 3621365942, 690238239, 650694641}, + {4194002326, 2754965636, 2026612339, 3417461073, 3389514679, 289083315, 945831954, 1646504390}, + {3728664917, 874441051, 4237550353, 1267640098, 1493897726, 235351278, 1343778823, 512604703}, + {1832471478, 3107338776, 1857313534, 3280811411, 3036888090, 3889765552, 1968816396, 1225855424}, + {744301333, 3406502346, 783212095, 2374949182, 781907448, 2557584046, 3381526102, 1029233876}, + {344800482, 222185159, 2883488241, 779251249, 2822944331, 3330005398, 3591215672, 302028091}, + {1210514521, 1750377041, 2565419, 2503857968, 1425360604, 2528973098, 857792357, 1195257810}, + {2196986518, 237838621, 1892525295, 286690471, 1622780101, 2639346316, 4286156169, 1597775594}, + {2338818263, 2938274921, 1230254141, 727173531, 3273895384, 2463754633, 41765405, 490358949}, + {3971405844, 2427101257, 4260135480, 3905725796, 2272941250, 1815202830, 2674840136, 1151632468}, + {772068597, 2077570282, 3573641073, 3594585180, 1796738974, 69390997, 2819669018, 109156866}, + {3407797779, 4273031067, 2447795211, 2617274976, 3350369456, 1810165409, 495004487, 280805960}, + {1854400152, 1015997936, 4178837499, 2969860395, 3276208401, 2266705868, 3474085081, 381373149}, + {4273910617, 3432009007, 1963113415, 3478788384, 4263358486, 1474675855, 1363869172, 1404241549}, + {3347173429, 3488817444, 3586742747, 1881341598, 2866825457, 4123090347, 1133449072, 1012876069}, + {3766326425, 2549726737, 2395067040, 94384143, 2981277617, 3903715059, 1418402831, 1086843578}, + {1066353224, 947945827, 641160302, 3710315689, 2100152022, 362375464, 3382102350, 696249971}, + {3715078923, 4177862627, 3773159689, 752863577, 1567881938, 2890233387, 2275434392, 761611465}, + {1136563047, 293855491, 907210887, 3459013925, 2467328309, 2508366795, 1653911948, 171845987}, + {612379611, 1887075760, 487087448, 225291858, 132676616, 2064671605, 2406766416, 1233233811}, + {2092184335, 1015806827, 1146757670, 1090496205, 1043022102, 3737237655, 3806015317, 14600533}, + {499304627, 4098834222, 3759308706, 1388356421, 210173650, 1741203929, 1772159179, 495805071}, + {2229669327, 1545664598, 349055216, 3833190775, 358708937, 2983722085, 3017903221, 1531390637}, + {4072290516, 1556732269, 4022277258, 1306533569, 2391722068, 3016774265, 1908302439, 494704407}, + {1167973235, 1627746966, 219299288, 110675411, 4208405345, 3855064237, 4061394129, 1651264307}, + {807895823, 1850319638, 3286622806, 1614836268, 2867522342, 411515703, 1793528862, 552472260}, + {2900983917, 3294231504, 2202011636, 3574159155, 1974489724, 2886293794, 3281774714, 484959753}, + {2742711752, 1287345215, 3181531962, 2021440514, 3439017902, 715452484, 4180842775, 134122585}, + {1531199361, 2983901779, 3903415668, 3964463567, 2644568942, 2487255696, 2599734899, 1249314973}, + {1518027012, 198792757, 3469220298, 2822826170, 3866069214, 2099371040, 1756790447, 285411729}, + {3165530355, 895959300, 809561874, 2072573055, 3986839699, 793131249, 2061077774, 1133461696}, + {2582197220, 213769082, 274179281, 3142523875, 3736763344, 1583183690, 4062325045, 1061009665}, + {644857811, 886625807, 1464693834, 3050181877, 3725483719, 1505440349, 4086205221, 991794257}, + {3162388994, 1162627825, 3204861587, 811326633, 1365038410, 3031769664, 1687403961, 915654805}, + {1995779911, 3004580585, 1515285492, 522932916, 1212660322, 2864409226, 3097856431, 693847144}, + {2053050441, 1115202172, 1549567112, 655697921, 3671500054, 3835118574, 3214011205, 1821384668}, + {1872231643, 872021024, 1336655960, 211273340, 3354505888, 1417807145, 456513608, 963893896}, + {452599830, 776408152, 1550676549, 3703127187, 3209628512, 1940886032, 1738721553, 495522259}, + {2691751653, 1779937431, 1288368656, 3208747915, 2780559745, 2526828312, 1763994228, 333231547}, + {4275513205, 440735411, 1258948293, 2390465823, 4235700884, 3091458168, 1642110956, 270470060}, + {73709337, 934739763, 3725340396, 2974472721, 654855744, 31917987, 2323016052, 1857308314}, + {1075049988, 1079953406, 1400698963, 3042997804, 561842384, 2210762367, 855910595, 481838082}, + {3509794358, 3953903735, 1903811147, 1779485279, 2029632368, 2456759721, 1704304047, 877779598}, + {2738753066, 2806260921, 1791674756, 1760096472, 56716860, 2060443887, 1270948691, 1225038684}, + {937515698, 26813463, 1445864152, 1294151654, 654837221, 2383845053, 196479405, 58956140}, + {1871576453, 1698949245, 60390505, 564468800, 453271267, 631487095, 3269198514, 542634707}, + {2291302129, 265277242, 2254979206, 254426696, 2728354797, 3558541347, 2740502735, 1448518356}, + {564456082, 1249012296, 2639616381, 3434809938, 2677856100, 2718115901, 587788226, 1356563198}, + {3402304817, 4194246240, 2968342419, 705018855, 2974056477, 4111402898, 3057995427, 1166666131}, + {2056307580, 543524209, 2301580143, 4185614334, 559030639, 3128036650, 4111599671, 1284904614}, + {359831047, 799580308, 3060864000, 2258889659, 394243714, 2348819117, 55818159, 68526609}, + {2737339548, 4287675470, 1542231980, 933340600, 3207838359, 567359477, 2710989220, 492016188}, + {1813175421, 3478591534, 2351824610, 2397870923, 2578469006, 746676008, 1499857351, 1153852272}, + {1156137895, 2952177058, 2242206449, 2432815871, 806441386, 1218734739, 1326208773, 1354398562}, + {381364386, 1263934940, 2102136766, 3983497213, 3529312069, 1576491044, 2439933774, 1719806867}, + {3080823690, 4163355065, 3530321023, 518995624, 3597768387, 1951975478, 3342258628, 1893032288}, + {2668980496, 1399144065, 3171564560, 2879158337, 2049822937, 1283854944, 3719298147, 1415657877}, + {314419813, 138438272, 2740872598, 1446144675, 270275230, 392044674, 3657556548, 1178795820}, + {3099056818, 4210653656, 2863127405, 4014782863, 1880375366, 2575900391, 3450884471, 81766256}, + {2403440534, 3903938443, 2341281741, 1042650223, 3078916646, 1456864996, 788189722, 472670325}, + {1738163024, 1473909145, 2674866561, 4011133817, 2015896597, 856062266, 2711118437, 1049952681}, + {2156132303, 1217145778, 1978361217, 2812284834, 2765205016, 1617644935, 3185836803, 1275814667}, + {2139444894, 1728125596, 550329386, 2106026961, 3190911779, 2805748561, 367259216, 344120108}, + {1604819906, 1547353738, 2286973177, 142156392, 1168379200, 2863089066, 2325097648, 619149130}, + {476476869, 125107322, 4242120686, 2845323427, 4064291205, 3917126424, 1748893411, 1903681834}, + {265863512, 216982475, 897166961, 1564843947, 3223825511, 1700060563, 2015862784, 1003671286}, + {3625714394, 3340083696, 3853899793, 1293453510, 1114045522, 1313270480, 725703339, 736671172}, + {343313943, 877917671, 266408438, 3323120098, 3147007930, 913257583, 2191771258, 399381021}, + {4013991165, 1416418041, 3832036954, 2938470425, 221845214, 1167203774, 1768914611, 902153570}, + {3502117386, 1386058830, 562022867, 1449753541, 3601428107, 2264692620, 4035074555, 1470772422}, + {2152687219, 2831804035, 3822495442, 3564473016, 754416363, 2034497626, 2394459393, 1033406266}, + {523865120, 1895475540, 1242600002, 3025061292, 3228720770, 1111003417, 46000713, 1658545305}, + {2782351140, 732806496, 543771103, 815167696, 1354719155, 1146263627, 2780139930, 260438830}, + {3769722236, 1031924627, 2938914690, 3845552382, 187349171, 2082492512, 3105533582, 349133714}, + {226101091, 3932996043, 1261834526, 3639471815, 3783975045, 2773435294, 72097575, 397612131}, + {345326414, 2071360836, 1230788147, 1256092033, 3275882835, 1895960541, 3970380183, 1116445256}, + {1253210318, 3196861338, 2659951767, 1708719847, 910090836, 1778803537, 99897865, 397987309}, + {2660390903, 4163502563, 428053853, 865236208, 702120899, 1136730868, 279386348, 327194324}, + {3069679620, 2753662961, 1245152705, 3383900875, 745828980, 877948018, 244740169, 1199116042}, + {2787134555, 3165922826, 1952888254, 3269480812, 2902699638, 1771993944, 3157498020, 1865440178}, + {628321080, 1876194052, 1060136558, 3323455987, 1073153554, 335731429, 2331228708, 392686317}, + {1455178159, 264261804, 378146754, 1078226682, 4192580179, 2437831674, 2070380519, 928830846}, + {2046104580, 231990579, 2210106235, 1464674297, 109152583, 1324560308, 1252815627, 800092277}, + {1901999225, 3840850086, 1764548120, 80760982, 3738060630, 1024821752, 3328852270, 473577239}, + {373825875, 796216585, 4178146910, 4280788818, 3209858978, 606647393, 3688582072, 443935899}, + {2704366167, 3231575353, 2874634614, 1634692969, 1453550797, 869562435, 1887309440, 173080423}, + {3762416407, 4244000016, 3684384886, 1357551174, 3638253892, 4172136845, 2648676306, 1011306758}, + {1993969839, 1763229071, 3961301037, 2419255917, 1460744145, 3682944608, 236434257, 920525286}, + {3837242033, 1332515327, 2877509306, 3999499732, 80284978, 2955970898, 1434413023, 171125802}, + {3913213042, 1869099339, 4000113933, 220596640, 3872047924, 3271984538, 3828790351, 1040203103}, + {2265046564, 3967925010, 1013586304, 3275083335, 1069009185, 1278744283, 3942942004, 454264129}, + {1338410339, 3817156291, 3328265761, 1084661106, 3335518316, 69993660, 2093068110, 1921514120}, + {804999781, 2105393429, 1765592882, 2475222271, 2266336204, 3217607476, 2923318831, 142791235}, + {430419998, 934748265, 2313948093, 4037500455, 3625196372, 2119493746, 4212583891, 1592186257}, + {746805018, 4089285572, 4085026197, 3000374567, 615498630, 2145887823, 1590773924, 1527345179}, + {2845853102, 2707089717, 1630166363, 2450336300, 2928041496, 3649727030, 2127929440, 509779551}, + {469352672, 1049942390, 43141745, 1542346042, 1506664989, 55847996, 2817304678, 355733074}, + {1506331341, 3468047035, 1937187646, 4098911134, 3542947986, 1209786738, 1094711193, 829552324}, + {513448314, 3121065069, 3605207936, 165454555, 4223276459, 2021790882, 2269303689, 1488770403}, + {3082206741, 4006834512, 4234068655, 4129328001, 3776219139, 2261826564, 224971455, 302063336}, + {954498204, 1809052356, 4166983587, 3337321629, 3049995803, 2419783320, 174720186, 1274614944}, + {1445122460, 3758988704, 196996475, 1204057615, 3686956470, 778267856, 4120734921, 711037096}, + {3229198649, 607230863, 1767796456, 3082748802, 516717612, 1139856567, 4283954815, 1377621433}, + {915505554, 3466785809, 1620352891, 3551426400, 2349243035, 181069790, 2355409970, 193494961}, + {371035398, 515131065, 1254963835, 2792970006, 3327859005, 7229292, 3512269118, 163262359}, + {3892161377, 2198594287, 2836914912, 2416204375, 3023970432, 3772766634, 676588254, 1628802600}, + {270068354, 2859732653, 215090601, 3726973605, 2118038468, 2390978685, 2598507126, 302182063}, + {3713755513, 2174696396, 126948634, 3284315619, 385003137, 2403755756, 3317463094, 901619973}, + {2334702884, 2222368366, 1758774502, 1908347511, 3211427437, 692975498, 562413342, 142488264}, + {4110857536, 3489423189, 93567419, 4212065264, 234052753, 2394672508, 34873324, 1773261916}, + {657961333, 1978614618, 534179675, 2535215399, 1387596249, 3862387036, 4106161926, 1728854459}, + {1473901033, 2719557261, 3736474389, 672950929, 3597017256, 3387708956, 186397118, 1308454217}, + {1598517477, 56391826, 2422540582, 4067339205, 1918310686, 1632414443, 62440299, 823971542}, + {398165140, 2017823557, 2362950145, 418114087, 220453310, 4274014861, 812529230, 79440548}, + {931974626, 2453769606, 2120177821, 2490354275, 1515775164, 380736393, 3854197615, 1064794549}, + {2243581620, 1135594669, 2063501796, 3958798254, 3522641296, 1398431830, 1666677894, 1281600955}, + {696950615, 396002275, 3867860745, 1285374694, 1389737165, 2304653218, 1392054902, 1003929621}, + {950116283, 1944502872, 3293727989, 2063659083, 1642146638, 2810731694, 1962444104, 1653257001}, + {923027348, 1377431764, 1140187612, 3211115003, 2540299968, 4139500757, 1178298142, 509964099}, + {3242550779, 297201291, 2611144989, 3500022767, 2506975200, 4179868347, 1169516495, 484845910}, + {3516581806, 2137438341, 1432542589, 2474852430, 3172619951, 1938803064, 3183844610, 214177059}, + {3336368782, 2998429373, 2732636385, 3498786925, 3423014853, 3403822600, 3773505469, 570273240}, + {1953913020, 3999791546, 3620452074, 792587486, 3635399265, 1251811707, 3385375737, 513060391}, + {1881966423, 1309648177, 3325898535, 1929050829, 3895419908, 4275819134, 2281833898, 160590489}, + {1970362525, 2445205444, 1790488087, 2734332599, 1804077338, 3950453045, 4274887535, 857840483}, + {4190203910, 3771017405, 1560796520, 757251766, 723791912, 1000875239, 2368697803, 1715120437}, + {1105312635, 1831981367, 590956174, 533990082, 1363977346, 1419039220, 1424959217, 1862918088}, + {1707585526, 3331321438, 1309462872, 3954260220, 3872107076, 4190563964, 3468333954, 1167672400}, + {3290485895, 1269155196, 2037242141, 766438624, 3795465654, 568772216, 2294587139, 1395729155}, + {1664582309, 4084244811, 1649685753, 917700155, 401871110, 1397653248, 1528924423, 1685365442}, + {1100283454, 3800687800, 1888440772, 1876077613, 2234407812, 3261430464, 583854630, 1650774478}, + {2582264375, 1083743606, 3735988203, 3363613861, 4080168950, 1456807404, 2527909687, 1879990242}, + {1163643019, 2326226240, 2656203927, 2330205431, 25504108, 3300175042, 3903825481, 1839014178}, + {423345650, 2455357908, 3518777459, 1060241297, 1612334065, 3049842316, 889627670, 291754731}, + {4070649682, 137635832, 1696702407, 250369810, 596179526, 750439364, 1570467152, 109259203}, + {1734261564, 1556520664, 3486765496, 3854393185, 552312591, 2634175366, 2171959629, 1597361430}, + {1393387068, 3729055216, 1510477586, 1982896429, 3587855757, 251368586, 609561594, 428465275}, + {1111756681, 3514989840, 3252037939, 3176047280, 2786052296, 198487204, 802202742, 1512982127}, + {1694930105, 3351577968, 1317820916, 3720137640, 2831824873, 583452628, 1419839298, 34784732}, + {3188669622, 3249938714, 406543497, 682942938, 3453841653, 74420291, 2829460527, 1195686084}, + {712118392, 1490184923, 860812241, 1347346526, 517623618, 1065790763, 1500772847, 553582357}, + {1748542702, 893633609, 4021443164, 1592941236, 3964348995, 2448108769, 2526663836, 511128264}, + {2487984458, 319607302, 2700231013, 158702297, 2241852635, 1404705821, 1944118438, 1563972193}, + {220616777, 1273842898, 2774047558, 4260187262, 3480554529, 1278678043, 2260888426, 1110404237}, + {632015945, 1567498391, 2348672297, 323487993, 1647717869, 1318689620, 348657605, 575523659}, + {322342457, 4213527948, 734126757, 2283282395, 3304441481, 64755967, 3769470911, 1060077480}, + {1389269222, 296759250, 3737490997, 2196425575, 2357516694, 3288136873, 775260214, 1741808722}, + {4201403095, 2332065162, 95069321, 4077053892, 997223034, 3969941838, 225831704, 626550268}, + {1694304643, 2170580095, 1199790149, 3070413394, 4249852320, 3590098066, 3120800184, 1198436435}, + {1263448817, 118724347, 1823364498, 3620078081, 3835571852, 137274613, 1071431144, 376406456}, + {3276982759, 1709151202, 1592474299, 779170521, 2267148223, 95614388, 1494476679, 550085827}, + {149028973, 2665473834, 142373483, 906500453, 3609802090, 2080183894, 4059075003, 1259998568}, + {3314185079, 2592750974, 3187271770, 497977851, 2310167987, 2388803657, 2429258860, 588929998}, + {1584863944, 2740517066, 180562886, 2343560988, 2553645666, 1797925185, 1445919046, 883240130}, + {2695052512, 3080056905, 2944255733, 524598736, 721509110, 3015485800, 3562169346, 350030491}, + {1781903568, 2573349227, 4036008195, 1779437155, 2831856100, 4080153088, 2441887785, 494613468}, + {2688769197, 2588856973, 436609710, 2562408752, 3321781996, 1747969286, 2494064400, 627262492}, + {19652838, 2121114980, 1166835629, 3570198584, 4172897157, 2414490360, 3118975457, 730646157}, + {247348053, 402080343, 3906663020, 3205886674, 2818004445, 2874832302, 2475237513, 598660841}, + {4210699814, 2672106286, 4107171028, 2543600037, 1207267039, 3308535391, 1630289688, 1290017174}, + {3734853075, 2993451155, 30368696, 3618170210, 3890794620, 2370304327, 2456896337, 1537726352}, + {3606639591, 3006653490, 2071337867, 3473919288, 1219335926, 1964959707, 698915659, 205048426}, + {1888896684, 1427457339, 684714131, 1545174634, 3843597507, 1402275550, 2642964568, 1558471684}, + {3219842360, 2830621537, 4133306489, 3210387892, 3526407254, 4118727786, 4255445958, 1594084648}, + {973121395, 2734064124, 3521586471, 3536606172, 2106965927, 950544410, 1586409070, 100704970}, + {2710404937, 2381418982, 1482593636, 3347081592, 566833824, 3498983415, 2587484332, 379350456}, + {2513500266, 2882093180, 1202464741, 2785664179, 3191639950, 3657596713, 2047660027, 317900060}, + {3704353329, 2127612430, 1043532384, 1962107162, 3098459807, 2620105100, 1260792491, 754940379}, + {698134874, 3211479104, 4046637290, 2067740780, 697493331, 3993383967, 1954041261, 19400542}, + {738564787, 3489058919, 2600389225, 532930421, 3107998724, 687295225, 3726229589, 349932472}, + {1688973585, 573872427, 1726523404, 4041331724, 2039152832, 2569910077, 459968058, 1384088376}, + {3786960147, 141182376, 3690089544, 1210383590, 951092194, 318076018, 1812506766, 1635502263}, + {1893587435, 3873004461, 465654767, 2831662799, 1814186876, 2836835193, 816772605, 85328125}, + {1015540063, 305781240, 1186151288, 2686326657, 340577005, 2360847305, 1494410987, 632166032}, + {3296927968, 933213368, 1002255269, 753370551, 4240730846, 3175235478, 1407538308, 840130843}, + {3558380461, 2063688632, 1852584331, 211740888, 2165452559, 207633457, 2646644533, 1567316986}, + {3008359334, 1858866901, 4061071849, 4256503210, 4190637264, 3386104505, 2949451441, 1283889010}, + {1059130132, 3665152194, 2200245742, 150965660, 1257088006, 1084535024, 552036867, 1425619566}, + {815595305, 2028930841, 500286945, 3057894403, 86768234, 912568788, 1698919799, 2732298}, + {2421217535, 3939443496, 1701404112, 416170082, 538510953, 2040589524, 163629589, 1172946984}, + {3185978537, 4045905816, 3395818418, 3030540530, 1857613911, 1496095014, 2064134544, 1475405180}, + {3600826229, 652244165, 1854655282, 1335125734, 4162477060, 1834856449, 1907064611, 639651509}, + {1099915413, 1696066455, 3667131044, 2801281464, 2825799514, 3122992997, 1990603158, 1482909889}, + {357999973, 1948117934, 1767465795, 1503534480, 1280636041, 2172872676, 42049083, 1507085018}, + {1586385686, 1815009774, 2204636782, 3621368897, 3863852407, 2054076750, 1592313794, 190891089}, + {3354686214, 3863977972, 317192338, 4056114909, 2843296861, 611712348, 1761686802, 335382807}, + {1567080100, 2565673356, 358261369, 440446404, 945530996, 2339024814, 2515226184, 229064451}, + {1785588133, 1849946439, 2522498743, 1446287958, 1912602746, 4110170320, 462325958, 1570458567}, + {188733005, 1335757961, 4199795493, 2182031581, 238332795, 2380909847, 202207215, 1631157542}, + {31496023, 2369924941, 3876746531, 2425430852, 1269810063, 1280474251, 1082015996, 1685975648}, + {2435326671, 2137599669, 1664930336, 1972722016, 3539431175, 449743269, 2111822119, 511379179}, + {1711920667, 1411331215, 779359286, 2188614788, 2187562219, 3514145917, 449509116, 718778800}, + {939327715, 4017316180, 3184864945, 2907043743, 3454380149, 3224547147, 2372894553, 1676378158}, + {3839199964, 939098512, 2024577562, 4081436888, 3714080470, 2588849969, 1695842745, 1531321817}, + {1211023589, 793564404, 2199087717, 1630300491, 2597931989, 3445033248, 3601431661, 1374506943}, + {2965008603, 2759601010, 3587253823, 548345370, 1544684162, 1536496905, 2096390346, 777587904}, + {442360470, 3128324811, 1050259196, 2968748797, 3681207914, 2355676928, 3623016236, 1108028206}, + {3708091553, 144320768, 3256383057, 2524290544, 1754607964, 3299663064, 52564954, 341716323}, + {3843625606, 4111637138, 809737716, 3699441361, 1168446886, 47563080, 4272693131, 127345596}, + {680115398, 662336941, 1927619347, 3905088120, 2903942753, 537932381, 2657862705, 1178037043}, + {4163011957, 3149539059, 2163725477, 3266998162, 4210432573, 1952270323, 2385520511, 478315846}, + {789151636, 436726598, 420313348, 2485009947, 1544771724, 3706962115, 1756848937, 1656980041}, + {1026192729, 2143989567, 1225912383, 4265700455, 865919410, 3004070371, 3793044584, 711820431}, + {3074622406, 1499870065, 148729599, 700860722, 3901921468, 4249074197, 3072633552, 998987995}, + {1728889694, 1519430990, 3546828861, 3258261967, 3495054313, 1102352066, 2484900668, 538587683}, + {323328591, 3431567383, 993028075, 1770597343, 2945870618, 3278688158, 590692810, 820795638}, + {648432380, 3177803313, 2969204008, 3004335537, 3521610509, 2517009887, 1828467604, 733128907}, + {2677755643, 1903024099, 2775285626, 3676465242, 4174759248, 647113185, 452482319, 66824575}, + {3034780689, 2654656829, 2817722523, 1278666243, 1258679268, 1395316299, 1696496920, 1844954148}, + {1614955630, 4051903901, 2729187762, 882600100, 4253701348, 515117132, 3100593881, 1708807533}, + {4172490145, 1075052902, 1626886089, 93674269, 1165755460, 3972839361, 492559171, 1219041240}, + {1692811688, 1582006388, 1971739532, 266853730, 2591499286, 1309416939, 4285615191, 70759855}, + {3202371061, 2791601203, 10296181, 3923861854, 2432228797, 3645206817, 2259317370, 1043934012}, + {1289656658, 3254713406, 657578453, 297376404, 1786930291, 2623554605, 584246050, 1340463025}, + {2011295238, 1032324275, 2907804244, 1322922992, 1606367538, 262389818, 3964671566, 825853816}, + {3889077992, 3238322947, 1242547002, 2075266549, 1397456799, 3386559106, 2614499281, 1897188318}, + {914464231, 1800009680, 1976696388, 4175014812, 565507719, 2935701528, 1061766695, 1091464266}, + {1713674186, 1842124942, 2138138453, 1862758320, 1457479793, 4257841417, 1581888569, 1575002281}, + {2141548881, 3224214604, 883804295, 1438123617, 648526089, 13085009, 3819729879, 684628694}, + {2544121603, 3421125483, 912712630, 3393499560, 3307776357, 2951365890, 3051717743, 1747763038}, + {2378439041, 1068953280, 3267226470, 2241270850, 3977868198, 4143306418, 445486592, 1909270247}, + {341827399, 1113035149, 2557745857, 1149856598, 3782499853, 2703402864, 1688803720, 1864288115}, + {2975696726, 2722312306, 4173590484, 1671007158, 341455217, 2145732041, 2398917642, 254345528}, + {1277631748, 2877986998, 3909284374, 1072038631, 652226894, 2042406851, 3688482439, 353455731}, + {1166144007, 605798108, 2483357657, 1169298653, 2874954781, 2941868905, 3941904276, 240293473}, + {3776986149, 3072780109, 2641400208, 3648555247, 78378227, 1983090111, 1272804736, 19904354}, + {3776450730, 543442460, 3136422014, 1083330519, 3716925603, 2572688658, 3572882793, 1386468511}, + {517079469, 2490614817, 544774125, 3082988665, 203246742, 3296588456, 3474932524, 1113990206}, + {746251584, 3037645185, 1026513110, 273085874, 2687781063, 3399525620, 603721045, 842130755}, + {1076887678, 600145788, 291759840, 664443679, 3012388813, 3088048776, 2123026488, 1862823757}, + {910923650, 2995098359, 3571918000, 2893329309, 223680374, 1087087437, 2240090604, 497844837}, + {3241104453, 2856621605, 2670545529, 243603760, 2039849963, 3861942460, 1938658564, 951296000}, + {2248669424, 2900598904, 4063541710, 479435103, 3147684516, 1209332670, 3434361206, 1436216184}, + {2918449892, 2362889214, 1584220001, 3945153476, 2748127147, 342974344, 1971398657, 960153289}, + {2424894076, 1169594142, 3338530882, 2752058663, 3312862251, 4129312830, 2710414793, 503956715}, + {30192267, 1661227382, 61646586, 1962967542, 466430133, 3217419594, 1372697721, 272363379}, + {370230324, 268002262, 29149647, 1025393181, 3553738297, 564168895, 2506049328, 1323560497}, + {4275078845, 682648643, 3844417723, 4097926444, 2316516834, 2985101985, 879751542, 1314741436}, + {2181031230, 349281995, 2044616380, 2077628557, 970466985, 1373412978, 2909341695, 1143220892}, + {3941893517, 101679037, 2468966767, 1955599472, 1561666088, 4007079728, 4017763039, 1811631282}, + {4121521983, 2287055885, 2087825363, 2613440848, 2546293537, 3592539158, 1489265377, 600990456}, + {3234065255, 242482551, 1056577258, 3047745727, 534813408, 3952386734, 1044556299, 1391878159}, + {3404288209, 966802585, 427761193, 2235986992, 1765044523, 2827076569, 2321951771, 1791207028}, + {2126661281, 2785207929, 2088153009, 4289919279, 3848979323, 95071925, 3925114544, 870014541}, + {3590768211, 213585404, 3428914230, 3443679583, 3161107983, 1522536635, 833104529, 1208096868}, + {2722488606, 2278859831, 2518449035, 2786501044, 533899100, 1572003181, 58231376, 828940455}, + {2417864339, 620439511, 3403771966, 676858748, 213307, 1116410136, 4270164566, 139079231}, + {3175213619, 3804247334, 3980028699, 341811998, 2038455583, 2396269050, 71327605, 1620162266}, + {4262820372, 1764256424, 3142313143, 2141791381, 585838205, 1862681148, 3785045454, 1813772657}, + {1863045156, 192988710, 1781157601, 1556316350, 2394229836, 3120053538, 3827694371, 1167620661}, + {3964368047, 256445384, 481776758, 2194029209, 1174012674, 1221446621, 902769345, 1144739250}, + {189379309, 2978540076, 4049152452, 4174062101, 319162026, 4261060865, 1360031373, 786910655}, + {4020256250, 3800816759, 1355551333, 1296253141, 2763797796, 3289717164, 1666415716, 913018023}, + {53298133, 4263617297, 2686479995, 1882382971, 74905384, 1533862409, 1958579041, 1859823905}, + {3745516093, 1192287829, 769440408, 3358072776, 1989674880, 3642134364, 3185140225, 1674472590}, + {1142927967, 1652398415, 2008926028, 118315735, 337508799, 3338191347, 193495485, 1720409162}, + {2042113095, 3852417646, 1598522416, 3293757097, 1204167091, 1214121784, 2449650430, 1723149625}, + {1726653374, 3782189066, 1667243174, 318348407, 535312537, 2579256902, 1807698322, 898987147}, + {3921630158, 262664017, 664181110, 1309785715, 2193538929, 4152147745, 1554245806, 815177769}, + {2166110444, 3807376396, 3228766327, 4271794109, 675772778, 1170851044, 4268360885, 1210810388}, + {1431701252, 3952891811, 4055238099, 1581094057, 110975812, 3146173832, 1580335304, 1021450678}, + {2930286043, 2417036048, 2693347730, 1299996071, 4035224480, 116938481, 53135240, 1081123965}, + {3477159834, 1409310724, 2864631824, 607425278, 2868171372, 1073036622, 12797428, 1018775310}, + {815574887, 3876015827, 2391858447, 2919306148, 1514299099, 413285360, 2992238223, 732422595}, + {3931770188, 1278309715, 694862119, 2330192648, 224723906, 3073675935, 3364354157, 309279808}, + {793607897, 3900017841, 2812940743, 712006533, 2076614184, 664707590, 2196905999, 940097429}, + {2650548718, 1327128046, 1990650921, 2743924815, 2240814340, 3316578156, 1063459063, 1458083011}, + {1058084650, 1514373208, 3761758204, 765528328, 1832793534, 589695770, 1944461522, 1731962243}, + {4213831768, 843235971, 3902801631, 2724606299, 554240717, 455554786, 630086216, 947555355}, + {3239650201, 3840225819, 3874758869, 3744462227, 3593707497, 3706666189, 3628941580, 1039436081}, + {2339612914, 696099009, 1182083790, 2422764707, 342598251, 1470218203, 2322796412, 196858966}, + {423141315, 655966493, 2385341758, 3167820333, 1244537310, 824763223, 3471392795, 1453529142}, + {1594190374, 2039588679, 571161480, 929420708, 1021769394, 3623378687, 2590906391, 951497431}, + {835961243, 3446480315, 1048714289, 1460106604, 93933583, 3021001863, 3114329712, 1644913099}, + {219322345, 1015335091, 915295705, 156539359, 1162722348, 2774528884, 265224284, 1367097978}, + {3263292862, 39450632, 2849522352, 2139330830, 698945241, 3206402812, 913158885, 1102302851}, + {2267242892, 4153968116, 1384951567, 2907451047, 824641802, 2988566013, 1687946471, 1494793578}, + {3520268502, 2100737683, 220064712, 232888343, 113196741, 2659408613, 4171114433, 507535494}, + {3666540515, 3321756155, 2030933593, 86667735, 1817024169, 605716965, 3530639518, 1595274643}, + {1501750861, 259012659, 3391819572, 2743334435, 820339089, 98480575, 2523271898, 1501316758}, + {2252450543, 1007055792, 2214270654, 3879563325, 3963813614, 548661760, 2060204160, 260844027}, + {3456931588, 1183061888, 81787005, 693589220, 3342342016, 2102712637, 1664212094, 685669902}, + {472518722, 3461106544, 4005914859, 2698166500, 114210283, 2163010326, 405018820, 281264531}, + {254475869, 946819357, 74967276, 2331715283, 834311860, 3178973962, 566585296, 627211285}, + {3616584473, 2123850075, 3311874966, 445706907, 3613916101, 2018062240, 1368353914, 1633637159}, + {1724041102, 2150714134, 518963103, 4183149487, 990753201, 4135568171, 781278503, 878348971}, + {3527632489, 1303615559, 2565820829, 4223227186, 2135741654, 3387473953, 789264631, 1482555809}, + {4086126038, 2608829451, 4032805521, 209965523, 2010209371, 2770445857, 998506842, 1368248296}, + {3732402540, 1252982661, 2691308048, 3169495715, 3929381968, 3394459017, 3925012298, 1829426883}, + {667626296, 2556765149, 451142974, 2091141285, 1353926677, 1119882244, 832654112, 923218532}, + {3563181908, 3171304423, 951735115, 1890771678, 2719728347, 1995778940, 4000932321, 1351186940}, + {3129765393, 2944817788, 2545970568, 267578757, 3259097882, 2865791851, 941032793, 1870900289}, + {3832351305, 222124977, 3392111804, 2030308363, 3725179267, 4247508145, 2826658929, 1323644805}, + {707199704, 1630819157, 896761014, 3457598167, 3330154541, 3603138995, 2791504320, 171212611}, + {2652175888, 4114365588, 3237033706, 3548237537, 1919218823, 1485443253, 830286804, 1088885063}, + {2304739680, 786592316, 517654165, 545835680, 2711049687, 3937778231, 1451791799, 241163603}, + {144870567, 4101610143, 761598773, 2260661094, 248209186, 2940538942, 2696674209, 270682582}, + {1487412575, 4032531792, 2088136608, 3109683668, 1607772301, 3414494269, 1822958014, 1931148603}, + {761328614, 561333843, 2571566360, 3409050672, 155462512, 3860375006, 1370393560, 1862987046}, + {2391946363, 3521556094, 334542725, 1764421183, 3758932256, 3367836845, 1223591581, 343651553}, + {578597318, 3112570220, 4074082385, 1034871456, 2625169202, 139809664, 4193038276, 250499360}, + {4223445976, 1116602594, 2037422654, 1447987114, 1347023248, 2622313507, 2960527846, 1244436266}, + {3048003747, 3393889671, 3624016930, 4031650432, 1945381826, 127437187, 1470865902, 1123334779}, + {1968408231, 2609556692, 3774962062, 76255384, 872236928, 138702532, 282416005, 1576895264}, + {1474143593, 132691089, 1939774642, 1453735296, 649735243, 810212424, 141640336, 1281247676}, + {3117281446, 2436606010, 169967548, 3482399243, 41939653, 3847768906, 3403228943, 1766457976}, + {948658702, 1177463041, 3908040578, 608993586, 1931223146, 2665095585, 355603520, 726286820}, + {1615261608, 1818311148, 3382320147, 602273397, 2851221442, 2622419212, 1208740016, 680929892}, + {787606275, 4280243890, 3682006461, 2885259103, 3316837636, 777489793, 3424249995, 774637468}, + {758584642, 288495970, 4237568340, 2330420818, 1170431649, 305099812, 1401597851, 856608523}, + {3969567197, 1641332982, 2802700719, 2538783229, 2347908957, 2593192805, 205506871, 341298327}, + {549871192, 2750165535, 3989049541, 3300516047, 4076666667, 4091561547, 1625424329, 1101423567}, + {81385684, 3200721944, 3847457446, 2538339051, 3167264363, 594059864, 2603543604, 1251575342}, + {3347189384, 1471400752, 2319428968, 4262993269, 3289623906, 326923728, 2314141967, 1564255768}, + {812887677, 2947732774, 3196914233, 1265981774, 656035176, 2775732105, 3971137401, 710932211}, + {3504901580, 225476675, 318614555, 3447479937, 1252347834, 905431378, 1497544559, 425270101}, + {2785645300, 3789486954, 1518864140, 3313891902, 2909884115, 1142609007, 2928516712, 46137297}, + {1620257092, 457344946, 1008890301, 4002068971, 888919163, 1372413746, 3808929122, 1561047161}, + {1084322991, 994130922, 4215449978, 424233685, 3401600296, 3520510052, 3355278648, 360387733}, + {2619474720, 455871084, 35579410, 2352456869, 4108910856, 3979133541, 2505657142, 20440527}, + {1885566687, 197730610, 3865634088, 606374768, 1661524806, 987736698, 1305015704, 121108014}, + {264037081, 163659885, 4253922641, 935274525, 4238403768, 2954818872, 67531374, 630333298}, + {3239890397, 2093635584, 4241758865, 3672461528, 937047838, 431221007, 4217207054, 1934572831}, + {2727935337, 893198860, 2328305888, 4008029335, 2607934609, 1903255279, 2144098190, 282165720}, + {3183190325, 2043062739, 231584680, 4181619788, 2458465170, 1986606275, 1985938495, 1342677652}, + {2155013864, 426232192, 1640462783, 231542722, 991634415, 1434409070, 3543126845, 958199857}, + {471545968, 2131913486, 612227863, 1548578308, 2650875283, 1116326311, 2325578238, 291565922}, + {3680663773, 1098738218, 761993760, 688698467, 3874615530, 188029550, 2910388464, 545956947}, + {2729255069, 134010684, 1776229293, 389090587, 1781270321, 3636353502, 321719504, 646831059}, + {1913233680, 2637543456, 2629109191, 642016866, 2808973801, 1699752790, 3272502114, 762313929}, + {170165662, 209770368, 2801591344, 474411677, 3328762739, 1217678584, 2660789355, 995110408}, + {3833916109, 1791858517, 1946105958, 110166097, 2692367275, 53713661, 4053896817, 1185332919}, + {1978222854, 68709740, 1587210215, 2268657522, 3824205820, 2019880374, 2650943337, 1839932966}, + {1735480396, 2109789643, 1000792087, 2085035831, 4040540509, 3301596397, 3854755870, 1404548587}, + {2826393323, 1842874451, 3726242565, 3821457216, 166263227, 1615509700, 4099800680, 446361836}, + {3458894246, 1252443772, 1025159829, 2706074000, 1427283370, 3812678027, 2169882811, 471791832}, + {1919250214, 1389575583, 1689558529, 3842835766, 3273152660, 4222738223, 3750006394, 1590918911}, + {3969608630, 90743036, 1943840898, 3556194774, 1957994054, 1246189991, 1335955866, 1625748291}, + {352482557, 1106476208, 1138770607, 692211917, 2746936498, 1880815832, 3399996927, 514305061}, + {4036589958, 850890706, 1016790431, 88244732, 2642751661, 2580434498, 702857128, 1371252774}, + {3837054157, 509800430, 3778820095, 1659200294, 985263719, 924903197, 3660472719, 1201049816}, + {317615025, 1721537493, 2762946257, 2714876834, 2812682061, 1285619519, 2915035539, 1487055358}, + {4294433552, 2584171381, 1828129594, 3142298913, 3358744590, 705110898, 1551796154, 1297618472}, + {3895520633, 582148561, 3993163182, 4286377168, 2167546790, 2317945560, 999753882, 1355710744}, + {4062223174, 3508994874, 2348830867, 2661545403, 1147147174, 2081026324, 27614072, 465161046}, + {3137718385, 1116128513, 1852679109, 2788515038, 2711167097, 3353550601, 1287376446, 782190115}, + {847132278, 3098775979, 472331490, 2584134008, 3196357036, 2175201380, 2725910692, 1474647183}, + {2624320214, 233095094, 3538495089, 3060247467, 1829488511, 3324351680, 500469477, 168169435}, + {4027895340, 1628592361, 3750496678, 2069300564, 336021745, 3498363652, 1948807584, 1137613698}, + {2344336129, 1880946419, 3042219550, 821678235, 628089059, 3781880744, 1504019336, 1719126831}, + {2652201285, 1268019503, 1970293783, 1693713695, 1024179778, 1694529728, 1807016586, 479427490}, + {2191371856, 3642721262, 3577997576, 756264969, 795826764, 2160857398, 1341767912, 522153226}, + {1794757341, 2265054450, 4181301188, 3494646147, 3123514504, 1785704307, 4290243727, 1413416417}, + {2814384900, 951409978, 365645092, 3756107530, 2420402628, 339865579, 1321491554, 345504923}, + {1374093493, 1198898705, 1091811545, 1473828001, 1151769095, 349046949, 2376332354, 1132341850}, + {1754225818, 864577677, 2850777589, 1294672368, 1232766087, 2402981575, 1026815226, 1091715184}, + {910829534, 2773173332, 591151255, 1288613235, 18598087, 2292072128, 928455776, 1498837922}, + {1905543706, 710745898, 4007740601, 3419218137, 1059495598, 380063937, 1257286189, 850646125}, + {2219526422, 3177522431, 3715625327, 329224084, 1228116732, 765802341, 1242281432, 824411235}, + {51795872, 4165623987, 1946334540, 254361242, 3329497894, 343414023, 1236648950, 263837866}, + {3051517145, 1876242010, 3329635069, 527624444, 2444726325, 3813716092, 3117012372, 456298650}, + {1552475525, 58388794, 2758757181, 4040854065, 835997848, 1782977670, 2946737867, 19469545}, + {86875442, 1369483452, 4077474047, 1653280114, 1780804565, 2417851301, 787653339, 805844122}, + {2155758358, 636787927, 2603097323, 3840784955, 1330299800, 2455874042, 3308071726, 572469664}, + {634062117, 114615432, 810039807, 2117634176, 4181150428, 692180593, 4222734341, 1035199352}, + {4159031011, 862631245, 4012802618, 3641254479, 1828555464, 2386098094, 3314520443, 1665336800}, + {1993986002, 2923271729, 3381149006, 2901302348, 731865657, 1107257692, 1526193529, 555349421}, + {2500642033, 2462476052, 2520235047, 567802662, 3648512061, 1676084440, 1421888599, 483133193}, + {3568905054, 518227470, 898060854, 3604513886, 1489387592, 1037650548, 2686700772, 174210228}, + {1268511932, 3892160913, 3872948211, 3669861040, 2563147223, 1516823148, 1961502390, 791550087}, + {1702386110, 4029899944, 474569279, 2717913175, 2270815830, 3800650878, 545343436, 417361416}, + {1290773778, 4068928361, 1740931225, 513053628, 1544944911, 79830067, 3009135415, 1215285067}, + {71332950, 2118439353, 3931820944, 2497445055, 2327155613, 4229094699, 3856617135, 726768703}, + {300087803, 1591211514, 3495489909, 3805097934, 3919113803, 572736585, 2480582313, 757628100}, + {1548349635, 1148326380, 3074595978, 1128091636, 3969371607, 340293881, 3685265560, 1755733425}, + {635892891, 1839980555, 3810852444, 4018221136, 479978248, 1652813185, 3650837181, 1468644610}, + {1766104968, 3183526168, 1631398438, 430939607, 3799286483, 3358149178, 3493736099, 382285674}, + {2916236843, 3709082367, 661513842, 3129624955, 850565336, 4136942993, 2730115121, 285308200}, + {1030213669, 2081816829, 3517193078, 3496632000, 2843891884, 366282838, 612325075, 1713887946}, + {1623150448, 2387813131, 2272195995, 285004650, 2767275430, 1125291751, 1806338074, 745668017}, + {2238318877, 164752390, 2866310760, 422709919, 3312995529, 740981154, 1807048544, 1431541927}, + {677358335, 2733353967, 3814737235, 451763514, 688138773, 2619194660, 103753101, 242374319}, + {3961800308, 316359904, 2484139029, 3667128173, 3897146200, 2780712730, 4540236, 74379872}, + {198708707, 1935481794, 1877890945, 1844223137, 3540211526, 1016426892, 2597996599, 589370132}, + {1991171666, 976010662, 3086905861, 705291365, 1998146069, 1134208917, 4090098069, 560409986}, + {2956659199, 3476232129, 680518610, 2432590937, 3864059446, 1739396511, 862118036, 1000476021}, + {3100036701, 1747623262, 583872793, 2371097766, 675815958, 3049933113, 3229941711, 337241177}, + {1441432686, 4052684588, 3133832818, 4168077507, 4273059023, 2425951999, 3226627977, 1936189199}, + {1214723540, 889953410, 1299510993, 2965550852, 953301252, 3421003437, 3783361337, 1633897273}, + {3068513015, 1695373873, 98795258, 4070368789, 3521188611, 2704578687, 430598058, 984699617}, + {2873089882, 3103232415, 2362215496, 2650304489, 2237249162, 3577676228, 2596339249, 378684242}, + {1066143529, 3362251732, 4084266388, 2305916404, 2413565933, 2160673687, 3280712730, 1680589244}, + {798279388, 2895134077, 1042246953, 3752472643, 1203973341, 42392415, 3009206821, 1454312795}, + {1223019506, 3186628211, 22692715, 3541784573, 2151336153, 3937780337, 1466070946, 88160548}, + {1591403966, 1371742623, 3998331569, 4261503113, 3891883228, 1808647738, 2096751041, 494882170}, + {3536442733, 3670162456, 3687745143, 1207093047, 385554659, 148392349, 2969686102, 179383852}, + {797079392, 955103476, 2544496819, 1075644742, 2378823010, 2005284251, 3421284804, 640679390}, + {1238069896, 4164478737, 3511306801, 3124436102, 2009861954, 2799431975, 4037123274, 1566370021}, + {2286295294, 2783807842, 1506899578, 3738864358, 1714871786, 1873651068, 743810527, 1800277858}, + {807812091, 1236938799, 3402007972, 660340350, 2355649246, 151868059, 3454358027, 636436221}, + {1562854089, 1847555494, 2875264609, 1156440929, 2841410849, 454767684, 851707933, 802240271}, + {411229310, 419749204, 3728678705, 1136760857, 2318136443, 260056608, 174856102, 979003979}, + {884610675, 536271338, 1255228544, 2017366326, 3635187013, 1280460758, 1337877773, 976484603}, + {3471751433, 1360922142, 1078287246, 2942476403, 3776515526, 4016738396, 4200291836, 1604430075}, + {3821294692, 3607322503, 4150090654, 1386906209, 1842236778, 3066286473, 3538085801, 1024815996}, + {1974084364, 166512893, 990814107, 4141558535, 2591837233, 3310153051, 812417510, 1618382441}, + {1428843105, 1672638935, 4238534783, 821078732, 3607099227, 1036640655, 1790248666, 972236877}, + {1647076417, 3181239055, 2385112973, 3563532882, 1962361978, 361268550, 1541042584, 986377039}, + {1687526528, 156030580, 3527730815, 2028788112, 3743857536, 1895609593, 184296639, 1597996012}, + {2486234731, 1924561548, 594556365, 3065223802, 3624011150, 4249473722, 2270069130, 1461518970}, + {1798395610, 2921563544, 3617638149, 4161763408, 3507484692, 1083130495, 323848120, 945449455}, + {718041157, 3472156411, 2123683336, 3024515928, 3566387835, 179786787, 112508514, 1128923094}, + {3155872981, 3428894843, 656464202, 611609366, 2047899994, 709816524, 96266766, 436775146}, + {2598679025, 2837290054, 3376405285, 1542443911, 1610980947, 1454524450, 3054339763, 1211751487}, + {3661009719, 3248960072, 2075799066, 1826350582, 1280062070, 2625864535, 410625415, 1311662480}, + {1343650948, 3610882313, 3648425523, 629297813, 1982582669, 1988920854, 1765824609, 780322693}, + {50754536, 3010291363, 4128865945, 1348073329, 3767912805, 201456295, 2871359612, 541978512}, + {4158044386, 899388659, 1566471244, 4067232497, 2315221281, 1732083943, 1185354145, 1036761399}, + {996172582, 2347735875, 2933946735, 2027733132, 2716851235, 1278987462, 1144293605, 579518778}, + {3366376933, 3394312560, 3074246843, 3131194003, 1925651423, 2797040279, 2617734735, 1371948779}, + {4115581784, 2670788442, 366244463, 1676540098, 3348947825, 3654150902, 3270050800, 1621491375}, + {704252674, 2645222722, 2086999972, 180871242, 4290681694, 2944716111, 1221690338, 222107131}, + {1169710762, 2936056843, 1221834337, 1457237466, 1106508734, 877557547, 701919463, 193131140}, + {2126945540, 3428473896, 2619741407, 198323011, 547348573, 539941673, 2421056583, 164152296}, + {977853453, 1925690130, 3230145115, 3712130927, 818599407, 2212096300, 3217117883, 324229193}, + {2610906896, 3699303441, 175236795, 800081207, 1350110898, 3268654645, 3006384691, 420933711}, + {2463905963, 3020686902, 214840191, 3522044464, 3828138917, 2480880262, 1166474899, 1670009864}, + {2691785572, 28858841, 1973640047, 4290926520, 658197133, 3989775096, 3700454180, 1579860932}, + {3736920992, 3951442462, 3042669764, 3240228479, 1152424146, 2321528969, 3333121396, 568994637}, + {2029802738, 1730625053, 3241179619, 1197313980, 3060169255, 2109830965, 760806000, 1241591214}, + {2014471656, 3304490546, 355148115, 1806806685, 3246704038, 1474511419, 448376531, 803206063}, + {1057547247, 2667862596, 718322946, 3286666699, 3496670032, 2119384402, 2893259498, 419604849}, + {1615136712, 403814457, 2340668776, 3540636556, 4061648166, 1792462416, 2443547810, 165899357}, + {1648972526, 3379327585, 420366967, 2595865387, 3189925534, 2191578472, 1952391714, 1176574336}, + {3553331703, 2343062301, 3595847886, 2017555056, 3195004786, 196183342, 26145605, 622810412}, + {3207604813, 1334363676, 787401037, 4122225426, 2095577247, 2987988819, 3347156417, 1693610104}, + {899974687, 2804291169, 3678884499, 4085591116, 1399303847, 2953654148, 1676051419, 1935267267}, + {3010210811, 4294948642, 3114311654, 244963135, 3817101647, 53898765, 3588859725, 904262591}, + {312893329, 2652643897, 929966138, 1850733683, 1979954109, 1519000193, 1407154141, 1428155732}, + {1874065879, 3663595882, 3532340747, 1750911951, 1325347287, 2329405362, 3316921116, 1922192494}, + {2584684557, 375416299, 1458098054, 887755119, 1822531492, 2621228836, 1499073129, 702155043}, + {1472766194, 232363699, 3901865306, 3899500148, 779598163, 1553455497, 1693233979, 1421283617}, + {2070646012, 1290928372, 3911017013, 4291258984, 3188914583, 1142162384, 1613006263, 1402307389}, + {3302941860, 557862840, 3809702617, 2681070525, 4072591321, 3497544043, 2919331207, 1082637874}, + {572536401, 3749985551, 3821722383, 2711533217, 3537483348, 2777665083, 1904216219, 1910342397}, + {2457337525, 470448209, 483238980, 1641938133, 179886615, 175455134, 3454742139, 150447713}, + {3852847272, 978333192, 3000683814, 1389300496, 1209960084, 4097115078, 1857374414, 278274631}, + {585828264, 1771065041, 613399513, 4149916139, 820729419, 2493602362, 675037615, 1558378197}, + {2762121596, 1924349706, 3953981677, 1323325693, 100452261, 1302952124, 279394074, 650784415}, + {3510636783, 2626025135, 1119248654, 2776315981, 3922879865, 3563826932, 3630147599, 1805169513}, + {3522175622, 1939760970, 1030347720, 1780003019, 2797381033, 4287955430, 3781142732, 1861092018}, + {2002978827, 770939300, 2876539767, 3579623771, 3188259516, 2048596947, 4026900090, 726072321}, + {3317631582, 1992028821, 3465766783, 2431452984, 2363632605, 2651539632, 1789972722, 164586921}, + {950783799, 2266489571, 1147117581, 972266220, 2111883622, 2754766875, 3643978425, 328700122}, + {2733562717, 2289475329, 109140616, 3810309938, 3003231041, 2861500738, 539687081, 31794390}, + {3243338072, 853056736, 632545102, 1083379051, 3443278938, 2836082400, 1139356577, 1298570519}, + {550535936, 3492082765, 2051012158, 2444355290, 3784853826, 433770131, 1268911115, 1229229780}, + {926838140, 2847265422, 101219629, 3726839198, 3203868174, 2320934100, 257329622, 1201941379}, + {1194610909, 2317971320, 2002987439, 446197061, 2402124620, 1587581534, 2952048793, 710388039}, + {3012012667, 1699197935, 457068856, 2836058552, 2470742, 2163259917, 706658822, 1408933939}, + {2318242966, 624945927, 3465363216, 465106944, 1564630213, 859415147, 2041388425, 505342913}, + {4093839963, 3309309551, 2109632695, 2874504131, 1298879423, 2982252157, 220340098, 1666470234}, + {1133907187, 1402704817, 3639325504, 2527429147, 3064773098, 3577241489, 3174057465, 480756996}, + {1796074384, 1954961841, 2874587679, 581615226, 2161331274, 4139146026, 1134993143, 367984452}, + {3343649337, 958980491, 1182204352, 2575008972, 1949510271, 984191789, 1121431248, 1374638592}, + {3618087237, 3238176422, 2049430523, 1712076580, 1951632494, 4190704265, 336963596, 908005325}, + {529712085, 3246555899, 2416266008, 2817929012, 4164240436, 2915917143, 3045619795, 953062740}, + {2015033635, 2706972729, 3993600252, 690677201, 2550102309, 3769066761, 3499931439, 1471679291}, + {3842146768, 3996578443, 1060405904, 2059612338, 3729219091, 1305666213, 2793410929, 1437597900}, + {3669015146, 1049416771, 541173014, 94675936, 1444982566, 99439797, 701766276, 237105426}, + {829230678, 2161102718, 2474687008, 3341454748, 3334423119, 825404816, 1259356520, 1537663010}, + {1012815752, 2308787976, 208660299, 2342944052, 1077339320, 1216016352, 3622124471, 366045990}, + {3063968622, 2072002671, 624639204, 2236265803, 1992507271, 2244414429, 54015169, 319667343}, + {448502338, 1733380641, 2921606594, 3712288438, 2035551499, 2423476733, 663503677, 586056166}, + {3185380982, 2017146427, 206427419, 2986588080, 3306821035, 1756021343, 3915063477, 661016230}, + {1287619713, 454608988, 2554138983, 1554034261, 2095171868, 1591118032, 648744165, 1472738474}, + {2897049937, 3123506107, 2653180461, 1544135513, 1615368529, 4122032286, 4135458001, 1353228788}, + {803282460, 754371232, 3093387288, 3646854792, 188712970, 971643356, 149554078, 1212220850}, + {617029592, 1798349690, 1128975874, 186073906, 1346590371, 2801404420, 1760692270, 1838336321}, + {1763101392, 2248791047, 3340966512, 2488904091, 2023899428, 3336478964, 1414887015, 730653726}, + {2958710979, 2624445257, 1202223748, 139763097, 3078429163, 2354873588, 481902109, 871279700}, + {774327101, 3371484099, 105589006, 567432932, 936993196, 3646704994, 432907355, 1841939820}, + {585856758, 2063562584, 515392375, 253587845, 2573622239, 2279419595, 1227078487, 888049111}, + {2060909921, 3245945997, 366630538, 764566016, 2352523732, 1179787365, 4223389076, 340811283}, + {2272606047, 3618417128, 4096637243, 2722576085, 2718591670, 1063398726, 640772112, 603118740}, + {2934230896, 1095336368, 2942677214, 4203070910, 1119929332, 1519731619, 232043554, 1362120529}, + {291977439, 430627348, 1800869742, 1575105122, 1939521807, 827604683, 931839641, 1130697950}, + {1042656261, 2684170993, 1946631764, 1444484920, 3997937281, 224086691, 1135394640, 536439892}, + {2019599588, 1113015472, 4089330626, 1411700225, 2818412124, 402265000, 335467454, 1927446568}, + {3838300103, 1988451700, 1732187190, 3014225627, 1301362706, 211889731, 1353147390, 1369875597}, + {1529171082, 3252658532, 2418309856, 474954060, 2956066290, 2506482828, 3354662178, 754040778}, + {1986340769, 315381619, 3293221419, 2978626734, 647628915, 2248739524, 3562284891, 169577962}, + {1868628908, 1741972470, 98479643, 387078354, 340245589, 1828597519, 75484111, 511402346}, + {336603216, 373903406, 2435395408, 3782563042, 355343179, 1138912427, 2650102475, 940834585}, + {1054864269, 281369431, 1787305578, 733384534, 491561496, 378406643, 933052151, 1521750603}, + {4188769536, 1861219869, 3168058383, 4030708738, 4226189499, 2790840726, 1906956211, 1280394466}, + {3906824428, 2854393663, 2536797550, 1943384825, 4283280483, 246746398, 3088750922, 621568000}, + {2837297899, 3177075042, 1620955552, 4175208390, 731646077, 3524691743, 2111536980, 1741354648}, + {3410559223, 2453668151, 520791203, 279990946, 3604117628, 900214637, 4152489879, 707615664}, + {2314421456, 970751974, 1866854800, 2432282072, 2875207586, 3255836815, 3685776196, 1599400242}, + {3972244617, 3809195626, 351163809, 2878804964, 2590386424, 4227343965, 3494416250, 430067046}, + {1141315409, 3368165794, 2820964768, 1319788886, 1786586336, 2004955541, 4134609980, 1324295193}, + {276211304, 916270534, 3525393311, 1168821709, 1189411418, 3620270279, 1847316788, 323550129}, + {2676078937, 3751535434, 47909589, 1336077814, 3256807595, 3019638048, 3781417152, 1182416378}, + {3737635220, 1918949676, 1872483754, 54094365, 1430314024, 1814840835, 3138757398, 1709580348}, + {3473036205, 1450473219, 2586461828, 794349686, 1743264827, 1856780780, 2253532995, 458799024}, + {1883563333, 2581126873, 31687584, 3725047749, 2203534786, 3918306119, 11469506, 369238990}, + {3730296594, 162467166, 3120865826, 2476708854, 2110968037, 2912634483, 1761754242, 392160815}, + {3396089298, 508820169, 1628236926, 1412316258, 269513164, 1806375354, 1174683937, 756608442}, + {115933368, 3283576533, 4068598404, 1616903173, 919085508, 3363899177, 3292031967, 380944183}, + {2767838992, 3615469355, 1457920284, 3488541790, 1136296948, 337454997, 3760778776, 1728514669}, + {2053966021, 1872397990, 459843337, 106354487, 2592233081, 3690369361, 4192146683, 905007816}, + {1233145800, 751951084, 222408922, 1069750664, 3075336012, 2956190831, 1466167786, 1828263849}, + {2531105736, 714306738, 2266824986, 21322915, 1879572721, 1520601460, 1069473537, 776511045}, + {691523326, 699623920, 910082757, 3787856847, 923707112, 3665063636, 3584907463, 1401056131}, + {604173639, 3588265712, 4197756312, 2311622250, 3552644425, 439374359, 2795529113, 1052326694}, + {2277301408, 1727915590, 1280030740, 2428288838, 1193577569, 1181434965, 391025511, 1885469015}, + {868180457, 729089507, 1460540479, 2051240080, 1109140030, 3553001444, 2731487981, 1875991002}, + {3134266539, 3474387840, 310628053, 2080523226, 2020380794, 3180979847, 2245276249, 1153360399}, + {1643164809, 3753782531, 3376812668, 2935303209, 2155372445, 31768373, 1448662010, 863081977}, + {2261570594, 1355817664, 1841872580, 3834972376, 4217262885, 3639682957, 328216565, 482359178}, + {876583476, 414995491, 4018083614, 3788006696, 395471684, 4242686783, 3170868106, 505461556}, + {1045142671, 3222689152, 457302299, 3055344129, 2570186769, 1898771515, 4291510802, 866139693}, + {3860490958, 2088115262, 1624328855, 1137457032, 2311236999, 3723469786, 3037475628, 1834911648}, + {3131035840, 4147201286, 1247516686, 550152457, 677862393, 3111695681, 521219566, 1573454403}, + {3094038316, 714492411, 2863454673, 647152608, 4249115171, 3799857918, 1458117671, 1033776350}, + {1631894807, 1692505058, 2475338256, 2855864572, 378324225, 3244364358, 3558107967, 1113052945}, + {2134497841, 3998045641, 3273454779, 269210040, 1210592281, 295091767, 2383990553, 1665596813}, + {4098400143, 2656571877, 244108068, 2980428026, 2241020377, 1018056346, 1253473879, 1039640274}, + {1567967834, 802749328, 2709749577, 876124186, 3410157909, 1740009701, 1151316794, 10051958}, + {3868180423, 295404831, 3369683985, 1409969469, 1334068458, 2272205642, 1234209257, 400360686}, + {3538124453, 729979990, 1234606059, 1995346275, 3496596972, 2569498850, 2256999019, 923280520}, + {2230747628, 4277885462, 1332112028, 2559105433, 3906488360, 612695651, 3310368401, 1221286882}, + {2396553827, 1989620823, 2272056469, 1809179457, 3489471193, 2297711031, 1190271452, 106134171}, + {3301421637, 4219202387, 452437008, 2236560517, 555379270, 439462913, 2919717764, 640198723}, + {3131919918, 2315171643, 843402303, 1595650838, 2161137862, 3204076166, 3326407554, 1437140900}, + {2101088890, 2467453907, 1147123595, 2804801642, 3384751318, 4088647319, 2044651274, 436798128}, + {90599039, 4289537224, 1184597389, 2240948405, 2112990731, 3979079747, 2692189881, 673992341}, + {205162084, 2736238921, 1971760788, 141249275, 2962997090, 3351795571, 3436043818, 1065409777}, + {618964887, 2478173237, 2791704294, 1450623960, 3372162416, 3975100275, 2739385261, 879154668}, + {2721889894, 1792783809, 2232054228, 2185530035, 4144578063, 1144924698, 1199438422, 594149366}, + {3100377933, 3824469578, 1984361129, 2734023003, 3316994182, 3402972431, 2310372310, 1514592410}, + {1963792705, 2591340980, 2220641403, 2980357521, 3700908285, 2787955978, 1739305292, 1849262846}, + {3893355724, 2423400138, 3580862269, 201506652, 503190491, 575421232, 1723848495, 790066632}, + {1442436022, 740012463, 2313193046, 3495323261, 4112180838, 1998519579, 305923464, 933883677}, + {2126137699, 1729865772, 1334096458, 149244464, 1291092625, 1328897732, 3434976450, 1443086788}, + {4269631698, 1020821438, 1519307588, 3914440386, 1176365275, 3498624896, 601008024, 525558045}, + {2844327887, 412676104, 1838872849, 1535268589, 4265193290, 3504695966, 3547027930, 156167469}, + {35100648, 3218151162, 4064484601, 4053149017, 946135516, 3057267168, 3593107412, 384124601}, + {277885344, 2139893990, 1737114662, 77766908, 542905582, 691653260, 2932886128, 903319972}, + {1488054427, 1453168794, 1168059276, 515220738, 3976419842, 303928717, 1447760713, 756486089}, + {1929981134, 1066027603, 3466613927, 4022389353, 1498804335, 1311753186, 83202479, 1179936296}, + {2855732161, 2151353128, 1581935573, 4011950707, 3328827494, 3609707009, 2251830636, 1501753673}, + {3721685215, 6845132, 1345662659, 3057266278, 1564561214, 1060022896, 2712740368, 851111270}, + {1994969057, 1425980908, 4293629736, 645612740, 3051174823, 1505746867, 3991485024, 1090765106}, + {3515837424, 3159765690, 2824208490, 1921216119, 826851207, 911297363, 427223014, 107853250}, + {3728491451, 2111398619, 219666932, 1396267370, 1886390737, 4164258787, 17242876, 53253907}, + {2799719192, 2301019144, 4054544734, 4058337935, 335927259, 2309494481, 2686162136, 1389430247}, + {2627711276, 288023961, 1117766465, 4255099071, 2726189440, 2513779978, 3844330276, 1224051213}, + {1019305009, 874832348, 3885042475, 1121596977, 3596347791, 4233942935, 2215249637, 546687122}, + {4168304610, 1255411645, 4023760851, 1278085198, 3349967009, 1286070986, 2911373655, 975283320}, + {3110409426, 1650202706, 3568323034, 3304242567, 2204177789, 3813716757, 3385558870, 51270529}, + {3339753163, 2989957275, 2836672343, 2026218139, 367604820, 3548934453, 895353869, 99513842}, + {1994659023, 1311139307, 2860659576, 426635242, 2062865645, 61528337, 2770909786, 1778236688}, + {3557113973, 1076600720, 3249509844, 1759390214, 2277321495, 1369475124, 2310857789, 225446714}, + {2729170660, 2957329929, 1806684840, 2152421168, 152805633, 4218122324, 316937165, 813661602}, + {2930419109, 3802582141, 1653054811, 302181378, 200744958, 1151863335, 4099168030, 1939175060}, + {1192792522, 944322921, 1436794512, 2469488443, 3641503116, 3357092543, 608983518, 1551680338}, + {546068686, 4293346612, 872870339, 3007877187, 4204980536, 1888846331, 3276421505, 1869937959}, + {1175839206, 529112268, 1609279626, 3389821996, 1839068732, 2067281004, 2147394977, 980155081}, + {2304723683, 4228050595, 2666295734, 800866821, 4206814032, 928484817, 2902609929, 1298860456}, + {903518199, 44434606, 1186833101, 2009907331, 1629278866, 2983793011, 1068530440, 830870585}, + {1890083213, 1149347163, 862966590, 4248479267, 2037986780, 3828310062, 2553529814, 1409115123}, + {3729574882, 1114552239, 1612115201, 296820139, 1299309570, 2170029674, 3585643971, 980486896}, + {3268869941, 353576184, 3677682530, 3656016672, 1915943401, 3838253032, 3559938602, 1474743729}, + {597454964, 3704685476, 2869565999, 2668818722, 1283636818, 2055594927, 1863868006, 1553548973}, + {1154049899, 243087279, 3706629606, 373042118, 3409932152, 3689972773, 2795732873, 72298242}, + {1423977713, 468728268, 2543797385, 968448585, 538591950, 1463954983, 4282521815, 1575503815}, + {4190928075, 2058662062, 506973710, 470648533, 151698395, 2623460284, 4199829808, 456014354}, + {2482383091, 1771047577, 3307795519, 1258194117, 133699990, 3784828695, 3092912044, 1788766530}, + {2111703791, 1544117080, 2232388940, 464954821, 2725973495, 1731778507, 1926094536, 127684750}, + {1685758950, 656297418, 3558216067, 3083166728, 1995856706, 963480842, 2454973583, 386790814}, + {1001655825, 2934724064, 823056205, 732081228, 271528098, 1978566854, 1398707245, 898723258}, + {3789688529, 1181660027, 2966335136, 244917438, 1154969320, 2236824827, 1792248795, 678196525}, + {3649113561, 2931813537, 4015188023, 2013039783, 683267095, 3993891458, 2907161241, 1248713062}, + {3633456249, 3809782918, 172741734, 1981378852, 1511321891, 3267597584, 16491768, 1608914056}, + {167585751, 3915196428, 586147943, 635186867, 4181376869, 211597652, 1416644817, 647928736}, + {3126793456, 1268067542, 556450650, 4021973165, 3167661626, 2670143917, 2898662046, 1060217202}, + {3231466979, 207268438, 244041189, 2067026282, 3667201804, 4248696350, 3546971388, 1537617357}, + {2380546282, 2703066805, 174383013, 1327464554, 4197549185, 1361942110, 2136006772, 629621933}, + {1810422529, 2395010473, 2068259315, 708084309, 2074974898, 2998882661, 1120585616, 1141256343}, + {698107073, 2808963791, 4230321838, 1394195126, 3160757935, 63394658, 2859631134, 908191802}, + {819076553, 924276624, 2351878654, 2965873760, 3046258410, 3611346648, 3077011366, 1551328952}, + {2561773411, 4100183474, 2434303551, 1174525885, 3208015631, 3955146259, 2264949967, 1019561042}, + {2263044834, 627585071, 2481069257, 589859935, 4012673452, 1350566465, 437381629, 927590350}, + {3518217097, 1644921318, 939467638, 3299678077, 2202539595, 575724233, 3782244426, 86882380}, + {1051821981, 1666578619, 3838280176, 1418645978, 337803690, 2145380230, 388790014, 1843703743}, + {398678213, 1213919650, 3309471376, 488546361, 2900857680, 940570213, 2905581944, 823358292}, + {2362194760, 4081524862, 1683352810, 1259573653, 1022712000, 2548496241, 2931780609, 874751741}, + {3914368378, 3681952936, 3733171460, 2737787909, 4113815325, 226022535, 4020385791, 1055042093}, + {998866335, 1576311551, 4188272252, 3449774599, 3688082176, 1853507437, 1364552817, 506971467}, + {2497160432, 1582891868, 2949971513, 3306645940, 3828661853, 107301560, 813037133, 1069728095}, + {2451855202, 1250236030, 3731878692, 3951175437, 2419832997, 4224544984, 4098345124, 533954064}, + {1339586844, 1152109061, 2068387510, 1200721808, 584907637, 1003299443, 22602588, 535180215}, + {1393882367, 1196567788, 1932902972, 4223876446, 2883178633, 3912325044, 1070787846, 434219495}, + {1541098225, 722728657, 2851058962, 1544071578, 2765374463, 4093335391, 2791410841, 261948485}, + {974798456, 2526394221, 723302966, 3953091809, 3062659738, 1396137478, 3843437163, 283723391}, + {2719470325, 3313824488, 2412431407, 2472785329, 4205573380, 4280762882, 2069347406, 134714492}, + {4078520353, 2085577022, 3048460931, 169097363, 1648927659, 2121329488, 4014357774, 946951058}, + {3785107783, 326715018, 3961640709, 983673692, 634502922, 2236856739, 361072949, 738312844}, + {3776447532, 2997338265, 3296443848, 2291412782, 354874981, 1592476579, 3702909261, 1322877814}, + {3239503661, 596223737, 3809805381, 2219420292, 1456905071, 3556700807, 2034410283, 1398290784}, + {3567874659, 1215611279, 174290847, 2738708075, 3518785696, 4071911130, 2131588073, 1826936379}, + {3956302934, 74833333, 1643310539, 210417382, 3256380634, 1436730707, 3280805632, 1354488797}, + {1692124872, 36672492, 761017263, 2411138201, 3356999563, 621185077, 1303986418, 1484063250}, + {3945174052, 2474936529, 3285106377, 441872968, 3340740050, 669221180, 3464742482, 551649273}, + {4140863165, 212937986, 1001986440, 1654541897, 3272788301, 3295802356, 3459767106, 224548764}, + {3507376711, 3626778267, 1940777622, 1360722840, 2249391640, 191098011, 3244493527, 399302268}, + {3432706205, 1964781834, 1373121120, 2450817960, 1835590185, 2781846560, 1939093130, 975535510}, + {3993651882, 1293015171, 2202202498, 1741843243, 2269839296, 557474261, 2131558027, 1115873733}, + {2159225717, 1649455740, 1227694869, 46685643, 2611056350, 3408880165, 2879577711, 1080510587}, + {2328526353, 3356308772, 799467633, 2261159901, 94297915, 3804061347, 1957296031, 1851161663}, + {1299021470, 1309731759, 3095491254, 2455080921, 2567798451, 100412506, 562595316, 1155256611}, + {2601680772, 3529004316, 1858487324, 3030856331, 1026195722, 1272027233, 504884475, 113208094}, + {754082893, 312380793, 1838939553, 1882903745, 3521928675, 448964731, 774924585, 1368655882}, + {1967728071, 2551705168, 2926286964, 2300369817, 1003211610, 4142613009, 49272412, 691143088}, + {3930011939, 3640090614, 4220713669, 3491142257, 3239357328, 2144036732, 1978297782, 969923164}, + {333623991, 1778107113, 496486363, 3760900707, 1213210778, 4149295583, 922163035, 1508729316}, + {2384863661, 1255721367, 3635606257, 2929438498, 3391243809, 2865226555, 3003136653, 1241083328}, + {1634734076, 2158298703, 713126082, 2042863232, 943269271, 2963456296, 3254035813, 464534961}, + {3212696103, 488954932, 2470012929, 1860342297, 3266799844, 2212809234, 2385277465, 974332084}, + {3277201655, 2310253961, 1880896598, 1144839962, 1894245956, 1055102934, 706692114, 1285170153}, + {3288536319, 2384988163, 2446216009, 864583508, 2921628868, 2999355761, 3831989354, 1158346277}, + {3134112454, 3592677581, 4294579377, 1936386053, 4190190343, 2265134286, 3002358126, 1291435793}, + {1343797465, 3276703466, 4110534459, 3470198089, 4115398864, 1537141946, 769201342, 138150434}, + {2827539664, 985939410, 3428544564, 1452672249, 345513814, 602346975, 2983097097, 1837551020}, + {340601250, 3594278418, 3644438987, 914863549, 1600118341, 1842486625, 1675422935, 112835238}, + {4037460812, 1662925878, 836552772, 120897521, 2610133436, 1803316564, 2502454429, 707476911}, + {3990782573, 3054181651, 2863080584, 1760701544, 2308951124, 297927573, 2836463218, 1353475312}, + {3844189097, 1636233078, 1996162013, 4011653202, 3892800791, 656004109, 3038958287, 96385643}, + {3086254110, 80104107, 279070571, 1055801474, 3317331389, 1461002959, 443251564, 1499564256}, + {1559373893, 3941053078, 1393493109, 836192229, 3139636634, 3111020452, 2269462416, 40862669}, + {2515655674, 1783053568, 4059478362, 3833438569, 1267260864, 3496102109, 2942551768, 1125082805}, + {1262152933, 1531717103, 2230703248, 770639596, 2705584872, 305703008, 1937142651, 1905276561}, + {1361419619, 3656794017, 1023031584, 4037711797, 2112327144, 2928342073, 3078245825, 1540440475}, + {3883317160, 1503010516, 3828904397, 2036936179, 570520732, 991921868, 1366917213, 1111215943}, + {996677676, 4006510040, 826930518, 1095654261, 980857930, 35859825, 2194942512, 1282030675}, + {2919392288, 3734626979, 3059819142, 2621632113, 4203685809, 325851819, 1699499993, 758919645}, + {1626163086, 2808512328, 233131032, 2175368810, 1364915484, 1791204613, 3752808841, 1431834140}, + {3085595962, 1662053510, 144064855, 3121316764, 2344371299, 1890632251, 2688286694, 643957739}, + {2129979379, 164104166, 939346661, 2128988582, 125967764, 4282748371, 3566335636, 1620494400}, + {1563646787, 407872866, 4287538616, 3165597891, 769792104, 2670797241, 543684169, 781806885}, + {343310878, 3401747510, 1112868269, 920256600, 3612855536, 1699127703, 197841836, 1755189520}, + {2116362287, 553918248, 4279909342, 1796621626, 2222234954, 1077423344, 4254246063, 1656399277}, + {3096495886, 2521757684, 4294081304, 1720161213, 4060496497, 3043330443, 882534116, 1130148048}, + {2322602476, 3956711370, 679394083, 2059802551, 2638797839, 1789050853, 2547478109, 498744030}, + {3713613404, 1645469641, 961949443, 2462022201, 2615468307, 360969388, 1804236279, 337147438}, + {3250379883, 349865427, 560565854, 3539716763, 977012592, 3577097755, 2011366680, 418812171}, + {2571345597, 763002277, 1403359922, 1778611434, 1973955920, 3070156835, 4074398225, 1793267788}, + {1199067682, 2152584215, 1742263061, 1972198457, 1537908430, 1285589810, 1431206541, 108031295}, + {2568707198, 1443416901, 1444889582, 142527676, 4130541398, 174118060, 2655000820, 453188203}, + {777138504, 1093927184, 3521281457, 3468818384, 43839853, 3348461807, 3797445504, 125816153}, + {3005379551, 3162612860, 3108773272, 1785213822, 333163720, 2121906484, 1230129169, 757930832}, + {900626821, 3200338209, 3575953945, 3543822330, 3465076989, 1676414035, 1580362201, 465993965}, + {4072412095, 97110064, 2717769689, 2025638617, 3126346730, 3148482070, 1218933594, 117458460}, + {659182451, 3731196777, 4202401307, 3138387738, 1503816190, 535111410, 1906677648, 1104704507}, + {404553275, 2991512828, 2954503888, 598815531, 2987115215, 1871790135, 1130073618, 1086845729}, + {1277102574, 1974025016, 1347490777, 1686309731, 2409850003, 4094538711, 1204627568, 815210005}, + {2337355303, 3991274562, 1645568638, 3082006855, 223677602, 1983872528, 1147270845, 1930503915}, + {1819105307, 3475620364, 3106975947, 2203649312, 804730297, 273993761, 697200002, 1439507462}, + {2041396564, 2122260108, 1577402730, 2844869204, 4172950789, 2442495956, 2157769500, 1711623138}, + {3135206713, 2692492085, 2589729017, 3453007250, 1337537660, 3806220679, 653405291, 1162249656}, + {3210087842, 1515705882, 1474733469, 1825247894, 3730304767, 3017140889, 2539544637, 1449253847}, + {2010093790, 1101759649, 1206426407, 2384267332, 856100632, 1694232135, 3889117576, 73635321}, + {3064866472, 3175205015, 2278552899, 310640213, 903513885, 2685999319, 2781999149, 493094093}, + {3258895217, 2226064979, 4043311058, 2289116357, 1366123863, 2548703581, 3439771945, 21400036}, + {520427106, 3457052911, 2422650456, 2064586832, 831276473, 3876761230, 2729310634, 1551691162}, + {4065514394, 3668695382, 921611947, 1199479909, 1738074637, 714389582, 415482966, 1145024203}, + {2882275492, 130417631, 246152776, 1749919725, 3798195774, 2218489227, 2265994100, 1684919587}, + {1804386784, 2711253855, 2798250736, 2157432381, 1580589463, 2422780570, 1307394003, 39589379}, + {3791873272, 3200786236, 2105930778, 1940874897, 1700759111, 1244778128, 4186760981, 1415479313}, + {616605156, 314053278, 176626840, 3479774459, 701354757, 1273235049, 712094712, 678164991}, + {707772781, 1895469792, 783216100, 2813270045, 1694865574, 3428766084, 398611011, 121008526}, + {2226850900, 2916138248, 1818241145, 1803120860, 1706583887, 2411268065, 3423514205, 1905053806}, + {1899052035, 3902637075, 1983026562, 2691521186, 3477865964, 1683965215, 1171151901, 1540465735}, + {1220092661, 724993075, 3320053615, 2939627802, 606044758, 308883326, 3146137073, 322166579}, + {3613363599, 3816022355, 3606450117, 3722583389, 1865338254, 3442356258, 255147427, 1410898523}, + {3238645747, 673883927, 3043051530, 240124367, 1158104968, 2511773070, 3984165217, 1578177518}, + {2221484863, 4175331686, 3642386104, 3741091172, 3662460768, 2422330144, 2702732636, 660028919}, + {1213148910, 1321886159, 2524403488, 1740548942, 1764653515, 2440002743, 3976098942, 1398707813}, + {641470395, 2638637644, 3018053696, 4414181, 2104628172, 2724668972, 3973051209, 485478822}, + {4135501486, 1703233428, 1978216138, 1749152727, 3052717291, 717963996, 597352958, 775493798}, + {95044143, 505758316, 3092060964, 4240393049, 83875168, 3142471987, 182474871, 1793159494}, + {2351991687, 2705668014, 2568280047, 1869207689, 215980416, 1679241506, 1402393431, 1681852608}, + {1691080297, 1814938808, 2588859430, 818018691, 3530266161, 1052252291, 3305622919, 1110576344}, + {595258066, 3786253682, 2698512578, 2776064296, 545487197, 1094803122, 3655008034, 1131712870}, + {3351195980, 837908732, 984975828, 3593950282, 2905762722, 1146100664, 2133374398, 564365667}, + {2099279470, 2386971721, 4225835629, 2993902852, 1632111459, 191259238, 3742107246, 163324241}, + {2925985781, 4105723700, 550276286, 251664946, 712378252, 888918494, 698786649, 1334330152}, + {3641796883, 3151847119, 1079730350, 3652768752, 3414176548, 359047330, 2427148148, 357911434}, + {3146659229, 206619044, 2759526501, 2875038778, 613935786, 1836379034, 288454942, 1273201834}, + {3295933400, 451176497, 3175559236, 3772839435, 152274261, 3191943921, 1074069979, 1313790294}, + {1508656320, 1024574241, 642095408, 2120719814, 1201898503, 536932161, 3345693483, 1332914592}, + {3608804893, 2196949748, 825068440, 230486040, 2559780231, 3179025345, 2798190599, 1732643554}, + {895427224, 3409014082, 3317420063, 3232725696, 528702173, 4163197819, 3112527539, 831984934}, + {818279135, 1999578576, 3847172875, 118532177, 1695257930, 2178372680, 3191835917, 682653893}, + {2180589637, 3362570373, 4175940137, 2811950965, 851709622, 2478979998, 4034681551, 843361118}, + {861082571, 3601042269, 2327997264, 4106399701, 2698007850, 3272183799, 2563553031, 1622399096}, + {443201739, 1155826620, 2945645810, 135330825, 1195082697, 2101058619, 517796407, 1580743830}, + {2718616444, 2062926428, 2663644156, 2604883409, 3752908729, 2256977695, 2565276528, 646956489}, + {46903149, 1104206020, 965235062, 1303484010, 4132705050, 3346035239, 3505666469, 665090607}, + {2347198407, 846656139, 3083153045, 3324357555, 445364334, 927272745, 1124108148, 1156636978}, + {3551999843, 257544911, 4043532401, 246250306, 4133733213, 3864692703, 3972079428, 876522195}, + {2975619183, 714735743, 2540833387, 2356265823, 2951350470, 1252747126, 2223044197, 757559092}, + {3689455935, 2133300686, 872350392, 1911582393, 1400154244, 2506832808, 676892892, 1918463657}, + {317455908, 2143415808, 2446696143, 1305482801, 708391843, 1184401536, 1391692741, 1784733527}, + {3694535745, 2178401055, 3166826997, 3331018845, 4233000190, 2965003654, 2610869518, 1461737086}, + {2007220456, 3574151085, 1681121983, 2890504588, 274722671, 2170869388, 1693980833, 1525005551}, + {572617780, 70041471, 1347266085, 2035029329, 3653837028, 2445089308, 672187013, 1469136914}, + {295528247, 2064338613, 1078285, 3140364406, 2907080238, 2311083557, 1347946238, 136642145}, + {806952804, 3899023972, 918853362, 2561712047, 2298592111, 1233722621, 3553550440, 929603250}, + {1556896813, 922619579, 2214621471, 109844777, 2597368618, 3688596714, 478121916, 1154847538}, + {458007547, 787367505, 2016187047, 1617043470, 2547605544, 295171506, 623695521, 1010398301}, + {3945165212, 2756234297, 814654751, 3035038796, 2267569843, 2765280936, 2069392964, 536612738}, + {2917688319, 1139748424, 2056578004, 1509432555, 2356183838, 322286942, 2664348175, 737819391}, + {584912954, 3924153903, 1907461245, 1638552358, 479025516, 1660104603, 1683551070, 986850086}, + {1959449279, 3425950697, 983574422, 3332318595, 1767839164, 2739266494, 3461001049, 637658284}, + {185729824, 2331339656, 351838749, 3943393477, 3835678717, 2478175506, 1954520881, 984444986}, + {590237735, 3665847004, 973139226, 2784158462, 3638360454, 3248066917, 1527057112, 1641210354}, + {2469053175, 363692737, 3213514373, 1995614248, 575613886, 1216561589, 3390891189, 1859082854}, + {132060084, 735120524, 1172601163, 2601712793, 855577571, 2496523367, 2503586389, 1384982966}, + {3924331367, 1072029249, 3281893426, 2602890310, 3933671317, 3300278963, 1879292003, 1188350901}, + {1448555789, 1813410174, 69396746, 3189425272, 1435839458, 1037839942, 2528762149, 1681229404}, + {1822399921, 2373696630, 904052872, 3736818967, 2578198736, 2081473891, 3777047932, 1115559966}, + {3205168653, 2516313727, 2278081261, 1046559712, 199070449, 2316330025, 4027468396, 309873065}, + {343175302, 1015937276, 3886765243, 3460604530, 189191898, 2475550205, 1868779137, 741587361}, + {4164267148, 3636407589, 4121764772, 2562040328, 2277185369, 2036967757, 2920803554, 1447856781}, + {3620150589, 422327850, 1406551763, 1283226008, 1569143452, 1990757291, 2787079490, 296355912}, + {1391709112, 1080145303, 2323598007, 3275974714, 88278907, 3518379077, 1337559237, 1255445639}, + {4275339894, 3322615722, 999283110, 1989717727, 1477813347, 1179408600, 1466745409, 63958603}, + {1277725917, 2101040050, 680369244, 2535367010, 2974767919, 654895876, 469345148, 1500315112}, + {2528424683, 4167991709, 3634900079, 55704049, 2660431252, 2533333990, 1932222636, 314211625}, + {1783796209, 3609077861, 70799647, 3914820519, 2319212425, 2300800010, 2791687943, 1042957831}, + {3229303627, 910583782, 1699685518, 2988365064, 185678658, 3679714984, 407710973, 157892038}, + {1674563392, 1113938227, 1844274794, 610973744, 1907632275, 37519742, 1112685383, 317664339}, + {1901328849, 3600318894, 3176905104, 1653520306, 1818114488, 1255550361, 3319403406, 410956562}, + {2426360843, 3958563182, 1863692255, 3578570124, 3138604421, 3465890595, 444217223, 528115737}, + {3653004784, 587783495, 201775166, 2619132540, 571166040, 645569384, 3624910502, 1907606014}, + {3335214179, 2791837193, 898802077, 2210767583, 763854621, 3099361680, 2105977296, 502573995}, + {1204542705, 563169188, 2700126602, 990948180, 44769650, 796838214, 402014501, 862418036}, + {4113127602, 3741558586, 4186328399, 1880260080, 3679390061, 2747504178, 1855859080, 873006051}, + {738335101, 4220331321, 1805075826, 1065837971, 1583360563, 1464632119, 1968758785, 1886618515}, + {4115738822, 108027759, 2727023273, 1141807570, 843729891, 1866436380, 3856941416, 303047471}, + {2306264057, 2648212836, 3512013199, 1103152762, 3334950965, 2346418059, 2430049418, 30080596}, + {1078766527, 1798361910, 2626698784, 267714642, 984522271, 1022386452, 1674922673, 1910155330}, + {1616825592, 1945077100, 1150159901, 1497862606, 4042172965, 3231481282, 2036340514, 1317098071}, + {2156732362, 3379714616, 1728904211, 2339864593, 1802170126, 879913207, 1136039357, 1554914218}, + {2904810444, 3231433818, 3786299212, 3395663219, 3421054289, 406888281, 496261084, 1771882149}, + {3158203605, 2430818428, 690193887, 1345599056, 325655972, 2647423094, 766199000, 218982045}, + {1253573745, 826935657, 3389411821, 250054154, 3778910062, 2514957377, 277842428, 591931439}, + {2377680509, 200406991, 3759891274, 1363638715, 380459403, 828242027, 3092989623, 1043467571}, + {3449229138, 1683275024, 3348129495, 2677979436, 1598758371, 2574781389, 1903502888, 1923380978}, + {612328668, 233658390, 3298458635, 4135799756, 2247499649, 3230823710, 2594518304, 1078415221}, + {4160123091, 2747089867, 2077828114, 3415411483, 1826203596, 1871857149, 3423281998, 1792535122}, + {3797513554, 849835695, 695064438, 3616751, 2757593438, 2216096749, 958896798, 292287196}, + {3058446076, 312611589, 1816753274, 2282637676, 688912590, 1286715011, 1926522103, 1620175524}, + {894099059, 2107843670, 90473574, 3926214847, 4017500613, 4139625748, 2778386277, 372531327}, + {3846620731, 2763565824, 1030849161, 3722564613, 106204236, 2805800579, 3014963911, 853884}, + {868221812, 3028462589, 2517200059, 1075873131, 1615227464, 2664965296, 2247435687, 1906137263}, + {2654093673, 3630004545, 2692274895, 329814301, 777045888, 335182861, 880204165, 997587158}, + {1409898785, 454440005, 835803608, 2480543853, 2615513691, 1910727765, 1444293241, 1291515947}, + {2620404582, 2681104512, 577971677, 2965486069, 4142277540, 256720853, 2301809509, 101466900}, + {212544155, 2394283965, 2159102230, 2678426734, 1586397050, 419075079, 3549138113, 1626929079}, + {463368724, 4278800077, 121678579, 2475242346, 1075897497, 3448179485, 3389870091, 1674361358}, + {2820904246, 2653418934, 3156021479, 4166342315, 2226907614, 945883236, 3517889316, 60977301}, + {2436766805, 1527470861, 1810902218, 416693232, 1212243710, 1416544789, 2783104366, 19354758}, + {991989696, 412809894, 1982078502, 3747155739, 4020106180, 1837552348, 1447138523, 1715800927}, + {1075706868, 161768018, 2216419444, 426189788, 3357390596, 4217099003, 1143091946, 472182473}, + {3860851145, 2532419037, 3698472955, 2973528973, 4178960474, 1907810146, 1408428832, 503121091}, + {2727851231, 1367048062, 497509216, 4152209745, 995818348, 475140479, 731605077, 1579818914}, + {2179349385, 1117826292, 3610720939, 1691972160, 1356890112, 3391300549, 2085388023, 1372466110}, + {2756710446, 838203440, 723748394, 3072790575, 1911372460, 1761174169, 4273114822, 1242532062}, + {105315934, 3368428170, 4093227436, 2745723472, 3932937476, 3890246976, 2522133394, 73971670}, + {1740686611, 2321466238, 361569435, 2543179637, 587598216, 549084142, 1031482446, 774553065}, + {3597839683, 57524535, 2874482764, 3754865206, 2526324979, 3949589364, 1429624884, 1814988441}, + {2603622200, 2231461860, 1290377540, 466149376, 3609788353, 176455017, 2277484576, 1786778976}, + {1458938343, 2114729081, 1997838023, 3174455686, 2085831993, 3374355967, 3537949622, 992228618}, + {3801779046, 3454149421, 3303188603, 4014012970, 3354143289, 4217252326, 2969552754, 1483525923}, + {3774677938, 673773056, 3893908267, 560635561, 1973082266, 2589866112, 226449903, 294394931}, + {454183250, 622354922, 651231551, 1149744170, 1960948252, 3895479982, 2449209143, 77483583}, + {435983115, 2725880327, 4239281529, 717778529, 3567046934, 4113576062, 1152721395, 220366372}, + {1567730961, 3200793646, 3984661793, 2380777305, 241425703, 644542002, 517867517, 1120930189}, + {4091558388, 1504202833, 2939319260, 589777927, 3633462270, 3968642639, 689433942, 875828199}, + {1169240439, 4023749275, 505276587, 739412219, 3339493980, 3341973266, 2883802497, 655174094}, + {653130810, 3172296535, 1265004384, 1761056218, 1377804587, 2256121563, 3698659750, 1121919585}, + {2570353741, 858136811, 519813245, 2971965305, 4139218340, 1004901999, 703947824, 369752264}, + {3381271355, 2247712112, 3804029242, 782729804, 2369527314, 551659921, 1984380788, 1656806692}, + {2483781, 2949392667, 1189020459, 3250966616, 1609642161, 3238126398, 1343829017, 1734006467}, + {1679694226, 261045875, 3453919182, 2843519068, 2537910343, 3612747165, 1179484153, 1287910372}, + {3886108056, 175774613, 2779904680, 2520791721, 3633264823, 3088890516, 3171420597, 1708838777}, + {3386670873, 1643376616, 3638160836, 1032312649, 1924528658, 2431707134, 1887411524, 1176129208}, + {478740092, 2667125643, 955815359, 403657233, 3654480077, 1892273735, 3030473747, 1279153681}, + {622951477, 1836709941, 3471753927, 3071411759, 4188645204, 1304782838, 3750264876, 1758729028}, + {4212312802, 628660758, 2220396913, 1560335019, 2896351016, 1319825091, 729312637, 953649256}, + {1364715321, 2936585404, 234408968, 127446159, 3397653597, 2651255026, 1375085118, 477471465}, + {2710853830, 4127478579, 548357138, 1735304330, 940446512, 524478964, 1336122623, 1066821318}, + {3766588288, 3896370209, 4259952803, 1806904855, 1150798304, 839549686, 2248481031, 744112689}, + {3535284327, 2858794953, 4005765276, 4006887989, 4268762433, 865196190, 1300862889, 1438797811}, + {3708161311, 3748350761, 4293107851, 698313269, 3580412612, 3841566940, 1969404956, 87829299}, + {1114079039, 2705437913, 2247757466, 1236417109, 666902814, 2764318532, 1575386375, 826633222}, + {1531503202, 2409957678, 3480592789, 3467513812, 2289114260, 861670570, 511341934, 1201345311}, + {1425706430, 384883443, 2290846815, 3750349539, 1923434778, 4100874906, 3392509321, 651517790}, + {3245117770, 2027239361, 3516685052, 44771713, 952538903, 707901494, 3459655826, 1358880906}, + {3014646133, 1382455837, 301906613, 2861083361, 3798150560, 1525636082, 3355352515, 1380869124}, + {2204471000, 2799721575, 3323912709, 2939200089, 2253676579, 356366083, 4081702668, 585547243}, + {1316673410, 3380281859, 3230332878, 4194572788, 2206662744, 1322453485, 1307687604, 1150806082}, + {3955184554, 645093054, 831272469, 23113738, 3907323230, 2872544861, 2903951922, 1893786979}, + {529324033, 1253431892, 3657061952, 3430133189, 3671708123, 830427670, 1473910747, 944197919}, + {1455215999, 4249915366, 4018045192, 3421291903, 3662922044, 706558904, 2004583833, 1547170663}, + {4198919386, 1532592548, 2092400188, 1771011495, 3557514147, 830582067, 461093970, 1094845418}, + {3965857203, 1420349242, 2987400806, 2945269948, 671844914, 3279978780, 1590577495, 639959158}, + {2631953136, 966542016, 3262035856, 1188067231, 3010568258, 1383826099, 1647451951, 1639080332}, + {3299877462, 1758037487, 2469543141, 3382570198, 994409143, 4140306916, 2582473918, 1941425240}, + {506847456, 3774871840, 3765619629, 2737265395, 316216967, 1190876074, 815012758, 1775191240}, + {4095284326, 2761904818, 1041189772, 1912084700, 2188976054, 1676045795, 1037577760, 1174766087}, + {2571802401, 2064159379, 316472485, 503083643, 3742128083, 2292502277, 2433289289, 1470620533}, + {4181236707, 509323179, 2721130214, 566343647, 4104777532, 706723607, 2480670733, 1828144610}, + {1640870646, 2376869775, 980887916, 31304715, 3545694899, 200038752, 1267622125, 276262512}, + {4067333496, 1584572330, 3120245423, 2623765026, 3701101375, 1890454410, 280796595, 1024452380}, + {3958353326, 959843138, 15603207, 1087037058, 3994847078, 2894723453, 1362201293, 1295117}, + {2118278824, 3346376444, 980226751, 1938993189, 1602753043, 3986146446, 278357737, 942012195}, + {2360445498, 2597333442, 3755528813, 4051076016, 486209576, 4047827810, 3870271271, 698260411}, + {916641695, 112871463, 1375728632, 2831375159, 2719057054, 4283639709, 1774419313, 1677517378}, + {3664708795, 628966728, 874461269, 700513291, 3863195757, 2868687306, 643241788, 564680329}, + {4291584944, 2064143542, 3566192754, 3631582215, 570188429, 4209781945, 443734049, 614091722}, + {3069069469, 4088751549, 2560655243, 1102920214, 1339056880, 392177957, 3775403563, 103351416}, + {1978670480, 559380286, 2129781335, 2279781585, 4003913740, 876155266, 2017319059, 1022114268}, + {3399580107, 347995548, 2135010153, 3534108079, 787528257, 1650095916, 3554222643, 1324395676}, + {1390715225, 2542846513, 1920125832, 2773259984, 2392093563, 1474125935, 4111746319, 1575570254}, + {1414379708, 2194547540, 2136366108, 565823792, 1182541891, 1437696296, 257811543, 1693556452}, + {1769627574, 441318884, 4275471352, 1225305659, 1963440374, 274686265, 1327693569, 1307282634}, + {3962887763, 1274112501, 953701428, 2657890, 3640225032, 3337301175, 774716314, 517547689}, + {3510127426, 1825054124, 2742951927, 4088849944, 1296092018, 3517145103, 3716014278, 1523220247}, + {3437557293, 1335307854, 676263679, 695629073, 2517666650, 3149455292, 754188451, 1109133164}, + {317104587, 186367548, 3618930041, 2323515208, 1126571958, 2173439049, 1794524348, 821270044}, + {533940706, 3306560820, 485111606, 1110490136, 1691045017, 3916338163, 3834353242, 1723009909}, + {1522776964, 3152860531, 3864900579, 2708980912, 2825208934, 1853581305, 1871784249, 469623239}, + {629470938, 1180959567, 1143967216, 1676663938, 2033440702, 3103439248, 2848818350, 496529218}, + {1668440079, 4106247086, 2846673337, 3427488558, 1573684099, 4244651853, 1787924212, 817752849}, + {959928167, 928638112, 1947092966, 2492403678, 2077619418, 3613569215, 340218837, 56292221}, + {2244563087, 330850889, 2446107519, 3032863607, 2246847974, 2330504123, 313250997, 530346501}, + {439888186, 742276209, 1518997317, 3329443255, 1360660101, 2763295008, 3055099045, 796611931}, + {4078233972, 1775514946, 3012527500, 1624374123, 1763430831, 3187441037, 2656504011, 1143866783}, + {4170586740, 2928594946, 807370988, 3196828704, 3715200989, 1785545342, 3815991981, 658702201}, + {1271692642, 2524794605, 3689714695, 4151774701, 1782222951, 1122104646, 2941535594, 363885131}, + {2568395099, 4253432442, 2472440390, 1010827, 893028692, 3450729936, 1433786871, 1420562842}, + {630239660, 96497969, 1490196774, 309046841, 500989448, 3404356406, 2504164279, 1047360987}, + {3371938549, 1995338116, 3896838008, 3249643108, 2016034697, 2491786944, 3453332073, 1648368279}, + {2098156814, 504493683, 931717539, 1540724668, 2432965706, 2117704370, 3103558563, 779673588}, + {3868282192, 3896728543, 1641758980, 792476101, 525433967, 3110670462, 1421269288, 220176096}, + {2620564797, 2625122866, 2915425220, 449957382, 590824145, 1679968989, 1189560671, 475681185}, + {1145173448, 1709038200, 2861938934, 136339323, 2826961300, 2388635777, 3420608538, 1906665320}, + {2226474591, 1560261858, 1348225088, 2080577216, 2560699060, 3334381882, 1677043917, 1446031159}, + {680198261, 97982608, 4128915912, 1447797031, 771294684, 2205531897, 3837933208, 1140608019}, + {4019845348, 2780954667, 3666790153, 3049812530, 3794754023, 4139691515, 3642937410, 528170768}, + {2343737800, 299425856, 57372951, 3568588149, 138336219, 3929318227, 355883645, 1448303394}, + {1470819193, 1057233400, 3059279523, 1435491520, 1728705269, 1738009488, 1813922736, 1131035466}, + {3714998176, 946792583, 4091301620, 3103561972, 4212945922, 1306901742, 1677747550, 367756959}, + {4290802170, 1442844728, 3568664803, 3109703799, 3712289323, 1103961612, 3884581427, 133043288}, + {4224797577, 4017336829, 1982824538, 2932060029, 1275876134, 1916379898, 954817337, 217724987}, + {1350006586, 3593424936, 3946802048, 2123450605, 3937687709, 263753548, 3659737972, 1248416168}, + {2855243089, 1749694247, 1893516017, 3063597958, 3761834467, 3107333500, 2567222286, 64174050}, + {3827701681, 597847911, 2402298108, 990634306, 1910494682, 109389870, 792962182, 1860229547}, + {2351596159, 3821622679, 1524787952, 337588373, 3176196813, 2745214911, 3056565596, 749848187}, + {3441934269, 4009580521, 149973158, 2525521624, 2590519299, 243406408, 779815363, 1035336820}, + {3764884153, 3423196148, 3177819966, 271477310, 2889561349, 1456167120, 3528525874, 1934020755}, + {235163986, 1049028213, 3108747509, 1292619731, 2559491669, 108486495, 3749672101, 453280944}, + {2556948087, 3100298378, 310322620, 380246317, 2957239317, 4222409270, 3409034915, 48863427}, + {1308029599, 3679151940, 2272575199, 3613989467, 4082056, 4148009605, 2464036802, 1479759781}, + {1251181642, 2621737112, 2750492153, 54284847, 4204112325, 3130067309, 94545115, 13374201}, + {4025181974, 211296560, 792666534, 710536069, 3920141993, 1567548062, 1375284379, 557289795}, + {2546287581, 1957917631, 1467535727, 3441969759, 1000142232, 2773766896, 2421953538, 716288211}, + {1930992706, 2960485970, 1418111476, 1220565458, 2414507866, 1025251115, 3753551968, 19632370}, + {963902123, 3681818036, 2924382299, 2887776846, 2144883791, 3946320878, 480635001, 1912874928}, + {2468766879, 778346573, 1474514048, 4121315751, 1512180969, 904418434, 1136251375, 1319914909}, + {2501603373, 3538565524, 284824834, 1451336583, 1293267847, 3170116086, 3254403159, 719213547}, + {2474812956, 77386015, 1931765089, 3098132001, 420441098, 2456483837, 1422426453, 641318198}, + {3644137427, 4287985815, 394664607, 1233537396, 421825453, 651742535, 387125474, 662823303}, + {4212030094, 1122465335, 1624022888, 3610548406, 353634777, 2552519412, 3801211635, 307132084}, + {1812732959, 3053502143, 2631811210, 2586361940, 1962179385, 3483070162, 4155788085, 1550838787}, + {1003031331, 1302317500, 2617903797, 2734240305, 989510592, 4089046563, 2821236351, 414611967}, + {1484639241, 726371698, 2901761099, 1076175113, 1726435871, 1077578729, 1890799589, 1909509214}, + {3700769167, 1752821084, 513320038, 1307836100, 578628329, 2406730051, 2995527212, 837313727}, + {122300200, 2966018197, 2685843456, 753118815, 1457197440, 957992679, 1985405656, 883670266}, + {1406210640, 2351047507, 3269280518, 3490188984, 4142280886, 3025376962, 3963346097, 994860097}, + {2508852230, 2631286947, 258546584, 3864880274, 1835714337, 2164344383, 266610560, 1805588083}, + {1399945673, 4184106804, 789724757, 1079151694, 2482798800, 3333268030, 1316021989, 1255596472}, + {803951911, 2989032923, 3770186442, 1016864736, 2468907700, 2913064459, 1185103480, 636741796}, + {1231369251, 4135232566, 2733627621, 833380325, 29278262, 1838736816, 282517621, 838375152}, + {1317232431, 1026204235, 1068913493, 407775287, 3334561628, 795893931, 4235491726, 1615001328}, + {553856711, 971855917, 3933094274, 2073072684, 3392281711, 2796369744, 2729547217, 1071905806}, + {1887240778, 16049011, 1301729181, 3042530676, 936796797, 1994942578, 2223529819, 647936271}, + {2704422729, 1675170249, 3552773842, 3396498429, 3400652126, 3505392417, 761033286, 124643040}, + {1889942262, 3227942591, 2292339076, 3457625997, 2126114223, 2180302021, 284476605, 44924534}, + {141984372, 2951276745, 35118693, 593555826, 3272461528, 3950614747, 3504508970, 885326384}, + {2305593269, 453447852, 4198398217, 3289740015, 3148298721, 2531766886, 1665567516, 31461126}, + {2961594960, 2531642714, 1639520373, 2621506607, 2179476118, 2885320184, 1723902844, 1018079279}, + {2946288140, 3272340504, 3540734279, 4197505952, 3276858996, 1346238140, 4252445552, 353887417}, + {1372501495, 824753971, 860420574, 2514019588, 3560899823, 4247421862, 4088400720, 1657596004}, + {3547216933, 213080010, 1327670122, 612432652, 1467988350, 1684096876, 1071303132, 628211428}, + {3090209150, 1759114382, 3187913922, 3152697956, 1184367906, 1160970938, 2392528111, 800739539}, + {621315835, 1089798189, 674639458, 3890294633, 2648105579, 3553900581, 4112938456, 1490904470}, + {3765350890, 759301313, 1861950123, 4059907539, 1733775257, 2250513344, 1658744551, 1153214746}, + {1170138394, 1137625749, 2897796390, 3416594251, 391570540, 4019828978, 3251064953, 816833270}, + {1231309804, 3780640118, 2711898201, 3491043249, 3439535076, 4207721813, 2305741506, 1028659493}, + {1253871575, 2948351374, 1135039949, 1734394040, 142360803, 3446688949, 4049427930, 944770588}, + {1941541664, 410182229, 946427815, 1738300148, 1710743312, 726482062, 635454546, 357241893}, + {1020511136, 2100021722, 3298155473, 2108863026, 3280566308, 1760065744, 3252469090, 1429387071}, + {1217925349, 3637413438, 1551351736, 423738310, 2990537205, 3220442810, 3931295343, 906723644}, + {972280401, 2780016393, 3173872770, 1356012643, 2461239415, 4162849661, 3861310034, 1831469808}, + {1389822966, 2952619570, 4129543154, 1090053600, 2373269118, 1012273040, 3572998746, 735743939}, + {1860915644, 4058588150, 3985807003, 3283071968, 1648222944, 3385052127, 3497619137, 385683862}, + {884383025, 3552407191, 3469324339, 3465009688, 3813476498, 3729803703, 3537345067, 234943732}, + {555727800, 626558964, 1415912308, 2973550418, 2237386952, 1244544807, 4213281194, 809110235}, + {2588631464, 469863063, 3737851331, 837541418, 1967059868, 2427883562, 3072041960, 960796293}, + {1207065556, 1770203065, 3879628650, 973162225, 2309503005, 2047327014, 3465067208, 336588005}, + {2785167982, 2995223308, 72923062, 974823923, 1628617410, 4097389313, 542947051, 539026017}, + {2236323182, 3282563504, 1224066908, 3047814769, 1295019432, 438565816, 619226031, 223436864}, + {786918017, 2048377421, 589200564, 4079431549, 590547127, 1581163706, 2544682669, 52267199}, + {2655976805, 2376527940, 3402099846, 3970317208, 3576646612, 1791464619, 1974470062, 1726193434}, + {7025984, 1951598457, 3431147596, 3998422323, 2645714763, 1438112310, 3971388058, 1607757765}, + {518311553, 3785088372, 1131104604, 1849385860, 1783473879, 2100330799, 2095617988, 1865596046}, + {1681239869, 1999613256, 1685314892, 3568687870, 2223144938, 1715202611, 2718808748, 1010745768}, + {3996328427, 801631366, 806151229, 1284360371, 3127991234, 4258117530, 2210082045, 1193672326}, + {3906397586, 3290474371, 1675512984, 4178526889, 2952985253, 3592646253, 1572272369, 508740262}, + {4126315652, 3786312147, 3699923125, 3674356834, 1459586774, 373249965, 2436297855, 1091365949}}; for (int i = 0; i < number_of_blocks; i++) { assert((out_ptr[i] == expected[i])); - - #ifdef DEBUG + +#ifdef DEBUG std::cout << out_ptr[i] << std::endl; - #endif +#endif } printf("Expected output matches\n"); diff --git a/icicle/appUtils/vector_manipulation/ve_mod_mult.cuh b/icicle/appUtils/vector_manipulation/ve_mod_mult.cuh index 236ad007..36859c49 100644 --- a/icicle/appUtils/vector_manipulation/ve_mod_mult.cuh +++ b/icicle/appUtils/vector_manipulation/ve_mod_mult.cuh @@ -1,9 +1,8 @@ #ifndef VEC_MULT #define VEC_MULT #pragma once -#include #include - +#include #define MAX_THREADS_PER_BLOCK 256 @@ -13,128 +12,124 @@ * @param n size of arr. * @param n_inv scalar of type S (scalar). */ - template < typename E, typename S > __global__ void template_normalize_kernel(E * arr, uint32_t n, S scalar) { - int tid = (blockIdx.x * blockDim.x) + threadIdx.x; - if (tid < n) { - arr[tid] = scalar * arr[tid]; - } - } +template +__global__ void template_normalize_kernel(E* arr, uint32_t n, S scalar) +{ + int tid = (blockIdx.x * blockDim.x) + threadIdx.x; + if (tid < n) { arr[tid] = scalar * arr[tid]; } +} // TODO: headers for prototypes and .c .cpp .cu files for implementations template -__global__ void vectorModMult(S *scalar_vec, E *element_vec, E *result, size_t n_elments) +__global__ void vectorModMult(S* scalar_vec, E* element_vec, E* result, size_t n_elments) { - int tid = blockDim.x * blockIdx.x + threadIdx.x; - if (tid < n_elments) - { - result[tid] = scalar_vec[tid] * element_vec[tid]; - } + int tid = blockDim.x * blockIdx.x + threadIdx.x; + if (tid < n_elments) { result[tid] = scalar_vec[tid] * element_vec[tid]; } } template -int vector_mod_mult(S *vec_a, E *vec_b, E *result, size_t n_elments, cudaStream_t stream) // TODO: in place so no need for third result vector +int vector_mod_mult(S* vec_a, E* vec_b, E* result, size_t n_elments, cudaStream_t stream) // TODO: in place so no need + // for third result vector { - // Set the grid and block dimensions - int num_blocks = (int)ceil((float)n_elments / MAX_THREADS_PER_BLOCK); - int threads_per_block = MAX_THREADS_PER_BLOCK; + // Set the grid and block dimensions + int num_blocks = (int)ceil((float)n_elments / MAX_THREADS_PER_BLOCK); + int threads_per_block = MAX_THREADS_PER_BLOCK; - // Allocate memory on the device for the input vectors, the output vector, and the modulus - S *d_vec_a; - E *d_vec_b, *d_result; - cudaMallocAsync(&d_vec_a, n_elments * sizeof(S), stream); - cudaMallocAsync(&d_vec_b, n_elments * sizeof(E), stream); - cudaMallocAsync(&d_result, n_elments * sizeof(E), stream); + // Allocate memory on the device for the input vectors, the output vector, and the modulus + S* d_vec_a; + E *d_vec_b, *d_result; + cudaMallocAsync(&d_vec_a, n_elments * sizeof(S), stream); + cudaMallocAsync(&d_vec_b, n_elments * sizeof(E), stream); + cudaMallocAsync(&d_result, n_elments * sizeof(E), stream); - // Copy the input vectors and the modulus from the host to the device - cudaMemcpyAsync(d_vec_a, vec_a, n_elments * sizeof(S), cudaMemcpyHostToDevice, stream); - cudaMemcpyAsync(d_vec_b, vec_b, n_elments * sizeof(E), cudaMemcpyHostToDevice, stream); + // Copy the input vectors and the modulus from the host to the device + cudaMemcpyAsync(d_vec_a, vec_a, n_elments * sizeof(S), cudaMemcpyHostToDevice, stream); + cudaMemcpyAsync(d_vec_b, vec_b, n_elments * sizeof(E), cudaMemcpyHostToDevice, stream); - // Call the kernel to perform element-wise modular multiplication - vectorModMult<<>>(d_vec_a, d_vec_b, d_result, n_elments); + // Call the kernel to perform element-wise modular multiplication + vectorModMult<<>>(d_vec_a, d_vec_b, d_result, n_elments); - cudaMemcpyAsync(result, d_result, n_elments * sizeof(E), cudaMemcpyDeviceToHost, stream); + cudaMemcpyAsync(result, d_result, n_elments * sizeof(E), cudaMemcpyDeviceToHost, stream); - cudaFreeAsync(d_vec_a, stream); - cudaFreeAsync(d_vec_b, stream); - cudaFreeAsync(d_result, stream); + cudaFreeAsync(d_vec_a, stream); + cudaFreeAsync(d_vec_b, stream); + cudaFreeAsync(d_result, stream); - cudaStreamSynchronize(stream); - return 0; + cudaStreamSynchronize(stream); + return 0; } template -int vector_mod_mult_device(S *d_vec_a, E *d_vec_b, E *d_result, size_t n_elments) // TODO: in place so no need for third result vector +int vector_mod_mult_device( + S* d_vec_a, E* d_vec_b, E* d_result, size_t n_elments) // TODO: in place so no need for third result vector { - // Set the grid and block dimensions - int num_blocks = (int)ceil((float)n_elments / MAX_THREADS_PER_BLOCK); - int threads_per_block = MAX_THREADS_PER_BLOCK; + // Set the grid and block dimensions + int num_blocks = (int)ceil((float)n_elments / MAX_THREADS_PER_BLOCK); + int threads_per_block = MAX_THREADS_PER_BLOCK; - // Call the kernel to perform element-wise modular multiplication - vectorModMult<<>>(d_vec_a, d_vec_b, d_result, n_elments); - return 0; + // Call the kernel to perform element-wise modular multiplication + vectorModMult<<>>(d_vec_a, d_vec_b, d_result, n_elments); + return 0; } template -__global__ void batchVectorMult(S *scalar_vec, E *element_vec, unsigned n_scalars, unsigned batch_size) +__global__ void batchVectorMult(S* scalar_vec, E* element_vec, unsigned n_scalars, unsigned batch_size) { - int tid = blockDim.x * blockIdx.x + threadIdx.x; - if (tid < n_scalars * batch_size) - { - int scalar_id = tid % n_scalars; - element_vec[tid] = scalar_vec[scalar_id] * element_vec[tid]; - } + int tid = blockDim.x * blockIdx.x + threadIdx.x; + if (tid < n_scalars * batch_size) { + int scalar_id = tid % n_scalars; + element_vec[tid] = scalar_vec[scalar_id] * element_vec[tid]; + } } template -int batch_vector_mult(S *scalar_vec, E *element_vec, unsigned n_scalars, unsigned batch_size, cudaStream_t stream) +int batch_vector_mult(S* scalar_vec, E* element_vec, unsigned n_scalars, unsigned batch_size, cudaStream_t stream) { - // Set the grid and block dimensions - int NUM_THREADS = MAX_THREADS_PER_BLOCK; - int NUM_BLOCKS = (n_scalars * batch_size + NUM_THREADS - 1) / NUM_THREADS; - batchVectorMult<<>>(scalar_vec, element_vec, n_scalars, batch_size); - return 0; + // Set the grid and block dimensions + int NUM_THREADS = MAX_THREADS_PER_BLOCK; + int NUM_BLOCKS = (n_scalars * batch_size + NUM_THREADS - 1) / NUM_THREADS; + batchVectorMult<<>>(scalar_vec, element_vec, n_scalars, batch_size); + return 0; } template -__global__ void matrixVectorMult(E *matrix_elements, E *vector_elements, E *result, size_t dim) +__global__ void matrixVectorMult(E* matrix_elements, E* vector_elements, E* result, size_t dim) { - - int tid = blockDim.x * blockIdx.x + threadIdx.x; - if (tid < dim) - { - result[tid] = E::zero(); - for (int i = 0; i < dim; i++) - result[tid] = result[tid] + matrix_elements[tid * dim + i] * vector_elements[i]; - } + int tid = blockDim.x * blockIdx.x + threadIdx.x; + if (tid < dim) { + result[tid] = E::zero(); + for (int i = 0; i < dim; i++) + result[tid] = result[tid] + matrix_elements[tid * dim + i] * vector_elements[i]; + } } template -int matrix_mod_mult(E *matrix_elements, E *vector_elements, E *result, size_t dim, cudaStream_t stream) +int matrix_mod_mult(E* matrix_elements, E* vector_elements, E* result, size_t dim, cudaStream_t stream) { - // Set the grid and block dimensions - int num_blocks = (int)ceil((float)dim / MAX_THREADS_PER_BLOCK); - int threads_per_block = MAX_THREADS_PER_BLOCK; + // Set the grid and block dimensions + int num_blocks = (int)ceil((float)dim / MAX_THREADS_PER_BLOCK); + int threads_per_block = MAX_THREADS_PER_BLOCK; - // Allocate memory on the device for the input vectors, the output vector, and the modulus - E *d_matrix, *d_vector, *d_result; - cudaMallocAsync(&d_matrix, (dim * dim) * sizeof(E), stream); - cudaMallocAsync(&d_vector, dim * sizeof(E), stream); - cudaMallocAsync(&d_result, dim * sizeof(E), stream); + // Allocate memory on the device for the input vectors, the output vector, and the modulus + E *d_matrix, *d_vector, *d_result; + cudaMallocAsync(&d_matrix, (dim * dim) * sizeof(E), stream); + cudaMallocAsync(&d_vector, dim * sizeof(E), stream); + cudaMallocAsync(&d_result, dim * sizeof(E), stream); - // Copy the input vectors and the modulus from the host to the device - cudaMemcpyAsync(d_matrix, matrix_elements, (dim * dim) * sizeof(E), cudaMemcpyHostToDevice, stream); - cudaMemcpyAsync(d_vector, vector_elements, dim * sizeof(E), cudaMemcpyHostToDevice, stream); + // Copy the input vectors and the modulus from the host to the device + cudaMemcpyAsync(d_matrix, matrix_elements, (dim * dim) * sizeof(E), cudaMemcpyHostToDevice, stream); + cudaMemcpyAsync(d_vector, vector_elements, dim * sizeof(E), cudaMemcpyHostToDevice, stream); - // Call the kernel to perform element-wise modular multiplication - matrixVectorMult<<>>(d_matrix, d_vector, d_result, dim); + // Call the kernel to perform element-wise modular multiplication + matrixVectorMult<<>>(d_matrix, d_vector, d_result, dim); - cudaMemcpyAsync(result, d_result, dim * sizeof(E), cudaMemcpyDeviceToHost, stream); + cudaMemcpyAsync(result, d_result, dim * sizeof(E), cudaMemcpyDeviceToHost, stream); - cudaFreeAsync(d_matrix, stream); - cudaFreeAsync(d_vector, stream); - cudaFreeAsync(d_result, stream); + cudaFreeAsync(d_matrix, stream); + cudaFreeAsync(d_vector, stream); + cudaFreeAsync(d_result, stream); - cudaStreamSynchronize(stream); - return 0; + cudaStreamSynchronize(stream); + return 0; } #endif \ No newline at end of file diff --git a/icicle/curves/bls12_377/curve_config.cuh b/icicle/curves/bls12_377/curve_config.cuh index 367fd061..9b1a95f0 100644 --- a/icicle/curves/bls12_377/curve_config.cuh +++ b/icicle/curves/bls12_377/curve_config.cuh @@ -9,17 +9,17 @@ #include "params.cuh" namespace BLS12_377 { - typedef Field scalar_field_t; - typedef scalar_field_t scalar_t; - typedef Field point_field_t; - static constexpr point_field_t b = point_field_t{ PARAMS_BLS12_377::weierstrass_b }; - typedef Projective projective_t; - typedef Affine affine_t; - #if defined(G2_DEFINED) - typedef ExtensionField g2_point_field_t; - static constexpr g2_point_field_t b_g2 = g2_point_field_t{ point_field_t{ PARAMS_BLS12_377::weierstrass_b_g2_re }, - point_field_t{ PARAMS_BLS12_377::weierstrass_b_g2_im }}; - typedef Projective g2_projective_t; - typedef Affine g2_affine_t; - #endif -} \ No newline at end of file + typedef Field scalar_field_t; + typedef scalar_field_t scalar_t; + typedef Field point_field_t; + static constexpr point_field_t b = point_field_t{PARAMS_BLS12_377::weierstrass_b}; + typedef Projective projective_t; + typedef Affine affine_t; +#if defined(G2_DEFINED) + typedef ExtensionField g2_point_field_t; + static constexpr g2_point_field_t b_g2 = g2_point_field_t{ + point_field_t{PARAMS_BLS12_377::weierstrass_b_g2_re}, point_field_t{PARAMS_BLS12_377::weierstrass_b_g2_im}}; + typedef Projective g2_projective_t; + typedef Affine g2_affine_t; +#endif +} // namespace BLS12_377 \ No newline at end of file diff --git a/icicle/curves/bls12_377/lde.cu b/icicle/curves/bls12_377/lde.cu index c43a258b..0aefa367 100644 --- a/icicle/curves/bls12_377/lde.cu +++ b/icicle/curves/bls12_377/lde.cu @@ -1,567 +1,612 @@ #ifndef _BLS12_377_LDE #define _BLS12_377_LDE -#include #include "../../appUtils/ntt/lde.cu" #include "../../appUtils/ntt/ntt.cuh" #include "../../appUtils/vector_manipulation/ve_mod_mult.cuh" -#include "curve_config.cuh" #include "../../utils/mont.cuh" +#include "curve_config.cuh" +#include - - -extern "C" BLS12_377::scalar_t* build_domain_cuda_bls12_377(uint32_t domain_size, uint32_t logn, bool inverse, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" BLS12_377::scalar_t* build_domain_cuda_bls12_377( + uint32_t domain_size, uint32_t logn, bool inverse, size_t device_id = 0, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - if (inverse) { - return fill_twiddle_factors_array(domain_size, BLS12_377::scalar_t::omega_inv(logn), stream); - } else { - return fill_twiddle_factors_array(domain_size, BLS12_377::scalar_t::omega(logn), stream); - } - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return nullptr; + try { + cudaStreamCreate(&stream); + if (inverse) { + return fill_twiddle_factors_array(domain_size, BLS12_377::scalar_t::omega_inv(logn), stream); + } else { + return fill_twiddle_factors_array(domain_size, BLS12_377::scalar_t::omega(logn), stream); } + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return nullptr; + } } -extern "C" int ntt_cuda_bls12_377(BLS12_377::scalar_t *arr, uint32_t n, bool inverse, Decimation decimation, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int ntt_cuda_bls12_377( + BLS12_377::scalar_t* arr, + uint32_t n, + bool inverse, + Decimation decimation, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return ntt_end2end_template(arr, n, inverse, stream); // TODO: pass device_id - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - - return -1; - } + try { + cudaStreamCreate(&stream); + return ntt_end2end_template( + arr, n, inverse, stream); // TODO: pass device_id + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + + return -1; + } } -extern "C" int ecntt_cuda_bls12_377(BLS12_377::projective_t *arr, uint32_t n, bool inverse, Decimation decimation, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int ecntt_cuda_bls12_377( + BLS12_377::projective_t* arr, + uint32_t n, + bool inverse, + Decimation decimation, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return ntt_end2end_template(arr, n, inverse, stream); // TODO: pass device_id - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return ntt_end2end_template( + arr, n, inverse, stream); // TODO: pass device_id + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int ntt_batch_cuda_bls12_377(BLS12_377::scalar_t *arr, uint32_t arr_size, uint32_t batch_size, bool inverse, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int ntt_batch_cuda_bls12_377( + BLS12_377::scalar_t* arr, + uint32_t arr_size, + uint32_t batch_size, + bool inverse, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return ntt_end2end_batch_template(arr, arr_size, batch_size, inverse, stream); // TODO: pass device_id - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return ntt_end2end_batch_template( + arr, arr_size, batch_size, inverse, stream); // TODO: pass device_id + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int ecntt_batch_cuda_bls12_377(BLS12_377::projective_t *arr, uint32_t arr_size, uint32_t batch_size, bool inverse, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int ecntt_batch_cuda_bls12_377( + BLS12_377::projective_t* arr, + uint32_t arr_size, + uint32_t batch_size, + bool inverse, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return ntt_end2end_batch_template(arr, arr_size, batch_size, inverse, stream); // TODO: pass device_id - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return ntt_end2end_batch_template( + arr, arr_size, batch_size, inverse, stream); // TODO: pass device_id + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int interpolate_scalars_cuda_bls12_377(BLS12_377::scalar_t* d_out, BLS12_377::scalar_t *d_evaluations, BLS12_377::scalar_t *d_domain, unsigned n, unsigned device_id = 0, cudaStream_t stream = 0) +extern "C" int interpolate_scalars_cuda_bls12_377( + BLS12_377::scalar_t* d_out, + BLS12_377::scalar_t* d_evaluations, + BLS12_377::scalar_t* d_domain, + unsigned n, + unsigned device_id = 0, + cudaStream_t stream = 0) { - try - { - BLS12_377::scalar_t* _null = nullptr; - return interpolate(d_out, d_evaluations, d_domain, n, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + BLS12_377::scalar_t* _null = nullptr; + return interpolate(d_out, d_evaluations, d_domain, n, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int interpolate_scalars_batch_cuda_bls12_377(BLS12_377::scalar_t* d_out, BLS12_377::scalar_t* d_evaluations, BLS12_377::scalar_t* d_domain, unsigned n, - unsigned batch_size, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int interpolate_scalars_batch_cuda_bls12_377( + BLS12_377::scalar_t* d_out, + BLS12_377::scalar_t* d_evaluations, + BLS12_377::scalar_t* d_domain, + unsigned n, + unsigned batch_size, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - BLS12_377::scalar_t* _null = nullptr; - cudaStreamCreate(&stream); - return interpolate_batch(d_out, d_evaluations, d_domain, n, batch_size, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + BLS12_377::scalar_t* _null = nullptr; + cudaStreamCreate(&stream); + return interpolate_batch(d_out, d_evaluations, d_domain, n, batch_size, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int interpolate_scalars_on_coset_cuda_bls12_377(BLS12_377::scalar_t* d_out, BLS12_377::scalar_t *d_evaluations, BLS12_377::scalar_t *d_domain, unsigned n, BLS12_377::scalar_t *coset_powers, unsigned device_id = 0, cudaStream_t stream = 0) +extern "C" int interpolate_scalars_on_coset_cuda_bls12_377( + BLS12_377::scalar_t* d_out, + BLS12_377::scalar_t* d_evaluations, + BLS12_377::scalar_t* d_domain, + unsigned n, + BLS12_377::scalar_t* coset_powers, + unsigned device_id = 0, + cudaStream_t stream = 0) { - try - { - return interpolate(d_out, d_evaluations, d_domain, n, true, coset_powers, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + return interpolate(d_out, d_evaluations, d_domain, n, true, coset_powers, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int interpolate_scalars_batch_on_coset_cuda_bls12_377(BLS12_377::scalar_t* d_out, BLS12_377::scalar_t* d_evaluations, BLS12_377::scalar_t* d_domain, unsigned n, - unsigned batch_size, BLS12_377::scalar_t* coset_powers, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int interpolate_scalars_batch_on_coset_cuda_bls12_377( + BLS12_377::scalar_t* d_out, + BLS12_377::scalar_t* d_evaluations, + BLS12_377::scalar_t* d_domain, + unsigned n, + unsigned batch_size, + BLS12_377::scalar_t* coset_powers, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return interpolate_batch(d_out, d_evaluations, d_domain, n, batch_size, true, coset_powers, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return interpolate_batch(d_out, d_evaluations, d_domain, n, batch_size, true, coset_powers, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int interpolate_points_cuda_bls12_377(BLS12_377::projective_t* d_out, BLS12_377::projective_t *d_evaluations, BLS12_377::scalar_t *d_domain, unsigned n, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int interpolate_points_cuda_bls12_377( + BLS12_377::projective_t* d_out, + BLS12_377::projective_t* d_evaluations, + BLS12_377::scalar_t* d_domain, + unsigned n, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - BLS12_377::scalar_t* _null = nullptr; - return interpolate(d_out, d_evaluations, d_domain, n, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + BLS12_377::scalar_t* _null = nullptr; + return interpolate(d_out, d_evaluations, d_domain, n, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int interpolate_points_batch_cuda_bls12_377(BLS12_377::projective_t* d_out, BLS12_377::projective_t* d_evaluations, BLS12_377::scalar_t* d_domain, - unsigned n, unsigned batch_size, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int interpolate_points_batch_cuda_bls12_377( + BLS12_377::projective_t* d_out, + BLS12_377::projective_t* d_evaluations, + BLS12_377::scalar_t* d_domain, + unsigned n, + unsigned batch_size, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - BLS12_377::scalar_t* _null = nullptr; - cudaStreamCreate(&stream); - return interpolate_batch(d_out, d_evaluations, d_domain, n, batch_size, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + BLS12_377::scalar_t* _null = nullptr; + cudaStreamCreate(&stream); + return interpolate_batch(d_out, d_evaluations, d_domain, n, batch_size, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int evaluate_scalars_cuda_bls12_377(BLS12_377::scalar_t* d_out, BLS12_377::scalar_t *d_coefficients, BLS12_377::scalar_t *d_domain, - unsigned domain_size, unsigned n, unsigned device_id = 0, cudaStream_t stream = 0) +extern "C" int evaluate_scalars_cuda_bls12_377( + BLS12_377::scalar_t* d_out, + BLS12_377::scalar_t* d_coefficients, + BLS12_377::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned device_id = 0, + cudaStream_t stream = 0) { - try - { - BLS12_377::scalar_t* _null = nullptr; - cudaStreamCreate(&stream); - return evaluate(d_out, d_coefficients, d_domain, domain_size, n, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + BLS12_377::scalar_t* _null = nullptr; + cudaStreamCreate(&stream); + return evaluate(d_out, d_coefficients, d_domain, domain_size, n, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int evaluate_scalars_batch_cuda_bls12_377(BLS12_377::scalar_t* d_out, BLS12_377::scalar_t* d_coefficients, BLS12_377::scalar_t* d_domain, unsigned domain_size, - unsigned n, unsigned batch_size, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int evaluate_scalars_batch_cuda_bls12_377( + BLS12_377::scalar_t* d_out, + BLS12_377::scalar_t* d_coefficients, + BLS12_377::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - BLS12_377::scalar_t* _null = nullptr; - cudaStreamCreate(&stream); - return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + BLS12_377::scalar_t* _null = nullptr; + cudaStreamCreate(&stream); + return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int evaluate_points_cuda_bls12_377(BLS12_377::projective_t* d_out, BLS12_377::projective_t *d_coefficients, BLS12_377::scalar_t *d_domain, - unsigned domain_size, unsigned n, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int evaluate_points_cuda_bls12_377( + BLS12_377::projective_t* d_out, + BLS12_377::projective_t* d_coefficients, + BLS12_377::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - BLS12_377::scalar_t* _null = nullptr; - cudaStreamCreate(&stream); - return evaluate(d_out, d_coefficients, d_domain, domain_size, n, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + BLS12_377::scalar_t* _null = nullptr; + cudaStreamCreate(&stream); + return evaluate(d_out, d_coefficients, d_domain, domain_size, n, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int evaluate_points_batch_cuda_bls12_377(BLS12_377::projective_t* d_out, BLS12_377::projective_t* d_coefficients, BLS12_377::scalar_t* d_domain, unsigned domain_size, - unsigned n, unsigned batch_size, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int evaluate_points_batch_cuda_bls12_377( + BLS12_377::projective_t* d_out, + BLS12_377::projective_t* d_coefficients, + BLS12_377::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - BLS12_377::scalar_t* _null = nullptr; - cudaStreamCreate(&stream); - return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + BLS12_377::scalar_t* _null = nullptr; + cudaStreamCreate(&stream); + return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int evaluate_scalars_on_coset_cuda_bls12_377(BLS12_377::scalar_t* d_out, BLS12_377::scalar_t *d_coefficients, BLS12_377::scalar_t *d_domain, unsigned domain_size, - unsigned n, BLS12_377::scalar_t *coset_powers, unsigned device_id = 0, cudaStream_t stream = 0) +extern "C" int evaluate_scalars_on_coset_cuda_bls12_377( + BLS12_377::scalar_t* d_out, + BLS12_377::scalar_t* d_coefficients, + BLS12_377::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + BLS12_377::scalar_t* coset_powers, + unsigned device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return evaluate(d_out, d_coefficients, d_domain, domain_size, n, true, coset_powers, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return evaluate(d_out, d_coefficients, d_domain, domain_size, n, true, coset_powers, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int evaluate_scalars_on_coset_batch_cuda_bls12_377(BLS12_377::scalar_t* d_out, BLS12_377::scalar_t* d_coefficients, BLS12_377::scalar_t* d_domain, unsigned domain_size, - unsigned n, unsigned batch_size, BLS12_377::scalar_t *coset_powers, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int evaluate_scalars_on_coset_batch_cuda_bls12_377( + BLS12_377::scalar_t* d_out, + BLS12_377::scalar_t* d_coefficients, + BLS12_377::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + BLS12_377::scalar_t* coset_powers, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, true, coset_powers, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, true, coset_powers, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int evaluate_points_on_coset_cuda_bls12_377(BLS12_377::projective_t* d_out, BLS12_377::projective_t *d_coefficients, BLS12_377::scalar_t *d_domain, unsigned domain_size, - unsigned n, BLS12_377::scalar_t *coset_powers, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int evaluate_points_on_coset_cuda_bls12_377( + BLS12_377::projective_t* d_out, + BLS12_377::projective_t* d_coefficients, + BLS12_377::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + BLS12_377::scalar_t* coset_powers, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return evaluate(d_out, d_coefficients, d_domain, domain_size, n, true, coset_powers, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return evaluate(d_out, d_coefficients, d_domain, domain_size, n, true, coset_powers, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int evaluate_points_on_coset_batch_cuda_bls12_377(BLS12_377::projective_t* d_out, BLS12_377::projective_t* d_coefficients, BLS12_377::scalar_t* d_domain, unsigned domain_size, - unsigned n, unsigned batch_size, BLS12_377::scalar_t *coset_powers, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int evaluate_points_on_coset_batch_cuda_bls12_377( + BLS12_377::projective_t* d_out, + BLS12_377::projective_t* d_coefficients, + BLS12_377::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + BLS12_377::scalar_t* coset_powers, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, true, coset_powers, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, true, coset_powers, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int ntt_inplace_batch_cuda_bls12_377(BLS12_377::scalar_t* d_inout, BLS12_377::scalar_t* d_twiddles, - unsigned n, unsigned batch_size, bool inverse, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int ntt_inplace_batch_cuda_bls12_377( + BLS12_377::scalar_t* d_inout, + BLS12_377::scalar_t* d_twiddles, + unsigned n, + unsigned batch_size, + bool inverse, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - - cudaStreamCreate(&stream); - BLS12_377::scalar_t* _null = nullptr; - ntt_inplace_batch_template(d_inout, d_twiddles, n, batch_size, inverse, false, _null, stream, true); - return CUDA_SUCCESS; //TODO: we should implement this https://leimao.github.io/blog/Proper-CUDA-Error-Checking/ - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + BLS12_377::scalar_t* _null = nullptr; + ntt_inplace_batch_template(d_inout, d_twiddles, n, batch_size, inverse, false, _null, stream, true); + return CUDA_SUCCESS; // TODO: we should implement this https://leimao.github.io/blog/Proper-CUDA-Error-Checking/ + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int ntt_inplace_coset_batch_cuda_bls12_377(BLS12_377::scalar_t* d_inout, BLS12_377::scalar_t* d_twiddles, - unsigned n, unsigned batch_size, bool inverse, bool is_coset, BLS12_377::scalar_t* coset, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int ntt_inplace_coset_batch_cuda_bls12_377( + BLS12_377::scalar_t* d_inout, + BLS12_377::scalar_t* d_twiddles, + unsigned n, + unsigned batch_size, + bool inverse, + bool is_coset, + BLS12_377::scalar_t* coset, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - ntt_inplace_batch_template(d_inout, d_twiddles, n, batch_size, inverse, is_coset, coset, stream, true); - return CUDA_SUCCESS; //TODO: we should implement this https://leimao.github.io/blog/Proper-CUDA-Error-Checking/ - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + ntt_inplace_batch_template(d_inout, d_twiddles, n, batch_size, inverse, is_coset, coset, stream, true); + return CUDA_SUCCESS; // TODO: we should implement this https://leimao.github.io/blog/Proper-CUDA-Error-Checking/ + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int sub_scalars_cuda_bls12_377(BLS12_377::scalar_t* d_out, BLS12_377::scalar_t* d_in1, BLS12_377::scalar_t* d_in2, unsigned n, cudaStream_t stream = 0) +extern "C" int sub_scalars_cuda_bls12_377( + BLS12_377::scalar_t* d_out, + BLS12_377::scalar_t* d_in1, + BLS12_377::scalar_t* d_in2, + unsigned n, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return sub_polys(d_out, d_in1, d_in2, n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return sub_polys(d_out, d_in1, d_in2, n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int add_scalars_cuda_bls12_377(BLS12_377::scalar_t* d_out, BLS12_377::scalar_t* d_in1, BLS12_377::scalar_t* d_in2, unsigned n, cudaStream_t stream = 0) +extern "C" int add_scalars_cuda_bls12_377( + BLS12_377::scalar_t* d_out, + BLS12_377::scalar_t* d_in1, + BLS12_377::scalar_t* d_in2, + unsigned n, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return add_polys(d_out, d_in1, d_in2, n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return add_polys(d_out, d_in1, d_in2, n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } extern "C" int to_montgomery_scalars_cuda_bls12_377(BLS12_377::scalar_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return to_montgomery(d_inout, n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return to_montgomery(d_inout, n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } extern "C" int from_montgomery_scalars_cuda_bls12_377(BLS12_377::scalar_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return from_montgomery(d_inout, n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return from_montgomery(d_inout, n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int to_montgomery_proj_points_cuda_bls12_377(BLS12_377::projective_t* d_inout, unsigned n, cudaStream_t stream = 0) +extern "C" int +to_montgomery_proj_points_cuda_bls12_377(BLS12_377::projective_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return to_montgomery((BLS12_377::point_field_t*)d_inout, 3 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return to_montgomery((BLS12_377::point_field_t*)d_inout, 3 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int from_montgomery_proj_points_cuda_bls12_377(BLS12_377::projective_t* d_inout, unsigned n, cudaStream_t stream = 0) +extern "C" int +from_montgomery_proj_points_cuda_bls12_377(BLS12_377::projective_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return from_montgomery((BLS12_377::point_field_t*)d_inout, 3 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return from_montgomery((BLS12_377::point_field_t*)d_inout, 3 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int to_montgomery_aff_points_cuda_bls12_377(BLS12_377::affine_t* d_inout, unsigned n, cudaStream_t stream = 0) +extern "C" int +to_montgomery_aff_points_cuda_bls12_377(BLS12_377::affine_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return to_montgomery((BLS12_377::point_field_t*)d_inout, 2 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return to_montgomery((BLS12_377::point_field_t*)d_inout, 2 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int from_montgomery_aff_points_cuda_bls12_377(BLS12_377::affine_t* d_inout, unsigned n, cudaStream_t stream = 0) +extern "C" int +from_montgomery_aff_points_cuda_bls12_377(BLS12_377::affine_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return from_montgomery((BLS12_377::point_field_t*)d_inout, 2 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return from_montgomery((BLS12_377::point_field_t*)d_inout, 2 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } #if defined(G2_DEFINED) -extern "C" int to_montgomery_proj_points_g2_cuda_bls12_377(BLS12_377::g2_projective_t* d_inout, unsigned n, cudaStream_t stream = 0) +extern "C" int +to_montgomery_proj_points_g2_cuda_bls12_377(BLS12_377::g2_projective_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return to_montgomery((BLS12_377::point_field_t*)d_inout, 6 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return to_montgomery((BLS12_377::point_field_t*)d_inout, 6 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int from_montgomery_proj_points_g2_cuda_bls12_377(BLS12_377::g2_projective_t* d_inout, unsigned n, cudaStream_t stream = 0) +extern "C" int +from_montgomery_proj_points_g2_cuda_bls12_377(BLS12_377::g2_projective_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return from_montgomery((BLS12_377::point_field_t*)d_inout, 6 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return from_montgomery((BLS12_377::point_field_t*)d_inout, 6 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int to_montgomery_aff_points_g2_cuda_bls12_377(BLS12_377::g2_affine_t* d_inout, unsigned n, cudaStream_t stream = 0) +extern "C" int +to_montgomery_aff_points_g2_cuda_bls12_377(BLS12_377::g2_affine_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return to_montgomery((BLS12_377::point_field_t*)d_inout, 4 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return to_montgomery((BLS12_377::point_field_t*)d_inout, 4 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int from_montgomery_aff_points_g2_cuda_bls12_377(BLS12_377::g2_affine_t* d_inout, unsigned n, cudaStream_t stream = 0) +extern "C" int +from_montgomery_aff_points_g2_cuda_bls12_377(BLS12_377::g2_affine_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return from_montgomery((BLS12_377::point_field_t*)d_inout, 4 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return from_montgomery((BLS12_377::point_field_t*)d_inout, 4 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } #endif -extern "C" int reverse_order_scalars_cuda_bls12_377(BLS12_377::scalar_t* arr, int n, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int +reverse_order_scalars_cuda_bls12_377(BLS12_377::scalar_t* arr, int n, size_t device_id = 0, cudaStream_t stream = 0) { - try - { - uint32_t logn = uint32_t(log(n) / log(2)); - cudaStreamCreate(&stream); - reverse_order(arr, n, logn, stream); - cudaStreamSynchronize(stream); - return 0; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + uint32_t logn = uint32_t(log(n) / log(2)); + cudaStreamCreate(&stream); + reverse_order(arr, n, logn, stream); + cudaStreamSynchronize(stream); + return 0; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int reverse_order_scalars_batch_cuda_bls12_377(BLS12_377::scalar_t* arr, int n, int batch_size, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int reverse_order_scalars_batch_cuda_bls12_377( + BLS12_377::scalar_t* arr, int n, int batch_size, size_t device_id = 0, cudaStream_t stream = 0) { - try - { - uint32_t logn = uint32_t(log(n) / log(2)); - cudaStreamCreate(&stream); - reverse_order_batch(arr, n, logn, batch_size, stream); - return 0; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + uint32_t logn = uint32_t(log(n) / log(2)); + cudaStreamCreate(&stream); + reverse_order_batch(arr, n, logn, batch_size, stream); + return 0; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int reverse_order_points_cuda_bls12_377(BLS12_377::projective_t* arr, int n, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int +reverse_order_points_cuda_bls12_377(BLS12_377::projective_t* arr, int n, size_t device_id = 0, cudaStream_t stream = 0) { - try - { - uint32_t logn = uint32_t(log(n) / log(2)); - cudaStreamCreate(&stream); - reverse_order(arr, n, logn, stream); - return 0; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + uint32_t logn = uint32_t(log(n) / log(2)); + cudaStreamCreate(&stream); + reverse_order(arr, n, logn, stream); + return 0; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int reverse_order_points_batch_cuda_bls12_377(BLS12_377::projective_t* arr, int n, int batch_size, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int reverse_order_points_batch_cuda_bls12_377( + BLS12_377::projective_t* arr, int n, int batch_size, size_t device_id = 0, cudaStream_t stream = 0) { - try - { - uint32_t logn = uint32_t(log(n) / log(2)); - cudaStreamCreate(&stream); - reverse_order_batch(arr, n, logn, batch_size, stream); - return 0; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + uint32_t logn = uint32_t(log(n) / log(2)); + cudaStreamCreate(&stream); + reverse_order_batch(arr, n, logn, batch_size, stream); + return 0; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } #endif diff --git a/icicle/curves/bls12_377/msm.cu b/icicle/curves/bls12_377/msm.cu index 5a52a157..ba204219 100644 --- a/icicle/curves/bls12_377/msm.cu +++ b/icicle/curves/bls12_377/msm.cu @@ -1,186 +1,216 @@ #ifndef _BLS12_377_MSM #define _BLS12_377_MSM #include "../../appUtils/msm/msm.cu" -#include -#include #include "curve_config.cuh" +#include +#include - -extern "C" -int msm_cuda_bls12_377(BLS12_377::projective_t *out, BLS12_377::affine_t points[], - BLS12_377::scalar_t scalars[], size_t count, unsigned large_bucket_factor, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int msm_cuda_bls12_377( + BLS12_377::projective_t* out, + BLS12_377::affine_t points[], + BLS12_377::scalar_t scalars[], + size_t count, + unsigned large_bucket_factor, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - large_msm(scalars, points, count, out, false, false, large_bucket_factor, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + large_msm( + scalars, points, count, out, false, false, large_bucket_factor, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int msm_batch_cuda_bls12_377(BLS12_377::projective_t* out, BLS12_377::affine_t points[], - BLS12_377::scalar_t scalars[], size_t batch_size, size_t msm_size, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int msm_batch_cuda_bls12_377( + BLS12_377::projective_t* out, + BLS12_377::affine_t points[], + BLS12_377::scalar_t scalars[], + size_t batch_size, + size_t msm_size, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - batched_large_msm(scalars, points, batch_size, msm_size, out, false, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + batched_large_msm( + scalars, points, batch_size, msm_size, out, false, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } /** * Commit to a polynomial using the MSM. - * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or points. + * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or + * points. * @param d_out Ouptut point to write the result to. * @param d_scalars Scalars for the MSM. Must be on device. * @param d_points Points for the MSM. Must be on device. * @param count Length of `d_scalars` and `d_points` arrays (they should have equal length). */ -extern "C" -int commit_cuda_bls12_377(BLS12_377::projective_t* d_out, BLS12_377::scalar_t* d_scalars, BLS12_377::affine_t* d_points, size_t count, unsigned large_bucket_factor, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int commit_cuda_bls12_377( + BLS12_377::projective_t* d_out, + BLS12_377::scalar_t* d_scalars, + BLS12_377::affine_t* d_points, + size_t count, + unsigned large_bucket_factor, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - large_msm(d_scalars, d_points, count, d_out, true, false, large_bucket_factor, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + large_msm(d_scalars, d_points, count, d_out, true, false, large_bucket_factor, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } - + /** * Commit to a batch of polynomials using the MSM. - * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or points. + * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or + * points. * @param d_out Ouptut point to write the results to. * @param d_scalars Scalars for the MSMs of all polynomials. Must be on device. * @param d_points Points for the MSMs. Must be on device. It is assumed that this set of bases is used for each MSM. * @param count Length of `d_points` array, `d_scalar` has length `count` * `batch_size`. * @param batch_size Size of the batch. */ -extern "C" -int commit_batch_cuda_bls12_377(BLS12_377::projective_t* d_out, BLS12_377::scalar_t* d_scalars, BLS12_377::affine_t* d_points, size_t count, size_t batch_size, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int commit_batch_cuda_bls12_377( + BLS12_377::projective_t* d_out, + BLS12_377::scalar_t* d_scalars, + BLS12_377::affine_t* d_points, + size_t count, + size_t batch_size, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - batched_large_msm(d_scalars, d_points, batch_size, count, d_out, true, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + batched_large_msm(d_scalars, d_points, batch_size, count, d_out, true, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } #if defined(G2_DEFINED) -extern "C" -int msm_g2_cuda_bls12_377(BLS12_377::g2_projective_t *out, BLS12_377::g2_affine_t points[], - BLS12_377::scalar_t scalars[], size_t count, unsigned large_bucket_factor, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int msm_g2_cuda_bls12_377( + BLS12_377::g2_projective_t* out, + BLS12_377::g2_affine_t points[], + BLS12_377::scalar_t scalars[], + size_t count, + unsigned large_bucket_factor, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - large_msm(scalars, points, count, out, false, false, large_bucket_factor, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + large_msm( + scalars, points, count, out, false, false, large_bucket_factor, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int msm_batch_g2_cuda_bls12_377(BLS12_377::g2_projective_t* out, BLS12_377::g2_affine_t points[], - BLS12_377::scalar_t scalars[], size_t batch_size, size_t msm_size, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int msm_batch_g2_cuda_bls12_377( + BLS12_377::g2_projective_t* out, + BLS12_377::g2_affine_t points[], + BLS12_377::scalar_t scalars[], + size_t batch_size, + size_t msm_size, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - batched_large_msm(scalars, points, batch_size, msm_size, out, false, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + batched_large_msm( + scalars, points, batch_size, msm_size, out, false, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } /** * Commit to a polynomial using the MSM in G2 group. - * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or points. + * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or + * points. * @param d_out Ouptut G2 point to write the result to. * @param d_scalars Scalars for the MSM. Must be on device. * @param d_points G2 affine points for the MSM. Must be on device. * @param count Length of `d_scalars` and `d_points` arrays (they should have equal length). */ -extern "C" -int commit_g2_cuda_bls12_377(BLS12_377::g2_projective_t* d_out, BLS12_377::scalar_t* d_scalars, BLS12_377::g2_affine_t* d_points, size_t count, unsigned large_bucket_factor, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int commit_g2_cuda_bls12_377( + BLS12_377::g2_projective_t* d_out, + BLS12_377::scalar_t* d_scalars, + BLS12_377::g2_affine_t* d_points, + size_t count, + unsigned large_bucket_factor, + size_t device_id = 0, + cudaStream_t stream = 0) { - // TODO: use device_id when working with multiple devices - (void)device_id; - try - { - cudaStreamCreate(&stream); - large_msm(d_scalars, d_points, count, d_out, true, false, large_bucket_factor, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + // TODO: use device_id when working with multiple devices + (void)device_id; + try { + cudaStreamCreate(&stream); + large_msm(d_scalars, d_points, count, d_out, true, false, large_bucket_factor, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } - - /** - * Commit to a batch of polynomials using the MSM. - * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or points. - * @param d_out Ouptut G2 point to write the results to. - * @param d_scalars Scalars for the MSMs of all polynomials. Must be on device. - * @param d_points G2 affine points for the MSMs. Must be on device. It is assumed that this set of bases is used for each MSM. - * @param count Length of `d_points` array, `d_scalar` has length `count` * `batch_size`. - * @param batch_size Size of the batch. - */ -extern "C" -int commit_batch_g2_cuda_bls12_377(BLS12_377::g2_projective_t* d_out, BLS12_377::scalar_t* d_scalars, BLS12_377::g2_affine_t* d_points, size_t count, size_t batch_size, size_t device_id = 0, cudaStream_t stream = 0) + +/** + * Commit to a batch of polynomials using the MSM. + * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or + * points. + * @param d_out Ouptut G2 point to write the results to. + * @param d_scalars Scalars for the MSMs of all polynomials. Must be on device. + * @param d_points G2 affine points for the MSMs. Must be on device. It is assumed that this set of bases is used for + * each MSM. + * @param count Length of `d_points` array, `d_scalar` has length `count` * `batch_size`. + * @param batch_size Size of the batch. + */ +extern "C" int commit_batch_g2_cuda_bls12_377( + BLS12_377::g2_projective_t* d_out, + BLS12_377::scalar_t* d_scalars, + BLS12_377::g2_affine_t* d_points, + size_t count, + size_t batch_size, + size_t device_id = 0, + cudaStream_t stream = 0) { - // TODO: use device_id when working with multiple devices - (void)device_id; - try - { - cudaStreamCreate(&stream); - batched_large_msm(d_scalars, d_points, batch_size, count, d_out, true, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + // TODO: use device_id when working with multiple devices + (void)device_id; + try { + cudaStreamCreate(&stream); + batched_large_msm(d_scalars, d_points, batch_size, count, d_out, true, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } #endif #endif diff --git a/icicle/curves/bls12_377/params.cuh b/icicle/curves/bls12_377/params.cuh index 93e05e99..acdba0d7 100644 --- a/icicle/curves/bls12_377/params.cuh +++ b/icicle/curves/bls12_377/params.cuh @@ -1,184 +1,329 @@ #pragma once #include "../../utils/storage.cuh" -namespace PARAMS_BLS12_377{ - struct fp_config{ +namespace PARAMS_BLS12_377 { + struct fp_config { static constexpr unsigned limbs_count = 8; static constexpr unsigned omegas_count = 32; - static constexpr storage modulus = {0x00000001, 0x0a118000, 0xd0000001, 0x59aa76fe, 0x5c37b001, 0x60b44d1e, 0x9a2ca556, 0x12ab655e}; - static constexpr storage modulus_2 = {0x00000002, 0x14230000, 0xa0000002, 0xb354edfd, 0xb86f6002, 0xc1689a3c, 0x34594aac, 0x2556cabd}; - static constexpr storage modulus_4 = {0x00000004, 0x28460000, 0x40000004, 0x66a9dbfb, 0x70dec005, 0x82d13479, 0x68b29559, 0x4aad957a}; - static constexpr storage<2*limbs_count> modulus_wide = {0x00000001, 0x0a118000, 0xd0000001, 0x59aa76fe, 0x5c37b001, 0x60b44d1e, 0x9a2ca556, 0x12ab655e, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage<2*limbs_count> modulus_squared = {0x00000001, 0x14230000, 0xe0000002, 0xc7dd4d2f, 0x8585d003, 0x08ee1bd4, 0xe57fc56e, 0x7e7557e3, 0x483a709d, 0x1fdebb41, 0x5678f4e6, 0x8ea77334, 0xc19c3ec5, 0xd717de29, 0xe2340781, 0x015c8d01}; - static constexpr storage<2*limbs_count> modulus_squared_2 = {0x00000002, 0x28460000, 0xc0000004, 0x8fba9a5f, 0x0b0ba007, 0x11dc37a9, 0xcaff8adc, 0xfceaafc7, 0x9074e13a, 0x3fbd7682, 0xacf1e9cc, 0x1d4ee668, 0x83387d8b, 0xae2fbc53, 0xc4680f03, 0x02b91a03}; - static constexpr storage<2*limbs_count> modulus_squared_4 = {0x00000004, 0x508c0000, 0x80000008, 0x1f7534bf, 0x1617400f, 0x23b86f52, 0x95ff15b8, 0xf9d55f8f, 0x20e9c275, 0x7f7aed05, 0x59e3d398, 0x3a9dccd1, 0x0670fb16, 0x5c5f78a7, 0x88d01e07, 0x05723407}; + static constexpr storage modulus = {0x00000001, 0x0a118000, 0xd0000001, 0x59aa76fe, + 0x5c37b001, 0x60b44d1e, 0x9a2ca556, 0x12ab655e}; + static constexpr storage modulus_2 = {0x00000002, 0x14230000, 0xa0000002, 0xb354edfd, + 0xb86f6002, 0xc1689a3c, 0x34594aac, 0x2556cabd}; + static constexpr storage modulus_4 = {0x00000004, 0x28460000, 0x40000004, 0x66a9dbfb, + 0x70dec005, 0x82d13479, 0x68b29559, 0x4aad957a}; + static constexpr storage<2 * limbs_count> modulus_wide = { + 0x00000001, 0x0a118000, 0xd0000001, 0x59aa76fe, 0x5c37b001, 0x60b44d1e, 0x9a2ca556, 0x12ab655e, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage<2 * limbs_count> modulus_squared = { + 0x00000001, 0x14230000, 0xe0000002, 0xc7dd4d2f, 0x8585d003, 0x08ee1bd4, 0xe57fc56e, 0x7e7557e3, + 0x483a709d, 0x1fdebb41, 0x5678f4e6, 0x8ea77334, 0xc19c3ec5, 0xd717de29, 0xe2340781, 0x015c8d01}; + static constexpr storage<2 * limbs_count> modulus_squared_2 = { + 0x00000002, 0x28460000, 0xc0000004, 0x8fba9a5f, 0x0b0ba007, 0x11dc37a9, 0xcaff8adc, 0xfceaafc7, + 0x9074e13a, 0x3fbd7682, 0xacf1e9cc, 0x1d4ee668, 0x83387d8b, 0xae2fbc53, 0xc4680f03, 0x02b91a03}; + static constexpr storage<2 * limbs_count> modulus_squared_4 = { + 0x00000004, 0x508c0000, 0x80000008, 0x1f7534bf, 0x1617400f, 0x23b86f52, 0x95ff15b8, 0xf9d55f8f, + 0x20e9c275, 0x7f7aed05, 0x59e3d398, 0x3a9dccd1, 0x0670fb16, 0x5c5f78a7, 0x88d01e07, 0x05723407}; static constexpr unsigned modulus_bit_count = 253; - static constexpr storage m = {0x151e79ea, 0xf5204c21, 0x8d69e258, 0xfd0a180b, 0xfaa80548, 0xe4e51e49, 0xc40b2c9e, 0x36d9491e}; - static constexpr storage one = {0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage zero = {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage montgomery_r = {0xfffffff3, 0x7d1c7fff, 0x6ffffff2, 0x7257f50f, 0x512c0fee, 0x16d81575, 0x2bbb9a9d, 0x0d4bda32}; - static constexpr storage montgomery_r_inv = {0x1beeec02, 0x4122dd1a, 0x74fee875, 0xbd1eae95, 0x27b28e2f, 0x838557e2, 0x2290c02c, 0x07b30191}; + static constexpr storage m = {0x151e79ea, 0xf5204c21, 0x8d69e258, 0xfd0a180b, + 0xfaa80548, 0xe4e51e49, 0xc40b2c9e, 0x36d9491e}; + static constexpr storage one = {0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage zero = {0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage montgomery_r = {0xfffffff3, 0x7d1c7fff, 0x6ffffff2, 0x7257f50f, + 0x512c0fee, 0x16d81575, 0x2bbb9a9d, 0x0d4bda32}; + static constexpr storage montgomery_r_inv = {0x1beeec02, 0x4122dd1a, 0x74fee875, 0xbd1eae95, + 0x27b28e2f, 0x838557e2, 0x2290c02c, 0x07b30191}; - static constexpr storage omega1= {0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage omega2= {0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage omega3= {0x00000000, 0x0a118000, 0xd0000001, 0x59aa76fe, 0x5c37b001, 0x60b44d1e, 0x9a2ca556, 0x12ab655e}; - static constexpr storage omega4= {0x00000001, 0x8f1a4000, 0xb0000001, 0xcf664765, 0x970dec00, 0x23ed1347, 0x00000000, 0x00000000}; - static constexpr storage omega5= {0x0405f600, 0xfa8e7081, 0xf8a89660, 0x38b1c291, 0x6bda5fce, 0xefab9005, 0x92a3c754, 0x0b6b0756}; - static constexpr storage omega6= {0xaf0a50c8, 0xc5b2c78e, 0x4636deb3, 0x72e32a34, 0xb6f97778, 0x3d775d15, 0x2b16be6e, 0x0c4c070d}; - static constexpr storage omega7= {0x7a1ade2c, 0x3f5a4e73, 0x0120d1db, 0x71e5bca1, 0x3b2866fd, 0xbcb44162, 0x89c38db1, 0x06ed1a90}; - static constexpr storage omega8= {0xbd2cd25e, 0x61c5510e, 0x2b0d531c, 0xe2d70111, 0x94c3bd4b, 0x738f9894, 0x53182695, 0x0b1e0f1d}; - static constexpr storage omega9= {0x8cb9508c, 0xcfb2f75e, 0xf491e401, 0x4c14f244, 0x23c16afb, 0xc8f5265f, 0x70f3ff2a, 0x0cda7e27}; - static constexpr storage omega10= {0x0bdc32ee, 0xca77feb9, 0xd957f5a9, 0xf36ddfd4, 0x61ba14c4, 0x491c58f5, 0x93e8f339, 0x0618d3c9}; - static constexpr storage omega11= {0x2d89d82f, 0x68c3242e, 0x832a3729, 0xf9559645, 0xbceb62cc, 0x5c803c5e, 0x99ffa2f8, 0x1177cf5d}; - static constexpr storage omega12= {0x6932851a, 0xb6ed40f2, 0x1e0da12e, 0x79cbe7fb, 0x2a7d8f87, 0x8d408575, 0x7505d049, 0x11867341}; - static constexpr storage omega13= {0x07146cbf, 0x8cf7d87a, 0x109c4d23, 0x14ac37dc, 0x883e9660, 0x082d15f0, 0xad9ea9b8, 0x003719b1}; - static constexpr storage omega14= {0xfd0aee77, 0x2260e0dd, 0x1e33b6db, 0xc0cbbc3f, 0xfe7e1b36, 0xc8bf6747, 0x4cb802c1, 0x129e4fd5}; - static constexpr storage omega15= {0x8ac75741, 0x22f6fca2, 0xdd37b519, 0x8101b557, 0x1036226a, 0xf493bb8a, 0xfce05c2c, 0x06dbad6c}; - static constexpr storage omega16= {0x56733f8b, 0x7d246c24, 0xff70b46a, 0xbc3c4112, 0x6f13530b, 0x2c159b40, 0xc55d287b, 0x0c13137a}; - static constexpr storage omega17= {0xec8af73d, 0x8d24de3c, 0xcf722b45, 0x50f778d4, 0x15bc7dd7, 0xf4506bc3, 0xf94a16e1, 0x0e43ba91}; - static constexpr storage omega18= {0xd4405b8f, 0x0baa7b44, 0xee0f1394, 0xf8f3c7fe, 0xef0dfe6d, 0x46b153c0, 0x2dde6b95, 0x0ea2bcd9}; - static constexpr storage omega19= {0x3d1fa34e, 0x5f4dc975, 0x15af81db, 0xc28e54ee, 0x04947d99, 0x83d9a55f, 0x54a2b488, 0x08ec7ccf}; - static constexpr storage omega20= {0x0cac0ee8, 0x0d8fa7b3, 0x82ef38e4, 0x756284ed, 0xac8f90d2, 0x7014b194, 0x634e5d50, 0x092488f8}; - static constexpr storage omega21= {0x6d34ed69, 0xd85399bf, 0x09e49cef, 0x4d9012ba, 0xca00ae5d, 0x020142ee, 0x3bdfebfd, 0x12772e57}; - static constexpr storage omega22= {0x2eb41723, 0x676c8fc7, 0x5dd895bd, 0xe20380e2, 0x9bf22dde, 0x09dc8be8, 0x42638176, 0x12822f94}; - static constexpr storage omega23= {0x81a6d2de, 0x1f1df770, 0xcf29c812, 0x5d33b2da, 0x134f0e7e, 0x1bf162de, 0x1e2877a8, 0x045162c4}; - static constexpr storage omega24= {0xfecda1b6, 0x24f4503b, 0xded67d3c, 0x0e5d7ed3, 0x40cf20af, 0x2b7b7e5e, 0x4faad6af, 0x0d472650}; - static constexpr storage omega25= {0x584b9eb1, 0xcc6c474c, 0x15a8d886, 0x47670804, 0xbb8654c5, 0x07736d2f, 0xeb207a4b, 0x0d14ce7a}; - static constexpr storage omega26= {0xed25924a, 0xd1c6471c, 0x6bc312c3, 0xd98bb374, 0xfeae1a41, 0x50be0848, 0x3265c719, 0x04b07dea}; - static constexpr storage omega27= {0x618241e3, 0xab13f73e, 0x166ca902, 0x571c9267, 0x5e828a6d, 0x8586443a, 0x6daba50b, 0x093fdf2f}; - static constexpr storage omega28= {0xee11c34f, 0xe688e66b, 0xeacecf5a, 0xdc232eae, 0xb95ae685, 0x4fc35094, 0x7c1d31dc, 0x0273b5bd}; - static constexpr storage omega29= {0x1a9057bd, 0x8a8a5a77, 0x41834fbb, 0xdcbfae1d, 0xb34ede6e, 0x534f5b97, 0xb78bbd3e, 0x07313ac5}; - static constexpr storage omega30= {0x2be70731, 0x287abbb1, 0x7c35c5aa, 0x5cbcfd1e, 0x1671f4df, 0x7585b3fe, 0xb899c011, 0x08350ecf}; - static constexpr storage omega31= {0x09f7c5e2, 0x3400c14e, 0x0a649ea1, 0xc112e60c, 0x067ce95e, 0xf7510758, 0xf9daf17c, 0x040a66a5}; - static constexpr storage omega32= {0x43efecd3, 0x89d65957, 0x3bd6c318, 0x29246adc, 0xce01533c, 0xf9fb5ef6, 0x849078c3, 0x020410e4}; + static constexpr storage omega1 = {0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage omega2 = {0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage omega3 = {0x00000000, 0x0a118000, 0xd0000001, 0x59aa76fe, + 0x5c37b001, 0x60b44d1e, 0x9a2ca556, 0x12ab655e}; + static constexpr storage omega4 = {0x00000001, 0x8f1a4000, 0xb0000001, 0xcf664765, + 0x970dec00, 0x23ed1347, 0x00000000, 0x00000000}; + static constexpr storage omega5 = {0x0405f600, 0xfa8e7081, 0xf8a89660, 0x38b1c291, + 0x6bda5fce, 0xefab9005, 0x92a3c754, 0x0b6b0756}; + static constexpr storage omega6 = {0xaf0a50c8, 0xc5b2c78e, 0x4636deb3, 0x72e32a34, + 0xb6f97778, 0x3d775d15, 0x2b16be6e, 0x0c4c070d}; + static constexpr storage omega7 = {0x7a1ade2c, 0x3f5a4e73, 0x0120d1db, 0x71e5bca1, + 0x3b2866fd, 0xbcb44162, 0x89c38db1, 0x06ed1a90}; + static constexpr storage omega8 = {0xbd2cd25e, 0x61c5510e, 0x2b0d531c, 0xe2d70111, + 0x94c3bd4b, 0x738f9894, 0x53182695, 0x0b1e0f1d}; + static constexpr storage omega9 = {0x8cb9508c, 0xcfb2f75e, 0xf491e401, 0x4c14f244, + 0x23c16afb, 0xc8f5265f, 0x70f3ff2a, 0x0cda7e27}; + static constexpr storage omega10 = {0x0bdc32ee, 0xca77feb9, 0xd957f5a9, 0xf36ddfd4, + 0x61ba14c4, 0x491c58f5, 0x93e8f339, 0x0618d3c9}; + static constexpr storage omega11 = {0x2d89d82f, 0x68c3242e, 0x832a3729, 0xf9559645, + 0xbceb62cc, 0x5c803c5e, 0x99ffa2f8, 0x1177cf5d}; + static constexpr storage omega12 = {0x6932851a, 0xb6ed40f2, 0x1e0da12e, 0x79cbe7fb, + 0x2a7d8f87, 0x8d408575, 0x7505d049, 0x11867341}; + static constexpr storage omega13 = {0x07146cbf, 0x8cf7d87a, 0x109c4d23, 0x14ac37dc, + 0x883e9660, 0x082d15f0, 0xad9ea9b8, 0x003719b1}; + static constexpr storage omega14 = {0xfd0aee77, 0x2260e0dd, 0x1e33b6db, 0xc0cbbc3f, + 0xfe7e1b36, 0xc8bf6747, 0x4cb802c1, 0x129e4fd5}; + static constexpr storage omega15 = {0x8ac75741, 0x22f6fca2, 0xdd37b519, 0x8101b557, + 0x1036226a, 0xf493bb8a, 0xfce05c2c, 0x06dbad6c}; + static constexpr storage omega16 = {0x56733f8b, 0x7d246c24, 0xff70b46a, 0xbc3c4112, + 0x6f13530b, 0x2c159b40, 0xc55d287b, 0x0c13137a}; + static constexpr storage omega17 = {0xec8af73d, 0x8d24de3c, 0xcf722b45, 0x50f778d4, + 0x15bc7dd7, 0xf4506bc3, 0xf94a16e1, 0x0e43ba91}; + static constexpr storage omega18 = {0xd4405b8f, 0x0baa7b44, 0xee0f1394, 0xf8f3c7fe, + 0xef0dfe6d, 0x46b153c0, 0x2dde6b95, 0x0ea2bcd9}; + static constexpr storage omega19 = {0x3d1fa34e, 0x5f4dc975, 0x15af81db, 0xc28e54ee, + 0x04947d99, 0x83d9a55f, 0x54a2b488, 0x08ec7ccf}; + static constexpr storage omega20 = {0x0cac0ee8, 0x0d8fa7b3, 0x82ef38e4, 0x756284ed, + 0xac8f90d2, 0x7014b194, 0x634e5d50, 0x092488f8}; + static constexpr storage omega21 = {0x6d34ed69, 0xd85399bf, 0x09e49cef, 0x4d9012ba, + 0xca00ae5d, 0x020142ee, 0x3bdfebfd, 0x12772e57}; + static constexpr storage omega22 = {0x2eb41723, 0x676c8fc7, 0x5dd895bd, 0xe20380e2, + 0x9bf22dde, 0x09dc8be8, 0x42638176, 0x12822f94}; + static constexpr storage omega23 = {0x81a6d2de, 0x1f1df770, 0xcf29c812, 0x5d33b2da, + 0x134f0e7e, 0x1bf162de, 0x1e2877a8, 0x045162c4}; + static constexpr storage omega24 = {0xfecda1b6, 0x24f4503b, 0xded67d3c, 0x0e5d7ed3, + 0x40cf20af, 0x2b7b7e5e, 0x4faad6af, 0x0d472650}; + static constexpr storage omega25 = {0x584b9eb1, 0xcc6c474c, 0x15a8d886, 0x47670804, + 0xbb8654c5, 0x07736d2f, 0xeb207a4b, 0x0d14ce7a}; + static constexpr storage omega26 = {0xed25924a, 0xd1c6471c, 0x6bc312c3, 0xd98bb374, + 0xfeae1a41, 0x50be0848, 0x3265c719, 0x04b07dea}; + static constexpr storage omega27 = {0x618241e3, 0xab13f73e, 0x166ca902, 0x571c9267, + 0x5e828a6d, 0x8586443a, 0x6daba50b, 0x093fdf2f}; + static constexpr storage omega28 = {0xee11c34f, 0xe688e66b, 0xeacecf5a, 0xdc232eae, + 0xb95ae685, 0x4fc35094, 0x7c1d31dc, 0x0273b5bd}; + static constexpr storage omega29 = {0x1a9057bd, 0x8a8a5a77, 0x41834fbb, 0xdcbfae1d, + 0xb34ede6e, 0x534f5b97, 0xb78bbd3e, 0x07313ac5}; + static constexpr storage omega30 = {0x2be70731, 0x287abbb1, 0x7c35c5aa, 0x5cbcfd1e, + 0x1671f4df, 0x7585b3fe, 0xb899c011, 0x08350ecf}; + static constexpr storage omega31 = {0x09f7c5e2, 0x3400c14e, 0x0a649ea1, 0xc112e60c, + 0x067ce95e, 0xf7510758, 0xf9daf17c, 0x040a66a5}; + static constexpr storage omega32 = {0x43efecd3, 0x89d65957, 0x3bd6c318, 0x29246adc, + 0xce01533c, 0xf9fb5ef6, 0x849078c3, 0x020410e4}; static constexpr storage_array omega = { - omega1, omega2, omega3, omega4, omega5, omega6, omega7, omega8, - omega9, omega10, omega11, omega12, omega13, omega14, omega15, omega16, - omega17, omega18, omega19, omega20, omega21, omega22, omega23, omega24, - omega25, omega26, omega27, omega28, omega29, omega30, omega31, omega32, + omega1, omega2, omega3, omega4, omega5, omega6, omega7, omega8, omega9, omega10, omega11, + omega12, omega13, omega14, omega15, omega16, omega17, omega18, omega19, omega20, omega21, omega22, + omega23, omega24, omega25, omega26, omega27, omega28, omega29, omega30, omega31, omega32, }; - static constexpr storage omega_inv1= {0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage omega_inv2= {0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage omega_inv3= {0x00000000, 0x0a118000, 0xd0000001, 0x59aa76fe, 0x5c37b001, 0x60b44d1e, 0x9a2ca556, 0x12ab655e}; - static constexpr storage omega_inv4= {0x00000000, 0x7af74000, 0x1fffffff, 0x8a442f99, 0xc529c400, 0x3cc739d6, 0x9a2ca556, 0x12ab655e}; - static constexpr storage omega_inv5= {0x29f04fbb, 0x401766f3, 0x0a4b98b2, 0x7e4e5f63, 0x9fbc28da, 0x35887f12, 0xdabe3b97, 0x045cb225}; - static constexpr storage omega_inv6= {0xac4ce534, 0xf3883827, 0x7c4940f0, 0x9f9a114f, 0x32cc3182, 0xe48527ee, 0x2877f4c2, 0x02d4450c}; - static constexpr storage omega_inv7= {0x4afbf0bb, 0xd2533833, 0x1d646d56, 0x20987ba6, 0xb8ae7d61, 0xf2c34c11, 0xb53ae995, 0x09962e74}; - static constexpr storage omega_inv8= {0x34f5271a, 0xd6aeb755, 0x493bb125, 0xc0e24cfd, 0x35cf1879, 0xc9d2a1ad, 0x19000e58, 0x0f3570fa}; - static constexpr storage omega_inv9= {0xbec3ee61, 0x2601423e, 0xb5252af1, 0x94f5ab4b, 0x205d09ca, 0xa1184628, 0x82a1fba2, 0x0e305e1e}; - static constexpr storage omega_inv10= {0x7e3320f2, 0x3cbad3a7, 0x4269c624, 0x7866653a, 0xa2fc13a2, 0xaf6d742d, 0xfe24db2a, 0x03ed8246}; - static constexpr storage omega_inv11= {0x30cff7d3, 0xcb6ab09e, 0xd88db7e6, 0x29949e69, 0x24db3cd4, 0xb9117dc6, 0xca8d11b5, 0x01b2aadd}; - static constexpr storage omega_inv12= {0x433b851c, 0x1c8fbc5d, 0x545e622f, 0x0ccc3b8c, 0x5c624e0f, 0x0fba9df2, 0x0496ddf9, 0x02d54c5d}; - static constexpr storage omega_inv13= {0x0a176838, 0x2ddbbfdd, 0xc4c77f0f, 0xb7a1e4f3, 0x41cad032, 0x645b4383, 0xbfb123c4, 0x0f3fe2e3}; - static constexpr storage omega_inv14= {0x9ff30538, 0x1d6d50fe, 0x8576b6fa, 0xca07f2d2, 0x720da6d2, 0x587839fa, 0xe9ebd753, 0x0038d5aa}; - static constexpr storage omega_inv15= {0x8e30fb24, 0xaeac713d, 0x21906459, 0xd004e9e3, 0xa60b0a33, 0x2fc54303, 0x14e545a6, 0x039063f8}; - static constexpr storage omega_inv16= {0x74d36c47, 0x112559bd, 0x4154b77a, 0x87db7016, 0x3843df80, 0x9e779ae5, 0x297077d0, 0x024424f2}; - static constexpr storage omega_inv17= {0x65953c15, 0xd649ae5e, 0x56accc60, 0x879fe571, 0xa3ba1e39, 0xba914f52, 0xd6ea78a2, 0x01b74920}; - static constexpr storage omega_inv18= {0x3d8a82b4, 0x319dea45, 0x8fc703de, 0x49468894, 0xc6b00817, 0x703f710f, 0xe862bc53, 0x007762fd}; - static constexpr storage omega_inv19= {0x5bae083f, 0x4f433336, 0x27612fe3, 0x485e079c, 0x7f8f0a07, 0xf83b6572, 0xca91a4d4, 0x06bdcaaf}; - static constexpr storage omega_inv20= {0xb2fb63eb, 0x4a0bf5e7, 0x996004d9, 0x6f64f8ec, 0x67519c5e, 0x0fecd781, 0x1cab2760, 0x04475eb3}; - static constexpr storage omega_inv21= {0xcd83d14f, 0xadbd6ce4, 0x750b194a, 0xc664d3bc, 0x89c9f437, 0x3034dfed, 0xcc2e643b, 0x03d502b8}; - static constexpr storage omega_inv22= {0x2272320b, 0xf89478a9, 0xd2e658b7, 0x3adac024, 0x94b25831, 0xf38d840f, 0x37dc6c4c, 0x04540b1f}; - static constexpr storage omega_inv23= {0xa6d411fe, 0x19d969b1, 0xf544a648, 0x973f00f7, 0xc9ed9f93, 0xb18f166c, 0xe7f21124, 0x02fba68e}; - static constexpr storage omega_inv24= {0x94921227, 0x78b96b20, 0x23b35b65, 0x07cd90db, 0xc843f1c3, 0x111f4fd9, 0xff729f23, 0x0ec4b820}; - static constexpr storage omega_inv25= {0x4879d823, 0x53eb200b, 0x93095f4a, 0x1971fac3, 0x86989a58, 0x8467ffe6, 0x306ed29d, 0x0af20231}; - static constexpr storage omega_inv26= {0xd4793454, 0x71c907bd, 0x7700defb, 0xc11aa47e, 0xbac11769, 0xf03e0873, 0x97419136, 0x0353190d}; - static constexpr storage omega_inv27= {0xa81a701c, 0x61a3deb6, 0x91bbbecf, 0xd8a4eda1, 0x6feb65df, 0x3f5339b1, 0x8b5421f2, 0x108adc5b}; - static constexpr storage omega_inv28= {0xe7bf5a41, 0x7d6c573a, 0xfa83b1f7, 0x8038b697, 0xa6718ce9, 0x2a988bee, 0x1239b708, 0x0846f362}; - static constexpr storage omega_inv29= {0xe3373548, 0x89a068a4, 0x78a6c4e5, 0xf31284cf, 0x6e9396d6, 0x9eed5c8d, 0x7e4342f9, 0x01643c65}; - static constexpr storage omega_inv30= {0x123a81f6, 0xc03a3272, 0x115b15e8, 0x377e6d2f, 0x2d6d7206, 0xed5575e4, 0x714004f2, 0x0b1e37e4}; - static constexpr storage omega_inv31= {0xdde8ffc5, 0x62a29589, 0x618c5d62, 0xfb6716e8, 0x88d61f25, 0x787e561c, 0xd2b21c7e, 0x0e351761}; - static constexpr storage omega_inv32= {0x7aca7fbe, 0xc9fea0e9, 0xb41a8854, 0x965ff314, 0x810eea7e, 0x743415d4, 0x8275bbd1, 0x0431c01b}; - + static constexpr storage omega_inv1 = {0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage omega_inv2 = {0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage omega_inv3 = {0x00000000, 0x0a118000, 0xd0000001, 0x59aa76fe, + 0x5c37b001, 0x60b44d1e, 0x9a2ca556, 0x12ab655e}; + static constexpr storage omega_inv4 = {0x00000000, 0x7af74000, 0x1fffffff, 0x8a442f99, + 0xc529c400, 0x3cc739d6, 0x9a2ca556, 0x12ab655e}; + static constexpr storage omega_inv5 = {0x29f04fbb, 0x401766f3, 0x0a4b98b2, 0x7e4e5f63, + 0x9fbc28da, 0x35887f12, 0xdabe3b97, 0x045cb225}; + static constexpr storage omega_inv6 = {0xac4ce534, 0xf3883827, 0x7c4940f0, 0x9f9a114f, + 0x32cc3182, 0xe48527ee, 0x2877f4c2, 0x02d4450c}; + static constexpr storage omega_inv7 = {0x4afbf0bb, 0xd2533833, 0x1d646d56, 0x20987ba6, + 0xb8ae7d61, 0xf2c34c11, 0xb53ae995, 0x09962e74}; + static constexpr storage omega_inv8 = {0x34f5271a, 0xd6aeb755, 0x493bb125, 0xc0e24cfd, + 0x35cf1879, 0xc9d2a1ad, 0x19000e58, 0x0f3570fa}; + static constexpr storage omega_inv9 = {0xbec3ee61, 0x2601423e, 0xb5252af1, 0x94f5ab4b, + 0x205d09ca, 0xa1184628, 0x82a1fba2, 0x0e305e1e}; + static constexpr storage omega_inv10 = {0x7e3320f2, 0x3cbad3a7, 0x4269c624, 0x7866653a, + 0xa2fc13a2, 0xaf6d742d, 0xfe24db2a, 0x03ed8246}; + static constexpr storage omega_inv11 = {0x30cff7d3, 0xcb6ab09e, 0xd88db7e6, 0x29949e69, + 0x24db3cd4, 0xb9117dc6, 0xca8d11b5, 0x01b2aadd}; + static constexpr storage omega_inv12 = {0x433b851c, 0x1c8fbc5d, 0x545e622f, 0x0ccc3b8c, + 0x5c624e0f, 0x0fba9df2, 0x0496ddf9, 0x02d54c5d}; + static constexpr storage omega_inv13 = {0x0a176838, 0x2ddbbfdd, 0xc4c77f0f, 0xb7a1e4f3, + 0x41cad032, 0x645b4383, 0xbfb123c4, 0x0f3fe2e3}; + static constexpr storage omega_inv14 = {0x9ff30538, 0x1d6d50fe, 0x8576b6fa, 0xca07f2d2, + 0x720da6d2, 0x587839fa, 0xe9ebd753, 0x0038d5aa}; + static constexpr storage omega_inv15 = {0x8e30fb24, 0xaeac713d, 0x21906459, 0xd004e9e3, + 0xa60b0a33, 0x2fc54303, 0x14e545a6, 0x039063f8}; + static constexpr storage omega_inv16 = {0x74d36c47, 0x112559bd, 0x4154b77a, 0x87db7016, + 0x3843df80, 0x9e779ae5, 0x297077d0, 0x024424f2}; + static constexpr storage omega_inv17 = {0x65953c15, 0xd649ae5e, 0x56accc60, 0x879fe571, + 0xa3ba1e39, 0xba914f52, 0xd6ea78a2, 0x01b74920}; + static constexpr storage omega_inv18 = {0x3d8a82b4, 0x319dea45, 0x8fc703de, 0x49468894, + 0xc6b00817, 0x703f710f, 0xe862bc53, 0x007762fd}; + static constexpr storage omega_inv19 = {0x5bae083f, 0x4f433336, 0x27612fe3, 0x485e079c, + 0x7f8f0a07, 0xf83b6572, 0xca91a4d4, 0x06bdcaaf}; + static constexpr storage omega_inv20 = {0xb2fb63eb, 0x4a0bf5e7, 0x996004d9, 0x6f64f8ec, + 0x67519c5e, 0x0fecd781, 0x1cab2760, 0x04475eb3}; + static constexpr storage omega_inv21 = {0xcd83d14f, 0xadbd6ce4, 0x750b194a, 0xc664d3bc, + 0x89c9f437, 0x3034dfed, 0xcc2e643b, 0x03d502b8}; + static constexpr storage omega_inv22 = {0x2272320b, 0xf89478a9, 0xd2e658b7, 0x3adac024, + 0x94b25831, 0xf38d840f, 0x37dc6c4c, 0x04540b1f}; + static constexpr storage omega_inv23 = {0xa6d411fe, 0x19d969b1, 0xf544a648, 0x973f00f7, + 0xc9ed9f93, 0xb18f166c, 0xe7f21124, 0x02fba68e}; + static constexpr storage omega_inv24 = {0x94921227, 0x78b96b20, 0x23b35b65, 0x07cd90db, + 0xc843f1c3, 0x111f4fd9, 0xff729f23, 0x0ec4b820}; + static constexpr storage omega_inv25 = {0x4879d823, 0x53eb200b, 0x93095f4a, 0x1971fac3, + 0x86989a58, 0x8467ffe6, 0x306ed29d, 0x0af20231}; + static constexpr storage omega_inv26 = {0xd4793454, 0x71c907bd, 0x7700defb, 0xc11aa47e, + 0xbac11769, 0xf03e0873, 0x97419136, 0x0353190d}; + static constexpr storage omega_inv27 = {0xa81a701c, 0x61a3deb6, 0x91bbbecf, 0xd8a4eda1, + 0x6feb65df, 0x3f5339b1, 0x8b5421f2, 0x108adc5b}; + static constexpr storage omega_inv28 = {0xe7bf5a41, 0x7d6c573a, 0xfa83b1f7, 0x8038b697, + 0xa6718ce9, 0x2a988bee, 0x1239b708, 0x0846f362}; + static constexpr storage omega_inv29 = {0xe3373548, 0x89a068a4, 0x78a6c4e5, 0xf31284cf, + 0x6e9396d6, 0x9eed5c8d, 0x7e4342f9, 0x01643c65}; + static constexpr storage omega_inv30 = {0x123a81f6, 0xc03a3272, 0x115b15e8, 0x377e6d2f, + 0x2d6d7206, 0xed5575e4, 0x714004f2, 0x0b1e37e4}; + static constexpr storage omega_inv31 = {0xdde8ffc5, 0x62a29589, 0x618c5d62, 0xfb6716e8, + 0x88d61f25, 0x787e561c, 0xd2b21c7e, 0x0e351761}; + static constexpr storage omega_inv32 = {0x7aca7fbe, 0xc9fea0e9, 0xb41a8854, 0x965ff314, + 0x810eea7e, 0x743415d4, 0x8275bbd1, 0x0431c01b}; + static constexpr storage_array omega_inv = { - omega_inv1, omega_inv2, omega_inv3, omega_inv4, omega_inv5, omega_inv6, omega_inv7, omega_inv8, - omega_inv9, omega_inv10, omega_inv11, omega_inv12, omega_inv13, omega_inv14, omega_inv15, omega_inv16, - omega_inv17, omega_inv18, omega_inv19, omega_inv20, omega_inv21, omega_inv22, omega_inv23, omega_inv24, - omega_inv25, omega_inv26, omega_inv27, omega_inv28, omega_inv29, omega_inv30, omega_inv31, omega_inv32, + omega_inv1, omega_inv2, omega_inv3, omega_inv4, omega_inv5, omega_inv6, omega_inv7, omega_inv8, + omega_inv9, omega_inv10, omega_inv11, omega_inv12, omega_inv13, omega_inv14, omega_inv15, omega_inv16, + omega_inv17, omega_inv18, omega_inv19, omega_inv20, omega_inv21, omega_inv22, omega_inv23, omega_inv24, + omega_inv25, omega_inv26, omega_inv27, omega_inv28, omega_inv29, omega_inv30, omega_inv31, omega_inv32, }; - static constexpr storage inv1= {0x00000001, 0x8508c000, 0x68000000, 0xacd53b7f, 0x2e1bd800, 0x305a268f, 0x4d1652ab, 0x0955b2af}; - static constexpr storage inv2= {0x00000001, 0xc78d2000, 0x1c000000, 0x033fd93f, 0xc529c401, 0xc88739d6, 0xf3a17c00, 0x0e008c06}; - static constexpr storage inv3= {0x00000001, 0xe8cf5000, 0xf6000000, 0x2e75281e, 0x90b0ba01, 0x949dc37a, 0xc6e710ab, 0x1055f8b2}; - static constexpr storage inv4= {0x00000001, 0xf9706800, 0xe3000000, 0x440fcf8e, 0x76743501, 0xfaa9084c, 0xb089db00, 0x1180af08}; - static constexpr storage inv5= {0x00000001, 0x01c0f400, 0xd9800001, 0x4edd2346, 0x6955f281, 0xadaeaab5, 0xa55b402b, 0x12160a33}; - static constexpr storage inv6= {0x00000001, 0x05e93a00, 0xd4c00001, 0x5443cd22, 0xe2c6d141, 0x07317be9, 0x1fc3f2c1, 0x1260b7c9}; - static constexpr storage inv7= {0x00000001, 0x07fd5d00, 0xd2600001, 0x56f72210, 0x1f7f40a1, 0xb3f2e484, 0xdcf84c0b, 0x12860e93}; - static constexpr storage inv8= {0x00000001, 0x09076e80, 0xd1300001, 0x5850cc87, 0x3ddb7851, 0x0a5398d1, 0x3b9278b1, 0x1298b9f9}; - static constexpr storage inv9= {0x00000001, 0x098c7740, 0x50980001, 0x58fda1c3, 0xcd099429, 0xb583f2f7, 0xeadf8f03, 0x12a20fab}; - static constexpr storage inv10= {0x00000001, 0x09cefba0, 0x104c0001, 0x59540c61, 0x14a0a215, 0x0b1c200b, 0x42861a2d, 0x12a6ba85}; - static constexpr storage inv11= {0x00000001, 0x09f03dd0, 0xf0260001, 0x597f41af, 0xb86c290b, 0xb5e83694, 0xee595fc1, 0x12a90ff1}; - static constexpr storage inv12= {0x00000001, 0x0a00dee8, 0x60130001, 0x5994dc57, 0x8a51ec86, 0x0b4e41d9, 0x4443028c, 0x12aa3aa8}; - static constexpr storage inv13= {0x00000001, 0x0a092f74, 0x18098001, 0xd99fa9ab, 0xf344ce43, 0x3601477b, 0x6f37d3f1, 0x12aad003}; - static constexpr storage inv14= {0x00000001, 0x0a0d57ba, 0xf404c001, 0x99a51054, 0x27be3f22, 0xcb5aca4d, 0x04b23ca3, 0x12ab1ab1}; - static constexpr storage inv15= {0x00000001, 0x0a0f6bdd, 0xe2026001, 0xf9a7c3a9, 0xc1faf791, 0x16078bb5, 0xcf6f70fd, 0x12ab4007}; - static constexpr storage inv16= {0x80000001, 0x0a1075ee, 0x59013001, 0xa9a91d54, 0x0f1953c9, 0xbb5dec6a, 0x34ce0b29, 0x12ab52b3}; - static constexpr storage inv17= {0x40000001, 0x0a10faf7, 0x94809801, 0x81a9ca29, 0x35a881e5, 0x0e091cc4, 0xe77d5840, 0x12ab5c08}; - static constexpr storage inv18= {0xa0000001, 0x0a113d7b, 0x32404c01, 0x6daa2094, 0x48f018f3, 0x375eb4f1, 0xc0d4fecb, 0x12ab60b3}; - static constexpr storage inv19= {0xd0000001, 0x0a115ebd, 0x81202601, 0x63aa4bc9, 0xd293e47a, 0xcc098107, 0x2d80d210, 0x12ab6309}; - static constexpr storage inv20= {0xe8000001, 0x0a116f5e, 0x28901301, 0xdeaa6164, 0x1765ca3d, 0x965ee713, 0xe3d6bbb3, 0x12ab6433}; - static constexpr storage inv21= {0x74000001, 0x0a1177af, 0x7c480981, 0x9c2a6c31, 0xb9cebd1f, 0xfb899a18, 0x3f01b084, 0x12ab64c9}; - static constexpr storage inv22= {0xba000001, 0x0a117bd7, 0x262404c1, 0x7aea7198, 0x8b033690, 0xae1ef39b, 0xec972aed, 0x12ab6513}; - static constexpr storage inv23= {0xdd000001, 0x0a117deb, 0x7b120261, 0xea4a744b, 0xf39d7348, 0x0769a05c, 0x4361e822, 0x12ab6539}; - static constexpr storage inv24= {0xee800001, 0x0a117ef5, 0x25890131, 0x21fa75a5, 0xa7ea91a5, 0x340ef6bd, 0xeec746bc, 0x12ab654b}; - static constexpr storage inv25= {0xf7400001, 0x0a117f7a, 0xfac48099, 0x3dd27651, 0x021120d3, 0x4a61a1ee, 0x4479f609, 0x12ab6555}; - static constexpr storage inv26= {0x7ba00001, 0x0a117fbd, 0x6562404d, 0x4bbe76a8, 0x2f24686a, 0xd58af786, 0xef534daf, 0x12ab6559}; - static constexpr storage inv27= {0xbdd00001, 0x0a117fde, 0x9ab12027, 0xd2b476d3, 0x45ae0c35, 0x1b1fa252, 0x44bff983, 0x12ab655c}; - static constexpr storage inv28= {0x5ee80001, 0x0a117fef, 0x35589014, 0x962f76e9, 0x50f2de1b, 0xbde9f7b8, 0x6f764f6c, 0x12ab655d}; - static constexpr storage inv29= {0xaf740001, 0x8a117ff7, 0x02ac480a, 0x77ecf6f4, 0x5695470e, 0x8f4f226b, 0x04d17a61, 0x12ab655e}; - static constexpr storage inv30= {0xd7ba0001, 0xca117ffb, 0x69562405, 0xe8cbb6f9, 0xd9667b87, 0xf801b7c4, 0x4f7f0fdb, 0x12ab655e}; - static constexpr storage inv31= {0xebdd0001, 0x6a117ffd, 0x1cab1203, 0xa13b16fc, 0x9acf15c4, 0x2c5b0271, 0x74d5da99, 0x12ab655e}; - static constexpr storage inv32= {0xf5ee8001, 0x3a117ffe, 0x76558902, 0xfd72c6fd, 0xfb8362e2, 0xc687a7c7, 0x87813ff7, 0x12ab655e}; + static constexpr storage inv1 = {0x00000001, 0x8508c000, 0x68000000, 0xacd53b7f, + 0x2e1bd800, 0x305a268f, 0x4d1652ab, 0x0955b2af}; + static constexpr storage inv2 = {0x00000001, 0xc78d2000, 0x1c000000, 0x033fd93f, + 0xc529c401, 0xc88739d6, 0xf3a17c00, 0x0e008c06}; + static constexpr storage inv3 = {0x00000001, 0xe8cf5000, 0xf6000000, 0x2e75281e, + 0x90b0ba01, 0x949dc37a, 0xc6e710ab, 0x1055f8b2}; + static constexpr storage inv4 = {0x00000001, 0xf9706800, 0xe3000000, 0x440fcf8e, + 0x76743501, 0xfaa9084c, 0xb089db00, 0x1180af08}; + static constexpr storage inv5 = {0x00000001, 0x01c0f400, 0xd9800001, 0x4edd2346, + 0x6955f281, 0xadaeaab5, 0xa55b402b, 0x12160a33}; + static constexpr storage inv6 = {0x00000001, 0x05e93a00, 0xd4c00001, 0x5443cd22, + 0xe2c6d141, 0x07317be9, 0x1fc3f2c1, 0x1260b7c9}; + static constexpr storage inv7 = {0x00000001, 0x07fd5d00, 0xd2600001, 0x56f72210, + 0x1f7f40a1, 0xb3f2e484, 0xdcf84c0b, 0x12860e93}; + static constexpr storage inv8 = {0x00000001, 0x09076e80, 0xd1300001, 0x5850cc87, + 0x3ddb7851, 0x0a5398d1, 0x3b9278b1, 0x1298b9f9}; + static constexpr storage inv9 = {0x00000001, 0x098c7740, 0x50980001, 0x58fda1c3, + 0xcd099429, 0xb583f2f7, 0xeadf8f03, 0x12a20fab}; + static constexpr storage inv10 = {0x00000001, 0x09cefba0, 0x104c0001, 0x59540c61, + 0x14a0a215, 0x0b1c200b, 0x42861a2d, 0x12a6ba85}; + static constexpr storage inv11 = {0x00000001, 0x09f03dd0, 0xf0260001, 0x597f41af, + 0xb86c290b, 0xb5e83694, 0xee595fc1, 0x12a90ff1}; + static constexpr storage inv12 = {0x00000001, 0x0a00dee8, 0x60130001, 0x5994dc57, + 0x8a51ec86, 0x0b4e41d9, 0x4443028c, 0x12aa3aa8}; + static constexpr storage inv13 = {0x00000001, 0x0a092f74, 0x18098001, 0xd99fa9ab, + 0xf344ce43, 0x3601477b, 0x6f37d3f1, 0x12aad003}; + static constexpr storage inv14 = {0x00000001, 0x0a0d57ba, 0xf404c001, 0x99a51054, + 0x27be3f22, 0xcb5aca4d, 0x04b23ca3, 0x12ab1ab1}; + static constexpr storage inv15 = {0x00000001, 0x0a0f6bdd, 0xe2026001, 0xf9a7c3a9, + 0xc1faf791, 0x16078bb5, 0xcf6f70fd, 0x12ab4007}; + static constexpr storage inv16 = {0x80000001, 0x0a1075ee, 0x59013001, 0xa9a91d54, + 0x0f1953c9, 0xbb5dec6a, 0x34ce0b29, 0x12ab52b3}; + static constexpr storage inv17 = {0x40000001, 0x0a10faf7, 0x94809801, 0x81a9ca29, + 0x35a881e5, 0x0e091cc4, 0xe77d5840, 0x12ab5c08}; + static constexpr storage inv18 = {0xa0000001, 0x0a113d7b, 0x32404c01, 0x6daa2094, + 0x48f018f3, 0x375eb4f1, 0xc0d4fecb, 0x12ab60b3}; + static constexpr storage inv19 = {0xd0000001, 0x0a115ebd, 0x81202601, 0x63aa4bc9, + 0xd293e47a, 0xcc098107, 0x2d80d210, 0x12ab6309}; + static constexpr storage inv20 = {0xe8000001, 0x0a116f5e, 0x28901301, 0xdeaa6164, + 0x1765ca3d, 0x965ee713, 0xe3d6bbb3, 0x12ab6433}; + static constexpr storage inv21 = {0x74000001, 0x0a1177af, 0x7c480981, 0x9c2a6c31, + 0xb9cebd1f, 0xfb899a18, 0x3f01b084, 0x12ab64c9}; + static constexpr storage inv22 = {0xba000001, 0x0a117bd7, 0x262404c1, 0x7aea7198, + 0x8b033690, 0xae1ef39b, 0xec972aed, 0x12ab6513}; + static constexpr storage inv23 = {0xdd000001, 0x0a117deb, 0x7b120261, 0xea4a744b, + 0xf39d7348, 0x0769a05c, 0x4361e822, 0x12ab6539}; + static constexpr storage inv24 = {0xee800001, 0x0a117ef5, 0x25890131, 0x21fa75a5, + 0xa7ea91a5, 0x340ef6bd, 0xeec746bc, 0x12ab654b}; + static constexpr storage inv25 = {0xf7400001, 0x0a117f7a, 0xfac48099, 0x3dd27651, + 0x021120d3, 0x4a61a1ee, 0x4479f609, 0x12ab6555}; + static constexpr storage inv26 = {0x7ba00001, 0x0a117fbd, 0x6562404d, 0x4bbe76a8, + 0x2f24686a, 0xd58af786, 0xef534daf, 0x12ab6559}; + static constexpr storage inv27 = {0xbdd00001, 0x0a117fde, 0x9ab12027, 0xd2b476d3, + 0x45ae0c35, 0x1b1fa252, 0x44bff983, 0x12ab655c}; + static constexpr storage inv28 = {0x5ee80001, 0x0a117fef, 0x35589014, 0x962f76e9, + 0x50f2de1b, 0xbde9f7b8, 0x6f764f6c, 0x12ab655d}; + static constexpr storage inv29 = {0xaf740001, 0x8a117ff7, 0x02ac480a, 0x77ecf6f4, + 0x5695470e, 0x8f4f226b, 0x04d17a61, 0x12ab655e}; + static constexpr storage inv30 = {0xd7ba0001, 0xca117ffb, 0x69562405, 0xe8cbb6f9, + 0xd9667b87, 0xf801b7c4, 0x4f7f0fdb, 0x12ab655e}; + static constexpr storage inv31 = {0xebdd0001, 0x6a117ffd, 0x1cab1203, 0xa13b16fc, + 0x9acf15c4, 0x2c5b0271, 0x74d5da99, 0x12ab655e}; + static constexpr storage inv32 = {0xf5ee8001, 0x3a117ffe, 0x76558902, 0xfd72c6fd, + 0xfb8362e2, 0xc687a7c7, 0x87813ff7, 0x12ab655e}; static constexpr storage_array inv = { - inv1, inv2, inv3, inv4, inv5, inv6, inv7, inv8, - inv9, inv10, inv11, inv12, inv13, inv14, inv15, inv16, - inv17, inv18, inv19, inv20, inv21, inv22, inv23, inv24, - inv25, inv26, inv27, inv28, inv29, inv30, inv31, inv32, - }; + inv1, inv2, inv3, inv4, inv5, inv6, inv7, inv8, inv9, inv10, inv11, inv12, inv13, inv14, inv15, inv16, + inv17, inv18, inv19, inv20, inv21, inv22, inv23, inv24, inv25, inv26, inv27, inv28, inv29, inv30, inv31, inv32, + }; }; - struct fq_config{ + struct fq_config { static constexpr unsigned limbs_count = 12; - static constexpr storage modulus = {0x00000001, 0x8508c000, 0x30000000, 0x170b5d44, 0xba094800, 0x1ef3622f, 0x00f5138f, 0x1a22d9f3, 0x6ca1493b, 0xc63b05c0, 0x17c510ea, 0x01ae3a46}; - static constexpr storage modulus_2 = {0x00000002, 0x0a118000, 0x60000001, 0x2e16ba88, 0x74129000, 0x3de6c45f, 0x01ea271e, 0x3445b3e6, 0xd9429276, 0x8c760b80, 0x2f8a21d5, 0x035c748c}; - static constexpr storage modulus_4 = {0x00000004, 0x14230000, 0xc0000002, 0x5c2d7510, 0xe8252000, 0x7bcd88be, 0x03d44e3c, 0x688b67cc, 0xb28524ec, 0x18ec1701, 0x5f1443ab, 0x06b8e918}; - static constexpr storage<2*limbs_count> modulus_wide = {0x00000001, 0x8508c000, 0x30000000, 0x170b5d44, 0xba094800, 0x1ef3622f, 0x00f5138f, 0x1a22d9f3, 0x6ca1493b, 0xc63b05c0, 0x17c510ea, 0x01ae3a46, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage<2*limbs_count> modulus_squared = {0x00000001, 0x0a118000, 0xf0000001, 0x7338d254, 0x2e1bd800, 0x4ada268f, 0x35f1c09a, 0x6bcbfbd2, 0x58638c9d, 0x318324b9, 0x8bb70ae0, 0x460aaaaa, 0x502a4d6c, 0xc014e712, 0xb90660cd, 0x09d018af, 0x3dda4d5c, 0x1f5e7141, 0xa4aee93f, 0x4bb8b87d, 0xb361263c, 0x2256913b, 0xd0bbaffb, 0x0002d307}; - static constexpr storage<2*limbs_count> modulus_squared_2 = {0x00000002, 0x14230000, 0xe0000002, 0xe671a4a9, 0x5c37b000, 0x95b44d1e, 0x6be38134, 0xd797f7a4, 0xb0c7193a, 0x63064972, 0x176e15c0, 0x8c155555, 0xa0549ad8, 0x8029ce24, 0x720cc19b, 0x13a0315f, 0x7bb49ab8, 0x3ebce282, 0x495dd27e, 0x977170fb, 0x66c24c78, 0x44ad2277, 0xa1775ff6, 0x0005a60f}; - static constexpr storage<2*limbs_count> modulus_squared_4 = {0x00000004, 0x28460000, 0xc0000004, 0xcce34953, 0xb86f6001, 0x2b689a3c, 0xd7c70269, 0xaf2fef48, 0x618e3275, 0xc60c92e5, 0x2edc2b80, 0x182aaaaa, 0x40a935b1, 0x00539c49, 0xe4198337, 0x274062be, 0xf7693570, 0x7d79c504, 0x92bba4fc, 0x2ee2e1f6, 0xcd8498f1, 0x895a44ee, 0x42eebfec, 0x000b4c1f}; + static constexpr storage modulus = {0x00000001, 0x8508c000, 0x30000000, 0x170b5d44, + 0xba094800, 0x1ef3622f, 0x00f5138f, 0x1a22d9f3, + 0x6ca1493b, 0xc63b05c0, 0x17c510ea, 0x01ae3a46}; + static constexpr storage modulus_2 = {0x00000002, 0x0a118000, 0x60000001, 0x2e16ba88, + 0x74129000, 0x3de6c45f, 0x01ea271e, 0x3445b3e6, + 0xd9429276, 0x8c760b80, 0x2f8a21d5, 0x035c748c}; + static constexpr storage modulus_4 = {0x00000004, 0x14230000, 0xc0000002, 0x5c2d7510, + 0xe8252000, 0x7bcd88be, 0x03d44e3c, 0x688b67cc, + 0xb28524ec, 0x18ec1701, 0x5f1443ab, 0x06b8e918}; + static constexpr storage<2 * limbs_count> modulus_wide = { + 0x00000001, 0x8508c000, 0x30000000, 0x170b5d44, 0xba094800, 0x1ef3622f, 0x00f5138f, 0x1a22d9f3, + 0x6ca1493b, 0xc63b05c0, 0x17c510ea, 0x01ae3a46, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage<2 * limbs_count> modulus_squared = { + 0x00000001, 0x0a118000, 0xf0000001, 0x7338d254, 0x2e1bd800, 0x4ada268f, 0x35f1c09a, 0x6bcbfbd2, + 0x58638c9d, 0x318324b9, 0x8bb70ae0, 0x460aaaaa, 0x502a4d6c, 0xc014e712, 0xb90660cd, 0x09d018af, + 0x3dda4d5c, 0x1f5e7141, 0xa4aee93f, 0x4bb8b87d, 0xb361263c, 0x2256913b, 0xd0bbaffb, 0x0002d307}; + static constexpr storage<2 * limbs_count> modulus_squared_2 = { + 0x00000002, 0x14230000, 0xe0000002, 0xe671a4a9, 0x5c37b000, 0x95b44d1e, 0x6be38134, 0xd797f7a4, + 0xb0c7193a, 0x63064972, 0x176e15c0, 0x8c155555, 0xa0549ad8, 0x8029ce24, 0x720cc19b, 0x13a0315f, + 0x7bb49ab8, 0x3ebce282, 0x495dd27e, 0x977170fb, 0x66c24c78, 0x44ad2277, 0xa1775ff6, 0x0005a60f}; + static constexpr storage<2 * limbs_count> modulus_squared_4 = { + 0x00000004, 0x28460000, 0xc0000004, 0xcce34953, 0xb86f6001, 0x2b689a3c, 0xd7c70269, 0xaf2fef48, + 0x618e3275, 0xc60c92e5, 0x2edc2b80, 0x182aaaaa, 0x40a935b1, 0x00539c49, 0xe4198337, 0x274062be, + 0xf7693570, 0x7d79c504, 0x92bba4fc, 0x2ee2e1f6, 0xcd8498f1, 0x895a44ee, 0x42eebfec, 0x000b4c1f}; static constexpr unsigned modulus_bit_count = 377; - static constexpr storage m = {0x5e4daffc, 0x1f9fd58c, 0x89c42a59, 0xd0ed6877, 0xd85a6d02, 0x6af2d488, 0x6776b1a0, 0x3bbad0de, 0x582ef4f7, 0x976c3ca0, 0x0cc4060e, 0x0261508d}; - static constexpr storage one = {0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage zero = {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage montgomery_r = {0xffffff, 0xf73fffff, 0xffffff7a, 0xf4a2bbcf, 0xf6b7ffe8, 0x0c9dd045, 0x0aec70e1, 0xdd260cff, 0x5eb6c4e5, 0xc4fa3f93, 0x3aef1539, 0x51c5b9e8}; - static constexpr storage montgomery_r_inv = {0x934f3a1, 0xb0909a28, 0xc1cfac62, 0x3264aa55, 0x2a491ae8, 0xaccd49ca, 0xe80e9a61, 0x28b2dce9, 0x26f7c08a, 0x4d313ea1, 0x36254563, 0x161de1ee}; + static constexpr storage m = {0x5e4daffc, 0x1f9fd58c, 0x89c42a59, 0xd0ed6877, 0xd85a6d02, 0x6af2d488, + 0x6776b1a0, 0x3bbad0de, 0x582ef4f7, 0x976c3ca0, 0x0cc4060e, 0x0261508d}; + static constexpr storage one = {0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage zero = {0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage montgomery_r = {0xffffff, 0xf73fffff, 0xffffff7a, 0xf4a2bbcf, + 0xf6b7ffe8, 0x0c9dd045, 0x0aec70e1, 0xdd260cff, + 0x5eb6c4e5, 0xc4fa3f93, 0x3aef1539, 0x51c5b9e8}; + static constexpr storage montgomery_r_inv = {0x934f3a1, 0xb0909a28, 0xc1cfac62, 0x3264aa55, + 0x2a491ae8, 0xaccd49ca, 0xe80e9a61, 0x28b2dce9, + 0x26f7c08a, 0x4d313ea1, 0x36254563, 0x161de1ee}; // i^2, the square of the imaginary unit for the extension field static constexpr uint32_t i_squared = 5; // true if i^2 is negative static constexpr bool i_squared_is_negative = true; - // G1 and G2 generators - static constexpr storage g1_gen_x = {0xb21be9ef, 0xeab9b16e, 0xffcd394e, 0xd5481512, 0xbd37cb5c, 0x188282c8, - 0xaa9d41bb, 0x85951e2c, 0xbf87ff54, 0xc8fc6225, 0xfe740a67, 0x008848de}; - static constexpr storage g1_gen_y = {0x559c8ea6, 0xfd82de55, 0x34a9591a, 0xc2fe3d36, 0x4fb82305, 0x6d182ad4, - 0xca3e52d9, 0xbd7fb348, 0x30afeec4, 0x1f674f5d, 0xc5102eff, 0x01914a69}; - static constexpr storage g2_gen_x_re = {0x7c005196, 0x74e3e48f, 0xbb535402, 0x71889f52, 0x57db6b9b, 0x7ea501f5, - 0x203e5031, 0xc565f071, 0xa3841d01, 0xc89630a2, 0x71c785fe, 0x018480be}; - static constexpr storage g2_gen_x_im = {0x6ea16afe, 0xb26bfefa, 0xbff76fe6, 0x5cf89984, 0x0799c9de, 0xe7223ece, - 0x6651cecb, 0x532777ee, 0xb1b140d5, 0x70dc5a51, 0xe7004031, 0x00ea6040}; - static constexpr storage g2_gen_y_re = {0x09fd4ddf, 0xf0940944, 0x6d8c7c2e, 0xf2cf8888, 0xf832d204, 0xe458c282, - 0x74b49a58, 0xde03ed72, 0xcbb2efb4, 0xd960736b, 0x5d446f7b, 0x00690d66}; - static constexpr storage g2_gen_y_im = {0x85eb8f93, 0xd9a1cdd1, 0x5e52270b, 0x4279b83f, 0xcee304c2, 0x2463b01a, - 0x3d591bf1, 0x61ef11ac, 0x151a70aa, 0x9e549da3, 0xd2835518, 0x00f8169f}; + // G1 and G2 generators + static constexpr storage g1_gen_x = {0xb21be9ef, 0xeab9b16e, 0xffcd394e, 0xd5481512, + 0xbd37cb5c, 0x188282c8, 0xaa9d41bb, 0x85951e2c, + 0xbf87ff54, 0xc8fc6225, 0xfe740a67, 0x008848de}; + static constexpr storage g1_gen_y = {0x559c8ea6, 0xfd82de55, 0x34a9591a, 0xc2fe3d36, + 0x4fb82305, 0x6d182ad4, 0xca3e52d9, 0xbd7fb348, + 0x30afeec4, 0x1f674f5d, 0xc5102eff, 0x01914a69}; + static constexpr storage g2_gen_x_re = {0x7c005196, 0x74e3e48f, 0xbb535402, 0x71889f52, + 0x57db6b9b, 0x7ea501f5, 0x203e5031, 0xc565f071, + 0xa3841d01, 0xc89630a2, 0x71c785fe, 0x018480be}; + static constexpr storage g2_gen_x_im = {0x6ea16afe, 0xb26bfefa, 0xbff76fe6, 0x5cf89984, + 0x0799c9de, 0xe7223ece, 0x6651cecb, 0x532777ee, + 0xb1b140d5, 0x70dc5a51, 0xe7004031, 0x00ea6040}; + static constexpr storage g2_gen_y_re = {0x09fd4ddf, 0xf0940944, 0x6d8c7c2e, 0xf2cf8888, + 0xf832d204, 0xe458c282, 0x74b49a58, 0xde03ed72, + 0xcbb2efb4, 0xd960736b, 0x5d446f7b, 0x00690d66}; + static constexpr storage g2_gen_y_im = {0x85eb8f93, 0xd9a1cdd1, 0x5e52270b, 0x4279b83f, + 0xcee304c2, 0x2463b01a, 0x3d591bf1, 0x61ef11ac, + 0x151a70aa, 0x9e549da3, 0xd2835518, 0x00f8169f}; }; - static constexpr storage weierstrass_b = {0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage weierstrass_b_g2_re = {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage weierstrass_b_g2_im = {0x9999999a, 0x1c9ed999, 0x1ccccccd, 0x0dd39e5c, 0x3c6bf800, 0x129207b6, - 0xcd5fd889, 0xdc7b4f91, 0x7460c589, 0x43bd0373, 0xdb0fd6f3, 0x010222f6}; -} + static constexpr storage weierstrass_b = {0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage weierstrass_b_g2_re = { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage weierstrass_b_g2_im = { + 0x9999999a, 0x1c9ed999, 0x1ccccccd, 0x0dd39e5c, 0x3c6bf800, 0x129207b6, + 0xcd5fd889, 0xdc7b4f91, 0x7460c589, 0x43bd0373, 0xdb0fd6f3, 0x010222f6}; +} // namespace PARAMS_BLS12_377 diff --git a/icicle/curves/bls12_377/projective.cu b/icicle/curves/bls12_377/projective.cu index daa04791..70c83793 100644 --- a/icicle/curves/bls12_377/projective.cu +++ b/icicle/curves/bls12_377/projective.cu @@ -1,50 +1,45 @@ -#include -#include "curve_config.cuh" #include "../../primitives/projective.cuh" +#include "curve_config.cuh" +#include -extern "C" BLS12_377::projective_t random_projective_bls12_377() -{ - return BLS12_377::projective_t::rand_host(); -} +extern "C" BLS12_377::projective_t random_projective_bls12_377() { return BLS12_377::projective_t::rand_host(); } -extern "C" BLS12_377::projective_t projective_zero_bls12_377() -{ - return BLS12_377::projective_t::zero(); -} +extern "C" BLS12_377::projective_t projective_zero_bls12_377() { return BLS12_377::projective_t::zero(); } -extern "C" bool projective_is_on_curve_bls12_377(BLS12_377::projective_t *point1) +extern "C" bool projective_is_on_curve_bls12_377(BLS12_377::projective_t* point1) { return BLS12_377::projective_t::is_on_curve(*point1); } -extern "C" BLS12_377::affine_t projective_to_affine_bls12_377(BLS12_377::projective_t *point1) +extern "C" BLS12_377::affine_t projective_to_affine_bls12_377(BLS12_377::projective_t* point1) { return BLS12_377::projective_t::to_affine(*point1); } -extern "C" BLS12_377::projective_t projective_from_affine_bls12_377(BLS12_377::affine_t *point1) +extern "C" BLS12_377::projective_t projective_from_affine_bls12_377(BLS12_377::affine_t* point1) { return BLS12_377::projective_t::from_affine(*point1); } -extern "C" BLS12_377::scalar_field_t random_scalar_bls12_377() -{ - return BLS12_377::scalar_field_t::rand_host(); -} +extern "C" BLS12_377::scalar_field_t random_scalar_bls12_377() { return BLS12_377::scalar_field_t::rand_host(); } -extern "C" bool eq_bls12_377(BLS12_377::projective_t *point1, BLS12_377::projective_t *point2) +extern "C" bool eq_bls12_377(BLS12_377::projective_t* point1, BLS12_377::projective_t* point2) { - return (*point1 == *point2) && - !((point1->x == BLS12_377::point_field_t::zero()) && (point1->y == BLS12_377::point_field_t::zero()) && (point1->z == BLS12_377::point_field_t::zero())) && - !((point2->x == BLS12_377::point_field_t::zero()) && (point2->y == BLS12_377::point_field_t::zero()) && (point2->z == BLS12_377::point_field_t::zero())); + return (*point1 == *point2) && + !((point1->x == BLS12_377::point_field_t::zero()) && (point1->y == BLS12_377::point_field_t::zero()) && + (point1->z == BLS12_377::point_field_t::zero())) && + !((point2->x == BLS12_377::point_field_t::zero()) && (point2->y == BLS12_377::point_field_t::zero()) && + (point2->z == BLS12_377::point_field_t::zero())); } #if defined(G2_DEFINED) -extern "C" bool eq_g2_bls12_377(BLS12_377::g2_projective_t *point1, BLS12_377::g2_projective_t *point2) +extern "C" bool eq_g2_bls12_377(BLS12_377::g2_projective_t* point1, BLS12_377::g2_projective_t* point2) { - return (*point1 == *point2) && - !((point1->x == BLS12_377::g2_point_field_t::zero()) && (point1->y == BLS12_377::g2_point_field_t::zero()) && (point1->z == BLS12_377::g2_point_field_t::zero())) && - !((point2->x == BLS12_377::g2_point_field_t::zero()) && (point2->y == BLS12_377::g2_point_field_t::zero()) && (point2->z == BLS12_377::g2_point_field_t::zero())); + return (*point1 == *point2) && + !((point1->x == BLS12_377::g2_point_field_t::zero()) && (point1->y == BLS12_377::g2_point_field_t::zero()) && + (point1->z == BLS12_377::g2_point_field_t::zero())) && + !((point2->x == BLS12_377::g2_point_field_t::zero()) && (point2->y == BLS12_377::g2_point_field_t::zero()) && + (point2->z == BLS12_377::g2_point_field_t::zero())); } extern "C" BLS12_377::g2_projective_t random_g2_projective_bls12_377() @@ -52,17 +47,17 @@ extern "C" BLS12_377::g2_projective_t random_g2_projective_bls12_377() return BLS12_377::g2_projective_t::rand_host(); } -extern "C" BLS12_377::g2_affine_t g2_projective_to_affine_bls12_377(BLS12_377::g2_projective_t *point1) +extern "C" BLS12_377::g2_affine_t g2_projective_to_affine_bls12_377(BLS12_377::g2_projective_t* point1) { return BLS12_377::g2_projective_t::to_affine(*point1); } -extern "C" BLS12_377::g2_projective_t g2_projective_from_affine_bls12_377(BLS12_377::g2_affine_t *point1) +extern "C" BLS12_377::g2_projective_t g2_projective_from_affine_bls12_377(BLS12_377::g2_affine_t* point1) { return BLS12_377::g2_projective_t::from_affine(*point1); } -extern "C" bool g2_projective_is_on_curve_bls12_377(BLS12_377::g2_projective_t *point1) +extern "C" bool g2_projective_is_on_curve_bls12_377(BLS12_377::g2_projective_t* point1) { return BLS12_377::g2_projective_t::is_on_curve(*point1); } diff --git a/icicle/curves/bls12_377/supported_operations.cu b/icicle/curves/bls12_377/supported_operations.cu index 0cc19d66..3a9148f4 100644 --- a/icicle/curves/bls12_377/supported_operations.cu +++ b/icicle/curves/bls12_377/supported_operations.cu @@ -1,4 +1,4 @@ -#include "projective.cu" #include "lde.cu" #include "msm.cu" +#include "projective.cu" #include "ve_mod_mult.cu" \ No newline at end of file diff --git a/icicle/curves/bls12_377/ve_mod_mult.cu b/icicle/curves/bls12_377/ve_mod_mult.cu index 785b9cde..f2f9c55e 100644 --- a/icicle/curves/bls12_377/ve_mod_mult.cu +++ b/icicle/curves/bls12_377/ve_mod_mult.cu @@ -1,88 +1,78 @@ #ifndef _BLS12_377_VEC_MULT #define _BLS12_377_VEC_MULT -#include -#include -#include "../../primitives/field.cuh" -#include "../../utils/storage.cuh" -#include "../../primitives/projective.cuh" -#include "curve_config.cuh" #include "../../appUtils/vector_manipulation/ve_mod_mult.cuh" +#include "../../primitives/field.cuh" +#include "../../primitives/projective.cuh" +#include "../../utils/storage.cuh" +#include "curve_config.cuh" +#include +#include - -extern "C" int32_t vec_mod_mult_point_bls12_377(BLS12_377::projective_t *inout, - BLS12_377::scalar_t *scalar_vec, - size_t n_elments, - size_t device_id, - cudaStream_t stream = 0) +extern "C" int32_t vec_mod_mult_point_bls12_377( + BLS12_377::projective_t* inout, + BLS12_377::scalar_t* scalar_vec, + size_t n_elments, + size_t device_id, + cudaStream_t stream = 0) { // TODO: use device_id when working with multiple devices (void)device_id; - try - { + try { // TODO: device_id vector_mod_mult(scalar_vec, inout, inout, n_elments, stream); return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { + } catch (const std::runtime_error& ex) { printf("error %s", ex.what()); // TODO: error code and message return -1; } } -extern "C" int32_t vec_mod_mult_scalar_bls12_377(BLS12_377::scalar_t *inout, - BLS12_377::scalar_t *scalar_vec, - size_t n_elments, - size_t device_id, - cudaStream_t stream = 0) +extern "C" int32_t vec_mod_mult_scalar_bls12_377( + BLS12_377::scalar_t* inout, + BLS12_377::scalar_t* scalar_vec, + size_t n_elments, + size_t device_id, + cudaStream_t stream = 0) { // TODO: use device_id when working with multiple devices (void)device_id; - try - { + try { // TODO: device_id vector_mod_mult(scalar_vec, inout, inout, n_elments, stream); return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { + } catch (const std::runtime_error& ex) { printf("error %s", ex.what()); // TODO: error code and message return -1; } } extern "C" int32_t vec_mod_mult_device_scalar_bls12_377( - BLS12_377::scalar_t *inout, - BLS12_377::scalar_t *scalar_vec, - size_t n_elements, - size_t device_id -) { + BLS12_377::scalar_t* inout, BLS12_377::scalar_t* scalar_vec, size_t n_elements, size_t device_id) +{ try { vector_mod_mult_device(scalar_vec, inout, inout, n_elements); return CUDA_SUCCESS; - } catch (const std::runtime_error &ex) { + } catch (const std::runtime_error& ex) { printf("error %s", ex.what()); // TODO: error code and message return -1; } } -extern "C" int32_t matrix_vec_mod_mult_bls12_377(BLS12_377::scalar_t *matrix_flattened, - BLS12_377::scalar_t *input, - BLS12_377::scalar_t *output, - size_t n_elments, - size_t device_id, - cudaStream_t stream = 0) +extern "C" int32_t matrix_vec_mod_mult_bls12_377( + BLS12_377::scalar_t* matrix_flattened, + BLS12_377::scalar_t* input, + BLS12_377::scalar_t* output, + size_t n_elments, + size_t device_id, + cudaStream_t stream = 0) { // TODO: use device_id when working with multiple devices (void)device_id; - try - { + try { // TODO: device_id matrix_mod_mult(matrix_flattened, input, output, n_elments, stream); return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { + } catch (const std::runtime_error& ex) { printf("error %s", ex.what()); // TODO: error code and message return -1; } diff --git a/icicle/curves/bls12_381/curve_config.cuh b/icicle/curves/bls12_381/curve_config.cuh index 24951fa5..a0af5824 100644 --- a/icicle/curves/bls12_381/curve_config.cuh +++ b/icicle/curves/bls12_381/curve_config.cuh @@ -9,17 +9,17 @@ #include "params.cuh" namespace BLS12_381 { - typedef Field scalar_field_t; - typedef scalar_field_t scalar_t; - typedef Field point_field_t; - static constexpr point_field_t b = point_field_t{ PARAMS_BLS12_381::weierstrass_b }; - typedef Projective projective_t; - typedef Affine affine_t; - #if defined(G2_DEFINED) - typedef ExtensionField g2_point_field_t; - static constexpr g2_point_field_t b_g2 = g2_point_field_t{ point_field_t{ PARAMS_BLS12_381::weierstrass_b_g2_re }, - point_field_t{ PARAMS_BLS12_381::weierstrass_b_g2_im }}; - typedef Projective g2_projective_t; - typedef Affine g2_affine_t; - #endif -} \ No newline at end of file + typedef Field scalar_field_t; + typedef scalar_field_t scalar_t; + typedef Field point_field_t; + static constexpr point_field_t b = point_field_t{PARAMS_BLS12_381::weierstrass_b}; + typedef Projective projective_t; + typedef Affine affine_t; +#if defined(G2_DEFINED) + typedef ExtensionField g2_point_field_t; + static constexpr g2_point_field_t b_g2 = g2_point_field_t{ + point_field_t{PARAMS_BLS12_381::weierstrass_b_g2_re}, point_field_t{PARAMS_BLS12_381::weierstrass_b_g2_im}}; + typedef Projective g2_projective_t; + typedef Affine g2_affine_t; +#endif +} // namespace BLS12_381 \ No newline at end of file diff --git a/icicle/curves/bls12_381/lde.cu b/icicle/curves/bls12_381/lde.cu index 6b856d9d..fe1fc7e8 100644 --- a/icicle/curves/bls12_381/lde.cu +++ b/icicle/curves/bls12_381/lde.cu @@ -1,523 +1,560 @@ #ifndef _BLS12_381_LDE #define _BLS12_381_LDE -#include #include "../../appUtils/ntt/lde.cu" #include "../../appUtils/ntt/ntt.cuh" #include "../../appUtils/vector_manipulation/ve_mod_mult.cuh" -#include "curve_config.cuh" #include "../../utils/mont.cuh" +#include "curve_config.cuh" +#include -extern "C" BLS12_381::scalar_t* build_domain_cuda_bls12_381(uint32_t domain_size, uint32_t logn, bool inverse, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" BLS12_381::scalar_t* build_domain_cuda_bls12_381( + uint32_t domain_size, uint32_t logn, bool inverse, size_t device_id = 0, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - if (inverse) { - return fill_twiddle_factors_array(domain_size, BLS12_381::scalar_t::omega_inv(logn), stream); - } else { - return fill_twiddle_factors_array(domain_size, BLS12_381::scalar_t::omega(logn), stream); - } - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return nullptr; + try { + cudaStreamCreate(&stream); + if (inverse) { + return fill_twiddle_factors_array(domain_size, BLS12_381::scalar_t::omega_inv(logn), stream); + } else { + return fill_twiddle_factors_array(domain_size, BLS12_381::scalar_t::omega(logn), stream); } + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return nullptr; + } } -extern "C" int ntt_cuda_bls12_381(BLS12_381::scalar_t *arr, uint32_t n, bool inverse, Decimation decimation, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int ntt_cuda_bls12_381( + BLS12_381::scalar_t* arr, + uint32_t n, + bool inverse, + Decimation decimation, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return ntt_end2end_template(arr, n, inverse, stream); // TODO: pass device_id - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - - return -1; - } + try { + cudaStreamCreate(&stream); + return ntt_end2end_template( + arr, n, inverse, stream); // TODO: pass device_id + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + + return -1; + } } -extern "C" int ecntt_cuda_bls12_381(BLS12_381::projective_t *arr, uint32_t n, bool inverse, Decimation decimation, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int ecntt_cuda_bls12_381( + BLS12_381::projective_t* arr, + uint32_t n, + bool inverse, + Decimation decimation, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return ntt_end2end_template(arr, n, inverse, stream); // TODO: pass device_id - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return ntt_end2end_template( + arr, n, inverse, stream); // TODO: pass device_id + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int ntt_batch_cuda_bls12_381(BLS12_381::scalar_t *arr, uint32_t arr_size, uint32_t batch_size, bool inverse, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int ntt_batch_cuda_bls12_381( + BLS12_381::scalar_t* arr, + uint32_t arr_size, + uint32_t batch_size, + bool inverse, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return ntt_end2end_batch_template(arr, arr_size, batch_size, inverse, stream); // TODO: pass device_id - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return ntt_end2end_batch_template( + arr, arr_size, batch_size, inverse, stream); // TODO: pass device_id + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int ecntt_batch_cuda_bls12_381(BLS12_381::projective_t *arr, uint32_t arr_size, uint32_t batch_size, bool inverse, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int ecntt_batch_cuda_bls12_381( + BLS12_381::projective_t* arr, + uint32_t arr_size, + uint32_t batch_size, + bool inverse, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return ntt_end2end_batch_template(arr, arr_size, batch_size, inverse, stream); // TODO: pass device_id - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return ntt_end2end_batch_template( + arr, arr_size, batch_size, inverse, stream); // TODO: pass device_id + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int interpolate_scalars_cuda_bls12_381(BLS12_381::scalar_t* d_out, BLS12_381::scalar_t *d_evaluations, BLS12_381::scalar_t *d_domain, unsigned n, unsigned device_id = 0, cudaStream_t stream = 0) +extern "C" int interpolate_scalars_cuda_bls12_381( + BLS12_381::scalar_t* d_out, + BLS12_381::scalar_t* d_evaluations, + BLS12_381::scalar_t* d_domain, + unsigned n, + unsigned device_id = 0, + cudaStream_t stream = 0) { - try - { - BLS12_381::scalar_t* _null = nullptr; - return interpolate(d_out, d_evaluations, d_domain, n, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + BLS12_381::scalar_t* _null = nullptr; + return interpolate(d_out, d_evaluations, d_domain, n, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int interpolate_scalars_batch_cuda_bls12_381(BLS12_381::scalar_t* d_out, BLS12_381::scalar_t* d_evaluations, BLS12_381::scalar_t* d_domain, unsigned n, - unsigned batch_size, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int interpolate_scalars_batch_cuda_bls12_381( + BLS12_381::scalar_t* d_out, + BLS12_381::scalar_t* d_evaluations, + BLS12_381::scalar_t* d_domain, + unsigned n, + unsigned batch_size, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - BLS12_381::scalar_t* _null = nullptr; - cudaStreamCreate(&stream); - return interpolate_batch(d_out, d_evaluations, d_domain, n, batch_size, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + BLS12_381::scalar_t* _null = nullptr; + cudaStreamCreate(&stream); + return interpolate_batch(d_out, d_evaluations, d_domain, n, batch_size, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int interpolate_points_cuda_bls12_381(BLS12_381::projective_t* d_out, BLS12_381::projective_t *d_evaluations, BLS12_381::scalar_t *d_domain, unsigned n, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int interpolate_points_cuda_bls12_381( + BLS12_381::projective_t* d_out, + BLS12_381::projective_t* d_evaluations, + BLS12_381::scalar_t* d_domain, + unsigned n, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - BLS12_381::scalar_t* _null = nullptr; - return interpolate(d_out, d_evaluations, d_domain, n, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + BLS12_381::scalar_t* _null = nullptr; + return interpolate(d_out, d_evaluations, d_domain, n, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int interpolate_points_batch_cuda_bls12_381(BLS12_381::projective_t* d_out, BLS12_381::projective_t* d_evaluations, BLS12_381::scalar_t* d_domain, - unsigned n, unsigned batch_size, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int interpolate_points_batch_cuda_bls12_381( + BLS12_381::projective_t* d_out, + BLS12_381::projective_t* d_evaluations, + BLS12_381::scalar_t* d_domain, + unsigned n, + unsigned batch_size, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - BLS12_381::scalar_t* _null = nullptr; - cudaStreamCreate(&stream); - return interpolate_batch(d_out, d_evaluations, d_domain, n, batch_size, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + BLS12_381::scalar_t* _null = nullptr; + cudaStreamCreate(&stream); + return interpolate_batch(d_out, d_evaluations, d_domain, n, batch_size, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int evaluate_scalars_cuda_bls12_381(BLS12_381::scalar_t* d_out, BLS12_381::scalar_t *d_coefficients, BLS12_381::scalar_t *d_domain, - unsigned domain_size, unsigned n, unsigned device_id = 0, cudaStream_t stream = 0) +extern "C" int evaluate_scalars_cuda_bls12_381( + BLS12_381::scalar_t* d_out, + BLS12_381::scalar_t* d_coefficients, + BLS12_381::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned device_id = 0, + cudaStream_t stream = 0) { - try - { - BLS12_381::scalar_t* _null = nullptr; - cudaStreamCreate(&stream); - return evaluate(d_out, d_coefficients, d_domain, domain_size, n, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + BLS12_381::scalar_t* _null = nullptr; + cudaStreamCreate(&stream); + return evaluate(d_out, d_coefficients, d_domain, domain_size, n, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int evaluate_scalars_batch_cuda_bls12_381(BLS12_381::scalar_t* d_out, BLS12_381::scalar_t* d_coefficients, BLS12_381::scalar_t* d_domain, unsigned domain_size, - unsigned n, unsigned batch_size, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int evaluate_scalars_batch_cuda_bls12_381( + BLS12_381::scalar_t* d_out, + BLS12_381::scalar_t* d_coefficients, + BLS12_381::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - BLS12_381::scalar_t* _null = nullptr; - cudaStreamCreate(&stream); - auto result_code = evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, false, _null, 0); - cudaStreamDestroy(stream); - return result_code; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + BLS12_381::scalar_t* _null = nullptr; + cudaStreamCreate(&stream); + auto result_code = evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, false, _null, 0); + cudaStreamDestroy(stream); + return result_code; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int evaluate_points_cuda_bls12_381(BLS12_381::projective_t* d_out, BLS12_381::projective_t *d_coefficients, BLS12_381::scalar_t *d_domain, - unsigned domain_size, unsigned n, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int evaluate_points_cuda_bls12_381( + BLS12_381::projective_t* d_out, + BLS12_381::projective_t* d_coefficients, + BLS12_381::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - BLS12_381::scalar_t* _null = nullptr; - cudaStreamCreate(&stream); - return evaluate(d_out, d_coefficients, d_domain, domain_size, n, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + BLS12_381::scalar_t* _null = nullptr; + cudaStreamCreate(&stream); + return evaluate(d_out, d_coefficients, d_domain, domain_size, n, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int evaluate_points_batch_cuda_bls12_381(BLS12_381::projective_t* d_out, BLS12_381::projective_t* d_coefficients, BLS12_381::scalar_t* d_domain, unsigned domain_size, - unsigned n, unsigned batch_size, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int evaluate_points_batch_cuda_bls12_381( + BLS12_381::projective_t* d_out, + BLS12_381::projective_t* d_coefficients, + BLS12_381::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - BLS12_381::scalar_t* _null = nullptr; - cudaStreamCreate(&stream); - auto result_code = evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, false, _null, stream); - cudaStreamDestroy(stream); - return result_code; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + BLS12_381::scalar_t* _null = nullptr; + cudaStreamCreate(&stream); + auto result_code = + evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, false, _null, stream); + cudaStreamDestroy(stream); + return result_code; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int evaluate_scalars_on_coset_cuda_bls12_381(BLS12_381::scalar_t* d_out, BLS12_381::scalar_t *d_coefficients, BLS12_381::scalar_t *d_domain, unsigned domain_size, - unsigned n, BLS12_381::scalar_t *coset_powers, unsigned device_id = 0, cudaStream_t stream = 0) +extern "C" int evaluate_scalars_on_coset_cuda_bls12_381( + BLS12_381::scalar_t* d_out, + BLS12_381::scalar_t* d_coefficients, + BLS12_381::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + BLS12_381::scalar_t* coset_powers, + unsigned device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return evaluate(d_out, d_coefficients, d_domain, domain_size, n, true, coset_powers, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return evaluate(d_out, d_coefficients, d_domain, domain_size, n, true, coset_powers, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int evaluate_scalars_on_coset_batch_cuda_bls12_381(BLS12_381::scalar_t* d_out, BLS12_381::scalar_t* d_coefficients, BLS12_381::scalar_t* d_domain, unsigned domain_size, - unsigned n, unsigned batch_size, BLS12_381::scalar_t *coset_powers, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int evaluate_scalars_on_coset_batch_cuda_bls12_381( + BLS12_381::scalar_t* d_out, + BLS12_381::scalar_t* d_coefficients, + BLS12_381::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + BLS12_381::scalar_t* coset_powers, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, true, coset_powers, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, true, coset_powers, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int evaluate_points_on_coset_cuda_bls12_381(BLS12_381::projective_t* d_out, BLS12_381::projective_t *d_coefficients, BLS12_381::scalar_t *d_domain, unsigned domain_size, - unsigned n, BLS12_381::scalar_t *coset_powers, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int evaluate_points_on_coset_cuda_bls12_381( + BLS12_381::projective_t* d_out, + BLS12_381::projective_t* d_coefficients, + BLS12_381::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + BLS12_381::scalar_t* coset_powers, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); //TODO: don't create if default was passed, destroy what was created, same applies to all calls - return evaluate(d_out, d_coefficients, d_domain, domain_size, n, true, coset_powers, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate( + &stream); // TODO: don't create if default was passed, destroy what was created, same applies to all calls + return evaluate(d_out, d_coefficients, d_domain, domain_size, n, true, coset_powers, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int evaluate_points_on_coset_batch_cuda_bls12_381(BLS12_381::projective_t* d_out, BLS12_381::projective_t* d_coefficients, BLS12_381::scalar_t* d_domain, unsigned domain_size, - unsigned n, unsigned batch_size, BLS12_381::scalar_t *coset_powers, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int evaluate_points_on_coset_batch_cuda_bls12_381( + BLS12_381::projective_t* d_out, + BLS12_381::projective_t* d_coefficients, + BLS12_381::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + BLS12_381::scalar_t* coset_powers, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, true, coset_powers, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, true, coset_powers, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int ntt_inplace_batch_cuda_bls12_381(BLS12_381::scalar_t* d_inout, BLS12_381::scalar_t* d_twiddles, - unsigned n, unsigned batch_size, bool inverse, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int ntt_inplace_batch_cuda_bls12_381( + BLS12_381::scalar_t* d_inout, + BLS12_381::scalar_t* d_twiddles, + unsigned n, + unsigned batch_size, + bool inverse, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - BLS12_381::scalar_t* _null = nullptr; - ntt_inplace_batch_template(d_inout, d_twiddles, n, batch_size, inverse, false, _null, stream, true); - return CUDA_SUCCESS; //TODO: we should implement this https://leimao.github.io/blog/Proper-CUDA-Error-Checking/ - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + BLS12_381::scalar_t* _null = nullptr; + ntt_inplace_batch_template(d_inout, d_twiddles, n, batch_size, inverse, false, _null, stream, true); + return CUDA_SUCCESS; // TODO: we should implement this https://leimao.github.io/blog/Proper-CUDA-Error-Checking/ + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int reverse_order_scalars_cuda_bls12_381(BLS12_381::scalar_t* arr, int n, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int +reverse_order_scalars_cuda_bls12_381(BLS12_381::scalar_t* arr, int n, size_t device_id = 0, cudaStream_t stream = 0) { - try - { - uint32_t logn = uint32_t(log(n) / log(2)); - cudaStreamCreate(&stream); - reverse_order(arr, n, logn, stream); - return 0; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + uint32_t logn = uint32_t(log(n) / log(2)); + cudaStreamCreate(&stream); + reverse_order(arr, n, logn, stream); + return 0; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int reverse_order_scalars_batch_cuda_bls12_381(BLS12_381::scalar_t* arr, int n, int batch_size, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int reverse_order_scalars_batch_cuda_bls12_381( + BLS12_381::scalar_t* arr, int n, int batch_size, size_t device_id = 0, cudaStream_t stream = 0) { - try - { - uint32_t logn = uint32_t(log(n) / log(2)); - cudaStreamCreate(&stream); - reverse_order_batch(arr, n, logn, batch_size, stream); - return 0; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + uint32_t logn = uint32_t(log(n) / log(2)); + cudaStreamCreate(&stream); + reverse_order_batch(arr, n, logn, batch_size, stream); + return 0; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int reverse_order_points_cuda_bls12_381(BLS12_381::projective_t* arr, int n, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int +reverse_order_points_cuda_bls12_381(BLS12_381::projective_t* arr, int n, size_t device_id = 0, cudaStream_t stream = 0) { - try - { - uint32_t logn = uint32_t(log(n) / log(2)); - cudaStreamCreate(&stream); - reverse_order(arr, n, logn, stream); - return 0; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + uint32_t logn = uint32_t(log(n) / log(2)); + cudaStreamCreate(&stream); + reverse_order(arr, n, logn, stream); + return 0; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int sub_scalars_cuda_bls12_381(BLS12_381::scalar_t* d_out, BLS12_381::scalar_t* d_in1, BLS12_381::scalar_t* d_in2, unsigned n, cudaStream_t stream = 0) +extern "C" int sub_scalars_cuda_bls12_381( + BLS12_381::scalar_t* d_out, + BLS12_381::scalar_t* d_in1, + BLS12_381::scalar_t* d_in2, + unsigned n, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return sub_polys(d_out, d_in1, d_in2, n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return sub_polys(d_out, d_in1, d_in2, n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int add_scalars_cuda_bls12_381(BLS12_381::scalar_t* d_out, BLS12_381::scalar_t* d_in1, BLS12_381::scalar_t* d_in2, unsigned n, cudaStream_t stream = 0) +extern "C" int add_scalars_cuda_bls12_381( + BLS12_381::scalar_t* d_out, + BLS12_381::scalar_t* d_in1, + BLS12_381::scalar_t* d_in2, + unsigned n, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return add_polys(d_out, d_in1, d_in2, n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return add_polys(d_out, d_in1, d_in2, n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } extern "C" int to_montgomery_scalars_cuda_bls12_381(BLS12_381::scalar_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return to_montgomery(d_inout, n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return to_montgomery(d_inout, n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } extern "C" int from_montgomery_scalars_cuda_bls12_381(BLS12_381::scalar_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return from_montgomery(d_inout, n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return from_montgomery(d_inout, n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int to_montgomery_proj_points_cuda_bls12_381(BLS12_381::projective_t* d_inout, unsigned n, cudaStream_t stream = 0) +extern "C" int +to_montgomery_proj_points_cuda_bls12_381(BLS12_381::projective_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return to_montgomery((BLS12_381::point_field_t*)d_inout, 3 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return to_montgomery((BLS12_381::point_field_t*)d_inout, 3 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int from_montgomery_proj_points_cuda_bls12_381(BLS12_381::projective_t* d_inout, unsigned n, cudaStream_t stream = 0) +extern "C" int +from_montgomery_proj_points_cuda_bls12_381(BLS12_381::projective_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return from_montgomery((BLS12_381::point_field_t*)d_inout, 3 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return from_montgomery((BLS12_381::point_field_t*)d_inout, 3 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int to_montgomery_aff_points_cuda_bls12_381(BLS12_381::affine_t* d_inout, unsigned n, cudaStream_t stream = 0) +extern "C" int +to_montgomery_aff_points_cuda_bls12_381(BLS12_381::affine_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return to_montgomery((BLS12_381::point_field_t*)d_inout, 2 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return to_montgomery((BLS12_381::point_field_t*)d_inout, 2 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int from_montgomery_aff_points_cuda_bls12_381(BLS12_381::affine_t* d_inout, unsigned n, cudaStream_t stream = 0) +extern "C" int +from_montgomery_aff_points_cuda_bls12_381(BLS12_381::affine_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return from_montgomery((BLS12_381::point_field_t*)d_inout, 2 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return from_montgomery((BLS12_381::point_field_t*)d_inout, 2 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } #if defined(G2_DEFINED) -extern "C" int to_montgomery_proj_points_g2_cuda_bls12_381(BLS12_381::g2_projective_t* d_inout, unsigned n, cudaStream_t stream = 0) +extern "C" int +to_montgomery_proj_points_g2_cuda_bls12_381(BLS12_381::g2_projective_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return to_montgomery((BLS12_381::point_field_t*)d_inout, 6 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return to_montgomery((BLS12_381::point_field_t*)d_inout, 6 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int from_montgomery_proj_points_g2_cuda_bls12_381(BLS12_381::g2_projective_t* d_inout, unsigned n, cudaStream_t stream = 0) +extern "C" int +from_montgomery_proj_points_g2_cuda_bls12_381(BLS12_381::g2_projective_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return from_montgomery((BLS12_381::point_field_t*)d_inout, 6 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return from_montgomery((BLS12_381::point_field_t*)d_inout, 6 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int to_montgomery_aff_points_g2_cuda_bls12_381(BLS12_381::g2_affine_t* d_inout, unsigned n, cudaStream_t stream = 0) +extern "C" int +to_montgomery_aff_points_g2_cuda_bls12_381(BLS12_381::g2_affine_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return to_montgomery((BLS12_381::point_field_t*)d_inout, 4 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return to_montgomery((BLS12_381::point_field_t*)d_inout, 4 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int from_montgomery_aff_points_g2_cuda_bls12_381(BLS12_381::g2_affine_t* d_inout, unsigned n, cudaStream_t stream = 0) +extern "C" int +from_montgomery_aff_points_g2_cuda_bls12_381(BLS12_381::g2_affine_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return from_montgomery((BLS12_381::point_field_t*)d_inout, 4 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return from_montgomery((BLS12_381::point_field_t*)d_inout, 4 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } #endif -extern "C" int reverse_order_points_batch_cuda_bls12_381(BLS12_381::projective_t* arr, int n, int batch_size, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int reverse_order_points_batch_cuda_bls12_381( + BLS12_381::projective_t* arr, int n, int batch_size, size_t device_id = 0, cudaStream_t stream = 0) { - try - { - uint32_t logn = uint32_t(log(n) / log(2)); - cudaStreamCreate(&stream); - reverse_order_batch(arr, n, logn, batch_size, stream); - return 0; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + uint32_t logn = uint32_t(log(n) / log(2)); + cudaStreamCreate(&stream); + reverse_order_batch(arr, n, logn, batch_size, stream); + return 0; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } #endif \ No newline at end of file diff --git a/icicle/curves/bls12_381/msm.cu b/icicle/curves/bls12_381/msm.cu index 904334d5..78d1c5e0 100644 --- a/icicle/curves/bls12_381/msm.cu +++ b/icicle/curves/bls12_381/msm.cu @@ -1,41 +1,47 @@ #ifndef _BLS12_381_MSM #define _BLS12_381_MSM #include "../../appUtils/msm/msm.cu" -#include -#include #include "curve_config.cuh" +#include +#include - -extern "C" -int msm_cuda_bls12_381(BLS12_381::projective_t *out, BLS12_381::affine_t points[], - BLS12_381::scalar_t scalars[], size_t count, unsigned large_bucket_factor, size_t device_id = 0, cudaStream_t stream = 0) //TODO: unify parameter types size_t/unsigned etc +extern "C" int msm_cuda_bls12_381( + BLS12_381::projective_t* out, + BLS12_381::affine_t points[], + BLS12_381::scalar_t scalars[], + size_t count, + unsigned large_bucket_factor, + size_t device_id = 0, + cudaStream_t stream = 0) // TODO: unify parameter types size_t/unsigned etc { - try - { - cudaStreamCreate(&stream); - large_msm(scalars, points, count, out, false, false, large_bucket_factor, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int msm_batch_cuda_bls12_381(BLS12_381::projective_t* out, BLS12_381::affine_t points[], - BLS12_381::scalar_t scalars[], size_t batch_size, size_t msm_size, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { + try { cudaStreamCreate(&stream); - batched_large_msm(scalars, points, batch_size, msm_size, out, false, stream); + large_msm( + scalars, points, count, out, false, false, large_bucket_factor, stream); cudaStreamSynchronize(stream); return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; } - catch (const std::runtime_error &ex) - { +} + +extern "C" int msm_batch_cuda_bls12_381( + BLS12_381::projective_t* out, + BLS12_381::affine_t points[], + BLS12_381::scalar_t scalars[], + size_t batch_size, + size_t msm_size, + size_t device_id = 0, + cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + batched_large_msm( + scalars, points, batch_size, msm_size, out, false, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { printf("error %s", ex.what()); return -1; } @@ -43,144 +49,168 @@ extern "C" int msm_batch_cuda_bls12_381(BLS12_381::projective_t* out, BLS12_381: /** * Commit to a polynomial using the MSM. - * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or points. + * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or + * points. * @param d_out Ouptut point to write the result to. * @param d_scalars Scalars for the MSM. Must be on device. * @param d_points Points for the MSM. Must be on device. * @param count Length of `d_scalars` and `d_points` arrays (they should have equal length). */ - extern "C" - int commit_cuda_bls12_381(BLS12_381::projective_t* d_out, BLS12_381::scalar_t* d_scalars, BLS12_381::affine_t* d_points, size_t count, unsigned large_bucket_factor, size_t device_id = 0, cudaStream_t stream = 0) - { - try - { - cudaStreamCreate(&stream); - large_msm(d_scalars, d_points, count, d_out, true, false, large_bucket_factor, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } - } - - /** - * Commit to a batch of polynomials using the MSM. - * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or points. - * @param d_out Ouptut point to write the results to. - * @param d_scalars Scalars for the MSMs of all polynomials. Must be on device. - * @param d_points Points for the MSMs. Must be on device. It is assumed that this set of bases is used for each MSM. - * @param count Length of `d_points` array, `d_scalar` has length `count` * `batch_size`. - * @param batch_size Size of the batch. - */ - extern "C" - int commit_batch_cuda_bls12_381(BLS12_381::projective_t* d_out, BLS12_381::scalar_t* d_scalars, BLS12_381::affine_t* d_points, size_t count, size_t batch_size, size_t device_id = 0, cudaStream_t stream = 0) - { - try - { - cudaStreamCreate(&stream); - batched_large_msm(d_scalars, d_points, batch_size, count, d_out, true, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } - } - -#if defined(G2_DEFINED) -extern "C" -int msm_g2_cuda_bls12_381(BLS12_381::g2_projective_t *out, BLS12_381::g2_affine_t points[], - BLS12_381::scalar_t scalars[], size_t count, unsigned large_bucket_factor, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int commit_cuda_bls12_381( + BLS12_381::projective_t* d_out, + BLS12_381::scalar_t* d_scalars, + BLS12_381::affine_t* d_points, + size_t count, + unsigned large_bucket_factor, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - large_msm(scalars, points, count, out, false, false, large_bucket_factor, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + large_msm(d_scalars, d_points, count, d_out, true, false, large_bucket_factor, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int msm_batch_g2_cuda_bls12_381(BLS12_381::g2_projective_t* out, BLS12_381::g2_affine_t points[], - BLS12_381::scalar_t scalars[], size_t batch_size, size_t msm_size, size_t device_id = 0, cudaStream_t stream = 0) +/** + * Commit to a batch of polynomials using the MSM. + * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or + * points. + * @param d_out Ouptut point to write the results to. + * @param d_scalars Scalars for the MSMs of all polynomials. Must be on device. + * @param d_points Points for the MSMs. Must be on device. It is assumed that this set of bases is used for each MSM. + * @param count Length of `d_points` array, `d_scalar` has length `count` * `batch_size`. + * @param batch_size Size of the batch. + */ +extern "C" int commit_batch_cuda_bls12_381( + BLS12_381::projective_t* d_out, + BLS12_381::scalar_t* d_scalars, + BLS12_381::affine_t* d_points, + size_t count, + size_t batch_size, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - batched_large_msm(scalars, points, batch_size, msm_size, out, false, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + batched_large_msm(d_scalars, d_points, batch_size, count, d_out, true, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +#if defined(G2_DEFINED) +extern "C" int msm_g2_cuda_bls12_381( + BLS12_381::g2_projective_t* out, + BLS12_381::g2_affine_t points[], + BLS12_381::scalar_t scalars[], + size_t count, + unsigned large_bucket_factor, + size_t device_id = 0, + cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + large_msm( + scalars, points, count, out, false, false, large_bucket_factor, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int msm_batch_g2_cuda_bls12_381( + BLS12_381::g2_projective_t* out, + BLS12_381::g2_affine_t points[], + BLS12_381::scalar_t scalars[], + size_t batch_size, + size_t msm_size, + size_t device_id = 0, + cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + batched_large_msm( + scalars, points, batch_size, msm_size, out, false, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } /** * Commit to a polynomial using the MSM in G2 group. - * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or points. + * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or + * points. * @param d_out Ouptut G2 point to write the result to. * @param d_scalars Scalars for the MSM. Must be on device. * @param d_points G2 affine points for the MSM. Must be on device. * @param count Length of `d_scalars` and `d_points` arrays (they should have equal length). */ -extern "C" -int commit_g2_cuda_bls12_381(BLS12_381::g2_projective_t* d_out, BLS12_381::scalar_t* d_scalars, BLS12_381::g2_affine_t* d_points, size_t count, unsigned large_bucket_factor, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int commit_g2_cuda_bls12_381( + BLS12_381::g2_projective_t* d_out, + BLS12_381::scalar_t* d_scalars, + BLS12_381::g2_affine_t* d_points, + size_t count, + unsigned large_bucket_factor, + size_t device_id = 0, + cudaStream_t stream = 0) { - // TODO: use device_id when working with multiple devices - (void)device_id; - try - { - cudaStreamCreate(&stream); - large_msm(d_scalars, d_points, count, d_out, true, false, large_bucket_factor, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + // TODO: use device_id when working with multiple devices + (void)device_id; + try { + cudaStreamCreate(&stream); + large_msm(d_scalars, d_points, count, d_out, true, false, large_bucket_factor, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } - - /** - * Commit to a batch of polynomials using the MSM. - * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or points. - * @param d_out Ouptut G2 point to write the results to. - * @param d_scalars Scalars for the MSMs of all polynomials. Must be on device. - * @param d_points G2 affine points for the MSMs. Must be on device. It is assumed that this set of bases is used for each MSM. - * @param count Length of `d_points` array, `d_scalar` has length `count` * `batch_size`. - * @param batch_size Size of the batch. - */ -extern "C" -int commit_batch_g2_cuda_bls12_381(BLS12_381::g2_projective_t* d_out, BLS12_381::scalar_t* d_scalars, BLS12_381::g2_affine_t* d_points, size_t count, size_t batch_size, size_t device_id = 0, cudaStream_t stream = 0) + +/** + * Commit to a batch of polynomials using the MSM. + * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or + * points. + * @param d_out Ouptut G2 point to write the results to. + * @param d_scalars Scalars for the MSMs of all polynomials. Must be on device. + * @param d_points G2 affine points for the MSMs. Must be on device. It is assumed that this set of bases is used for + * each MSM. + * @param count Length of `d_points` array, `d_scalar` has length `count` * `batch_size`. + * @param batch_size Size of the batch. + */ +extern "C" int commit_batch_g2_cuda_bls12_381( + BLS12_381::g2_projective_t* d_out, + BLS12_381::scalar_t* d_scalars, + BLS12_381::g2_affine_t* d_points, + size_t count, + size_t batch_size, + size_t device_id = 0, + cudaStream_t stream = 0) { - // TODO: use device_id when working with multiple devices - (void)device_id; - try - { - cudaStreamCreate(&stream); - batched_large_msm(d_scalars, d_points, batch_size, count, d_out, true, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + // TODO: use device_id when working with multiple devices + (void)device_id; + try { + cudaStreamCreate(&stream); + batched_large_msm(d_scalars, d_points, batch_size, count, d_out, true, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } #endif #endif diff --git a/icicle/curves/bls12_381/params.cuh b/icicle/curves/bls12_381/params.cuh index 6d75a2a2..d1da2931 100644 --- a/icicle/curves/bls12_381/params.cuh +++ b/icicle/curves/bls12_381/params.cuh @@ -1,219 +1,411 @@ #pragma once #include "../../utils/storage.cuh" -namespace PARAMS_BLS12_381{ +namespace PARAMS_BLS12_381 { struct fp_config { // field structure size = 8 * 32 bit static constexpr unsigned limbs_count = 8; static constexpr unsigned omegas_count = 32; // modulus = 52435875175126190479447740508185965837690552500527637822603658699938581184513 - static constexpr storage modulus = {0x00000001, 0xffffffff, 0xfffe5bfe, 0x53bda402, 0x09a1d805, 0x3339d808, 0x299d7d48, 0x73eda753}; + static constexpr storage modulus = {0x00000001, 0xffffffff, 0xfffe5bfe, 0x53bda402, + 0x09a1d805, 0x3339d808, 0x299d7d48, 0x73eda753}; // modulus*2 = 104871750350252380958895481016371931675381105001055275645207317399877162369026 - static constexpr storage modulus_2 = {0x00000002, 0xfffffffe, 0xfffcb7fd, 0xa77b4805, 0x1343b00a, 0x6673b010, 0x533afa90, 0xe7db4ea6}; - static constexpr storage modulus_4 = {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - - static constexpr storage<2 * limbs_count> modulus_wide = {0x00000001, 0xffffffff, 0xfffe5bfe, 0x53bda402, 0x09a1d805, 0x3339d808, 0x299d7d48, 0x73eda753, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage modulus_2 = {0x00000002, 0xfffffffe, 0xfffcb7fd, 0xa77b4805, + 0x1343b00a, 0x6673b010, 0x533afa90, 0xe7db4ea6}; + static constexpr storage modulus_4 = {0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + + static constexpr storage<2 * limbs_count> modulus_wide = { + 0x00000001, 0xffffffff, 0xfffe5bfe, 0x53bda402, 0x09a1d805, 0x3339d808, 0x299d7d48, 0x73eda753, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; // modulus^2 - static constexpr storage<2*limbs_count> modulus_squared = {0x00000001, 0xfffffffe, 0xfffcb7fe, 0xa77e9007, 0x1cdbb005, 0x698ae002, 0x5433f7b8, 0x48aa415e, - 0x4aa9c661, 0xc2611f6f, 0x59934a1d, 0x0e9593f9, 0xef2cc20f, 0x520c13db, 0xf4bc2778, 0x347f60f3}; + static constexpr storage<2 * limbs_count> modulus_squared = { + 0x00000001, 0xfffffffe, 0xfffcb7fe, 0xa77e9007, 0x1cdbb005, 0x698ae002, 0x5433f7b8, 0x48aa415e, + 0x4aa9c661, 0xc2611f6f, 0x59934a1d, 0x0e9593f9, 0xef2cc20f, 0x520c13db, 0xf4bc2778, 0x347f60f3}; // 2*modulus^2 - static constexpr storage<2*limbs_count> modulus_squared_2 = {0x00000002, 0xfffffffc, 0xfff96ffd, 0x4efd200f, 0x39b7600b, 0xd315c004, 0xa867ef70, 0x915482bc, - 0x95538cc2, 0x84c23ede, 0xb326943b, 0x1d2b27f2, 0xde59841e, 0xa41827b7, 0xe9784ef0, 0x68fec1e7}; + static constexpr storage<2 * limbs_count> modulus_squared_2 = { + 0x00000002, 0xfffffffc, 0xfff96ffd, 0x4efd200f, 0x39b7600b, 0xd315c004, 0xa867ef70, 0x915482bc, + 0x95538cc2, 0x84c23ede, 0xb326943b, 0x1d2b27f2, 0xde59841e, 0xa41827b7, 0xe9784ef0, 0x68fec1e7}; // note: doesnt actually fit into 384 bits, and shouldnt be used! is added for compilation - static constexpr storage<2*limbs_count> modulus_squared_4 = {0x00000002, 0xfffffffc, 0xfff96ffd, 0x4efd200f, 0x39b7600b, 0xd315c004, 0xa867ef70, 0x915482bc, - 0x95538cc2, 0x84c23ede, 0xb326943b, 0x1d2b27f2, 0xde59841e, 0xa41827b7, 0xe9784ef0, 0x68fec1e7}; + static constexpr storage<2 * limbs_count> modulus_squared_4 = { + 0x00000002, 0xfffffffc, 0xfff96ffd, 0x4efd200f, 0x39b7600b, 0xd315c004, 0xa867ef70, 0x915482bc, + 0x95538cc2, 0x84c23ede, 0xb326943b, 0x1d2b27f2, 0xde59841e, 0xa41827b7, 0xe9784ef0, 0x68fec1e7}; static constexpr unsigned modulus_bit_count = 255; // m = floor(2^(2*modulus_bit_count) / modulus) - static constexpr storage m = {0x830358e4, 0x509cde80, 0x2f92eb5c, 0xd9410fad, 0xc1f823b4, 0xe2d772d, 0x7fb78ddf, 0x8d54253b}; - - static constexpr storage one = {0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage zero = {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage montgomery_r = {0xfffffffe, 0x00000001, 0x00034802, 0x5884b7fa, 0xecbc4ff5, 0x998c4fef, 0xacc5056f, 0x1824b159}; - static constexpr storage montgomery_r_inv = {0xfe75c040, 0x13f75b69, 0x09dc705f, 0xab6fca8f, 0x4f77266a, 0x7204078a, 0x30009d57, 0x1bbe8693}; - - // static constexpr storage omega[32]= { {0x00000000, 0xffffffff, 0xfffe5bfe, 0x53bda402, 0x09a1d805, 0x3339d808, 0x299d7d48, 0x73eda753}, {0x00000000, 0x00010000, 0x76030000, 0xec030002, 0x760304d0, 0x8d51ccce, 0x00000000, 0x00000000}, {0x688bc087, 0x8dd702cb, 0x78eaa4fe, 0xa0328240, 0x98ca5b22, 0xa733b23a, 0x25a31660, 0x3f96405d}, {0x0411fe73, 0x95df4b36, 0xebc1e1bb, 0x1ef4e672, 0x60afca4a, 0x6e92a9c4, 0x753e4fcc, 0x4f2c596e}, {0xba60eaa6, 0x9733f3a6, 0x77487ae7, 0xbd7fdf9c, 0xc8b6cc00, 0xd84f8612, 0x6162ffab, 0x476fa2fb}, {0xac5db47f, 0xd2fc5e69, 0x15d0b8e4, 0xa12a70a6, 0xbc8de5d9, 0x293b1d67, 0x57f86f5e, 0x0e4840ac}, {0xab28e208, 0xb750da4c, 0x3be95635, 0x501dff64, 0xf0b4b276, 0x8cbe2437, 0xa94a946e, 0x07d0c802}, {0x2fe322b8, 0x2cabadec, 0x15412560, 0x752c84f3, 0x1a3b0aef, 0x32a732ae, 0xa33dcbf2, 0x2e95da59}, {0xfe0c65f4, 0x33811ea1, 0x687f28a2, 0x15c1ad4c, 0x42dee7f4, 0xecfbede3, 0x9a5d88b1, 0x1bb46667}, {0x2d010ff9, 0xd58a5af4, 0x570bf109, 0x79efd6b0, 0x6350721d, 0x3ed6d55a, 0x58f43cef, 0x2f27b098}, {0x8c130477, 0x74a1f671, 0xb61e0abe, 0xa534af14, 0x620890d7, 0xeb674a1a, 0xca252472, 0x43527a8b}, {0x7ea8ee05, 0x450d9f97, 0x37d56fc0, 0x565af171, 0x93f9e9ac, 0xe155cb48, 0xc8e9101b, 0x110cebd0}, {0x59a0be92, 0x23c91599, 0x7a027759, 0x87d188ce, 0xcab3c3cc, 0x70491431, 0xb3f7f8da, 0x0ac00eb8}, {0x69583404, 0x13e96ade, 0x5306243d, 0x82c05727, 0x29ca9f2a, 0x77e48bf5, 0x1fe19595, 0x50646ac8}, {0xa97eccd4, 0xe6a354dd, 0x88fbbc57, 0x39929d2e, 0xd6e7b1c8, 0xa22ba63d, 0xf5f07f43, 0x42c22911}, {0xcfc35f7a, 0x137b458a, 0x29c01b06, 0x0caba63a, 0x7a02402c, 0x0409ee98, 0x56aa725b, 0x6709c6cd}, {0x8831e03e, 0x10251f7d, 0x7ff858ec, 0x77d85a93, 0x4fb9ac5c, 0xebe905bd, 0xf8727901, 0x05deb333}, {0xb9009408, 0xbf87b689, 0xdd3ccc96, 0x4f730e7d, 0x4610300c, 0xfd7f05ba, 0x0b8ac903, 0x5ef5e8db}, {0x17cd0c14, 0x64996884, 0x68812f7f, 0xa6728673, 0x22cc3253, 0x2e1d9a19, 0xaa0a1d80, 0x3a689e83}, {0x41144dea, 0x20b53cbe, 0xc2f0fcbd, 0x870c46fa, 0x537d6971, 0x556c35f6, 0x5f686d91, 0x3436287f}, {0x436ba2e7, 0x007e082a, 0x9116e877, 0x67c6630f, 0xfb4460f7, 0x36f8f165, 0x7e7046e0, 0x6eee34d5}, {0xa53a56d1, 0xc5b670ee, 0x53037d7b, 0x127d1f42, 0xa722c2e2, 0x57d4257e, 0x33cbd838, 0x03ae26a3}, {0x76504cf8, 0x1e914848, 0xb63edd02, 0x55bbbf1e, 0x4e55aa02, 0xbcdafec8, 0x2dc0beb0, 0x5145c4cd}, {0x1ab70e2c, 0x5b90153a, 0x75fb0ab8, 0x8deffa31, 0x46900c95, 0xc553ae23, 0x6bd3118c, 0x1d31dcdc}, {0x59a2e8eb, 0x801c894c, 0xe12fc974, 0xbc535c5c, 0x47d39803, 0x95508d27, 0xac5d094f, 0x16d9d3cd}, {0xcca1d8be, 0x810fa372, 0x82e0bfa7, 0xc67b8c28, 0xe2d35bc2, 0xdbb4edf0, 0x5087c995, 0x712d1580}, {0xfd88f133, 0xeb162203, 0xf010ea74, 0xac96c38f, 0xe64cfc70, 0x4307987f, 0x37b7a114, 0x350fe98d}, {0x42f2a254, 0xaba2f518, 0xa71efc0c, 0x4d7f3c3a, 0xd274a80a, 0x97ae418d, 0x5e3e7682, 0x2967385d}, {0x575a0b79, 0x75c55c7b, 0x74a7ded1, 0x3ba4a157, 0xa04fccf3, 0xc3974d73, 0x4a939684, 0x705aba4f}, {0x14ebb608, 0x8409a9ea, 0x66bac611, 0xfad0084e, 0x811c1dfb, 0x04287254, 0x23b30c29, 0x086d072b}, {0x67e4756a, 0xb427c9b3, 0x02ebc38d, 0xc7537fb9, 0xcd6a205f, 0x51de21be, 0x7923597d, 0x6064ab72}, {0x0b912f1f, 0x1b788f50, 0x70b3e094, 0xc4024ff2, 0xd168d6c0, 0x0fd56dc8, 0x5b416b6f, 0x0212d79e}}; - // Quick fix for linking issue - static constexpr storage omega1= {0x00000000, 0xffffffff, 0xfffe5bfe, 0x53bda402, 0x09a1d805, 0x3339d808, 0x299d7d48, 0x73eda753}; - static constexpr storage omega2= {0x00000000, 0x00010000, 0x76030000, 0xec030002, 0x760304d0, 0x8d51ccce, 0x00000000, 0x00000000}; - static constexpr storage omega3= {0x688bc087, 0x8dd702cb, 0x78eaa4fe, 0xa0328240, 0x98ca5b22, 0xa733b23a, 0x25a31660, 0x3f96405d}; - static constexpr storage omega4= {0x0411fe73, 0x95df4b36, 0xebc1e1bb, 0x1ef4e672, 0x60afca4a, 0x6e92a9c4, 0x753e4fcc, 0x4f2c596e}; - static constexpr storage omega5= {0xba60eaa6, 0x9733f3a6, 0x77487ae7, 0xbd7fdf9c, 0xc8b6cc00, 0xd84f8612, 0x6162ffab, 0x476fa2fb}; - static constexpr storage omega6= {0xac5db47f, 0xd2fc5e69, 0x15d0b8e4, 0xa12a70a6, 0xbc8de5d9, 0x293b1d67, 0x57f86f5e, 0x0e4840ac}; - static constexpr storage omega7= {0xab28e208, 0xb750da4c, 0x3be95635, 0x501dff64, 0xf0b4b276, 0x8cbe2437, 0xa94a946e, 0x07d0c802}; - static constexpr storage omega8= {0x2fe322b8, 0x2cabadec, 0x15412560, 0x752c84f3, 0x1a3b0aef, 0x32a732ae, 0xa33dcbf2, 0x2e95da59}; - static constexpr storage omega9= {0xfe0c65f4, 0x33811ea1, 0x687f28a2, 0x15c1ad4c, 0x42dee7f4, 0xecfbede3, 0x9a5d88b1, 0x1bb46667}; - static constexpr storage omega10= {0x2d010ff9, 0xd58a5af4, 0x570bf109, 0x79efd6b0, 0x6350721d, 0x3ed6d55a, 0x58f43cef, 0x2f27b098}; - static constexpr storage omega11= {0x8c130477, 0x74a1f671, 0xb61e0abe, 0xa534af14, 0x620890d7, 0xeb674a1a, 0xca252472, 0x43527a8b}; - static constexpr storage omega12= {0x7ea8ee05, 0x450d9f97, 0x37d56fc0, 0x565af171, 0x93f9e9ac, 0xe155cb48, 0xc8e9101b, 0x110cebd0}; - static constexpr storage omega13= {0x59a0be92, 0x23c91599, 0x7a027759, 0x87d188ce, 0xcab3c3cc, 0x70491431, 0xb3f7f8da, 0x0ac00eb8}; - static constexpr storage omega14= {0x69583404, 0x13e96ade, 0x5306243d, 0x82c05727, 0x29ca9f2a, 0x77e48bf5, 0x1fe19595, 0x50646ac8}; - static constexpr storage omega15= {0xa97eccd4, 0xe6a354dd, 0x88fbbc57, 0x39929d2e, 0xd6e7b1c8, 0xa22ba63d, 0xf5f07f43, 0x42c22911}; - static constexpr storage omega16= {0xcfc35f7a, 0x137b458a, 0x29c01b06, 0x0caba63a, 0x7a02402c, 0x0409ee98, 0x56aa725b, 0x6709c6cd}; - static constexpr storage omega17= {0x8831e03e, 0x10251f7d, 0x7ff858ec, 0x77d85a93, 0x4fb9ac5c, 0xebe905bd, 0xf8727901, 0x05deb333}; - static constexpr storage omega18= {0xb9009408, 0xbf87b689, 0xdd3ccc96, 0x4f730e7d, 0x4610300c, 0xfd7f05ba, 0x0b8ac903, 0x5ef5e8db}; - static constexpr storage omega19= {0x17cd0c14, 0x64996884, 0x68812f7f, 0xa6728673, 0x22cc3253, 0x2e1d9a19, 0xaa0a1d80, 0x3a689e83}; - static constexpr storage omega20= {0x41144dea, 0x20b53cbe, 0xc2f0fcbd, 0x870c46fa, 0x537d6971, 0x556c35f6, 0x5f686d91, 0x3436287f}; - static constexpr storage omega21= {0x436ba2e7, 0x007e082a, 0x9116e877, 0x67c6630f, 0xfb4460f7, 0x36f8f165, 0x7e7046e0, 0x6eee34d5}; - static constexpr storage omega22= {0xa53a56d1, 0xc5b670ee, 0x53037d7b, 0x127d1f42, 0xa722c2e2, 0x57d4257e, 0x33cbd838, 0x03ae26a3}; - static constexpr storage omega23= {0x76504cf8, 0x1e914848, 0xb63edd02, 0x55bbbf1e, 0x4e55aa02, 0xbcdafec8, 0x2dc0beb0, 0x5145c4cd}; - static constexpr storage omega24= {0x1ab70e2c, 0x5b90153a, 0x75fb0ab8, 0x8deffa31, 0x46900c95, 0xc553ae23, 0x6bd3118c, 0x1d31dcdc}; - static constexpr storage omega25= {0x59a2e8eb, 0x801c894c, 0xe12fc974, 0xbc535c5c, 0x47d39803, 0x95508d27, 0xac5d094f, 0x16d9d3cd}; - static constexpr storage omega26= {0xcca1d8be, 0x810fa372, 0x82e0bfa7, 0xc67b8c28, 0xe2d35bc2, 0xdbb4edf0, 0x5087c995, 0x712d1580}; - static constexpr storage omega27= {0xfd88f133, 0xeb162203, 0xf010ea74, 0xac96c38f, 0xe64cfc70, 0x4307987f, 0x37b7a114, 0x350fe98d}; - static constexpr storage omega28= {0x42f2a254, 0xaba2f518, 0xa71efc0c, 0x4d7f3c3a, 0xd274a80a, 0x97ae418d, 0x5e3e7682, 0x2967385d}; - static constexpr storage omega29= {0x575a0b79, 0x75c55c7b, 0x74a7ded1, 0x3ba4a157, 0xa04fccf3, 0xc3974d73, 0x4a939684, 0x705aba4f}; - static constexpr storage omega30= {0x14ebb608, 0x8409a9ea, 0x66bac611, 0xfad0084e, 0x811c1dfb, 0x04287254, 0x23b30c29, 0x086d072b}; - static constexpr storage omega31= {0x67e4756a, 0xb427c9b3, 0x02ebc38d, 0xc7537fb9, 0xcd6a205f, 0x51de21be, 0x7923597d, 0x6064ab72}; - static constexpr storage omega32= {0x0b912f1f, 0x1b788f50, 0x70b3e094, 0xc4024ff2, 0xd168d6c0, 0x0fd56dc8, 0x5b416b6f, 0x0212d79e}; + static constexpr storage m = {0x830358e4, 0x509cde80, 0x2f92eb5c, 0xd9410fad, + 0xc1f823b4, 0xe2d772d, 0x7fb78ddf, 0x8d54253b}; + + static constexpr storage one = {0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage zero = {0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage montgomery_r = {0xfffffffe, 0x00000001, 0x00034802, 0x5884b7fa, + 0xecbc4ff5, 0x998c4fef, 0xacc5056f, 0x1824b159}; + static constexpr storage montgomery_r_inv = {0xfe75c040, 0x13f75b69, 0x09dc705f, 0xab6fca8f, + 0x4f77266a, 0x7204078a, 0x30009d57, 0x1bbe8693}; + + // static constexpr storage omega[32]= { {0x00000000, 0xffffffff, 0xfffe5bfe, 0x53bda402, 0x09a1d805, + // 0x3339d808, 0x299d7d48, 0x73eda753}, {0x00000000, 0x00010000, 0x76030000, 0xec030002, 0x760304d0, 0x8d51ccce, + // 0x00000000, 0x00000000}, {0x688bc087, 0x8dd702cb, 0x78eaa4fe, 0xa0328240, 0x98ca5b22, 0xa733b23a, 0x25a31660, + // 0x3f96405d}, {0x0411fe73, 0x95df4b36, 0xebc1e1bb, 0x1ef4e672, 0x60afca4a, 0x6e92a9c4, 0x753e4fcc, 0x4f2c596e}, + // {0xba60eaa6, 0x9733f3a6, 0x77487ae7, 0xbd7fdf9c, 0xc8b6cc00, 0xd84f8612, 0x6162ffab, 0x476fa2fb}, {0xac5db47f, + // 0xd2fc5e69, 0x15d0b8e4, 0xa12a70a6, 0xbc8de5d9, 0x293b1d67, 0x57f86f5e, 0x0e4840ac}, {0xab28e208, 0xb750da4c, + // 0x3be95635, 0x501dff64, 0xf0b4b276, 0x8cbe2437, 0xa94a946e, 0x07d0c802}, {0x2fe322b8, 0x2cabadec, 0x15412560, + // 0x752c84f3, 0x1a3b0aef, 0x32a732ae, 0xa33dcbf2, 0x2e95da59}, {0xfe0c65f4, 0x33811ea1, 0x687f28a2, 0x15c1ad4c, + // 0x42dee7f4, 0xecfbede3, 0x9a5d88b1, 0x1bb46667}, {0x2d010ff9, 0xd58a5af4, 0x570bf109, 0x79efd6b0, 0x6350721d, + // 0x3ed6d55a, 0x58f43cef, 0x2f27b098}, {0x8c130477, 0x74a1f671, 0xb61e0abe, 0xa534af14, 0x620890d7, 0xeb674a1a, + // 0xca252472, 0x43527a8b}, {0x7ea8ee05, 0x450d9f97, 0x37d56fc0, 0x565af171, 0x93f9e9ac, 0xe155cb48, 0xc8e9101b, + // 0x110cebd0}, {0x59a0be92, 0x23c91599, 0x7a027759, 0x87d188ce, 0xcab3c3cc, 0x70491431, 0xb3f7f8da, 0x0ac00eb8}, + // {0x69583404, 0x13e96ade, 0x5306243d, 0x82c05727, 0x29ca9f2a, 0x77e48bf5, 0x1fe19595, 0x50646ac8}, {0xa97eccd4, + // 0xe6a354dd, 0x88fbbc57, 0x39929d2e, 0xd6e7b1c8, 0xa22ba63d, 0xf5f07f43, 0x42c22911}, {0xcfc35f7a, 0x137b458a, + // 0x29c01b06, 0x0caba63a, 0x7a02402c, 0x0409ee98, 0x56aa725b, 0x6709c6cd}, {0x8831e03e, 0x10251f7d, 0x7ff858ec, + // 0x77d85a93, 0x4fb9ac5c, 0xebe905bd, 0xf8727901, 0x05deb333}, {0xb9009408, 0xbf87b689, 0xdd3ccc96, 0x4f730e7d, + // 0x4610300c, 0xfd7f05ba, 0x0b8ac903, 0x5ef5e8db}, {0x17cd0c14, 0x64996884, 0x68812f7f, 0xa6728673, 0x22cc3253, + // 0x2e1d9a19, 0xaa0a1d80, 0x3a689e83}, {0x41144dea, 0x20b53cbe, 0xc2f0fcbd, 0x870c46fa, 0x537d6971, 0x556c35f6, + // 0x5f686d91, 0x3436287f}, {0x436ba2e7, 0x007e082a, 0x9116e877, 0x67c6630f, 0xfb4460f7, 0x36f8f165, 0x7e7046e0, + // 0x6eee34d5}, {0xa53a56d1, 0xc5b670ee, 0x53037d7b, 0x127d1f42, 0xa722c2e2, 0x57d4257e, 0x33cbd838, 0x03ae26a3}, + // {0x76504cf8, 0x1e914848, 0xb63edd02, 0x55bbbf1e, 0x4e55aa02, 0xbcdafec8, 0x2dc0beb0, 0x5145c4cd}, {0x1ab70e2c, + // 0x5b90153a, 0x75fb0ab8, 0x8deffa31, 0x46900c95, 0xc553ae23, 0x6bd3118c, 0x1d31dcdc}, {0x59a2e8eb, 0x801c894c, + // 0xe12fc974, 0xbc535c5c, 0x47d39803, 0x95508d27, 0xac5d094f, 0x16d9d3cd}, {0xcca1d8be, 0x810fa372, 0x82e0bfa7, + // 0xc67b8c28, 0xe2d35bc2, 0xdbb4edf0, 0x5087c995, 0x712d1580}, {0xfd88f133, 0xeb162203, 0xf010ea74, 0xac96c38f, + // 0xe64cfc70, 0x4307987f, 0x37b7a114, 0x350fe98d}, {0x42f2a254, 0xaba2f518, 0xa71efc0c, 0x4d7f3c3a, 0xd274a80a, + // 0x97ae418d, 0x5e3e7682, 0x2967385d}, {0x575a0b79, 0x75c55c7b, 0x74a7ded1, 0x3ba4a157, 0xa04fccf3, 0xc3974d73, + // 0x4a939684, 0x705aba4f}, {0x14ebb608, 0x8409a9ea, 0x66bac611, 0xfad0084e, 0x811c1dfb, 0x04287254, 0x23b30c29, + // 0x086d072b}, {0x67e4756a, 0xb427c9b3, 0x02ebc38d, 0xc7537fb9, 0xcd6a205f, 0x51de21be, 0x7923597d, 0x6064ab72}, + // {0x0b912f1f, 0x1b788f50, 0x70b3e094, 0xc4024ff2, 0xd168d6c0, 0x0fd56dc8, 0x5b416b6f, 0x0212d79e}}; Quick fix for + // linking issue + static constexpr storage omega1 = {0x00000000, 0xffffffff, 0xfffe5bfe, 0x53bda402, + 0x09a1d805, 0x3339d808, 0x299d7d48, 0x73eda753}; + static constexpr storage omega2 = {0x00000000, 0x00010000, 0x76030000, 0xec030002, + 0x760304d0, 0x8d51ccce, 0x00000000, 0x00000000}; + static constexpr storage omega3 = {0x688bc087, 0x8dd702cb, 0x78eaa4fe, 0xa0328240, + 0x98ca5b22, 0xa733b23a, 0x25a31660, 0x3f96405d}; + static constexpr storage omega4 = {0x0411fe73, 0x95df4b36, 0xebc1e1bb, 0x1ef4e672, + 0x60afca4a, 0x6e92a9c4, 0x753e4fcc, 0x4f2c596e}; + static constexpr storage omega5 = {0xba60eaa6, 0x9733f3a6, 0x77487ae7, 0xbd7fdf9c, + 0xc8b6cc00, 0xd84f8612, 0x6162ffab, 0x476fa2fb}; + static constexpr storage omega6 = {0xac5db47f, 0xd2fc5e69, 0x15d0b8e4, 0xa12a70a6, + 0xbc8de5d9, 0x293b1d67, 0x57f86f5e, 0x0e4840ac}; + static constexpr storage omega7 = {0xab28e208, 0xb750da4c, 0x3be95635, 0x501dff64, + 0xf0b4b276, 0x8cbe2437, 0xa94a946e, 0x07d0c802}; + static constexpr storage omega8 = {0x2fe322b8, 0x2cabadec, 0x15412560, 0x752c84f3, + 0x1a3b0aef, 0x32a732ae, 0xa33dcbf2, 0x2e95da59}; + static constexpr storage omega9 = {0xfe0c65f4, 0x33811ea1, 0x687f28a2, 0x15c1ad4c, + 0x42dee7f4, 0xecfbede3, 0x9a5d88b1, 0x1bb46667}; + static constexpr storage omega10 = {0x2d010ff9, 0xd58a5af4, 0x570bf109, 0x79efd6b0, + 0x6350721d, 0x3ed6d55a, 0x58f43cef, 0x2f27b098}; + static constexpr storage omega11 = {0x8c130477, 0x74a1f671, 0xb61e0abe, 0xa534af14, + 0x620890d7, 0xeb674a1a, 0xca252472, 0x43527a8b}; + static constexpr storage omega12 = {0x7ea8ee05, 0x450d9f97, 0x37d56fc0, 0x565af171, + 0x93f9e9ac, 0xe155cb48, 0xc8e9101b, 0x110cebd0}; + static constexpr storage omega13 = {0x59a0be92, 0x23c91599, 0x7a027759, 0x87d188ce, + 0xcab3c3cc, 0x70491431, 0xb3f7f8da, 0x0ac00eb8}; + static constexpr storage omega14 = {0x69583404, 0x13e96ade, 0x5306243d, 0x82c05727, + 0x29ca9f2a, 0x77e48bf5, 0x1fe19595, 0x50646ac8}; + static constexpr storage omega15 = {0xa97eccd4, 0xe6a354dd, 0x88fbbc57, 0x39929d2e, + 0xd6e7b1c8, 0xa22ba63d, 0xf5f07f43, 0x42c22911}; + static constexpr storage omega16 = {0xcfc35f7a, 0x137b458a, 0x29c01b06, 0x0caba63a, + 0x7a02402c, 0x0409ee98, 0x56aa725b, 0x6709c6cd}; + static constexpr storage omega17 = {0x8831e03e, 0x10251f7d, 0x7ff858ec, 0x77d85a93, + 0x4fb9ac5c, 0xebe905bd, 0xf8727901, 0x05deb333}; + static constexpr storage omega18 = {0xb9009408, 0xbf87b689, 0xdd3ccc96, 0x4f730e7d, + 0x4610300c, 0xfd7f05ba, 0x0b8ac903, 0x5ef5e8db}; + static constexpr storage omega19 = {0x17cd0c14, 0x64996884, 0x68812f7f, 0xa6728673, + 0x22cc3253, 0x2e1d9a19, 0xaa0a1d80, 0x3a689e83}; + static constexpr storage omega20 = {0x41144dea, 0x20b53cbe, 0xc2f0fcbd, 0x870c46fa, + 0x537d6971, 0x556c35f6, 0x5f686d91, 0x3436287f}; + static constexpr storage omega21 = {0x436ba2e7, 0x007e082a, 0x9116e877, 0x67c6630f, + 0xfb4460f7, 0x36f8f165, 0x7e7046e0, 0x6eee34d5}; + static constexpr storage omega22 = {0xa53a56d1, 0xc5b670ee, 0x53037d7b, 0x127d1f42, + 0xa722c2e2, 0x57d4257e, 0x33cbd838, 0x03ae26a3}; + static constexpr storage omega23 = {0x76504cf8, 0x1e914848, 0xb63edd02, 0x55bbbf1e, + 0x4e55aa02, 0xbcdafec8, 0x2dc0beb0, 0x5145c4cd}; + static constexpr storage omega24 = {0x1ab70e2c, 0x5b90153a, 0x75fb0ab8, 0x8deffa31, + 0x46900c95, 0xc553ae23, 0x6bd3118c, 0x1d31dcdc}; + static constexpr storage omega25 = {0x59a2e8eb, 0x801c894c, 0xe12fc974, 0xbc535c5c, + 0x47d39803, 0x95508d27, 0xac5d094f, 0x16d9d3cd}; + static constexpr storage omega26 = {0xcca1d8be, 0x810fa372, 0x82e0bfa7, 0xc67b8c28, + 0xe2d35bc2, 0xdbb4edf0, 0x5087c995, 0x712d1580}; + static constexpr storage omega27 = {0xfd88f133, 0xeb162203, 0xf010ea74, 0xac96c38f, + 0xe64cfc70, 0x4307987f, 0x37b7a114, 0x350fe98d}; + static constexpr storage omega28 = {0x42f2a254, 0xaba2f518, 0xa71efc0c, 0x4d7f3c3a, + 0xd274a80a, 0x97ae418d, 0x5e3e7682, 0x2967385d}; + static constexpr storage omega29 = {0x575a0b79, 0x75c55c7b, 0x74a7ded1, 0x3ba4a157, + 0xa04fccf3, 0xc3974d73, 0x4a939684, 0x705aba4f}; + static constexpr storage omega30 = {0x14ebb608, 0x8409a9ea, 0x66bac611, 0xfad0084e, + 0x811c1dfb, 0x04287254, 0x23b30c29, 0x086d072b}; + static constexpr storage omega31 = {0x67e4756a, 0xb427c9b3, 0x02ebc38d, 0xc7537fb9, + 0xcd6a205f, 0x51de21be, 0x7923597d, 0x6064ab72}; + static constexpr storage omega32 = {0x0b912f1f, 0x1b788f50, 0x70b3e094, 0xc4024ff2, + 0xd168d6c0, 0x0fd56dc8, 0x5b416b6f, 0x0212d79e}; static constexpr storage_array omega = { - omega1, omega2, omega3, omega4, omega5, omega6, omega7, omega8, - omega9, omega10, omega11, omega12, omega13, omega14, omega15, omega16, - omega17, omega18, omega19, omega20, omega21, omega22, omega23, omega24, - omega25, omega26, omega27, omega28, omega29, omega30, omega31, omega32, + omega1, omega2, omega3, omega4, omega5, omega6, omega7, omega8, omega9, omega10, omega11, + omega12, omega13, omega14, omega15, omega16, omega17, omega18, omega19, omega20, omega21, omega22, + omega23, omega24, omega25, omega26, omega27, omega28, omega29, omega30, omega31, omega32, }; - - // static constexpr storage omega_inv[32]={ {0x00000000, 0xffffffff, 0xfffe5bfe, 0x53bda402, 0x09a1d805, 0x3339d808, 0x299d7d48, 0x73eda753}, {0x00000001, 0xfffeffff, 0x89fb5bfe, 0x67baa400, 0x939ed334, 0xa5e80b39, 0x299d7d47, 0x73eda753}, {0xae99502e, 0x6037fe81, 0x94b04fd8, 0x8e749036, 0xca86bf65, 0xbabc5aff, 0x5ce11044, 0x1333b22e}, {0x7dc08d74, 0x7f847ee4, 0x04eeaf5a, 0xbd433896, 0x1832fc60, 0xd66c91d6, 0x607e449b, 0x551115b4}, {0x4e7773cb, 0xee5bcecc, 0xf6dab086, 0x45593d6f, 0x4016e2bd, 0xa3a95d2d, 0xaf96816f, 0x047cb16c}, {0x982b68c5, 0xb891fa3f, 0x1d426b52, 0xa41e8501, 0x882952d6, 0x566009b5, 0x7b3c79d6, 0x199cdaee}, {0xcf28601b, 0x571ba2fc, 0xac74db12, 0x166fb582, 0x3501370b, 0x51420be4, 0x52f970ba, 0x1996fa8d}, {0x6a2f777a, 0xe9561c17, 0x2393991b, 0xc03cae03, 0x5a5bfd4f, 0x91b00023, 0x272e58ee, 0x6d64ed25}, {0xf02a116e, 0xfb350dbe, 0xb4543a3e, 0x1c510ebf, 0x37ad4eca, 0xf675522e, 0x80f82b2d, 0x1907a56e}, {0x4eb71aa6, 0xb0ad8003, 0xaa67e0be, 0x50a32c41, 0x19141f44, 0x105f0672, 0xa3dad316, 0x2bcd9508}, {0x0f6fb2ac, 0x3dc9e560, 0x9aa58ff5, 0x3cc5bb32, 0x36f376e1, 0xdeae67bc, 0x65ba213e, 0x394fda0d}, {0x60b82267, 0x09f239f7, 0x8b24f123, 0x14180e0e, 0x45625d95, 0xad5a5340, 0x6d174692, 0x58c3ba63}, {0x348b416f, 0x0acf21c2, 0xbc086439, 0x798b6bf6, 0xb1ca111d, 0x222d411f, 0x30ba1e0f, 0x044107b7}, {0x014abe84, 0xa3b861b8, 0x427ed008, 0x37c017e4, 0xae0ff4f5, 0xae51f613, 0xcb1218d3, 0x1a2d00e1}, {0x4de7eb2b, 0x48aaa3bf, 0x6772057d, 0x4a58d54d, 0x7093b551, 0xce25f16c, 0xd206337c, 0x242150ac}, {0x9ed57ae5, 0xdf3ec9ae, 0x7166577f, 0xea7df73a, 0x022fbbe4, 0x6ca8d281, 0x151e3f6b, 0x5850c003}, {0x645e1cfa, 0x903a0a0c, 0x34788c37, 0xfbac54cb, 0x8cf73d78, 0xdc127d11, 0x975d3c82, 0x6d0b5c7c}, {0x14b1ba04, 0xb49d6b05, 0xf00b84f2, 0x56e466b4, 0x0b904f22, 0x30c390cf, 0x3ee254cc, 0x3e11cfb7}, {0xbe8201ab, 0x84dfa547, 0x530715d2, 0x3887ce8b, 0x3eed4ed7, 0xa4c719c6, 0x8f8007b4, 0x18c44950}, {0x7d813cd1, 0xdaf0346d, 0xf755beb1, 0xeccf6f9a, 0xe08143e3, 0x167fce38, 0x6f5d6dfa, 0x545ad9b2}, {0x577605de, 0x973f5466, 0x974f953c, 0x0ce8986e, 0x074382f9, 0x8941cf4b, 0x6fa2672c, 0x156cd7f6}, {0x33b66141, 0x24315404, 0x1992f584, 0x5d1375ab, 0x8b20ca1a, 0xf193ffa6, 0x2701a503, 0x47880cd5}, {0xe9f7b9af, 0xf7b6847d, 0x62c83ce2, 0x9a339673, 0x6e5e6f79, 0xfabf4537, 0x35af33a3, 0x0975acd9}, {0x0eddd248, 0x4fb4204a, 0xc9e509b3, 0x8c98706a, 0x2bb27eb1, 0xd0be8987, 0xc831438b, 0x6ec5f960}, {0x20238f62, 0xa13c95b7, 0x83b476b9, 0x130aa097, 0x14860881, 0x758a04e0, 0x97066493, 0x58e2f8d6}, {0xe8bff41e, 0x65b09c73, 0x37f1c6a3, 0x8b3280e8, 0x2846fb21, 0xe17b82ce, 0xb1ae27df, 0x476534bf}, {0xd5fdb757, 0x8480c0e7, 0x365bf9fd, 0x3644eea0, 0xb776be86, 0x4ca116ca, 0x8b58390c, 0x17b6395f}, {0x252eb0db, 0x2c811e9a, 0x7479e161, 0x1b7d960d, 0xb0a89a26, 0xb3afc7c1, 0x32b5e793, 0x6a2f9533}, {0x08b8a7ad, 0xe877b2c4, 0x341652b4, 0x68b0e8f0, 0xe8b6a2d9, 0x2d44da3b, 0xfd09be59, 0x092778ff}, {0x7988f244, 0x84a1aa6f, 0x24faf63f, 0xa164b3d9, 0xc1bbb915, 0x7aae9724, 0xf386c0d2, 0x24e5d287}, {0x41a1b30c, 0xa70a7efd, 0x39f0e511, 0xc49c55a5, 0x033bb323, 0xab307a8f, 0x17acbd7f, 0x0158abd6}, {0x0f642025, 0x2c228b30, 0x01bd882b, 0xb0878e8d, 0xd7377fea, 0xd862b255, 0xf0490536, 0x18ac3666}}; + + // static constexpr storage omega_inv[32]={ {0x00000000, 0xffffffff, 0xfffe5bfe, 0x53bda402, + // 0x09a1d805, 0x3339d808, 0x299d7d48, 0x73eda753}, {0x00000001, 0xfffeffff, 0x89fb5bfe, 0x67baa400, 0x939ed334, + // 0xa5e80b39, 0x299d7d47, 0x73eda753}, {0xae99502e, 0x6037fe81, 0x94b04fd8, 0x8e749036, 0xca86bf65, 0xbabc5aff, + // 0x5ce11044, 0x1333b22e}, {0x7dc08d74, 0x7f847ee4, 0x04eeaf5a, 0xbd433896, 0x1832fc60, 0xd66c91d6, 0x607e449b, + // 0x551115b4}, {0x4e7773cb, 0xee5bcecc, 0xf6dab086, 0x45593d6f, 0x4016e2bd, 0xa3a95d2d, 0xaf96816f, 0x047cb16c}, + // {0x982b68c5, 0xb891fa3f, 0x1d426b52, 0xa41e8501, 0x882952d6, 0x566009b5, 0x7b3c79d6, 0x199cdaee}, {0xcf28601b, + // 0x571ba2fc, 0xac74db12, 0x166fb582, 0x3501370b, 0x51420be4, 0x52f970ba, 0x1996fa8d}, {0x6a2f777a, 0xe9561c17, + // 0x2393991b, 0xc03cae03, 0x5a5bfd4f, 0x91b00023, 0x272e58ee, 0x6d64ed25}, {0xf02a116e, 0xfb350dbe, 0xb4543a3e, + // 0x1c510ebf, 0x37ad4eca, 0xf675522e, 0x80f82b2d, 0x1907a56e}, {0x4eb71aa6, 0xb0ad8003, 0xaa67e0be, 0x50a32c41, + // 0x19141f44, 0x105f0672, 0xa3dad316, 0x2bcd9508}, {0x0f6fb2ac, 0x3dc9e560, 0x9aa58ff5, 0x3cc5bb32, 0x36f376e1, + // 0xdeae67bc, 0x65ba213e, 0x394fda0d}, {0x60b82267, 0x09f239f7, 0x8b24f123, 0x14180e0e, 0x45625d95, 0xad5a5340, + // 0x6d174692, 0x58c3ba63}, {0x348b416f, 0x0acf21c2, 0xbc086439, 0x798b6bf6, 0xb1ca111d, 0x222d411f, 0x30ba1e0f, + // 0x044107b7}, {0x014abe84, 0xa3b861b8, 0x427ed008, 0x37c017e4, 0xae0ff4f5, 0xae51f613, 0xcb1218d3, 0x1a2d00e1}, + // {0x4de7eb2b, 0x48aaa3bf, 0x6772057d, 0x4a58d54d, 0x7093b551, 0xce25f16c, 0xd206337c, 0x242150ac}, {0x9ed57ae5, + // 0xdf3ec9ae, 0x7166577f, 0xea7df73a, 0x022fbbe4, 0x6ca8d281, 0x151e3f6b, 0x5850c003}, {0x645e1cfa, 0x903a0a0c, + // 0x34788c37, 0xfbac54cb, 0x8cf73d78, 0xdc127d11, 0x975d3c82, 0x6d0b5c7c}, {0x14b1ba04, 0xb49d6b05, 0xf00b84f2, + // 0x56e466b4, 0x0b904f22, 0x30c390cf, 0x3ee254cc, 0x3e11cfb7}, {0xbe8201ab, 0x84dfa547, 0x530715d2, 0x3887ce8b, + // 0x3eed4ed7, 0xa4c719c6, 0x8f8007b4, 0x18c44950}, {0x7d813cd1, 0xdaf0346d, 0xf755beb1, 0xeccf6f9a, 0xe08143e3, + // 0x167fce38, 0x6f5d6dfa, 0x545ad9b2}, {0x577605de, 0x973f5466, 0x974f953c, 0x0ce8986e, 0x074382f9, 0x8941cf4b, + // 0x6fa2672c, 0x156cd7f6}, {0x33b66141, 0x24315404, 0x1992f584, 0x5d1375ab, 0x8b20ca1a, 0xf193ffa6, 0x2701a503, + // 0x47880cd5}, {0xe9f7b9af, 0xf7b6847d, 0x62c83ce2, 0x9a339673, 0x6e5e6f79, 0xfabf4537, 0x35af33a3, 0x0975acd9}, + // {0x0eddd248, 0x4fb4204a, 0xc9e509b3, 0x8c98706a, 0x2bb27eb1, 0xd0be8987, 0xc831438b, 0x6ec5f960}, {0x20238f62, + // 0xa13c95b7, 0x83b476b9, 0x130aa097, 0x14860881, 0x758a04e0, 0x97066493, 0x58e2f8d6}, {0xe8bff41e, 0x65b09c73, + // 0x37f1c6a3, 0x8b3280e8, 0x2846fb21, 0xe17b82ce, 0xb1ae27df, 0x476534bf}, {0xd5fdb757, 0x8480c0e7, 0x365bf9fd, + // 0x3644eea0, 0xb776be86, 0x4ca116ca, 0x8b58390c, 0x17b6395f}, {0x252eb0db, 0x2c811e9a, 0x7479e161, 0x1b7d960d, + // 0xb0a89a26, 0xb3afc7c1, 0x32b5e793, 0x6a2f9533}, {0x08b8a7ad, 0xe877b2c4, 0x341652b4, 0x68b0e8f0, 0xe8b6a2d9, + // 0x2d44da3b, 0xfd09be59, 0x092778ff}, {0x7988f244, 0x84a1aa6f, 0x24faf63f, 0xa164b3d9, 0xc1bbb915, 0x7aae9724, + // 0xf386c0d2, 0x24e5d287}, {0x41a1b30c, 0xa70a7efd, 0x39f0e511, 0xc49c55a5, 0x033bb323, 0xab307a8f, 0x17acbd7f, + // 0x0158abd6}, {0x0f642025, 0x2c228b30, 0x01bd882b, 0xb0878e8d, 0xd7377fea, 0xd862b255, 0xf0490536, 0x18ac3666}}; // Quick fix for linking issue - static constexpr storage omega_inv1= {0x00000000, 0xffffffff, 0xfffe5bfe, 0x53bda402, 0x09a1d805, 0x3339d808, 0x299d7d48, 0x73eda753}; - static constexpr storage omega_inv2= {0x00000001, 0xfffeffff, 0x89fb5bfe, 0x67baa400, 0x939ed334, 0xa5e80b39, 0x299d7d47, 0x73eda753}; - static constexpr storage omega_inv3= {0xae99502e, 0x6037fe81, 0x94b04fd8, 0x8e749036, 0xca86bf65, 0xbabc5aff, 0x5ce11044, 0x1333b22e}; - static constexpr storage omega_inv4= {0x7dc08d74, 0x7f847ee4, 0x04eeaf5a, 0xbd433896, 0x1832fc60, 0xd66c91d6, 0x607e449b, 0x551115b4}; - static constexpr storage omega_inv5= {0x4e7773cb, 0xee5bcecc, 0xf6dab086, 0x45593d6f, 0x4016e2bd, 0xa3a95d2d, 0xaf96816f, 0x047cb16c}; - static constexpr storage omega_inv6= {0x982b68c5, 0xb891fa3f, 0x1d426b52, 0xa41e8501, 0x882952d6, 0x566009b5, 0x7b3c79d6, 0x199cdaee}; - static constexpr storage omega_inv7= {0xcf28601b, 0x571ba2fc, 0xac74db12, 0x166fb582, 0x3501370b, 0x51420be4, 0x52f970ba, 0x1996fa8d}; - static constexpr storage omega_inv8= {0x6a2f777a, 0xe9561c17, 0x2393991b, 0xc03cae03, 0x5a5bfd4f, 0x91b00023, 0x272e58ee, 0x6d64ed25}; - static constexpr storage omega_inv9= {0xf02a116e, 0xfb350dbe, 0xb4543a3e, 0x1c510ebf, 0x37ad4eca, 0xf675522e, 0x80f82b2d, 0x1907a56e}; - static constexpr storage omega_inv10= {0x4eb71aa6, 0xb0ad8003, 0xaa67e0be, 0x50a32c41, 0x19141f44, 0x105f0672, 0xa3dad316, 0x2bcd9508}; - static constexpr storage omega_inv11= {0x0f6fb2ac, 0x3dc9e560, 0x9aa58ff5, 0x3cc5bb32, 0x36f376e1, 0xdeae67bc, 0x65ba213e, 0x394fda0d}; - static constexpr storage omega_inv12= {0x60b82267, 0x09f239f7, 0x8b24f123, 0x14180e0e, 0x45625d95, 0xad5a5340, 0x6d174692, 0x58c3ba63}; - static constexpr storage omega_inv13= {0x348b416f, 0x0acf21c2, 0xbc086439, 0x798b6bf6, 0xb1ca111d, 0x222d411f, 0x30ba1e0f, 0x044107b7}; - static constexpr storage omega_inv14= {0x014abe84, 0xa3b861b8, 0x427ed008, 0x37c017e4, 0xae0ff4f5, 0xae51f613, 0xcb1218d3, 0x1a2d00e1}; - static constexpr storage omega_inv15= {0x4de7eb2b, 0x48aaa3bf, 0x6772057d, 0x4a58d54d, 0x7093b551, 0xce25f16c, 0xd206337c, 0x242150ac}; - static constexpr storage omega_inv16= {0x9ed57ae5, 0xdf3ec9ae, 0x7166577f, 0xea7df73a, 0x022fbbe4, 0x6ca8d281, 0x151e3f6b, 0x5850c003}; - static constexpr storage omega_inv17= {0x645e1cfa, 0x903a0a0c, 0x34788c37, 0xfbac54cb, 0x8cf73d78, 0xdc127d11, 0x975d3c82, 0x6d0b5c7c}; - static constexpr storage omega_inv18= {0x14b1ba04, 0xb49d6b05, 0xf00b84f2, 0x56e466b4, 0x0b904f22, 0x30c390cf, 0x3ee254cc, 0x3e11cfb7}; - static constexpr storage omega_inv19= {0xbe8201ab, 0x84dfa547, 0x530715d2, 0x3887ce8b, 0x3eed4ed7, 0xa4c719c6, 0x8f8007b4, 0x18c44950}; - static constexpr storage omega_inv20= {0x7d813cd1, 0xdaf0346d, 0xf755beb1, 0xeccf6f9a, 0xe08143e3, 0x167fce38, 0x6f5d6dfa, 0x545ad9b2}; - static constexpr storage omega_inv21= {0x577605de, 0x973f5466, 0x974f953c, 0x0ce8986e, 0x074382f9, 0x8941cf4b, 0x6fa2672c, 0x156cd7f6}; - static constexpr storage omega_inv22= {0x33b66141, 0x24315404, 0x1992f584, 0x5d1375ab, 0x8b20ca1a, 0xf193ffa6, 0x2701a503, 0x47880cd5}; - static constexpr storage omega_inv23= {0xe9f7b9af, 0xf7b6847d, 0x62c83ce2, 0x9a339673, 0x6e5e6f79, 0xfabf4537, 0x35af33a3, 0x0975acd9}; - static constexpr storage omega_inv24= {0x0eddd248, 0x4fb4204a, 0xc9e509b3, 0x8c98706a, 0x2bb27eb1, 0xd0be8987, 0xc831438b, 0x6ec5f960}; - static constexpr storage omega_inv25= {0x20238f62, 0xa13c95b7, 0x83b476b9, 0x130aa097, 0x14860881, 0x758a04e0, 0x97066493, 0x58e2f8d6}; - static constexpr storage omega_inv26= {0xe8bff41e, 0x65b09c73, 0x37f1c6a3, 0x8b3280e8, 0x2846fb21, 0xe17b82ce, 0xb1ae27df, 0x476534bf}; - static constexpr storage omega_inv27= {0xd5fdb757, 0x8480c0e7, 0x365bf9fd, 0x3644eea0, 0xb776be86, 0x4ca116ca, 0x8b58390c, 0x17b6395f}; - static constexpr storage omega_inv28= {0x252eb0db, 0x2c811e9a, 0x7479e161, 0x1b7d960d, 0xb0a89a26, 0xb3afc7c1, 0x32b5e793, 0x6a2f9533}; - static constexpr storage omega_inv29= {0x08b8a7ad, 0xe877b2c4, 0x341652b4, 0x68b0e8f0, 0xe8b6a2d9, 0x2d44da3b, 0xfd09be59, 0x092778ff}; - static constexpr storage omega_inv30= {0x7988f244, 0x84a1aa6f, 0x24faf63f, 0xa164b3d9, 0xc1bbb915, 0x7aae9724, 0xf386c0d2, 0x24e5d287}; - static constexpr storage omega_inv31= {0x41a1b30c, 0xa70a7efd, 0x39f0e511, 0xc49c55a5, 0x033bb323, 0xab307a8f, 0x17acbd7f, 0x0158abd6}; - static constexpr storage omega_inv32= {0x0f642025, 0x2c228b30, 0x01bd882b, 0xb0878e8d, 0xd7377fea, 0xd862b255, 0xf0490536, 0x18ac3666}; - + static constexpr storage omega_inv1 = {0x00000000, 0xffffffff, 0xfffe5bfe, 0x53bda402, + 0x09a1d805, 0x3339d808, 0x299d7d48, 0x73eda753}; + static constexpr storage omega_inv2 = {0x00000001, 0xfffeffff, 0x89fb5bfe, 0x67baa400, + 0x939ed334, 0xa5e80b39, 0x299d7d47, 0x73eda753}; + static constexpr storage omega_inv3 = {0xae99502e, 0x6037fe81, 0x94b04fd8, 0x8e749036, + 0xca86bf65, 0xbabc5aff, 0x5ce11044, 0x1333b22e}; + static constexpr storage omega_inv4 = {0x7dc08d74, 0x7f847ee4, 0x04eeaf5a, 0xbd433896, + 0x1832fc60, 0xd66c91d6, 0x607e449b, 0x551115b4}; + static constexpr storage omega_inv5 = {0x4e7773cb, 0xee5bcecc, 0xf6dab086, 0x45593d6f, + 0x4016e2bd, 0xa3a95d2d, 0xaf96816f, 0x047cb16c}; + static constexpr storage omega_inv6 = {0x982b68c5, 0xb891fa3f, 0x1d426b52, 0xa41e8501, + 0x882952d6, 0x566009b5, 0x7b3c79d6, 0x199cdaee}; + static constexpr storage omega_inv7 = {0xcf28601b, 0x571ba2fc, 0xac74db12, 0x166fb582, + 0x3501370b, 0x51420be4, 0x52f970ba, 0x1996fa8d}; + static constexpr storage omega_inv8 = {0x6a2f777a, 0xe9561c17, 0x2393991b, 0xc03cae03, + 0x5a5bfd4f, 0x91b00023, 0x272e58ee, 0x6d64ed25}; + static constexpr storage omega_inv9 = {0xf02a116e, 0xfb350dbe, 0xb4543a3e, 0x1c510ebf, + 0x37ad4eca, 0xf675522e, 0x80f82b2d, 0x1907a56e}; + static constexpr storage omega_inv10 = {0x4eb71aa6, 0xb0ad8003, 0xaa67e0be, 0x50a32c41, + 0x19141f44, 0x105f0672, 0xa3dad316, 0x2bcd9508}; + static constexpr storage omega_inv11 = {0x0f6fb2ac, 0x3dc9e560, 0x9aa58ff5, 0x3cc5bb32, + 0x36f376e1, 0xdeae67bc, 0x65ba213e, 0x394fda0d}; + static constexpr storage omega_inv12 = {0x60b82267, 0x09f239f7, 0x8b24f123, 0x14180e0e, + 0x45625d95, 0xad5a5340, 0x6d174692, 0x58c3ba63}; + static constexpr storage omega_inv13 = {0x348b416f, 0x0acf21c2, 0xbc086439, 0x798b6bf6, + 0xb1ca111d, 0x222d411f, 0x30ba1e0f, 0x044107b7}; + static constexpr storage omega_inv14 = {0x014abe84, 0xa3b861b8, 0x427ed008, 0x37c017e4, + 0xae0ff4f5, 0xae51f613, 0xcb1218d3, 0x1a2d00e1}; + static constexpr storage omega_inv15 = {0x4de7eb2b, 0x48aaa3bf, 0x6772057d, 0x4a58d54d, + 0x7093b551, 0xce25f16c, 0xd206337c, 0x242150ac}; + static constexpr storage omega_inv16 = {0x9ed57ae5, 0xdf3ec9ae, 0x7166577f, 0xea7df73a, + 0x022fbbe4, 0x6ca8d281, 0x151e3f6b, 0x5850c003}; + static constexpr storage omega_inv17 = {0x645e1cfa, 0x903a0a0c, 0x34788c37, 0xfbac54cb, + 0x8cf73d78, 0xdc127d11, 0x975d3c82, 0x6d0b5c7c}; + static constexpr storage omega_inv18 = {0x14b1ba04, 0xb49d6b05, 0xf00b84f2, 0x56e466b4, + 0x0b904f22, 0x30c390cf, 0x3ee254cc, 0x3e11cfb7}; + static constexpr storage omega_inv19 = {0xbe8201ab, 0x84dfa547, 0x530715d2, 0x3887ce8b, + 0x3eed4ed7, 0xa4c719c6, 0x8f8007b4, 0x18c44950}; + static constexpr storage omega_inv20 = {0x7d813cd1, 0xdaf0346d, 0xf755beb1, 0xeccf6f9a, + 0xe08143e3, 0x167fce38, 0x6f5d6dfa, 0x545ad9b2}; + static constexpr storage omega_inv21 = {0x577605de, 0x973f5466, 0x974f953c, 0x0ce8986e, + 0x074382f9, 0x8941cf4b, 0x6fa2672c, 0x156cd7f6}; + static constexpr storage omega_inv22 = {0x33b66141, 0x24315404, 0x1992f584, 0x5d1375ab, + 0x8b20ca1a, 0xf193ffa6, 0x2701a503, 0x47880cd5}; + static constexpr storage omega_inv23 = {0xe9f7b9af, 0xf7b6847d, 0x62c83ce2, 0x9a339673, + 0x6e5e6f79, 0xfabf4537, 0x35af33a3, 0x0975acd9}; + static constexpr storage omega_inv24 = {0x0eddd248, 0x4fb4204a, 0xc9e509b3, 0x8c98706a, + 0x2bb27eb1, 0xd0be8987, 0xc831438b, 0x6ec5f960}; + static constexpr storage omega_inv25 = {0x20238f62, 0xa13c95b7, 0x83b476b9, 0x130aa097, + 0x14860881, 0x758a04e0, 0x97066493, 0x58e2f8d6}; + static constexpr storage omega_inv26 = {0xe8bff41e, 0x65b09c73, 0x37f1c6a3, 0x8b3280e8, + 0x2846fb21, 0xe17b82ce, 0xb1ae27df, 0x476534bf}; + static constexpr storage omega_inv27 = {0xd5fdb757, 0x8480c0e7, 0x365bf9fd, 0x3644eea0, + 0xb776be86, 0x4ca116ca, 0x8b58390c, 0x17b6395f}; + static constexpr storage omega_inv28 = {0x252eb0db, 0x2c811e9a, 0x7479e161, 0x1b7d960d, + 0xb0a89a26, 0xb3afc7c1, 0x32b5e793, 0x6a2f9533}; + static constexpr storage omega_inv29 = {0x08b8a7ad, 0xe877b2c4, 0x341652b4, 0x68b0e8f0, + 0xe8b6a2d9, 0x2d44da3b, 0xfd09be59, 0x092778ff}; + static constexpr storage omega_inv30 = {0x7988f244, 0x84a1aa6f, 0x24faf63f, 0xa164b3d9, + 0xc1bbb915, 0x7aae9724, 0xf386c0d2, 0x24e5d287}; + static constexpr storage omega_inv31 = {0x41a1b30c, 0xa70a7efd, 0x39f0e511, 0xc49c55a5, + 0x033bb323, 0xab307a8f, 0x17acbd7f, 0x0158abd6}; + static constexpr storage omega_inv32 = {0x0f642025, 0x2c228b30, 0x01bd882b, 0xb0878e8d, + 0xd7377fea, 0xd862b255, 0xf0490536, 0x18ac3666}; + static constexpr storage_array omega_inv = { - omega_inv1, omega_inv2, omega_inv3, omega_inv4, omega_inv5, omega_inv6, omega_inv7, omega_inv8, - omega_inv9, omega_inv10, omega_inv11, omega_inv12, omega_inv13, omega_inv14, omega_inv15, omega_inv16, - omega_inv17, omega_inv18, omega_inv19, omega_inv20, omega_inv21, omega_inv22, omega_inv23, omega_inv24, - omega_inv25, omega_inv26, omega_inv27, omega_inv28, omega_inv29, omega_inv30, omega_inv31, omega_inv32, + omega_inv1, omega_inv2, omega_inv3, omega_inv4, omega_inv5, omega_inv6, omega_inv7, omega_inv8, + omega_inv9, omega_inv10, omega_inv11, omega_inv12, omega_inv13, omega_inv14, omega_inv15, omega_inv16, + omega_inv17, omega_inv18, omega_inv19, omega_inv20, omega_inv21, omega_inv22, omega_inv23, omega_inv24, + omega_inv25, omega_inv26, omega_inv27, omega_inv28, omega_inv29, omega_inv30, omega_inv31, omega_inv32, }; - + // Quick fix for linking issue - static constexpr storage inv1= {0x80000001, 0x7fffffff, 0x7fff2dff, 0xa9ded201, 0x04d0ec02, 0x199cec04, 0x94cebea4, 0x39f6d3a9}; - static constexpr storage inv2= {0x40000001, 0x3fffffff, 0x3ffec4ff, 0xfece3b02, 0x07396203, 0x266b6206, 0x5f361df6, 0x56f23d7e}; - static constexpr storage inv3= {0x20000001, 0x1fffffff, 0x9ffe907f, 0xa945ef82, 0x086d9d04, 0x2cd29d07, 0xc469cd9f, 0x656ff268}; - static constexpr storage inv4= {0x10000001, 0x0fffffff, 0xcffe763f, 0xfe81c9c2, 0x8907ba84, 0xb0063a87, 0xf703a573, 0x6caeccdd}; - static constexpr storage inv5= {0x08000001, 0x07ffffff, 0xe7fe691f, 0x291fb6e2, 0xc954c945, 0xf1a00947, 0x9050915d, 0x704e3a18}; - static constexpr storage inv6= {0x04000001, 0x03ffffff, 0xf3fe628f, 0x3e6ead72, 0xe97b50a5, 0x126cf0a7, 0xdcf70753, 0x721df0b5}; - static constexpr storage inv7= {0x02000001, 0x01ffffff, 0xf9fe5f47, 0x491628ba, 0xf98e9455, 0xa2d36457, 0x834a424d, 0x7305cc04}; - static constexpr storage inv8= {0x01000001, 0x00ffffff, 0xfcfe5da3, 0x4e69e65e, 0x0198362d, 0xeb069e30, 0xd673dfca, 0x7379b9ab}; - static constexpr storage inv9= {0x00800001, 0x007fffff, 0xfe7e5cd1, 0x5113c530, 0x059d0719, 0x8f203b1c, 0x8008ae89, 0x73b3b07f}; - static constexpr storage inv10= {0x00400001, 0x003fffff, 0xff3e5c68, 0x5268b499, 0x079f6f8f, 0xe12d0992, 0x54d315e8, 0x73d0abe9}; - static constexpr storage inv11= {0x00200001, 0x801fffff, 0x7f9e5c33, 0x53132c4e, 0x08a0a3ca, 0x8a3370cd, 0x3f384998, 0x73df299e}; - static constexpr storage inv12= {0x00100001, 0x400fffff, 0xbfce5c19, 0xd3686828, 0x89213de7, 0x5eb6a46a, 0xb46ae370, 0x73e66878}; - static constexpr storage inv13= {0x00080001, 0x2007ffff, 0xdfe65c0c, 0x93930615, 0x49618af6, 0x48f83e39, 0xef04305c, 0x73ea07e5}; - static constexpr storage inv14= {0x00040001, 0x9003ffff, 0x6ff25c05, 0xf3a8550c, 0xa981b17d, 0x3e190b20, 0x8c50d6d2, 0x73ebd79c}; - static constexpr storage inv15= {0x00020001, 0x4801ffff, 0xb7f85c02, 0xa3b2fc87, 0x5991c4c1, 0x38a97194, 0xdaf72a0d, 0x73ecbf77}; - static constexpr storage inv16= {0x00010001, 0xa400ffff, 0x5bfb5c00, 0x7bb85045, 0x3199ce63, 0xb5f1a4ce, 0x824a53aa, 0x73ed3365}; - static constexpr storage inv17= {0x00008001, 0xd2007fff, 0x2dfcdbff, 0x67bafa24, 0x1d9dd334, 0x7495be6b, 0x55f3e879, 0x73ed6d5c}; - static constexpr storage inv18= {0x00004001, 0x69003fff, 0x96fd9bff, 0xddbc4f13, 0x939fd59c, 0xd3e7cb39, 0xbfc8b2e0, 0x73ed8a57}; - static constexpr storage inv19= {0x00002001, 0x34801fff, 0x4b7dfbff, 0x18bcf98b, 0xcea0d6d1, 0x8390d1a0, 0x74b31814, 0x73ed98d5}; - static constexpr storage inv20= {0x00001001, 0x1a400fff, 0x25be2bff, 0x363d4ec7, 0x6c21576b, 0x5b6554d4, 0x4f284aae, 0x73eda014}; - static constexpr storage inv21= {0x00000801, 0x0d2007ff, 0x12de43ff, 0x44fd7965, 0x3ae197b8, 0x474f966e, 0xbc62e3fb, 0x73eda3b3}; - static constexpr storage inv22= {0x00000401, 0x069003ff, 0x096e4fff, 0xcc5d8eb4, 0x2241b7de, 0xbd44b73b, 0x730030a1, 0x73eda583}; - static constexpr storage inv23= {0x00000201, 0x034801ff, 0x84b655ff, 0x100d995b, 0x95f1c7f2, 0xf83f47a1, 0x4e4ed6f4, 0x73eda66b}; - static constexpr storage inv24= {0x00000101, 0x01a400ff, 0x425a58ff, 0xb1e59eaf, 0xcfc9cffb, 0x95bc8fd4, 0x3bf62a1e, 0x73eda6df}; - static constexpr storage inv25= {0x00000081, 0x00d2007f, 0x212c5a7f, 0x82d1a159, 0x6cb5d400, 0x647b33ee, 0x32c9d3b3, 0x73eda719}; - static constexpr storage inv26= {0x00000041, 0x0069003f, 0x10955b3f, 0xeb47a2ae, 0x3b2bd602, 0xcbda85fb, 0x2e33a87d, 0x73eda736}; - static constexpr storage inv27= {0x00000021, 0x0034801f, 0x8849db9f, 0x1f82a358, 0xa266d704, 0xff8a2f01, 0xabe892e2, 0x73eda744}; - static constexpr storage inv28= {0x00000011, 0x001a400f, 0xc4241bcf, 0xb9a023ad, 0xd6045784, 0x99620384, 0xeac30815, 0x73eda74b}; - static constexpr storage inv29= {0x00000009, 0x000d2007, 0x62113be7, 0x06aee3d8, 0x6fd317c5, 0xe64dedc6, 0x8a3042ae, 0x73eda74f}; - static constexpr storage inv30= {0x00000005, 0x00069003, 0xb107cbf3, 0x2d3643ed, 0x3cba77e5, 0x8cc3e2e7, 0x59e6dffb, 0x73eda751}; - static constexpr storage inv31= {0x00000003, 0x00034801, 0x588313f9, 0x4079f3f8, 0xa32e27f5, 0xdffedd77, 0x41c22ea1, 0x73eda752}; - static constexpr storage inv32= {0x00000002, 0x0001a400, 0xac40b7fc, 0x4a1bcbfd, 0xd667fffd, 0x099c5abf, 0xb5afd5f5, 0x73eda752}; + static constexpr storage inv1 = {0x80000001, 0x7fffffff, 0x7fff2dff, 0xa9ded201, + 0x04d0ec02, 0x199cec04, 0x94cebea4, 0x39f6d3a9}; + static constexpr storage inv2 = {0x40000001, 0x3fffffff, 0x3ffec4ff, 0xfece3b02, + 0x07396203, 0x266b6206, 0x5f361df6, 0x56f23d7e}; + static constexpr storage inv3 = {0x20000001, 0x1fffffff, 0x9ffe907f, 0xa945ef82, + 0x086d9d04, 0x2cd29d07, 0xc469cd9f, 0x656ff268}; + static constexpr storage inv4 = {0x10000001, 0x0fffffff, 0xcffe763f, 0xfe81c9c2, + 0x8907ba84, 0xb0063a87, 0xf703a573, 0x6caeccdd}; + static constexpr storage inv5 = {0x08000001, 0x07ffffff, 0xe7fe691f, 0x291fb6e2, + 0xc954c945, 0xf1a00947, 0x9050915d, 0x704e3a18}; + static constexpr storage inv6 = {0x04000001, 0x03ffffff, 0xf3fe628f, 0x3e6ead72, + 0xe97b50a5, 0x126cf0a7, 0xdcf70753, 0x721df0b5}; + static constexpr storage inv7 = {0x02000001, 0x01ffffff, 0xf9fe5f47, 0x491628ba, + 0xf98e9455, 0xa2d36457, 0x834a424d, 0x7305cc04}; + static constexpr storage inv8 = {0x01000001, 0x00ffffff, 0xfcfe5da3, 0x4e69e65e, + 0x0198362d, 0xeb069e30, 0xd673dfca, 0x7379b9ab}; + static constexpr storage inv9 = {0x00800001, 0x007fffff, 0xfe7e5cd1, 0x5113c530, + 0x059d0719, 0x8f203b1c, 0x8008ae89, 0x73b3b07f}; + static constexpr storage inv10 = {0x00400001, 0x003fffff, 0xff3e5c68, 0x5268b499, + 0x079f6f8f, 0xe12d0992, 0x54d315e8, 0x73d0abe9}; + static constexpr storage inv11 = {0x00200001, 0x801fffff, 0x7f9e5c33, 0x53132c4e, + 0x08a0a3ca, 0x8a3370cd, 0x3f384998, 0x73df299e}; + static constexpr storage inv12 = {0x00100001, 0x400fffff, 0xbfce5c19, 0xd3686828, + 0x89213de7, 0x5eb6a46a, 0xb46ae370, 0x73e66878}; + static constexpr storage inv13 = {0x00080001, 0x2007ffff, 0xdfe65c0c, 0x93930615, + 0x49618af6, 0x48f83e39, 0xef04305c, 0x73ea07e5}; + static constexpr storage inv14 = {0x00040001, 0x9003ffff, 0x6ff25c05, 0xf3a8550c, + 0xa981b17d, 0x3e190b20, 0x8c50d6d2, 0x73ebd79c}; + static constexpr storage inv15 = {0x00020001, 0x4801ffff, 0xb7f85c02, 0xa3b2fc87, + 0x5991c4c1, 0x38a97194, 0xdaf72a0d, 0x73ecbf77}; + static constexpr storage inv16 = {0x00010001, 0xa400ffff, 0x5bfb5c00, 0x7bb85045, + 0x3199ce63, 0xb5f1a4ce, 0x824a53aa, 0x73ed3365}; + static constexpr storage inv17 = {0x00008001, 0xd2007fff, 0x2dfcdbff, 0x67bafa24, + 0x1d9dd334, 0x7495be6b, 0x55f3e879, 0x73ed6d5c}; + static constexpr storage inv18 = {0x00004001, 0x69003fff, 0x96fd9bff, 0xddbc4f13, + 0x939fd59c, 0xd3e7cb39, 0xbfc8b2e0, 0x73ed8a57}; + static constexpr storage inv19 = {0x00002001, 0x34801fff, 0x4b7dfbff, 0x18bcf98b, + 0xcea0d6d1, 0x8390d1a0, 0x74b31814, 0x73ed98d5}; + static constexpr storage inv20 = {0x00001001, 0x1a400fff, 0x25be2bff, 0x363d4ec7, + 0x6c21576b, 0x5b6554d4, 0x4f284aae, 0x73eda014}; + static constexpr storage inv21 = {0x00000801, 0x0d2007ff, 0x12de43ff, 0x44fd7965, + 0x3ae197b8, 0x474f966e, 0xbc62e3fb, 0x73eda3b3}; + static constexpr storage inv22 = {0x00000401, 0x069003ff, 0x096e4fff, 0xcc5d8eb4, + 0x2241b7de, 0xbd44b73b, 0x730030a1, 0x73eda583}; + static constexpr storage inv23 = {0x00000201, 0x034801ff, 0x84b655ff, 0x100d995b, + 0x95f1c7f2, 0xf83f47a1, 0x4e4ed6f4, 0x73eda66b}; + static constexpr storage inv24 = {0x00000101, 0x01a400ff, 0x425a58ff, 0xb1e59eaf, + 0xcfc9cffb, 0x95bc8fd4, 0x3bf62a1e, 0x73eda6df}; + static constexpr storage inv25 = {0x00000081, 0x00d2007f, 0x212c5a7f, 0x82d1a159, + 0x6cb5d400, 0x647b33ee, 0x32c9d3b3, 0x73eda719}; + static constexpr storage inv26 = {0x00000041, 0x0069003f, 0x10955b3f, 0xeb47a2ae, + 0x3b2bd602, 0xcbda85fb, 0x2e33a87d, 0x73eda736}; + static constexpr storage inv27 = {0x00000021, 0x0034801f, 0x8849db9f, 0x1f82a358, + 0xa266d704, 0xff8a2f01, 0xabe892e2, 0x73eda744}; + static constexpr storage inv28 = {0x00000011, 0x001a400f, 0xc4241bcf, 0xb9a023ad, + 0xd6045784, 0x99620384, 0xeac30815, 0x73eda74b}; + static constexpr storage inv29 = {0x00000009, 0x000d2007, 0x62113be7, 0x06aee3d8, + 0x6fd317c5, 0xe64dedc6, 0x8a3042ae, 0x73eda74f}; + static constexpr storage inv30 = {0x00000005, 0x00069003, 0xb107cbf3, 0x2d3643ed, + 0x3cba77e5, 0x8cc3e2e7, 0x59e6dffb, 0x73eda751}; + static constexpr storage inv31 = {0x00000003, 0x00034801, 0x588313f9, 0x4079f3f8, + 0xa32e27f5, 0xdffedd77, 0x41c22ea1, 0x73eda752}; + static constexpr storage inv32 = {0x00000002, 0x0001a400, 0xac40b7fc, 0x4a1bcbfd, + 0xd667fffd, 0x099c5abf, 0xb5afd5f5, 0x73eda752}; static constexpr storage_array inv = { - inv1, inv2, inv3, inv4, inv5, inv6, inv7, inv8, - inv9, inv10, inv11, inv12, inv13, inv14, inv15, inv16, - inv17, inv18, inv19, inv20, inv21, inv22, inv23, inv24, - inv25, inv26, inv27, inv28, inv29, inv30, inv31, inv32, - }; -}; - + inv1, inv2, inv3, inv4, inv5, inv6, inv7, inv8, inv9, inv10, inv11, inv12, inv13, inv14, inv15, inv16, + inv17, inv18, inv19, inv20, inv21, inv22, inv23, inv24, inv25, inv26, inv27, inv28, inv29, inv30, inv31, inv32, + }; + }; + struct fq_config { // field structure size = 12 * 32 bit static constexpr unsigned limbs_count = 12; - // modulus = 4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787 - static constexpr storage modulus = {0xffffaaab, 0xb9feffff, 0xb153ffff, 0x1eabfffe, 0xf6b0f624, 0x6730d2a0, 0xf38512bf, 0x64774b84, 0x434bacd7, 0x4b1ba7b6, 0x397fe69a, 0x1a0111ea}; - // modulus*2 = 8004819110443334786835579651471808313113765639878015770664116272248063300981675728885375258258031328075788545119574 - static constexpr storage modulus_2 = {0xffff5556, 0x73fdffff, 0x62a7ffff, 0x3d57fffd, 0xed61ec48, 0xce61a541, 0xe70a257e, 0xc8ee9709, 0x869759ae, 0x96374f6c, 0x72ffcd34, 0x340223d4}; - // modulus*4 = 16009638220886669573671159302943616626227531279756031541328232544496126601963351457770750516516062656151577090239148 - static constexpr storage modulus_4 = {0xfffeaaac, 0xe7fbffff, 0xc54ffffe, 0x7aaffffa, 0xdac3d890, 0x9cc34a83, 0xce144afd, 0x91dd2e13, 0xd2eb35d, 0x2c6e9ed9, 0xe5ff9a69, 0x680447a8}; - - static constexpr storage<2*limbs_count> modulus_wide = {0xffffaaab, 0xb9feffff, 0xb153ffff, 0x1eabfffe, 0xf6b0f624, 0x6730d2a0, 0xf38512bf, 0x64774b84, - 0x434bacd7, 0x4b1ba7b6, 0x397fe69a, 0x1a0111ea, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - + // modulus = + // 4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787 + static constexpr storage modulus = {0xffffaaab, 0xb9feffff, 0xb153ffff, 0x1eabfffe, + 0xf6b0f624, 0x6730d2a0, 0xf38512bf, 0x64774b84, + 0x434bacd7, 0x4b1ba7b6, 0x397fe69a, 0x1a0111ea}; + // modulus*2 = + // 8004819110443334786835579651471808313113765639878015770664116272248063300981675728885375258258031328075788545119574 + static constexpr storage modulus_2 = {0xffff5556, 0x73fdffff, 0x62a7ffff, 0x3d57fffd, + 0xed61ec48, 0xce61a541, 0xe70a257e, 0xc8ee9709, + 0x869759ae, 0x96374f6c, 0x72ffcd34, 0x340223d4}; + // modulus*4 = + // 16009638220886669573671159302943616626227531279756031541328232544496126601963351457770750516516062656151577090239148 + static constexpr storage modulus_4 = {0xfffeaaac, 0xe7fbffff, 0xc54ffffe, 0x7aaffffa, + 0xdac3d890, 0x9cc34a83, 0xce144afd, 0x91dd2e13, + 0xd2eb35d, 0x2c6e9ed9, 0xe5ff9a69, 0x680447a8}; + + static constexpr storage<2 * limbs_count> modulus_wide = { + 0xffffaaab, 0xb9feffff, 0xb153ffff, 0x1eabfffe, 0xf6b0f624, 0x6730d2a0, 0xf38512bf, 0x64774b84, + 0x434bacd7, 0x4b1ba7b6, 0x397fe69a, 0x1a0111ea, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + // modulus^2 - static constexpr storage<2*limbs_count> modulus_squared = {0x1c718e39, 0x26aa0000, 0x76382eab, 0x7ced6b1d, 0x62113cfd, 0x162c3383, 0x3e71b743, 0x66bf91ed, - 0x7091a049, 0x292e85a8, 0x86185c7b, 0x1d68619c, 0x0978ef01, 0xf5314933, 0x16ddca6e, 0x50a62cfd, - 0x349e8bd0, 0x66e59e49, 0x0e7046b4, 0xe2dc90e5, 0xa22f25e9, 0x4bd278ea, 0xb8c35fc7, 0x02a437a4}; + static constexpr storage<2 * limbs_count> modulus_squared = { + 0x1c718e39, 0x26aa0000, 0x76382eab, 0x7ced6b1d, 0x62113cfd, 0x162c3383, 0x3e71b743, 0x66bf91ed, + 0x7091a049, 0x292e85a8, 0x86185c7b, 0x1d68619c, 0x0978ef01, 0xf5314933, 0x16ddca6e, 0x50a62cfd, + 0x349e8bd0, 0x66e59e49, 0x0e7046b4, 0xe2dc90e5, 0xa22f25e9, 0x4bd278ea, 0xb8c35fc7, 0x02a437a4}; // 2*modulus^2 - static constexpr storage<2*limbs_count> modulus_squared_2 = {0x38e31c72, 0x4d540000, 0xec705d56, 0xf9dad63a, 0xc42279fa, 0x2c586706, 0x7ce36e86, 0xcd7f23da, - 0xe1234092, 0x525d0b50, 0x0c30b8f6, 0x3ad0c339, 0x12f1de02, 0xea629266, 0x2dbb94dd, 0xa14c59fa, - 0x693d17a0, 0xcdcb3c92, 0x1ce08d68, 0xc5b921ca, 0x445e4bd3, 0x97a4f1d5, 0x7186bf8e, 0x05486f49}; + static constexpr storage<2 * limbs_count> modulus_squared_2 = { + 0x38e31c72, 0x4d540000, 0xec705d56, 0xf9dad63a, 0xc42279fa, 0x2c586706, 0x7ce36e86, 0xcd7f23da, + 0xe1234092, 0x525d0b50, 0x0c30b8f6, 0x3ad0c339, 0x12f1de02, 0xea629266, 0x2dbb94dd, 0xa14c59fa, + 0x693d17a0, 0xcdcb3c92, 0x1ce08d68, 0xc5b921ca, 0x445e4bd3, 0x97a4f1d5, 0x7186bf8e, 0x05486f49}; // 4*modulus^2 - static constexpr storage<2*limbs_count> modulus_squared_4 = {0x71c638e4, 0x9aa80000, 0xd8e0baac, 0xf3b5ac75, 0x8844f3f5, 0x58b0ce0d, 0xf9c6dd0c, 0x9afe47b4, - 0xc2468125, 0xa4ba16a1, 0x186171ec, 0x75a18672, 0x25e3bc04, 0xd4c524cc, 0x5b7729bb, 0x4298b3f4, - 0xd27a2f41, 0x9b967924, 0x39c11ad1, 0x8b724394, 0x88bc97a7, 0x2f49e3aa, 0xe30d7f1d, 0x0a90de92}; + static constexpr storage<2 * limbs_count> modulus_squared_4 = { + 0x71c638e4, 0x9aa80000, 0xd8e0baac, 0xf3b5ac75, 0x8844f3f5, 0x58b0ce0d, 0xf9c6dd0c, 0x9afe47b4, + 0xc2468125, 0xa4ba16a1, 0x186171ec, 0x75a18672, 0x25e3bc04, 0xd4c524cc, 0x5b7729bb, 0x4298b3f4, + 0xd27a2f41, 0x9b967924, 0x39c11ad1, 0x8b724394, 0x88bc97a7, 0x2f49e3aa, 0xe30d7f1d, 0x0a90de92}; static constexpr unsigned modulus_bit_count = 381; // m = floor(2^(2*modulus_bit_count) / modulus) - static constexpr storage m = {0xd59646e8, 0xec4f881f, 0x8163c701, 0x4e65c59e, 0x80a19de7, 0x2f7d1dc7, 0x7fda82a5, 0xa46e09d0, 0x331e9ae8, 0x38a0406c, 0xcf327917, 0x2760d74b}; - static constexpr storage one = {0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage zero = {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage montgomery_r = {0x0005555, 0x60100000, 0xeac00004, 0x15400014, 0x94f09dbe, 0x8cf2d5f0, 0xc7aed409, 0xb88b47b0, 0xcb453289, 0x4e45849b, 0x6801965b, 0x5feee15c}; - static constexpr storage montgomery_r_inv = {0x05c40fe, 0xaa212c9c, 0xccfd7e14, 0x70093ae9, 0xc85a96b4, 0x6d05c02d, 0x025fecd3, 0x1f193851, 0xeb48f4c6, 0x84d32f44, 0xed8ffb1a, 0xbefcc91e}; + static constexpr storage m = {0xd59646e8, 0xec4f881f, 0x8163c701, 0x4e65c59e, 0x80a19de7, 0x2f7d1dc7, + 0x7fda82a5, 0xa46e09d0, 0x331e9ae8, 0x38a0406c, 0xcf327917, 0x2760d74b}; + static constexpr storage one = {0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage zero = {0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage montgomery_r = {0x0005555, 0x60100000, 0xeac00004, 0x15400014, + 0x94f09dbe, 0x8cf2d5f0, 0xc7aed409, 0xb88b47b0, + 0xcb453289, 0x4e45849b, 0x6801965b, 0x5feee15c}; + static constexpr storage montgomery_r_inv = {0x05c40fe, 0xaa212c9c, 0xccfd7e14, 0x70093ae9, + 0xc85a96b4, 0x6d05c02d, 0x025fecd3, 0x1f193851, + 0xeb48f4c6, 0x84d32f44, 0xed8ffb1a, 0xbefcc91e}; // i^2, the square of the imaginary unit for the extension field static constexpr uint32_t i_squared = 1; // true if i^2 is negative static constexpr bool i_squared_is_negative = true; - // G1 and G2 generators - static constexpr storage g1_gen_x = {0xdb22c6bb, 0xfb3af00a, 0xf97a1aef, 0x6c55e83f, 0x171bac58, 0xa14e3a3f, - 0x9774b905, 0xc3688c4f, 0x4fa9ac0f, 0x2695638c, 0x3197d794, 0x17f1d3a7}; - static constexpr storage g1_gen_y = {0x46c5e7e1, 0x0caa2329, 0xa2888ae4, 0xd03cc744, 0x2c04b3ed, 0x00db18cb, - 0xd5d00af6, 0xfcf5e095, 0x741d8ae4, 0xa09e30ed, 0xe3aaa0f1, 0x08b3f481}; - static constexpr storage g2_gen_x_re = {0xc121bdb8, 0xd48056c8, 0xa805bbef, 0x0bac0326, 0x7ae3d177, 0xb4510b64, - 0xfa403b02, 0xc6e47ad4, 0x2dc51051, 0x26080527, 0xf08f0a91, 0x024aa2b2}; - static constexpr storage g2_gen_x_im = {0x5d042b7e, 0xe5ac7d05, 0x13945d57, 0x334cf112, 0xdc7f5049, 0xb5da61bb, - 0x9920b61a, 0x596bd0d0, 0x88274f65, 0x7dacd3a0, 0x52719f60, 0x13e02b60}; - static constexpr storage g2_gen_y_re = {0x08b82801, 0xe1935486, 0x3baca289, 0x923ac9cc, 0x5160d12c, 0x6d429a69, - 0x8cbdd3a7, 0xadfd9baa, 0xda2e351a, 0x8cc9cdc6, 0x727d6e11, 0x0ce5d527}; - static constexpr storage g2_gen_y_im = {0xf05f79be, 0xaaa9075f, 0x5cec1da1, 0x3f370d27, 0x572e99ab, 0x267492ab, - 0x85a763af, 0xcb3e287e, 0x2bc28b99, 0x32acd2b0, 0x2ea734cc, 0x0606c4a0}; + // G1 and G2 generators + static constexpr storage g1_gen_x = {0xdb22c6bb, 0xfb3af00a, 0xf97a1aef, 0x6c55e83f, + 0x171bac58, 0xa14e3a3f, 0x9774b905, 0xc3688c4f, + 0x4fa9ac0f, 0x2695638c, 0x3197d794, 0x17f1d3a7}; + static constexpr storage g1_gen_y = {0x46c5e7e1, 0x0caa2329, 0xa2888ae4, 0xd03cc744, + 0x2c04b3ed, 0x00db18cb, 0xd5d00af6, 0xfcf5e095, + 0x741d8ae4, 0xa09e30ed, 0xe3aaa0f1, 0x08b3f481}; + static constexpr storage g2_gen_x_re = {0xc121bdb8, 0xd48056c8, 0xa805bbef, 0x0bac0326, + 0x7ae3d177, 0xb4510b64, 0xfa403b02, 0xc6e47ad4, + 0x2dc51051, 0x26080527, 0xf08f0a91, 0x024aa2b2}; + static constexpr storage g2_gen_x_im = {0x5d042b7e, 0xe5ac7d05, 0x13945d57, 0x334cf112, + 0xdc7f5049, 0xb5da61bb, 0x9920b61a, 0x596bd0d0, + 0x88274f65, 0x7dacd3a0, 0x52719f60, 0x13e02b60}; + static constexpr storage g2_gen_y_re = {0x08b82801, 0xe1935486, 0x3baca289, 0x923ac9cc, + 0x5160d12c, 0x6d429a69, 0x8cbdd3a7, 0xadfd9baa, + 0xda2e351a, 0x8cc9cdc6, 0x727d6e11, 0x0ce5d527}; + static constexpr storage g2_gen_y_im = {0xf05f79be, 0xaaa9075f, 0x5cec1da1, 0x3f370d27, + 0x572e99ab, 0x267492ab, 0x85a763af, 0xcb3e287e, + 0x2bc28b99, 0x32acd2b0, 0x2ea734cc, 0x0606c4a0}; }; - - static constexpr storage weierstrass_b = {0x00000004, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage weierstrass_b_g2_re = {0x00000004, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage weierstrass_b_g2_im = {0x00000004, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; -} \ No newline at end of file + + static constexpr storage weierstrass_b = {0x00000004, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage weierstrass_b_g2_re = { + 0x00000004, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage weierstrass_b_g2_im = { + 0x00000004, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; +} // namespace PARAMS_BLS12_381 \ No newline at end of file diff --git a/icicle/curves/bls12_381/poseidon.cu b/icicle/curves/bls12_381/poseidon.cu index dde35a2c..640a1708 100644 --- a/icicle/curves/bls12_381/poseidon.cu +++ b/icicle/curves/bls12_381/poseidon.cu @@ -1,23 +1,25 @@ #ifndef _BLS12_381_POSEIDON #define _BLS12_381_POSEIDON -#include -#include #include "../../appUtils/poseidon/poseidon.cu" #include "curve_config.cuh" +#include +#include template class Poseidon; -extern "C" int poseidon_multi_cuda_bls12_381(BLS12_381::scalar_t input[], BLS12_381::scalar_t* out, - size_t number_of_blocks, int arity, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int poseidon_multi_cuda_bls12_381( + BLS12_381::scalar_t input[], + BLS12_381::scalar_t* out, + size_t number_of_blocks, + int arity, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - // TODO: once we get bindings to pass a stream, we should make {stream} a required parameter and use it instead of + try { + // TODO: once we get bindings to pass a stream, we should make {stream} a required parameter and use it instead of // creating a new stream - if (stream == 0) { - cudaStreamCreate(&stream); - } - + if (stream == 0) { cudaStreamCreate(&stream); } + cudaEvent_t start_event, end_event; cudaEventCreate(&start_event); cudaEventCreate(&end_event); @@ -27,19 +29,17 @@ extern "C" int poseidon_multi_cuda_bls12_381(BLS12_381::scalar_t input[], BLS12_ cudaEventRecord(end_event, stream); cudaEventSynchronize(end_event); - #ifdef DEBUG +#ifdef DEBUG float elapsedTime; cudaEventElapsedTime(&elapsedTime, start_event, end_event); printf("Time elapsed: %f", elapsedTime); - #endif +#endif cudaEventDestroy(start_event); cudaEventDestroy(end_event); return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { + } catch (const std::runtime_error& ex) { printf("error %s", ex.what()); return -1; } diff --git a/icicle/curves/bls12_381/projective.cu b/icicle/curves/bls12_381/projective.cu index a590dbf4..2ff59767 100644 --- a/icicle/curves/bls12_381/projective.cu +++ b/icicle/curves/bls12_381/projective.cu @@ -1,19 +1,23 @@ -#include -#include "curve_config.cuh" #include "../../primitives/projective.cuh" +#include "curve_config.cuh" +#include -extern "C" bool eq_bls12_381(BLS12_381::projective_t *point1, BLS12_381::projective_t *point2) +extern "C" bool eq_bls12_381(BLS12_381::projective_t* point1, BLS12_381::projective_t* point2) { - return (*point1 == *point2) && - !((point1->x == BLS12_381::point_field_t::zero()) && (point1->y == BLS12_381::point_field_t::zero()) && (point1->z == BLS12_381::point_field_t::zero())) && - !((point2->x == BLS12_381::point_field_t::zero()) && (point2->y == BLS12_381::point_field_t::zero()) && (point2->z == BLS12_381::point_field_t::zero())); + return (*point1 == *point2) && + !((point1->x == BLS12_381::point_field_t::zero()) && (point1->y == BLS12_381::point_field_t::zero()) && + (point1->z == BLS12_381::point_field_t::zero())) && + !((point2->x == BLS12_381::point_field_t::zero()) && (point2->y == BLS12_381::point_field_t::zero()) && + (point2->z == BLS12_381::point_field_t::zero())); } #if defined(G2_DEFINED) -extern "C" bool eq_g2_bls12_381(BLS12_381::g2_projective_t *point1, BLS12_381::g2_projective_t *point2) +extern "C" bool eq_g2_bls12_381(BLS12_381::g2_projective_t* point1, BLS12_381::g2_projective_t* point2) { - return (*point1 == *point2) && - !((point1->x == BLS12_381::g2_point_field_t::zero()) && (point1->y == BLS12_381::g2_point_field_t::zero()) && (point1->z == BLS12_381::g2_point_field_t::zero())) && - !((point2->x == BLS12_381::g2_point_field_t::zero()) && (point2->y == BLS12_381::g2_point_field_t::zero()) && (point2->z == BLS12_381::g2_point_field_t::zero())); + return (*point1 == *point2) && + !((point1->x == BLS12_381::g2_point_field_t::zero()) && (point1->y == BLS12_381::g2_point_field_t::zero()) && + (point1->z == BLS12_381::g2_point_field_t::zero())) && + !((point2->x == BLS12_381::g2_point_field_t::zero()) && (point2->y == BLS12_381::g2_point_field_t::zero()) && + (point2->z == BLS12_381::g2_point_field_t::zero())); } #endif diff --git a/icicle/curves/bls12_381/supported_operations.cu b/icicle/curves/bls12_381/supported_operations.cu index 11be2dbd..5edd089f 100644 --- a/icicle/curves/bls12_381/supported_operations.cu +++ b/icicle/curves/bls12_381/supported_operations.cu @@ -1,5 +1,5 @@ -#include "projective.cu" #include "lde.cu" #include "msm.cu" -#include "ve_mod_mult.cu" #include "poseidon.cu" +#include "projective.cu" +#include "ve_mod_mult.cu" diff --git a/icicle/curves/bls12_381/ve_mod_mult.cu b/icicle/curves/bls12_381/ve_mod_mult.cu index 73075e8e..f6ee2540 100644 --- a/icicle/curves/bls12_381/ve_mod_mult.cu +++ b/icicle/curves/bls12_381/ve_mod_mult.cu @@ -1,66 +1,60 @@ #ifndef _BLS12_381_VEC_MULT #define _BLS12_381_VEC_MULT -#include -#include -#include "../../primitives/field.cuh" -#include "../../utils/storage.cuh" -#include "../../primitives/projective.cuh" -#include "curve_config.cuh" #include "../../appUtils/vector_manipulation/ve_mod_mult.cuh" +#include "../../primitives/field.cuh" +#include "../../primitives/projective.cuh" +#include "../../utils/storage.cuh" +#include "curve_config.cuh" +#include +#include -extern "C" int32_t vec_mod_mult_point_bls12_381(BLS12_381::projective_t *inout, - BLS12_381::scalar_t *scalar_vec, - size_t n_elments, - size_t device_id, - cudaStream_t stream = 0) +extern "C" int32_t vec_mod_mult_point_bls12_381( + BLS12_381::projective_t* inout, + BLS12_381::scalar_t* scalar_vec, + size_t n_elments, + size_t device_id, + cudaStream_t stream = 0) { - try - { + try { // TODO: device_id vector_mod_mult(scalar_vec, inout, inout, n_elments, stream); return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { + } catch (const std::runtime_error& ex) { printf("error %s", ex.what()); // TODO: error code and message return -1; } } -extern "C" int32_t vec_mod_mult_scalar_bls12_381(BLS12_381::scalar_t *inout, - BLS12_381::scalar_t *scalar_vec, - size_t n_elments, - size_t device_id, - cudaStream_t stream = 0) +extern "C" int32_t vec_mod_mult_scalar_bls12_381( + BLS12_381::scalar_t* inout, + BLS12_381::scalar_t* scalar_vec, + size_t n_elments, + size_t device_id, + cudaStream_t stream = 0) { - try - { + try { // TODO: device_id vector_mod_mult(scalar_vec, inout, inout, n_elments, stream); return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { + } catch (const std::runtime_error& ex) { printf("error %s", ex.what()); // TODO: error code and message return -1; } } -extern "C" int32_t matrix_vec_mod_mult_bls12_381(BLS12_381::scalar_t *matrix_flattened, - BLS12_381::scalar_t *input, - BLS12_381::scalar_t *output, - size_t n_elments, - size_t device_id, - cudaStream_t stream = 0) +extern "C" int32_t matrix_vec_mod_mult_bls12_381( + BLS12_381::scalar_t* matrix_flattened, + BLS12_381::scalar_t* input, + BLS12_381::scalar_t* output, + size_t n_elments, + size_t device_id, + cudaStream_t stream = 0) { - try - { + try { // TODO: device_id matrix_mod_mult(matrix_flattened, input, output, n_elments, stream); return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { + } catch (const std::runtime_error& ex) { printf("error %s", ex.what()); // TODO: error code and message return -1; } diff --git a/icicle/curves/bn254/curve_config.cuh b/icicle/curves/bn254/curve_config.cuh index adc8729f..1e462e4a 100644 --- a/icicle/curves/bn254/curve_config.cuh +++ b/icicle/curves/bn254/curve_config.cuh @@ -9,17 +9,17 @@ #include "params.cuh" namespace BN254 { - typedef Field scalar_field_t; - typedef scalar_field_t scalar_t; - typedef Field point_field_t; - static constexpr point_field_t b = point_field_t{ PARAMS_BN254::weierstrass_b }; - typedef Projective projective_t; - typedef Affine affine_t; - #if defined(G2_DEFINED) - typedef ExtensionField g2_point_field_t; - static constexpr g2_point_field_t b_g2 = g2_point_field_t{ point_field_t{ PARAMS_BN254::weierstrass_b_g2_re }, - point_field_t{ PARAMS_BN254::weierstrass_b_g2_im }}; - typedef Projective g2_projective_t; - typedef Affine g2_affine_t; - #endif -} \ No newline at end of file + typedef Field scalar_field_t; + typedef scalar_field_t scalar_t; + typedef Field point_field_t; + static constexpr point_field_t b = point_field_t{PARAMS_BN254::weierstrass_b}; + typedef Projective projective_t; + typedef Affine affine_t; +#if defined(G2_DEFINED) + typedef ExtensionField g2_point_field_t; + static constexpr g2_point_field_t b_g2 = g2_point_field_t{ + point_field_t{PARAMS_BN254::weierstrass_b_g2_re}, point_field_t{PARAMS_BN254::weierstrass_b_g2_im}}; + typedef Projective g2_projective_t; + typedef Affine g2_affine_t; +#endif +} // namespace BN254 \ No newline at end of file diff --git a/icicle/curves/bn254/lde.cu b/icicle/curves/bn254/lde.cu index 42f7de3f..dd66404e 100644 --- a/icicle/curves/bn254/lde.cu +++ b/icicle/curves/bn254/lde.cu @@ -1,567 +1,592 @@ #ifndef _BN254_LDE #define _BN254_LDE -#include #include "../../appUtils/ntt/lde.cu" #include "../../appUtils/ntt/ntt.cuh" #include "../../appUtils/vector_manipulation/ve_mod_mult.cuh" -#include "curve_config.cuh" #include "../../utils/mont.cuh" +#include "curve_config.cuh" +#include - - -extern "C" BN254::scalar_t* build_domain_cuda_bn254(uint32_t domain_size, uint32_t logn, bool inverse, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" BN254::scalar_t* build_domain_cuda_bn254( + uint32_t domain_size, uint32_t logn, bool inverse, size_t device_id = 0, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - if (inverse) { - return fill_twiddle_factors_array(domain_size, BN254::scalar_t::omega_inv(logn), stream); - } else { - return fill_twiddle_factors_array(domain_size, BN254::scalar_t::omega(logn), stream); - } - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return nullptr; + try { + cudaStreamCreate(&stream); + if (inverse) { + return fill_twiddle_factors_array(domain_size, BN254::scalar_t::omega_inv(logn), stream); + } else { + return fill_twiddle_factors_array(domain_size, BN254::scalar_t::omega(logn), stream); } + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return nullptr; + } } -extern "C" int ntt_cuda_bn254(BN254::scalar_t *arr, uint32_t n, bool inverse, Decimation decimation, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int ntt_cuda_bn254( + BN254::scalar_t* arr, uint32_t n, bool inverse, Decimation decimation, size_t device_id = 0, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return ntt_end2end_template(arr, n, inverse, stream); // TODO: pass device_id - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - - return -1; - } + try { + cudaStreamCreate(&stream); + return ntt_end2end_template(arr, n, inverse, stream); // TODO: pass device_id + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + + return -1; + } } -extern "C" int ecntt_cuda_bn254(BN254::projective_t *arr, uint32_t n, bool inverse, Decimation decimation, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int ecntt_cuda_bn254( + BN254::projective_t* arr, + uint32_t n, + bool inverse, + Decimation decimation, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return ntt_end2end_template(arr, n, inverse, stream); // TODO: pass device_id - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return ntt_end2end_template(arr, n, inverse, stream); // TODO: pass device_id + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int ntt_batch_cuda_bn254(BN254::scalar_t *arr, uint32_t arr_size, uint32_t batch_size, bool inverse, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int ntt_batch_cuda_bn254( + BN254::scalar_t* arr, + uint32_t arr_size, + uint32_t batch_size, + bool inverse, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return ntt_end2end_batch_template(arr, arr_size, batch_size, inverse, stream); // TODO: pass device_id - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return ntt_end2end_batch_template( + arr, arr_size, batch_size, inverse, stream); // TODO: pass device_id + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int ecntt_batch_cuda_bn254(BN254::projective_t *arr, uint32_t arr_size, uint32_t batch_size, bool inverse, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int ecntt_batch_cuda_bn254( + BN254::projective_t* arr, + uint32_t arr_size, + uint32_t batch_size, + bool inverse, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return ntt_end2end_batch_template(arr, arr_size, batch_size, inverse, stream); // TODO: pass device_id - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return ntt_end2end_batch_template( + arr, arr_size, batch_size, inverse, stream); // TODO: pass device_id + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int interpolate_scalars_cuda_bn254(BN254::scalar_t* d_out, BN254::scalar_t *d_evaluations, BN254::scalar_t *d_domain, unsigned n, unsigned device_id = 0, cudaStream_t stream = 0) +extern "C" int interpolate_scalars_cuda_bn254( + BN254::scalar_t* d_out, + BN254::scalar_t* d_evaluations, + BN254::scalar_t* d_domain, + unsigned n, + unsigned device_id = 0, + cudaStream_t stream = 0) { - try - { - BN254::scalar_t* _null = nullptr; - return interpolate(d_out, d_evaluations, d_domain, n, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + BN254::scalar_t* _null = nullptr; + return interpolate(d_out, d_evaluations, d_domain, n, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int interpolate_scalars_batch_cuda_bn254(BN254::scalar_t* d_out, BN254::scalar_t* d_evaluations, BN254::scalar_t* d_domain, unsigned n, - unsigned batch_size, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int interpolate_scalars_batch_cuda_bn254( + BN254::scalar_t* d_out, + BN254::scalar_t* d_evaluations, + BN254::scalar_t* d_domain, + unsigned n, + unsigned batch_size, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - BN254::scalar_t* _null = nullptr; - cudaStreamCreate(&stream); - return interpolate_batch(d_out, d_evaluations, d_domain, n, batch_size, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + BN254::scalar_t* _null = nullptr; + cudaStreamCreate(&stream); + return interpolate_batch(d_out, d_evaluations, d_domain, n, batch_size, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int interpolate_scalars_on_coset_cuda_bn254(BN254::scalar_t* d_out, BN254::scalar_t *d_evaluations, BN254::scalar_t *d_domain, unsigned n, BN254::scalar_t *coset_powers, unsigned device_id = 0, cudaStream_t stream = 0) +extern "C" int interpolate_scalars_on_coset_cuda_bn254( + BN254::scalar_t* d_out, + BN254::scalar_t* d_evaluations, + BN254::scalar_t* d_domain, + unsigned n, + BN254::scalar_t* coset_powers, + unsigned device_id = 0, + cudaStream_t stream = 0) { - try - { - return interpolate(d_out, d_evaluations, d_domain, n, true, coset_powers, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + return interpolate(d_out, d_evaluations, d_domain, n, true, coset_powers, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int interpolate_scalars_batch_on_coset_cuda_bn254(BN254::scalar_t* d_out, BN254::scalar_t* d_evaluations, BN254::scalar_t* d_domain, unsigned n, - unsigned batch_size, BN254::scalar_t* coset_powers, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int interpolate_scalars_batch_on_coset_cuda_bn254( + BN254::scalar_t* d_out, + BN254::scalar_t* d_evaluations, + BN254::scalar_t* d_domain, + unsigned n, + unsigned batch_size, + BN254::scalar_t* coset_powers, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return interpolate_batch(d_out, d_evaluations, d_domain, n, batch_size, true, coset_powers, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return interpolate_batch(d_out, d_evaluations, d_domain, n, batch_size, true, coset_powers, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int interpolate_points_cuda_bn254(BN254::projective_t* d_out, BN254::projective_t *d_evaluations, BN254::scalar_t *d_domain, unsigned n, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int interpolate_points_cuda_bn254( + BN254::projective_t* d_out, + BN254::projective_t* d_evaluations, + BN254::scalar_t* d_domain, + unsigned n, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - BN254::scalar_t* _null = nullptr; - return interpolate(d_out, d_evaluations, d_domain, n, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + BN254::scalar_t* _null = nullptr; + return interpolate(d_out, d_evaluations, d_domain, n, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int interpolate_points_batch_cuda_bn254(BN254::projective_t* d_out, BN254::projective_t* d_evaluations, BN254::scalar_t* d_domain, - unsigned n, unsigned batch_size, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int interpolate_points_batch_cuda_bn254( + BN254::projective_t* d_out, + BN254::projective_t* d_evaluations, + BN254::scalar_t* d_domain, + unsigned n, + unsigned batch_size, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - BN254::scalar_t* _null = nullptr; - cudaStreamCreate(&stream); - return interpolate_batch(d_out, d_evaluations, d_domain, n, batch_size, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + BN254::scalar_t* _null = nullptr; + cudaStreamCreate(&stream); + return interpolate_batch(d_out, d_evaluations, d_domain, n, batch_size, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int evaluate_scalars_cuda_bn254(BN254::scalar_t* d_out, BN254::scalar_t *d_coefficients, BN254::scalar_t *d_domain, - unsigned domain_size, unsigned n, unsigned device_id = 0, cudaStream_t stream = 0) +extern "C" int evaluate_scalars_cuda_bn254( + BN254::scalar_t* d_out, + BN254::scalar_t* d_coefficients, + BN254::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned device_id = 0, + cudaStream_t stream = 0) { - try - { - BN254::scalar_t* _null = nullptr; - cudaStreamCreate(&stream); - return evaluate(d_out, d_coefficients, d_domain, domain_size, n, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + BN254::scalar_t* _null = nullptr; + cudaStreamCreate(&stream); + return evaluate(d_out, d_coefficients, d_domain, domain_size, n, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int evaluate_scalars_batch_cuda_bn254(BN254::scalar_t* d_out, BN254::scalar_t* d_coefficients, BN254::scalar_t* d_domain, unsigned domain_size, - unsigned n, unsigned batch_size, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int evaluate_scalars_batch_cuda_bn254( + BN254::scalar_t* d_out, + BN254::scalar_t* d_coefficients, + BN254::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - BN254::scalar_t* _null = nullptr; - cudaStreamCreate(&stream); - return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + BN254::scalar_t* _null = nullptr; + cudaStreamCreate(&stream); + return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int evaluate_points_cuda_bn254(BN254::projective_t* d_out, BN254::projective_t *d_coefficients, BN254::scalar_t *d_domain, - unsigned domain_size, unsigned n, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int evaluate_points_cuda_bn254( + BN254::projective_t* d_out, + BN254::projective_t* d_coefficients, + BN254::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - BN254::scalar_t* _null = nullptr; - cudaStreamCreate(&stream); - return evaluate(d_out, d_coefficients, d_domain, domain_size, n, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + BN254::scalar_t* _null = nullptr; + cudaStreamCreate(&stream); + return evaluate(d_out, d_coefficients, d_domain, domain_size, n, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int evaluate_points_batch_cuda_bn254(BN254::projective_t* d_out, BN254::projective_t* d_coefficients, BN254::scalar_t* d_domain, unsigned domain_size, - unsigned n, unsigned batch_size, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int evaluate_points_batch_cuda_bn254( + BN254::projective_t* d_out, + BN254::projective_t* d_coefficients, + BN254::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - BN254::scalar_t* _null = nullptr; - cudaStreamCreate(&stream); - return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + BN254::scalar_t* _null = nullptr; + cudaStreamCreate(&stream); + return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int evaluate_scalars_on_coset_cuda_bn254(BN254::scalar_t* d_out, BN254::scalar_t *d_coefficients, BN254::scalar_t *d_domain, unsigned domain_size, - unsigned n, BN254::scalar_t *coset_powers, unsigned device_id = 0, cudaStream_t stream = 0) +extern "C" int evaluate_scalars_on_coset_cuda_bn254( + BN254::scalar_t* d_out, + BN254::scalar_t* d_coefficients, + BN254::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + BN254::scalar_t* coset_powers, + unsigned device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return evaluate(d_out, d_coefficients, d_domain, domain_size, n, true, coset_powers, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return evaluate(d_out, d_coefficients, d_domain, domain_size, n, true, coset_powers, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int evaluate_scalars_on_coset_batch_cuda_bn254(BN254::scalar_t* d_out, BN254::scalar_t* d_coefficients, BN254::scalar_t* d_domain, unsigned domain_size, - unsigned n, unsigned batch_size, BN254::scalar_t *coset_powers, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int evaluate_scalars_on_coset_batch_cuda_bn254( + BN254::scalar_t* d_out, + BN254::scalar_t* d_coefficients, + BN254::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + BN254::scalar_t* coset_powers, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, true, coset_powers, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, true, coset_powers, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int evaluate_points_on_coset_cuda_bn254(BN254::projective_t* d_out, BN254::projective_t *d_coefficients, BN254::scalar_t *d_domain, unsigned domain_size, - unsigned n, BN254::scalar_t *coset_powers, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int evaluate_points_on_coset_cuda_bn254( + BN254::projective_t* d_out, + BN254::projective_t* d_coefficients, + BN254::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + BN254::scalar_t* coset_powers, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return evaluate(d_out, d_coefficients, d_domain, domain_size, n, true, coset_powers, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return evaluate(d_out, d_coefficients, d_domain, domain_size, n, true, coset_powers, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int evaluate_points_on_coset_batch_cuda_bn254(BN254::projective_t* d_out, BN254::projective_t* d_coefficients, BN254::scalar_t* d_domain, unsigned domain_size, - unsigned n, unsigned batch_size, BN254::scalar_t *coset_powers, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int evaluate_points_on_coset_batch_cuda_bn254( + BN254::projective_t* d_out, + BN254::projective_t* d_coefficients, + BN254::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + BN254::scalar_t* coset_powers, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, true, coset_powers, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, true, coset_powers, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int ntt_inplace_batch_cuda_bn254(BN254::scalar_t* d_inout, BN254::scalar_t* d_twiddles, - unsigned n, unsigned batch_size, bool inverse, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int ntt_inplace_batch_cuda_bn254( + BN254::scalar_t* d_inout, + BN254::scalar_t* d_twiddles, + unsigned n, + unsigned batch_size, + bool inverse, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - - cudaStreamCreate(&stream); - BN254::scalar_t* _null = nullptr; - ntt_inplace_batch_template(d_inout, d_twiddles, n, batch_size, inverse, false, _null, stream, true); - return CUDA_SUCCESS; //TODO: we should implement this https://leimao.github.io/blog/Proper-CUDA-Error-Checking/ - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + BN254::scalar_t* _null = nullptr; + ntt_inplace_batch_template(d_inout, d_twiddles, n, batch_size, inverse, false, _null, stream, true); + return CUDA_SUCCESS; // TODO: we should implement this https://leimao.github.io/blog/Proper-CUDA-Error-Checking/ + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int ntt_inplace_coset_batch_cuda_bn254(BN254::scalar_t* d_inout, BN254::scalar_t* d_twiddles, - unsigned n, unsigned batch_size, bool inverse, bool is_coset, BN254::scalar_t* coset, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int ntt_inplace_coset_batch_cuda_bn254( + BN254::scalar_t* d_inout, + BN254::scalar_t* d_twiddles, + unsigned n, + unsigned batch_size, + bool inverse, + bool is_coset, + BN254::scalar_t* coset, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - ntt_inplace_batch_template(d_inout, d_twiddles, n, batch_size, inverse, is_coset, coset, stream, true); - return CUDA_SUCCESS; //TODO: we should implement this https://leimao.github.io/blog/Proper-CUDA-Error-Checking/ - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + ntt_inplace_batch_template(d_inout, d_twiddles, n, batch_size, inverse, is_coset, coset, stream, true); + return CUDA_SUCCESS; // TODO: we should implement this https://leimao.github.io/blog/Proper-CUDA-Error-Checking/ + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int sub_scalars_cuda_bn254(BN254::scalar_t* d_out, BN254::scalar_t* d_in1, BN254::scalar_t* d_in2, unsigned n, cudaStream_t stream = 0) +extern "C" int sub_scalars_cuda_bn254( + BN254::scalar_t* d_out, BN254::scalar_t* d_in1, BN254::scalar_t* d_in2, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return sub_polys(d_out, d_in1, d_in2, n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return sub_polys(d_out, d_in1, d_in2, n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int add_scalars_cuda_bn254(BN254::scalar_t* d_out, BN254::scalar_t* d_in1, BN254::scalar_t* d_in2, unsigned n, cudaStream_t stream = 0) +extern "C" int add_scalars_cuda_bn254( + BN254::scalar_t* d_out, BN254::scalar_t* d_in1, BN254::scalar_t* d_in2, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return add_polys(d_out, d_in1, d_in2, n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return add_polys(d_out, d_in1, d_in2, n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } extern "C" int to_montgomery_scalars_cuda_bn254(BN254::scalar_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return to_montgomery(d_inout, n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return to_montgomery(d_inout, n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } extern "C" int from_montgomery_scalars_cuda_bn254(BN254::scalar_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return from_montgomery(d_inout, n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return from_montgomery(d_inout, n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } extern "C" int to_montgomery_proj_points_cuda_bn254(BN254::projective_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return to_montgomery((BN254::point_field_t*)d_inout, 3 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return to_montgomery((BN254::point_field_t*)d_inout, 3 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } extern "C" int from_montgomery_proj_points_cuda_bn254(BN254::projective_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return from_montgomery((BN254::point_field_t*)d_inout, 3 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return from_montgomery((BN254::point_field_t*)d_inout, 3 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } extern "C" int to_montgomery_aff_points_cuda_bn254(BN254::affine_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return to_montgomery((BN254::point_field_t*)d_inout, 2 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return to_montgomery((BN254::point_field_t*)d_inout, 2 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } extern "C" int from_montgomery_aff_points_cuda_bn254(BN254::affine_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return from_montgomery((BN254::point_field_t*)d_inout, 2 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return from_montgomery((BN254::point_field_t*)d_inout, 2 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } #if defined(G2_DEFINED) -extern "C" int to_montgomery_proj_points_g2_cuda_bn254(BN254::g2_projective_t* d_inout, unsigned n, cudaStream_t stream = 0) +extern "C" int +to_montgomery_proj_points_g2_cuda_bn254(BN254::g2_projective_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return to_montgomery((BN254::point_field_t*)d_inout, 6 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return to_montgomery((BN254::point_field_t*)d_inout, 6 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int from_montgomery_proj_points_g2_cuda_bn254(BN254::g2_projective_t* d_inout, unsigned n, cudaStream_t stream = 0) +extern "C" int +from_montgomery_proj_points_g2_cuda_bn254(BN254::g2_projective_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return from_montgomery((BN254::point_field_t*)d_inout, 6 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return from_montgomery((BN254::point_field_t*)d_inout, 6 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } extern "C" int to_montgomery_aff_points_g2_cuda_bn254(BN254::g2_affine_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return to_montgomery((BN254::point_field_t*)d_inout, 4 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return to_montgomery((BN254::point_field_t*)d_inout, 4 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int from_montgomery_aff_points_g2_cuda_bn254(BN254::g2_affine_t* d_inout, unsigned n, cudaStream_t stream = 0) +extern "C" int +from_montgomery_aff_points_g2_cuda_bn254(BN254::g2_affine_t* d_inout, unsigned n, cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - return from_montgomery((BN254::point_field_t*)d_inout, 4 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + return from_montgomery((BN254::point_field_t*)d_inout, 4 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } #endif -extern "C" int reverse_order_scalars_cuda_bn254(BN254::scalar_t* arr, int n, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int +reverse_order_scalars_cuda_bn254(BN254::scalar_t* arr, int n, size_t device_id = 0, cudaStream_t stream = 0) { - try - { - uint32_t logn = uint32_t(log(n) / log(2)); - cudaStreamCreate(&stream); - reverse_order(arr, n, logn, stream); - cudaStreamSynchronize(stream); - return 0; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + uint32_t logn = uint32_t(log(n) / log(2)); + cudaStreamCreate(&stream); + reverse_order(arr, n, logn, stream); + cudaStreamSynchronize(stream); + return 0; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int reverse_order_scalars_batch_cuda_bn254(BN254::scalar_t* arr, int n, int batch_size, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int reverse_order_scalars_batch_cuda_bn254( + BN254::scalar_t* arr, int n, int batch_size, size_t device_id = 0, cudaStream_t stream = 0) { - try - { - uint32_t logn = uint32_t(log(n) / log(2)); - cudaStreamCreate(&stream); - reverse_order_batch(arr, n, logn, batch_size, stream); - return 0; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + uint32_t logn = uint32_t(log(n) / log(2)); + cudaStreamCreate(&stream); + reverse_order_batch(arr, n, logn, batch_size, stream); + return 0; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int reverse_order_points_cuda_bn254(BN254::projective_t* arr, int n, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int +reverse_order_points_cuda_bn254(BN254::projective_t* arr, int n, size_t device_id = 0, cudaStream_t stream = 0) { - try - { - uint32_t logn = uint32_t(log(n) / log(2)); - cudaStreamCreate(&stream); - reverse_order(arr, n, logn, stream); - return 0; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + uint32_t logn = uint32_t(log(n) / log(2)); + cudaStreamCreate(&stream); + reverse_order(arr, n, logn, stream); + return 0; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int reverse_order_points_batch_cuda_bn254(BN254::projective_t* arr, int n, int batch_size, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int reverse_order_points_batch_cuda_bn254( + BN254::projective_t* arr, int n, int batch_size, size_t device_id = 0, cudaStream_t stream = 0) { - try - { - uint32_t logn = uint32_t(log(n) / log(2)); - cudaStreamCreate(&stream); - reverse_order_batch(arr, n, logn, batch_size, stream); - return 0; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + uint32_t logn = uint32_t(log(n) / log(2)); + cudaStreamCreate(&stream); + reverse_order_batch(arr, n, logn, batch_size, stream); + return 0; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } #endif diff --git a/icicle/curves/bn254/msm.cu b/icicle/curves/bn254/msm.cu index 965bf317..fb0fe0c3 100644 --- a/icicle/curves/bn254/msm.cu +++ b/icicle/curves/bn254/msm.cu @@ -1,186 +1,216 @@ #ifndef _BN254_MSM #define _BN254_MSM #include "../../appUtils/msm/msm.cu" -#include -#include #include "curve_config.cuh" +#include +#include - -extern "C" -int msm_cuda_bn254(BN254::projective_t *out, BN254::affine_t points[], - BN254::scalar_t scalars[], size_t count, unsigned large_bucket_factor, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int msm_cuda_bn254( + BN254::projective_t* out, + BN254::affine_t points[], + BN254::scalar_t scalars[], + size_t count, + unsigned large_bucket_factor, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - large_msm(scalars, points, count, out, false, false, large_bucket_factor, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + large_msm( + scalars, points, count, out, false, false, large_bucket_factor, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int msm_batch_cuda_bn254(BN254::projective_t* out, BN254::affine_t points[], - BN254::scalar_t scalars[], size_t batch_size, size_t msm_size, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int msm_batch_cuda_bn254( + BN254::projective_t* out, + BN254::affine_t points[], + BN254::scalar_t scalars[], + size_t batch_size, + size_t msm_size, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - batched_large_msm(scalars, points, batch_size, msm_size, out, false, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + batched_large_msm( + scalars, points, batch_size, msm_size, out, false, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } /** * Commit to a polynomial using the MSM. - * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or points. + * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or + * points. * @param d_out Ouptut point to write the result to. * @param d_scalars Scalars for the MSM. Must be on device. * @param d_points Points for the MSM. Must be on device. * @param count Length of `d_scalars` and `d_points` arrays (they should have equal length). */ -extern "C" -int commit_cuda_bn254(BN254::projective_t* d_out, BN254::scalar_t* d_scalars, BN254::affine_t* d_points, size_t count, unsigned large_bucket_factor, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int commit_cuda_bn254( + BN254::projective_t* d_out, + BN254::scalar_t* d_scalars, + BN254::affine_t* d_points, + size_t count, + unsigned large_bucket_factor, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - large_msm(d_scalars, d_points, count, d_out, true, false, large_bucket_factor, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + large_msm(d_scalars, d_points, count, d_out, true, false, large_bucket_factor, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } - + /** * Commit to a batch of polynomials using the MSM. - * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or points. + * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or + * points. * @param d_out Ouptut point to write the results to. * @param d_scalars Scalars for the MSMs of all polynomials. Must be on device. * @param d_points Points for the MSMs. Must be on device. It is assumed that this set of bases is used for each MSM. * @param count Length of `d_points` array, `d_scalar` has length `count` * `batch_size`. * @param batch_size Size of the batch. */ -extern "C" -int commit_batch_cuda_bn254(BN254::projective_t* d_out, BN254::scalar_t* d_scalars, BN254::affine_t* d_points, size_t count, size_t batch_size, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int commit_batch_cuda_bn254( + BN254::projective_t* d_out, + BN254::scalar_t* d_scalars, + BN254::affine_t* d_points, + size_t count, + size_t batch_size, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - batched_large_msm(d_scalars, d_points, batch_size, count, d_out, true, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + batched_large_msm(d_scalars, d_points, batch_size, count, d_out, true, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } #if defined(G2_DEFINED) -extern "C" -int msm_g2_cuda_bn254(BN254::g2_projective_t *out, BN254::g2_affine_t points[], - BN254::scalar_t scalars[], size_t count, unsigned large_bucket_factor, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int msm_g2_cuda_bn254( + BN254::g2_projective_t* out, + BN254::g2_affine_t points[], + BN254::scalar_t scalars[], + size_t count, + unsigned large_bucket_factor, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - large_msm(scalars, points, count, out, false, false, large_bucket_factor, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + large_msm( + scalars, points, count, out, false, false, large_bucket_factor, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } -extern "C" int msm_batch_g2_cuda_bn254(BN254::g2_projective_t* out, BN254::g2_affine_t points[], - BN254::scalar_t scalars[], size_t batch_size, size_t msm_size, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int msm_batch_g2_cuda_bn254( + BN254::g2_projective_t* out, + BN254::g2_affine_t points[], + BN254::scalar_t scalars[], + size_t batch_size, + size_t msm_size, + size_t device_id = 0, + cudaStream_t stream = 0) { - try - { - cudaStreamCreate(&stream); - batched_large_msm(scalars, points, batch_size, msm_size, out, false, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + try { + cudaStreamCreate(&stream); + batched_large_msm( + scalars, points, batch_size, msm_size, out, false, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } /** * Commit to a polynomial using the MSM in G2 group. - * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or points. + * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or + * points. * @param d_out Ouptut G2 point to write the result to. * @param d_scalars Scalars for the MSM. Must be on device. * @param d_points G2 affine points for the MSM. Must be on device. * @param count Length of `d_scalars` and `d_points` arrays (they should have equal length). */ -extern "C" -int commit_g2_cuda_bn254(BN254::g2_projective_t* d_out, BN254::scalar_t* d_scalars, BN254::g2_affine_t* d_points, size_t count, unsigned large_bucket_factor, size_t device_id = 0, cudaStream_t stream = 0) +extern "C" int commit_g2_cuda_bn254( + BN254::g2_projective_t* d_out, + BN254::scalar_t* d_scalars, + BN254::g2_affine_t* d_points, + size_t count, + unsigned large_bucket_factor, + size_t device_id = 0, + cudaStream_t stream = 0) { - // TODO: use device_id when working with multiple devices - (void)device_id; - try - { - cudaStreamCreate(&stream); - large_msm(d_scalars, d_points, count, d_out, true, false, large_bucket_factor, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + // TODO: use device_id when working with multiple devices + (void)device_id; + try { + cudaStreamCreate(&stream); + large_msm(d_scalars, d_points, count, d_out, true, false, large_bucket_factor, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } - - /** - * Commit to a batch of polynomials using the MSM. - * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or points. - * @param d_out Ouptut G2 point to write the results to. - * @param d_scalars Scalars for the MSMs of all polynomials. Must be on device. - * @param d_points G2 affine points for the MSMs. Must be on device. It is assumed that this set of bases is used for each MSM. - * @param count Length of `d_points` array, `d_scalar` has length `count` * `batch_size`. - * @param batch_size Size of the batch. - */ -extern "C" -int commit_batch_g2_cuda_bn254(BN254::g2_projective_t* d_out, BN254::scalar_t* d_scalars, BN254::g2_affine_t* d_points, size_t count, size_t batch_size, size_t device_id = 0, cudaStream_t stream = 0) + +/** + * Commit to a batch of polynomials using the MSM. + * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or + * points. + * @param d_out Ouptut G2 point to write the results to. + * @param d_scalars Scalars for the MSMs of all polynomials. Must be on device. + * @param d_points G2 affine points for the MSMs. Must be on device. It is assumed that this set of bases is used for + * each MSM. + * @param count Length of `d_points` array, `d_scalar` has length `count` * `batch_size`. + * @param batch_size Size of the batch. + */ +extern "C" int commit_batch_g2_cuda_bn254( + BN254::g2_projective_t* d_out, + BN254::scalar_t* d_scalars, + BN254::g2_affine_t* d_points, + size_t count, + size_t batch_size, + size_t device_id = 0, + cudaStream_t stream = 0) { - // TODO: use device_id when working with multiple devices - (void)device_id; - try - { - cudaStreamCreate(&stream); - batched_large_msm(d_scalars, d_points, batch_size, count, d_out, true, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } + // TODO: use device_id when working with multiple devices + (void)device_id; + try { + cudaStreamCreate(&stream); + batched_large_msm(d_scalars, d_points, batch_size, count, d_out, true, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } } #endif #endif diff --git a/icicle/curves/bn254/params.cuh b/icicle/curves/bn254/params.cuh index 5a8d184d..f0876257 100644 --- a/icicle/curves/bn254/params.cuh +++ b/icicle/curves/bn254/params.cuh @@ -6,147 +6,183 @@ namespace PARAMS_BN254 { static constexpr unsigned limbs_count = 8; static constexpr unsigned omegas_count = 28; static constexpr unsigned modulus_bit_count = 254; - - static constexpr storage modulus = {0xf0000001, 0x43e1f593, 0x79b97091, 0x2833e848, 0x8181585d, 0xb85045b6, 0xe131a029, 0x30644e72}; - static constexpr storage modulus_2 = {0xe0000002, 0x87c3eb27, 0xf372e122, 0x5067d090, 0x0302b0ba, 0x70a08b6d, 0xc2634053, 0x60c89ce5}; - static constexpr storage modulus_4 = {0xc0000004, 0x0f87d64f, 0xe6e5c245, 0xa0cfa121, 0x06056174, 0xe14116da, 0x84c680a6, 0xc19139cb}; - static constexpr storage<2*limbs_count> modulus_wide = {0xf0000001, 0x43e1f593, 0x79b97091, 0x2833e848, 0x8181585d, 0xb85045b6, 0xe131a029, 0x30644e72, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage<2*limbs_count> modulus_squared = {0xe0000001, 0x08c3eb27, 0xdcb34000, 0xc7f26223, 0x68c9bb7f, 0xffe9a62c, 0xe821ddb0, 0xa6ce1975, 0x47b62fe7, 0x2c77527b, 0xd379d3df, 0x85f73bb0, 0x0348d21c, 0x599a6f7c, 0x763cbf9c, 0x0925c4b8}; - static constexpr storage<2*limbs_count> modulus_squared_2 = {0xc0000002, 0x1187d64f, 0xb9668000, 0x8fe4c447, 0xd19376ff, 0xffd34c58, 0xd043bb61, 0x4d9c32eb, 0x8f6c5fcf, 0x58eea4f6, 0xa6f3a7be, 0x0bee7761, 0x0691a439, 0xb334def8, 0xec797f38, 0x124b8970}; - static constexpr storage<2*limbs_count> modulus_squared_4 = {0x80000004, 0x230fac9f, 0x72cd0000, 0x1fc9888f, 0xa326edff, 0xffa698b1, 0xa08776c3, 0x9b3865d7, 0x1ed8bf9e, 0xb1dd49ed, 0x4de74f7c, 0x17dceec3, 0x0d234872, 0x6669bdf0, 0xd8f2fe71, 0x249712e1}; - static constexpr storage m = {0xbe1de925, 0x620703a6, 0x09e880ae, 0x71448520, 0x68073014, 0xab074a58, 0x623a04a7, 0x54a47462}; - static constexpr storage one = {0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage zero = {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage montgomery_r = {0x4ffffffb, 0xac96341c, 0x9f60cd29, 0x36fc7695, 0x7879462e, 0x666ea36f, 0x9a07df2f, 0xe0a77c1}; - static constexpr storage montgomery_r_inv = {0x6db1194e, 0xdc5ba005, 0xe111ec87, 0x90ef5a9, 0xaeb85d5d, 0xc8260de4, 0x82c5551c, 0x15ebf951}; + static constexpr storage modulus = {0xf0000001, 0x43e1f593, 0x79b97091, 0x2833e848, + 0x8181585d, 0xb85045b6, 0xe131a029, 0x30644e72}; + static constexpr storage modulus_2 = {0xe0000002, 0x87c3eb27, 0xf372e122, 0x5067d090, + 0x0302b0ba, 0x70a08b6d, 0xc2634053, 0x60c89ce5}; + static constexpr storage modulus_4 = {0xc0000004, 0x0f87d64f, 0xe6e5c245, 0xa0cfa121, + 0x06056174, 0xe14116da, 0x84c680a6, 0xc19139cb}; + static constexpr storage<2 * limbs_count> modulus_wide = { + 0xf0000001, 0x43e1f593, 0x79b97091, 0x2833e848, 0x8181585d, 0xb85045b6, 0xe131a029, 0x30644e72, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage<2 * limbs_count> modulus_squared = { + 0xe0000001, 0x08c3eb27, 0xdcb34000, 0xc7f26223, 0x68c9bb7f, 0xffe9a62c, 0xe821ddb0, 0xa6ce1975, + 0x47b62fe7, 0x2c77527b, 0xd379d3df, 0x85f73bb0, 0x0348d21c, 0x599a6f7c, 0x763cbf9c, 0x0925c4b8}; + static constexpr storage<2 * limbs_count> modulus_squared_2 = { + 0xc0000002, 0x1187d64f, 0xb9668000, 0x8fe4c447, 0xd19376ff, 0xffd34c58, 0xd043bb61, 0x4d9c32eb, + 0x8f6c5fcf, 0x58eea4f6, 0xa6f3a7be, 0x0bee7761, 0x0691a439, 0xb334def8, 0xec797f38, 0x124b8970}; + static constexpr storage<2 * limbs_count> modulus_squared_4 = { + 0x80000004, 0x230fac9f, 0x72cd0000, 0x1fc9888f, 0xa326edff, 0xffa698b1, 0xa08776c3, 0x9b3865d7, + 0x1ed8bf9e, 0xb1dd49ed, 0x4de74f7c, 0x17dceec3, 0x0d234872, 0x6669bdf0, 0xd8f2fe71, 0x249712e1}; - static constexpr storage_array omega = { { - {0xf0000000, 0x43e1f593, 0x79b97091, 0x2833e848, 0x8181585d, 0xb85045b6, 0xe131a029, 0x30644e72}, - {0x8f703636, 0x23120470, 0xfd736bec, 0x5cea24f6, 0x3fd84104, 0x048b6e19, 0xe131a029, 0x30644e72}, - {0xc1bd5e80, 0x948dad4a, 0xf8170a0a, 0x52627366, 0x96afef36, 0xec9b9e2f, 0xc8c14f22, 0x2b337de1}, - {0xe306460b, 0xb11509c6, 0x174efb98, 0x996dfbe1, 0x94dd508c, 0x1c6e4f45, 0x16cbbf4e, 0x21082ca2}, - {0x3bb512d0, 0x3eed4c53, 0x838eeb1d, 0x9c18d51b, 0x47c0b2a9, 0x9678200d, 0x306b93d2, 0x09c532c6}, - {0x118f023a, 0xdb94fb05, 0x26e324be, 0x46a6cb24, 0x49bdadf2, 0xc24cdb76, 0x5b080fca, 0x1418144d}, - {0xba9d1811, 0x9d0e470c, 0xb6f24c79, 0x1dcb5564, 0xe85943e0, 0xdf5ce19c, 0xad310991, 0x16e73dfd}, - {0x74a57a76, 0xc8936191, 0x6750f230, 0x61794254, 0x9f36ffb0, 0xf086204a, 0xa6148404, 0x07b0c561}, - {0x470157ce, 0x893a7fa1, 0xfc782d75, 0xe8302a41, 0xdd9b0675, 0xffc02c0e, 0xf6e72f5b, 0x0f1ded1e}, - {0xbc2e5912, 0x11f995e1, 0xa8d2d7ab, 0x39ba79c0, 0xb08771e3, 0xebbebc2b, 0x7017a420, 0x06fd19c1}, - {0x769a2ee2, 0xd00a58f9, 0x7494f0ca, 0xb8c12c17, 0xa5355d71, 0xb4027fd7, 0x99c5042b, 0x027a3584}, - {0x0042d43a, 0x1c477572, 0x6f039bb9, 0x76f169c7, 0xfd5a90a9, 0x01ddd073, 0xde2fd10f, 0x0931d596}, - {0x9bbdd310, 0x4aa49b8d, 0x8e3a2d76, 0xd31bf3e2, 0x78b2667b, 0x001deac8, 0xb869ae62, 0x006fab49}, - {0x617c6e85, 0xadaa01c2, 0x7420aae6, 0xb4a93ee1, 0x0ddca8a8, 0x1f4e51b8, 0xcdd9e481, 0x2d965651}, - {0x4e26ecfb, 0xa93458fd, 0x4115a009, 0x022a2a2d, 0x69ec2bd0, 0x017171fa, 0x5941dc91, 0x2d1ba66f}, - {0xdaac43b7, 0xd1628ba2, 0xe4347e7d, 0x16c8601d, 0xe081dcff, 0x649abebd, 0x5981ed45, 0x00eeb2cb}, - {0xce8f58e5, 0x276e5858, 0x5655210e, 0x0512eca9, 0xe70e61f3, 0xc3708cc6, 0xa7d74902, 0x1bf82deb}, - {0x7dcdc0e0, 0x84c6bfa5, 0x13f4d1bd, 0xc57088ff, 0xb5b95e4d, 0x5c0176fb, 0x3a8d46c1, 0x19ddbcaf}, - {0x613f6cbd, 0x5c1d597f, 0x8357473a, 0x30525841, 0x968e4915, 0x51829353, 0x844bca52, 0x2260e724}, - {0x53337857, 0x53422da9, 0xdbed349f, 0xac616632, 0x06d1e303, 0x27508aba, 0x0a0ed063, 0x26125da1}, - {0xfcd0b523, 0xb2c87885, 0xca5a5ce3, 0x58f50577, 0x8598fc8c, 0x4222150e, 0xae2bdd1a, 0x1ded8980}, - {0xa219447e, 0xa76dde56, 0x359eebbb, 0xec1a1f05, 0x8be08215, 0xcda0ceb6, 0xb1f8d9a7, 0x1ad92f46}, - {0xab80c59d, 0xb54d4506, 0x22dd991f, 0x5680c640, 0xbc23a139, 0x6b7bcf70, 0x5ab4c74d, 0x0210fe63}, - {0xe32b045b, 0x1c25f1e3, 0x2e832696, 0x145e0db8, 0x71c6441f, 0x852e2a03, 0x845d50d2, 0x0c9fabc7}, - {0xb878331a, 0xeccd4f3e, 0x8dc6d26e, 0x7b26b748, 0xd9130cd4, 0xa19b0361, 0x326341ef, 0x2a734ebb}, - {0x2f4e9212, 0x1c79bd57, 0x3d68f9ae, 0x605b52b6, 0xb8d89d4a, 0x0113eff9, 0xf1ff73b2, 0x1067569a}, - {0x80928c44, 0x034afc45, 0xf6437da2, 0xb4823532, 0x6dc6e364, 0x5f256a9f, 0xb363ebe8, 0x049ae702}, - {0x725b19f0, 0x9bd61b6e, 0x41112ed4, 0x402d111e, 0x8ef62abc, 0x00e0a7eb, 0xa58a7e85, 0x2a3c09f0} - } }; + static constexpr storage m = {0xbe1de925, 0x620703a6, 0x09e880ae, 0x71448520, + 0x68073014, 0xab074a58, 0x623a04a7, 0x54a47462}; + static constexpr storage one = {0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage zero = {0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage montgomery_r = {0x4ffffffb, 0xac96341c, 0x9f60cd29, 0x36fc7695, + 0x7879462e, 0x666ea36f, 0x9a07df2f, 0xe0a77c1}; + static constexpr storage montgomery_r_inv = {0x6db1194e, 0xdc5ba005, 0xe111ec87, 0x90ef5a9, + 0xaeb85d5d, 0xc8260de4, 0x82c5551c, 0x15ebf951}; + static constexpr storage_array omega = { + {{0xf0000000, 0x43e1f593, 0x79b97091, 0x2833e848, 0x8181585d, 0xb85045b6, 0xe131a029, 0x30644e72}, + {0x8f703636, 0x23120470, 0xfd736bec, 0x5cea24f6, 0x3fd84104, 0x048b6e19, 0xe131a029, 0x30644e72}, + {0xc1bd5e80, 0x948dad4a, 0xf8170a0a, 0x52627366, 0x96afef36, 0xec9b9e2f, 0xc8c14f22, 0x2b337de1}, + {0xe306460b, 0xb11509c6, 0x174efb98, 0x996dfbe1, 0x94dd508c, 0x1c6e4f45, 0x16cbbf4e, 0x21082ca2}, + {0x3bb512d0, 0x3eed4c53, 0x838eeb1d, 0x9c18d51b, 0x47c0b2a9, 0x9678200d, 0x306b93d2, 0x09c532c6}, + {0x118f023a, 0xdb94fb05, 0x26e324be, 0x46a6cb24, 0x49bdadf2, 0xc24cdb76, 0x5b080fca, 0x1418144d}, + {0xba9d1811, 0x9d0e470c, 0xb6f24c79, 0x1dcb5564, 0xe85943e0, 0xdf5ce19c, 0xad310991, 0x16e73dfd}, + {0x74a57a76, 0xc8936191, 0x6750f230, 0x61794254, 0x9f36ffb0, 0xf086204a, 0xa6148404, 0x07b0c561}, + {0x470157ce, 0x893a7fa1, 0xfc782d75, 0xe8302a41, 0xdd9b0675, 0xffc02c0e, 0xf6e72f5b, 0x0f1ded1e}, + {0xbc2e5912, 0x11f995e1, 0xa8d2d7ab, 0x39ba79c0, 0xb08771e3, 0xebbebc2b, 0x7017a420, 0x06fd19c1}, + {0x769a2ee2, 0xd00a58f9, 0x7494f0ca, 0xb8c12c17, 0xa5355d71, 0xb4027fd7, 0x99c5042b, 0x027a3584}, + {0x0042d43a, 0x1c477572, 0x6f039bb9, 0x76f169c7, 0xfd5a90a9, 0x01ddd073, 0xde2fd10f, 0x0931d596}, + {0x9bbdd310, 0x4aa49b8d, 0x8e3a2d76, 0xd31bf3e2, 0x78b2667b, 0x001deac8, 0xb869ae62, 0x006fab49}, + {0x617c6e85, 0xadaa01c2, 0x7420aae6, 0xb4a93ee1, 0x0ddca8a8, 0x1f4e51b8, 0xcdd9e481, 0x2d965651}, + {0x4e26ecfb, 0xa93458fd, 0x4115a009, 0x022a2a2d, 0x69ec2bd0, 0x017171fa, 0x5941dc91, 0x2d1ba66f}, + {0xdaac43b7, 0xd1628ba2, 0xe4347e7d, 0x16c8601d, 0xe081dcff, 0x649abebd, 0x5981ed45, 0x00eeb2cb}, + {0xce8f58e5, 0x276e5858, 0x5655210e, 0x0512eca9, 0xe70e61f3, 0xc3708cc6, 0xa7d74902, 0x1bf82deb}, + {0x7dcdc0e0, 0x84c6bfa5, 0x13f4d1bd, 0xc57088ff, 0xb5b95e4d, 0x5c0176fb, 0x3a8d46c1, 0x19ddbcaf}, + {0x613f6cbd, 0x5c1d597f, 0x8357473a, 0x30525841, 0x968e4915, 0x51829353, 0x844bca52, 0x2260e724}, + {0x53337857, 0x53422da9, 0xdbed349f, 0xac616632, 0x06d1e303, 0x27508aba, 0x0a0ed063, 0x26125da1}, + {0xfcd0b523, 0xb2c87885, 0xca5a5ce3, 0x58f50577, 0x8598fc8c, 0x4222150e, 0xae2bdd1a, 0x1ded8980}, + {0xa219447e, 0xa76dde56, 0x359eebbb, 0xec1a1f05, 0x8be08215, 0xcda0ceb6, 0xb1f8d9a7, 0x1ad92f46}, + {0xab80c59d, 0xb54d4506, 0x22dd991f, 0x5680c640, 0xbc23a139, 0x6b7bcf70, 0x5ab4c74d, 0x0210fe63}, + {0xe32b045b, 0x1c25f1e3, 0x2e832696, 0x145e0db8, 0x71c6441f, 0x852e2a03, 0x845d50d2, 0x0c9fabc7}, + {0xb878331a, 0xeccd4f3e, 0x8dc6d26e, 0x7b26b748, 0xd9130cd4, 0xa19b0361, 0x326341ef, 0x2a734ebb}, + {0x2f4e9212, 0x1c79bd57, 0x3d68f9ae, 0x605b52b6, 0xb8d89d4a, 0x0113eff9, 0xf1ff73b2, 0x1067569a}, + {0x80928c44, 0x034afc45, 0xf6437da2, 0xb4823532, 0x6dc6e364, 0x5f256a9f, 0xb363ebe8, 0x049ae702}, + {0x725b19f0, 0x9bd61b6e, 0x41112ed4, 0x402d111e, 0x8ef62abc, 0x00e0a7eb, 0xa58a7e85, 0x2a3c09f0}}}; - static constexpr storage_array omega_inv = { { - {0xf0000000, 0x43e1f593, 0x79b97091, 0x2833e848, 0x8181585d, 0xb85045b6, 0xe131a029, 0x30644e72}, - {0x608fc9cb, 0x20cff123, 0x7c4604a5, 0xcb49c351, 0x41a91758, 0xb3c4d79d, 0x00000000, 0x00000000}, - {0x07b95a9b, 0x8b11d9ab, 0x41671f56, 0x20710ead, 0x30f81dee, 0xfb3acaee, 0x9778465c, 0x130b1711}, - {0x373428de, 0xb85a71e6, 0xaeb0337e, 0x74954d30, 0x303402b7, 0x2bfc85eb, 0x409556c0, 0x02e40daf}, - {0xf210979d, 0x8c99980c, 0x34905b4d, 0xef8f3113, 0xdf25d8e7, 0x0aeaf3e7, 0x03bfbd79, 0x27247136}, - {0x763d698f, 0x78ce6a0b, 0x1d3213ee, 0xd80396ec, 0x67a8a676, 0x035cdc75, 0xb2a13d3a, 0x26177cf2}, - {0xc64427d7, 0xdddf985f, 0xa49e95bd, 0xaa4f964a, 0x5def8b04, 0x427c045f, 0x7969b732, 0x1641c053}, - {0x0329f5d6, 0x692c553d, 0x8712848a, 0xa54cf8c6, 0x38e2b5e6, 0x64751ad9, 0x7422fad3, 0x204bd327}, - {0xaf6b3e4e, 0x52f26c0f, 0xf0bcc0c8, 0x4c277a07, 0xe4fcfcab, 0x546875d5, 0xaa9995b3, 0x09d8f821}, - {0xb2e5cc71, 0xcaa2e1e9, 0x6e43404e, 0xed42b68e, 0x7a2c7f0a, 0x6ed80915, 0xde3c86d6, 0x1c4042c7}, - {0x579d71ae, 0x20a3a65d, 0x0adc4420, 0xfd7efed8, 0xfddabf54, 0x3bb6dcd7, 0xbc73d07b, 0x0fa9bb21}, - {0xc79e0e57, 0xb6f70f8d, 0xa04e05ac, 0x269d3fde, 0x2ba088d9, 0xcf2e371c, 0x11b88d9c, 0x1af864d2}, - {0xabd95dc9, 0x3b0b205a, 0x978188ca, 0xc8df74fa, 0x6a1cb6c8, 0x08e124db, 0xbfac6104, 0x1670ed58}, - {0x641c8410, 0xf8eee934, 0x677771c0, 0xf40976b0, 0x558e6e8c, 0x11680d42, 0x06e7e9e9, 0x281c036f}, - {0xb2dbc0b4, 0xc92a742f, 0x4d384e68, 0xc3f02842, 0x2fa43d0d, 0x22701b6f, 0xe4590b37, 0x05d33766}, - {0x02d842d4, 0x922d5ac8, 0xc830e4c6, 0x91126414, 0x082f37e0, 0xe92338c0, 0x7fe704e8, 0x0b5d56b7}, - {0xd96f0d22, 0x20e75251, 0x6bd4e8c9, 0xc01c7f08, 0xf9dd50c4, 0x37d8b00b, 0xc43ca872, 0x244cf010}, - {0x66c5174c, 0x7a823174, 0x22d5ad70, 0x7dbe118c, 0x111119c5, 0xf8d7c71d, 0x83780e87, 0x036853f0}, - {0xca535321, 0xd98f9924, 0xe66e6c81, 0x22dbc0ef, 0x664ae1b7, 0xa15cf806, 0xa314fb67, 0x06e402c0}, - {0xe26c91f3, 0x0852a8fd, 0x3baca626, 0x521f45cb, 0x2c51bfca, 0xab6473bc, 0x2100895f, 0x100c332d}, - {0xa376d0f0, 0xf5fac783, 0x940797d3, 0x50fd246e, 0x145f5278, 0xab14ecc1, 0x41091b14, 0x19c6dfb8}, - {0x7faa1396, 0x43dc52e2, 0x4beced23, 0xd437be9d, 0x6d3c38c3, 0xecc11e9c, 0x0c74a876, 0x2eb58439}, - {0xd69ca83b, 0x811b03e7, 0xa1a6eadf, 0x126a786b, 0x4e2b8e61, 0x1dd75c9f, 0xbda6792b, 0x2165a1a5}, - {0x110b737b, 0x02e1d4d1, 0xb323a164, 0x7be1488d, 0x9cd06163, 0xa334d317, 0xdb50e9cd, 0x2710c370}, - {0x9550fe47, 0x45d2f3cb, 0xf6a8efc4, 0x5f43327b, 0xe993ee18, 0x5bcd0d50, 0xb21de952, 0x27f035bd}, - {0x232e3983, 0x1d63cbae, 0xaa1b58e2, 0xac815161, 0x6aeb019e, 0x531f42a5, 0x03ca2ef5, 0x2dcd51d9}, - {0x980db869, 0xa8b64ba8, 0xc9718f6c, 0x4c787f72, 0x15d27ced, 0x7746a25a, 0x435a46e9, 0x110bf78f}, - {0x9d18157e, 0x72394277, 0xfd399d5d, 0xec9d51f8, 0x49d5387f, 0x6117635d, 0x9c229cd5, 0x01b77519} - } }; - + static constexpr storage_array omega_inv = { + {{0xf0000000, 0x43e1f593, 0x79b97091, 0x2833e848, 0x8181585d, 0xb85045b6, 0xe131a029, 0x30644e72}, + {0x608fc9cb, 0x20cff123, 0x7c4604a5, 0xcb49c351, 0x41a91758, 0xb3c4d79d, 0x00000000, 0x00000000}, + {0x07b95a9b, 0x8b11d9ab, 0x41671f56, 0x20710ead, 0x30f81dee, 0xfb3acaee, 0x9778465c, 0x130b1711}, + {0x373428de, 0xb85a71e6, 0xaeb0337e, 0x74954d30, 0x303402b7, 0x2bfc85eb, 0x409556c0, 0x02e40daf}, + {0xf210979d, 0x8c99980c, 0x34905b4d, 0xef8f3113, 0xdf25d8e7, 0x0aeaf3e7, 0x03bfbd79, 0x27247136}, + {0x763d698f, 0x78ce6a0b, 0x1d3213ee, 0xd80396ec, 0x67a8a676, 0x035cdc75, 0xb2a13d3a, 0x26177cf2}, + {0xc64427d7, 0xdddf985f, 0xa49e95bd, 0xaa4f964a, 0x5def8b04, 0x427c045f, 0x7969b732, 0x1641c053}, + {0x0329f5d6, 0x692c553d, 0x8712848a, 0xa54cf8c6, 0x38e2b5e6, 0x64751ad9, 0x7422fad3, 0x204bd327}, + {0xaf6b3e4e, 0x52f26c0f, 0xf0bcc0c8, 0x4c277a07, 0xe4fcfcab, 0x546875d5, 0xaa9995b3, 0x09d8f821}, + {0xb2e5cc71, 0xcaa2e1e9, 0x6e43404e, 0xed42b68e, 0x7a2c7f0a, 0x6ed80915, 0xde3c86d6, 0x1c4042c7}, + {0x579d71ae, 0x20a3a65d, 0x0adc4420, 0xfd7efed8, 0xfddabf54, 0x3bb6dcd7, 0xbc73d07b, 0x0fa9bb21}, + {0xc79e0e57, 0xb6f70f8d, 0xa04e05ac, 0x269d3fde, 0x2ba088d9, 0xcf2e371c, 0x11b88d9c, 0x1af864d2}, + {0xabd95dc9, 0x3b0b205a, 0x978188ca, 0xc8df74fa, 0x6a1cb6c8, 0x08e124db, 0xbfac6104, 0x1670ed58}, + {0x641c8410, 0xf8eee934, 0x677771c0, 0xf40976b0, 0x558e6e8c, 0x11680d42, 0x06e7e9e9, 0x281c036f}, + {0xb2dbc0b4, 0xc92a742f, 0x4d384e68, 0xc3f02842, 0x2fa43d0d, 0x22701b6f, 0xe4590b37, 0x05d33766}, + {0x02d842d4, 0x922d5ac8, 0xc830e4c6, 0x91126414, 0x082f37e0, 0xe92338c0, 0x7fe704e8, 0x0b5d56b7}, + {0xd96f0d22, 0x20e75251, 0x6bd4e8c9, 0xc01c7f08, 0xf9dd50c4, 0x37d8b00b, 0xc43ca872, 0x244cf010}, + {0x66c5174c, 0x7a823174, 0x22d5ad70, 0x7dbe118c, 0x111119c5, 0xf8d7c71d, 0x83780e87, 0x036853f0}, + {0xca535321, 0xd98f9924, 0xe66e6c81, 0x22dbc0ef, 0x664ae1b7, 0xa15cf806, 0xa314fb67, 0x06e402c0}, + {0xe26c91f3, 0x0852a8fd, 0x3baca626, 0x521f45cb, 0x2c51bfca, 0xab6473bc, 0x2100895f, 0x100c332d}, + {0xa376d0f0, 0xf5fac783, 0x940797d3, 0x50fd246e, 0x145f5278, 0xab14ecc1, 0x41091b14, 0x19c6dfb8}, + {0x7faa1396, 0x43dc52e2, 0x4beced23, 0xd437be9d, 0x6d3c38c3, 0xecc11e9c, 0x0c74a876, 0x2eb58439}, + {0xd69ca83b, 0x811b03e7, 0xa1a6eadf, 0x126a786b, 0x4e2b8e61, 0x1dd75c9f, 0xbda6792b, 0x2165a1a5}, + {0x110b737b, 0x02e1d4d1, 0xb323a164, 0x7be1488d, 0x9cd06163, 0xa334d317, 0xdb50e9cd, 0x2710c370}, + {0x9550fe47, 0x45d2f3cb, 0xf6a8efc4, 0x5f43327b, 0xe993ee18, 0x5bcd0d50, 0xb21de952, 0x27f035bd}, + {0x232e3983, 0x1d63cbae, 0xaa1b58e2, 0xac815161, 0x6aeb019e, 0x531f42a5, 0x03ca2ef5, 0x2dcd51d9}, + {0x980db869, 0xa8b64ba8, 0xc9718f6c, 0x4c787f72, 0x15d27ced, 0x7746a25a, 0x435a46e9, 0x110bf78f}, + {0x9d18157e, 0x72394277, 0xfd399d5d, 0xec9d51f8, 0x49d5387f, 0x6117635d, 0x9c229cd5, 0x01b77519}}}; - static constexpr storage_array inv = { { - {0xf8000001, 0xa1f0fac9, 0x3cdcb848, 0x9419f424, 0x40c0ac2e, 0xdc2822db, 0x7098d014, 0x18322739}, - {0xf4000001, 0xf2e9782e, 0x5b4b146c, 0xde26ee36, 0xe1210245, 0x4a3c3448, 0x28e5381f, 0x244b3ad6}, - {0x72000001, 0x1b65b6e1, 0x6a82427f, 0x832d6b3f, 0xb1512d51, 0x81463cff, 0x850b6c24, 0x2a57c4a4}, - {0xb1000001, 0x2fa3d63a, 0xf21dd988, 0x55b0a9c3, 0x196942d7, 0x1ccb415b, 0xb31e8627, 0x2d5e098b}, - {0x50800001, 0xb9c2e5e7, 0x35eba50c, 0x3ef24906, 0xcd754d9a, 0x6a8dc388, 0x4a281328, 0x2ee12bff}, - {0xa0400001, 0xfed26dbd, 0x57d28ace, 0xb39318a7, 0xa77b52fb, 0x116f049f, 0x15acd9a9, 0x2fa2bd39}, - {0xc8200001, 0x215a31a8, 0xe8c5fdb0, 0x6de38077, 0x147e55ac, 0x64dfa52b, 0xfb6f3ce9, 0x300385d5}, - {0x5c100001, 0xb29e139e, 0x313fb720, 0xcb0bb460, 0xcaffd704, 0x8e97f570, 0x6e506e89, 0x3033ea24}, - {0x26080001, 0xfb400499, 0x557c93d8, 0xf99fce54, 0xa64097b0, 0xa3741d93, 0xa7c10759, 0x304c1c4b}, - {0x8b040001, 0x1f90fd16, 0x679b0235, 0x10e9db4e, 0x13e0f807, 0xade231a5, 0x447953c1, 0x3058355f}, - {0x3d820001, 0x31b97955, 0x70aa3963, 0x1c8ee1cb, 0xcab12832, 0xb3193bad, 0x12d579f5, 0x305e41e9}, - {0x96c10001, 0x3acdb774, 0xf531d4fa, 0xa2616509, 0x26194047, 0xb5b4c0b2, 0xfa038d0f, 0x3061482d}, - {0x43608001, 0xbf57d684, 0x3775a2c5, 0x654aa6a9, 0x53cd4c52, 0xb7028334, 0x6d9a969c, 0x3062cb50}, - {0x19b04001, 0x819ce60c, 0xd89789ab, 0xc6bf4778, 0x6aa75257, 0x37a96475, 0xa7661b63, 0x30638ce1}, - {0x04d82001, 0x62bf6dd0, 0xa9287d1e, 0x777997e0, 0xf614555a, 0x77fcd515, 0x444bddc6, 0x3063edaa}, - {0xfa6c1001, 0xd350b1b1, 0x9170f6d7, 0xcfd6c014, 0x3bcad6db, 0x18268d66, 0x92bebef8, 0x30641e0e}, - {0xf5360801, 0x8b9953a2, 0x859533b4, 0x7c05542e, 0x5ea6179c, 0xe83b698e, 0xb9f82f90, 0x30643640}, - {0x729b0401, 0xe7bda49b, 0x7fa75222, 0xd21c9e3b, 0x7013b7fc, 0x5045d7a2, 0xcd94e7dd, 0x30644259}, - {0xb14d8201, 0x15cfcd17, 0xfcb0615a, 0xfd284341, 0x78ca882c, 0x844b0eac, 0x57634403, 0x30644866}, - {0xd0a6c101, 0xacd8e155, 0x3b34e8f5, 0x12ae15c5, 0x7d25f045, 0x9e4daa31, 0x9c4a7216, 0x30644b6c}, - {0xe0536081, 0x785d6b74, 0xda772cc3, 0x1d70ff06, 0xff53a451, 0x2b4ef7f3, 0xbebe0920, 0x30644cef}, - {0x6829b041, 0x5e1fb084, 0xaa184eaa, 0x22d273a7, 0x406a7e57, 0xf1cf9ed5, 0x4ff7d4a4, 0x30644db1}, - {0x2c14d821, 0xd100d30c, 0x11e8df9d, 0x25832df8, 0xe0f5eb5a, 0x550ff245, 0x1894ba67, 0x30644e12}, - {0x0e0a6c11, 0x8a716450, 0x45d12817, 0xa6db8b20, 0x313ba1db, 0x86b01bfe, 0x7ce32d48, 0x30644e42}, - {0xff053609, 0x6729acf1, 0x5fc54c54, 0x6787b9b4, 0x595e7d1c, 0x1f8030da, 0xaf0a66b9, 0x30644e5a}, - {0xf7829b05, 0xd585d142, 0x6cbf5e72, 0xc7ddd0fe, 0x6d6feabc, 0x6be83b48, 0xc81e0371, 0x30644e66}, - {0x73c14d83, 0x0cb3e36b, 0x733c6782, 0xf808dca3, 0x7778a18c, 0x921c407f, 0xd4a7d1cd, 0x30644e6c}, - {0xb1e0a6c2, 0xa84aec7f, 0xf67aec09, 0x101e6275, 0xfc7cfcf5, 0xa536431a, 0xdaecb8fb, 0x30644e6f} - } }; + static constexpr storage_array inv = { + {{0xf8000001, 0xa1f0fac9, 0x3cdcb848, 0x9419f424, 0x40c0ac2e, 0xdc2822db, 0x7098d014, 0x18322739}, + {0xf4000001, 0xf2e9782e, 0x5b4b146c, 0xde26ee36, 0xe1210245, 0x4a3c3448, 0x28e5381f, 0x244b3ad6}, + {0x72000001, 0x1b65b6e1, 0x6a82427f, 0x832d6b3f, 0xb1512d51, 0x81463cff, 0x850b6c24, 0x2a57c4a4}, + {0xb1000001, 0x2fa3d63a, 0xf21dd988, 0x55b0a9c3, 0x196942d7, 0x1ccb415b, 0xb31e8627, 0x2d5e098b}, + {0x50800001, 0xb9c2e5e7, 0x35eba50c, 0x3ef24906, 0xcd754d9a, 0x6a8dc388, 0x4a281328, 0x2ee12bff}, + {0xa0400001, 0xfed26dbd, 0x57d28ace, 0xb39318a7, 0xa77b52fb, 0x116f049f, 0x15acd9a9, 0x2fa2bd39}, + {0xc8200001, 0x215a31a8, 0xe8c5fdb0, 0x6de38077, 0x147e55ac, 0x64dfa52b, 0xfb6f3ce9, 0x300385d5}, + {0x5c100001, 0xb29e139e, 0x313fb720, 0xcb0bb460, 0xcaffd704, 0x8e97f570, 0x6e506e89, 0x3033ea24}, + {0x26080001, 0xfb400499, 0x557c93d8, 0xf99fce54, 0xa64097b0, 0xa3741d93, 0xa7c10759, 0x304c1c4b}, + {0x8b040001, 0x1f90fd16, 0x679b0235, 0x10e9db4e, 0x13e0f807, 0xade231a5, 0x447953c1, 0x3058355f}, + {0x3d820001, 0x31b97955, 0x70aa3963, 0x1c8ee1cb, 0xcab12832, 0xb3193bad, 0x12d579f5, 0x305e41e9}, + {0x96c10001, 0x3acdb774, 0xf531d4fa, 0xa2616509, 0x26194047, 0xb5b4c0b2, 0xfa038d0f, 0x3061482d}, + {0x43608001, 0xbf57d684, 0x3775a2c5, 0x654aa6a9, 0x53cd4c52, 0xb7028334, 0x6d9a969c, 0x3062cb50}, + {0x19b04001, 0x819ce60c, 0xd89789ab, 0xc6bf4778, 0x6aa75257, 0x37a96475, 0xa7661b63, 0x30638ce1}, + {0x04d82001, 0x62bf6dd0, 0xa9287d1e, 0x777997e0, 0xf614555a, 0x77fcd515, 0x444bddc6, 0x3063edaa}, + {0xfa6c1001, 0xd350b1b1, 0x9170f6d7, 0xcfd6c014, 0x3bcad6db, 0x18268d66, 0x92bebef8, 0x30641e0e}, + {0xf5360801, 0x8b9953a2, 0x859533b4, 0x7c05542e, 0x5ea6179c, 0xe83b698e, 0xb9f82f90, 0x30643640}, + {0x729b0401, 0xe7bda49b, 0x7fa75222, 0xd21c9e3b, 0x7013b7fc, 0x5045d7a2, 0xcd94e7dd, 0x30644259}, + {0xb14d8201, 0x15cfcd17, 0xfcb0615a, 0xfd284341, 0x78ca882c, 0x844b0eac, 0x57634403, 0x30644866}, + {0xd0a6c101, 0xacd8e155, 0x3b34e8f5, 0x12ae15c5, 0x7d25f045, 0x9e4daa31, 0x9c4a7216, 0x30644b6c}, + {0xe0536081, 0x785d6b74, 0xda772cc3, 0x1d70ff06, 0xff53a451, 0x2b4ef7f3, 0xbebe0920, 0x30644cef}, + {0x6829b041, 0x5e1fb084, 0xaa184eaa, 0x22d273a7, 0x406a7e57, 0xf1cf9ed5, 0x4ff7d4a4, 0x30644db1}, + {0x2c14d821, 0xd100d30c, 0x11e8df9d, 0x25832df8, 0xe0f5eb5a, 0x550ff245, 0x1894ba67, 0x30644e12}, + {0x0e0a6c11, 0x8a716450, 0x45d12817, 0xa6db8b20, 0x313ba1db, 0x86b01bfe, 0x7ce32d48, 0x30644e42}, + {0xff053609, 0x6729acf1, 0x5fc54c54, 0x6787b9b4, 0x595e7d1c, 0x1f8030da, 0xaf0a66b9, 0x30644e5a}, + {0xf7829b05, 0xd585d142, 0x6cbf5e72, 0xc7ddd0fe, 0x6d6feabc, 0x6be83b48, 0xc81e0371, 0x30644e66}, + {0x73c14d83, 0x0cb3e36b, 0x733c6782, 0xf808dca3, 0x7778a18c, 0x921c407f, 0xd4a7d1cd, 0x30644e6c}, + {0xb1e0a6c2, 0xa84aec7f, 0xf67aec09, 0x101e6275, 0xfc7cfcf5, 0xa536431a, 0xdaecb8fb, 0x30644e6f}}}; }; struct fq_config { static constexpr unsigned limbs_count = 8; static constexpr unsigned modulus_bit_count = 254; - static constexpr storage modulus = {0xd87cfd47, 0x3c208c16, 0x6871ca8d, 0x97816a91, 0x8181585d, 0xb85045b6, 0xe131a029, 0x30644e72}; - static constexpr storage modulus_2 = {0xb0f9fa8e, 0x7841182d, 0xd0e3951a, 0x2f02d522, 0x0302b0bb, 0x70a08b6d, 0xc2634053, 0x60c89ce5}; - static constexpr storage modulus_4 = {0x61f3f51c, 0xf082305b, 0xa1c72a34, 0x5e05aa45, 0x06056176, 0xe14116da, 0x84c680a6, 0xc19139cb}; - static constexpr storage<2*limbs_count> modulus_wide = {0xd87cfd47, 0x3c208c16, 0x6871ca8d, 0x97816a91, 0x8181585d, 0xb85045b6, 0xe131a029, 0x30644e72, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage<2*limbs_count> modulus_squared = {0x275d69b1, 0x3b5458a2, 0x09eac101, 0xa602072d, 0x6d96cadc, 0x4a50189c, 0x7a1242c8, 0x04689e95, 0x34c6b38d, 0x26edfa5c, 0x16375606, 0xb00b8551, 0x0348d21c, 0x599a6f7c, 0x763cbf9c, 0x0925c4b8}; - static constexpr storage<2*limbs_count> modulus_squared_2 = {0x4ebad362, 0x76a8b144, 0x13d58202, 0x4c040e5a, 0xdb2d95b9, 0x94a03138, 0xf4248590, 0x08d13d2a, 0x698d671a, 0x4ddbf4b8, 0x2c6eac0c, 0x60170aa2, 0x0691a439, 0xb334def8, 0xec797f38, 0x124b8970}; - static constexpr storage<2*limbs_count> modulus_squared_4 = {0x9d75a6c4, 0xed516288, 0x27ab0404, 0x98081cb4, 0xb65b2b72, 0x29406271, 0xe8490b21, 0x11a27a55, 0xd31ace34, 0x9bb7e970, 0x58dd5818, 0xc02e1544, 0x0d234872, 0x6669bdf0, 0xd8f2fe71, 0x249712e1}; - static constexpr storage m = {0x19bf90e5, 0x6f3aed8a, 0x67cd4c08, 0xae965e17, 0x68073013, 0xab074a58, 0x623a04a7, 0x54a47462}; - static constexpr storage one = {0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage zero = {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage montgomery_r = {0xc58f0d9d, 0xd35d438d, 0xf5c70b3d, 0xa78eb28, 0x7879462c, 0x666ea36f, 0x9a07df2f, 0xe0a77c1}; - static constexpr storage montgomery_r_inv = {0x14afa37, 0xed84884a, 0x278edf8, 0xeb202285, 0xb74492d9, 0xcf63e9cf, 0x59e5c639, 0x2e671571}; + static constexpr storage modulus = {0xd87cfd47, 0x3c208c16, 0x6871ca8d, 0x97816a91, + 0x8181585d, 0xb85045b6, 0xe131a029, 0x30644e72}; + static constexpr storage modulus_2 = {0xb0f9fa8e, 0x7841182d, 0xd0e3951a, 0x2f02d522, + 0x0302b0bb, 0x70a08b6d, 0xc2634053, 0x60c89ce5}; + static constexpr storage modulus_4 = {0x61f3f51c, 0xf082305b, 0xa1c72a34, 0x5e05aa45, + 0x06056176, 0xe14116da, 0x84c680a6, 0xc19139cb}; + static constexpr storage<2 * limbs_count> modulus_wide = { + 0xd87cfd47, 0x3c208c16, 0x6871ca8d, 0x97816a91, 0x8181585d, 0xb85045b6, 0xe131a029, 0x30644e72, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage<2 * limbs_count> modulus_squared = { + 0x275d69b1, 0x3b5458a2, 0x09eac101, 0xa602072d, 0x6d96cadc, 0x4a50189c, 0x7a1242c8, 0x04689e95, + 0x34c6b38d, 0x26edfa5c, 0x16375606, 0xb00b8551, 0x0348d21c, 0x599a6f7c, 0x763cbf9c, 0x0925c4b8}; + static constexpr storage<2 * limbs_count> modulus_squared_2 = { + 0x4ebad362, 0x76a8b144, 0x13d58202, 0x4c040e5a, 0xdb2d95b9, 0x94a03138, 0xf4248590, 0x08d13d2a, + 0x698d671a, 0x4ddbf4b8, 0x2c6eac0c, 0x60170aa2, 0x0691a439, 0xb334def8, 0xec797f38, 0x124b8970}; + static constexpr storage<2 * limbs_count> modulus_squared_4 = { + 0x9d75a6c4, 0xed516288, 0x27ab0404, 0x98081cb4, 0xb65b2b72, 0x29406271, 0xe8490b21, 0x11a27a55, + 0xd31ace34, 0x9bb7e970, 0x58dd5818, 0xc02e1544, 0x0d234872, 0x6669bdf0, 0xd8f2fe71, 0x249712e1}; + static constexpr storage m = {0x19bf90e5, 0x6f3aed8a, 0x67cd4c08, 0xae965e17, + 0x68073013, 0xab074a58, 0x623a04a7, 0x54a47462}; + static constexpr storage one = {0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage zero = {0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage montgomery_r = {0xc58f0d9d, 0xd35d438d, 0xf5c70b3d, 0xa78eb28, + 0x7879462c, 0x666ea36f, 0x9a07df2f, 0xe0a77c1}; + static constexpr storage montgomery_r_inv = {0x14afa37, 0xed84884a, 0x278edf8, 0xeb202285, + 0xb74492d9, 0xcf63e9cf, 0x59e5c639, 0x2e671571}; // i^2, the square of the imaginary unit for the extension field static constexpr uint32_t i_squared = 1; // true if i^2 is negative static constexpr bool i_squared_is_negative = true; - // G1 and G2 generators - static constexpr storage g1_gen_x = {0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage g1_gen_y = {0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage g2_gen_x_re = {0xd992f6ed, 0x46debd5c, 0xf75edadd, 0x674322d4, 0x5e5c4479, 0x426a0066, 0x121f1e76, 0x1800deef}; - static constexpr storage g2_gen_x_im = {0xaef312c2, 0x97e485b7, 0x35a9e712, 0xf1aa4933, 0x31fb5d25, 0x7260bfb7, 0x920d483a, 0x198e9393}; - static constexpr storage g2_gen_y_re = {0x66fa7daa, 0x4ce6cc01, 0x0c43d37b, 0xe3d1e769, 0x8dcb408f, 0x4aab7180, 0xdb8c6deb, 0x12c85ea5}; - static constexpr storage g2_gen_y_im = {0xd122975b, 0x55acdadc, 0x70b38ef3, 0xbc4b3133, 0x690c3395, 0xec9e99ad, 0x585ff075, 0x090689d0}; + // G1 and G2 generators + static constexpr storage g1_gen_x = {0x00000001, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage g1_gen_y = {0x00000002, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage g2_gen_x_re = {0xd992f6ed, 0x46debd5c, 0xf75edadd, 0x674322d4, + 0x5e5c4479, 0x426a0066, 0x121f1e76, 0x1800deef}; + static constexpr storage g2_gen_x_im = {0xaef312c2, 0x97e485b7, 0x35a9e712, 0xf1aa4933, + 0x31fb5d25, 0x7260bfb7, 0x920d483a, 0x198e9393}; + static constexpr storage g2_gen_y_re = {0x66fa7daa, 0x4ce6cc01, 0x0c43d37b, 0xe3d1e769, + 0x8dcb408f, 0x4aab7180, 0xdb8c6deb, 0x12c85ea5}; + static constexpr storage g2_gen_y_im = {0xd122975b, 0x55acdadc, 0x70b38ef3, 0xbc4b3133, + 0x690c3395, 0xec9e99ad, 0x585ff075, 0x090689d0}; }; - static constexpr storage weierstrass_b = {0x00000003, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}; - static constexpr storage weierstrass_b_g2_re = {0x24a138e5, 0x3267e6dc, 0x59dbefa3, 0xb5b4c5e5, 0x1be06ac3, 0x81be1899, 0xceb8aaae, 0x2b149d40}; - static constexpr storage weierstrass_b_g2_im = {0x85c315d2, 0xe4a2bd06, 0xe52d1852, 0xa74fa084, 0xeed8fdf4, 0xcd2cafad, 0x3af0fed4, 0x009713b0}; -} + static constexpr storage weierstrass_b = {0x00000003, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + static constexpr storage weierstrass_b_g2_re = { + 0x24a138e5, 0x3267e6dc, 0x59dbefa3, 0xb5b4c5e5, 0x1be06ac3, 0x81be1899, 0xceb8aaae, 0x2b149d40}; + static constexpr storage weierstrass_b_g2_im = { + 0x85c315d2, 0xe4a2bd06, 0xe52d1852, 0xa74fa084, 0xeed8fdf4, 0xcd2cafad, 0x3af0fed4, 0x009713b0}; +} // namespace PARAMS_BN254 diff --git a/icicle/curves/bn254/projective.cu b/icicle/curves/bn254/projective.cu index 18f4bbe9..f07a0a93 100644 --- a/icicle/curves/bn254/projective.cu +++ b/icicle/curves/bn254/projective.cu @@ -1,68 +1,60 @@ -#include -#include "curve_config.cuh" #include "../../primitives/projective.cuh" +#include "curve_config.cuh" +#include -extern "C" BN254::projective_t random_projective_bn254() -{ - return BN254::projective_t::rand_host(); -} +extern "C" BN254::projective_t random_projective_bn254() { return BN254::projective_t::rand_host(); } -extern "C" BN254::projective_t projective_zero_bn254() -{ - return BN254::projective_t::zero(); -} +extern "C" BN254::projective_t projective_zero_bn254() { return BN254::projective_t::zero(); } -extern "C" bool projective_is_on_curve_bn254(BN254::projective_t *point1) +extern "C" bool projective_is_on_curve_bn254(BN254::projective_t* point1) { return BN254::projective_t::is_on_curve(*point1); } -extern "C" BN254::affine_t projective_to_affine_bn254(BN254::projective_t *point1) +extern "C" BN254::affine_t projective_to_affine_bn254(BN254::projective_t* point1) { return BN254::projective_t::to_affine(*point1); } -extern "C" BN254::projective_t projective_from_affine_bn254(BN254::affine_t *point1) +extern "C" BN254::projective_t projective_from_affine_bn254(BN254::affine_t* point1) { return BN254::projective_t::from_affine(*point1); } -extern "C" BN254::scalar_field_t random_scalar_bn254() -{ - return BN254::scalar_field_t::rand_host(); -} +extern "C" BN254::scalar_field_t random_scalar_bn254() { return BN254::scalar_field_t::rand_host(); } -extern "C" bool eq_bn254(BN254::projective_t *point1, BN254::projective_t *point2) +extern "C" bool eq_bn254(BN254::projective_t* point1, BN254::projective_t* point2) { - return (*point1 == *point2) && - !((point1->x == BN254::point_field_t::zero()) && (point1->y == BN254::point_field_t::zero()) && (point1->z == BN254::point_field_t::zero())) && - !((point2->x == BN254::point_field_t::zero()) && (point2->y == BN254::point_field_t::zero()) && (point2->z == BN254::point_field_t::zero())); + return (*point1 == *point2) && + !((point1->x == BN254::point_field_t::zero()) && (point1->y == BN254::point_field_t::zero()) && + (point1->z == BN254::point_field_t::zero())) && + !((point2->x == BN254::point_field_t::zero()) && (point2->y == BN254::point_field_t::zero()) && + (point2->z == BN254::point_field_t::zero())); } #if defined(G2_DEFINED) -extern "C" bool eq_g2_bn254(BN254::g2_projective_t *point1, BN254::g2_projective_t *point2) +extern "C" bool eq_g2_bn254(BN254::g2_projective_t* point1, BN254::g2_projective_t* point2) { - return (*point1 == *point2) && - !((point1->x == BN254::g2_point_field_t::zero()) && (point1->y == BN254::g2_point_field_t::zero()) && (point1->z == BN254::g2_point_field_t::zero())) && - !((point2->x == BN254::g2_point_field_t::zero()) && (point2->y == BN254::g2_point_field_t::zero()) && (point2->z == BN254::g2_point_field_t::zero())); + return (*point1 == *point2) && + !((point1->x == BN254::g2_point_field_t::zero()) && (point1->y == BN254::g2_point_field_t::zero()) && + (point1->z == BN254::g2_point_field_t::zero())) && + !((point2->x == BN254::g2_point_field_t::zero()) && (point2->y == BN254::g2_point_field_t::zero()) && + (point2->z == BN254::g2_point_field_t::zero())); } -extern "C" BN254::g2_projective_t random_g2_projective_bn254() -{ - return BN254::g2_projective_t::rand_host(); -} +extern "C" BN254::g2_projective_t random_g2_projective_bn254() { return BN254::g2_projective_t::rand_host(); } -extern "C" BN254::g2_affine_t g2_projective_to_affine_bn254(BN254::g2_projective_t *point1) +extern "C" BN254::g2_affine_t g2_projective_to_affine_bn254(BN254::g2_projective_t* point1) { return BN254::g2_projective_t::to_affine(*point1); } -extern "C" BN254::g2_projective_t g2_projective_from_affine_bn254(BN254::g2_affine_t *point1) +extern "C" BN254::g2_projective_t g2_projective_from_affine_bn254(BN254::g2_affine_t* point1) { return BN254::g2_projective_t::from_affine(*point1); } -extern "C" bool g2_projective_is_on_curve_bn254(BN254::g2_projective_t *point1) +extern "C" bool g2_projective_is_on_curve_bn254(BN254::g2_projective_t* point1) { return BN254::g2_projective_t::is_on_curve(*point1); } diff --git a/icicle/curves/bn254/supported_operations.cu b/icicle/curves/bn254/supported_operations.cu index 0cc19d66..3a9148f4 100644 --- a/icicle/curves/bn254/supported_operations.cu +++ b/icicle/curves/bn254/supported_operations.cu @@ -1,4 +1,4 @@ -#include "projective.cu" #include "lde.cu" #include "msm.cu" +#include "projective.cu" #include "ve_mod_mult.cu" \ No newline at end of file diff --git a/icicle/curves/bn254/ve_mod_mult.cu b/icicle/curves/bn254/ve_mod_mult.cu index e1ac3145..ec9f91b2 100644 --- a/icicle/curves/bn254/ve_mod_mult.cu +++ b/icicle/curves/bn254/ve_mod_mult.cu @@ -1,88 +1,70 @@ #ifndef _BN254_VEC_MULT #define _BN254_VEC_MULT -#include -#include -#include "../../primitives/field.cuh" -#include "../../utils/storage.cuh" -#include "../../primitives/projective.cuh" -#include "curve_config.cuh" #include "../../appUtils/vector_manipulation/ve_mod_mult.cuh" +#include "../../primitives/field.cuh" +#include "../../primitives/projective.cuh" +#include "../../utils/storage.cuh" +#include "curve_config.cuh" +#include +#include - -extern "C" int32_t vec_mod_mult_point_bn254(BN254::projective_t *inout, - BN254::scalar_t *scalar_vec, - size_t n_elments, - size_t device_id, - cudaStream_t stream = 0) +extern "C" int32_t vec_mod_mult_point_bn254( + BN254::projective_t* inout, BN254::scalar_t* scalar_vec, size_t n_elments, size_t device_id, cudaStream_t stream = 0) { // TODO: use device_id when working with multiple devices (void)device_id; - try - { + try { // TODO: device_id vector_mod_mult(scalar_vec, inout, inout, n_elments, stream); return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { + } catch (const std::runtime_error& ex) { printf("error %s", ex.what()); // TODO: error code and message return -1; } } -extern "C" int32_t vec_mod_mult_scalar_bn254(BN254::scalar_t *inout, - BN254::scalar_t *scalar_vec, - size_t n_elments, - size_t device_id, - cudaStream_t stream = 0) +extern "C" int32_t vec_mod_mult_scalar_bn254( + BN254::scalar_t* inout, BN254::scalar_t* scalar_vec, size_t n_elments, size_t device_id, cudaStream_t stream = 0) { // TODO: use device_id when working with multiple devices (void)device_id; - try - { + try { // TODO: device_id vector_mod_mult(scalar_vec, inout, inout, n_elments, stream); return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { + } catch (const std::runtime_error& ex) { printf("error %s", ex.what()); // TODO: error code and message return -1; } } extern "C" int32_t vec_mod_mult_device_scalar_bn254( - BN254::scalar_t *inout, - BN254::scalar_t *scalar_vec, - size_t n_elements, - size_t device_id -) { + BN254::scalar_t* inout, BN254::scalar_t* scalar_vec, size_t n_elements, size_t device_id) +{ try { vector_mod_mult_device(scalar_vec, inout, inout, n_elements); return CUDA_SUCCESS; - } catch (const std::runtime_error &ex) { + } catch (const std::runtime_error& ex) { printf("error %s", ex.what()); // TODO: error code and message return -1; } } -extern "C" int32_t matrix_vec_mod_mult_bn254(BN254::scalar_t *matrix_flattened, - BN254::scalar_t *input, - BN254::scalar_t *output, - size_t n_elments, - size_t device_id, - cudaStream_t stream = 0) +extern "C" int32_t matrix_vec_mod_mult_bn254( + BN254::scalar_t* matrix_flattened, + BN254::scalar_t* input, + BN254::scalar_t* output, + size_t n_elments, + size_t device_id, + cudaStream_t stream = 0) { // TODO: use device_id when working with multiple devices (void)device_id; - try - { + try { // TODO: device_id matrix_mod_mult(matrix_flattened, input, output, n_elments, stream); return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { + } catch (const std::runtime_error& ex) { printf("error %s", ex.what()); // TODO: error code and message return -1; } diff --git a/icicle/curves/curve_template/curve_config.cuh b/icicle/curves/curve_template/curve_config.cuh deleted file mode 100644 index 61fdc444..00000000 --- a/icicle/curves/curve_template/curve_config.cuh +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once - -#include "../../primitives/field.cuh" -#include "../../primitives/projective.cuh" -#if defined(G2_DEFINED) -#include "../../primitives/extension_field.cuh" -#endif - -#include "params.cuh" - -namespace ${CURVE_NAME_U} { - typedef Field scalar_field_t; - typedef scalar_field_t scalar_t; - typedef Field point_field_t; - static constexpr point_field_t b = point_field_t{ PARAMS_${CURVE_NAME_U}::weierstrass_b }; - typedef Projective projective_t; - typedef Affine affine_t; - #if defined(G2_DEFINED) - typedef ExtensionField g2_point_field_t; - static constexpr g2_point_field_t b_g2 = g2_point_field_t{ point_field_t{ PARAMS_${CURVE_NAME_U}::weierstrass_b_g2_re }, - point_field_t{ PARAMS_${CURVE_NAME_U}::weierstrass_b_g2_im }}; - typedef Projective g2_projective_t; - typedef Affine g2_affine_t; - #endif -} \ No newline at end of file diff --git a/icicle/curves/curve_template/curve_config.cuh.tmpl b/icicle/curves/curve_template/curve_config.cuh.tmpl new file mode 100644 index 00000000..3fa646eb --- /dev/null +++ b/icicle/curves/curve_template/curve_config.cuh.tmpl @@ -0,0 +1,25 @@ +#pragma once + +#include "../../primitives/field.cuh" +#include "../../primitives/projective.cuh" +#if defined(G2_DEFINED) +#include "../../primitives/extension_field.cuh" +#endif + +#include "params.cuh" + +namespace ${CURVE_NAME_U} { + typedef Field scalar_field_t; + typedef scalar_field_t scalar_t; + typedef Field point_field_t; + static constexpr point_field_t b = point_field_t{PARAMS_${CURVE_NAME_U}::weierstrass_b}; + typedef Projective projective_t; + typedef Affine affine_t; +#if defined(G2_DEFINED) + typedef ExtensionField g2_point_field_t; + static constexpr g2_point_field_t b_g2 = g2_point_field_t{ + point_field_t{PARAMS_${CURVE_NAME_U}::weierstrass_b_g2_re}, point_field_t{PARAMS_${CURVE_NAME_U}::weierstrass_b_g2_im}}; + typedef Projective g2_projective_t; + typedef Affine g2_affine_t; +#endif +} \ No newline at end of file diff --git a/icicle/curves/curve_template/lde.cu b/icicle/curves/curve_template/lde.cu deleted file mode 100644 index cf392778..00000000 --- a/icicle/curves/curve_template/lde.cu +++ /dev/null @@ -1,567 +0,0 @@ -#ifndef _${CURVE_NAME_U}_LDE -#define _${CURVE_NAME_U}_LDE -#include -#include "../../appUtils/ntt/lde.cu" -#include "../../appUtils/ntt/ntt.cuh" -#include "../../appUtils/vector_manipulation/ve_mod_mult.cuh" -#include "curve_config.cuh" -#include "../../utils/mont.cuh" - - - -extern "C" ${CURVE_NAME_U}::scalar_t* build_domain_cuda_${CURVE_NAME_L}(uint32_t domain_size, uint32_t logn, bool inverse, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - if (inverse) { - return fill_twiddle_factors_array(domain_size, ${CURVE_NAME_U}::scalar_t::omega_inv(logn), stream); - } else { - return fill_twiddle_factors_array(domain_size, ${CURVE_NAME_U}::scalar_t::omega(logn), stream); - } - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return nullptr; - } -} - -extern "C" int ntt_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::scalar_t *arr, uint32_t n, bool inverse, Decimation decimation, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - return ntt_end2end_template<${CURVE_NAME_U}::scalar_t,${CURVE_NAME_U}::scalar_t>(arr, n, inverse, stream); // TODO: pass device_id - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - - return -1; - } -} - -extern "C" int ecntt_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::projective_t *arr, uint32_t n, bool inverse, Decimation decimation, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - return ntt_end2end_template<${CURVE_NAME_U}::projective_t,${CURVE_NAME_U}::scalar_t>(arr, n, inverse, stream); // TODO: pass device_id - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int ntt_batch_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::scalar_t *arr, uint32_t arr_size, uint32_t batch_size, bool inverse, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - return ntt_end2end_batch_template<${CURVE_NAME_U}::scalar_t,${CURVE_NAME_U}::scalar_t>(arr, arr_size, batch_size, inverse, stream); // TODO: pass device_id - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int ecntt_batch_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::projective_t *arr, uint32_t arr_size, uint32_t batch_size, bool inverse, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - return ntt_end2end_batch_template<${CURVE_NAME_U}::projective_t,${CURVE_NAME_U}::scalar_t>(arr, arr_size, batch_size, inverse, stream); // TODO: pass device_id - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int interpolate_scalars_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::scalar_t* d_out, ${CURVE_NAME_U}::scalar_t *d_evaluations, ${CURVE_NAME_U}::scalar_t *d_domain, unsigned n, unsigned device_id = 0, cudaStream_t stream = 0) -{ - try - { - ${CURVE_NAME_U}::scalar_t* _null = nullptr; - return interpolate(d_out, d_evaluations, d_domain, n, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int interpolate_scalars_batch_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::scalar_t* d_out, ${CURVE_NAME_U}::scalar_t* d_evaluations, ${CURVE_NAME_U}::scalar_t* d_domain, unsigned n, - unsigned batch_size, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - ${CURVE_NAME_U}::scalar_t* _null = nullptr; - cudaStreamCreate(&stream); - return interpolate_batch(d_out, d_evaluations, d_domain, n, batch_size, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int interpolate_scalars_on_coset_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::scalar_t* d_out, ${CURVE_NAME_U}::scalar_t *d_evaluations, ${CURVE_NAME_U}::scalar_t *d_domain, unsigned n, ${CURVE_NAME_U}::scalar_t *coset_powers, unsigned device_id = 0, cudaStream_t stream = 0) -{ - try - { - return interpolate(d_out, d_evaluations, d_domain, n, true, coset_powers, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int interpolate_scalars_batch_on_coset_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::scalar_t* d_out, ${CURVE_NAME_U}::scalar_t* d_evaluations, ${CURVE_NAME_U}::scalar_t* d_domain, unsigned n, - unsigned batch_size, ${CURVE_NAME_U}::scalar_t* coset_powers, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - return interpolate_batch(d_out, d_evaluations, d_domain, n, batch_size, true, coset_powers, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int interpolate_points_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::projective_t* d_out, ${CURVE_NAME_U}::projective_t *d_evaluations, ${CURVE_NAME_U}::scalar_t *d_domain, unsigned n, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - ${CURVE_NAME_U}::scalar_t* _null = nullptr; - return interpolate(d_out, d_evaluations, d_domain, n, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int interpolate_points_batch_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::projective_t* d_out, ${CURVE_NAME_U}::projective_t* d_evaluations, ${CURVE_NAME_U}::scalar_t* d_domain, - unsigned n, unsigned batch_size, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - ${CURVE_NAME_U}::scalar_t* _null = nullptr; - cudaStreamCreate(&stream); - return interpolate_batch(d_out, d_evaluations, d_domain, n, batch_size, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int evaluate_scalars_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::scalar_t* d_out, ${CURVE_NAME_U}::scalar_t *d_coefficients, ${CURVE_NAME_U}::scalar_t *d_domain, - unsigned domain_size, unsigned n, unsigned device_id = 0, cudaStream_t stream = 0) -{ - try - { - ${CURVE_NAME_U}::scalar_t* _null = nullptr; - cudaStreamCreate(&stream); - return evaluate(d_out, d_coefficients, d_domain, domain_size, n, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int evaluate_scalars_batch_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::scalar_t* d_out, ${CURVE_NAME_U}::scalar_t* d_coefficients, ${CURVE_NAME_U}::scalar_t* d_domain, unsigned domain_size, - unsigned n, unsigned batch_size, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - ${CURVE_NAME_U}::scalar_t* _null = nullptr; - cudaStreamCreate(&stream); - return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int evaluate_points_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::projective_t* d_out, ${CURVE_NAME_U}::projective_t *d_coefficients, ${CURVE_NAME_U}::scalar_t *d_domain, - unsigned domain_size, unsigned n, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - ${CURVE_NAME_U}::scalar_t* _null = nullptr; - cudaStreamCreate(&stream); - return evaluate(d_out, d_coefficients, d_domain, domain_size, n, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int evaluate_points_batch_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::projective_t* d_out, ${CURVE_NAME_U}::projective_t* d_coefficients, ${CURVE_NAME_U}::scalar_t* d_domain, unsigned domain_size, - unsigned n, unsigned batch_size, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - ${CURVE_NAME_U}::scalar_t* _null = nullptr; - cudaStreamCreate(&stream); - return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, false, _null, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int evaluate_scalars_on_coset_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::scalar_t* d_out, ${CURVE_NAME_U}::scalar_t *d_coefficients, ${CURVE_NAME_U}::scalar_t *d_domain, unsigned domain_size, - unsigned n, ${CURVE_NAME_U}::scalar_t *coset_powers, unsigned device_id = 0, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - return evaluate(d_out, d_coefficients, d_domain, domain_size, n, true, coset_powers, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int evaluate_scalars_on_coset_batch_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::scalar_t* d_out, ${CURVE_NAME_U}::scalar_t* d_coefficients, ${CURVE_NAME_U}::scalar_t* d_domain, unsigned domain_size, - unsigned n, unsigned batch_size, ${CURVE_NAME_U}::scalar_t *coset_powers, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, true, coset_powers, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int evaluate_points_on_coset_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::projective_t* d_out, ${CURVE_NAME_U}::projective_t *d_coefficients, ${CURVE_NAME_U}::scalar_t *d_domain, unsigned domain_size, - unsigned n, ${CURVE_NAME_U}::scalar_t *coset_powers, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - return evaluate(d_out, d_coefficients, d_domain, domain_size, n, true, coset_powers, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int evaluate_points_on_coset_batch_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::projective_t* d_out, ${CURVE_NAME_U}::projective_t* d_coefficients, ${CURVE_NAME_U}::scalar_t* d_domain, unsigned domain_size, - unsigned n, unsigned batch_size, ${CURVE_NAME_U}::scalar_t *coset_powers, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, true, coset_powers, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int ntt_inplace_batch_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::scalar_t* d_inout, ${CURVE_NAME_U}::scalar_t* d_twiddles, - unsigned n, unsigned batch_size, bool inverse, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - - cudaStreamCreate(&stream); - ${CURVE_NAME_U}::scalar_t* _null = nullptr; - ntt_inplace_batch_template(d_inout, d_twiddles, n, batch_size, inverse, false, _null, stream, true); - return CUDA_SUCCESS; //TODO: we should implement this https://leimao.github.io/blog/Proper-CUDA-Error-Checking/ - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int ntt_inplace_coset_batch_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::scalar_t* d_inout, ${CURVE_NAME_U}::scalar_t* d_twiddles, - unsigned n, unsigned batch_size, bool inverse, bool is_coset, ${CURVE_NAME_U}::scalar_t* coset, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - ntt_inplace_batch_template(d_inout, d_twiddles, n, batch_size, inverse, is_coset, coset, stream, true); - return CUDA_SUCCESS; //TODO: we should implement this https://leimao.github.io/blog/Proper-CUDA-Error-Checking/ - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int sub_scalars_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::scalar_t* d_out, ${CURVE_NAME_U}::scalar_t* d_in1, ${CURVE_NAME_U}::scalar_t* d_in2, unsigned n, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - return sub_polys(d_out, d_in1, d_in2, n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int add_scalars_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::scalar_t* d_out, ${CURVE_NAME_U}::scalar_t* d_in1, ${CURVE_NAME_U}::scalar_t* d_in2, unsigned n, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - return add_polys(d_out, d_in1, d_in2, n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int to_montgomery_scalars_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::scalar_t* d_inout, unsigned n, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - return to_montgomery(d_inout, n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int from_montgomery_scalars_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::scalar_t* d_inout, unsigned n, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - return from_montgomery(d_inout, n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int to_montgomery_proj_points_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::projective_t* d_inout, unsigned n, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - return to_montgomery((${CURVE_NAME_U}::point_field_t*)d_inout, 3 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int from_montgomery_proj_points_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::projective_t* d_inout, unsigned n, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - return from_montgomery((${CURVE_NAME_U}::point_field_t*)d_inout, 3 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int to_montgomery_aff_points_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::affine_t* d_inout, unsigned n, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - return to_montgomery((${CURVE_NAME_U}::point_field_t*)d_inout, 2 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int from_montgomery_aff_points_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::affine_t* d_inout, unsigned n, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - return from_montgomery((${CURVE_NAME_U}::point_field_t*)d_inout, 2 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -#if defined(G2_DEFINED) -extern "C" int to_montgomery_proj_points_g2_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::g2_projective_t* d_inout, unsigned n, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - return to_montgomery((${CURVE_NAME_U}::point_field_t*)d_inout, 6 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int from_montgomery_proj_points_g2_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::g2_projective_t* d_inout, unsigned n, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - return from_montgomery((${CURVE_NAME_U}::point_field_t*)d_inout, 6 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int to_montgomery_aff_points_g2_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::g2_affine_t* d_inout, unsigned n, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - return to_montgomery((${CURVE_NAME_U}::point_field_t*)d_inout, 4 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int from_montgomery_aff_points_g2_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::g2_affine_t* d_inout, unsigned n, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - return from_montgomery((${CURVE_NAME_U}::point_field_t*)d_inout, 4 * n, stream); - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} -#endif - -extern "C" int reverse_order_scalars_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::scalar_t* arr, int n, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - uint32_t logn = uint32_t(log(n) / log(2)); - cudaStreamCreate(&stream); - reverse_order(arr, n, logn, stream); - cudaStreamSynchronize(stream); - return 0; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int reverse_order_scalars_batch_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::scalar_t* arr, int n, int batch_size, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - uint32_t logn = uint32_t(log(n) / log(2)); - cudaStreamCreate(&stream); - reverse_order_batch(arr, n, logn, batch_size, stream); - return 0; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int reverse_order_points_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::projective_t* arr, int n, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - uint32_t logn = uint32_t(log(n) / log(2)); - cudaStreamCreate(&stream); - reverse_order(arr, n, logn, stream); - return 0; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int reverse_order_points_batch_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::projective_t* arr, int n, int batch_size, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - uint32_t logn = uint32_t(log(n) / log(2)); - cudaStreamCreate(&stream); - reverse_order_batch(arr, n, logn, batch_size, stream); - return 0; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} -#endif diff --git a/icicle/curves/curve_template/lde.cu.tmpl b/icicle/curves/curve_template/lde.cu.tmpl new file mode 100644 index 00000000..e96af04e --- /dev/null +++ b/icicle/curves/curve_template/lde.cu.tmpl @@ -0,0 +1,592 @@ +#ifndef _${CURVE_NAME_U}_LDE +#define _${CURVE_NAME_U}_LDE +#include "../../appUtils/ntt/lde.cu" +#include "../../appUtils/ntt/ntt.cuh" +#include "../../appUtils/vector_manipulation/ve_mod_mult.cuh" +#include "../../utils/mont.cuh" +#include "curve_config.cuh" +#include + +extern "C" ${CURVE_NAME_U}::scalar_t* build_domain_cuda_${CURVE_NAME_L}( + uint32_t domain_size, uint32_t logn, bool inverse, size_t device_id = 0, cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + if (inverse) { + return fill_twiddle_factors_array(domain_size, ${CURVE_NAME_U}::scalar_t::omega_inv(logn), stream); + } else { + return fill_twiddle_factors_array(domain_size, ${CURVE_NAME_U}::scalar_t::omega(logn), stream); + } + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return nullptr; + } +} + +extern "C" int ntt_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::scalar_t* arr, uint32_t n, bool inverse, Decimation decimation, size_t device_id = 0, cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + return ntt_end2end_template<${CURVE_NAME_U}::scalar_t, ${CURVE_NAME_U}::scalar_t>(arr, n, inverse, stream); // TODO: pass device_id + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + + return -1; + } +} + +extern "C" int ecntt_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::projective_t* arr, + uint32_t n, + bool inverse, + Decimation decimation, + size_t device_id = 0, + cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + return ntt_end2end_template<${CURVE_NAME_U}::projective_t, ${CURVE_NAME_U}::scalar_t>(arr, n, inverse, stream); // TODO: pass device_id + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int ntt_batch_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::scalar_t* arr, + uint32_t arr_size, + uint32_t batch_size, + bool inverse, + size_t device_id = 0, + cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + return ntt_end2end_batch_template<${CURVE_NAME_U}::scalar_t, ${CURVE_NAME_U}::scalar_t>( + arr, arr_size, batch_size, inverse, stream); // TODO: pass device_id + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int ecntt_batch_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::projective_t* arr, + uint32_t arr_size, + uint32_t batch_size, + bool inverse, + size_t device_id = 0, + cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + return ntt_end2end_batch_template<${CURVE_NAME_U}::projective_t, ${CURVE_NAME_U}::scalar_t>( + arr, arr_size, batch_size, inverse, stream); // TODO: pass device_id + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int interpolate_scalars_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::scalar_t* d_out, + ${CURVE_NAME_U}::scalar_t* d_evaluations, + ${CURVE_NAME_U}::scalar_t* d_domain, + unsigned n, + unsigned device_id = 0, + cudaStream_t stream = 0) +{ + try { + ${CURVE_NAME_U}::scalar_t* _null = nullptr; + return interpolate(d_out, d_evaluations, d_domain, n, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int interpolate_scalars_batch_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::scalar_t* d_out, + ${CURVE_NAME_U}::scalar_t* d_evaluations, + ${CURVE_NAME_U}::scalar_t* d_domain, + unsigned n, + unsigned batch_size, + size_t device_id = 0, + cudaStream_t stream = 0) +{ + try { + ${CURVE_NAME_U}::scalar_t* _null = nullptr; + cudaStreamCreate(&stream); + return interpolate_batch(d_out, d_evaluations, d_domain, n, batch_size, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int interpolate_scalars_on_coset_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::scalar_t* d_out, + ${CURVE_NAME_U}::scalar_t* d_evaluations, + ${CURVE_NAME_U}::scalar_t* d_domain, + unsigned n, + ${CURVE_NAME_U}::scalar_t* coset_powers, + unsigned device_id = 0, + cudaStream_t stream = 0) +{ + try { + return interpolate(d_out, d_evaluations, d_domain, n, true, coset_powers, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int interpolate_scalars_batch_on_coset_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::scalar_t* d_out, + ${CURVE_NAME_U}::scalar_t* d_evaluations, + ${CURVE_NAME_U}::scalar_t* d_domain, + unsigned n, + unsigned batch_size, + ${CURVE_NAME_U}::scalar_t* coset_powers, + size_t device_id = 0, + cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + return interpolate_batch(d_out, d_evaluations, d_domain, n, batch_size, true, coset_powers, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int interpolate_points_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::projective_t* d_out, + ${CURVE_NAME_U}::projective_t* d_evaluations, + ${CURVE_NAME_U}::scalar_t* d_domain, + unsigned n, + size_t device_id = 0, + cudaStream_t stream = 0) +{ + try { + ${CURVE_NAME_U}::scalar_t* _null = nullptr; + return interpolate(d_out, d_evaluations, d_domain, n, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int interpolate_points_batch_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::projective_t* d_out, + ${CURVE_NAME_U}::projective_t* d_evaluations, + ${CURVE_NAME_U}::scalar_t* d_domain, + unsigned n, + unsigned batch_size, + size_t device_id = 0, + cudaStream_t stream = 0) +{ + try { + ${CURVE_NAME_U}::scalar_t* _null = nullptr; + cudaStreamCreate(&stream); + return interpolate_batch(d_out, d_evaluations, d_domain, n, batch_size, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int evaluate_scalars_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::scalar_t* d_out, + ${CURVE_NAME_U}::scalar_t* d_coefficients, + ${CURVE_NAME_U}::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned device_id = 0, + cudaStream_t stream = 0) +{ + try { + ${CURVE_NAME_U}::scalar_t* _null = nullptr; + cudaStreamCreate(&stream); + return evaluate(d_out, d_coefficients, d_domain, domain_size, n, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int evaluate_scalars_batch_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::scalar_t* d_out, + ${CURVE_NAME_U}::scalar_t* d_coefficients, + ${CURVE_NAME_U}::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + size_t device_id = 0, + cudaStream_t stream = 0) +{ + try { + ${CURVE_NAME_U}::scalar_t* _null = nullptr; + cudaStreamCreate(&stream); + return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int evaluate_points_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::projective_t* d_out, + ${CURVE_NAME_U}::projective_t* d_coefficients, + ${CURVE_NAME_U}::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + size_t device_id = 0, + cudaStream_t stream = 0) +{ + try { + ${CURVE_NAME_U}::scalar_t* _null = nullptr; + cudaStreamCreate(&stream); + return evaluate(d_out, d_coefficients, d_domain, domain_size, n, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int evaluate_points_batch_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::projective_t* d_out, + ${CURVE_NAME_U}::projective_t* d_coefficients, + ${CURVE_NAME_U}::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + size_t device_id = 0, + cudaStream_t stream = 0) +{ + try { + ${CURVE_NAME_U}::scalar_t* _null = nullptr; + cudaStreamCreate(&stream); + return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, false, _null, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int evaluate_scalars_on_coset_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::scalar_t* d_out, + ${CURVE_NAME_U}::scalar_t* d_coefficients, + ${CURVE_NAME_U}::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + ${CURVE_NAME_U}::scalar_t* coset_powers, + unsigned device_id = 0, + cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + return evaluate(d_out, d_coefficients, d_domain, domain_size, n, true, coset_powers, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int evaluate_scalars_on_coset_batch_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::scalar_t* d_out, + ${CURVE_NAME_U}::scalar_t* d_coefficients, + ${CURVE_NAME_U}::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + ${CURVE_NAME_U}::scalar_t* coset_powers, + size_t device_id = 0, + cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, true, coset_powers, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int evaluate_points_on_coset_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::projective_t* d_out, + ${CURVE_NAME_U}::projective_t* d_coefficients, + ${CURVE_NAME_U}::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + ${CURVE_NAME_U}::scalar_t* coset_powers, + size_t device_id = 0, + cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + return evaluate(d_out, d_coefficients, d_domain, domain_size, n, true, coset_powers, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int evaluate_points_on_coset_batch_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::projective_t* d_out, + ${CURVE_NAME_U}::projective_t* d_coefficients, + ${CURVE_NAME_U}::scalar_t* d_domain, + unsigned domain_size, + unsigned n, + unsigned batch_size, + ${CURVE_NAME_U}::scalar_t* coset_powers, + size_t device_id = 0, + cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + return evaluate_batch(d_out, d_coefficients, d_domain, domain_size, n, batch_size, true, coset_powers, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int ntt_inplace_batch_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::scalar_t* d_inout, + ${CURVE_NAME_U}::scalar_t* d_twiddles, + unsigned n, + unsigned batch_size, + bool inverse, + size_t device_id = 0, + cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + ${CURVE_NAME_U}::scalar_t* _null = nullptr; + ntt_inplace_batch_template(d_inout, d_twiddles, n, batch_size, inverse, false, _null, stream, true); + return CUDA_SUCCESS; // TODO: we should implement this https://leimao.github.io/blog/Proper-CUDA-Error-Checking/ + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int ntt_inplace_coset_batch_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::scalar_t* d_inout, + ${CURVE_NAME_U}::scalar_t* d_twiddles, + unsigned n, + unsigned batch_size, + bool inverse, + bool is_coset, + ${CURVE_NAME_U}::scalar_t* coset, + size_t device_id = 0, + cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + ntt_inplace_batch_template(d_inout, d_twiddles, n, batch_size, inverse, is_coset, coset, stream, true); + return CUDA_SUCCESS; // TODO: we should implement this https://leimao.github.io/blog/Proper-CUDA-Error-Checking/ + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int sub_scalars_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::scalar_t* d_out, ${CURVE_NAME_U}::scalar_t* d_in1, ${CURVE_NAME_U}::scalar_t* d_in2, unsigned n, cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + return sub_polys(d_out, d_in1, d_in2, n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int add_scalars_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::scalar_t* d_out, ${CURVE_NAME_U}::scalar_t* d_in1, ${CURVE_NAME_U}::scalar_t* d_in2, unsigned n, cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + return add_polys(d_out, d_in1, d_in2, n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int to_montgomery_scalars_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::scalar_t* d_inout, unsigned n, cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + return to_montgomery(d_inout, n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int from_montgomery_scalars_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::scalar_t* d_inout, unsigned n, cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + return from_montgomery(d_inout, n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int to_montgomery_proj_points_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::projective_t* d_inout, unsigned n, cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + return to_montgomery((${CURVE_NAME_U}::point_field_t*)d_inout, 3 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int from_montgomery_proj_points_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::projective_t* d_inout, unsigned n, cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + return from_montgomery((${CURVE_NAME_U}::point_field_t*)d_inout, 3 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int to_montgomery_aff_points_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::affine_t* d_inout, unsigned n, cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + return to_montgomery((${CURVE_NAME_U}::point_field_t*)d_inout, 2 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int from_montgomery_aff_points_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::affine_t* d_inout, unsigned n, cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + return from_montgomery((${CURVE_NAME_U}::point_field_t*)d_inout, 2 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +#if defined(G2_DEFINED) +extern "C" int +to_montgomery_proj_points_g2_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::g2_projective_t* d_inout, unsigned n, cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + return to_montgomery((${CURVE_NAME_U}::point_field_t*)d_inout, 6 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int +from_montgomery_proj_points_g2_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::g2_projective_t* d_inout, unsigned n, cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + return from_montgomery((${CURVE_NAME_U}::point_field_t*)d_inout, 6 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int to_montgomery_aff_points_g2_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::g2_affine_t* d_inout, unsigned n, cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + return to_montgomery((${CURVE_NAME_U}::point_field_t*)d_inout, 4 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int +from_montgomery_aff_points_g2_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::g2_affine_t* d_inout, unsigned n, cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + return from_montgomery((${CURVE_NAME_U}::point_field_t*)d_inout, 4 * n, stream); + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} +#endif + +extern "C" int +reverse_order_scalars_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::scalar_t* arr, int n, size_t device_id = 0, cudaStream_t stream = 0) +{ + try { + uint32_t logn = uint32_t(log(n) / log(2)); + cudaStreamCreate(&stream); + reverse_order(arr, n, logn, stream); + cudaStreamSynchronize(stream); + return 0; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int reverse_order_scalars_batch_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::scalar_t* arr, int n, int batch_size, size_t device_id = 0, cudaStream_t stream = 0) +{ + try { + uint32_t logn = uint32_t(log(n) / log(2)); + cudaStreamCreate(&stream); + reverse_order_batch(arr, n, logn, batch_size, stream); + return 0; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int +reverse_order_points_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::projective_t* arr, int n, size_t device_id = 0, cudaStream_t stream = 0) +{ + try { + uint32_t logn = uint32_t(log(n) / log(2)); + cudaStreamCreate(&stream); + reverse_order(arr, n, logn, stream); + return 0; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int reverse_order_points_batch_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::projective_t* arr, int n, int batch_size, size_t device_id = 0, cudaStream_t stream = 0) +{ + try { + uint32_t logn = uint32_t(log(n) / log(2)); + cudaStreamCreate(&stream); + reverse_order_batch(arr, n, logn, batch_size, stream); + return 0; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} +#endif diff --git a/icicle/curves/curve_template/msm.cu b/icicle/curves/curve_template/msm.cu deleted file mode 100644 index 35de3e41..00000000 --- a/icicle/curves/curve_template/msm.cu +++ /dev/null @@ -1,186 +0,0 @@ -#ifndef _${CURVE_NAME_U}_MSM -#define _${CURVE_NAME_U}_MSM -#include "../../appUtils/msm/msm.cu" -#include -#include -#include "curve_config.cuh" - - -extern "C" -int msm_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::projective_t *out, ${CURVE_NAME_U}::affine_t points[], - ${CURVE_NAME_U}::scalar_t scalars[], size_t count, unsigned large_bucket_factor, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - large_msm<${CURVE_NAME_U}::scalar_t, ${CURVE_NAME_U}::projective_t, ${CURVE_NAME_U}::affine_t>(scalars, points, count, out, false, false, large_bucket_factor, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int msm_batch_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::projective_t* out, ${CURVE_NAME_U}::affine_t points[], - ${CURVE_NAME_U}::scalar_t scalars[], size_t batch_size, size_t msm_size, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - batched_large_msm<${CURVE_NAME_U}::scalar_t, ${CURVE_NAME_U}::projective_t, ${CURVE_NAME_U}::affine_t>(scalars, points, batch_size, msm_size, out, false, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -/** - * Commit to a polynomial using the MSM. - * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or points. - * @param d_out Ouptut point to write the result to. - * @param d_scalars Scalars for the MSM. Must be on device. - * @param d_points Points for the MSM. Must be on device. - * @param count Length of `d_scalars` and `d_points` arrays (they should have equal length). - */ -extern "C" -int commit_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::projective_t* d_out, ${CURVE_NAME_U}::scalar_t* d_scalars, ${CURVE_NAME_U}::affine_t* d_points, size_t count, unsigned large_bucket_factor, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - large_msm(d_scalars, d_points, count, d_out, true, false, large_bucket_factor, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -/** - * Commit to a batch of polynomials using the MSM. - * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or points. - * @param d_out Ouptut point to write the results to. - * @param d_scalars Scalars for the MSMs of all polynomials. Must be on device. - * @param d_points Points for the MSMs. Must be on device. It is assumed that this set of bases is used for each MSM. - * @param count Length of `d_points` array, `d_scalar` has length `count` * `batch_size`. - * @param batch_size Size of the batch. - */ -extern "C" -int commit_batch_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::projective_t* d_out, ${CURVE_NAME_U}::scalar_t* d_scalars, ${CURVE_NAME_U}::affine_t* d_points, size_t count, size_t batch_size, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - batched_large_msm(d_scalars, d_points, batch_size, count, d_out, true, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -#if defined(G2_DEFINED) -extern "C" -int msm_g2_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::g2_projective_t *out, ${CURVE_NAME_U}::g2_affine_t points[], - ${CURVE_NAME_U}::scalar_t scalars[], size_t count, unsigned large_bucket_factor, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - large_msm<${CURVE_NAME_U}::scalar_t, ${CURVE_NAME_U}::g2_projective_t, ${CURVE_NAME_U}::g2_affine_t>(scalars, points, count, out, false, false, large_bucket_factor, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -extern "C" int msm_batch_g2_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::g2_projective_t* out, ${CURVE_NAME_U}::g2_affine_t points[], - ${CURVE_NAME_U}::scalar_t scalars[], size_t batch_size, size_t msm_size, size_t device_id = 0, cudaStream_t stream = 0) -{ - try - { - cudaStreamCreate(&stream); - batched_large_msm<${CURVE_NAME_U}::scalar_t, ${CURVE_NAME_U}::g2_projective_t, ${CURVE_NAME_U}::g2_affine_t>(scalars, points, batch_size, msm_size, out, false, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - -/** - * Commit to a polynomial using the MSM in G2 group. - * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or points. - * @param d_out Ouptut G2 point to write the result to. - * @param d_scalars Scalars for the MSM. Must be on device. - * @param d_points G2 affine points for the MSM. Must be on device. - * @param count Length of `d_scalars` and `d_points` arrays (they should have equal length). - */ -extern "C" -int commit_g2_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::g2_projective_t* d_out, ${CURVE_NAME_U}::scalar_t* d_scalars, ${CURVE_NAME_U}::g2_affine_t* d_points, size_t count, unsigned large_bucket_factor, size_t device_id = 0, cudaStream_t stream = 0) -{ - // TODO: use device_id when working with multiple devices - (void)device_id; - try - { - cudaStreamCreate(&stream); - large_msm(d_scalars, d_points, count, d_out, true, false, large_bucket_factor, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} - - /** - * Commit to a batch of polynomials using the MSM. - * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or points. - * @param d_out Ouptut G2 point to write the results to. - * @param d_scalars Scalars for the MSMs of all polynomials. Must be on device. - * @param d_points G2 affine points for the MSMs. Must be on device. It is assumed that this set of bases is used for each MSM. - * @param count Length of `d_points` array, `d_scalar` has length `count` * `batch_size`. - * @param batch_size Size of the batch. - */ -extern "C" -int commit_batch_g2_cuda_${CURVE_NAME_L}(${CURVE_NAME_U}::g2_projective_t* d_out, ${CURVE_NAME_U}::scalar_t* d_scalars, ${CURVE_NAME_U}::g2_affine_t* d_points, size_t count, size_t batch_size, size_t device_id = 0, cudaStream_t stream = 0) -{ - // TODO: use device_id when working with multiple devices - (void)device_id; - try - { - cudaStreamCreate(&stream); - batched_large_msm(d_scalars, d_points, batch_size, count, d_out, true, stream); - cudaStreamSynchronize(stream); - return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { - printf("error %s", ex.what()); - return -1; - } -} -#endif -#endif diff --git a/icicle/curves/curve_template/msm.cu.tmpl b/icicle/curves/curve_template/msm.cu.tmpl new file mode 100644 index 00000000..42a14996 --- /dev/null +++ b/icicle/curves/curve_template/msm.cu.tmpl @@ -0,0 +1,216 @@ +#ifndef _${CURVE_NAME_U}_MSM +#define _${CURVE_NAME_U}_MSM +#include "../../appUtils/msm/msm.cu" +#include "curve_config.cuh" +#include +#include + +extern "C" int msm_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::projective_t* out, + ${CURVE_NAME_U}::affine_t points[], + ${CURVE_NAME_U}::scalar_t scalars[], + size_t count, + unsigned large_bucket_factor, + size_t device_id = 0, + cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + large_msm<${CURVE_NAME_U}::scalar_t, ${CURVE_NAME_U}::projective_t, ${CURVE_NAME_U}::affine_t>( + scalars, points, count, out, false, false, large_bucket_factor, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int msm_batch_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::projective_t* out, + ${CURVE_NAME_U}::affine_t points[], + ${CURVE_NAME_U}::scalar_t scalars[], + size_t batch_size, + size_t msm_size, + size_t device_id = 0, + cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + batched_large_msm<${CURVE_NAME_U}::scalar_t, ${CURVE_NAME_U}::projective_t, ${CURVE_NAME_U}::affine_t>( + scalars, points, batch_size, msm_size, out, false, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +/** + * Commit to a polynomial using the MSM. + * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or + * points. + * @param d_out Ouptut point to write the result to. + * @param d_scalars Scalars for the MSM. Must be on device. + * @param d_points Points for the MSM. Must be on device. + * @param count Length of `d_scalars` and `d_points` arrays (they should have equal length). + */ +extern "C" int commit_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::projective_t* d_out, + ${CURVE_NAME_U}::scalar_t* d_scalars, + ${CURVE_NAME_U}::affine_t* d_points, + size_t count, + unsigned large_bucket_factor, + size_t device_id = 0, + cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + large_msm(d_scalars, d_points, count, d_out, true, false, large_bucket_factor, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +/** + * Commit to a batch of polynomials using the MSM. + * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or + * points. + * @param d_out Ouptut point to write the results to. + * @param d_scalars Scalars for the MSMs of all polynomials. Must be on device. + * @param d_points Points for the MSMs. Must be on device. It is assumed that this set of bases is used for each MSM. + * @param count Length of `d_points` array, `d_scalar` has length `count` * `batch_size`. + * @param batch_size Size of the batch. + */ +extern "C" int commit_batch_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::projective_t* d_out, + ${CURVE_NAME_U}::scalar_t* d_scalars, + ${CURVE_NAME_U}::affine_t* d_points, + size_t count, + size_t batch_size, + size_t device_id = 0, + cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + batched_large_msm(d_scalars, d_points, batch_size, count, d_out, true, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +#if defined(G2_DEFINED) +extern "C" int msm_g2_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::g2_projective_t* out, + ${CURVE_NAME_U}::g2_affine_t points[], + ${CURVE_NAME_U}::scalar_t scalars[], + size_t count, + unsigned large_bucket_factor, + size_t device_id = 0, + cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + large_msm<${CURVE_NAME_U}::scalar_t, ${CURVE_NAME_U}::g2_projective_t, ${CURVE_NAME_U}::g2_affine_t>( + scalars, points, count, out, false, false, large_bucket_factor, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +extern "C" int msm_batch_g2_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::g2_projective_t* out, + ${CURVE_NAME_U}::g2_affine_t points[], + ${CURVE_NAME_U}::scalar_t scalars[], + size_t batch_size, + size_t msm_size, + size_t device_id = 0, + cudaStream_t stream = 0) +{ + try { + cudaStreamCreate(&stream); + batched_large_msm<${CURVE_NAME_U}::scalar_t, ${CURVE_NAME_U}::g2_projective_t, ${CURVE_NAME_U}::g2_affine_t>( + scalars, points, batch_size, msm_size, out, false, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +/** + * Commit to a polynomial using the MSM in G2 group. + * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or + * points. + * @param d_out Ouptut G2 point to write the result to. + * @param d_scalars Scalars for the MSM. Must be on device. + * @param d_points G2 affine points for the MSM. Must be on device. + * @param count Length of `d_scalars` and `d_points` arrays (they should have equal length). + */ +extern "C" int commit_g2_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::g2_projective_t* d_out, + ${CURVE_NAME_U}::scalar_t* d_scalars, + ${CURVE_NAME_U}::g2_affine_t* d_points, + size_t count, + unsigned large_bucket_factor, + size_t device_id = 0, + cudaStream_t stream = 0) +{ + // TODO: use device_id when working with multiple devices + (void)device_id; + try { + cudaStreamCreate(&stream); + large_msm(d_scalars, d_points, count, d_out, true, false, large_bucket_factor, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} + +/** + * Commit to a batch of polynomials using the MSM. + * Note: this function just calls the MSM, it doesn't convert between evaluation and coefficient form of scalars or + * points. + * @param d_out Ouptut G2 point to write the results to. + * @param d_scalars Scalars for the MSMs of all polynomials. Must be on device. + * @param d_points G2 affine points for the MSMs. Must be on device. It is assumed that this set of bases is used for + * each MSM. + * @param count Length of `d_points` array, `d_scalar` has length `count` * `batch_size`. + * @param batch_size Size of the batch. + */ +extern "C" int commit_batch_g2_cuda_${CURVE_NAME_L}( + ${CURVE_NAME_U}::g2_projective_t* d_out, + ${CURVE_NAME_U}::scalar_t* d_scalars, + ${CURVE_NAME_U}::g2_affine_t* d_points, + size_t count, + size_t batch_size, + size_t device_id = 0, + cudaStream_t stream = 0) +{ + // TODO: use device_id when working with multiple devices + (void)device_id; + try { + cudaStreamCreate(&stream); + batched_large_msm(d_scalars, d_points, batch_size, count, d_out, true, stream); + cudaStreamSynchronize(stream); + return CUDA_SUCCESS; + } catch (const std::runtime_error& ex) { + printf("error %s", ex.what()); + return -1; + } +} +#endif +#endif diff --git a/icicle/curves/curve_template/params.cuh b/icicle/curves/curve_template/params.cuh.tmpl similarity index 99% rename from icicle/curves/curve_template/params.cuh rename to icicle/curves/curve_template/params.cuh.tmpl index 1543f655..229f8de8 100644 --- a/icicle/curves/curve_template/params.cuh +++ b/icicle/curves/curve_template/params.cuh.tmpl @@ -6,7 +6,7 @@ namespace PARAMS_${curve_name_U} { static constexpr unsigned limbs_count = ${fp_num_limbs}; static constexpr unsigned omegas_count = ${num_omegas}; static constexpr unsigned modulus_bit_count = ${fp_modulus_bit_count}; - + static constexpr storage modulus = {${fp_modulus}}; static constexpr storage modulus_2 = {${fp_modulus_2}}; static constexpr storage modulus_4 = {${fp_modulus_4}}; diff --git a/icicle/curves/curve_template/projective.cu b/icicle/curves/curve_template/projective.cu deleted file mode 100644 index 159846e4..00000000 --- a/icicle/curves/curve_template/projective.cu +++ /dev/null @@ -1,70 +0,0 @@ -#include -#include "curve_config.cuh" -#include "../../primitives/projective.cuh" - -extern "C" ${CURVE_NAME_U}::projective_t random_projective_${CURVE_NAME_L}() -{ - return ${CURVE_NAME_U}::projective_t::rand_host(); -} - -extern "C" ${CURVE_NAME_U}::projective_t projective_zero_${CURVE_NAME_L}() -{ - return ${CURVE_NAME_U}::projective_t::zero(); -} - -extern "C" bool projective_is_on_curve_${CURVE_NAME_L}(${CURVE_NAME_U}::projective_t *point1) -{ - return ${CURVE_NAME_U}::projective_t::is_on_curve(*point1); -} - -extern "C" ${CURVE_NAME_U}::affine_t projective_to_affine_${CURVE_NAME_L}(${CURVE_NAME_U}::projective_t *point1) -{ - return ${CURVE_NAME_U}::projective_t::to_affine(*point1); -} - -extern "C" ${CURVE_NAME_U}::projective_t projective_from_affine_${CURVE_NAME_L}(${CURVE_NAME_U}::affine_t *point1) -{ - return ${CURVE_NAME_U}::projective_t::from_affine(*point1); -} - -extern "C" ${CURVE_NAME_U}::scalar_field_t random_scalar_${CURVE_NAME_L}() -{ - return ${CURVE_NAME_U}::scalar_field_t::rand_host(); -} - -extern "C" bool eq_${CURVE_NAME_L}(${CURVE_NAME_U}::projective_t *point1, ${CURVE_NAME_U}::projective_t *point2) -{ - return (*point1 == *point2) && - !((point1->x == ${CURVE_NAME_U}::point_field_t::zero()) && (point1->y == ${CURVE_NAME_U}::point_field_t::zero()) && (point1->z == ${CURVE_NAME_U}::point_field_t::zero())) && - !((point2->x == ${CURVE_NAME_U}::point_field_t::zero()) && (point2->y == ${CURVE_NAME_U}::point_field_t::zero()) && (point2->z == ${CURVE_NAME_U}::point_field_t::zero())); -} - -#if defined(G2_DEFINED) -extern "C" bool eq_g2_${CURVE_NAME_L}(${CURVE_NAME_U}::g2_projective_t *point1, ${CURVE_NAME_U}::g2_projective_t *point2) -{ - return (*point1 == *point2) && - !((point1->x == ${CURVE_NAME_U}::g2_point_field_t::zero()) && (point1->y == ${CURVE_NAME_U}::g2_point_field_t::zero()) && (point1->z == ${CURVE_NAME_U}::g2_point_field_t::zero())) && - !((point2->x == ${CURVE_NAME_U}::g2_point_field_t::zero()) && (point2->y == ${CURVE_NAME_U}::g2_point_field_t::zero()) && (point2->z == ${CURVE_NAME_U}::g2_point_field_t::zero())); -} - -extern "C" ${CURVE_NAME_U}::g2_projective_t random_g2_projective_${CURVE_NAME_L}() -{ - return ${CURVE_NAME_U}::g2_projective_t::rand_host(); -} - -extern "C" ${CURVE_NAME_U}::g2_affine_t g2_projective_to_affine_${CURVE_NAME_L}(${CURVE_NAME_U}::g2_projective_t *point1) -{ - return ${CURVE_NAME_U}::g2_projective_t::to_affine(*point1); -} - -extern "C" ${CURVE_NAME_U}::g2_projective_t g2_projective_from_affine_${CURVE_NAME_L}(${CURVE_NAME_U}::g2_affine_t *point1) -{ - return ${CURVE_NAME_U}::g2_projective_t::from_affine(*point1); -} - -extern "C" bool g2_projective_is_on_curve_${CURVE_NAME_L}(${CURVE_NAME_U}::g2_projective_t *point1) -{ - return ${CURVE_NAME_U}::g2_projective_t::is_on_curve(*point1); -} - -#endif diff --git a/icicle/curves/curve_template/projective.cu.tmpl b/icicle/curves/curve_template/projective.cu.tmpl new file mode 100644 index 00000000..0d0c16e8 --- /dev/null +++ b/icicle/curves/curve_template/projective.cu.tmpl @@ -0,0 +1,62 @@ +#include "../../primitives/projective.cuh" +#include "curve_config.cuh" +#include + +extern "C" ${CURVE_NAME_U}::projective_t random_projective_${CURVE_NAME_L}() { return ${CURVE_NAME_U}::projective_t::rand_host(); } + +extern "C" ${CURVE_NAME_U}::projective_t projective_zero_${CURVE_NAME_L}() { return ${CURVE_NAME_U}::projective_t::zero(); } + +extern "C" bool projective_is_on_curve_${CURVE_NAME_L}(${CURVE_NAME_U}::projective_t* point1) +{ + return ${CURVE_NAME_U}::projective_t::is_on_curve(*point1); +} + +extern "C" ${CURVE_NAME_U}::affine_t projective_to_affine_${CURVE_NAME_L}(${CURVE_NAME_U}::projective_t* point1) +{ + return ${CURVE_NAME_U}::projective_t::to_affine(*point1); +} + +extern "C" ${CURVE_NAME_U}::projective_t projective_from_affine_${CURVE_NAME_L}(${CURVE_NAME_U}::affine_t* point1) +{ + return ${CURVE_NAME_U}::projective_t::from_affine(*point1); +} + +extern "C" ${CURVE_NAME_U}::scalar_field_t random_scalar_${CURVE_NAME_L}() { return ${CURVE_NAME_U}::scalar_field_t::rand_host(); } + +extern "C" bool eq_${CURVE_NAME_L}(${CURVE_NAME_U}::projective_t* point1, ${CURVE_NAME_U}::projective_t* point2) +{ + return (*point1 == *point2) && + !((point1->x == ${CURVE_NAME_U}::point_field_t::zero()) && (point1->y == ${CURVE_NAME_U}::point_field_t::zero()) && + (point1->z == ${CURVE_NAME_U}::point_field_t::zero())) && + !((point2->x == ${CURVE_NAME_U}::point_field_t::zero()) && (point2->y == ${CURVE_NAME_U}::point_field_t::zero()) && + (point2->z == ${CURVE_NAME_U}::point_field_t::zero())); +} + +#if defined(G2_DEFINED) +extern "C" bool eq_g2_${CURVE_NAME_L}(${CURVE_NAME_U}::g2_projective_t* point1, ${CURVE_NAME_U}::g2_projective_t* point2) +{ + return (*point1 == *point2) && + !((point1->x == ${CURVE_NAME_U}::g2_point_field_t::zero()) && (point1->y == ${CURVE_NAME_U}::g2_point_field_t::zero()) && + (point1->z == ${CURVE_NAME_U}::g2_point_field_t::zero())) && + !((point2->x == ${CURVE_NAME_U}::g2_point_field_t::zero()) && (point2->y == ${CURVE_NAME_U}::g2_point_field_t::zero()) && + (point2->z == ${CURVE_NAME_U}::g2_point_field_t::zero())); +} + +extern "C" ${CURVE_NAME_U}::g2_projective_t random_g2_projective_${CURVE_NAME_L}() { return ${CURVE_NAME_U}::g2_projective_t::rand_host(); } + +extern "C" ${CURVE_NAME_U}::g2_affine_t g2_projective_to_affine_${CURVE_NAME_L}(${CURVE_NAME_U}::g2_projective_t* point1) +{ + return ${CURVE_NAME_U}::g2_projective_t::to_affine(*point1); +} + +extern "C" ${CURVE_NAME_U}::g2_projective_t g2_projective_from_affine_${CURVE_NAME_L}(${CURVE_NAME_U}::g2_affine_t* point1) +{ + return ${CURVE_NAME_U}::g2_projective_t::from_affine(*point1); +} + +extern "C" bool g2_projective_is_on_curve_${CURVE_NAME_L}(${CURVE_NAME_U}::g2_projective_t* point1) +{ + return ${CURVE_NAME_U}::g2_projective_t::is_on_curve(*point1); +} + +#endif diff --git a/icicle/curves/curve_template/supported_operations.cu b/icicle/curves/curve_template/supported_operations.cu.tmpl similarity index 100% rename from icicle/curves/curve_template/supported_operations.cu rename to icicle/curves/curve_template/supported_operations.cu.tmpl index 0cc19d66..3a9148f4 100644 --- a/icicle/curves/curve_template/supported_operations.cu +++ b/icicle/curves/curve_template/supported_operations.cu.tmpl @@ -1,4 +1,4 @@ -#include "projective.cu" #include "lde.cu" #include "msm.cu" +#include "projective.cu" #include "ve_mod_mult.cu" \ No newline at end of file diff --git a/icicle/curves/curve_template/ve_mod_mult.cu b/icicle/curves/curve_template/ve_mod_mult.cu.tmpl similarity index 52% rename from icicle/curves/curve_template/ve_mod_mult.cu rename to icicle/curves/curve_template/ve_mod_mult.cu.tmpl index 0cb26b95..b09087e9 100644 --- a/icicle/curves/curve_template/ve_mod_mult.cu +++ b/icicle/curves/curve_template/ve_mod_mult.cu.tmpl @@ -1,88 +1,70 @@ #ifndef _${CURVE_NAME_U}_VEC_MULT #define _${CURVE_NAME_U}_VEC_MULT -#include -#include -#include "../../primitives/field.cuh" -#include "../../utils/storage.cuh" -#include "../../primitives/projective.cuh" -#include "curve_config.cuh" #include "../../appUtils/vector_manipulation/ve_mod_mult.cuh" +#include "../../primitives/field.cuh" +#include "../../primitives/projective.cuh" +#include "../../utils/storage.cuh" +#include "curve_config.cuh" +#include +#include - -extern "C" int32_t vec_mod_mult_point_${CURVE_NAME_L}(${CURVE_NAME_U}::projective_t *inout, - ${CURVE_NAME_U}::scalar_t *scalar_vec, - size_t n_elments, - size_t device_id, - cudaStream_t stream = 0) +extern "C" int32_t vec_mod_mult_point_${CURVE_NAME_L}( + ${CURVE_NAME_U}::projective_t* inout, ${CURVE_NAME_U}::scalar_t* scalar_vec, size_t n_elments, size_t device_id, cudaStream_t stream = 0) { // TODO: use device_id when working with multiple devices (void)device_id; - try - { + try { // TODO: device_id vector_mod_mult<${CURVE_NAME_U}::projective_t, ${CURVE_NAME_U}::scalar_t>(scalar_vec, inout, inout, n_elments, stream); return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { + } catch (const std::runtime_error& ex) { printf("error %s", ex.what()); // TODO: error code and message return -1; } } -extern "C" int32_t vec_mod_mult_scalar_${CURVE_NAME_L}(${CURVE_NAME_U}::scalar_t *inout, - ${CURVE_NAME_U}::scalar_t *scalar_vec, - size_t n_elments, - size_t device_id, - cudaStream_t stream = 0) +extern "C" int32_t vec_mod_mult_scalar_${CURVE_NAME_L}( + ${CURVE_NAME_U}::scalar_t* inout, ${CURVE_NAME_U}::scalar_t* scalar_vec, size_t n_elments, size_t device_id, cudaStream_t stream = 0) { // TODO: use device_id when working with multiple devices (void)device_id; - try - { + try { // TODO: device_id vector_mod_mult<${CURVE_NAME_U}::scalar_t, ${CURVE_NAME_U}::scalar_t>(scalar_vec, inout, inout, n_elments, stream); return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { + } catch (const std::runtime_error& ex) { printf("error %s", ex.what()); // TODO: error code and message return -1; } } extern "C" int32_t vec_mod_mult_device_scalar_${CURVE_NAME_L}( - ${CURVE_NAME_U}::scalar_t *inout, - ${CURVE_NAME_U}::scalar_t *scalar_vec, - size_t n_elements, - size_t device_id -) { + ${CURVE_NAME_U}::scalar_t* inout, ${CURVE_NAME_U}::scalar_t* scalar_vec, size_t n_elements, size_t device_id) +{ try { vector_mod_mult_device<${CURVE_NAME_U}::scalar_t, ${CURVE_NAME_U}::scalar_t>(scalar_vec, inout, inout, n_elements); return CUDA_SUCCESS; - } catch (const std::runtime_error &ex) { + } catch (const std::runtime_error& ex) { printf("error %s", ex.what()); // TODO: error code and message return -1; } } -extern "C" int32_t matrix_vec_mod_mult_${CURVE_NAME_L}(${CURVE_NAME_U}::scalar_t *matrix_flattened, - ${CURVE_NAME_U}::scalar_t *input, - ${CURVE_NAME_U}::scalar_t *output, - size_t n_elments, - size_t device_id, - cudaStream_t stream = 0) +extern "C" int32_t matrix_vec_mod_mult_${CURVE_NAME_L}( + ${CURVE_NAME_U}::scalar_t* matrix_flattened, + ${CURVE_NAME_U}::scalar_t* input, + ${CURVE_NAME_U}::scalar_t* output, + size_t n_elments, + size_t device_id, + cudaStream_t stream = 0) { // TODO: use device_id when working with multiple devices (void)device_id; - try - { + try { // TODO: device_id matrix_mod_mult<${CURVE_NAME_U}::scalar_t>(matrix_flattened, input, output, n_elments, stream); return CUDA_SUCCESS; - } - catch (const std::runtime_error &ex) - { + } catch (const std::runtime_error& ex) { printf("error %s", ex.what()); // TODO: error code and message return -1; } diff --git a/icicle/curves/index.cu b/icicle/curves/index.cu index 4f76d607..446a4246 100644 --- a/icicle/curves/index.cu +++ b/icicle/curves/index.cu @@ -1,3 +1,3 @@ -#include "bls12_381/supported_operations.cu" #include "bls12_377/supported_operations.cu" +#include "bls12_381/supported_operations.cu" #include "bn254/supported_operations.cu" \ No newline at end of file diff --git a/icicle/primitives/affine.cuh b/icicle/primitives/affine.cuh index d9ef9968..1ca60210 100644 --- a/icicle/primitives/affine.cuh +++ b/icicle/primitives/affine.cuh @@ -3,21 +3,22 @@ #include "field.cuh" template -class Affine { - public: - FF x; - FF y; +class Affine +{ +public: + FF x; + FF y; - static HOST_DEVICE_INLINE Affine neg(const Affine &point) { - return {point.x, FF::neg(point.y)}; - } + static HOST_DEVICE_INLINE Affine neg(const Affine& point) { return {point.x, FF::neg(point.y)}; } - friend HOST_DEVICE_INLINE bool operator==(const Affine& xs, const Affine& ys) { - return (xs.x == ys.x) && (xs.y == ys.y); - } + friend HOST_DEVICE_INLINE bool operator==(const Affine& xs, const Affine& ys) + { + return (xs.x == ys.x) && (xs.y == ys.y); + } - friend HOST_INLINE std::ostream& operator<<(std::ostream& os, const Affine& point) { - os << "x: " << point.x << "; y: " << point.y; - return os; - } + friend HOST_INLINE std::ostream& operator<<(std::ostream& os, const Affine& point) + { + os << "x: " << point.x << "; y: " << point.y; + return os; + } }; diff --git a/icicle/primitives/extension_field.cuh b/icicle/primitives/extension_field.cuh index e5c14327..3189469a 100644 --- a/icicle/primitives/extension_field.cuh +++ b/icicle/primitives/extension_field.cuh @@ -2,143 +2,157 @@ #include "field.cuh" -#define HOST_INLINE __host__ __forceinline__ -#define DEVICE_INLINE __device__ __forceinline__ +#define HOST_INLINE __host__ __forceinline__ +#define DEVICE_INLINE __device__ __forceinline__ #define HOST_DEVICE_INLINE __host__ __device__ __forceinline__ -template class ExtensionField { - private: - typedef typename Field::Wide FWide; +template +class ExtensionField +{ +private: + typedef typename Field::Wide FWide; - struct ExtensionWide { - FWide real; - FWide imaginary; - - friend HOST_DEVICE_INLINE ExtensionWide operator+(ExtensionWide xs, const ExtensionWide& ys) { - return ExtensionWide { xs.real + ys.real, xs.imaginary + ys.imaginary }; - } - - friend HOST_DEVICE_INLINE ExtensionWide operator-(ExtensionWide xs, const ExtensionWide& ys) { - return ExtensionWide { xs.real - ys.real, xs.imaginary - ys.imaginary }; - } - }; + struct ExtensionWide { + FWide real; + FWide imaginary; - public: - typedef Field FF; - static constexpr unsigned TLC = 2 * CONFIG::limbs_count; - - FF real; - FF imaginary; - - static constexpr HOST_DEVICE_INLINE ExtensionField zero() { - return ExtensionField { FF::zero(), FF::zero() }; + friend HOST_DEVICE_INLINE ExtensionWide operator+(ExtensionWide xs, const ExtensionWide& ys) + { + return ExtensionWide{xs.real + ys.real, xs.imaginary + ys.imaginary}; } - static constexpr HOST_DEVICE_INLINE ExtensionField one() { - return ExtensionField { FF::one(), FF::zero() }; + friend HOST_DEVICE_INLINE ExtensionWide operator-(ExtensionWide xs, const ExtensionWide& ys) + { + return ExtensionWide{xs.real - ys.real, xs.imaginary - ys.imaginary}; } + }; - static constexpr HOST_DEVICE_INLINE ExtensionField generator_x() { - return ExtensionField { FF { CONFIG::g2_gen_x_re }, FF { CONFIG::g2_gen_x_im } }; - } +public: + typedef Field FF; + static constexpr unsigned TLC = 2 * CONFIG::limbs_count; - static constexpr HOST_DEVICE_INLINE ExtensionField generator_y() { - return ExtensionField { FF { CONFIG::g2_gen_y_re }, FF { CONFIG::g2_gen_y_im } }; - } + FF real; + FF imaginary; - static HOST_INLINE ExtensionField rand_host() { - return ExtensionField { FF::rand_host(), FF::rand_host() }; - } + static constexpr HOST_DEVICE_INLINE ExtensionField zero() { return ExtensionField{FF::zero(), FF::zero()}; } - template static constexpr HOST_DEVICE_INLINE ExtensionField sub_modulus(const ExtensionField &xs) { - return ExtensionField { FF::sub_modulus(&xs.real), FF::sub_modulus(&xs.imaginary) }; - } + static constexpr HOST_DEVICE_INLINE ExtensionField one() { return ExtensionField{FF::one(), FF::zero()}; } - friend std::ostream& operator<<(std::ostream& os, const ExtensionField& xs) { - os << "{ Real: " << xs.real << " }; { Imaginary: " << xs.imaginary << " }"; - return os; - } + static constexpr HOST_DEVICE_INLINE ExtensionField generator_x() + { + return ExtensionField{FF{CONFIG::g2_gen_x_re}, FF{CONFIG::g2_gen_x_im}}; + } - friend HOST_DEVICE_INLINE ExtensionField operator+(ExtensionField xs, const ExtensionField& ys) { - return ExtensionField { xs.real + ys.real, xs.imaginary + ys.imaginary }; - } + static constexpr HOST_DEVICE_INLINE ExtensionField generator_y() + { + return ExtensionField{FF{CONFIG::g2_gen_y_re}, FF{CONFIG::g2_gen_y_im}}; + } - friend HOST_DEVICE_INLINE ExtensionField operator-(ExtensionField xs, const ExtensionField& ys) { - return ExtensionField { xs.real - ys.real, xs.imaginary - ys.imaginary }; - } + static HOST_INLINE ExtensionField rand_host() { return ExtensionField{FF::rand_host(), FF::rand_host()}; } - template - static constexpr HOST_DEVICE_INLINE ExtensionWide mul_wide(const ExtensionField& xs, const ExtensionField& ys) { - FWide real_prod = FF::mul_wide(xs.real, ys.real); - FWide imaginary_prod = FF::mul_wide(xs.imaginary, ys.imaginary); - FWide prod_of_sums = FF::mul_wide(xs.real + xs.imaginary, ys.real + ys.imaginary); - FWide i_sq_times_im = FF::template mul_unsigned(imaginary_prod); - i_sq_times_im = CONFIG::i_squared_is_negative ? FWide::neg(i_sq_times_im) : i_sq_times_im; - return ExtensionWide { real_prod + i_sq_times_im, prod_of_sums - real_prod - imaginary_prod }; - } + template + static constexpr HOST_DEVICE_INLINE ExtensionField sub_modulus(const ExtensionField& xs) + { + return ExtensionField{FF::sub_modulus(&xs.real), FF::sub_modulus(&xs.imaginary)}; + } - template - static constexpr HOST_DEVICE_INLINE ExtensionField reduce(const ExtensionWide& xs) { - return ExtensionField { FF::template reduce(xs.real), FF::template reduce(xs.imaginary) }; - } + friend std::ostream& operator<<(std::ostream& os, const ExtensionField& xs) + { + os << "{ Real: " << xs.real << " }; { Imaginary: " << xs.imaginary << " }"; + return os; + } - friend HOST_DEVICE_INLINE ExtensionField operator*(const ExtensionField& xs, const ExtensionField& ys) { - ExtensionWide xy = mul_wide(xs, ys); - return reduce(xy); - } + friend HOST_DEVICE_INLINE ExtensionField operator+(ExtensionField xs, const ExtensionField& ys) + { + return ExtensionField{xs.real + ys.real, xs.imaginary + ys.imaginary}; + } - friend HOST_DEVICE_INLINE bool operator==(const ExtensionField& xs, const ExtensionField& ys) { - return (xs.real == ys.real) && (xs.imaginary == ys.imaginary); - } + friend HOST_DEVICE_INLINE ExtensionField operator-(ExtensionField xs, const ExtensionField& ys) + { + return ExtensionField{xs.real - ys.real, xs.imaginary - ys.imaginary}; + } - friend HOST_DEVICE_INLINE bool operator!=(const ExtensionField& xs, const ExtensionField& ys) { - return !(xs == ys); - } + template + static constexpr HOST_DEVICE_INLINE ExtensionWide mul_wide(const ExtensionField& xs, const ExtensionField& ys) + { + FWide real_prod = FF::mul_wide(xs.real, ys.real); + FWide imaginary_prod = FF::mul_wide(xs.imaginary, ys.imaginary); + FWide prod_of_sums = FF::mul_wide(xs.real + xs.imaginary, ys.real + ys.imaginary); + FWide i_sq_times_im = FF::template mul_unsigned(imaginary_prod); + i_sq_times_im = CONFIG::i_squared_is_negative ? FWide::neg(i_sq_times_im) : i_sq_times_im; + return ExtensionWide{real_prod + i_sq_times_im, prod_of_sums - real_prod - imaginary_prod}; + } - template - static HOST_DEVICE_INLINE ExtensionField mul_const(const ExtensionField &xs) { - static constexpr FF mul_real = multiplier.real; - static constexpr FF mul_imaginary = multiplier.imaginary; - const FF xs_real = xs.real; - const FF xs_imaginary = xs.imaginary; - FF real_prod = FF::template mul_const(xs_real); - FF imaginary_prod = FF::template mul_const(xs_imaginary); - FF re_im = FF::template mul_const(xs_imaginary); - FF im_re = FF::template mul_const(xs_real); - FF i_sq_times_im = FF::template mul_unsigned(imaginary_prod); - i_sq_times_im = CONFIG::i_squared_is_negative ? FF::neg(i_sq_times_im) : i_sq_times_im; - return ExtensionField { real_prod + i_sq_times_im, re_im + im_re }; - } + template + static constexpr HOST_DEVICE_INLINE ExtensionField reduce(const ExtensionWide& xs) + { + return ExtensionField{ + FF::template reduce(xs.real), FF::template reduce(xs.imaginary)}; + } - template - static constexpr HOST_DEVICE_INLINE ExtensionField mul_unsigned(const ExtensionField &xs) { - return { FF::template mul_unsigned(xs.real), FF::template mul_unsigned(xs.imaginary) }; - } + friend HOST_DEVICE_INLINE ExtensionField operator*(const ExtensionField& xs, const ExtensionField& ys) + { + ExtensionWide xy = mul_wide(xs, ys); + return reduce(xy); + } - template - static constexpr HOST_DEVICE_INLINE ExtensionWide sqr_wide(const ExtensionField& xs) { - // TODO: change to a more efficient squaring - return mul_wide(xs, xs); - } + friend HOST_DEVICE_INLINE bool operator==(const ExtensionField& xs, const ExtensionField& ys) + { + return (xs.real == ys.real) && (xs.imaginary == ys.imaginary); + } - template - static constexpr HOST_DEVICE_INLINE ExtensionField sqr(const ExtensionField& xs) { - // TODO: change to a more efficient squaring - return xs * xs; - } + friend HOST_DEVICE_INLINE bool operator!=(const ExtensionField& xs, const ExtensionField& ys) { return !(xs == ys); } - template - static constexpr HOST_DEVICE_INLINE ExtensionField neg(const ExtensionField& xs) { - return ExtensionField { FF::neg(xs.real), FF::neg(xs.imaginary) }; - } + template + static HOST_DEVICE_INLINE ExtensionField mul_const(const ExtensionField& xs) + { + static constexpr FF mul_real = multiplier.real; + static constexpr FF mul_imaginary = multiplier.imaginary; + const FF xs_real = xs.real; + const FF xs_imaginary = xs.imaginary; + FF real_prod = FF::template mul_const(xs_real); + FF imaginary_prod = FF::template mul_const(xs_imaginary); + FF re_im = FF::template mul_const(xs_imaginary); + FF im_re = FF::template mul_const(xs_real); + FF i_sq_times_im = FF::template mul_unsigned(imaginary_prod); + i_sq_times_im = CONFIG::i_squared_is_negative ? FF::neg(i_sq_times_im) : i_sq_times_im; + return ExtensionField{real_prod + i_sq_times_im, re_im + im_re}; + } - // inverse assumes that xs is nonzero - static constexpr HOST_DEVICE_INLINE ExtensionField inverse(const ExtensionField& xs) { - ExtensionField xs_conjugate = { xs.real, FF::neg(xs.imaginary) }; - FF i_sq_times_im = FF::template mul_unsigned(FF::sqr(xs.imaginary)); - i_sq_times_im = CONFIG::i_squared_is_negative ? FF::neg(i_sq_times_im) : i_sq_times_im; - // TODO: wide here - FF xs_norm_squared = FF::sqr(xs.real) - i_sq_times_im; - return xs_conjugate * ExtensionField { FF::inverse(xs_norm_squared), FF::zero() }; - } + template + static constexpr HOST_DEVICE_INLINE ExtensionField mul_unsigned(const ExtensionField& xs) + { + return {FF::template mul_unsigned(xs.real), FF::template mul_unsigned(xs.imaginary)}; + } + + template + static constexpr HOST_DEVICE_INLINE ExtensionWide sqr_wide(const ExtensionField& xs) + { + // TODO: change to a more efficient squaring + return mul_wide(xs, xs); + } + + template + static constexpr HOST_DEVICE_INLINE ExtensionField sqr(const ExtensionField& xs) + { + // TODO: change to a more efficient squaring + return xs * xs; + } + + template + static constexpr HOST_DEVICE_INLINE ExtensionField neg(const ExtensionField& xs) + { + return ExtensionField{FF::neg(xs.real), FF::neg(xs.imaginary)}; + } + + // inverse assumes that xs is nonzero + static constexpr HOST_DEVICE_INLINE ExtensionField inverse(const ExtensionField& xs) + { + ExtensionField xs_conjugate = {xs.real, FF::neg(xs.imaginary)}; + FF i_sq_times_im = FF::template mul_unsigned(FF::sqr(xs.imaginary)); + i_sq_times_im = CONFIG::i_squared_is_negative ? FF::neg(i_sq_times_im) : i_sq_times_im; + // TODO: wide here + FF xs_norm_squared = FF::sqr(xs.real) - i_sq_times_im; + return xs_conjugate * ExtensionField{FF::inverse(xs_norm_squared), FF::zero()}; + } }; diff --git a/icicle/primitives/field.cuh b/icicle/primitives/field.cuh index 11186e89..4cacc117 100644 --- a/icicle/primitives/field.cuh +++ b/icicle/primitives/field.cuh @@ -1,927 +1,942 @@ #pragma once -#include "../utils/storage.cuh" -#include "../utils/ptx.cuh" #include "../utils/host_math.cuh" -#include -#include +#include "../utils/ptx.cuh" +#include "../utils/storage.cuh" #include -#include +#include +#include #include +#include -#define HOST_INLINE __host__ __forceinline__ -#define DEVICE_INLINE __device__ __forceinline__ +#define HOST_INLINE __host__ __forceinline__ +#define DEVICE_INLINE __device__ __forceinline__ #define HOST_DEVICE_INLINE __host__ __device__ __forceinline__ -template class Field { - public: - static constexpr unsigned TLC = CONFIG::limbs_count; - static constexpr unsigned NBITS = CONFIG::modulus_bit_count; +template +class Field +{ +public: + static constexpr unsigned TLC = CONFIG::limbs_count; + static constexpr unsigned NBITS = CONFIG::modulus_bit_count; - static constexpr HOST_DEVICE_INLINE Field zero() { - return Field { CONFIG::zero }; + static constexpr HOST_DEVICE_INLINE Field zero() { return Field{CONFIG::zero}; } + + static constexpr HOST_DEVICE_INLINE Field one() { return Field{CONFIG::one}; } + + static constexpr HOST_DEVICE_INLINE Field from(uint32_t value) + { + storage scalar; + scalar.limbs[0] = value; + for (int i = 1; i < TLC; i++) { + scalar.limbs[i] = 0; } + return Field{scalar}; + } - static constexpr HOST_DEVICE_INLINE Field one() { - return Field { CONFIG::one }; - } + static constexpr HOST_DEVICE_INLINE Field generator_x() { return Field{CONFIG::g1_gen_x}; } - static constexpr HOST_DEVICE_INLINE Field from(uint32_t value) { - storage scalar; - scalar.limbs[0] = value; - for (int i = 1; i < TLC; i++) { - scalar.limbs[i] = 0; - } - return Field { scalar }; - } + static constexpr HOST_DEVICE_INLINE Field generator_y() { return Field{CONFIG::g1_gen_y}; } - static constexpr HOST_DEVICE_INLINE Field generator_x() { - return Field { CONFIG::g1_gen_x }; - } + static HOST_INLINE Field omega(uint32_t logn) + { + if (logn == 0) { return Field{CONFIG::one}; } - static constexpr HOST_DEVICE_INLINE Field generator_y() { - return Field { CONFIG::g1_gen_y }; - } + if (logn > CONFIG::omegas_count) { throw std::invalid_argument("Field: Invalid omega index"); } - static HOST_INLINE Field omega(uint32_t logn) { - if (logn == 0) { - return Field { CONFIG::one }; - } + storage_array const omega = CONFIG::omega; + return Field{omega.storages[logn - 1]}; + } - if (logn > CONFIG::omegas_count) { - throw std::invalid_argument( "Field: Invalid omega index" ); - } + static HOST_INLINE Field omega_inv(uint32_t logn) + { + if (logn == 0) { return Field{CONFIG::one}; } - storage_array const omega = CONFIG::omega; - return Field { omega.storages[logn-1] }; - } + if (logn > CONFIG::omegas_count) { throw std::invalid_argument("Field: Invalid omega_inv index"); } - static HOST_INLINE Field omega_inv(uint32_t logn) { - if (logn == 0) { - return Field { CONFIG::one }; - } + storage_array const omega_inv = CONFIG::omega_inv; + return Field{omega_inv.storages[logn - 1]}; + } - if (logn > CONFIG::omegas_count) { - throw std::invalid_argument( "Field: Invalid omega_inv index" ); - } + static HOST_INLINE Field inv_log_size(uint32_t logn) + { + if (logn == 0) { return Field{CONFIG::one}; } - storage_array const omega_inv = CONFIG::omega_inv; - return Field { omega_inv.storages[logn-1] }; - } - - static HOST_INLINE Field inv_log_size(uint32_t logn) { - if (logn == 0) { - return Field { CONFIG::one }; - } + if (logn > CONFIG::omegas_count) { throw std::invalid_argument("Field: Invalid inv index"); } + storage_array const inv = CONFIG::inv; + return Field{inv.storages[logn - 1]}; + } - if (logn > CONFIG::omegas_count) { - throw std::invalid_argument( "Field: Invalid inv index" ); - } - storage_array const inv = CONFIG::inv; - return Field { inv.storages[logn-1] }; - } + static constexpr HOST_DEVICE_INLINE Field modulus() { return Field{CONFIG::modulus}; } - static constexpr HOST_DEVICE_INLINE Field modulus() { - return Field { CONFIG::modulus }; - } + static constexpr HOST_DEVICE_INLINE Field montgomery_r() { return Field{CONFIG::montgomery_r}; } - static constexpr HOST_DEVICE_INLINE Field montgomery_r() { - return Field { CONFIG::montgomery_r }; - } - - static constexpr HOST_DEVICE_INLINE Field montgomery_r_inv() { - return Field { CONFIG::montgomery_r_inv }; - } + static constexpr HOST_DEVICE_INLINE Field montgomery_r_inv() { return Field{CONFIG::montgomery_r_inv}; } // private: - typedef storage ff_storage; - typedef storage<2*TLC> ff_wide_storage; + typedef storage ff_storage; + typedef storage<2 * TLC> ff_wide_storage; - static constexpr unsigned slack_bits = 32 * TLC - NBITS; + static constexpr unsigned slack_bits = 32 * TLC - NBITS; - struct Wide { - ff_wide_storage limbs_storage; - - static constexpr Field HOST_DEVICE_INLINE get_lower(const Wide &xs) { - Field out{}; - #ifdef __CUDA_ARCH__ - #pragma unroll - #endif - for (unsigned i = 0; i < TLC; i++) - out.limbs_storage.limbs[i] = xs.limbs_storage.limbs[i]; - return out; - } + struct Wide { + ff_wide_storage limbs_storage; - static constexpr Field HOST_DEVICE_INLINE get_higher_with_slack(const Wide &xs) { - Field out{}; - #ifdef __CUDA_ARCH__ - #pragma unroll - #endif - for (unsigned i = 0; i < TLC; i++) { - #ifdef __CUDA_ARCH__ - out.limbs_storage.limbs[i] = __funnelshift_lc(xs.limbs_storage.limbs[i + TLC - 1], xs.limbs_storage.limbs[i + TLC], slack_bits); - #else - out.limbs_storage.limbs[i] = (xs.limbs_storage.limbs[i + TLC] << slack_bits) + (xs.limbs_storage.limbs[i + TLC - 1] >> (32 - slack_bits)); - #endif - } - return out; - } - - template static constexpr HOST_DEVICE_INLINE Wide sub_modulus_squared(const Wide &xs) { - if (REDUCTION_SIZE == 0) - return xs; - const ff_wide_storage modulus = get_modulus_squared(); - Wide rs = {}; - return sub_limbs(xs.limbs_storage, modulus, rs.limbs_storage) ? xs : rs; - } - - template - static constexpr HOST_DEVICE_INLINE Wide neg(const Wide& xs) { - const ff_wide_storage modulus = get_modulus_squared(); - Wide rs = {}; - sub_limbs(modulus, xs.limbs_storage, rs.limbs_storage); - return rs; - } - - friend HOST_DEVICE_INLINE Wide operator+(Wide xs, const Wide& ys) { - Wide rs = {}; - add_limbs(xs.limbs_storage, ys.limbs_storage, rs.limbs_storage); - return sub_modulus_squared<1>(rs); - } - - friend HOST_DEVICE_INLINE Wide operator-(Wide xs, const Wide& ys) { - Wide rs = {}; - uint32_t carry = sub_limbs(xs.limbs_storage, ys.limbs_storage, rs.limbs_storage); - if (carry == 0) - return rs; - const ff_wide_storage modulus = get_modulus_squared<1>(); - add_limbs(rs.limbs_storage, modulus, rs.limbs_storage); - return rs; - } - }; - - // return modulus - template static constexpr HOST_DEVICE_INLINE ff_storage get_modulus() { - switch (MULTIPLIER) { - case 1: - return CONFIG::modulus; - case 2: - return CONFIG::modulus_2; - case 4: - return CONFIG::modulus_4; - default: - return {}; - } - } - - template static constexpr HOST_DEVICE_INLINE ff_wide_storage modulus_wide() { - return CONFIG::modulus_wide; - } - - // return m - static constexpr HOST_DEVICE_INLINE ff_storage get_m() { - return CONFIG::m; - } - - // return modulus^2, helpful for ab +/- cd - template static constexpr HOST_DEVICE_INLINE ff_wide_storage get_modulus_squared() { - switch (MULTIPLIER) { - case 1: - return CONFIG::modulus_squared; - case 2: - return CONFIG::modulus_squared_2; - case 4: - return CONFIG::modulus_squared_4; - default: - return {}; - } - } - - // add or subtract limbs - template - static constexpr DEVICE_INLINE uint32_t add_sub_limbs_device(const ff_storage &xs, const ff_storage &ys, ff_storage &rs) { - const uint32_t *x = xs.limbs; - const uint32_t *y = ys.limbs; - uint32_t *r = rs.limbs; - r[0] = SUBTRACT ? ptx::sub_cc(x[0], y[0]) : ptx::add_cc(x[0], y[0]); - #ifdef __CUDA_ARCH__ - #pragma unroll - #endif - for (unsigned i = 1; i < (CARRY_OUT ? TLC : TLC - 1); i++) - r[i] = SUBTRACT ? ptx::subc_cc(x[i], y[i]) : ptx::addc_cc(x[i], y[i]); - if (!CARRY_OUT) { - r[TLC - 1] = SUBTRACT ? ptx::subc(x[TLC - 1], y[TLC - 1]) : ptx::addc(x[TLC - 1], y[TLC - 1]); - return 0; - } - return SUBTRACT ? ptx::subc(0, 0) : ptx::addc(0, 0); - } - - template - static constexpr DEVICE_INLINE uint32_t add_sub_limbs_device(const ff_wide_storage &xs, const ff_wide_storage &ys, ff_wide_storage &rs) { - const uint32_t *x = xs.limbs; - const uint32_t *y = ys.limbs; - uint32_t *r = rs.limbs; - r[0] = SUBTRACT ? ptx::sub_cc(x[0], y[0]) : ptx::add_cc(x[0], y[0]); - #ifdef __CUDA_ARCH__ - #pragma unroll - #endif - for (unsigned i = 1; i < (CARRY_OUT ? 2 * TLC : 2 * TLC - 1); i++) - r[i] = SUBTRACT ? ptx::subc_cc(x[i], y[i]) : ptx::addc_cc(x[i], y[i]); - if (!CARRY_OUT) { - r[2 * TLC - 1] = SUBTRACT ? ptx::subc(x[2 * TLC - 1], y[2 * TLC - 1]) : ptx::addc(x[2 * TLC - 1], y[2 * TLC - 1]); - return 0; - } - return SUBTRACT ? ptx::subc(0, 0) : ptx::addc(0, 0); - } - - template - static constexpr HOST_INLINE uint32_t add_sub_limbs_host(const ff_storage &xs, const ff_storage &ys, ff_storage &rs) { - const uint32_t *x = xs.limbs; - const uint32_t *y = ys.limbs; - uint32_t *r = rs.limbs; - uint32_t carry = 0; - host_math::carry_chain chain; + static constexpr Field HOST_DEVICE_INLINE get_lower(const Wide& xs) + { + Field out{}; +#ifdef __CUDA_ARCH__ +#pragma unroll +#endif for (unsigned i = 0; i < TLC; i++) - r[i] = SUBTRACT ? chain.sub(x[i], y[i], carry) : chain.add(x[i], y[i], carry); - return CARRY_OUT ? carry : 0; + out.limbs_storage.limbs[i] = xs.limbs_storage.limbs[i]; + return out; } - template - static constexpr HOST_INLINE uint32_t add_sub_limbs_host(const ff_wide_storage &xs, const ff_wide_storage &ys, ff_wide_storage &rs) { - const uint32_t *x = xs.limbs; - const uint32_t *y = ys.limbs; - uint32_t *r = rs.limbs; - uint32_t carry = 0; - host_math::carry_chain<2 * TLC, false, CARRY_OUT> chain; - for (unsigned i = 0; i < 2 * TLC; i++) - r[i] = SUBTRACT ? chain.sub(x[i], y[i], carry) : chain.add(x[i], y[i], carry); - return CARRY_OUT ? carry : 0; - } - - static constexpr HOST_INLINE uint32_t sub_limbs_partial_host(uint32_t* x, uint32_t* y, uint32_t* r, uint32_t num_limbs) { - uint32_t carry = 0; - host_math::carry_chain<2 * TLC, false, true> chain; - for (unsigned i = 0; i < num_limbs; i++) - r[i] = chain.sub(x[i], y[i], carry); - return carry; - } - - template static constexpr HOST_DEVICE_INLINE uint32_t add_limbs(const T &xs, const T &ys, T &rs) { - #ifdef __CUDA_ARCH__ - return add_sub_limbs_device(xs, ys, rs); - #else - return add_sub_limbs_host(xs, ys, rs); - #endif - } - - template static constexpr HOST_DEVICE_INLINE uint32_t sub_limbs(const T &xs, const T &ys, T &rs) { - #ifdef __CUDA_ARCH__ - return add_sub_limbs_device(xs, ys, rs); - #else - return add_sub_limbs_host(xs, ys, rs); - #endif - } - - static DEVICE_INLINE void mul_n(uint32_t *acc, const uint32_t *a, uint32_t bi, size_t n = TLC) { - #pragma unroll - for (size_t i = 0; i < n; i += 2) { - acc[i] = ptx::mul_lo(a[i], bi); - acc[i + 1] = ptx::mul_hi(a[i], bi); - } - } - - static DEVICE_INLINE void mul_n_msb(uint32_t *acc, const uint32_t *a, uint32_t bi, size_t n = TLC, size_t start_i = 0) { - #pragma unroll - for (size_t i = start_i; i < n; i += 2) { - acc[i] = ptx::mul_lo(a[i], bi); - acc[i + 1] = ptx::mul_hi(a[i], bi); - } - } - - static DEVICE_INLINE void cmad_n(uint32_t *acc, const uint32_t *a, uint32_t bi, size_t n = TLC) { - // multiply scalar by vector - // acc = acc + bi*A[::2] - acc[0] = ptx::mad_lo_cc(a[0], bi, acc[0]); - acc[1] = ptx::madc_hi_cc(a[0], bi, acc[1]); - #pragma unroll - for (size_t i = 2; i < n; i += 2) { - acc[i] = ptx::madc_lo_cc(a[i], bi, acc[i]); - acc[i + 1] = ptx::madc_hi_cc(a[i], bi, acc[i + 1]); - } - } - - static DEVICE_INLINE void cmad_n_msb(uint32_t *acc, const uint32_t *a, uint32_t bi, size_t n = TLC, size_t a_start_idx=0) { - // multiply scalar by vector - // acc = acc + bi*A[::2] - acc[a_start_idx] = ptx::mad_lo_cc(a[a_start_idx], bi, acc[a_start_idx]); - acc[a_start_idx + 1] = ptx::madc_hi_cc(a[a_start_idx], bi, acc[a_start_idx + 1]); - #pragma unroll - for (size_t i = a_start_idx + 2; i < n; i += 2) { - acc[i] = ptx::madc_lo_cc(a[i], bi, acc[i]); - acc[i + 1] = ptx::madc_hi_cc(a[i], bi, acc[i + 1]); - } - } - - static DEVICE_INLINE void mad_row(uint32_t *odd, uint32_t *even, const uint32_t *a, uint32_t bi, size_t n = TLC) { - // odd = odd + bi*A - // even = even + bi*A - cmad_n(odd, a + 1, bi, n - 2); - odd[n - 2] = ptx::madc_lo_cc(a[n - 1], bi, 0); - odd[n - 1] = ptx::madc_hi(a[n - 1], bi, 0); - cmad_n(even, a, bi, n); - odd[n - 1] = ptx::addc(odd[n - 1], 0); - } - - static DEVICE_INLINE void mad_row_msb(uint32_t *odd, uint32_t *even, const uint32_t *a, uint32_t bi, size_t n = TLC, size_t a_start_idx = 0) { - // odd = odd + bi*A - // even = even + bi*A - cmad_n_msb(odd, a + 1, bi, n - 2, a_start_idx - 1); - odd[n - 2] = ptx::madc_lo_cc(a[n - 1], bi, 0); - odd[n - 1] = ptx::madc_hi(a[n - 1], bi, 0); - cmad_n_msb(even, a, bi, n, a_start_idx); - odd[n - 1] = ptx::addc(odd[n - 1], 0); - } - - static DEVICE_INLINE void multiply_raw_device(const ff_storage &as, const ff_storage &bs, ff_wide_storage &rs) { - const uint32_t *a = as.limbs; - const uint32_t *b = bs.limbs; - uint32_t *even = rs.limbs; - __align__(8) uint32_t odd[2 * TLC - 2]; - mul_n(even, a, b[0]); - mul_n(odd, a + 1, b[0]); - mad_row(&even[2], &odd[0], a, b[1]); - size_t i; - #pragma unroll - for (i = 2; i < TLC - 1; i += 2) { - mad_row(&odd[i], &even[i], a, b[i]); - mad_row(&even[i + 2], &odd[i], a, b[i + 1]); - } - // merge |even| and |odd| - even[1] = ptx::add_cc(even[1], odd[0]); - for (i = 1; i < 2 * TLC - 2; i++) - even[i + 1] = ptx::addc_cc(even[i + 1], odd[i]); - even[i + 1] = ptx::addc(even[i + 1], 0); - } - - static DEVICE_INLINE void mult_no_carry(uint32_t a, uint32_t b, uint32_t *r) { - r[0] = ptx::mul_lo(a, b); - r[1] = ptx::mul_hi(a, b); - } - - static DEVICE_INLINE void ingo_multiply_raw_device(const ff_storage &as, const ff_storage &bs, ff_wide_storage &rs) { - const uint32_t *a = as.limbs; - const uint32_t *b = bs.limbs; - uint32_t *r = rs.limbs; - uint32_t i, j; - uint32_t *even = rs.limbs; - __align__(8) uint32_t odd[2 * TLC]; - for (uint32_t i = 0; i < 2 * TLC; i++) - { - even[i] = 0; - odd[i] = 0; - } - // first row special case, no carry in no carry out. split to non parts, even and odd. - for (i = 0; i < TLC - 1; i+=2 ) - { - mult_no_carry(b[0], a[i], &even[i]); - mult_no_carry(b[0], a[i + 1], &odd[i]); - } - - // doing two rows at one loop - for (i = 1; i < TLC - 1; i+=2) - { - // odd bi's - // multiply accumulate even part of new row with odd part prev row (needs a carry) - // // j = 0, no carry in, only carry out - odd[i - 1] = ptx::mad_lo_cc(a[0], b[i], odd[i - 1]); - odd[i] = ptx::madc_hi_cc(a[0], b[i], odd[i]); - // for loop carry in carry out - for (j = 2; j < TLC; j+=2) // 2, 4, 6 - { - odd[i + j - 1] = ptx::madc_lo_cc(a[j], b[i], odd[i + j - 1]); - odd[i + j] = ptx::madc_hi_cc(a[j], b[i], odd[i + j]); - } - odd[i + j - 1] = ptx::addc(odd[i + j - 1], 0); // handling last carry - - // multiply accumulate odd part of new row with even part prev row (doesnt need a carry) - // j = 1, no carry in, only carry out - even[i + 1] = ptx::mad_lo_cc(a[1], b[i], even[i + 1]); - even[i + 2] = ptx::madc_hi_cc(a[1], b[i], even[i + 2]); - // for loop carry in carry out - for (j = 3; j < TLC; j+=2) - { - even[i + j] = ptx::madc_lo_cc(a[j], b[i], even[i + j]); - even[i + j + 1] = ptx::madc_hi_cc(a[j], b[i], even[i + j + 1]); - } - - // even bi's - // multiply accumulate even part of new row with even part of prev row // needs a carry - // j = 0, no carry in, only carry out - even[i + 1] = ptx::mad_lo_cc(a[0], b[i + 1], even[i + 1]); - even[i + 2] = ptx::madc_hi_cc(a[0], b[i + 1], even[i + 2]); - // for loop, carry in, carry out. - for (j = 2; j < TLC; j+=2) - { - even[i + j + 1] = ptx::madc_lo_cc(a[j], b[i + 1], even[i + j + 1]); - even[i + j + 2] = ptx::madc_hi_cc(a[j], b[i + 1], even[i + j + 2]); - } - even[i + j + 1] = ptx::addc(even[i + j + 1], 0); // handling last carry - - // multiply accumulate odd part of new row with odd part of prev row - // j = 1, no carry in, only carry out - odd[i + 1] = ptx::mad_lo_cc(a[1], b[i + 1], odd[i + 1]); - odd[i + 2] = ptx::madc_hi_cc(a[1], b[i + 1], odd[i + 2]); - // for loop, carry in, carry out. - for (j = 3; j < TLC; j+=2) - { - odd[i + j] = ptx::madc_lo_cc(a[j], b[i + 1], odd[i + j]); - odd[i + j + 1] = ptx::madc_hi_cc(a[j], b[i + 1], odd[i + j + 1]); - } - - } - - odd[i - 1] = ptx::mad_lo_cc(a[0], b[i], odd[i - 1]); - odd[i] = ptx::madc_hi_cc(a[0], b[i], odd[i]); - // for loop carry in carry out - for (j = 2; j < TLC; j+=2) - { - odd[i + j - 1] = ptx::madc_lo_cc(a[j], b[i], odd[i + j - 1]); - odd[i + j] = ptx::madc_hi_cc(a[j], b[i], odd[i + j]); - } - odd[i + j - 1] = ptx::addc(odd[i + j - 1], 0); // handling last carry - - // multiply accumulate odd part of new row with even part prev row - // j = 1, no carry in, only carry out - even[i + 1] = ptx::mad_lo_cc(a[1], b[i], even[i + 1]); - even[i + 2] = ptx::madc_hi_cc(a[1], b[i], even[i + 2]); - // for loop carry in carry out - for (j = 3; j < TLC; j+=2) - { - even[i + j] = ptx::madc_lo_cc(a[j], b[i], even[i + j]); - even[i + j + 1] = ptx::madc_hi_cc(a[j], b[i], even[i + j + 1]); - } - - // add even and odd parts - even[1] = ptx::add_cc(even[1], odd[0]); - for (i = 1; i < 2 * TLC - 2; i++) - even[i + 1] = ptx::addc_cc(even[i + 1], odd[i]); - even[i + 1] = ptx::addc(even[i + 1], 0); - } - - static DEVICE_INLINE void ingo_msb_multiply_raw_device(const ff_storage &as, const ff_storage &bs, ff_wide_storage &rs) { - const uint32_t *a = as.limbs; - const uint32_t *b = bs.limbs; - uint32_t *r = rs.limbs; - uint32_t i, j; - uint32_t *even = rs.limbs; - __align__(8) uint32_t odd[2 * TLC]; - for (uint32_t i = 0; i < 2 * TLC; i++) - { - even[i] = 0; - odd[i] = 0; - } - // only last element from first row. - mult_no_carry(b[0], a[TLC - 1], &odd[TLC - 2]); - - // doing two rows at one loop - #pragma unroll - for (i = 1; i < TLC - 1; i+=2) - { - const uint32_t first_active_j = TLC - 1 - i; - const uint32_t first_active_j_odd = first_active_j + (1 - (first_active_j % 2)); - const uint32_t first_active_j_even = first_active_j + first_active_j % 2 ; - // odd bi's - // multiply accumulate even part of new row with odd part prev row (needs a carry) - // j = 0, no carry in, only carry out - odd[first_active_j_even + i - 1] = ptx::mad_lo_cc(a[first_active_j_even], b[i], odd[first_active_j_even + i - 1]); - odd[first_active_j_even + i] = ptx::madc_hi_cc(a[first_active_j_even], b[i], odd[first_active_j_even + i]); - // for loop carry in carry out - #pragma unroll - for (j = first_active_j_even + 2; j < TLC; j+=2) - { - odd[i + j - 1] = ptx::madc_lo_cc(a[j], b[i], odd[i + j - 1]); - odd[i + j] = ptx::madc_hi_cc(a[j], b[i], odd[i + j]); - } - odd[i + j - 1] = ptx::addc(odd[i + j - 1], 0); // handling last carry - - // multiply accumulate odd part of new row with even part prev row (doesnt need a carry) - // j = 1, no carry in, only carry out - even[i + first_active_j_odd] = ptx::mad_lo_cc(a[first_active_j_odd], b[i], even[i + first_active_j_odd]); - even[i + first_active_j_odd + 1] = ptx::madc_hi_cc(a[first_active_j_odd], b[i], even[i + first_active_j_odd + 1]); - // for loop carry in carry out - #pragma unroll - for (j = first_active_j_odd + 2; j < TLC; j+=2) - { - even[i + j] = ptx::madc_lo_cc(a[j], b[i], even[i + j]); - even[i + j + 1] = ptx::madc_hi_cc(a[j], b[i], even[i + j + 1]); - } - - // even bi's - uint32_t const first_active_j1 = TLC - 1 - (i + 1) ; - uint32_t const first_active_j_odd1 = first_active_j1 + (1 - (first_active_j1 % 2)); - uint32_t const first_active_j_even1 = first_active_j1 + first_active_j1 % 2; - // multiply accumulate even part of new row with even part of prev row // needs a carry - // j = 0, no carry in, only carry out - even[first_active_j_even1 + i + 1] = ptx::mad_lo_cc(a[first_active_j_even1], b[i + 1], even[first_active_j_even1 + i + 1]); - even[first_active_j_even1 + i + 2] = ptx::madc_hi_cc(a[first_active_j_even1], b[i + 1], even[first_active_j_even1 + i + 2]); - // for loop, carry in, carry out. - #pragma unroll - for (j = first_active_j_even1 + 2; j < TLC; j+=2) - { - even[i + j + 1] = ptx::madc_lo_cc(a[j], b[i + 1], even[i + j + 1]); - even[i + j + 2] = ptx::madc_hi_cc(a[j], b[i + 1], even[i + j + 2]); - } - even[i + j + 1] = ptx::addc(even[i + j + 1], 0); // handling last carry - - // multiply accumulate odd part of new row with odd part of prev row - // j = 1, no carry in, only carry out - odd[first_active_j_odd1 + i] = ptx::mad_lo_cc(a[first_active_j_odd1], b[i + 1], odd[first_active_j_odd1 + i]); - odd[first_active_j_odd1+ i + 1] = ptx::madc_hi_cc(a[first_active_j_odd1], b[i + 1], odd[first_active_j_odd1 + i + 1]); - // for loop, carry in, carry out. - #pragma unroll - for (j = first_active_j_odd1 + 2; j < TLC; j+=2) - { - odd[i + j] = ptx::madc_lo_cc(a[j], b[i + 1], odd[i + j]); - odd[i + j + 1] = ptx::madc_hi_cc(a[j], b[i + 1], odd[i + j + 1]); - } - - } - - // last round, i = TLC - 1 - odd[i - 1] = ptx::mad_lo_cc(a[0], b[i], odd[i - 1]); - odd[i] = ptx::madc_hi_cc(a[0], b[i], odd[i]); - // for loop carry in carry out - #pragma unroll - for (j = 2; j < TLC; j+=2) - { - odd[i + j - 1] = ptx::madc_lo_cc(a[j], b[i], odd[i + j - 1]); - odd[i + j] = ptx::madc_hi_cc(a[j], b[i], odd[i + j]); - } - odd[i + j - 1] = ptx::addc(odd[i + j - 1], 0); // handling last carry - - // multiply accumulate odd part of new row with even part prev row - // j = 1, no carry in, only carry out - even[i + 1] = ptx::mad_lo_cc(a[1], b[i], even[i + 1]); - even[i + 2] = ptx::madc_hi_cc(a[1], b[i], even[i + 2]); - // for loop carry in carry out - #pragma unroll - for (j = 3; j < TLC; j+=2) - { - even[i + j] = ptx::madc_lo_cc(a[j], b[i], even[i + j]); - even[i + j + 1] = ptx::madc_hi_cc(a[j], b[i], even[i + j + 1]); - } - - // add even and odd parts - even[1] = ptx::add_cc(even[1], odd[0]); - #pragma unroll - for (i = 1; i < 2 * TLC - 2; i++) - even[i + 1] = ptx::addc_cc(even[i + 1], odd[i]); - even[i + 1] = ptx::addc(even[i + 1], 0); - } - - static DEVICE_INLINE void multiply_lsb_raw_device(const ff_storage &as, const ff_storage &bs, ff_wide_storage &rs) { - // r = a * b is correcrt for the first TLC + 1 digits. (not computing from TLC + 1 to 2*TLC - 2). - const uint32_t *a = as.limbs; - const uint32_t *b = bs.limbs; - uint32_t *even = rs.limbs; - __align__(8) uint32_t odd[2 * TLC - 2]; - mul_n(even, a, b[0]); - mul_n(odd, a + 1, b[0]); - mad_row(&even[2], &odd[0], a, b[1]); - size_t i; - #pragma unroll - for (i = 2; i < TLC - 1; i += 2) { - mad_row(&odd[i], &even[i], a, b[i], TLC - i + 2); - mad_row(&even[i + 2], &odd[i], a, b[i + 1], TLC - i + 2); - } - - // merge |even| and |odd| - even[1] = ptx::add_cc(even[1], odd[0]); - for (i = 1; i < TLC + 1; i++) - even[i + 1] = ptx::addc_cc(even[i + 1], odd[i]); - even[i + 1] = ptx::addc(even[i + 1], 0); - } - - static DEVICE_INLINE void multiply_msb_raw_device(const ff_storage &as, const ff_storage &bs, ff_wide_storage &rs) { - const uint32_t *a = as.limbs; - const uint32_t *b = bs.limbs; - uint32_t *even = rs.limbs; - __align__(8) uint32_t odd[2 * TLC - 2]; - for (int i=0; i<2*TLC - 1; i++) - { - even[i] = 0; - odd[i] = 0; - } - uint32_t min_indexes_sum = TLC - 1; - // only diagonal - mul_n_msb(even, a, b[0], TLC, min_indexes_sum); - mul_n_msb(odd, a + 1, b[0], TLC, min_indexes_sum - 1); - mad_row_msb(&even[2], &odd[0], a, b[1], TLC, min_indexes_sum - 1); - size_t i; - #pragma unroll - for (i = 2; i < TLC - 1; i += 2) { - mad_row(&odd[i], &even[i], a, b[i]); - mad_row(&even[i + 2], &odd[i], a, b[i + 1]); - } - // merge |even| and |odd| - even[1] = ptx::add_cc(even[1], odd[0]); - for (i = 1; i < 2 * TLC - 2; i++) - even[i + 1] = ptx::addc_cc(even[i + 1], odd[i]); - even[i + 1] = ptx::addc(even[i + 1], 0); - } - - static HOST_INLINE void multiply_raw_host(const ff_storage &as, const ff_storage &bs, ff_wide_storage &rs) { - const uint32_t *a = as.limbs; - const uint32_t *b = bs.limbs; - uint32_t *r = rs.limbs; + static constexpr Field HOST_DEVICE_INLINE get_higher_with_slack(const Wide& xs) + { + Field out{}; +#ifdef __CUDA_ARCH__ +#pragma unroll +#endif for (unsigned i = 0; i < TLC; i++) { - uint32_t carry = 0; - for (unsigned j = 0; j < TLC; j++) - r[j + i] = host_math::madc_cc(a[j], b[i], r[j + i], carry); - r[TLC + i] = carry; +#ifdef __CUDA_ARCH__ + out.limbs_storage.limbs[i] = + __funnelshift_lc(xs.limbs_storage.limbs[i + TLC - 1], xs.limbs_storage.limbs[i + TLC], slack_bits); +#else + out.limbs_storage.limbs[i] = + (xs.limbs_storage.limbs[i + TLC] << slack_bits) + (xs.limbs_storage.limbs[i + TLC - 1] >> (32 - slack_bits)); +#endif } + return out; } - static HOST_DEVICE_INLINE void multiply_raw(const ff_storage &as, const ff_storage &bs, ff_wide_storage &rs) { - #ifdef __CUDA_ARCH__ - return multiply_raw_device(as, bs, rs); - #else - return multiply_raw_host(as, bs, rs); - #endif - } - - static HOST_DEVICE_INLINE void multiply_raw_lsb(const ff_storage &as, const ff_storage &bs, ff_wide_storage &rs) { - #ifdef __CUDA_ARCH__ - return multiply_lsb_raw_device(as, bs, rs); - #else - return multiply_raw_host(as, bs, rs); - #endif - } - - static HOST_DEVICE_INLINE void multiply_raw_msb(const ff_storage &as, const ff_storage &bs, ff_wide_storage &rs) { - #ifdef __CUDA_ARCH__ - return multiply_raw_device(as, bs, rs); - #else - return multiply_raw_host(as, bs, rs); - #endif - } - - public: - ff_storage limbs_storage; - - HOST_DEVICE_INLINE uint32_t* export_limbs() { - return (uint32_t *)limbs_storage.limbs; - } - - HOST_DEVICE_INLINE unsigned get_scalar_digit(unsigned digit_num, unsigned digit_width) { - const uint32_t limb_lsb_idx = (digit_num*digit_width) / 32; - const uint32_t shift_bits = (digit_num*digit_width) % 32; - unsigned rv = limbs_storage.limbs[limb_lsb_idx] >> shift_bits; - if ((shift_bits + digit_width > 32) && (limb_lsb_idx+1 < TLC)) { - rv += limbs_storage.limbs[limb_lsb_idx + 1] << (32 - shift_bits); - } - rv &= ((1 << digit_width) - 1); - return rv; - } - - static HOST_INLINE Field rand_host() { - std::random_device rd; - std::mt19937_64 generator(rd()); - std::uniform_int_distribution distribution; - Field value{}; - for (unsigned i = 0; i < TLC; i++) - value.limbs_storage.limbs[i] = distribution(generator); - while (lt(modulus(), value)) - value = value - modulus(); - return value; - } - - template static constexpr HOST_DEVICE_INLINE Field sub_modulus(const Field &xs) { - if (REDUCTION_SIZE == 0) - return xs; - const ff_storage modulus = get_modulus(); - Field rs = {}; + template + static constexpr HOST_DEVICE_INLINE Wide sub_modulus_squared(const Wide& xs) + { + if (REDUCTION_SIZE == 0) return xs; + const ff_wide_storage modulus = get_modulus_squared(); + Wide rs = {}; return sub_limbs(xs.limbs_storage, modulus, rs.limbs_storage) ? xs : rs; } - friend std::ostream& operator<<(std::ostream& os, const Field& xs) { - std::stringstream hex_string; - hex_string << std::hex << std::setfill('0'); - - for (int i = 0; i < TLC; i++) { - hex_string << std::setw(8) << xs.limbs_storage.limbs[i]; - } - - os << "0x" << hex_string.str(); - return os; - } - - friend HOST_DEVICE_INLINE Field operator+(Field xs, const Field& ys) { - Field rs = {}; - add_limbs(xs.limbs_storage, ys.limbs_storage, rs.limbs_storage); - return sub_modulus<1>(rs); - } - - friend HOST_DEVICE_INLINE Field operator-(Field xs, const Field& ys) { - Field rs = {}; - uint32_t carry = sub_limbs(xs.limbs_storage, ys.limbs_storage, rs.limbs_storage); - if (carry == 0) - return rs; - const ff_storage modulus = get_modulus<1>(); - add_limbs(rs.limbs_storage, modulus, rs.limbs_storage); - return rs; - } - template - static constexpr HOST_DEVICE_INLINE Wide mul_wide(const Field& xs, const Field& ys) { + static constexpr HOST_DEVICE_INLINE Wide neg(const Wide& xs) + { + const ff_wide_storage modulus = get_modulus_squared(); Wide rs = {}; - multiply_raw(xs.limbs_storage, ys.limbs_storage, rs.limbs_storage); - return rs; - } - - static constexpr DEVICE_INLINE uint32_t sub_limbs_partial_device(uint32_t *x, uint32_t *y, uint32_t *r, uint32_t num_limbs) { - r[0] = ptx::sub_cc(x[0], y[0]); - #pragma unroll - for (unsigned i = 1; i < num_limbs; i++) - r[i] = ptx::subc_cc(x[i], y[i]); - return ptx::subc(0, 0); - } - - static constexpr HOST_DEVICE_INLINE uint32_t sub_limbs_partial(uint32_t *x, uint32_t *y, uint32_t *r, uint32_t num_limbs) { - #ifdef __CUDA_ARCH__ - return sub_limbs_partial_device(x, y, r, num_limbs); - #else - return sub_limbs_partial_host(x, y, r, num_limbs); - #endif - } - - template - static constexpr HOST_DEVICE_INLINE Field reduce(const Wide& xs) { - Field xs_hi = Wide::get_higher_with_slack(xs); // xy << slack_bits - Wide l = {}; - multiply_raw_msb(xs_hi.limbs_storage, get_m(), l.limbs_storage); // MSB mult - Field l_hi = Wide::get_higher_with_slack(l); - Wide lp = {}; - multiply_raw_lsb(l_hi.limbs_storage, get_modulus(), lp.limbs_storage); // LSB mult - Wide r_wide = xs - lp; - Wide r_wide_reduced = {}; - for (unsigned i = 0; i < TLC + 1; i++) - { - uint32_t carry = sub_limbs_partial(r_wide.limbs_storage.limbs, modulus_wide().limbs, r_wide_reduced.limbs_storage.limbs, TLC + 1); - if (carry == 0) // continue to reduce - r_wide = r_wide_reduced; - else // done - break; - } - - // number of wrap around is bounded by TLC + 1 times. - Field r = Wide::get_lower(r_wide); - return r; - } - - friend HOST_DEVICE_INLINE Field operator*(const Field& xs, const Field& ys) { - Wide xy = mul_wide(xs, ys); // full mult - return reduce(xy); - } - - friend HOST_DEVICE_INLINE bool operator==(const Field& xs, const Field& ys) { - #ifdef __CUDA_ARCH__ - const uint32_t *x = xs.limbs_storage.limbs; - const uint32_t *y = ys.limbs_storage.limbs; - uint32_t limbs_or = x[0] ^ y[0]; - #pragma unroll - for (unsigned i = 1; i < TLC; i++) - limbs_or |= x[i] ^ y[i]; - return limbs_or == 0; - #else - for (unsigned i = 0; i < TLC; i++) - if (xs.limbs_storage.limbs[i] != ys.limbs_storage.limbs[i]) - return false; - return true; - #endif - } - - friend HOST_DEVICE_INLINE bool operator!=(const Field& xs, const Field& ys) { - return !(xs == ys); - } - - template - static HOST_DEVICE_INLINE Field mul_const(const Field& xs) { - Field mul = multiplier; - static bool is_u32 = true; - #ifdef __CUDA_ARCH__ - #pragma unroll - #endif - for (unsigned i = 1; i < TLC; i++) - is_u32 &= (mul.limbs_storage.limbs[i] == 0); - - if (is_u32) - return mul_unsigned(xs); - return mul * xs; - } - - template - static constexpr HOST_DEVICE_INLINE T mul_unsigned(const T &xs) { - T rs = {}; - T temp = xs; - bool is_zero = true; - #ifdef __CUDA_ARCH__ - #pragma unroll - #endif - for (unsigned i = 0; i < 32; i++) { - if (mutliplier & (1 << i)) { - rs = is_zero ? temp : (rs + temp); - is_zero = false; - } - if (mutliplier & ((1 << (31 - i) - 1) << (i + 1))) - break; - temp = temp + temp; - } - return rs; - } - - template - static constexpr HOST_DEVICE_INLINE Wide sqr_wide(const Field& xs) { - // TODO: change to a more efficient squaring - return mul_wide(xs, xs); - } - - template - static constexpr HOST_DEVICE_INLINE Field sqr(const Field& xs) { - // TODO: change to a more efficient squaring - return xs * xs; - } - - template - static constexpr HOST_DEVICE_INLINE Field neg(const Field& xs) { - const ff_storage modulus = get_modulus(); - Field rs = {}; sub_limbs(modulus, xs.limbs_storage, rs.limbs_storage); return rs; } - template - static constexpr HOST_DEVICE_INLINE Field div2(const Field &xs) { - const uint32_t *x = xs.limbs_storage.limbs; - Field rs = {}; - uint32_t *r = rs.limbs_storage.limbs; - #ifdef __CUDA_ARCH__ - #pragma unroll - #endif - for (unsigned i = 0; i < TLC - 1; i++) { - #ifdef __CUDA_ARCH__ - r[i] = __funnelshift_rc(x[i], x[i + 1], 1); - #else - r[i] = (x[i] >> 1) | (x[i + 1] << 31); - #endif + friend HOST_DEVICE_INLINE Wide operator+(Wide xs, const Wide& ys) + { + Wide rs = {}; + add_limbs(xs.limbs_storage, ys.limbs_storage, rs.limbs_storage); + return sub_modulus_squared<1>(rs); + } + + friend HOST_DEVICE_INLINE Wide operator-(Wide xs, const Wide& ys) + { + Wide rs = {}; + uint32_t carry = sub_limbs(xs.limbs_storage, ys.limbs_storage, rs.limbs_storage); + if (carry == 0) return rs; + const ff_wide_storage modulus = get_modulus_squared<1>(); + add_limbs(rs.limbs_storage, modulus, rs.limbs_storage); + return rs; + } + }; + + // return modulus + template + static constexpr HOST_DEVICE_INLINE ff_storage get_modulus() + { + switch (MULTIPLIER) { + case 1: + return CONFIG::modulus; + case 2: + return CONFIG::modulus_2; + case 4: + return CONFIG::modulus_4; + default: + return {}; + } + } + + template + static constexpr HOST_DEVICE_INLINE ff_wide_storage modulus_wide() + { + return CONFIG::modulus_wide; + } + + // return m + static constexpr HOST_DEVICE_INLINE ff_storage get_m() { return CONFIG::m; } + + // return modulus^2, helpful for ab +/- cd + template + static constexpr HOST_DEVICE_INLINE ff_wide_storage get_modulus_squared() + { + switch (MULTIPLIER) { + case 1: + return CONFIG::modulus_squared; + case 2: + return CONFIG::modulus_squared_2; + case 4: + return CONFIG::modulus_squared_4; + default: + return {}; + } + } + + // add or subtract limbs + template + static constexpr DEVICE_INLINE uint32_t + add_sub_limbs_device(const ff_storage& xs, const ff_storage& ys, ff_storage& rs) + { + const uint32_t* x = xs.limbs; + const uint32_t* y = ys.limbs; + uint32_t* r = rs.limbs; + r[0] = SUBTRACT ? ptx::sub_cc(x[0], y[0]) : ptx::add_cc(x[0], y[0]); +#ifdef __CUDA_ARCH__ +#pragma unroll +#endif + for (unsigned i = 1; i < (CARRY_OUT ? TLC : TLC - 1); i++) + r[i] = SUBTRACT ? ptx::subc_cc(x[i], y[i]) : ptx::addc_cc(x[i], y[i]); + if (!CARRY_OUT) { + r[TLC - 1] = SUBTRACT ? ptx::subc(x[TLC - 1], y[TLC - 1]) : ptx::addc(x[TLC - 1], y[TLC - 1]); + return 0; + } + return SUBTRACT ? ptx::subc(0, 0) : ptx::addc(0, 0); + } + + template + static constexpr DEVICE_INLINE uint32_t + add_sub_limbs_device(const ff_wide_storage& xs, const ff_wide_storage& ys, ff_wide_storage& rs) + { + const uint32_t* x = xs.limbs; + const uint32_t* y = ys.limbs; + uint32_t* r = rs.limbs; + r[0] = SUBTRACT ? ptx::sub_cc(x[0], y[0]) : ptx::add_cc(x[0], y[0]); +#ifdef __CUDA_ARCH__ +#pragma unroll +#endif + for (unsigned i = 1; i < (CARRY_OUT ? 2 * TLC : 2 * TLC - 1); i++) + r[i] = SUBTRACT ? ptx::subc_cc(x[i], y[i]) : ptx::addc_cc(x[i], y[i]); + if (!CARRY_OUT) { + r[2 * TLC - 1] = SUBTRACT ? ptx::subc(x[2 * TLC - 1], y[2 * TLC - 1]) : ptx::addc(x[2 * TLC - 1], y[2 * TLC - 1]); + return 0; + } + return SUBTRACT ? ptx::subc(0, 0) : ptx::addc(0, 0); + } + + template + static constexpr HOST_INLINE uint32_t add_sub_limbs_host(const ff_storage& xs, const ff_storage& ys, ff_storage& rs) + { + const uint32_t* x = xs.limbs; + const uint32_t* y = ys.limbs; + uint32_t* r = rs.limbs; + uint32_t carry = 0; + host_math::carry_chain chain; + for (unsigned i = 0; i < TLC; i++) + r[i] = SUBTRACT ? chain.sub(x[i], y[i], carry) : chain.add(x[i], y[i], carry); + return CARRY_OUT ? carry : 0; + } + + template + static constexpr HOST_INLINE uint32_t + add_sub_limbs_host(const ff_wide_storage& xs, const ff_wide_storage& ys, ff_wide_storage& rs) + { + const uint32_t* x = xs.limbs; + const uint32_t* y = ys.limbs; + uint32_t* r = rs.limbs; + uint32_t carry = 0; + host_math::carry_chain<2 * TLC, false, CARRY_OUT> chain; + for (unsigned i = 0; i < 2 * TLC; i++) + r[i] = SUBTRACT ? chain.sub(x[i], y[i], carry) : chain.add(x[i], y[i], carry); + return CARRY_OUT ? carry : 0; + } + + static constexpr HOST_INLINE uint32_t + sub_limbs_partial_host(uint32_t* x, uint32_t* y, uint32_t* r, uint32_t num_limbs) + { + uint32_t carry = 0; + host_math::carry_chain<2 * TLC, false, true> chain; + for (unsigned i = 0; i < num_limbs; i++) + r[i] = chain.sub(x[i], y[i], carry); + return carry; + } + + template + static constexpr HOST_DEVICE_INLINE uint32_t add_limbs(const T& xs, const T& ys, T& rs) + { +#ifdef __CUDA_ARCH__ + return add_sub_limbs_device(xs, ys, rs); +#else + return add_sub_limbs_host(xs, ys, rs); +#endif + } + + template + static constexpr HOST_DEVICE_INLINE uint32_t sub_limbs(const T& xs, const T& ys, T& rs) + { +#ifdef __CUDA_ARCH__ + return add_sub_limbs_device(xs, ys, rs); +#else + return add_sub_limbs_host(xs, ys, rs); +#endif + } + + static DEVICE_INLINE void mul_n(uint32_t* acc, const uint32_t* a, uint32_t bi, size_t n = TLC) + { +#pragma unroll + for (size_t i = 0; i < n; i += 2) { + acc[i] = ptx::mul_lo(a[i], bi); + acc[i + 1] = ptx::mul_hi(a[i], bi); + } + } + + static DEVICE_INLINE void mul_n_msb(uint32_t* acc, const uint32_t* a, uint32_t bi, size_t n = TLC, size_t start_i = 0) + { +#pragma unroll + for (size_t i = start_i; i < n; i += 2) { + acc[i] = ptx::mul_lo(a[i], bi); + acc[i + 1] = ptx::mul_hi(a[i], bi); + } + } + + static DEVICE_INLINE void cmad_n(uint32_t* acc, const uint32_t* a, uint32_t bi, size_t n = TLC) + { + // multiply scalar by vector + // acc = acc + bi*A[::2] + acc[0] = ptx::mad_lo_cc(a[0], bi, acc[0]); + acc[1] = ptx::madc_hi_cc(a[0], bi, acc[1]); +#pragma unroll + for (size_t i = 2; i < n; i += 2) { + acc[i] = ptx::madc_lo_cc(a[i], bi, acc[i]); + acc[i + 1] = ptx::madc_hi_cc(a[i], bi, acc[i + 1]); + } + } + + static DEVICE_INLINE void + cmad_n_msb(uint32_t* acc, const uint32_t* a, uint32_t bi, size_t n = TLC, size_t a_start_idx = 0) + { + // multiply scalar by vector + // acc = acc + bi*A[::2] + acc[a_start_idx] = ptx::mad_lo_cc(a[a_start_idx], bi, acc[a_start_idx]); + acc[a_start_idx + 1] = ptx::madc_hi_cc(a[a_start_idx], bi, acc[a_start_idx + 1]); +#pragma unroll + for (size_t i = a_start_idx + 2; i < n; i += 2) { + acc[i] = ptx::madc_lo_cc(a[i], bi, acc[i]); + acc[i + 1] = ptx::madc_hi_cc(a[i], bi, acc[i + 1]); + } + } + + static DEVICE_INLINE void mad_row(uint32_t* odd, uint32_t* even, const uint32_t* a, uint32_t bi, size_t n = TLC) + { + // odd = odd + bi*A + // even = even + bi*A + cmad_n(odd, a + 1, bi, n - 2); + odd[n - 2] = ptx::madc_lo_cc(a[n - 1], bi, 0); + odd[n - 1] = ptx::madc_hi(a[n - 1], bi, 0); + cmad_n(even, a, bi, n); + odd[n - 1] = ptx::addc(odd[n - 1], 0); + } + + static DEVICE_INLINE void + mad_row_msb(uint32_t* odd, uint32_t* even, const uint32_t* a, uint32_t bi, size_t n = TLC, size_t a_start_idx = 0) + { + // odd = odd + bi*A + // even = even + bi*A + cmad_n_msb(odd, a + 1, bi, n - 2, a_start_idx - 1); + odd[n - 2] = ptx::madc_lo_cc(a[n - 1], bi, 0); + odd[n - 1] = ptx::madc_hi(a[n - 1], bi, 0); + cmad_n_msb(even, a, bi, n, a_start_idx); + odd[n - 1] = ptx::addc(odd[n - 1], 0); + } + + static DEVICE_INLINE void multiply_raw_device(const ff_storage& as, const ff_storage& bs, ff_wide_storage& rs) + { + const uint32_t* a = as.limbs; + const uint32_t* b = bs.limbs; + uint32_t* even = rs.limbs; + __align__(8) uint32_t odd[2 * TLC - 2]; + mul_n(even, a, b[0]); + mul_n(odd, a + 1, b[0]); + mad_row(&even[2], &odd[0], a, b[1]); + size_t i; +#pragma unroll + for (i = 2; i < TLC - 1; i += 2) { + mad_row(&odd[i], &even[i], a, b[i]); + mad_row(&even[i + 2], &odd[i], a, b[i + 1]); + } + // merge |even| and |odd| + even[1] = ptx::add_cc(even[1], odd[0]); + for (i = 1; i < 2 * TLC - 2; i++) + even[i + 1] = ptx::addc_cc(even[i + 1], odd[i]); + even[i + 1] = ptx::addc(even[i + 1], 0); + } + + static DEVICE_INLINE void mult_no_carry(uint32_t a, uint32_t b, uint32_t* r) + { + r[0] = ptx::mul_lo(a, b); + r[1] = ptx::mul_hi(a, b); + } + + static DEVICE_INLINE void ingo_multiply_raw_device(const ff_storage& as, const ff_storage& bs, ff_wide_storage& rs) + { + const uint32_t* a = as.limbs; + const uint32_t* b = bs.limbs; + uint32_t* r = rs.limbs; + uint32_t i, j; + uint32_t* even = rs.limbs; + __align__(8) uint32_t odd[2 * TLC]; + for (uint32_t i = 0; i < 2 * TLC; i++) { + even[i] = 0; + odd[i] = 0; + } + // first row special case, no carry in no carry out. split to non parts, even and odd. + for (i = 0; i < TLC - 1; i += 2) { + mult_no_carry(b[0], a[i], &even[i]); + mult_no_carry(b[0], a[i + 1], &odd[i]); + } + + // doing two rows at one loop + for (i = 1; i < TLC - 1; i += 2) { + // odd bi's + // multiply accumulate even part of new row with odd part prev row (needs a carry) + // // j = 0, no carry in, only carry out + odd[i - 1] = ptx::mad_lo_cc(a[0], b[i], odd[i - 1]); + odd[i] = ptx::madc_hi_cc(a[0], b[i], odd[i]); + // for loop carry in carry out + for (j = 2; j < TLC; j += 2) // 2, 4, 6 + { + odd[i + j - 1] = ptx::madc_lo_cc(a[j], b[i], odd[i + j - 1]); + odd[i + j] = ptx::madc_hi_cc(a[j], b[i], odd[i + j]); } - r[TLC - 1] = x[TLC - 1] >> 1; - return sub_modulus(rs); - } + odd[i + j - 1] = ptx::addc(odd[i + j - 1], 0); // handling last carry - static constexpr HOST_DEVICE_INLINE bool lt(const Field &xs, const Field &ys) { - ff_storage dummy = {}; - uint32_t carry = sub_limbs(xs.limbs_storage, ys.limbs_storage, dummy); - return carry; - } - - static constexpr HOST_DEVICE_INLINE bool is_odd(const Field &xs) { - return xs.limbs_storage.limbs[0] & 1; - } - - static constexpr HOST_DEVICE_INLINE bool is_even(const Field &xs) { - return ~xs.limbs_storage.limbs[0] & 1; - } - - // inverse assumes that xs is nonzero - static constexpr HOST_DEVICE_INLINE Field inverse(const Field& xs) { - constexpr Field one = Field { CONFIG::one }; - constexpr ff_storage modulus = CONFIG::modulus; - Field u = xs; - Field v = Field { modulus }; - Field b = one; - Field c = {}; - while (!(u == one) && !(v == one)) { - while (is_even(u)) { - u = div2(u); - if (is_odd(b)) - add_limbs(b.limbs_storage, modulus, b.limbs_storage); - b = div2(b); - } - while (is_even(v)) { - v = div2(v); - if (is_odd(c)) - add_limbs(c.limbs_storage, modulus, c.limbs_storage); - c = div2(c); - } - if (lt(v, u)) { - u = u - v; - b = b - c; - } else { - v = v - u; - c = c - b; - } + // multiply accumulate odd part of new row with even part prev row (doesnt need a carry) + // j = 1, no carry in, only carry out + even[i + 1] = ptx::mad_lo_cc(a[1], b[i], even[i + 1]); + even[i + 2] = ptx::madc_hi_cc(a[1], b[i], even[i + 2]); + // for loop carry in carry out + for (j = 3; j < TLC; j += 2) { + even[i + j] = ptx::madc_lo_cc(a[j], b[i], even[i + j]); + even[i + j + 1] = ptx::madc_hi_cc(a[j], b[i], even[i + j + 1]); + } + + // even bi's + // multiply accumulate even part of new row with even part of prev row // needs a carry + // j = 0, no carry in, only carry out + even[i + 1] = ptx::mad_lo_cc(a[0], b[i + 1], even[i + 1]); + even[i + 2] = ptx::madc_hi_cc(a[0], b[i + 1], even[i + 2]); + // for loop, carry in, carry out. + for (j = 2; j < TLC; j += 2) { + even[i + j + 1] = ptx::madc_lo_cc(a[j], b[i + 1], even[i + j + 1]); + even[i + j + 2] = ptx::madc_hi_cc(a[j], b[i + 1], even[i + j + 2]); + } + even[i + j + 1] = ptx::addc(even[i + j + 1], 0); // handling last carry + + // multiply accumulate odd part of new row with odd part of prev row + // j = 1, no carry in, only carry out + odd[i + 1] = ptx::mad_lo_cc(a[1], b[i + 1], odd[i + 1]); + odd[i + 2] = ptx::madc_hi_cc(a[1], b[i + 1], odd[i + 2]); + // for loop, carry in, carry out. + for (j = 3; j < TLC; j += 2) { + odd[i + j] = ptx::madc_lo_cc(a[j], b[i + 1], odd[i + j]); + odd[i + j + 1] = ptx::madc_hi_cc(a[j], b[i + 1], odd[i + j + 1]); } - return (u == one) ? b : c; } + + odd[i - 1] = ptx::mad_lo_cc(a[0], b[i], odd[i - 1]); + odd[i] = ptx::madc_hi_cc(a[0], b[i], odd[i]); + // for loop carry in carry out + for (j = 2; j < TLC; j += 2) { + odd[i + j - 1] = ptx::madc_lo_cc(a[j], b[i], odd[i + j - 1]); + odd[i + j] = ptx::madc_hi_cc(a[j], b[i], odd[i + j]); + } + odd[i + j - 1] = ptx::addc(odd[i + j - 1], 0); // handling last carry + + // multiply accumulate odd part of new row with even part prev row + // j = 1, no carry in, only carry out + even[i + 1] = ptx::mad_lo_cc(a[1], b[i], even[i + 1]); + even[i + 2] = ptx::madc_hi_cc(a[1], b[i], even[i + 2]); + // for loop carry in carry out + for (j = 3; j < TLC; j += 2) { + even[i + j] = ptx::madc_lo_cc(a[j], b[i], even[i + j]); + even[i + j + 1] = ptx::madc_hi_cc(a[j], b[i], even[i + j + 1]); + } + + // add even and odd parts + even[1] = ptx::add_cc(even[1], odd[0]); + for (i = 1; i < 2 * TLC - 2; i++) + even[i + 1] = ptx::addc_cc(even[i + 1], odd[i]); + even[i + 1] = ptx::addc(even[i + 1], 0); + } + + static DEVICE_INLINE void + ingo_msb_multiply_raw_device(const ff_storage& as, const ff_storage& bs, ff_wide_storage& rs) + { + const uint32_t* a = as.limbs; + const uint32_t* b = bs.limbs; + uint32_t* r = rs.limbs; + uint32_t i, j; + uint32_t* even = rs.limbs; + __align__(8) uint32_t odd[2 * TLC]; + for (uint32_t i = 0; i < 2 * TLC; i++) { + even[i] = 0; + odd[i] = 0; + } + // only last element from first row. + mult_no_carry(b[0], a[TLC - 1], &odd[TLC - 2]); + +// doing two rows at one loop +#pragma unroll + for (i = 1; i < TLC - 1; i += 2) { + const uint32_t first_active_j = TLC - 1 - i; + const uint32_t first_active_j_odd = first_active_j + (1 - (first_active_j % 2)); + const uint32_t first_active_j_even = first_active_j + first_active_j % 2; + // odd bi's + // multiply accumulate even part of new row with odd part prev row (needs a carry) + // j = 0, no carry in, only carry out + odd[first_active_j_even + i - 1] = ptx::mad_lo_cc(a[first_active_j_even], b[i], odd[first_active_j_even + i - 1]); + odd[first_active_j_even + i] = ptx::madc_hi_cc(a[first_active_j_even], b[i], odd[first_active_j_even + i]); +// for loop carry in carry out +#pragma unroll + for (j = first_active_j_even + 2; j < TLC; j += 2) { + odd[i + j - 1] = ptx::madc_lo_cc(a[j], b[i], odd[i + j - 1]); + odd[i + j] = ptx::madc_hi_cc(a[j], b[i], odd[i + j]); + } + odd[i + j - 1] = ptx::addc(odd[i + j - 1], 0); // handling last carry + + // multiply accumulate odd part of new row with even part prev row (doesnt need a carry) + // j = 1, no carry in, only carry out + even[i + first_active_j_odd] = ptx::mad_lo_cc(a[first_active_j_odd], b[i], even[i + first_active_j_odd]); + even[i + first_active_j_odd + 1] = ptx::madc_hi_cc(a[first_active_j_odd], b[i], even[i + first_active_j_odd + 1]); +// for loop carry in carry out +#pragma unroll + for (j = first_active_j_odd + 2; j < TLC; j += 2) { + even[i + j] = ptx::madc_lo_cc(a[j], b[i], even[i + j]); + even[i + j + 1] = ptx::madc_hi_cc(a[j], b[i], even[i + j + 1]); + } + + // even bi's + uint32_t const first_active_j1 = TLC - 1 - (i + 1); + uint32_t const first_active_j_odd1 = first_active_j1 + (1 - (first_active_j1 % 2)); + uint32_t const first_active_j_even1 = first_active_j1 + first_active_j1 % 2; + // multiply accumulate even part of new row with even part of prev row // needs a carry + // j = 0, no carry in, only carry out + even[first_active_j_even1 + i + 1] = + ptx::mad_lo_cc(a[first_active_j_even1], b[i + 1], even[first_active_j_even1 + i + 1]); + even[first_active_j_even1 + i + 2] = + ptx::madc_hi_cc(a[first_active_j_even1], b[i + 1], even[first_active_j_even1 + i + 2]); +// for loop, carry in, carry out. +#pragma unroll + for (j = first_active_j_even1 + 2; j < TLC; j += 2) { + even[i + j + 1] = ptx::madc_lo_cc(a[j], b[i + 1], even[i + j + 1]); + even[i + j + 2] = ptx::madc_hi_cc(a[j], b[i + 1], even[i + j + 2]); + } + even[i + j + 1] = ptx::addc(even[i + j + 1], 0); // handling last carry + + // multiply accumulate odd part of new row with odd part of prev row + // j = 1, no carry in, only carry out + odd[first_active_j_odd1 + i] = ptx::mad_lo_cc(a[first_active_j_odd1], b[i + 1], odd[first_active_j_odd1 + i]); + odd[first_active_j_odd1 + i + 1] = + ptx::madc_hi_cc(a[first_active_j_odd1], b[i + 1], odd[first_active_j_odd1 + i + 1]); +// for loop, carry in, carry out. +#pragma unroll + for (j = first_active_j_odd1 + 2; j < TLC; j += 2) { + odd[i + j] = ptx::madc_lo_cc(a[j], b[i + 1], odd[i + j]); + odd[i + j + 1] = ptx::madc_hi_cc(a[j], b[i + 1], odd[i + j + 1]); + } + } + + // last round, i = TLC - 1 + odd[i - 1] = ptx::mad_lo_cc(a[0], b[i], odd[i - 1]); + odd[i] = ptx::madc_hi_cc(a[0], b[i], odd[i]); +// for loop carry in carry out +#pragma unroll + for (j = 2; j < TLC; j += 2) { + odd[i + j - 1] = ptx::madc_lo_cc(a[j], b[i], odd[i + j - 1]); + odd[i + j] = ptx::madc_hi_cc(a[j], b[i], odd[i + j]); + } + odd[i + j - 1] = ptx::addc(odd[i + j - 1], 0); // handling last carry + + // multiply accumulate odd part of new row with even part prev row + // j = 1, no carry in, only carry out + even[i + 1] = ptx::mad_lo_cc(a[1], b[i], even[i + 1]); + even[i + 2] = ptx::madc_hi_cc(a[1], b[i], even[i + 2]); +// for loop carry in carry out +#pragma unroll + for (j = 3; j < TLC; j += 2) { + even[i + j] = ptx::madc_lo_cc(a[j], b[i], even[i + j]); + even[i + j + 1] = ptx::madc_hi_cc(a[j], b[i], even[i + j + 1]); + } + + // add even and odd parts + even[1] = ptx::add_cc(even[1], odd[0]); +#pragma unroll + for (i = 1; i < 2 * TLC - 2; i++) + even[i + 1] = ptx::addc_cc(even[i + 1], odd[i]); + even[i + 1] = ptx::addc(even[i + 1], 0); + } + + static DEVICE_INLINE void multiply_lsb_raw_device(const ff_storage& as, const ff_storage& bs, ff_wide_storage& rs) + { + // r = a * b is correcrt for the first TLC + 1 digits. (not computing from TLC + 1 to 2*TLC - 2). + const uint32_t* a = as.limbs; + const uint32_t* b = bs.limbs; + uint32_t* even = rs.limbs; + __align__(8) uint32_t odd[2 * TLC - 2]; + mul_n(even, a, b[0]); + mul_n(odd, a + 1, b[0]); + mad_row(&even[2], &odd[0], a, b[1]); + size_t i; +#pragma unroll + for (i = 2; i < TLC - 1; i += 2) { + mad_row(&odd[i], &even[i], a, b[i], TLC - i + 2); + mad_row(&even[i + 2], &odd[i], a, b[i + 1], TLC - i + 2); + } + + // merge |even| and |odd| + even[1] = ptx::add_cc(even[1], odd[0]); + for (i = 1; i < TLC + 1; i++) + even[i + 1] = ptx::addc_cc(even[i + 1], odd[i]); + even[i + 1] = ptx::addc(even[i + 1], 0); + } + + static DEVICE_INLINE void multiply_msb_raw_device(const ff_storage& as, const ff_storage& bs, ff_wide_storage& rs) + { + const uint32_t* a = as.limbs; + const uint32_t* b = bs.limbs; + uint32_t* even = rs.limbs; + __align__(8) uint32_t odd[2 * TLC - 2]; + for (int i = 0; i < 2 * TLC - 1; i++) { + even[i] = 0; + odd[i] = 0; + } + uint32_t min_indexes_sum = TLC - 1; + // only diagonal + mul_n_msb(even, a, b[0], TLC, min_indexes_sum); + mul_n_msb(odd, a + 1, b[0], TLC, min_indexes_sum - 1); + mad_row_msb(&even[2], &odd[0], a, b[1], TLC, min_indexes_sum - 1); + size_t i; +#pragma unroll + for (i = 2; i < TLC - 1; i += 2) { + mad_row(&odd[i], &even[i], a, b[i]); + mad_row(&even[i + 2], &odd[i], a, b[i + 1]); + } + // merge |even| and |odd| + even[1] = ptx::add_cc(even[1], odd[0]); + for (i = 1; i < 2 * TLC - 2; i++) + even[i + 1] = ptx::addc_cc(even[i + 1], odd[i]); + even[i + 1] = ptx::addc(even[i + 1], 0); + } + + static HOST_INLINE void multiply_raw_host(const ff_storage& as, const ff_storage& bs, ff_wide_storage& rs) + { + const uint32_t* a = as.limbs; + const uint32_t* b = bs.limbs; + uint32_t* r = rs.limbs; + for (unsigned i = 0; i < TLC; i++) { + uint32_t carry = 0; + for (unsigned j = 0; j < TLC; j++) + r[j + i] = host_math::madc_cc(a[j], b[i], r[j + i], carry); + r[TLC + i] = carry; + } + } + + static HOST_DEVICE_INLINE void multiply_raw(const ff_storage& as, const ff_storage& bs, ff_wide_storage& rs) + { +#ifdef __CUDA_ARCH__ + return multiply_raw_device(as, bs, rs); +#else + return multiply_raw_host(as, bs, rs); +#endif + } + + static HOST_DEVICE_INLINE void multiply_raw_lsb(const ff_storage& as, const ff_storage& bs, ff_wide_storage& rs) + { +#ifdef __CUDA_ARCH__ + return multiply_lsb_raw_device(as, bs, rs); +#else + return multiply_raw_host(as, bs, rs); +#endif + } + + static HOST_DEVICE_INLINE void multiply_raw_msb(const ff_storage& as, const ff_storage& bs, ff_wide_storage& rs) + { +#ifdef __CUDA_ARCH__ + return multiply_raw_device(as, bs, rs); +#else + return multiply_raw_host(as, bs, rs); +#endif + } + +public: + ff_storage limbs_storage; + + HOST_DEVICE_INLINE uint32_t* export_limbs() { return (uint32_t*)limbs_storage.limbs; } + + HOST_DEVICE_INLINE unsigned get_scalar_digit(unsigned digit_num, unsigned digit_width) + { + const uint32_t limb_lsb_idx = (digit_num * digit_width) / 32; + const uint32_t shift_bits = (digit_num * digit_width) % 32; + unsigned rv = limbs_storage.limbs[limb_lsb_idx] >> shift_bits; + if ((shift_bits + digit_width > 32) && (limb_lsb_idx + 1 < TLC)) { + rv += limbs_storage.limbs[limb_lsb_idx + 1] << (32 - shift_bits); + } + rv &= ((1 << digit_width) - 1); + return rv; + } + + static HOST_INLINE Field rand_host() + { + std::random_device rd; + std::mt19937_64 generator(rd()); + std::uniform_int_distribution distribution; + Field value{}; + for (unsigned i = 0; i < TLC; i++) + value.limbs_storage.limbs[i] = distribution(generator); + while (lt(modulus(), value)) + value = value - modulus(); + return value; + } + + template + static constexpr HOST_DEVICE_INLINE Field sub_modulus(const Field& xs) + { + if (REDUCTION_SIZE == 0) return xs; + const ff_storage modulus = get_modulus(); + Field rs = {}; + return sub_limbs(xs.limbs_storage, modulus, rs.limbs_storage) ? xs : rs; + } + + friend std::ostream& operator<<(std::ostream& os, const Field& xs) + { + std::stringstream hex_string; + hex_string << std::hex << std::setfill('0'); + + for (int i = 0; i < TLC; i++) { + hex_string << std::setw(8) << xs.limbs_storage.limbs[i]; + } + + os << "0x" << hex_string.str(); + return os; + } + + friend HOST_DEVICE_INLINE Field operator+(Field xs, const Field& ys) + { + Field rs = {}; + add_limbs(xs.limbs_storage, ys.limbs_storage, rs.limbs_storage); + return sub_modulus<1>(rs); + } + + friend HOST_DEVICE_INLINE Field operator-(Field xs, const Field& ys) + { + Field rs = {}; + uint32_t carry = sub_limbs(xs.limbs_storage, ys.limbs_storage, rs.limbs_storage); + if (carry == 0) return rs; + const ff_storage modulus = get_modulus<1>(); + add_limbs(rs.limbs_storage, modulus, rs.limbs_storage); + return rs; + } + + template + static constexpr HOST_DEVICE_INLINE Wide mul_wide(const Field& xs, const Field& ys) + { + Wide rs = {}; + multiply_raw(xs.limbs_storage, ys.limbs_storage, rs.limbs_storage); + return rs; + } + + static constexpr DEVICE_INLINE uint32_t + sub_limbs_partial_device(uint32_t* x, uint32_t* y, uint32_t* r, uint32_t num_limbs) + { + r[0] = ptx::sub_cc(x[0], y[0]); +#pragma unroll + for (unsigned i = 1; i < num_limbs; i++) + r[i] = ptx::subc_cc(x[i], y[i]); + return ptx::subc(0, 0); + } + + static constexpr HOST_DEVICE_INLINE uint32_t + sub_limbs_partial(uint32_t* x, uint32_t* y, uint32_t* r, uint32_t num_limbs) + { +#ifdef __CUDA_ARCH__ + return sub_limbs_partial_device(x, y, r, num_limbs); +#else + return sub_limbs_partial_host(x, y, r, num_limbs); +#endif + } + + template + static constexpr HOST_DEVICE_INLINE Field reduce(const Wide& xs) + { + Field xs_hi = Wide::get_higher_with_slack(xs); // xy << slack_bits + Wide l = {}; + multiply_raw_msb(xs_hi.limbs_storage, get_m(), l.limbs_storage); // MSB mult + Field l_hi = Wide::get_higher_with_slack(l); + Wide lp = {}; + multiply_raw_lsb(l_hi.limbs_storage, get_modulus(), lp.limbs_storage); // LSB mult + Wide r_wide = xs - lp; + Wide r_wide_reduced = {}; + for (unsigned i = 0; i < TLC + 1; i++) { + uint32_t carry = sub_limbs_partial( + r_wide.limbs_storage.limbs, modulus_wide().limbs, r_wide_reduced.limbs_storage.limbs, TLC + 1); + if (carry == 0) // continue to reduce + r_wide = r_wide_reduced; + else // done + break; + } + + // number of wrap around is bounded by TLC + 1 times. + Field r = Wide::get_lower(r_wide); + return r; + } + + friend HOST_DEVICE_INLINE Field operator*(const Field& xs, const Field& ys) + { + Wide xy = mul_wide(xs, ys); // full mult + return reduce(xy); + } + + friend HOST_DEVICE_INLINE bool operator==(const Field& xs, const Field& ys) + { +#ifdef __CUDA_ARCH__ + const uint32_t* x = xs.limbs_storage.limbs; + const uint32_t* y = ys.limbs_storage.limbs; + uint32_t limbs_or = x[0] ^ y[0]; +#pragma unroll + for (unsigned i = 1; i < TLC; i++) + limbs_or |= x[i] ^ y[i]; + return limbs_or == 0; +#else + for (unsigned i = 0; i < TLC; i++) + if (xs.limbs_storage.limbs[i] != ys.limbs_storage.limbs[i]) return false; + return true; +#endif + } + + friend HOST_DEVICE_INLINE bool operator!=(const Field& xs, const Field& ys) { return !(xs == ys); } + + template + static HOST_DEVICE_INLINE Field mul_const(const Field& xs) + { + Field mul = multiplier; + static bool is_u32 = true; +#ifdef __CUDA_ARCH__ +#pragma unroll +#endif + for (unsigned i = 1; i < TLC; i++) + is_u32 &= (mul.limbs_storage.limbs[i] == 0); + + if (is_u32) return mul_unsigned(xs); + return mul * xs; + } + + template + static constexpr HOST_DEVICE_INLINE T mul_unsigned(const T& xs) + { + T rs = {}; + T temp = xs; + bool is_zero = true; +#ifdef __CUDA_ARCH__ +#pragma unroll +#endif + for (unsigned i = 0; i < 32; i++) { + if (mutliplier & (1 << i)) { + rs = is_zero ? temp : (rs + temp); + is_zero = false; + } + if (mutliplier & ((1 << (31 - i) - 1) << (i + 1))) break; + temp = temp + temp; + } + return rs; + } + + template + static constexpr HOST_DEVICE_INLINE Wide sqr_wide(const Field& xs) + { + // TODO: change to a more efficient squaring + return mul_wide(xs, xs); + } + + template + static constexpr HOST_DEVICE_INLINE Field sqr(const Field& xs) + { + // TODO: change to a more efficient squaring + return xs * xs; + } + + template + static constexpr HOST_DEVICE_INLINE Field neg(const Field& xs) + { + const ff_storage modulus = get_modulus(); + Field rs = {}; + sub_limbs(modulus, xs.limbs_storage, rs.limbs_storage); + return rs; + } + + template + static constexpr HOST_DEVICE_INLINE Field div2(const Field& xs) + { + const uint32_t* x = xs.limbs_storage.limbs; + Field rs = {}; + uint32_t* r = rs.limbs_storage.limbs; +#ifdef __CUDA_ARCH__ +#pragma unroll +#endif + for (unsigned i = 0; i < TLC - 1; i++) { +#ifdef __CUDA_ARCH__ + r[i] = __funnelshift_rc(x[i], x[i + 1], 1); +#else + r[i] = (x[i] >> 1) | (x[i + 1] << 31); +#endif + } + r[TLC - 1] = x[TLC - 1] >> 1; + return sub_modulus(rs); + } + + static constexpr HOST_DEVICE_INLINE bool lt(const Field& xs, const Field& ys) + { + ff_storage dummy = {}; + uint32_t carry = sub_limbs(xs.limbs_storage, ys.limbs_storage, dummy); + return carry; + } + + static constexpr HOST_DEVICE_INLINE bool is_odd(const Field& xs) { return xs.limbs_storage.limbs[0] & 1; } + + static constexpr HOST_DEVICE_INLINE bool is_even(const Field& xs) { return ~xs.limbs_storage.limbs[0] & 1; } + + // inverse assumes that xs is nonzero + static constexpr HOST_DEVICE_INLINE Field inverse(const Field& xs) + { + constexpr Field one = Field{CONFIG::one}; + constexpr ff_storage modulus = CONFIG::modulus; + Field u = xs; + Field v = Field{modulus}; + Field b = one; + Field c = {}; + while (!(u == one) && !(v == one)) { + while (is_even(u)) { + u = div2(u); + if (is_odd(b)) add_limbs(b.limbs_storage, modulus, b.limbs_storage); + b = div2(b); + } + while (is_even(v)) { + v = div2(v); + if (is_odd(c)) add_limbs(c.limbs_storage, modulus, c.limbs_storage); + c = div2(c); + } + if (lt(v, u)) { + u = u - v; + b = b - c; + } else { + v = v - u; + c = c - b; + } + } + return (u == one) ? b : c; + } }; diff --git a/icicle/primitives/projective.cu b/icicle/primitives/projective.cu index be68a872..5e4da6af 100644 --- a/icicle/primitives/projective.cu +++ b/icicle/primitives/projective.cu @@ -1,49 +1,61 @@ -#include -#include "../curves/bls12_381/curve_config.cuh" #include "../curves/bls12_377/curve_config.cuh" +#include "../curves/bls12_381/curve_config.cuh" #include "../curves/bn254/curve_config.cuh" #include "projective.cuh" +#include -extern "C" bool eq_bls12_381(BLS12_381::projective_t *point1, BLS12_381::projective_t *point2) +extern "C" bool eq_bls12_381(BLS12_381::projective_t* point1, BLS12_381::projective_t* point2) { - return (*point1 == *point2) && - !((point1->x == BLS12_381::point_field_t::zero()) && (point1->y == BLS12_381::point_field_t::zero()) && (point1->z == BLS12_381::point_field_t::zero())) && - !((point2->x == BLS12_381::point_field_t::zero()) && (point2->y == BLS12_381::point_field_t::zero()) && (point2->z == BLS12_381::point_field_t::zero())); + return (*point1 == *point2) && + !((point1->x == BLS12_381::point_field_t::zero()) && (point1->y == BLS12_381::point_field_t::zero()) && + (point1->z == BLS12_381::point_field_t::zero())) && + !((point2->x == BLS12_381::point_field_t::zero()) && (point2->y == BLS12_381::point_field_t::zero()) && + (point2->z == BLS12_381::point_field_t::zero())); } -extern "C" bool eq_bls12_377(BLS12_377::projective_t *point1, BLS12_377::projective_t *point2) +extern "C" bool eq_bls12_377(BLS12_377::projective_t* point1, BLS12_377::projective_t* point2) { - return (*point1 == *point2) && - !((point1->x == BLS12_377::point_field_t::zero()) && (point1->y == BLS12_377::point_field_t::zero()) && (point1->z == BLS12_377::point_field_t::zero())) && - !((point2->x == BLS12_377::point_field_t::zero()) && (point2->y == BLS12_377::point_field_t::zero()) && (point2->z == BLS12_377::point_field_t::zero())); + return (*point1 == *point2) && + !((point1->x == BLS12_377::point_field_t::zero()) && (point1->y == BLS12_377::point_field_t::zero()) && + (point1->z == BLS12_377::point_field_t::zero())) && + !((point2->x == BLS12_377::point_field_t::zero()) && (point2->y == BLS12_377::point_field_t::zero()) && + (point2->z == BLS12_377::point_field_t::zero())); } -extern "C" bool eq_bn254(BN254::projective_t *point1, BN254::projective_t *point2) +extern "C" bool eq_bn254(BN254::projective_t* point1, BN254::projective_t* point2) { - return (*point1 == *point2) && - !((point1->x == BN254::point_field_t::zero()) && (point1->y == BN254::point_field_t::zero()) && (point1->z == BN254::point_field_t::zero())) && - !((point2->x == BN254::point_field_t::zero()) && (point2->y == BN254::point_field_t::zero()) && (point2->z == BN254::point_field_t::zero())); + return (*point1 == *point2) && + !((point1->x == BN254::point_field_t::zero()) && (point1->y == BN254::point_field_t::zero()) && + (point1->z == BN254::point_field_t::zero())) && + !((point2->x == BN254::point_field_t::zero()) && (point2->y == BN254::point_field_t::zero()) && + (point2->z == BN254::point_field_t::zero())); } #if defined(G2_DEFINED) -extern "C" bool eq_g2_bls12_381(BLS12_381::g2_projective_t *point1, BLS12_381::g2_projective_t *point2) +extern "C" bool eq_g2_bls12_381(BLS12_381::g2_projective_t* point1, BLS12_381::g2_projective_t* point2) { - return (*point1 == *point2) && - !((point1->x == BLS12_381::g2_point_field_t::zero()) && (point1->y == BLS12_381::g2_point_field_t::zero()) && (point1->z == BLS12_381::g2_point_field_t::zero())) && - !((point2->x == BLS12_381::g2_point_field_t::zero()) && (point2->y == BLS12_381::g2_point_field_t::zero()) && (point2->z == BLS12_381::g2_point_field_t::zero())); + return (*point1 == *point2) && + !((point1->x == BLS12_381::g2_point_field_t::zero()) && (point1->y == BLS12_381::g2_point_field_t::zero()) && + (point1->z == BLS12_381::g2_point_field_t::zero())) && + !((point2->x == BLS12_381::g2_point_field_t::zero()) && (point2->y == BLS12_381::g2_point_field_t::zero()) && + (point2->z == BLS12_381::g2_point_field_t::zero())); } -extern "C" bool eq_g2_bls12_377(BLS12_377::g2_projective_t *point1, BLS12_377::g2_projective_t *point2) +extern "C" bool eq_g2_bls12_377(BLS12_377::g2_projective_t* point1, BLS12_377::g2_projective_t* point2) { - return (*point1 == *point2) && - !((point1->x == BLS12_377::g2_point_field_t::zero()) && (point1->y == BLS12_377::g2_point_field_t::zero()) && (point1->z == BLS12_377::g2_point_field_t::zero())) && - !((point2->x == BLS12_377::g2_point_field_t::zero()) && (point2->y == BLS12_377::g2_point_field_t::zero()) && (point2->z == BLS12_377::g2_point_field_t::zero())); + return (*point1 == *point2) && + !((point1->x == BLS12_377::g2_point_field_t::zero()) && (point1->y == BLS12_377::g2_point_field_t::zero()) && + (point1->z == BLS12_377::g2_point_field_t::zero())) && + !((point2->x == BLS12_377::g2_point_field_t::zero()) && (point2->y == BLS12_377::g2_point_field_t::zero()) && + (point2->z == BLS12_377::g2_point_field_t::zero())); } -extern "C" bool eq_g2_bn254(BN254::g2_projective_t *point1, BN254::g2_projective_t *point2) +extern "C" bool eq_g2_bn254(BN254::g2_projective_t* point1, BN254::g2_projective_t* point2) { - return (*point1 == *point2) && - !((point1->x == BN254::g2_point_field_t::zero()) && (point1->y == BN254::g2_point_field_t::zero()) && (point1->z == BN254::g2_point_field_t::zero())) && - !((point2->x == BN254::g2_point_field_t::zero()) && (point2->y == BN254::g2_point_field_t::zero()) && (point2->z == BN254::g2_point_field_t::zero())); + return (*point1 == *point2) && + !((point1->x == BN254::g2_point_field_t::zero()) && (point1->y == BN254::g2_point_field_t::zero()) && + (point1->z == BN254::g2_point_field_t::zero())) && + !((point2->x == BN254::g2_point_field_t::zero()) && (point2->y == BN254::g2_point_field_t::zero()) && + (point2->z == BN254::g2_point_field_t::zero())); } #endif \ No newline at end of file diff --git a/icicle/primitives/projective.cuh b/icicle/primitives/projective.cuh index 5ba27481..41cfb77a 100644 --- a/icicle/primitives/projective.cuh +++ b/icicle/primitives/projective.cuh @@ -3,170 +3,164 @@ #include "affine.cuh" template -class Projective { +class Projective +{ friend Affine; - public: - FF x; - FF y; - FF z; +public: + FF x; + FF y; + FF z; - static HOST_DEVICE_INLINE Projective zero() { - return {FF::zero(), FF::one(), FF::zero()}; - } + static HOST_DEVICE_INLINE Projective zero() { return {FF::zero(), FF::one(), FF::zero()}; } - static HOST_DEVICE_INLINE Affine to_affine(const Projective &point) { - FF denom = FF::inverse(point.z); - return {point.x * denom, point.y * denom}; - } + static HOST_DEVICE_INLINE Affine to_affine(const Projective& point) + { + FF denom = FF::inverse(point.z); + return {point.x * denom, point.y * denom}; + } - static HOST_DEVICE_INLINE Projective from_affine(const Affine &point) { - return {point.x, point.y, FF::one()}; - } + static HOST_DEVICE_INLINE Projective from_affine(const Affine& point) { return {point.x, point.y, FF::one()}; } - static HOST_DEVICE_INLINE Projective generator() { - return {FF::generator_x(), FF::generator_y(), FF::one()}; - } + static HOST_DEVICE_INLINE Projective generator() { return {FF::generator_x(), FF::generator_y(), FF::one()}; } - static HOST_DEVICE_INLINE Projective neg(const Projective &point) { - return {point.x, FF::neg(point.y), point.z}; - } + static HOST_DEVICE_INLINE Projective neg(const Projective& point) { return {point.x, FF::neg(point.y), point.z}; } - friend HOST_DEVICE_INLINE Projective operator+(Projective p1, const Projective& p2) { - const FF X1 = p1.x; // < 2 - const FF Y1 = p1.y; // < 2 - const FF Z1 = p1.z; // < 2 - const FF X2 = p2.x; // < 2 - const FF Y2 = p2.y; // < 2 - const FF Z2 = p2.z; // < 2 - const FF t00 = X1 * X2; // t00 ← X1 · X2 < 2 - const FF t01 = Y1 * Y2; // t01 ← Y1 · Y2 < 2 - const FF t02 = Z1 * Z2; // t02 ← Z1 · Z2 < 2 - const FF t03 = X1 + Y1; // t03 ← X1 + Y1 < 4 - const FF t04 = X2 + Y2; // t04 ← X2 + Y2 < 4 - const FF t05 = t03 * t04; // t03 ← t03 · t04 < 3 - const FF t06 = t00 + t01; // t06 ← t00 + t01 < 4 - const FF t07 = t05 - t06; // t05 ← t05 − t06 < 2 - const FF t08 = Y1 + Z1; // t08 ← Y1 + Z1 < 4 - const FF t09 = Y2 + Z2; // t09 ← Y2 + Z2 < 4 - const FF t10 = t08 * t09; // t10 ← t08 · t09 < 3 - const FF t11 = t01 + t02; // t11 ← t01 + t02 < 4 - const FF t12 = t10 - t11; // t12 ← t10 − t11 < 2 - const FF t13 = X1 + Z1; // t13 ← X1 + Z1 < 4 - const FF t14 = X2 + Z2; // t14 ← X2 + Z2 < 4 - const FF t15 = t13 * t14; // t15 ← t13 · t14 < 3 - const FF t16 = t00 + t02; // t16 ← t00 + t02 < 4 - const FF t17 = t15 - t16; // t17 ← t15 − t16 < 2 - const FF t18 = t00 + t00; // t18 ← t00 + t00 < 2 - const FF t19 = t18 + t00; // t19 ← t18 + t00 < 2 - const FF t20 = FF::template mul_unsigned<3>( - FF::template mul_const(t02)); // t20 ← b3 · t02 < 2 - const FF t21 = t01 + t20; // t21 ← t01 + t20 < 2 - const FF t22 = t01 - t20; // t22 ← t01 − t20 < 2 - const FF t23 = FF::template mul_unsigned<3>( - FF::template mul_const(t17)); // t23 ← b3 · t17 < 2 - const auto t24 = FF::mul_wide(t12, t23); // t24 ← t12 · t23 < 2 - const auto t25 = FF::mul_wide(t07, t22); // t25 ← t07 · t22 < 2 - const FF X3 = FF::reduce(t25 - t24); // X3 ← t25 − t24 < 2 - const auto t27 = FF::mul_wide(t23, t19); // t27 ← t23 · t19 < 2 - const auto t28 = FF::mul_wide(t22, t21); // t28 ← t22 · t21 < 2 - const FF Y3 = FF::reduce(t28 + t27); // Y3 ← t28 + t27 < 2 - const auto t30 = FF::mul_wide(t19, t07); // t30 ← t19 · t07 < 2 - const auto t31 = FF::mul_wide(t21, t12); // t31 ← t21 · t12 < 2 - const FF Z3 = FF::reduce(t31 + t30); // Z3 ← t31 + t30 < 2 - return {X3, Y3, Z3}; - } + friend HOST_DEVICE_INLINE Projective operator+(Projective p1, const Projective& p2) + { + const FF X1 = p1.x; // < 2 + const FF Y1 = p1.y; // < 2 + const FF Z1 = p1.z; // < 2 + const FF X2 = p2.x; // < 2 + const FF Y2 = p2.y; // < 2 + const FF Z2 = p2.z; // < 2 + const FF t00 = X1 * X2; // t00 ← X1 · X2 < 2 + const FF t01 = Y1 * Y2; // t01 ← Y1 · Y2 < 2 + const FF t02 = Z1 * Z2; // t02 ← Z1 · Z2 < 2 + const FF t03 = X1 + Y1; // t03 ← X1 + Y1 < 4 + const FF t04 = X2 + Y2; // t04 ← X2 + Y2 < 4 + const FF t05 = t03 * t04; // t03 ← t03 · t04 < 3 + const FF t06 = t00 + t01; // t06 ← t00 + t01 < 4 + const FF t07 = t05 - t06; // t05 ← t05 − t06 < 2 + const FF t08 = Y1 + Z1; // t08 ← Y1 + Z1 < 4 + const FF t09 = Y2 + Z2; // t09 ← Y2 + Z2 < 4 + const FF t10 = t08 * t09; // t10 ← t08 · t09 < 3 + const FF t11 = t01 + t02; // t11 ← t01 + t02 < 4 + const FF t12 = t10 - t11; // t12 ← t10 − t11 < 2 + const FF t13 = X1 + Z1; // t13 ← X1 + Z1 < 4 + const FF t14 = X2 + Z2; // t14 ← X2 + Z2 < 4 + const FF t15 = t13 * t14; // t15 ← t13 · t14 < 3 + const FF t16 = t00 + t02; // t16 ← t00 + t02 < 4 + const FF t17 = t15 - t16; // t17 ← t15 − t16 < 2 + const FF t18 = t00 + t00; // t18 ← t00 + t00 < 2 + const FF t19 = t18 + t00; // t19 ← t18 + t00 < 2 + const FF t20 = FF::template mul_unsigned<3>(FF::template mul_const(t02)); // t20 ← b3 · t02 < 2 + const FF t21 = t01 + t20; // t21 ← t01 + t20 < 2 + const FF t22 = t01 - t20; // t22 ← t01 − t20 < 2 + const FF t23 = FF::template mul_unsigned<3>(FF::template mul_const(t17)); // t23 ← b3 · t17 < 2 + const auto t24 = FF::mul_wide(t12, t23); // t24 ← t12 · t23 < 2 + const auto t25 = FF::mul_wide(t07, t22); // t25 ← t07 · t22 < 2 + const FF X3 = FF::reduce(t25 - t24); // X3 ← t25 − t24 < 2 + const auto t27 = FF::mul_wide(t23, t19); // t27 ← t23 · t19 < 2 + const auto t28 = FF::mul_wide(t22, t21); // t28 ← t22 · t21 < 2 + const FF Y3 = FF::reduce(t28 + t27); // Y3 ← t28 + t27 < 2 + const auto t30 = FF::mul_wide(t19, t07); // t30 ← t19 · t07 < 2 + const auto t31 = FF::mul_wide(t21, t12); // t31 ← t21 · t12 < 2 + const FF Z3 = FF::reduce(t31 + t30); // Z3 ← t31 + t30 < 2 + return {X3, Y3, Z3}; + } - friend HOST_DEVICE_INLINE Projective operator-(Projective p1, const Projective& p2) { - return p1 + neg(p2); - } + friend HOST_DEVICE_INLINE Projective operator-(Projective p1, const Projective& p2) { return p1 + neg(p2); } - friend HOST_DEVICE_INLINE Projective operator+(Projective p1, const Affine& p2) { - const FF X1 = p1.x; // < 2 - const FF Y1 = p1.y; // < 2 - const FF Z1 = p1.z; // < 2 - const FF X2 = p2.x; // < 2 - const FF Y2 = p2.y; // < 2 - const FF t00 = X1 * X2; // t00 ← X1 · X2 < 2 - const FF t01 = Y1 * Y2; // t01 ← Y1 · Y2 < 2 - const FF t02 = Z1; // t02 ← Z1 < 2 - const FF t03 = X1 + Y1; // t03 ← X1 + Y1 < 4 - const FF t04 = X2 + Y2; // t04 ← X2 + Y2 < 4 - const FF t05 = t03 * t04; // t03 ← t03 · t04 < 3 - const FF t06 = t00 + t01; // t06 ← t00 + t01 < 4 - const FF t07 = t05 - t06; // t05 ← t05 − t06 < 2 - const FF t08 = Y1 + Z1; // t08 ← Y1 + Z1 < 4 - const FF t09 = Y2 + FF::one(); // t09 ← Y2 + 1 < 4 - const FF t10 = t08 * t09; // t10 ← t08 · t09 < 3 - const FF t11 = t01 + t02; // t11 ← t01 + t02 < 4 - const FF t12 = t10 - t11; // t12 ← t10 − t11 < 2 - const FF t13 = X1 + Z1; // t13 ← X1 + Z1 < 4 - const FF t14 = X2 + FF::one(); // t14 ← X2 + 1 < 4 - const FF t15 = t13 * t14; // t15 ← t13 · t14 < 3 - const FF t16 = t00 + t02; // t16 ← t00 + t02 < 4 - const FF t17 = t15 - t16; // t17 ← t15 − t16 < 2 - const FF t18 = t00 + t00; // t18 ← t00 + t00 < 2 - const FF t19 = t18 + t00; // t19 ← t18 + t00 < 2 - const FF t20 = FF::template mul_unsigned<3>( - FF::template mul_const(t02)); // t20 ← b3 · t02 < 2 - const FF t21 = t01 + t20; // t21 ← t01 + t20 < 2 - const FF t22 = t01 - t20; // t22 ← t01 − t20 < 2 - const FF t23 = FF::template mul_unsigned<3>( - FF::template mul_const(t17)); // t23 ← b3 · t17 < 2 - const auto t24 = FF::mul_wide(t12, t23); // t24 ← t12 · t23 < 2 - const auto t25 = FF::mul_wide(t07, t22); // t25 ← t07 · t22 < 2 - const FF X3 = FF::reduce(t25 - t24); // X3 ← t25 − t24 < 2 - const auto t27 = FF::mul_wide(t23, t19); // t27 ← t23 · t19 < 2 - const auto t28 = FF::mul_wide(t22, t21); // t28 ← t22 · t21 < 2 - const FF Y3 = FF::reduce(t28 + t27); // Y3 ← t28 + t27 < 2 - const auto t30 = FF::mul_wide(t19, t07); // t30 ← t19 · t07 < 2 - const auto t31 = FF::mul_wide(t21, t12); // t31 ← t21 · t12 < 2 - const FF Z3 = FF::reduce(t31 + t30); // Z3 ← t31 + t30 < 2 - return {X3, Y3, Z3}; - } + friend HOST_DEVICE_INLINE Projective operator+(Projective p1, const Affine& p2) + { + const FF X1 = p1.x; // < 2 + const FF Y1 = p1.y; // < 2 + const FF Z1 = p1.z; // < 2 + const FF X2 = p2.x; // < 2 + const FF Y2 = p2.y; // < 2 + const FF t00 = X1 * X2; // t00 ← X1 · X2 < 2 + const FF t01 = Y1 * Y2; // t01 ← Y1 · Y2 < 2 + const FF t02 = Z1; // t02 ← Z1 < 2 + const FF t03 = X1 + Y1; // t03 ← X1 + Y1 < 4 + const FF t04 = X2 + Y2; // t04 ← X2 + Y2 < 4 + const FF t05 = t03 * t04; // t03 ← t03 · t04 < 3 + const FF t06 = t00 + t01; // t06 ← t00 + t01 < 4 + const FF t07 = t05 - t06; // t05 ← t05 − t06 < 2 + const FF t08 = Y1 + Z1; // t08 ← Y1 + Z1 < 4 + const FF t09 = Y2 + FF::one(); // t09 ← Y2 + 1 < 4 + const FF t10 = t08 * t09; // t10 ← t08 · t09 < 3 + const FF t11 = t01 + t02; // t11 ← t01 + t02 < 4 + const FF t12 = t10 - t11; // t12 ← t10 − t11 < 2 + const FF t13 = X1 + Z1; // t13 ← X1 + Z1 < 4 + const FF t14 = X2 + FF::one(); // t14 ← X2 + 1 < 4 + const FF t15 = t13 * t14; // t15 ← t13 · t14 < 3 + const FF t16 = t00 + t02; // t16 ← t00 + t02 < 4 + const FF t17 = t15 - t16; // t17 ← t15 − t16 < 2 + const FF t18 = t00 + t00; // t18 ← t00 + t00 < 2 + const FF t19 = t18 + t00; // t19 ← t18 + t00 < 2 + const FF t20 = FF::template mul_unsigned<3>(FF::template mul_const(t02)); // t20 ← b3 · t02 < 2 + const FF t21 = t01 + t20; // t21 ← t01 + t20 < 2 + const FF t22 = t01 - t20; // t22 ← t01 − t20 < 2 + const FF t23 = FF::template mul_unsigned<3>(FF::template mul_const(t17)); // t23 ← b3 · t17 < 2 + const auto t24 = FF::mul_wide(t12, t23); // t24 ← t12 · t23 < 2 + const auto t25 = FF::mul_wide(t07, t22); // t25 ← t07 · t22 < 2 + const FF X3 = FF::reduce(t25 - t24); // X3 ← t25 − t24 < 2 + const auto t27 = FF::mul_wide(t23, t19); // t27 ← t23 · t19 < 2 + const auto t28 = FF::mul_wide(t22, t21); // t28 ← t22 · t21 < 2 + const FF Y3 = FF::reduce(t28 + t27); // Y3 ← t28 + t27 < 2 + const auto t30 = FF::mul_wide(t19, t07); // t30 ← t19 · t07 < 2 + const auto t31 = FF::mul_wide(t21, t12); // t31 ← t21 · t12 < 2 + const FF Z3 = FF::reduce(t31 + t30); // Z3 ← t31 + t30 < 2 + return {X3, Y3, Z3}; + } - friend HOST_DEVICE_INLINE Projective operator-(Projective p1, const Affine& p2) { - return p1 + Affine::neg(p2); - } + friend HOST_DEVICE_INLINE Projective operator-(Projective p1, const Affine& p2) + { + return p1 + Affine::neg(p2); + } - friend HOST_DEVICE_INLINE Projective operator*(SCALAR_FF scalar, const Projective& point) { - Projective res = zero(); - #ifdef __CUDA_ARCH__ - #pragma unroll - #endif - for (int i = 0; i < SCALAR_FF::NBITS; i++) { - if (i > 0) { - res = res + res; - } - if (scalar.get_scalar_digit(SCALAR_FF::NBITS - i - 1, 1)) { - res = res + point; - } - } - return res; + friend HOST_DEVICE_INLINE Projective operator*(SCALAR_FF scalar, const Projective& point) + { + Projective res = zero(); +#ifdef __CUDA_ARCH__ +#pragma unroll +#endif + for (int i = 0; i < SCALAR_FF::NBITS; i++) { + if (i > 0) { res = res + res; } + if (scalar.get_scalar_digit(SCALAR_FF::NBITS - i - 1, 1)) { res = res + point; } } + return res; + } - friend HOST_DEVICE_INLINE bool operator==(const Projective& p1, const Projective& p2) { - return (p1.x * p2.z == p2.x * p1.z) && (p1.y * p2.z == p2.y * p1.z); - } + friend HOST_DEVICE_INLINE bool operator==(const Projective& p1, const Projective& p2) + { + return (p1.x * p2.z == p2.x * p1.z) && (p1.y * p2.z == p2.y * p1.z); + } - friend HOST_INLINE std::ostream& operator<<(std::ostream& os, const Projective& point) { - os << "Point { x: " << point.x << "; y: " << point.y << "; z: " << point.z << " }"; - return os; - } + friend HOST_INLINE std::ostream& operator<<(std::ostream& os, const Projective& point) + { + os << "Point { x: " << point.x << "; y: " << point.y << "; z: " << point.z << " }"; + return os; + } - static HOST_DEVICE_INLINE bool is_zero(const Projective &point) { - return point.x == FF::zero() && point.y != FF::zero() && point.z == FF::zero(); - } + static HOST_DEVICE_INLINE bool is_zero(const Projective& point) + { + return point.x == FF::zero() && point.y != FF::zero() && point.z == FF::zero(); + } - static HOST_DEVICE_INLINE bool is_on_curve(const Projective &point) { - if (is_zero(point)) - return true; - bool eq_holds = (FF::template mul_const(FF::sqr(point.z) * point.z) + FF::sqr(point.x) * point.x == point.z * FF::sqr(point.y)); - return point.z != FF::zero() && eq_holds; - } + static HOST_DEVICE_INLINE bool is_on_curve(const Projective& point) + { + if (is_zero(point)) return true; + bool eq_holds = + (FF::template mul_const(FF::sqr(point.z) * point.z) + FF::sqr(point.x) * point.x == + point.z * FF::sqr(point.y)); + return point.z != FF::zero() && eq_holds; + } - static HOST_INLINE Projective rand_host() { - SCALAR_FF rand_scalar = SCALAR_FF::rand_host(); - return rand_scalar * generator(); - } + static HOST_INLINE Projective rand_host() + { + SCALAR_FF rand_scalar = SCALAR_FF::rand_host(); + return rand_scalar * generator(); + } }; diff --git a/icicle/primitives/test.cu b/icicle/primitives/test.cu index adc6572d..c8793e99 100644 --- a/icicle/primitives/test.cu +++ b/icicle/primitives/test.cu @@ -1,62 +1,65 @@ +#include "test_kernels.cuh" +#include #include #include -#include "test_kernels.cuh" #include -#include namespace mp = boost::multiprecision; template -int device_populate_random(T* d_elements, unsigned n) { - T h_elements[n]; - for (unsigned i = 0; i < n; i++) - h_elements[i] = T::rand_host(); - return cudaMemcpy(d_elements, h_elements, sizeof(T) * n, cudaMemcpyHostToDevice); +int device_populate_random(T* d_elements, unsigned n) +{ + T h_elements[n]; + for (unsigned i = 0; i < n; i++) + h_elements[i] = T::rand_host(); + return cudaMemcpy(d_elements, h_elements, sizeof(T) * n, cudaMemcpyHostToDevice); } template -int device_set(T* d_elements, T el, unsigned n) { - T h_elements[n]; - for (unsigned i = 0; i < n; i++) - h_elements[i] = el; - return cudaMemcpy(d_elements, h_elements, sizeof(T) * n, cudaMemcpyHostToDevice); +int device_set(T* d_elements, T el, unsigned n) +{ + T h_elements[n]; + for (unsigned i = 0; i < n; i++) + h_elements[i] = el; + return cudaMemcpy(d_elements, h_elements, sizeof(T) * n, cudaMemcpyHostToDevice); } -mp::int1024_t convert_to_boost_mp(uint32_t *a, uint32_t length) +mp::int1024_t convert_to_boost_mp(uint32_t* a, uint32_t length) { mp::int1024_t res = 0; - for (uint32_t i = 0; i < length; i++) - { + for (uint32_t i = 0; i < length; i++) { res += (mp::int1024_t)(a[i]) << 32 * i; } return res; } -class PrimitivesTest : public ::testing::Test { +class PrimitivesTest : public ::testing::Test +{ protected: static const unsigned n = 1 << 4; - projective_t *points1{}; - projective_t *points2{}; - g2_projective_t *g2_points1{}; - g2_projective_t *g2_points2{}; - scalar_field_t *scalars1{}; - scalar_field_t *scalars2{}; - projective_t *zero_points{}; - g2_projective_t *g2_zero_points{}; - scalar_field_t *zero_scalars{}; - scalar_field_t *one_scalars{}; - affine_t *aff_points{}; - g2_affine_t *g2_aff_points{}; - projective_t *res_points1{}; - projective_t *res_points2{}; - g2_projective_t *g2_res_points1{}; - g2_projective_t *g2_res_points2{}; - scalar_field_t *res_scalars1{}; - scalar_field_t *res_scalars2{}; - scalar_field_t::Wide *res_scalars_wide{}; - scalar_field_t::Wide *res_scalars_wide_full{}; + projective_t* points1{}; + projective_t* points2{}; + g2_projective_t* g2_points1{}; + g2_projective_t* g2_points2{}; + scalar_field_t* scalars1{}; + scalar_field_t* scalars2{}; + projective_t* zero_points{}; + g2_projective_t* g2_zero_points{}; + scalar_field_t* zero_scalars{}; + scalar_field_t* one_scalars{}; + affine_t* aff_points{}; + g2_affine_t* g2_aff_points{}; + projective_t* res_points1{}; + projective_t* res_points2{}; + g2_projective_t* g2_res_points1{}; + g2_projective_t* g2_res_points2{}; + scalar_field_t* res_scalars1{}; + scalar_field_t* res_scalars2{}; + scalar_field_t::Wide* res_scalars_wide{}; + scalar_field_t::Wide* res_scalars_wide_full{}; - PrimitivesTest() { + PrimitivesTest() + { assert(!cudaDeviceReset()); assert(!cudaMallocManaged(&points1, n * sizeof(projective_t))); assert(!cudaMallocManaged(&points2, n * sizeof(projective_t))); @@ -80,7 +83,8 @@ protected: assert(!cudaMallocManaged(&res_scalars_wide_full, n * sizeof(scalar_field_t::Wide))); } - ~PrimitivesTest() override { + ~PrimitivesTest() override + { cudaFree(points1); cudaFree(points2); cudaFree(g2_points1); @@ -106,7 +110,8 @@ protected: cudaDeviceReset(); } - void SetUp() override { + void SetUp() override + { ASSERT_EQ(device_populate_random(points1, n), cudaSuccess); ASSERT_EQ(device_populate_random(points2, n), cudaSuccess); ASSERT_EQ(device_populate_random(g2_points1, n), cudaSuccess); @@ -130,32 +135,37 @@ protected: } }; -TEST_F(PrimitivesTest, FieldAdditionSubtractionCancel) { +TEST_F(PrimitivesTest, FieldAdditionSubtractionCancel) +{ ASSERT_EQ(vec_add(scalars1, scalars2, res_scalars1, n), cudaSuccess); ASSERT_EQ(vec_sub(res_scalars1, scalars2, res_scalars2, n), cudaSuccess); for (unsigned i = 0; i < n; i++) ASSERT_EQ(scalars1[i], res_scalars2[i]); } -TEST_F(PrimitivesTest, FieldZeroAddition) { +TEST_F(PrimitivesTest, FieldZeroAddition) +{ ASSERT_EQ(vec_add(scalars1, zero_scalars, res_scalars1, n), cudaSuccess); for (unsigned i = 0; i < n; i++) ASSERT_EQ(scalars1[i], res_scalars1[i]); } -TEST_F(PrimitivesTest, FieldAdditionHostDeviceEq) { +TEST_F(PrimitivesTest, FieldAdditionHostDeviceEq) +{ ASSERT_EQ(vec_add(scalars1, scalars2, res_scalars1, n), cudaSuccess); for (unsigned i = 0; i < n; i++) ASSERT_EQ(scalars1[i] + scalars2[i], res_scalars1[i]); } -TEST_F(PrimitivesTest, FieldMultiplicationByOne) { +TEST_F(PrimitivesTest, FieldMultiplicationByOne) +{ ASSERT_EQ(vec_mul(scalars1, one_scalars, res_scalars1, n), cudaSuccess); for (unsigned i = 0; i < n; i++) ASSERT_EQ(scalars1[i], res_scalars1[i]); } -TEST_F(PrimitivesTest, FieldMultiplicationByMinusOne) { +TEST_F(PrimitivesTest, FieldMultiplicationByMinusOne) +{ ASSERT_EQ(vec_neg(one_scalars, res_scalars1, n), cudaSuccess); ASSERT_EQ(vec_mul(scalars1, res_scalars1, res_scalars2, n), cudaSuccess); ASSERT_EQ(vec_add(scalars1, res_scalars2, res_scalars1, n), cudaSuccess); @@ -163,82 +173,95 @@ TEST_F(PrimitivesTest, FieldMultiplicationByMinusOne) { ASSERT_EQ(res_scalars1[i], zero_scalars[i]); } -TEST_F(PrimitivesTest, FieldMultiplicationByZero) { +TEST_F(PrimitivesTest, FieldMultiplicationByZero) +{ ASSERT_EQ(vec_mul(scalars1, zero_scalars, res_scalars1, n), cudaSuccess); for (unsigned i = 0; i < n; i++) ASSERT_EQ(zero_scalars[i], res_scalars1[i]); } -TEST_F(PrimitivesTest, FieldMultiplicationInverseCancel) { +TEST_F(PrimitivesTest, FieldMultiplicationInverseCancel) +{ ASSERT_EQ(vec_mul(scalars1, scalars2, res_scalars1, n), cudaSuccess); ASSERT_EQ(field_vec_inv(scalars2, res_scalars2, n), cudaSuccess); for (unsigned i = 0; i < n; i++) ASSERT_EQ(scalars1[i], res_scalars1[i] * res_scalars2[i]); } -TEST_F(PrimitivesTest, FieldMultiplicationHostDeviceEq) { +TEST_F(PrimitivesTest, FieldMultiplicationHostDeviceEq) +{ ASSERT_EQ(vec_mul(scalars1, scalars2, res_scalars1, n), cudaSuccess); for (unsigned i = 0; i < n; i++) ASSERT_EQ(scalars1[i] * scalars2[i], res_scalars1[i]); } -TEST_F(PrimitivesTest, FieldMultiplicationByTwoEqSum) { +TEST_F(PrimitivesTest, FieldMultiplicationByTwoEqSum) +{ ASSERT_EQ(vec_add(one_scalars, one_scalars, res_scalars1, n), cudaSuccess); ASSERT_EQ(vec_mul(res_scalars1, scalars1, res_scalars2, n), cudaSuccess); for (unsigned i = 0; i < n; i++) ASSERT_EQ(res_scalars2[i], scalars1[i] + scalars1[i]); } -TEST_F(PrimitivesTest, FieldSqrHostDeviceEq) { +TEST_F(PrimitivesTest, FieldSqrHostDeviceEq) +{ ASSERT_EQ(field_vec_sqr(scalars1, res_scalars1, n), cudaSuccess); for (unsigned i = 0; i < n; i++) ASSERT_EQ(scalars1[i] * scalars1[i], res_scalars1[i]); } -TEST_F(PrimitivesTest, FieldMultiplicationSqrEq) { +TEST_F(PrimitivesTest, FieldMultiplicationSqrEq) +{ ASSERT_EQ(vec_mul(scalars1, scalars1, res_scalars1, n), cudaSuccess); ASSERT_EQ(field_vec_sqr(scalars1, res_scalars2, n), cudaSuccess); for (unsigned i = 0; i < n; i++) ASSERT_EQ(res_scalars1[i], res_scalars2[i]); } -TEST_F(PrimitivesTest, ECRandomPointsAreOnCurve) { +TEST_F(PrimitivesTest, ECRandomPointsAreOnCurve) +{ for (unsigned i = 0; i < n; i++) ASSERT_PRED1(projective_t::is_on_curve, points1[i]); } -TEST_F(PrimitivesTest, ECPointAdditionSubtractionCancel) { +TEST_F(PrimitivesTest, ECPointAdditionSubtractionCancel) +{ ASSERT_EQ(vec_add(points1, points2, res_points1, n), cudaSuccess); ASSERT_EQ(vec_sub(res_points1, points2, res_points2, n), cudaSuccess); for (unsigned i = 0; i < n; i++) ASSERT_EQ(points1[i], res_points2[i]); } -TEST_F(PrimitivesTest, ECPointZeroAddition) { +TEST_F(PrimitivesTest, ECPointZeroAddition) +{ ASSERT_EQ(vec_add(points1, zero_points, res_points1, n), cudaSuccess); for (unsigned i = 0; i < n; i++) ASSERT_EQ(points1[i], res_points1[i]); } -TEST_F(PrimitivesTest, ECPointAdditionHostDeviceEq) { +TEST_F(PrimitivesTest, ECPointAdditionHostDeviceEq) +{ ASSERT_EQ(vec_add(points1, points2, res_points1, n), cudaSuccess); for (unsigned i = 0; i < n; i++) ASSERT_EQ(points1[i] + points2[i], res_points1[i]); } -TEST_F(PrimitivesTest, ECScalarMultiplicationHostDeviceEq) { +TEST_F(PrimitivesTest, ECScalarMultiplicationHostDeviceEq) +{ ASSERT_EQ(vec_mul(scalars1, points1, res_points1, n), cudaSuccess); for (unsigned i = 0; i < n; i++) ASSERT_EQ(scalars1[i] * points1[i], res_points1[i]); } -TEST_F(PrimitivesTest, ECScalarMultiplicationByOne) { +TEST_F(PrimitivesTest, ECScalarMultiplicationByOne) +{ ASSERT_EQ(vec_mul(one_scalars, points1, res_points1, n), cudaSuccess); for (unsigned i = 0; i < n; i++) ASSERT_EQ(points1[i], res_points1[i]); } -TEST_F(PrimitivesTest, ECScalarMultiplicationByMinusOne) { +TEST_F(PrimitivesTest, ECScalarMultiplicationByMinusOne) +{ ASSERT_EQ(vec_neg(one_scalars, res_scalars1, n), cudaSuccess); ASSERT_EQ(vec_mul(res_scalars1, points1, res_points1, n), cudaSuccess); ASSERT_EQ(vec_neg(points1, res_points2, n), cudaSuccess); @@ -246,14 +269,16 @@ TEST_F(PrimitivesTest, ECScalarMultiplicationByMinusOne) { ASSERT_EQ(res_points1[i], res_points2[i]); } -TEST_F(PrimitivesTest, ECScalarMultiplicationByTwo) { +TEST_F(PrimitivesTest, ECScalarMultiplicationByTwo) +{ ASSERT_EQ(vec_add(one_scalars, one_scalars, res_scalars1, n), cudaSuccess); ASSERT_EQ(vec_mul(res_scalars1, points1, res_points1, n), cudaSuccess); for (unsigned i = 0; i < n; i++) ASSERT_EQ((one_scalars[i] + one_scalars[i]) * points1[i], res_points1[i]); } -TEST_F(PrimitivesTest, ECScalarMultiplicationInverseCancel) { +TEST_F(PrimitivesTest, ECScalarMultiplicationInverseCancel) +{ ASSERT_EQ(vec_mul(scalars1, points1, res_points1, n), cudaSuccess); ASSERT_EQ(field_vec_inv(scalars1, res_scalars1, n), cudaSuccess); ASSERT_EQ(vec_mul(res_scalars1, res_points1, res_points2, n), cudaSuccess); @@ -261,7 +286,8 @@ TEST_F(PrimitivesTest, ECScalarMultiplicationInverseCancel) { ASSERT_EQ(points1[i], res_points2[i]); } -TEST_F(PrimitivesTest, ECScalarMultiplicationIsDistributiveOverMultiplication) { +TEST_F(PrimitivesTest, ECScalarMultiplicationIsDistributiveOverMultiplication) +{ ASSERT_EQ(vec_mul(scalars1, points1, res_points1, n), cudaSuccess); ASSERT_EQ(vec_mul(scalars2, res_points1, res_points2, n), cudaSuccess); ASSERT_EQ(vec_mul(scalars1, scalars2, res_scalars1, n), cudaSuccess); @@ -270,7 +296,8 @@ TEST_F(PrimitivesTest, ECScalarMultiplicationIsDistributiveOverMultiplication) { ASSERT_EQ(res_points1[i], res_points2[i]); } -TEST_F(PrimitivesTest, ECScalarMultiplicationIsDistributiveOverAddition) { +TEST_F(PrimitivesTest, ECScalarMultiplicationIsDistributiveOverAddition) +{ ASSERT_EQ(vec_mul(scalars1, points1, res_points1, n), cudaSuccess); ASSERT_EQ(vec_mul(scalars2, points1, res_points2, n), cudaSuccess); ASSERT_EQ(vec_add(scalars1, scalars2, res_scalars1, n), cudaSuccess); @@ -278,13 +305,15 @@ TEST_F(PrimitivesTest, ECScalarMultiplicationIsDistributiveOverAddition) { ASSERT_EQ(res_scalars1[i] * points1[i], res_points1[i] + res_points2[i]); } -TEST_F(PrimitivesTest, ECProjectiveToAffine) { +TEST_F(PrimitivesTest, ECProjectiveToAffine) +{ ASSERT_EQ(point_vec_to_affine(points1, aff_points, n), cudaSuccess); for (unsigned i = 0; i < n; i++) ASSERT_EQ(points1[i], projective_t::from_affine(aff_points[i])); } -TEST_F(PrimitivesTest, ECMixedPointAddition) { +TEST_F(PrimitivesTest, ECMixedPointAddition) +{ ASSERT_EQ(point_vec_to_affine(points2, aff_points, n), cudaSuccess); ASSERT_EQ(vec_add(points1, aff_points, res_points1, n), cudaSuccess); ASSERT_EQ(vec_add(points1, points2, res_points2, n), cudaSuccess); @@ -292,7 +321,8 @@ TEST_F(PrimitivesTest, ECMixedPointAddition) { ASSERT_EQ(res_points1[i], res_points2[i]); } -TEST_F(PrimitivesTest, ECMixedAdditionOfNegatedPointEqSubtraction) { +TEST_F(PrimitivesTest, ECMixedAdditionOfNegatedPointEqSubtraction) +{ ASSERT_EQ(point_vec_to_affine(points2, aff_points, n), cudaSuccess); ASSERT_EQ(vec_sub(points1, aff_points, res_points1, n), cudaSuccess); ASSERT_EQ(vec_neg(points2, res_points2, n), cudaSuccess); @@ -300,117 +330,100 @@ TEST_F(PrimitivesTest, ECMixedAdditionOfNegatedPointEqSubtraction) { ASSERT_EQ(res_points1[i], points1[i] + res_points2[i]); } -TEST_F(PrimitivesTest, MP_LSB_MULT) { +TEST_F(PrimitivesTest, MP_LSB_MULT) +{ // LSB multiply, check correctness of first TLC + 1 digits result. ASSERT_EQ(mp_lsb_mult(scalars1, scalars2, res_scalars_wide), cudaSuccess); std::cout << "first GPU lsb mult output = 0x"; - for (int i=0; i<2*scalar_field_t::TLC; i++) - { + for (int i = 0; i < 2 * scalar_field_t::TLC; i++) { std::cout << std::hex << res_scalars_wide[0].limbs_storage.limbs[i]; } std::cout << std::endl; - ASSERT_EQ(mp_mult(scalars1, scalars2, res_scalars_wide_full), cudaSuccess); std::cout << "first GPU full mult output = 0x"; - for (int i=0; i<2*scalar_field_t::TLC; i++) - { + for (int i = 0; i < 2 * scalar_field_t::TLC; i++) { std::cout << std::hex << res_scalars_wide_full[0].limbs_storage.limbs[i]; } std::cout << std::endl; - for (int j = 0; j < n; j++) - { - for (int i=0; i=0 ; i--) - { + for (int i = 2 * scalar_field_t::TLC - 1; i >= 0; i--) { std::cout << std::hex << res_scalars_wide[0].limbs_storage.limbs[i] << " "; } std::cout << std::endl; - ASSERT_EQ(mp_mult(scalars1, scalars2, res_scalars_wide_full), cudaSuccess); std::cout << "first GPU full mult output = 0x"; - for (int i=2*scalar_field_t::TLC - 1; i >=0 ; i--) - { + for (int i = 2 * scalar_field_t::TLC - 1; i >= 0; i--) { std::cout << std::hex << res_scalars_wide_full[0].limbs_storage.limbs[i] << " "; } std::cout << std::endl; - for (int i=0; i < 2*scalar_field_t::TLC - 1; i++) - { + for (int i = 0; i < 2 * scalar_field_t::TLC - 1; i++) { if (res_scalars_wide_full[0].limbs_storage.limbs[i] == res_scalars_wide[0].limbs_storage.limbs[i]) - std::cout << "matched word idx = " << i << std::endl; + std::cout << "matched word idx = " << i << std::endl; } - } -TEST_F(PrimitivesTest, INGO_MP_MULT) { +TEST_F(PrimitivesTest, INGO_MP_MULT) +{ // MSB multiply, take n msb bits of multiplication, assert that the error is up to 1. ASSERT_EQ(ingo_mp_mult(scalars1, scalars2, res_scalars_wide), cudaSuccess); std::cout << "INGO = 0x"; - for (int i=0; i < 2*scalar_field_t::TLC ; i++) - { + for (int i = 0; i < 2 * scalar_field_t::TLC; i++) { std::cout << std::hex << res_scalars_wide[0].limbs_storage.limbs[i] << " "; } std::cout << std::endl; - ASSERT_EQ(mp_mult(scalars1, scalars2, res_scalars_wide_full), cudaSuccess); std::cout << "ZKSYNC = 0x"; - for (int i=0; i < 2*scalar_field_t::TLC ; i++) - { + for (int i = 0; i < 2 * scalar_field_t::TLC; i++) { std::cout << std::hex << res_scalars_wide_full[0].limbs_storage.limbs[i] << " "; } std::cout << std::endl; - for (int i=0; i < 2*scalar_field_t::TLC - 1; i++) - { + for (int i = 0; i < 2 * scalar_field_t::TLC - 1; i++) { if (res_scalars_wide_full[0].limbs_storage.limbs[i] == res_scalars_wide[0].limbs_storage.limbs[i]) - std::cout << "matched word idx = " << i << std::endl; + std::cout << "matched word idx = " << i << std::endl; } - for (int j=0; j= 0 ; i--) - { + for (int i = 2 * scalar_field_t::TLC - 1; i >= 0; i--) { std::cout << std::hex << res_scalars_wide[0].limbs_storage.limbs[i] << " "; } std::cout << std::endl; ASSERT_EQ(mp_mult(scalars1, scalars2, res_scalars_wide_full), cudaSuccess); std::cout << "ZKSYNC = 0x"; - for (int i=2*scalar_field_t::TLC - 1; i >= 0 ; i--) - { + for (int i = 2 * scalar_field_t::TLC - 1; i >= 0; i--) { std::cout << std::hex << res_scalars_wide_full[0].limbs_storage.limbs[i] << " "; } std::cout << std::endl; - - + // for (int i=scalar_field::TLC; i < 2*scalar_field::TLC - 1; i++) // { // ASSERT_EQ(in_bound, true); @@ -428,9 +441,8 @@ TEST_F(PrimitivesTest, INGO_MP_MSB_MULT) { mp::int1024_t res_mp = 0; mp::int1024_t res_gpu = 0; uint32_t num_limbs = scalar_field_t::TLC; - - for (int j=0; j> (num_limbs * 32); res_gpu = convert_to_boost_mp(&(res_scalars_wide[j]).limbs_storage.limbs[num_limbs], num_limbs); - std::cout << "res mp = " << res_mp << std::endl; + std::cout << "res mp = " << res_mp << std::endl; std::cout << "res gpu = " << res_gpu << std::endl; std::cout << "error = " << res_mp - res_gpu << std::endl; bool upper_bound = res_gpu <= res_mp; bool lower_bound = res_gpu > (res_mp - num_limbs); bool in_bound = upper_bound && lower_bound; - - + ASSERT_EQ(in_bound, true); } } -TEST_F(PrimitivesTest, INGO_MP_MOD_MULT) { - std::cout << " taking num limbs " << std::endl; +TEST_F(PrimitivesTest, INGO_MP_MOD_MULT) +{ + std::cout << " taking num limbs " << std::endl; uint32_t num_limbs = scalar_field_t::TLC; - std::cout << " calling gpu... = " << std::endl; + std::cout << " calling gpu... = " << std::endl; ASSERT_EQ(ingo_mp_mod_mult(scalars1, scalars2, res_scalars1, n), cudaSuccess); - std::cout << " gpu call done " << std::endl; + std::cout << " gpu call done " << std::endl; // mp testing mp::int1024_t scalar_1_mp = 0; mp::int1024_t scalar_2_mp = 0; @@ -463,10 +475,8 @@ TEST_F(PrimitivesTest, INGO_MP_MOD_MULT) { mp::int1024_t res_gpu = 0; mp::int1024_t p = convert_to_boost_mp(scalar_field_t::get_modulus().limbs, num_limbs); std::cout << " p = " << p << std::endl; - - - for (int j=0; j -__global__ void add_elements_kernel(const T1 *x, const T2 *y, T1 *result, const unsigned count) { +__global__ void add_elements_kernel(const T1* x, const T2* y, T1* result, const unsigned count) +{ const unsigned gid = blockIdx.x * blockDim.x + threadIdx.x; - if (gid >= count) - return; + if (gid >= count) return; result[gid] = x[gid] + y[gid]; } -template int vec_add(const T1 *x, const T2 *y, T1 *result, const unsigned count) { +template +int vec_add(const T1* x, const T2* y, T1* result, const unsigned count) +{ add_elements_kernel<<<(count - 1) / 32 + 1, 32>>>(x, y, result, count); int error = cudaGetLastError(); return error ? error : cudaDeviceSynchronize(); } template -__global__ void sub_elements_kernel(const T1 *x, const T2 *y, T1 *result, const unsigned count) { +__global__ void sub_elements_kernel(const T1* x, const T2* y, T1* result, const unsigned count) +{ const unsigned gid = blockIdx.x * blockDim.x + threadIdx.x; - if (gid >= count) - return; + if (gid >= count) return; result[gid] = x[gid] - y[gid]; } -template int vec_sub(const T1 *x, const T2 *y, T1 *result, const unsigned count) { +template +int vec_sub(const T1* x, const T2* y, T1* result, const unsigned count) +{ sub_elements_kernel<<<(count - 1) / 32 + 1, 32>>>(x, y, result, count); int error = cudaGetLastError(); return error ? error : cudaDeviceSynchronize(); } template -__global__ void neg_elements_kernel(const T *x, T *result, const unsigned count) { +__global__ void neg_elements_kernel(const T* x, T* result, const unsigned count) +{ const unsigned gid = blockIdx.x * blockDim.x + threadIdx.x; - if (gid >= count) - return; + if (gid >= count) return; result[gid] = T::neg(x[gid]); } -template int vec_neg(const T *x, T *result, const unsigned count) { +template +int vec_neg(const T* x, T* result, const unsigned count) +{ neg_elements_kernel<<<(count - 1) / 32 + 1, 32>>>(x, result, count); int error = cudaGetLastError(); return error ? error : cudaDeviceSynchronize(); } template -__global__ void mul_elements_kernel(const F *x, const G *y, G *result, const unsigned count) { +__global__ void mul_elements_kernel(const F* x, const G* y, G* result, const unsigned count) +{ const unsigned gid = blockIdx.x * blockDim.x + threadIdx.x; - if (gid >= count) - return; + if (gid >= count) return; result[gid] = x[gid] * y[gid]; } -template int vec_mul(const F *x, const G *y, G *result, const unsigned count) { +template +int vec_mul(const F* x, const G* y, G* result, const unsigned count) +{ mul_elements_kernel<<<(count - 1) / 32 + 1, 32>>>(x, y, result, count); int error = cudaGetLastError(); return error ? error : cudaDeviceSynchronize(); } -__global__ void inv_field_elements_kernel(const scalar_field_t *x, scalar_field_t *result, const unsigned count) { +__global__ void inv_field_elements_kernel(const scalar_field_t* x, scalar_field_t* result, const unsigned count) +{ const unsigned gid = blockIdx.x * blockDim.x + threadIdx.x; - if (gid >= count) - return; + if (gid >= count) return; result[gid] = scalar_field_t::inverse(x[gid]); } -int field_vec_inv(const scalar_field_t *x, scalar_field_t *result, const unsigned count) { +int field_vec_inv(const scalar_field_t* x, scalar_field_t* result, const unsigned count) +{ inv_field_elements_kernel<<<(count - 1) / 32 + 1, 32>>>(x, result, count); int error = cudaGetLastError(); return error ? error : cudaDeviceSynchronize(); } -__global__ void sqr_field_elements_kernel(const scalar_field_t *x, scalar_field_t *result, const unsigned count) { +__global__ void sqr_field_elements_kernel(const scalar_field_t* x, scalar_field_t* result, const unsigned count) +{ const unsigned gid = blockIdx.x * blockDim.x + threadIdx.x; - if (gid >= count) - return; + if (gid >= count) return; result[gid] = scalar_field_t::sqr(x[gid]); } -int field_vec_sqr(const scalar_field_t *x, scalar_field_t *result, const unsigned count) { +int field_vec_sqr(const scalar_field_t* x, scalar_field_t* result, const unsigned count) +{ sqr_field_elements_kernel<<<(count - 1) / 32 + 1, 32>>>(x, result, count); int error = cudaGetLastError(); return error ? error : cudaDeviceSynchronize(); } template -__global__ void to_affine_points_kernel(const P *x, A *result, const unsigned count) { +__global__ void to_affine_points_kernel(const P* x, A* result, const unsigned count) +{ const unsigned gid = blockIdx.x * blockDim.x + threadIdx.x; - if (gid >= count) - return; + if (gid >= count) return; result[gid] = P::to_affine(x[gid]); } -template int point_vec_to_affine(const P *x, A *result, const unsigned count) { +template +int point_vec_to_affine(const P* x, A* result, const unsigned count) +{ to_affine_points_kernel<<<(count - 1) / 32 + 1, 32>>>(x, result, count); int error = cudaGetLastError(); return error ? error : cudaDeviceSynchronize(); } - -__global__ void mp_mult_kernel(const scalar_field_t *x, const scalar_field_t *y, scalar_field_t::Wide *result) { +__global__ void mp_mult_kernel(const scalar_field_t* x, const scalar_field_t* y, scalar_field_t::Wide* result) +{ const unsigned gid = blockIdx.x * blockDim.x + threadIdx.x; scalar_field_t::multiply_raw_device(x[gid].limbs_storage, y[gid].limbs_storage, result[gid].limbs_storage); } - -int mp_mult(const scalar_field_t *x, scalar_field_t *y, scalar_field_t::Wide *result) +int mp_mult(const scalar_field_t* x, scalar_field_t* y, scalar_field_t::Wide* result) { mp_mult_kernel<<<1, 32>>>(x, y, result); int error = cudaGetLastError(); - return error ? error : cudaDeviceSynchronize(); + return error ? error : cudaDeviceSynchronize(); } - - -__global__ void mp_lsb_mult_kernel(const scalar_field_t *x, const scalar_field_t *y, scalar_field_t::Wide *result) { +__global__ void mp_lsb_mult_kernel(const scalar_field_t* x, const scalar_field_t* y, scalar_field_t::Wide* result) +{ const unsigned gid = blockIdx.x * blockDim.x + threadIdx.x; scalar_field_t::multiply_lsb_raw_device(x[gid].limbs_storage, y[gid].limbs_storage, result[gid].limbs_storage); } - -int mp_lsb_mult(const scalar_field_t *x, scalar_field_t *y, scalar_field_t::Wide *result) +int mp_lsb_mult(const scalar_field_t* x, scalar_field_t* y, scalar_field_t::Wide* result) { mp_lsb_mult_kernel<<<1, 32>>>(x, y, result); int error = cudaGetLastError(); - return error ? error : cudaDeviceSynchronize(); + return error ? error : cudaDeviceSynchronize(); } -__global__ void mp_msb_mult_kernel(const scalar_field_t *x, const scalar_field_t *y, scalar_field_t::Wide *result) { +__global__ void mp_msb_mult_kernel(const scalar_field_t* x, const scalar_field_t* y, scalar_field_t::Wide* result) +{ const unsigned gid = blockIdx.x * blockDim.x + threadIdx.x; scalar_field_t::multiply_msb_raw_device(x[gid].limbs_storage, y[gid].limbs_storage, result[gid].limbs_storage); } - -int mp_msb_mult(const scalar_field_t *x, scalar_field_t *y, scalar_field_t::Wide *result) +int mp_msb_mult(const scalar_field_t* x, scalar_field_t* y, scalar_field_t::Wide* result) { mp_msb_mult_kernel<<<1, 1>>>(x, y, result); int error = cudaGetLastError(); - return error ? error : cudaDeviceSynchronize(); + return error ? error : cudaDeviceSynchronize(); } - -__global__ void ingo_mp_mult_kernel(const scalar_field_t *x, const scalar_field_t *y, scalar_field_t::Wide *result) { +__global__ void ingo_mp_mult_kernel(const scalar_field_t* x, const scalar_field_t* y, scalar_field_t::Wide* result) +{ const unsigned gid = blockIdx.x * blockDim.x + threadIdx.x; scalar_field_t::ingo_multiply_raw_device(x[gid].limbs_storage, y[gid].limbs_storage, result[gid].limbs_storage); } - -int ingo_mp_mult(const scalar_field_t *x, scalar_field_t *y, scalar_field_t::Wide *result) +int ingo_mp_mult(const scalar_field_t* x, scalar_field_t* y, scalar_field_t::Wide* result) { ingo_mp_mult_kernel<<<1, 32>>>(x, y, result); int error = cudaGetLastError(); - return error ? error : cudaDeviceSynchronize(); + return error ? error : cudaDeviceSynchronize(); } - -__global__ void ingo_mp_msb_mult_kernel(const scalar_field_t *x, const scalar_field_t *y, scalar_field_t::Wide *result) { +__global__ void ingo_mp_msb_mult_kernel(const scalar_field_t* x, const scalar_field_t* y, scalar_field_t::Wide* result) +{ const unsigned gid = blockIdx.x * blockDim.x + threadIdx.x; scalar_field_t::ingo_msb_multiply_raw_device(x[gid].limbs_storage, y[gid].limbs_storage, result[gid].limbs_storage); } - -int ingo_mp_msb_mult(const scalar_field_t *x, scalar_field_t *y, scalar_field_t::Wide *result, const unsigned n) +int ingo_mp_msb_mult(const scalar_field_t* x, scalar_field_t* y, scalar_field_t::Wide* result, const unsigned n) { ingo_mp_msb_mult_kernel<<<1, n>>>(x, y, result); int error = cudaGetLastError(); - return error ? error : cudaDeviceSynchronize(); + return error ? error : cudaDeviceSynchronize(); } - -__global__ void ingo_mp_mod_mult_kernel(const scalar_field_t *x, const scalar_field_t *y, scalar_field_t *result) { +__global__ void ingo_mp_mod_mult_kernel(const scalar_field_t* x, const scalar_field_t* y, scalar_field_t* result) +{ const unsigned gid = blockIdx.x * blockDim.x + threadIdx.x; result[gid] = x[gid] * y[gid]; } - -int ingo_mp_mod_mult(const scalar_field_t *x, scalar_field_t *y, scalar_field_t *result, const unsigned n) +int ingo_mp_mod_mult(const scalar_field_t* x, scalar_field_t* y, scalar_field_t* result, const unsigned n) { ingo_mp_mod_mult_kernel<<<1, n>>>(x, y, result); int error = cudaGetLastError(); - return error ? error : cudaDeviceSynchronize(); + return error ? error : cudaDeviceSynchronize(); } \ No newline at end of file diff --git a/icicle/utils/cuda_utils.cuh b/icicle/utils/cuda_utils.cuh index 733bbada..071e8d89 100644 --- a/icicle/utils/cuda_utils.cuh +++ b/icicle/utils/cuda_utils.cuh @@ -2,39 +2,30 @@ #include struct cuda_ctx { - int device_id; - cudaMemPool_t mempool; - cudaStream_t stream; + int device_id; + cudaMemPool_t mempool; + cudaStream_t stream; - cuda_ctx(int gpu_id) { - gpu_id = gpu_id; - cudaMemPoolProps pool_props; - pool_props.allocType = cudaMemAllocationTypePinned; - pool_props.handleTypes = cudaMemHandleTypePosixFileDescriptor; - pool_props.location.type = cudaMemLocationTypeDevice; - pool_props.location.id = device_id; + cuda_ctx(int gpu_id) + { + gpu_id = gpu_id; + cudaMemPoolProps pool_props; + pool_props.allocType = cudaMemAllocationTypePinned; + pool_props.handleTypes = cudaMemHandleTypePosixFileDescriptor; + pool_props.location.type = cudaMemLocationTypeDevice; + pool_props.location.id = device_id; - cudaMemPoolCreate(&mempool, &pool_props); - cudaStreamCreate(&stream); - } + cudaMemPoolCreate(&mempool, &pool_props); + cudaStreamCreate(&stream); + } - void set_device() { - cudaSetDevice(device_id); - } + void set_device() { cudaSetDevice(device_id); } - void sync_stream() { - cudaStreamSynchronize(stream); - } - - void malloc(void *ptr, size_t bytesize) { - cudaMallocFromPoolAsync(&ptr, bytesize, mempool, stream); - } - - void free(void *ptr) { - cudaFreeAsync(ptr, stream); - } + void sync_stream() { cudaStreamSynchronize(stream); } + void malloc(void* ptr, size_t bytesize) { cudaMallocFromPoolAsync(&ptr, bytesize, mempool, stream); } + void free(void* ptr) { cudaFreeAsync(ptr, stream); } }; // -- Proposed Function Tops -------------------------------------------------- diff --git a/icicle/utils/host_math.cuh b/icicle/utils/host_math.cuh index c9ec3c96..73922b92 100644 --- a/icicle/utils/host_math.cuh +++ b/icicle/utils/host_math.cuh @@ -5,85 +5,92 @@ namespace host_math { -// return x + y with uint32_t operands -static __host__ uint32_t add(const uint32_t x, const uint32_t y) { return x + y; } + // return x + y with uint32_t operands + static __host__ uint32_t add(const uint32_t x, const uint32_t y) { return x + y; } -// return x + y + carry with uint32_t operands -static __host__ uint32_t addc(const uint32_t x, const uint32_t y, const uint32_t carry) { return x + y + carry; } + // return x + y + carry with uint32_t operands + static __host__ uint32_t addc(const uint32_t x, const uint32_t y, const uint32_t carry) { return x + y + carry; } -// return x + y and carry out with uint32_t operands -static __host__ uint32_t add_cc(const uint32_t x, const uint32_t y, uint32_t &carry) { - uint32_t result; - result = x + y; - carry = x > result; - return result; -} - -// return x + y + carry and carry out with uint32_t operands -static __host__ uint32_t addc_cc(const uint32_t x, const uint32_t y, uint32_t &carry) { - const uint32_t result = x + y + carry; - carry = carry && x >= result || !carry && x > result; - return result; -} - -// return x - y with uint32_t operands -static __host__ uint32_t sub(const uint32_t x, const uint32_t y) { return x - y; } - -// return x - y - borrow with uint32_t operands -static __host__ uint32_t subc(const uint32_t x, const uint32_t y, const uint32_t borrow) { return x - y - borrow; } - -// return x - y and borrow out with uint32_t operands -static __host__ uint32_t sub_cc(const uint32_t x, const uint32_t y, uint32_t &borrow) { - uint32_t result; - result = x - y; - borrow = x < result; - return result; -} - -// return x - y - borrow and borrow out with uint32_t operands -static __host__ uint32_t subc_cc(const uint32_t x, const uint32_t y, uint32_t &borrow) { - const uint32_t result = x - y - borrow; - borrow = borrow && x <= result || !borrow && x < result; - return result; -} - -// return x * y + z + carry and carry out with uint32_t operands -static __host__ uint32_t madc_cc(const uint32_t x, const uint32_t y, const uint32_t z, uint32_t &carry) { - uint32_t result; - uint64_t r = static_cast(x) * y + z + carry; - carry = r >> 32; - result = r & 0xffffffff; - return result; -} - - -template struct carry_chain { - unsigned index; - - constexpr __host__ __forceinline__ carry_chain() : index(0) {} - - __host__ __forceinline__ uint32_t add(const uint32_t x, const uint32_t y, uint32_t &carry) { - index++; - if (index == 1 && OPS_COUNT == 1 && !CARRY_IN && !CARRY_OUT) - return host_math::add(x, y); - else if (index == 1 && !CARRY_IN) - return host_math::add_cc(x, y, carry); - else if (index < OPS_COUNT || CARRY_OUT) - return host_math::addc_cc(x, y, carry); - else - return host_math::addc(x, y, carry); + // return x + y and carry out with uint32_t operands + static __host__ uint32_t add_cc(const uint32_t x, const uint32_t y, uint32_t& carry) + { + uint32_t result; + result = x + y; + carry = x > result; + return result; } - __host__ __forceinline__ uint32_t sub(const uint32_t x, const uint32_t y, uint32_t &carry) { - index++; - if (index == 1 && OPS_COUNT == 1 && !CARRY_IN && !CARRY_OUT) - return host_math::sub(x, y); - else if (index == 1 && !CARRY_IN) - return host_math::sub_cc(x, y, carry); - else if (index < OPS_COUNT || CARRY_OUT) - return host_math::subc_cc(x, y, carry); - else - return host_math::subc(x, y, carry); + // return x + y + carry and carry out with uint32_t operands + static __host__ uint32_t addc_cc(const uint32_t x, const uint32_t y, uint32_t& carry) + { + const uint32_t result = x + y + carry; + carry = carry && x >= result || !carry && x > result; + return result; } -}; + + // return x - y with uint32_t operands + static __host__ uint32_t sub(const uint32_t x, const uint32_t y) { return x - y; } + + // return x - y - borrow with uint32_t operands + static __host__ uint32_t subc(const uint32_t x, const uint32_t y, const uint32_t borrow) { return x - y - borrow; } + + // return x - y and borrow out with uint32_t operands + static __host__ uint32_t sub_cc(const uint32_t x, const uint32_t y, uint32_t& borrow) + { + uint32_t result; + result = x - y; + borrow = x < result; + return result; + } + + // return x - y - borrow and borrow out with uint32_t operands + static __host__ uint32_t subc_cc(const uint32_t x, const uint32_t y, uint32_t& borrow) + { + const uint32_t result = x - y - borrow; + borrow = borrow && x <= result || !borrow && x < result; + return result; + } + + // return x * y + z + carry and carry out with uint32_t operands + static __host__ uint32_t madc_cc(const uint32_t x, const uint32_t y, const uint32_t z, uint32_t& carry) + { + uint32_t result; + uint64_t r = static_cast(x) * y + z + carry; + carry = r >> 32; + result = r & 0xffffffff; + return result; + } + + template + struct carry_chain { + unsigned index; + + constexpr __host__ __forceinline__ carry_chain() : index(0) {} + + __host__ __forceinline__ uint32_t add(const uint32_t x, const uint32_t y, uint32_t& carry) + { + index++; + if (index == 1 && OPS_COUNT == 1 && !CARRY_IN && !CARRY_OUT) + return host_math::add(x, y); + else if (index == 1 && !CARRY_IN) + return host_math::add_cc(x, y, carry); + else if (index < OPS_COUNT || CARRY_OUT) + return host_math::addc_cc(x, y, carry); + else + return host_math::addc(x, y, carry); + } + + __host__ __forceinline__ uint32_t sub(const uint32_t x, const uint32_t y, uint32_t& carry) + { + index++; + if (index == 1 && OPS_COUNT == 1 && !CARRY_IN && !CARRY_OUT) + return host_math::sub(x, y); + else if (index == 1 && !CARRY_IN) + return host_math::sub_cc(x, y, carry); + else if (index < OPS_COUNT || CARRY_OUT) + return host_math::subc_cc(x, y, carry); + else + return host_math::subc(x, y, carry); + } + }; } // namespace host_math diff --git a/icicle/utils/mont.cuh b/icicle/utils/mont.cuh index a4107102..d02d130d 100644 --- a/icicle/utils/mont.cuh +++ b/icicle/utils/mont.cuh @@ -3,23 +3,25 @@ #include "../appUtils/vector_manipulation/ve_mod_mult.cuh" template -int convert_montgomery(E *d_inout, size_t n_elments, bool is_into, cudaStream_t stream) -{ - // Set the grid and block dimensions - int num_threads = MAX_THREADS_PER_BLOCK; - int num_blocks = (n_elments + num_threads - 1) / num_threads; - E mont = is_into ? E::montgomery_r() : E::montgomery_r_inv(); - template_normalize_kernel<<>>(d_inout, n_elments, mont); +int convert_montgomery(E* d_inout, size_t n_elments, bool is_into, cudaStream_t stream) +{ + // Set the grid and block dimensions + int num_threads = MAX_THREADS_PER_BLOCK; + int num_blocks = (n_elments + num_threads - 1) / num_threads; + E mont = is_into ? E::montgomery_r() : E::montgomery_r_inv(); + template_normalize_kernel<<>>(d_inout, n_elments, mont); - return 0; //TODO: void with propper error handling + return 0; // TODO: void with propper error handling } template -int to_montgomery(E* d_inout, unsigned n, cudaStream_t stream) { - return convert_montgomery(d_inout, n, true, stream); +int to_montgomery(E* d_inout, unsigned n, cudaStream_t stream) +{ + return convert_montgomery(d_inout, n, true, stream); } template -int from_montgomery(E* d_inout, unsigned n, cudaStream_t stream){ - return convert_montgomery(d_inout, n, false, stream); +int from_montgomery(E* d_inout, unsigned n, cudaStream_t stream) +{ + return convert_montgomery(d_inout, n, false, stream); } \ No newline at end of file diff --git a/icicle/utils/objects.cuh b/icicle/utils/objects.cuh index 3ce66914..f3a5a655 100644 --- a/icicle/utils/objects.cuh +++ b/icicle/utils/objects.cuh @@ -1,73 +1,63 @@ #pragma once -template < class F > class Element { - public: - int v; - __device__ __host__ Element < F > () { - v = 0; - } - __device__ __host__ Element < F > (int r) { - v = r % F::q; - if (r == F::q) v = F::q; - } - __device__ __host__ Element < F > operator + (Element < F > - const & obj) { - Element < F > res; - res.v = (v + obj.v) % F::q; - return res; - } - __device__ __host__ Element < F > operator - (Element < F > - const & obj) { - Element < F > res; - res.v = (v - obj.v) % F::q; - if (res.v < 0) { - res.v = F::q + res.v; - } - return res; - } +template +class Element +{ +public: + int v; + __device__ __host__ Element() { v = 0; } + __device__ __host__ Element(int r) + { + v = r % F::q; + if (r == F::q) v = F::q; + } + __device__ __host__ Element operator+(Element const& obj) + { + Element res; + res.v = (v + obj.v) % F::q; + return res; + } + __device__ __host__ Element operator-(Element const& obj) + { + Element res; + res.v = (v - obj.v) % F::q; + if (res.v < 0) { res.v = F::q + res.v; } + return res; + } }; -template < class F > class Scalar { - public: - int v; - __device__ __host__ Scalar < F > () { - v = 0; - } - __device__ __host__ Scalar < F > (int r) { - v = r % F::q; - } - __device__ __host__ Scalar < F > operator + (Scalar < F > - const & obj) { - Scalar < F > res; - res.v = (v + obj.v) % F::q; - return res; - } - __device__ __host__ Scalar < F > operator * (Scalar < F > - const & obj) { - Scalar < F > res; - res.v = (v * obj.v) % F::q; - return res; - } - __device__ __host__ Element < F > operator * (Element < F > - const & obj) { - Element < F > res; - res.v = (v * obj.v) % F::q; - return res; - } - Scalar < F > operator - (Scalar < F > const & obj) { - Scalar < F > res; - res.v = (v - obj.v) % F::q; - if (res.v < 0) { - res.v = F::q + res.v; - } - return res; - } - bool operator < (Scalar < F > const & obj) { - return v < obj.v; - } - static Scalar one(){ - return Scalar(1); - } - static Scalar zero(){ - return Scalar(0); - } +template +class Scalar +{ +public: + int v; + __device__ __host__ Scalar() { v = 0; } + __device__ __host__ Scalar(int r) { v = r % F::q; } + __device__ __host__ Scalar operator+(Scalar const& obj) + { + Scalar res; + res.v = (v + obj.v) % F::q; + return res; + } + __device__ __host__ Scalar operator*(Scalar const& obj) + { + Scalar res; + res.v = (v * obj.v) % F::q; + return res; + } + __device__ __host__ Element operator*(Element const& obj) + { + Element res; + res.v = (v * obj.v) % F::q; + return res; + } + Scalar operator-(Scalar const& obj) + { + Scalar res; + res.v = (v - obj.v) % F::q; + if (res.v < 0) { res.v = F::q + res.v; } + return res; + } + bool operator<(Scalar const& obj) { return v < obj.v; } + static Scalar one() { return Scalar(1); } + static Scalar zero() { return Scalar(0); } }; \ No newline at end of file diff --git a/icicle/utils/ptx.cuh b/icicle/utils/ptx.cuh index dac80aec..7625bd92 100644 --- a/icicle/utils/ptx.cuh +++ b/icicle/utils/ptx.cuh @@ -4,238 +4,279 @@ namespace ptx { -__device__ __forceinline__ uint32_t add(const uint32_t x, const uint32_t y) { - uint32_t result; - asm("add.u32 %0, %1, %2;" : "=r"(result) : "r"(x), "r"(y)); - return result; -} + __device__ __forceinline__ uint32_t add(const uint32_t x, const uint32_t y) + { + uint32_t result; + asm("add.u32 %0, %1, %2;" : "=r"(result) : "r"(x), "r"(y)); + return result; + } -__device__ __forceinline__ uint32_t add_cc(const uint32_t x, const uint32_t y) { - uint32_t result; - asm volatile("add.cc.u32 %0, %1, %2;" : "=r"(result) : "r"(x), "r"(y)); - return result; -} + __device__ __forceinline__ uint32_t add_cc(const uint32_t x, const uint32_t y) + { + uint32_t result; + asm volatile("add.cc.u32 %0, %1, %2;" : "=r"(result) : "r"(x), "r"(y)); + return result; + } -__device__ __forceinline__ uint32_t addc(const uint32_t x, const uint32_t y) { - uint32_t result; - asm volatile("addc.u32 %0, %1, %2;" : "=r"(result) : "r"(x), "r"(y)); - return result; -} + __device__ __forceinline__ uint32_t addc(const uint32_t x, const uint32_t y) + { + uint32_t result; + asm volatile("addc.u32 %0, %1, %2;" : "=r"(result) : "r"(x), "r"(y)); + return result; + } -__device__ __forceinline__ uint32_t addc_cc(const uint32_t x, const uint32_t y) { - uint32_t result; - asm volatile("addc.cc.u32 %0, %1, %2;" : "=r"(result) : "r"(x), "r"(y)); - return result; -} + __device__ __forceinline__ uint32_t addc_cc(const uint32_t x, const uint32_t y) + { + uint32_t result; + asm volatile("addc.cc.u32 %0, %1, %2;" : "=r"(result) : "r"(x), "r"(y)); + return result; + } -__device__ __forceinline__ uint32_t sub(const uint32_t x, const uint32_t y) { - uint32_t result; - asm("sub.u32 %0, %1, %2;" : "=r"(result) : "r"(x), "r"(y)); - return result; -} + __device__ __forceinline__ uint32_t sub(const uint32_t x, const uint32_t y) + { + uint32_t result; + asm("sub.u32 %0, %1, %2;" : "=r"(result) : "r"(x), "r"(y)); + return result; + } -__device__ __forceinline__ uint32_t sub_cc(const uint32_t x, const uint32_t y) { - uint32_t result; - asm volatile("sub.cc.u32 %0, %1, %2;" : "=r"(result) : "r"(x), "r"(y)); - return result; -} + __device__ __forceinline__ uint32_t sub_cc(const uint32_t x, const uint32_t y) + { + uint32_t result; + asm volatile("sub.cc.u32 %0, %1, %2;" : "=r"(result) : "r"(x), "r"(y)); + return result; + } -__device__ __forceinline__ uint32_t subc(const uint32_t x, const uint32_t y) { - uint32_t result; - asm volatile("subc.u32 %0, %1, %2;" : "=r"(result) : "r"(x), "r"(y)); - return result; -} + __device__ __forceinline__ uint32_t subc(const uint32_t x, const uint32_t y) + { + uint32_t result; + asm volatile("subc.u32 %0, %1, %2;" : "=r"(result) : "r"(x), "r"(y)); + return result; + } -__device__ __forceinline__ uint32_t subc_cc(const uint32_t x, const uint32_t y) { - uint32_t result; - asm volatile("subc.cc.u32 %0, %1, %2;" : "=r"(result) : "r"(x), "r"(y)); - return result; -} + __device__ __forceinline__ uint32_t subc_cc(const uint32_t x, const uint32_t y) + { + uint32_t result; + asm volatile("subc.cc.u32 %0, %1, %2;" : "=r"(result) : "r"(x), "r"(y)); + return result; + } -__device__ __forceinline__ uint32_t mul_lo(const uint32_t x, const uint32_t y) { - uint32_t result; - asm("mul.lo.u32 %0, %1, %2;" : "=r"(result) : "r"(x), "r"(y)); - return result; -} + __device__ __forceinline__ uint32_t mul_lo(const uint32_t x, const uint32_t y) + { + uint32_t result; + asm("mul.lo.u32 %0, %1, %2;" : "=r"(result) : "r"(x), "r"(y)); + return result; + } -__device__ __forceinline__ uint32_t mul_hi(const uint32_t x, const uint32_t y) { - uint32_t result; - asm("mul.hi.u32 %0, %1, %2;" : "=r"(result) : "r"(x), "r"(y)); - return result; -} + __device__ __forceinline__ uint32_t mul_hi(const uint32_t x, const uint32_t y) + { + uint32_t result; + asm("mul.hi.u32 %0, %1, %2;" : "=r"(result) : "r"(x), "r"(y)); + return result; + } -__device__ __forceinline__ uint32_t mad_lo(const uint32_t x, const uint32_t y, const uint32_t z) { - uint32_t result; - asm("mad.lo.u32 %0, %1, %2, %3;" : "=r"(result) : "r"(x), "r"(y), "r"(z)); - return result; -} + __device__ __forceinline__ uint32_t mad_lo(const uint32_t x, const uint32_t y, const uint32_t z) + { + uint32_t result; + asm("mad.lo.u32 %0, %1, %2, %3;" : "=r"(result) : "r"(x), "r"(y), "r"(z)); + return result; + } -__device__ __forceinline__ uint32_t mad_hi(const uint32_t x, const uint32_t y, const uint32_t z) { - uint32_t result; - asm("mad.hi.u32 %0, %1, %2, %3;" : "=r"(result) : "r"(x), "r"(y), "r"(z)); - return result; -} + __device__ __forceinline__ uint32_t mad_hi(const uint32_t x, const uint32_t y, const uint32_t z) + { + uint32_t result; + asm("mad.hi.u32 %0, %1, %2, %3;" : "=r"(result) : "r"(x), "r"(y), "r"(z)); + return result; + } -__device__ __forceinline__ uint32_t mad_lo_cc(const uint32_t x, const uint32_t y, const uint32_t z) { - uint32_t result; - asm volatile("mad.lo.cc.u32 %0, %1, %2, %3;" : "=r"(result) : "r"(x), "r"(y), "r"(z)); - return result; -} + __device__ __forceinline__ uint32_t mad_lo_cc(const uint32_t x, const uint32_t y, const uint32_t z) + { + uint32_t result; + asm volatile("mad.lo.cc.u32 %0, %1, %2, %3;" : "=r"(result) : "r"(x), "r"(y), "r"(z)); + return result; + } -__device__ __forceinline__ uint32_t mad_hi_cc(const uint32_t x, const uint32_t y, const uint32_t z) { - uint32_t result; - asm volatile("mad.hi.cc.u32 %0, %1, %2, %3;" : "=r"(result) : "r"(x), "r"(y), "r"(z)); - return result; -} + __device__ __forceinline__ uint32_t mad_hi_cc(const uint32_t x, const uint32_t y, const uint32_t z) + { + uint32_t result; + asm volatile("mad.hi.cc.u32 %0, %1, %2, %3;" : "=r"(result) : "r"(x), "r"(y), "r"(z)); + return result; + } -__device__ __forceinline__ uint32_t madc_lo(const uint32_t x, const uint32_t y, const uint32_t z) { - uint32_t result; - asm volatile("madc.lo.u32 %0, %1, %2, %3;" : "=r"(result) : "r"(x), "r"(y), "r"(z)); - return result; -} + __device__ __forceinline__ uint32_t madc_lo(const uint32_t x, const uint32_t y, const uint32_t z) + { + uint32_t result; + asm volatile("madc.lo.u32 %0, %1, %2, %3;" : "=r"(result) : "r"(x), "r"(y), "r"(z)); + return result; + } -__device__ __forceinline__ uint32_t madc_hi(const uint32_t x, const uint32_t y, const uint32_t z) { - uint32_t result; - asm volatile("madc.hi.u32 %0, %1, %2, %3;" : "=r"(result) : "r"(x), "r"(y), "r"(z)); - return result; -} + __device__ __forceinline__ uint32_t madc_hi(const uint32_t x, const uint32_t y, const uint32_t z) + { + uint32_t result; + asm volatile("madc.hi.u32 %0, %1, %2, %3;" : "=r"(result) : "r"(x), "r"(y), "r"(z)); + return result; + } -__device__ __forceinline__ uint32_t madc_lo_cc(const uint32_t x, const uint32_t y, const uint32_t z) { - uint32_t result; - asm volatile("madc.lo.cc.u32 %0, %1, %2, %3;" : "=r"(result) : "r"(x), "r"(y), "r"(z)); - return result; -} + __device__ __forceinline__ uint32_t madc_lo_cc(const uint32_t x, const uint32_t y, const uint32_t z) + { + uint32_t result; + asm volatile("madc.lo.cc.u32 %0, %1, %2, %3;" : "=r"(result) : "r"(x), "r"(y), "r"(z)); + return result; + } -__device__ __forceinline__ uint32_t madc_hi_cc(const uint32_t x, const uint32_t y, const uint32_t z) { - uint32_t result; - asm volatile("madc.hi.cc.u32 %0, %1, %2, %3;" : "=r"(result) : "r"(x), "r"(y), "r"(z)); - return result; -} + __device__ __forceinline__ uint32_t madc_hi_cc(const uint32_t x, const uint32_t y, const uint32_t z) + { + uint32_t result; + asm volatile("madc.hi.cc.u32 %0, %1, %2, %3;" : "=r"(result) : "r"(x), "r"(y), "r"(z)); + return result; + } -__device__ __forceinline__ uint64_t mov_b64(uint32_t lo, uint32_t hi) { - uint64_t result; - asm("mov.b64 %0, {%1,%2};" : "=l"(result) : "r"(lo), "r"(hi)); - return result; -} + __device__ __forceinline__ uint64_t mov_b64(uint32_t lo, uint32_t hi) + { + uint64_t result; + asm("mov.b64 %0, {%1,%2};" : "=l"(result) : "r"(lo), "r"(hi)); + return result; + } -// Gives u64 overloads a dedicated namespace. -// Callers should know exactly what they're calling (no implicit conversions). -namespace u64 { + // Gives u64 overloads a dedicated namespace. + // Callers should know exactly what they're calling (no implicit conversions). + namespace u64 { -__device__ __forceinline__ uint64_t add(const uint64_t x, const uint64_t y) { - uint64_t result; - asm("add.u64 %0, %1, %2;" : "=l"(result) : "l"(x), "l"(y)); - return result; -} + __device__ __forceinline__ uint64_t add(const uint64_t x, const uint64_t y) + { + uint64_t result; + asm("add.u64 %0, %1, %2;" : "=l"(result) : "l"(x), "l"(y)); + return result; + } -__device__ __forceinline__ uint64_t add_cc(const uint64_t x, const uint64_t y) { - uint64_t result; - asm volatile("add.cc.u64 %0, %1, %2;" : "=l"(result) : "l"(x), "l"(y)); - return result; -} + __device__ __forceinline__ uint64_t add_cc(const uint64_t x, const uint64_t y) + { + uint64_t result; + asm volatile("add.cc.u64 %0, %1, %2;" : "=l"(result) : "l"(x), "l"(y)); + return result; + } -__device__ __forceinline__ uint64_t addc(const uint64_t x, const uint64_t y) { - uint64_t result; - asm volatile("addc.u64 %0, %1, %2;" : "=l"(result) : "l"(x), "l"(y)); - return result; -} + __device__ __forceinline__ uint64_t addc(const uint64_t x, const uint64_t y) + { + uint64_t result; + asm volatile("addc.u64 %0, %1, %2;" : "=l"(result) : "l"(x), "l"(y)); + return result; + } -__device__ __forceinline__ uint64_t addc_cc(const uint64_t x, const uint64_t y) { - uint64_t result; - asm volatile("addc.cc.u64 %0, %1, %2;" : "=l"(result) : "l"(x), "l"(y)); - return result; -} + __device__ __forceinline__ uint64_t addc_cc(const uint64_t x, const uint64_t y) + { + uint64_t result; + asm volatile("addc.cc.u64 %0, %1, %2;" : "=l"(result) : "l"(x), "l"(y)); + return result; + } -__device__ __forceinline__ uint64_t sub(const uint64_t x, const uint64_t y) { - uint64_t result; - asm("sub.u64 %0, %1, %2;" : "=l"(result) : "l"(x), "l"(y)); - return result; -} + __device__ __forceinline__ uint64_t sub(const uint64_t x, const uint64_t y) + { + uint64_t result; + asm("sub.u64 %0, %1, %2;" : "=l"(result) : "l"(x), "l"(y)); + return result; + } -__device__ __forceinline__ uint64_t sub_cc(const uint64_t x, const uint64_t y) { - uint64_t result; - asm volatile("sub.cc.u64 %0, %1, %2;" : "=l"(result) : "l"(x), "l"(y)); - return result; -} + __device__ __forceinline__ uint64_t sub_cc(const uint64_t x, const uint64_t y) + { + uint64_t result; + asm volatile("sub.cc.u64 %0, %1, %2;" : "=l"(result) : "l"(x), "l"(y)); + return result; + } -__device__ __forceinline__ uint64_t subc(const uint64_t x, const uint64_t y) { - uint64_t result; - asm volatile("subc.u64 %0, %1, %2;" : "=l"(result) : "l"(x), "l"(y)); - return result; -} + __device__ __forceinline__ uint64_t subc(const uint64_t x, const uint64_t y) + { + uint64_t result; + asm volatile("subc.u64 %0, %1, %2;" : "=l"(result) : "l"(x), "l"(y)); + return result; + } -__device__ __forceinline__ uint64_t subc_cc(const uint64_t x, const uint64_t y) { - uint64_t result; - asm volatile("subc.cc.u64 %0, %1, %2;" : "=l"(result) : "l"(x), "l"(y)); - return result; -} + __device__ __forceinline__ uint64_t subc_cc(const uint64_t x, const uint64_t y) + { + uint64_t result; + asm volatile("subc.cc.u64 %0, %1, %2;" : "=l"(result) : "l"(x), "l"(y)); + return result; + } -__device__ __forceinline__ uint64_t mul_lo(const uint64_t x, const uint64_t y) { - uint64_t result; - asm("mul.lo.u64 %0, %1, %2;" : "=l"(result) : "l"(x), "l"(y)); - return result; -} + __device__ __forceinline__ uint64_t mul_lo(const uint64_t x, const uint64_t y) + { + uint64_t result; + asm("mul.lo.u64 %0, %1, %2;" : "=l"(result) : "l"(x), "l"(y)); + return result; + } -__device__ __forceinline__ uint64_t mul_hi(const uint64_t x, const uint64_t y) { - uint64_t result; - asm("mul.hi.u64 %0, %1, %2;" : "=l"(result) : "l"(x), "l"(y)); - return result; -} + __device__ __forceinline__ uint64_t mul_hi(const uint64_t x, const uint64_t y) + { + uint64_t result; + asm("mul.hi.u64 %0, %1, %2;" : "=l"(result) : "l"(x), "l"(y)); + return result; + } -__device__ __forceinline__ uint64_t mad_lo(const uint64_t x, const uint64_t y, const uint64_t z) { - uint64_t result; - asm("mad.lo.u64 %0, %1, %2, %3;" : "=l"(result) : "l"(x), "l"(y), "l"(z)); - return result; -} + __device__ __forceinline__ uint64_t mad_lo(const uint64_t x, const uint64_t y, const uint64_t z) + { + uint64_t result; + asm("mad.lo.u64 %0, %1, %2, %3;" : "=l"(result) : "l"(x), "l"(y), "l"(z)); + return result; + } -__device__ __forceinline__ uint64_t mad_hi(const uint64_t x, const uint64_t y, const uint64_t z) { - uint64_t result; - asm("mad.hi.u64 %0, %1, %2, %3;" : "=l"(result) : "l"(x), "l"(y), "l"(z)); - return result; -} + __device__ __forceinline__ uint64_t mad_hi(const uint64_t x, const uint64_t y, const uint64_t z) + { + uint64_t result; + asm("mad.hi.u64 %0, %1, %2, %3;" : "=l"(result) : "l"(x), "l"(y), "l"(z)); + return result; + } -__device__ __forceinline__ uint64_t mad_lo_cc(const uint64_t x, const uint64_t y, const uint64_t z) { - uint64_t result; - asm volatile("mad.lo.cc.u64 %0, %1, %2, %3;" : "=l"(result) : "l"(x), "l"(y), "l"(z)); - return result; -} + __device__ __forceinline__ uint64_t mad_lo_cc(const uint64_t x, const uint64_t y, const uint64_t z) + { + uint64_t result; + asm volatile("mad.lo.cc.u64 %0, %1, %2, %3;" : "=l"(result) : "l"(x), "l"(y), "l"(z)); + return result; + } -__device__ __forceinline__ uint64_t mad_hi_cc(const uint64_t x, const uint64_t y, const uint64_t z) { - uint64_t result; - asm volatile("mad.hi.cc.u64 %0, %1, %2, %3;" : "=l"(result) : "l"(x), "l"(y), "l"(z)); - return result; -} + __device__ __forceinline__ uint64_t mad_hi_cc(const uint64_t x, const uint64_t y, const uint64_t z) + { + uint64_t result; + asm volatile("mad.hi.cc.u64 %0, %1, %2, %3;" : "=l"(result) : "l"(x), "l"(y), "l"(z)); + return result; + } -__device__ __forceinline__ uint64_t madc_lo(const uint64_t x, const uint64_t y, const uint64_t z) { - uint64_t result; - asm volatile("madc.lo.u64 %0, %1, %2, %3;" : "=l"(result) : "l"(x), "l"(y), "l"(z)); - return result; -} + __device__ __forceinline__ uint64_t madc_lo(const uint64_t x, const uint64_t y, const uint64_t z) + { + uint64_t result; + asm volatile("madc.lo.u64 %0, %1, %2, %3;" : "=l"(result) : "l"(x), "l"(y), "l"(z)); + return result; + } -__device__ __forceinline__ uint64_t madc_hi(const uint64_t x, const uint64_t y, const uint64_t z) { - uint64_t result; - asm volatile("madc.hi.u64 %0, %1, %2, %3;" : "=l"(result) : "l"(x), "l"(y), "l"(z)); - return result; -} + __device__ __forceinline__ uint64_t madc_hi(const uint64_t x, const uint64_t y, const uint64_t z) + { + uint64_t result; + asm volatile("madc.hi.u64 %0, %1, %2, %3;" : "=l"(result) : "l"(x), "l"(y), "l"(z)); + return result; + } -__device__ __forceinline__ uint64_t madc_lo_cc(const uint64_t x, const uint64_t y, const uint64_t z) { - uint64_t result; - asm volatile("madc.lo.cc.u64 %0, %1, %2, %3;" : "=l"(result) : "l"(x), "l"(y), "l"(z)); - return result; -} + __device__ __forceinline__ uint64_t madc_lo_cc(const uint64_t x, const uint64_t y, const uint64_t z) + { + uint64_t result; + asm volatile("madc.lo.cc.u64 %0, %1, %2, %3;" : "=l"(result) : "l"(x), "l"(y), "l"(z)); + return result; + } -__device__ __forceinline__ uint64_t madc_hi_cc(const uint64_t x, const uint64_t y, const uint64_t z) { - uint64_t result; - asm volatile("madc.hi.cc.u64 %0, %1, %2, %3;" : "=l"(result) : "l"(x), "l"(y), "l"(z)); - return result; -} + __device__ __forceinline__ uint64_t madc_hi_cc(const uint64_t x, const uint64_t y, const uint64_t z) + { + uint64_t result; + asm volatile("madc.hi.cc.u64 %0, %1, %2, %3;" : "=l"(result) : "l"(x), "l"(y), "l"(z)); + return result; + } -} // namespace u64 + } // namespace u64 -__device__ __forceinline__ void bar_arrive(const unsigned name, const unsigned count) { - asm volatile("bar.arrive %0, %1;" : : "r"(name), "r"(count) : "memory"); -} + __device__ __forceinline__ void bar_arrive(const unsigned name, const unsigned count) + { + asm volatile("bar.arrive %0, %1;" : : "r"(name), "r"(count) : "memory"); + } -__device__ __forceinline__ void bar_sync(const unsigned name, const unsigned count) { asm volatile("bar.sync %0, %1;" : : "r"(name), "r"(count) : "memory"); } + __device__ __forceinline__ void bar_sync(const unsigned name, const unsigned count) + { + asm volatile("bar.sync %0, %1;" : : "r"(name), "r"(count) : "memory"); + } } // namespace ptx \ No newline at end of file diff --git a/icicle/utils/sharedmem.cuh b/icicle/utils/sharedmem.cuh index 508aa152..cb0f6771 100644 --- a/icicle/utils/sharedmem.cuh +++ b/icicle/utils/sharedmem.cuh @@ -1,15 +1,15 @@ // based on https://leimao.github.io/blog/CUDA-Shared-Memory-Templated-Kernel/ -// may be outdated, but only worked like that +// may be outdated, but only worked like that // ------------------------------------------------------------- // cuDPP -- CUDA Data Parallel Primitives library // ------------------------------------------------------------- // $Revision: 5636 $ // $Date: 2009-07-02 13:39:38 +1000 (Thu, 02 Jul 2009) $ -// ------------------------------------------------------------- -// This source code is distributed under the terms of license.txt +// ------------------------------------------------------------- +// This source code is distributed under the terms of license.txt // in the root directory of this source distribution. -// ------------------------------------------------------------- +// ------------------------------------------------------------- /** * @file @@ -18,18 +18,18 @@ * @brief Shared memory declaration struct for templatized types. * * Because dynamically sized shared memory arrays are declared "extern" in CUDA, - * we can't templatize their types directly. To get around this, we declare a - * simple wrapper struct that will declare the extern array with a different + * we can't templatize their types directly. To get around this, we declare a + * simple wrapper struct that will declare the extern array with a different * name depending on the type. This avoids linker errors about multiple * definitions. - * - * To use dynamically allocated shared memory in a templatized __global__ or + * + * To use dynamically allocated shared memory in a templatized __global__ or * __device__ function, just replace code like this: * *
  *  template
  *  __global__ void
- *  foo( T* d_out, T* d_in) 
+ *  foo( T* d_out, T* d_in)
  *  {
  *      // Shared mem size is determined by the host app at run time
  *      extern __shared__  T sdata[];
@@ -38,12 +38,12 @@
  *      ...
  *  }
  * 
- * + * * With this *
  *  template
  *  __global__ void
- *  foo( T* d_out, T* d_in) 
+ *  foo( T* d_out, T* d_in)
  *  {
  *      // Shared mem size is determined by the host app at run time
  *      SharedMemory smem;
@@ -58,33 +58,32 @@
 #ifndef _SHAREDMEM_H_
 #define _SHAREDMEM_H_
 
-#include "../curves/bls12_381/curve_config.cuh"
 #include "../curves/bls12_377/curve_config.cuh"
+#include "../curves/bls12_381/curve_config.cuh"
 #include "../curves/bn254/curve_config.cuh"
 
 /** @brief Wrapper class for templatized dynamic shared memory arrays.
-  * 
-  * This struct uses template specialization on the type \a T to declare
-  * a differently named dynamic shared memory array for each type
-  * (\code extern __shared__ T s_type[] \endcode).
-  * 
-  * Currently there are specializations for the following types:
-  * \c int, \c uint, \c char, \c uchar, \c short, \c ushort, \c long, 
-  * \c unsigned long, \c bool, \c float, and \c double. One can also specialize it
-  * for user defined types.
-  */
+ *
+ * This struct uses template specialization on the type \a T to declare
+ * a differently named dynamic shared memory array for each type
+ * (\code extern __shared__ T s_type[] \endcode).
+ *
+ * Currently there are specializations for the following types:
+ * \c int, \c uint, \c char, \c uchar, \c short, \c ushort, \c long,
+ * \c unsigned long, \c bool, \c float, and \c double. One can also specialize it
+ * for user defined types.
+ */
 template 
-struct SharedMemory
-{
-    //! @brief Return a pointer to the runtime-sized shared memory array.
-    //! @returns Pointer to runtime-sized shared memory array
-    __device__ T* getPointer() 
-    { 
-        extern __device__ void Error_UnsupportedType(); // Ensure that we won't compile any un-specialized types
-        Error_UnsupportedType();
-        return (T*)0;
-    }
-    // TODO: Use operator overloading to make this class look like a regular array
+struct SharedMemory {
+  //! @brief Return a pointer to the runtime-sized shared memory array.
+  //! @returns Pointer to runtime-sized shared memory array
+  __device__ T* getPointer()
+  {
+    extern __device__ void Error_UnsupportedType(); // Ensure that we won't compile any un-specialized types
+    Error_UnsupportedType();
+    return (T*)0;
+  }
+  // TODO: Use operator overloading to make this class look like a regular array
 };
 
 // Following are the specializations for the following types.
@@ -92,124 +91,183 @@ struct SharedMemory
 // One could also specialize it for user-defined types.
 
 template <>
-struct SharedMemory 
-{
-    __device__ int* getPointer() { extern __shared__ int s_int[]; return s_int; }      
+struct SharedMemory {
+  __device__ int* getPointer()
+  {
+    extern __shared__ int s_int[];
+    return s_int;
+  }
 };
 
 template <>
-struct SharedMemory 
-{
-    __device__ unsigned int* getPointer() { extern __shared__ unsigned int s_uint[]; return s_uint; }    
+struct SharedMemory {
+  __device__ unsigned int* getPointer()
+  {
+    extern __shared__ unsigned int s_uint[];
+    return s_uint;
+  }
 };
 
 template <>
-struct SharedMemory 
-{
-    __device__ char* getPointer() { extern __shared__ char s_char[]; return s_char; }    
+struct SharedMemory {
+  __device__ char* getPointer()
+  {
+    extern __shared__ char s_char[];
+    return s_char;
+  }
 };
 
 template <>
-struct SharedMemory 
-{
-    __device__ unsigned char* getPointer() { extern __shared__ unsigned char s_uchar[]; return s_uchar; }    
+struct SharedMemory {
+  __device__ unsigned char* getPointer()
+  {
+    extern __shared__ unsigned char s_uchar[];
+    return s_uchar;
+  }
 };
 
 template <>
-struct SharedMemory 
-{
-    __device__ short* getPointer() { extern __shared__ short s_short[]; return s_short; }    
+struct SharedMemory {
+  __device__ short* getPointer()
+  {
+    extern __shared__ short s_short[];
+    return s_short;
+  }
 };
 
 template <>
-struct SharedMemory 
-{
-    __device__ unsigned short* getPointer() { extern __shared__ unsigned short s_ushort[]; return s_ushort; }    
+struct SharedMemory {
+  __device__ unsigned short* getPointer()
+  {
+    extern __shared__ unsigned short s_ushort[];
+    return s_ushort;
+  }
 };
 
 template <>
-struct SharedMemory 
-{
-    __device__ long* getPointer() { extern __shared__ long s_long[]; return s_long; }    
+struct SharedMemory {
+  __device__ long* getPointer()
+  {
+    extern __shared__ long s_long[];
+    return s_long;
+  }
 };
 
 template <>
-struct SharedMemory 
-{
-    __device__ unsigned long* getPointer() { extern __shared__ unsigned long s_ulong[]; return s_ulong; }    
+struct SharedMemory {
+  __device__ unsigned long* getPointer()
+  {
+    extern __shared__ unsigned long s_ulong[];
+    return s_ulong;
+  }
 };
 
 template <>
-struct SharedMemory 
-{
-    __device__ long long* getPointer() { extern __shared__ long long s_longlong[]; return s_longlong; }    
+struct SharedMemory {
+  __device__ long long* getPointer()
+  {
+    extern __shared__ long long s_longlong[];
+    return s_longlong;
+  }
 };
 
 template <>
-struct SharedMemory 
-{
-    __device__ unsigned long long* getPointer() { extern __shared__ unsigned long long s_ulonglong[]; return s_ulonglong; }    
+struct SharedMemory {
+  __device__ unsigned long long* getPointer()
+  {
+    extern __shared__ unsigned long long s_ulonglong[];
+    return s_ulonglong;
+  }
 };
 
 template <>
-struct SharedMemory 
-{
-    __device__ bool* getPointer() { extern __shared__ bool s_bool[]; return s_bool; }    
+struct SharedMemory {
+  __device__ bool* getPointer()
+  {
+    extern __shared__ bool s_bool[];
+    return s_bool;
+  }
 };
 
 template <>
-struct SharedMemory 
-{
-    __device__ float* getPointer() { extern __shared__ float s_float[]; return s_float; }    
+struct SharedMemory {
+  __device__ float* getPointer()
+  {
+    extern __shared__ float s_float[];
+    return s_float;
+  }
 };
 
 template <>
-struct SharedMemory 
-{
-    __device__ double* getPointer() { extern __shared__ double s_double[]; return s_double; }    
+struct SharedMemory {
+  __device__ double* getPointer()
+  {
+    extern __shared__ double s_double[];
+    return s_double;
+  }
 };
 
 template <>
-struct SharedMemory 
-{
-    __device__ uchar4* getPointer() { extern __shared__ uchar4 s_uchar4[]; return s_uchar4; }    
+struct SharedMemory {
+  __device__ uchar4* getPointer()
+  {
+    extern __shared__ uchar4 s_uchar4[];
+    return s_uchar4;
+  }
 };
 
 template <>
-struct SharedMemory 
-{
-    __device__ BLS12_381::scalar_t* getPointer() { extern __shared__ BLS12_381::scalar_t s_scalar_t_bls12_381[]; return s_scalar_t_bls12_381; }    
+struct SharedMemory {
+  __device__ BLS12_381::scalar_t* getPointer()
+  {
+    extern __shared__ BLS12_381::scalar_t s_scalar_t_bls12_381[];
+    return s_scalar_t_bls12_381;
+  }
 };
 
 template <>
-struct SharedMemory 
-{
-    __device__ BLS12_381::projective_t* getPointer() { extern __shared__ BLS12_381::projective_t s_projective_t_bls12_381[]; return s_projective_t_bls12_381; }    
+struct SharedMemory {
+  __device__ BLS12_381::projective_t* getPointer()
+  {
+    extern __shared__ BLS12_381::projective_t s_projective_t_bls12_381[];
+    return s_projective_t_bls12_381;
+  }
 };
 
 template <>
-struct SharedMemory 
-{
-    __device__ BLS12_377::scalar_t* getPointer() { extern __shared__ BLS12_377::scalar_t s_scalar_t_bls12_377[]; return s_scalar_t_bls12_377; }    
+struct SharedMemory {
+  __device__ BLS12_377::scalar_t* getPointer()
+  {
+    extern __shared__ BLS12_377::scalar_t s_scalar_t_bls12_377[];
+    return s_scalar_t_bls12_377;
+  }
 };
 
 template <>
-struct SharedMemory 
-{
-    __device__ BLS12_377::projective_t* getPointer() { extern __shared__ BLS12_377::projective_t s_projective_t_bls12_377[]; return s_projective_t_bls12_377; }    
-};
-
-
-template <>
-struct SharedMemory 
-{
-    __device__ BN254::scalar_t* getPointer() { extern __shared__ BN254::scalar_t s_scalar_t_bn254[]; return s_scalar_t_bn254; }    
+struct SharedMemory {
+  __device__ BLS12_377::projective_t* getPointer()
+  {
+    extern __shared__ BLS12_377::projective_t s_projective_t_bls12_377[];
+    return s_projective_t_bls12_377;
+  }
 };
 
 template <>
-struct SharedMemory 
-{
-    __device__ BN254::projective_t* getPointer() { extern __shared__ BN254::projective_t s_projective_t_bn254[]; return s_projective_t_bn254; }    
+struct SharedMemory {
+  __device__ BN254::scalar_t* getPointer()
+  {
+    extern __shared__ BN254::scalar_t s_scalar_t_bn254[];
+    return s_scalar_t_bn254;
+  }
+};
+
+template <>
+struct SharedMemory {
+  __device__ BN254::projective_t* getPointer()
+  {
+    extern __shared__ BN254::projective_t s_projective_t_bn254[];
+    return s_projective_t_bn254;
+  }
 };
 #endif //_SHAREDMEM_H_
 
diff --git a/icicle/utils/storage.cuh b/icicle/utils/storage.cuh
index 98df0a74..c4a56c49 100644
--- a/icicle/utils/storage.cuh
+++ b/icicle/utils/storage.cuh
@@ -3,11 +3,15 @@
 
 #define LIMBS_ALIGNMENT(x) ((x) % 4 == 0 ? 16 : ((x) % 2 == 0 ? 8 : 4))
 
-template  struct __align__(LIMBS_ALIGNMENT(LIMBS_COUNT)) storage {
+template 
+struct __align__(LIMBS_ALIGNMENT(LIMBS_COUNT)) storage
+{
   static constexpr unsigned LC = LIMBS_COUNT;
   uint32_t limbs[LIMBS_COUNT];
 };
 
-template  struct __align__(LIMBS_ALIGNMENT(LIMBS_COUNT)) storage_array {
-    storage storages[OMEGAS_COUNT];
+template 
+struct __align__(LIMBS_ALIGNMENT(LIMBS_COUNT)) storage_array
+{
+  storage storages[OMEGAS_COUNT];
 };
\ No newline at end of file
diff --git a/src/curve_templates/curve_different_limbs.rs b/src/curve_templates/curve_different_limbs.rs
index 63d01a6b..38112c0b 100644
--- a/src/curve_templates/curve_different_limbs.rs
+++ b/src/curve_templates/curve_different_limbs.rs
@@ -1,13 +1,10 @@
 use std::ffi::c_uint;
-
 use ark_CURVE_NAME_L::{Fq as Fq_CURVE_NAME_U, Fr as Fr_CURVE_NAME_U, G1Affine as G1Affine_CURVE_NAME_U, G1Projective as G1Projective_CURVE_NAME_U};
-
 use ark_ec::AffineCurve;
 use ark_ff::{BigInteger_limbs_q, BigInteger_limbs_p, PrimeField};
 use std::mem::transmute;
 use ark_ff::Field;
 use crate::{utils::{u32_vec_to_u64_vec, u64_vec_to_u32_vec}};
-
 use rustacuda_core::DeviceCopy;
 use rustacuda_derive::DeviceCopy;
 
@@ -143,7 +140,6 @@ impl Point_CURVE_NAME_U {
 
     pub fn to_ark_affine(&self) -> G1Affine_CURVE_NAME_U {
         //TODO: generic conversion
-        use ark_ff::Field;
         use std::ops::Mul;
         let proj_x_field = Fq_CURVE_NAME_U::from_le_bytes_mod_order(&self.x.to_bytes_le());
         let proj_y_field = Fq_CURVE_NAME_U::from_le_bytes_mod_order(&self.y.to_bytes_le());
@@ -155,7 +151,6 @@ impl Point_CURVE_NAME_U {
     }
 
     pub fn from_ark(ark: G1Projective_CURVE_NAME_U) -> Point_CURVE_NAME_U {
-        use ark_ff::Field;
         let z_inv = ark.z.inverse().unwrap();
         let z_invsq = z_inv * z_inv;
         let z_invq3 = z_invsq * z_inv;
diff --git a/src/curve_templates/curve_same_limbs.rs b/src/curve_templates/curve_same_limbs.rs
index ca795e12..18ac6c8f 100644
--- a/src/curve_templates/curve_same_limbs.rs
+++ b/src/curve_templates/curve_same_limbs.rs
@@ -1,13 +1,10 @@
 use std::ffi::c_uint;
-
 use ark_CURVE_NAME_L::{Fq as Fq_CURVE_NAME_U, Fr as Fr_CURVE_NAME_U, G1Affine as G1Affine_CURVE_NAME_U, G1Projective as G1Projective_CURVE_NAME_U};
-
 use ark_ec::AffineCurve;
 use ark_ff::{BigInteger_limbs_p, PrimeField};
 use std::mem::transmute;
 use ark_ff::Field;
 use crate::{utils::{u32_vec_to_u64_vec, u64_vec_to_u32_vec}};
-
 use rustacuda_core::DeviceCopy;
 use rustacuda_derive::DeviceCopy;
 
diff --git a/src/curve_templates/test.rs b/src/curve_templates/test.rs
index 00853bc5..a3043d80 100644
--- a/src/curve_templates/test.rs
+++ b/src/curve_templates/test.rs
@@ -1,14 +1,9 @@
 use std::ffi::{c_int, c_uint};
-
 use rand::{rngs::StdRng, RngCore, SeedableRng};
-
-
 use crate::curves::CURVE_NAME_L::*;
-
 use ark_CURVE_NAME_L::{Fr as Fr_CURVE_NAME_U, G1Projective as G1Projective_CURVE_NAME_U};
 use ark_ff::PrimeField;
 use ark_std::UniformRand;
-
 use rustacuda::prelude::*;
 use rustacuda_core::DevicePointer;
 use rustacuda::memory::{DeviceBox, CopyDestination, DeviceCopy};
diff --git a/src/curves/bls12_377.rs b/src/curves/bls12_377.rs
index de1044ec..7cfe1c4e 100644
--- a/src/curves/bls12_377.rs
+++ b/src/curves/bls12_377.rs
@@ -1,15 +1,12 @@
-use std::ffi::c_uint;
-
-use ark_bls12_377::{Fq as Fq_BLS12_377, Fr as Fr_BLS12_377, G1Affine as G1Affine_BLS12_377, G1Projective as G1Projective_BLS12_377};
-
+use crate::utils::{u32_vec_to_u64_vec, u64_vec_to_u32_vec};
+use ark_bls12_377::{Fq as Fq_BLS12_377, G1Affine as G1Affine_BLS12_377, G1Projective as G1Projective_BLS12_377};
 use ark_ec::AffineCurve;
-use ark_ff::{BigInteger384, BigInteger256, PrimeField};
-use std::mem::transmute;
 use ark_ff::Field;
-use crate::{utils::{u32_vec_to_u64_vec, u64_vec_to_u32_vec}};
-
+use ark_ff::{BigInteger256, BigInteger384, PrimeField};
 use rustacuda_core::DeviceCopy;
 use rustacuda_derive::DeviceCopy;
+use std::ffi::c_uint;
+use std::mem::transmute;
 
 #[derive(Debug, PartialEq, Copy, Clone)]
 #[repr(C)]
@@ -27,9 +24,7 @@ impl Default for Field_BLS12_377 {
 
 impl Field_BLS12_377 {
     pub fn zero() -> Self {
-        Field_BLS12_377 {
-            s: [0u32; NUM_LIMBS],
-        }
+        Field_BLS12_377 { s: [0u32; NUM_LIMBS] }
     }
 
     pub fn one() -> Self {
@@ -41,7 +36,10 @@ impl Field_BLS12_377 {
     fn to_bytes_le(&self) -> Vec {
         self.s
             .iter()
-            .map(|s| s.to_le_bytes().to_vec())
+            .map(|s| {
+                s.to_le_bytes()
+                    .to_vec()
+            })
             .flatten()
             .collect::>()
     }
@@ -50,7 +48,9 @@ impl Field_BLS12_377 {
 pub const BASE_LIMBS_BLS12_377: usize = 12;
 pub const SCALAR_LIMBS_BLS12_377: usize = 8;
 
+#[allow(non_camel_case_types)]
 pub type BaseField_BLS12_377 = Field_BLS12_377;
+#[allow(non_camel_case_types)]
 pub type ScalarField_BLS12_377 = Field_BLS12_377;
 
 fn get_fixed_limbs(val: &[u32]) -> [u32; NUM_LIMBS] {
@@ -60,7 +60,9 @@ fn get_fixed_limbs(val: &[u32]) -> [u32; NUM_LIMBS] {
             padded[..val.len()].copy_from_slice(&val);
             padded
         }
-        n if n == NUM_LIMBS => val.try_into().unwrap(),
+        n if n == NUM_LIMBS => val
+            .try_into()
+            .unwrap(),
         _ => panic!("slice has too many elements"),
     }
 }
@@ -77,7 +79,11 @@ impl BaseField_BLS12_377 {
     }
 
     pub fn to_ark(&self) -> BigInteger384 {
-        BigInteger384::new(u32_vec_to_u64_vec(&self.limbs()).try_into().unwrap())
+        BigInteger384::new(
+            u32_vec_to_u64_vec(&self.limbs())
+                .try_into()
+                .unwrap(),
+        )
     }
 
     pub fn from_ark(ark: BigInteger384) -> Self {
@@ -91,7 +97,11 @@ impl ScalarField_BLS12_377 {
     }
 
     pub fn to_ark(&self) -> BigInteger256 {
-        BigInteger256::new(u32_vec_to_u64_vec(&self.limbs()).try_into().unwrap())
+        BigInteger256::new(
+            u32_vec_to_u64_vec(&self.limbs())
+                .try_into()
+                .unwrap(),
+        )
     }
 
     pub fn from_ark(ark: BigInteger256) -> Self {
@@ -136,25 +146,41 @@ impl Point_BLS12_377 {
 
     pub fn to_ark(&self) -> G1Projective_BLS12_377 {
         //TODO: generic conversion
-        self.to_ark_affine().into_projective()
+        self.to_ark_affine()
+            .into_projective()
     }
 
     pub fn to_ark_affine(&self) -> G1Affine_BLS12_377 {
         //TODO: generic conversion
-        use ark_ff::Field;
         use std::ops::Mul;
-        let proj_x_field = Fq_BLS12_377::from_le_bytes_mod_order(&self.x.to_bytes_le());
-        let proj_y_field = Fq_BLS12_377::from_le_bytes_mod_order(&self.y.to_bytes_le());
-        let proj_z_field = Fq_BLS12_377::from_le_bytes_mod_order(&self.z.to_bytes_le());
-        let inverse_z = proj_z_field.inverse().unwrap();
+        let proj_x_field = Fq_BLS12_377::from_le_bytes_mod_order(
+            &self
+                .x
+                .to_bytes_le(),
+        );
+        let proj_y_field = Fq_BLS12_377::from_le_bytes_mod_order(
+            &self
+                .y
+                .to_bytes_le(),
+        );
+        let proj_z_field = Fq_BLS12_377::from_le_bytes_mod_order(
+            &self
+                .z
+                .to_bytes_le(),
+        );
+        let inverse_z = proj_z_field
+            .inverse()
+            .unwrap();
         let aff_x = proj_x_field.mul(inverse_z);
         let aff_y = proj_y_field.mul(inverse_z);
         G1Affine_BLS12_377::new(aff_x, aff_y, false)
     }
 
     pub fn from_ark(ark: G1Projective_BLS12_377) -> Point_BLS12_377 {
-        use ark_ff::Field;
-        let z_inv = ark.z.inverse().unwrap();
+        let z_inv = ark
+            .z
+            .inverse()
+            .unwrap();
         let z_invsq = z_inv * z_inv;
         let z_invq3 = z_invsq * z_inv;
         Point_BLS12_377 {
@@ -196,17 +222,19 @@ impl PointAffineNoInfinity_BLS12_377 {
     ///From u32 limbs x,y
     pub fn from_limbs(x: &[u32], y: &[u32]) -> Self {
         PointAffineNoInfinity_BLS12_377 {
-            x: BaseField_BLS12_377 {
-                s: get_fixed_limbs(x),
-            },
-            y: BaseField_BLS12_377 {
-                s: get_fixed_limbs(y),
-            },
+            x: BaseField_BLS12_377 { s: get_fixed_limbs(x) },
+            y: BaseField_BLS12_377 { s: get_fixed_limbs(y) },
         }
     }
 
     pub fn limbs(&self) -> Vec {
-        [self.x.limbs(), self.y.limbs()].concat()
+        [
+            self.x
+                .limbs(),
+            self.y
+                .limbs(),
+        ]
+        .concat()
     }
 
     pub fn to_projective(&self) -> Point_BLS12_377 {
@@ -218,13 +246,31 @@ impl PointAffineNoInfinity_BLS12_377 {
     }
 
     pub fn to_ark(&self) -> G1Affine_BLS12_377 {
-        G1Affine_BLS12_377::new(Fq_BLS12_377::new(self.x.to_ark()), Fq_BLS12_377::new(self.y.to_ark()), false)
+        G1Affine_BLS12_377::new(
+            Fq_BLS12_377::new(
+                self.x
+                    .to_ark(),
+            ),
+            Fq_BLS12_377::new(
+                self.y
+                    .to_ark(),
+            ),
+            false,
+        )
     }
 
     pub fn to_ark_repr(&self) -> G1Affine_BLS12_377 {
         G1Affine_BLS12_377::new(
-            Fq_BLS12_377::from_repr(self.x.to_ark()).unwrap(),
-            Fq_BLS12_377::from_repr(self.y.to_ark()).unwrap(),
+            Fq_BLS12_377::from_repr(
+                self.x
+                    .to_ark(),
+            )
+            .unwrap(),
+            Fq_BLS12_377::from_repr(
+                self.y
+                    .to_ark(),
+            )
+            .unwrap(),
             false,
         )
     }
@@ -242,30 +288,35 @@ impl Point_BLS12_377 {
 
     pub fn from_limbs(x: &[u32], y: &[u32], z: &[u32]) -> Self {
         Point_BLS12_377 {
-            x: BaseField_BLS12_377 {
-                s: get_fixed_limbs(x),
-            },
-            y: BaseField_BLS12_377 {
-                s: get_fixed_limbs(y),
-            },
-            z: BaseField_BLS12_377 {
-                s: get_fixed_limbs(z),
-            },
+            x: BaseField_BLS12_377 { s: get_fixed_limbs(x) },
+            y: BaseField_BLS12_377 { s: get_fixed_limbs(y) },
+            z: BaseField_BLS12_377 { s: get_fixed_limbs(z) },
         }
     }
 
     pub fn from_xy_limbs(value: &[u32]) -> Point_BLS12_377 {
         let l = value.len();
-        assert_eq!(l, 3 * BASE_LIMBS_BLS12_377, "length must be 3 * {}", BASE_LIMBS_BLS12_377);
+        assert_eq!(
+            l,
+            3 * BASE_LIMBS_BLS12_377,
+            "length must be 3 * {}",
+            BASE_LIMBS_BLS12_377
+        );
         Point_BLS12_377 {
             x: BaseField_BLS12_377 {
-                s: value[..BASE_LIMBS_BLS12_377].try_into().unwrap(),
+                s: value[..BASE_LIMBS_BLS12_377]
+                    .try_into()
+                    .unwrap(),
             },
             y: BaseField_BLS12_377 {
-                s: value[BASE_LIMBS_BLS12_377..BASE_LIMBS_BLS12_377 * 2].try_into().unwrap(),
+                s: value[BASE_LIMBS_BLS12_377..BASE_LIMBS_BLS12_377 * 2]
+                    .try_into()
+                    .unwrap(),
             },
             z: BaseField_BLS12_377 {
-                s: value[BASE_LIMBS_BLS12_377 * 2..].try_into().unwrap(),
+                s: value[BASE_LIMBS_BLS12_377 * 2..]
+                    .try_into()
+                    .unwrap(),
             },
         }
     }
@@ -273,16 +324,21 @@ impl Point_BLS12_377 {
     pub fn to_affine(&self) -> PointAffineNoInfinity_BLS12_377 {
         let ark_affine = self.to_ark_affine();
         PointAffineNoInfinity_BLS12_377 {
-            x: BaseField_BLS12_377::from_ark(ark_affine.x.into_repr()),
-            y: BaseField_BLS12_377::from_ark(ark_affine.y.into_repr()),
+            x: BaseField_BLS12_377::from_ark(
+                ark_affine
+                    .x
+                    .into_repr(),
+            ),
+            y: BaseField_BLS12_377::from_ark(
+                ark_affine
+                    .y
+                    .into_repr(),
+            ),
         }
     }
 
     pub fn to_xy_strip_z(&self) -> PointAffineNoInfinity_BLS12_377 {
-        PointAffineNoInfinity_BLS12_377 {
-            x: self.x,
-            y: self.y,
-        }
+        PointAffineNoInfinity_BLS12_377 { x: self.x, y: self.y }
     }
 }
 
@@ -294,12 +350,9 @@ impl ScalarField_BLS12_377 {
     }
 }
 
-
 #[cfg(test)]
 mod tests {
-    use ark_bls12_377::{Fr as Fr_BLS12_377};
-
-    use crate::{utils::{u32_vec_to_u64_vec, u64_vec_to_u32_vec}, curves::bls12_377::{Point_BLS12_377, ScalarField_BLS12_377}};
+    use crate::curves::bls12_377::{Point_BLS12_377, ScalarField_BLS12_377};
 
     #[test]
     fn test_ark_scalar_convert() {
@@ -329,4 +382,4 @@ mod tests {
         );
         assert!(left != right);
     }
-}
\ No newline at end of file
+}
diff --git a/src/curves/bls12_381.rs b/src/curves/bls12_381.rs
index 0a9f9e87..18f34719 100644
--- a/src/curves/bls12_381.rs
+++ b/src/curves/bls12_381.rs
@@ -1,16 +1,13 @@
-use std::ffi::c_uint;
-
-use ark_bls12_381::{Fq as Fq_BLS12_381, Fr as Fr_BLS12_381, G1Affine as G1Affine_BLS12_381, G1Projective as G1Projective_BLS12_381};
-
+use crate::utils::{u32_vec_to_u64_vec, u64_vec_to_u32_vec};
+use ark_bls12_381::{Fq as Fq_BLS12_381, G1Affine as G1Affine_BLS12_381, G1Projective as G1Projective_BLS12_381};
 use ark_ec::AffineCurve;
-use ark_ff::{BigInteger384, BigInteger256, PrimeField};
-use serde::{Serialize, Deserialize};
-use std::mem::transmute;
 use ark_ff::Field;
-use crate::{utils::{u32_vec_to_u64_vec, u64_vec_to_u32_vec}};
-
+use ark_ff::{BigInteger256, BigInteger384, PrimeField};
 use rustacuda_core::DeviceCopy;
 use rustacuda_derive::DeviceCopy;
+use serde::{Deserialize, Serialize};
+use std::ffi::c_uint;
+use std::mem::transmute;
 
 #[derive(Debug, PartialEq, Copy, Clone)]
 #[repr(C)]
@@ -28,9 +25,7 @@ impl Default for Field_BLS12_381 {
 
 impl Field_BLS12_381 {
     pub fn zero() -> Self {
-        Field_BLS12_381 {
-            s: [0u32; NUM_LIMBS],
-        }
+        Field_BLS12_381 { s: [0u32; NUM_LIMBS] }
     }
 
     pub fn one() -> Self {
@@ -42,7 +37,10 @@ impl Field_BLS12_381 {
     fn to_bytes_le(&self) -> Vec {
         self.s
             .iter()
-            .map(|s| s.to_le_bytes().to_vec())
+            .map(|s| {
+                s.to_le_bytes()
+                    .to_vec()
+            })
             .flatten()
             .collect::>()
     }
@@ -51,7 +49,9 @@ impl Field_BLS12_381 {
 pub const BASE_LIMBS_BLS12_381: usize = 12;
 pub const SCALAR_LIMBS_BLS12_381: usize = 8;
 
+#[allow(non_camel_case_types)]
 pub type BaseField_BLS12_381 = Field_BLS12_381;
+#[allow(non_camel_case_types)]
 pub type ScalarField_BLS12_381 = Field_BLS12_381;
 
 impl Serialize for ScalarField_BLS12_381 {
@@ -59,7 +59,8 @@ impl Serialize for ScalarField_BLS12_381 {
     where
         S: serde::Serializer,
     {
-        self.s.serialize(serializer)
+        self.s
+            .serialize(serializer)
     }
 }
 
@@ -80,7 +81,9 @@ fn get_fixed_limbs(val: &[u32]) -> [u32; NUM_LIMBS] {
             padded[..val.len()].copy_from_slice(&val);
             padded
         }
-        n if n == NUM_LIMBS => val.try_into().unwrap(),
+        n if n == NUM_LIMBS => val
+            .try_into()
+            .unwrap(),
         _ => panic!("slice has too many elements"),
     }
 }
@@ -97,7 +100,11 @@ impl BaseField_BLS12_381 {
     }
 
     pub fn to_ark(&self) -> BigInteger384 {
-        BigInteger384::new(u32_vec_to_u64_vec(&self.limbs()).try_into().unwrap())
+        BigInteger384::new(
+            u32_vec_to_u64_vec(&self.limbs())
+                .try_into()
+                .unwrap(),
+        )
     }
 
     pub fn from_ark(ark: BigInteger384) -> Self {
@@ -111,7 +118,11 @@ impl ScalarField_BLS12_381 {
     }
 
     pub fn to_ark(&self) -> BigInteger256 {
-        BigInteger256::new(u32_vec_to_u64_vec(&self.limbs()).try_into().unwrap())
+        BigInteger256::new(
+            u32_vec_to_u64_vec(&self.limbs())
+                .try_into()
+                .unwrap(),
+        )
     }
 
     pub fn from_ark(ark: BigInteger256) -> Self {
@@ -156,25 +167,41 @@ impl Point_BLS12_381 {
 
     pub fn to_ark(&self) -> G1Projective_BLS12_381 {
         //TODO: generic conversion
-        self.to_ark_affine().into_projective()
+        self.to_ark_affine()
+            .into_projective()
     }
 
     pub fn to_ark_affine(&self) -> G1Affine_BLS12_381 {
         //TODO: generic conversion
-        use ark_ff::Field;
         use std::ops::Mul;
-        let proj_x_field = Fq_BLS12_381::from_le_bytes_mod_order(&self.x.to_bytes_le());
-        let proj_y_field = Fq_BLS12_381::from_le_bytes_mod_order(&self.y.to_bytes_le());
-        let proj_z_field = Fq_BLS12_381::from_le_bytes_mod_order(&self.z.to_bytes_le());
-        let inverse_z = proj_z_field.inverse().unwrap();
+        let proj_x_field = Fq_BLS12_381::from_le_bytes_mod_order(
+            &self
+                .x
+                .to_bytes_le(),
+        );
+        let proj_y_field = Fq_BLS12_381::from_le_bytes_mod_order(
+            &self
+                .y
+                .to_bytes_le(),
+        );
+        let proj_z_field = Fq_BLS12_381::from_le_bytes_mod_order(
+            &self
+                .z
+                .to_bytes_le(),
+        );
+        let inverse_z = proj_z_field
+            .inverse()
+            .unwrap();
         let aff_x = proj_x_field.mul(inverse_z);
         let aff_y = proj_y_field.mul(inverse_z);
         G1Affine_BLS12_381::new(aff_x, aff_y, false)
     }
 
     pub fn from_ark(ark: G1Projective_BLS12_381) -> Point_BLS12_381 {
-        use ark_ff::Field;
-        let z_inv = ark.z.inverse().unwrap();
+        let z_inv = ark
+            .z
+            .inverse()
+            .unwrap();
         let z_invsq = z_inv * z_inv;
         let z_invq3 = z_invsq * z_inv;
         Point_BLS12_381 {
@@ -216,17 +243,19 @@ impl PointAffineNoInfinity_BLS12_381 {
     ///From u32 limbs x,y
     pub fn from_limbs(x: &[u32], y: &[u32]) -> Self {
         PointAffineNoInfinity_BLS12_381 {
-            x: BaseField_BLS12_381 {
-                s: get_fixed_limbs(x),
-            },
-            y: BaseField_BLS12_381 {
-                s: get_fixed_limbs(y),
-            },
+            x: BaseField_BLS12_381 { s: get_fixed_limbs(x) },
+            y: BaseField_BLS12_381 { s: get_fixed_limbs(y) },
         }
     }
 
     pub fn limbs(&self) -> Vec {
-        [self.x.limbs(), self.y.limbs()].concat()
+        [
+            self.x
+                .limbs(),
+            self.y
+                .limbs(),
+        ]
+        .concat()
     }
 
     pub fn to_projective(&self) -> Point_BLS12_381 {
@@ -238,13 +267,31 @@ impl PointAffineNoInfinity_BLS12_381 {
     }
 
     pub fn to_ark(&self) -> G1Affine_BLS12_381 {
-        G1Affine_BLS12_381::new(Fq_BLS12_381::new(self.x.to_ark()), Fq_BLS12_381::new(self.y.to_ark()), false)
+        G1Affine_BLS12_381::new(
+            Fq_BLS12_381::new(
+                self.x
+                    .to_ark(),
+            ),
+            Fq_BLS12_381::new(
+                self.y
+                    .to_ark(),
+            ),
+            false,
+        )
     }
 
     pub fn to_ark_repr(&self) -> G1Affine_BLS12_381 {
         G1Affine_BLS12_381::new(
-            Fq_BLS12_381::from_repr(self.x.to_ark()).unwrap(),
-            Fq_BLS12_381::from_repr(self.y.to_ark()).unwrap(),
+            Fq_BLS12_381::from_repr(
+                self.x
+                    .to_ark(),
+            )
+            .unwrap(),
+            Fq_BLS12_381::from_repr(
+                self.y
+                    .to_ark(),
+            )
+            .unwrap(),
             false,
         )
     }
@@ -262,30 +309,35 @@ impl Point_BLS12_381 {
 
     pub fn from_limbs(x: &[u32], y: &[u32], z: &[u32]) -> Self {
         Point_BLS12_381 {
-            x: BaseField_BLS12_381 {
-                s: get_fixed_limbs(x),
-            },
-            y: BaseField_BLS12_381 {
-                s: get_fixed_limbs(y),
-            },
-            z: BaseField_BLS12_381 {
-                s: get_fixed_limbs(z),
-            },
+            x: BaseField_BLS12_381 { s: get_fixed_limbs(x) },
+            y: BaseField_BLS12_381 { s: get_fixed_limbs(y) },
+            z: BaseField_BLS12_381 { s: get_fixed_limbs(z) },
         }
     }
 
     pub fn from_xy_limbs(value: &[u32]) -> Point_BLS12_381 {
         let l = value.len();
-        assert_eq!(l, 3 * BASE_LIMBS_BLS12_381, "length must be 3 * {}", BASE_LIMBS_BLS12_381);
+        assert_eq!(
+            l,
+            3 * BASE_LIMBS_BLS12_381,
+            "length must be 3 * {}",
+            BASE_LIMBS_BLS12_381
+        );
         Point_BLS12_381 {
             x: BaseField_BLS12_381 {
-                s: value[..BASE_LIMBS_BLS12_381].try_into().unwrap(),
+                s: value[..BASE_LIMBS_BLS12_381]
+                    .try_into()
+                    .unwrap(),
             },
             y: BaseField_BLS12_381 {
-                s: value[BASE_LIMBS_BLS12_381..BASE_LIMBS_BLS12_381 * 2].try_into().unwrap(),
+                s: value[BASE_LIMBS_BLS12_381..BASE_LIMBS_BLS12_381 * 2]
+                    .try_into()
+                    .unwrap(),
             },
             z: BaseField_BLS12_381 {
-                s: value[BASE_LIMBS_BLS12_381 * 2..].try_into().unwrap(),
+                s: value[BASE_LIMBS_BLS12_381 * 2..]
+                    .try_into()
+                    .unwrap(),
             },
         }
     }
@@ -293,16 +345,21 @@ impl Point_BLS12_381 {
     pub fn to_affine(&self) -> PointAffineNoInfinity_BLS12_381 {
         let ark_affine = self.to_ark_affine();
         PointAffineNoInfinity_BLS12_381 {
-            x: BaseField_BLS12_381::from_ark(ark_affine.x.into_repr()),
-            y: BaseField_BLS12_381::from_ark(ark_affine.y.into_repr()),
+            x: BaseField_BLS12_381::from_ark(
+                ark_affine
+                    .x
+                    .into_repr(),
+            ),
+            y: BaseField_BLS12_381::from_ark(
+                ark_affine
+                    .y
+                    .into_repr(),
+            ),
         }
     }
 
     pub fn to_xy_strip_z(&self) -> PointAffineNoInfinity_BLS12_381 {
-        PointAffineNoInfinity_BLS12_381 {
-            x: self.x,
-            y: self.y,
-        }
+        PointAffineNoInfinity_BLS12_381 { x: self.x, y: self.y }
     }
 }
 
@@ -314,12 +371,10 @@ impl ScalarField_BLS12_381 {
     }
 }
 
-
 #[cfg(test)]
 mod tests {
-    use ark_bls12_381::{Fr as Fr_BLS12_381};
 
-    use crate::{utils::{u32_vec_to_u64_vec, u64_vec_to_u32_vec}, curves::bls12_381::{Point_BLS12_381, ScalarField_BLS12_381}};
+    use crate::curves::bls12_381::{Point_BLS12_381, ScalarField_BLS12_381};
 
     #[test]
     fn test_ark_scalar_convert() {
@@ -349,4 +404,4 @@ mod tests {
         );
         assert!(left != right);
     }
-}
\ No newline at end of file
+}
diff --git a/src/curves/bn254.rs b/src/curves/bn254.rs
index 5ec5292c..95fb31a7 100644
--- a/src/curves/bn254.rs
+++ b/src/curves/bn254.rs
@@ -1,15 +1,12 @@
-use std::ffi::c_uint;
-
-use ark_bn254::{Fq as Fq_BN254, Fr as Fr_BN254, G1Affine as G1Affine_BN254, G1Projective as G1Projective_BN254};
-
+use crate::utils::{u32_vec_to_u64_vec, u64_vec_to_u32_vec};
+use ark_bn254::{Fq as Fq_BN254, G1Affine as G1Affine_BN254, G1Projective as G1Projective_BN254};
 use ark_ec::AffineCurve;
-use ark_ff::{BigInteger256, PrimeField};
-use std::mem::transmute;
 use ark_ff::Field;
-use crate::{utils::{u32_vec_to_u64_vec, u64_vec_to_u32_vec}};
-
+use ark_ff::{BigInteger256, PrimeField};
 use rustacuda_core::DeviceCopy;
 use rustacuda_derive::DeviceCopy;
+use std::ffi::c_uint;
+use std::mem::transmute;
 
 #[derive(Debug, PartialEq, Copy, Clone)]
 #[repr(C)]
@@ -27,9 +24,7 @@ impl Default for Field_BN254 {
 
 impl Field_BN254 {
     pub fn zero() -> Self {
-        Field_BN254 {
-            s: [0u32; NUM_LIMBS],
-        }
+        Field_BN254 { s: [0u32; NUM_LIMBS] }
     }
 
     pub fn one() -> Self {
@@ -41,7 +36,10 @@ impl Field_BN254 {
     fn to_bytes_le(&self) -> Vec {
         self.s
             .iter()
-            .map(|s| s.to_le_bytes().to_vec())
+            .map(|s| {
+                s.to_le_bytes()
+                    .to_vec()
+            })
             .flatten()
             .collect::>()
     }
@@ -50,7 +48,9 @@ impl Field_BN254 {
 pub const BASE_LIMBS_BN254: usize = 8;
 pub const SCALAR_LIMBS_BN254: usize = 8;
 
+#[allow(non_camel_case_types)]
 pub type BaseField_BN254 = Field_BN254;
+#[allow(non_camel_case_types)]
 pub type ScalarField_BN254 = Field_BN254;
 
 fn get_fixed_limbs(val: &[u32]) -> [u32; NUM_LIMBS] {
@@ -60,7 +60,9 @@ fn get_fixed_limbs(val: &[u32]) -> [u32; NUM_LIMBS] {
             padded[..val.len()].copy_from_slice(&val);
             padded
         }
-        n if n == NUM_LIMBS => val.try_into().unwrap(),
+        n if n == NUM_LIMBS => val
+            .try_into()
+            .unwrap(),
         _ => panic!("slice has too many elements"),
     }
 }
@@ -71,7 +73,11 @@ impl ScalarField_BN254 {
     }
 
     pub fn to_ark(&self) -> BigInteger256 {
-        BigInteger256::new(u32_vec_to_u64_vec(&self.limbs()).try_into().unwrap())
+        BigInteger256::new(
+            u32_vec_to_u64_vec(&self.limbs())
+                .try_into()
+                .unwrap(),
+        )
     }
 
     pub fn from_ark(ark: BigInteger256) -> Self {
@@ -116,25 +122,41 @@ impl Point_BN254 {
 
     pub fn to_ark(&self) -> G1Projective_BN254 {
         //TODO: generic conversion
-        self.to_ark_affine().into_projective()
+        self.to_ark_affine()
+            .into_projective()
     }
 
     pub fn to_ark_affine(&self) -> G1Affine_BN254 {
         //TODO: generic conversion
-        use ark_ff::Field;
         use std::ops::Mul;
-        let proj_x_field = Fq_BN254::from_le_bytes_mod_order(&self.x.to_bytes_le());
-        let proj_y_field = Fq_BN254::from_le_bytes_mod_order(&self.y.to_bytes_le());
-        let proj_z_field = Fq_BN254::from_le_bytes_mod_order(&self.z.to_bytes_le());
-        let inverse_z = proj_z_field.inverse().unwrap();
+        let proj_x_field = Fq_BN254::from_le_bytes_mod_order(
+            &self
+                .x
+                .to_bytes_le(),
+        );
+        let proj_y_field = Fq_BN254::from_le_bytes_mod_order(
+            &self
+                .y
+                .to_bytes_le(),
+        );
+        let proj_z_field = Fq_BN254::from_le_bytes_mod_order(
+            &self
+                .z
+                .to_bytes_le(),
+        );
+        let inverse_z = proj_z_field
+            .inverse()
+            .unwrap();
         let aff_x = proj_x_field.mul(inverse_z);
         let aff_y = proj_y_field.mul(inverse_z);
         G1Affine_BN254::new(aff_x, aff_y, false)
     }
 
     pub fn from_ark(ark: G1Projective_BN254) -> Point_BN254 {
-        use ark_ff::Field;
-        let z_inv = ark.z.inverse().unwrap();
+        let z_inv = ark
+            .z
+            .inverse()
+            .unwrap();
         let z_invsq = z_inv * z_inv;
         let z_invq3 = z_invsq * z_inv;
         Point_BN254 {
@@ -176,17 +198,19 @@ impl PointAffineNoInfinity_BN254 {
     ///From u32 limbs x,y
     pub fn from_limbs(x: &[u32], y: &[u32]) -> Self {
         PointAffineNoInfinity_BN254 {
-            x: BaseField_BN254 {
-                s: get_fixed_limbs(x),
-            },
-            y: BaseField_BN254 {
-                s: get_fixed_limbs(y),
-            },
+            x: BaseField_BN254 { s: get_fixed_limbs(x) },
+            y: BaseField_BN254 { s: get_fixed_limbs(y) },
         }
     }
 
     pub fn limbs(&self) -> Vec {
-        [self.x.limbs(), self.y.limbs()].concat()
+        [
+            self.x
+                .limbs(),
+            self.y
+                .limbs(),
+        ]
+        .concat()
     }
 
     pub fn to_projective(&self) -> Point_BN254 {
@@ -198,13 +222,31 @@ impl PointAffineNoInfinity_BN254 {
     }
 
     pub fn to_ark(&self) -> G1Affine_BN254 {
-        G1Affine_BN254::new(Fq_BN254::new(self.x.to_ark()), Fq_BN254::new(self.y.to_ark()), false)
+        G1Affine_BN254::new(
+            Fq_BN254::new(
+                self.x
+                    .to_ark(),
+            ),
+            Fq_BN254::new(
+                self.y
+                    .to_ark(),
+            ),
+            false,
+        )
     }
 
     pub fn to_ark_repr(&self) -> G1Affine_BN254 {
         G1Affine_BN254::new(
-            Fq_BN254::from_repr(self.x.to_ark()).unwrap(),
-            Fq_BN254::from_repr(self.y.to_ark()).unwrap(),
+            Fq_BN254::from_repr(
+                self.x
+                    .to_ark(),
+            )
+            .unwrap(),
+            Fq_BN254::from_repr(
+                self.y
+                    .to_ark(),
+            )
+            .unwrap(),
             false,
         )
     }
@@ -222,15 +264,9 @@ impl Point_BN254 {
 
     pub fn from_limbs(x: &[u32], y: &[u32], z: &[u32]) -> Self {
         Point_BN254 {
-            x: BaseField_BN254 {
-                s: get_fixed_limbs(x),
-            },
-            y: BaseField_BN254 {
-                s: get_fixed_limbs(y),
-            },
-            z: BaseField_BN254 {
-                s: get_fixed_limbs(z),
-            },
+            x: BaseField_BN254 { s: get_fixed_limbs(x) },
+            y: BaseField_BN254 { s: get_fixed_limbs(y) },
+            z: BaseField_BN254 { s: get_fixed_limbs(z) },
         }
     }
 
@@ -239,13 +275,19 @@ impl Point_BN254 {
         assert_eq!(l, 3 * BASE_LIMBS_BN254, "length must be 3 * {}", BASE_LIMBS_BN254);
         Point_BN254 {
             x: BaseField_BN254 {
-                s: value[..BASE_LIMBS_BN254].try_into().unwrap(),
+                s: value[..BASE_LIMBS_BN254]
+                    .try_into()
+                    .unwrap(),
             },
             y: BaseField_BN254 {
-                s: value[BASE_LIMBS_BN254..BASE_LIMBS_BN254 * 2].try_into().unwrap(),
+                s: value[BASE_LIMBS_BN254..BASE_LIMBS_BN254 * 2]
+                    .try_into()
+                    .unwrap(),
             },
             z: BaseField_BN254 {
-                s: value[BASE_LIMBS_BN254 * 2..].try_into().unwrap(),
+                s: value[BASE_LIMBS_BN254 * 2..]
+                    .try_into()
+                    .unwrap(),
             },
         }
     }
@@ -253,16 +295,21 @@ impl Point_BN254 {
     pub fn to_affine(&self) -> PointAffineNoInfinity_BN254 {
         let ark_affine = self.to_ark_affine();
         PointAffineNoInfinity_BN254 {
-            x: BaseField_BN254::from_ark(ark_affine.x.into_repr()),
-            y: BaseField_BN254::from_ark(ark_affine.y.into_repr()),
+            x: BaseField_BN254::from_ark(
+                ark_affine
+                    .x
+                    .into_repr(),
+            ),
+            y: BaseField_BN254::from_ark(
+                ark_affine
+                    .y
+                    .into_repr(),
+            ),
         }
     }
 
     pub fn to_xy_strip_z(&self) -> PointAffineNoInfinity_BN254 {
-        PointAffineNoInfinity_BN254 {
-            x: self.x,
-            y: self.y,
-        }
+        PointAffineNoInfinity_BN254 { x: self.x, y: self.y }
     }
 }
 
@@ -274,12 +321,10 @@ impl ScalarField_BN254 {
     }
 }
 
-
 #[cfg(test)]
 mod tests {
-    use ark_bn254::{Fr as Fr_BN254};
 
-    use crate::{utils::{u32_vec_to_u64_vec, u64_vec_to_u32_vec}, curves::bn254::{Point_BN254, ScalarField_BN254}};
+    use crate::curves::bn254::{Point_BN254, ScalarField_BN254};
 
     #[test]
     fn test_ark_scalar_convert() {
@@ -302,11 +347,7 @@ mod tests {
         assert_eq!(left, right);
         let right = Point_BN254::from_limbs(&[0; 8], &[2, 0, 0, 0, 0, 0, 0, 0], &[0; 8]);
         assert_eq!(left, right);
-        let right = Point_BN254::from_limbs(
-            &[2, 0, 0, 0, 0, 0, 0, 0],
-            &[0; 8],
-            &[1, 0, 0, 0, 0, 0, 0, 0],
-        );
+        let right = Point_BN254::from_limbs(&[2, 0, 0, 0, 0, 0, 0, 0], &[0; 8], &[1, 0, 0, 0, 0, 0, 0, 0]);
         assert!(left != right);
     }
-}
\ No newline at end of file
+}
diff --git a/src/curves/mod.rs b/src/curves/mod.rs
index a96afbf3..3a0698b9 100644
--- a/src/curves/mod.rs
+++ b/src/curves/mod.rs
@@ -1,3 +1,3 @@
-pub mod bls12_381;
 pub mod bls12_377;
+pub mod bls12_381;
 pub mod bn254;
diff --git a/src/lib.rs b/src/lib.rs
index 999740a2..b79325e3 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,5 +1,5 @@
+pub mod curves;
 pub mod test_bls12_377;
 pub mod test_bls12_381;
 pub mod test_bn254;
 pub mod utils;
-pub mod curves;
diff --git a/src/test_bls12_377.rs b/src/test_bls12_377.rs
index 96bf66b4..392ce739 100644
--- a/src/test_bls12_377.rs
+++ b/src/test_bls12_377.rs
@@ -1,17 +1,12 @@
-use std::ffi::{c_int, c_uint};
-
-use rand::{rngs::StdRng, RngCore, SeedableRng};
-
-
 use crate::curves::bls12_377::*;
-
 use ark_bls12_377::{Fr as Fr_BLS12_377, G1Projective as G1Projective_BLS12_377};
 use ark_ff::PrimeField;
 use ark_std::UniformRand;
-
+use rand::{rngs::StdRng, RngCore, SeedableRng};
+use rustacuda::memory::{CopyDestination, DeviceBox, DeviceCopy};
 use rustacuda::prelude::*;
 use rustacuda_core::DevicePointer;
-use rustacuda::memory::{DeviceBox, CopyDestination, DeviceCopy};
+use std::ffi::{c_int, c_uint};
 
 extern "C" {
 
@@ -49,18 +44,18 @@ extern "C" {
         device_id: usize,
     ) -> c_uint;
 
-    fn build_domain_cuda_bls12_377(domain_size: usize, logn: usize, inverse: bool, device_id: usize) -> DevicePointer;
+    fn build_domain_cuda_bls12_377(
+        domain_size: usize,
+        logn: usize,
+        inverse: bool,
+        device_id: usize,
+    ) -> DevicePointer;
 
     fn ntt_cuda_bls12_377(inout: *mut ScalarField_BLS12_377, n: usize, inverse: bool, device_id: usize) -> c_int;
 
     fn ecntt_cuda_bls12_377(inout: *mut Point_BLS12_377, n: usize, inverse: bool, device_id: usize) -> c_int;
 
-    fn ntt_batch_cuda_bls12_377(
-        inout: *mut ScalarField_BLS12_377,
-        arr_size: usize,
-        n: usize,
-        inverse: bool,
-    ) -> c_int;
+    fn ntt_batch_cuda_bls12_377(inout: *mut ScalarField_BLS12_377, arr_size: usize, n: usize, inverse: bool) -> c_int;
 
     fn ecntt_batch_cuda_bls12_377(inout: *mut Point_BLS12_377, arr_size: usize, n: usize, inverse: bool) -> c_int;
 
@@ -70,15 +65,15 @@ extern "C" {
         n: usize,
         batch_size: usize,
         inverse: bool,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn interpolate_scalars_cuda_bls12_377(
         d_out: DevicePointer,
         d_evaluations: DevicePointer,
-        d_domain: DevicePointer, 
+        d_domain: DevicePointer,
         n: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn interpolate_scalars_batch_cuda_bls12_377(
@@ -87,7 +82,7 @@ extern "C" {
         d_domain: DevicePointer,
         n: usize,
         batch_size: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn interpolate_points_cuda_bls12_377(
@@ -95,7 +90,7 @@ extern "C" {
         d_evaluations: DevicePointer,
         d_domain: DevicePointer,
         n: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn interpolate_points_batch_cuda_bls12_377(
@@ -104,7 +99,7 @@ extern "C" {
         d_domain: DevicePointer,
         n: usize,
         batch_size: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn evaluate_scalars_cuda_bls12_377(
@@ -113,7 +108,7 @@ extern "C" {
         d_domain: DevicePointer,
         domain_size: usize,
         n: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn evaluate_scalars_batch_cuda_bls12_377(
@@ -123,7 +118,7 @@ extern "C" {
         domain_size: usize,
         n: usize,
         batch_size: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn evaluate_points_cuda_bls12_377(
@@ -132,7 +127,7 @@ extern "C" {
         d_domain: DevicePointer,
         domain_size: usize,
         n: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn evaluate_points_batch_cuda_bls12_377(
@@ -142,7 +137,7 @@ extern "C" {
         domain_size: usize,
         n: usize,
         batch_size: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn evaluate_scalars_on_coset_cuda_bls12_377(
@@ -152,7 +147,7 @@ extern "C" {
         domain_size: usize,
         n: usize,
         coset_powers: DevicePointer,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn evaluate_scalars_on_coset_batch_cuda_bls12_377(
@@ -163,7 +158,7 @@ extern "C" {
         n: usize,
         batch_size: usize,
         coset_powers: DevicePointer,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn evaluate_points_on_coset_cuda_bls12_377(
@@ -173,7 +168,7 @@ extern "C" {
         domain_size: usize,
         n: usize,
         coset_powers: DevicePointer,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn evaluate_points_on_coset_batch_cuda_bls12_377(
@@ -184,33 +179,29 @@ extern "C" {
         n: usize,
         batch_size: usize,
         coset_powers: DevicePointer,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn reverse_order_scalars_cuda_bls12_377(
         d_arr: DevicePointer,
         n: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn reverse_order_scalars_batch_cuda_bls12_377(
         d_arr: DevicePointer,
         n: usize,
         batch_size: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
-    fn reverse_order_points_cuda_bls12_377(
-        d_arr: DevicePointer,
-        n: usize,
-        device_id: usize
-    ) -> c_int;
+    fn reverse_order_points_cuda_bls12_377(d_arr: DevicePointer, n: usize, device_id: usize) -> c_int;
 
     fn reverse_order_points_batch_cuda_bls12_377(
         d_arr: DevicePointer,
         n: usize,
         batch_size: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn vec_mod_mult_point_bls12_377(
@@ -236,7 +227,11 @@ extern "C" {
     ) -> c_int;
 }
 
-pub fn msm_bls12_377(points: &[PointAffineNoInfinity_BLS12_377], scalars: &[ScalarField_BLS12_377], device_id: usize) -> Point_BLS12_377 {
+pub fn msm_bls12_377(
+    points: &[PointAffineNoInfinity_BLS12_377],
+    scalars: &[ScalarField_BLS12_377],
+    device_id: usize,
+) -> Point_BLS12_377 {
     let count = points.len();
     if count != scalars.len() {
         todo!("variable length")
@@ -343,7 +338,7 @@ pub fn intt_bls12_377(values: &mut [ScalarField_BLS12_377], device_id: usize) {
 /// Compute an in-place NTT on the input data.
 fn ntt_internal_batch_bls12_377(
     values: &mut [ScalarField_BLS12_377],
-    device_id: usize,
+    _device_id: usize,
     batch_size: usize,
     inverse: bool,
 ) -> i32 {
@@ -357,11 +352,11 @@ fn ntt_internal_batch_bls12_377(
     }
 }
 
-pub fn ntt_batch_bls12_377(values: &mut [ScalarField_BLS12_377], batch_size: usize, device_id: usize) {
+pub fn ntt_batch_bls12_377(values: &mut [ScalarField_BLS12_377], batch_size: usize, _device_id: usize) {
     ntt_internal_batch_bls12_377(values, 0, batch_size, false);
 }
 
-pub fn intt_batch_bls12_377(values: &mut [ScalarField_BLS12_377], batch_size: usize, device_id: usize) {
+pub fn intt_batch_bls12_377(values: &mut [ScalarField_BLS12_377], batch_size: usize, _device_id: usize) {
     ntt_internal_batch_bls12_377(values, 0, batch_size, true);
 }
 
@@ -389,7 +384,7 @@ pub fn iecntt_bls12_377(values: &mut [Point_BLS12_377], device_id: usize) {
 /// Compute an in-place ECNTT on the input data.
 fn ecntt_internal_batch_bls12_377(
     values: &mut [Point_BLS12_377],
-    device_id: usize,
+    _device_id: usize,
     batch_size: usize,
     inverse: bool,
 ) -> i32 {
@@ -403,83 +398,62 @@ fn ecntt_internal_batch_bls12_377(
     }
 }
 
-pub fn ecntt_batch_bls12_377(values: &mut [Point_BLS12_377], batch_size: usize, device_id: usize) {
+pub fn ecntt_batch_bls12_377(values: &mut [Point_BLS12_377], batch_size: usize, _device_id: usize) {
     ecntt_internal_batch_bls12_377(values, 0, batch_size, false);
 }
 
 /// Compute an in-place iECNTT on the input data.
-pub fn iecntt_batch_bls12_377(values: &mut [Point_BLS12_377], batch_size: usize, device_id: usize) {
+pub fn iecntt_batch_bls12_377(values: &mut [Point_BLS12_377], batch_size: usize, _device_id: usize) {
     ecntt_internal_batch_bls12_377(values, 0, batch_size, true);
 }
 
 pub fn build_domain_bls12_377(domain_size: usize, logn: usize, inverse: bool) -> DeviceBuffer {
+    unsafe { DeviceBuffer::from_raw_parts(build_domain_cuda_bls12_377(domain_size, logn, inverse, 0), domain_size) }
+}
+
+pub fn reverse_order_scalars_bls12_377(d_scalars: &mut DeviceBuffer) {
     unsafe {
-        DeviceBuffer::from_raw_parts(build_domain_cuda_bls12_377(
-            domain_size,
-            logn,
-            inverse,
-            0
-        ), domain_size)
+        reverse_order_scalars_cuda_bls12_377(d_scalars.as_device_ptr(), d_scalars.len(), 0);
     }
 }
 
-
-pub fn reverse_order_scalars_bls12_377(
-    d_scalars: &mut DeviceBuffer,
-) {
-    unsafe { reverse_order_scalars_cuda_bls12_377(
-        d_scalars.as_device_ptr(),
-        d_scalars.len(),
-        0
-    ); }
+pub fn reverse_order_scalars_batch_bls12_377(d_scalars: &mut DeviceBuffer, batch_size: usize) {
+    unsafe {
+        reverse_order_scalars_batch_cuda_bls12_377(
+            d_scalars.as_device_ptr(),
+            d_scalars.len() / batch_size,
+            batch_size,
+            0,
+        );
+    }
 }
 
-pub fn reverse_order_scalars_batch_bls12_377(
-    d_scalars: &mut DeviceBuffer,
-    batch_size: usize,
-) {
-    unsafe { reverse_order_scalars_batch_cuda_bls12_377(
-        d_scalars.as_device_ptr(),
-        d_scalars.len() / batch_size,
-        batch_size,
-        0
-    ); }
+pub fn reverse_order_points_bls12_377(d_points: &mut DeviceBuffer) {
+    unsafe {
+        reverse_order_points_cuda_bls12_377(d_points.as_device_ptr(), d_points.len(), 0);
+    }
 }
 
-pub fn reverse_order_points_bls12_377(
-    d_points: &mut DeviceBuffer,
-) {
-    unsafe { reverse_order_points_cuda_bls12_377(
-        d_points.as_device_ptr(),
-        d_points.len(),
-        0
-    ); }
-}
-
-pub fn reverse_order_points_batch_bls12_377(
-    d_points: &mut DeviceBuffer,
-    batch_size: usize,
-) {
-    unsafe { reverse_order_points_batch_cuda_bls12_377(
-        d_points.as_device_ptr(),
-        d_points.len() / batch_size,
-        batch_size,
-        0
-    ); }
+pub fn reverse_order_points_batch_bls12_377(d_points: &mut DeviceBuffer, batch_size: usize) {
+    unsafe {
+        reverse_order_points_batch_cuda_bls12_377(d_points.as_device_ptr(), d_points.len() / batch_size, batch_size, 0);
+    }
 }
 
 pub fn interpolate_scalars_bls12_377(
     d_evaluations: &mut DeviceBuffer,
-    d_domain: &mut DeviceBuffer
+    d_domain: &mut DeviceBuffer,
 ) -> DeviceBuffer {
     let mut res = unsafe { DeviceBuffer::uninitialized(d_domain.len()).unwrap() };
-    unsafe { interpolate_scalars_cuda_bls12_377(
-        res.as_device_ptr(),
-        d_evaluations.as_device_ptr(),
-        d_domain.as_device_ptr(),
-        d_domain.len(),
-        0
-    ) };
+    unsafe {
+        interpolate_scalars_cuda_bls12_377(
+            res.as_device_ptr(),
+            d_evaluations.as_device_ptr(),
+            d_domain.as_device_ptr(),
+            d_domain.len(),
+            0,
+        )
+    };
     return res;
 }
 
@@ -488,16 +462,17 @@ pub fn interpolate_scalars_batch_bls12_377(
     d_domain: &mut DeviceBuffer,
     batch_size: usize,
 ) -> DeviceBuffer {
-
     let mut res = unsafe { DeviceBuffer::uninitialized(d_domain.len() * batch_size).unwrap() };
-    unsafe { interpolate_scalars_batch_cuda_bls12_377(
-        res.as_device_ptr(),
-        d_evaluations.as_device_ptr(),
-        d_domain.as_device_ptr(),
-        d_domain.len(),
-        batch_size,
-        0
-    ) };
+    unsafe {
+        interpolate_scalars_batch_cuda_bls12_377(
+            res.as_device_ptr(),
+            d_evaluations.as_device_ptr(),
+            d_domain.as_device_ptr(),
+            d_domain.len(),
+            batch_size,
+            0,
+        )
+    };
     return res;
 }
 
@@ -506,13 +481,15 @@ pub fn interpolate_points_bls12_377(
     d_domain: &mut DeviceBuffer,
 ) -> DeviceBuffer {
     let mut res = unsafe { DeviceBuffer::uninitialized(d_domain.len()).unwrap() };
-    unsafe { interpolate_points_cuda_bls12_377(
-        res.as_device_ptr(),
-        d_evaluations.as_device_ptr(),
-        d_domain.as_device_ptr(),
-        d_domain.len(),
-        0
-    ) };
+    unsafe {
+        interpolate_points_cuda_bls12_377(
+            res.as_device_ptr(),
+            d_evaluations.as_device_ptr(),
+            d_domain.as_device_ptr(),
+            d_domain.len(),
+            0,
+        )
+    };
     return res;
 }
 
@@ -522,14 +499,16 @@ pub fn interpolate_points_batch_bls12_377(
     batch_size: usize,
 ) -> DeviceBuffer {
     let mut res = unsafe { DeviceBuffer::uninitialized(d_domain.len() * batch_size).unwrap() };
-    unsafe { interpolate_points_batch_cuda_bls12_377(
-        res.as_device_ptr(),
-        d_evaluations.as_device_ptr(),
-        d_domain.as_device_ptr(),
-        d_domain.len(),
-        batch_size,
-        0
-    ) };
+    unsafe {
+        interpolate_points_batch_cuda_bls12_377(
+            res.as_device_ptr(),
+            d_evaluations.as_device_ptr(),
+            d_domain.as_device_ptr(),
+            d_domain.len(),
+            batch_size,
+            0,
+        )
+    };
     return res;
 }
 
@@ -545,7 +524,7 @@ pub fn evaluate_scalars_bls12_377(
             d_domain.as_device_ptr(),
             d_domain.len(),
             d_coefficients.len(),
-            0
+            0,
         );
     }
     return res;
@@ -565,7 +544,7 @@ pub fn evaluate_scalars_batch_bls12_377(
             d_domain.len(),
             d_coefficients.len() / batch_size,
             batch_size,
-            0
+            0,
         );
     }
     return res;
@@ -583,7 +562,7 @@ pub fn evaluate_points_bls12_377(
             d_domain.as_device_ptr(),
             d_domain.len(),
             d_coefficients.len(),
-            0
+            0,
         );
     }
     return res;
@@ -603,7 +582,7 @@ pub fn evaluate_points_batch_bls12_377(
             d_domain.len(),
             d_coefficients.len() / batch_size,
             batch_size,
-            0
+            0,
         );
     }
     return res;
@@ -623,7 +602,7 @@ pub fn evaluate_scalars_on_coset_bls12_377(
             d_domain.len(),
             d_coefficients.len(),
             coset_powers.as_device_ptr(),
-            0
+            0,
         );
     }
     return res;
@@ -645,7 +624,7 @@ pub fn evaluate_scalars_on_coset_batch_bls12_377(
             d_coefficients.len() / batch_size,
             batch_size,
             coset_powers.as_device_ptr(),
-            0
+            0,
         );
     }
     return res;
@@ -665,7 +644,7 @@ pub fn evaluate_points_on_coset_bls12_377(
             d_domain.len(),
             d_coefficients.len(),
             coset_powers.as_device_ptr(),
-            0
+            0,
         );
     }
     return res;
@@ -687,7 +666,7 @@ pub fn evaluate_points_on_coset_batch_bls12_377(
             d_coefficients.len() / batch_size,
             batch_size,
             coset_powers.as_device_ptr(),
-            0
+            0,
         );
     }
     return res;
@@ -698,7 +677,7 @@ pub fn ntt_inplace_batch_bls12_377(
     d_twiddles: &mut DeviceBuffer,
     batch_size: usize,
     inverse: bool,
-    device_id: usize
+    device_id: usize,
 ) -> i32 {
     unsafe {
         ntt_inplace_batch_cuda_bls12_377(
@@ -707,7 +686,7 @@ pub fn ntt_inplace_batch_bls12_377(
             d_twiddles.len(),
             batch_size,
             inverse,
-            device_id
+            device_id,
         )
     }
 }
@@ -739,9 +718,13 @@ pub fn mult_sc_vec_bls12_377(a: &mut [ScalarField_BLS12_377], b: &[ScalarField_B
 // Multiply a matrix by a scalar:
 //  `a` - flattenned matrix;
 //  `b` - vector to multiply `a` by;
-pub fn mult_matrix_by_vec_bls12_377(a: &[ScalarField_BLS12_377], b: &[ScalarField_BLS12_377], device_id: usize) -> Vec {
+pub fn mult_matrix_by_vec_bls12_377(
+    a: &[ScalarField_BLS12_377],
+    b: &[ScalarField_BLS12_377],
+    device_id: usize,
+) -> Vec {
     let mut c = Vec::with_capacity(b.len());
-    for i in 0..b.len() {
+    for _ in 0..b.len() {
         c.push(ScalarField_BLS12_377::zero());
     }
     unsafe {
@@ -758,7 +741,7 @@ pub fn mult_matrix_by_vec_bls12_377(a: &[ScalarField_BLS12_377], b: &[ScalarFiel
 
 pub fn clone_buffer_bls12_377(buf: &mut DeviceBuffer) -> DeviceBuffer {
     let mut buf_cpy = unsafe { DeviceBuffer::uninitialized(buf.len()).unwrap() };
-    unsafe { buf_cpy.copy_from(buf) };
+    let _ = buf_cpy.copy_from(buf);
     return buf_cpy;
 }
 
@@ -798,42 +781,55 @@ pub fn generate_random_scalars_bls12_377(count: usize, mut rng: Box
         .collect()
 }
 
-pub fn set_up_points_bls12_377(test_size: usize, log_domain_size: usize, inverse: bool) -> (Vec, DeviceBuffer, DeviceBuffer) {
+pub fn set_up_points_bls12_377(
+    test_size: usize,
+    log_domain_size: usize,
+    inverse: bool,
+) -> (
+    Vec,
+    DeviceBuffer,
+    DeviceBuffer,
+) {
     set_up_device_bls12_377();
 
     let d_domain = build_domain_bls12_377(1 << log_domain_size, log_domain_size, inverse);
 
-    let seed = Some(0); // fix the rng to get two equal scalar 
+    let seed = Some(0); // fix the rng to get two equal scalar
     let vector = generate_random_points_proj_bls12_377(test_size, get_rng_bls12_377(seed));
-    let mut vector_mut = vector.clone();
+    let vector_mut = vector.clone();
 
-    let mut d_vector = DeviceBuffer::from_slice(&vector[..]).unwrap();
+    let d_vector = DeviceBuffer::from_slice(&vector[..]).unwrap();
     (vector_mut, d_vector, d_domain)
 }
 
-pub fn set_up_scalars_bls12_377(test_size: usize, log_domain_size: usize, inverse: bool) -> (Vec, DeviceBuffer, DeviceBuffer) {
+pub fn set_up_scalars_bls12_377(
+    test_size: usize,
+    log_domain_size: usize,
+    inverse: bool,
+) -> (
+    Vec,
+    DeviceBuffer,
+    DeviceBuffer,
+) {
     set_up_device_bls12_377();
 
     let d_domain = build_domain_bls12_377(1 << log_domain_size, log_domain_size, inverse);
 
     let seed = Some(0); // fix the rng to get two equal scalars
-    let mut vector_mut = generate_random_scalars_bls12_377(test_size, get_rng_bls12_377(seed));
+    let vector_mut = generate_random_scalars_bls12_377(test_size, get_rng_bls12_377(seed));
 
-    let mut d_vector = DeviceBuffer::from_slice(&vector_mut[..]).unwrap();
+    let d_vector = DeviceBuffer::from_slice(&vector_mut[..]).unwrap();
     (vector_mut, d_vector, d_domain)
 }
 
-
 #[cfg(test)]
 pub(crate) mod tests_bls12_377 {
-    use std::ops::Add;
+    use crate::test_bls12_377::*;
     use ark_bls12_377::{Fr, G1Affine, G1Projective};
     use ark_ec::{msm::VariableBaseMSM, AffineCurve, ProjectiveCurve};
     use ark_ff::{FftField, Field, Zero};
     use ark_std::UniformRand;
-    use rand::{rngs::StdRng, RngCore, SeedableRng};
-    use crate::test_bls12_377::*;
-    use crate::{curves::bls12_377::*, *};
+    use std::ops::Add;
 
     fn random_points_ark_proj(nof_elements: usize) -> Vec {
         let mut rng = ark_std::rand::thread_rng();
@@ -845,11 +841,7 @@ pub(crate) mod tests_bls12_377 {
         points_ga
     }
 
-    fn ecntt_arc_naive(
-        points: &Vec,
-        size: usize,
-        inverse: bool,
-    ) -> Vec {
+    fn ecntt_arc_naive(points: &Vec, size: usize, inverse: bool) -> Vec {
         let mut result: Vec = Vec::new();
         for _ in 0..size {
             result.push(G1Projective::zero());
@@ -862,16 +854,24 @@ pub(crate) mod tests_bls12_377 {
         }
         for k in 0..size {
             for l in 0..size {
-                let pow: [u64; 1] = [(l * k).try_into().unwrap()];
+                let pow: [u64; 1] = [(l * k)
+                    .try_into()
+                    .unwrap()];
                 let mul_rou = Fr::pow(&rou, &pow);
-                result[k] = result[k].add(points[l].into_affine().mul(mul_rou));
+                result[k] = result[k].add(
+                    points[l]
+                        .into_affine()
+                        .mul(mul_rou),
+                );
             }
         }
         if inverse {
             let size2 = size as u64;
             for k in 0..size {
                 let multfactor = Fr::inverse(&Fr::from(size2)).unwrap();
-                result[k] = result[k].into_affine().mul(multfactor);
+                result[k] = result[k]
+                    .into_affine()
+                    .mul(multfactor);
             }
         }
         return result;
@@ -908,8 +908,14 @@ pub(crate) mod tests_bls12_377 {
 
             let msm_result = msm_bls12_377(&points, &scalars, 0);
 
-            let point_r_ark: Vec<_> = points.iter().map(|x| x.to_ark_repr()).collect();
-            let scalars_r_ark: Vec<_> = scalars.iter().map(|x| x.to_ark()).collect();
+            let point_r_ark: Vec<_> = points
+                .iter()
+                .map(|x| x.to_ark_repr())
+                .collect();
+            let scalars_r_ark: Vec<_> = scalars
+                .iter()
+                .map(|x| x.to_ark())
+                .collect();
 
             let msm_result_ark = VariableBaseMSM::multi_scalar_mul(&point_r_ark, &scalars_r_ark);
 
@@ -932,8 +938,14 @@ pub(crate) mod tests_bls12_377 {
                 let points_batch = generate_random_points_bls12_377(msm_size * batch_size, get_rng_bls12_377(seed));
                 let scalars_batch = generate_random_scalars_bls12_377(msm_size * batch_size, get_rng_bls12_377(seed));
 
-                let point_r_ark: Vec<_> = points_batch.iter().map(|x| x.to_ark_repr()).collect();
-                let scalars_r_ark: Vec<_> = scalars_batch.iter().map(|x| x.to_ark()).collect();
+                let point_r_ark: Vec<_> = points_batch
+                    .iter()
+                    .map(|x| x.to_ark_repr())
+                    .collect();
+                let scalars_r_ark: Vec<_> = scalars_batch
+                    .iter()
+                    .map(|x| x.to_ark())
+                    .collect();
 
                 let expected: Vec<_> = point_r_ark
                     .chunks(msm_size)
@@ -952,14 +964,16 @@ pub(crate) mod tests_bls12_377 {
     fn test_commit() {
         let test_size = 1 << 8;
         let seed = Some(0);
-        let (mut scalars, mut d_scalars, _) = set_up_scalars_bls12_377(test_size, 0, false);
-        let mut points = generate_random_points_bls12_377(test_size, get_rng_bls12_377(seed));
+        let (scalars, mut d_scalars, _) = set_up_scalars_bls12_377(test_size, 0, false);
+        let points = generate_random_points_bls12_377(test_size, get_rng_bls12_377(seed));
         let mut d_points = DeviceBuffer::from_slice(&points[..]).unwrap();
 
         let msm_result = msm_bls12_377(&points, &scalars, 0);
-        let mut d_commit_result = commit_bls12_377(&mut d_points, &mut d_scalars);
+        let d_commit_result = commit_bls12_377(&mut d_points, &mut d_scalars);
         let mut h_commit_result = Point_BLS12_377::zero();
-        d_commit_result.copy_to(&mut h_commit_result).unwrap();
+        d_commit_result
+            .copy_to(&mut h_commit_result)
+            .unwrap();
 
         assert_eq!(msm_result, h_commit_result);
         assert_ne!(msm_result, Point_BLS12_377::zero());
@@ -976,9 +990,13 @@ pub(crate) mod tests_bls12_377 {
         let mut d_points = DeviceBuffer::from_slice(&points[..]).unwrap();
 
         let msm_result = msm_batch_bls12_377(&points, &scalars, batch_size, 0);
-        let mut d_commit_result = commit_batch_bls12_377(&mut d_points, &mut d_scalars, batch_size);
-        let mut h_commit_result: Vec = (0..batch_size).map(|_| Point_BLS12_377::zero()).collect();
-        d_commit_result.copy_to(&mut h_commit_result[..]).unwrap();
+        let d_commit_result = commit_batch_bls12_377(&mut d_points, &mut d_scalars, batch_size);
+        let mut h_commit_result: Vec = (0..batch_size)
+            .map(|_| Point_BLS12_377::zero())
+            .collect();
+        d_commit_result
+            .copy_to(&mut h_commit_result[..])
+            .unwrap();
 
         assert_eq!(msm_result, h_commit_result);
         for h in h_commit_result {
@@ -1010,7 +1028,10 @@ pub(crate) mod tests_bls12_377 {
 
         test_naive_ark_ecntt(test_size);
 
-        assert!(points_proj[0].to_ark().into_affine().is_on_curve());
+        assert!(points_proj[0]
+            .to_ark()
+            .into_affine()
+            .is_on_curve());
 
         //naive ark
         let points_proj_ark = points_proj
@@ -1083,10 +1104,7 @@ pub(crate) mod tests_bls12_377 {
 
         // check that the ntt of each vec of scalars is equal to the intt of the specific batch
         for i in 0..batches {
-            assert_eq!(
-                ntt_result_vec_of_vec[i],
-                ntt_result[i * test_size..(i + 1) * test_size]
-            );
+            assert_eq!(ntt_result_vec_of_vec[i], ntt_result[i * test_size..(i + 1) * test_size]);
         }
 
         // check that ntt output is different from input
@@ -1175,10 +1193,14 @@ pub(crate) mod tests_bls12_377 {
         let test_size = 1 << log_test_size;
         let (mut evals_mut, mut d_evals, mut d_domain) = set_up_scalars_bls12_377(test_size, log_test_size, true);
 
-        let mut d_coeffs = interpolate_scalars_bls12_377(&mut d_evals, &mut d_domain);
+        let d_coeffs = interpolate_scalars_bls12_377(&mut d_evals, &mut d_domain);
         intt_bls12_377(&mut evals_mut, 0);
-        let mut h_coeffs: Vec = (0..test_size).map(|_| ScalarField_BLS12_377::zero()).collect();
-        d_coeffs.copy_to(&mut h_coeffs[..]).unwrap();
+        let mut h_coeffs: Vec = (0..test_size)
+            .map(|_| ScalarField_BLS12_377::zero())
+            .collect();
+        d_coeffs
+            .copy_to(&mut h_coeffs[..])
+            .unwrap();
 
         assert_eq!(h_coeffs, evals_mut);
     }
@@ -1188,12 +1210,17 @@ pub(crate) mod tests_bls12_377 {
         let batch_size = 4;
         let log_test_size = 10;
         let test_size = 1 << log_test_size;
-        let (mut evals_mut, mut d_evals, mut d_domain) = set_up_scalars_bls12_377(test_size * batch_size, log_test_size, true);
+        let (mut evals_mut, mut d_evals, mut d_domain) =
+            set_up_scalars_bls12_377(test_size * batch_size, log_test_size, true);
 
-        let mut d_coeffs = interpolate_scalars_batch_bls12_377(&mut d_evals, &mut d_domain, batch_size);
+        let d_coeffs = interpolate_scalars_batch_bls12_377(&mut d_evals, &mut d_domain, batch_size);
         intt_batch_bls12_377(&mut evals_mut, test_size, 0);
-        let mut h_coeffs: Vec = (0..test_size * batch_size).map(|_| ScalarField_BLS12_377::zero()).collect();
-        d_coeffs.copy_to(&mut h_coeffs[..]).unwrap();
+        let mut h_coeffs: Vec = (0..test_size * batch_size)
+            .map(|_| ScalarField_BLS12_377::zero())
+            .collect();
+        d_coeffs
+            .copy_to(&mut h_coeffs[..])
+            .unwrap();
 
         assert_eq!(h_coeffs, evals_mut);
     }
@@ -1204,11 +1231,15 @@ pub(crate) mod tests_bls12_377 {
         let test_size = 1 << log_test_size;
         let (mut evals_mut, mut d_evals, mut d_domain) = set_up_points_bls12_377(test_size, log_test_size, true);
 
-        let mut d_coeffs = interpolate_points_bls12_377(&mut d_evals, &mut d_domain);
+        let d_coeffs = interpolate_points_bls12_377(&mut d_evals, &mut d_domain);
         iecntt_bls12_377(&mut evals_mut[..], 0);
-        let mut h_coeffs: Vec = (0..test_size).map(|_| Point_BLS12_377::zero()).collect();
-        d_coeffs.copy_to(&mut h_coeffs[..]).unwrap();
-        
+        let mut h_coeffs: Vec = (0..test_size)
+            .map(|_| Point_BLS12_377::zero())
+            .collect();
+        d_coeffs
+            .copy_to(&mut h_coeffs[..])
+            .unwrap();
+
         assert_eq!(h_coeffs, *evals_mut);
         for h in h_coeffs.iter() {
             assert_ne!(*h, Point_BLS12_377::zero());
@@ -1220,13 +1251,18 @@ pub(crate) mod tests_bls12_377 {
         let batch_size = 4;
         let log_test_size = 6;
         let test_size = 1 << log_test_size;
-        let (mut evals_mut, mut d_evals, mut d_domain) = set_up_points_bls12_377(test_size * batch_size, log_test_size, true);
+        let (mut evals_mut, mut d_evals, mut d_domain) =
+            set_up_points_bls12_377(test_size * batch_size, log_test_size, true);
 
-        let mut d_coeffs = interpolate_points_batch_bls12_377(&mut d_evals, &mut d_domain, batch_size);
+        let d_coeffs = interpolate_points_batch_bls12_377(&mut d_evals, &mut d_domain, batch_size);
         iecntt_batch_bls12_377(&mut evals_mut[..], test_size, 0);
-        let mut h_coeffs: Vec = (0..test_size * batch_size).map(|_| Point_BLS12_377::zero()).collect();
-        d_coeffs.copy_to(&mut h_coeffs[..]).unwrap();
-        
+        let mut h_coeffs: Vec = (0..test_size * batch_size)
+            .map(|_| Point_BLS12_377::zero())
+            .collect();
+        d_coeffs
+            .copy_to(&mut h_coeffs[..])
+            .unwrap();
+
         assert_eq!(h_coeffs, *evals_mut);
         for h in h_coeffs.iter() {
             assert_ne!(*h, Point_BLS12_377::zero());
@@ -1241,39 +1277,52 @@ pub(crate) mod tests_bls12_377 {
         let (_, _, mut d_domain_inv) = set_up_scalars_bls12_377(0, log_test_domain_size, true);
 
         let mut d_evals = evaluate_scalars_bls12_377(&mut d_coeffs, &mut d_domain);
-        let mut d_coeffs_domain = interpolate_scalars_bls12_377(&mut d_evals, &mut d_domain_inv);
-        let mut h_coeffs_domain: Vec = (0..1 << log_test_domain_size).map(|_| ScalarField_BLS12_377::zero()).collect();
-        d_coeffs_domain.copy_to(&mut h_coeffs_domain[..]).unwrap();
+        let d_coeffs_domain = interpolate_scalars_bls12_377(&mut d_evals, &mut d_domain_inv);
+        let mut h_coeffs_domain: Vec = (0..1 << log_test_domain_size)
+            .map(|_| ScalarField_BLS12_377::zero())
+            .collect();
+        d_coeffs_domain
+            .copy_to(&mut h_coeffs_domain[..])
+            .unwrap();
 
         assert_eq!(h_coeffs, h_coeffs_domain[..coeff_size]);
-        for i in coeff_size.. (1 << log_test_domain_size) {
+        for i in coeff_size..(1 << log_test_domain_size) {
             assert_eq!(ScalarField_BLS12_377::zero(), h_coeffs_domain[i]);
         }
     }
 
     #[test]
     fn test_scalar_batch_evaluation() {
-
         for batch_size in [1, 6] {
             for log_test_domain_size in [8, 12, 20] {
-                for coeff_size in [1 << 6,  1 << (log_test_domain_size - 1), 1 << log_test_domain_size] {
-
+                for coeff_size in [1 << 6, 1 << (log_test_domain_size - 1), 1 << log_test_domain_size] {
                     let domain_size = 1 << log_test_domain_size;
 
                     let test_size = batch_size * coeff_size;
 
-                    if test_size > (1 << 20) || test_size < (6 * 1 << 8) { continue; }
+                    if test_size > (1 << 20) || test_size < (6 * 1 << 8) {
+                        continue;
+                    }
 
-                    let (h_coeffs, mut d_coeffs, mut d_domain) = set_up_scalars_bls12_377(coeff_size * batch_size, log_test_domain_size, false);
+                    let (h_coeffs, mut d_coeffs, mut d_domain) =
+                        set_up_scalars_bls12_377(coeff_size * batch_size, log_test_domain_size, false);
                     let (_, _, mut d_domain_inv) = set_up_scalars_bls12_377(0, log_test_domain_size, true);
 
                     let mut d_evals = evaluate_scalars_batch_bls12_377(&mut d_coeffs, &mut d_domain, batch_size);
-                    let mut d_coeffs_domain = interpolate_scalars_batch_bls12_377(&mut d_evals, &mut d_domain_inv, batch_size);
-                    let mut h_coeffs_domain: Vec = (0..domain_size * batch_size).map(|_| ScalarField_BLS12_377::zero()).collect();
-                    d_coeffs_domain.copy_to(&mut h_coeffs_domain[..]).unwrap();
+                    let d_coeffs_domain =
+                        interpolate_scalars_batch_bls12_377(&mut d_evals, &mut d_domain_inv, batch_size);
+                    let mut h_coeffs_domain: Vec = (0..domain_size * batch_size)
+                        .map(|_| ScalarField_BLS12_377::zero())
+                        .collect();
+                    d_coeffs_domain
+                        .copy_to(&mut h_coeffs_domain[..])
+                        .unwrap();
 
                     for j in 0..batch_size {
-                        assert_eq!(h_coeffs[j * coeff_size..(j + 1) * coeff_size], h_coeffs_domain[j * domain_size..j * domain_size + coeff_size]);
+                        assert_eq!(
+                            h_coeffs[j * coeff_size..(j + 1) * coeff_size],
+                            h_coeffs_domain[j * domain_size..j * domain_size + coeff_size]
+                        );
                         for i in coeff_size..domain_size {
                             assert_eq!(ScalarField_BLS12_377::zero(), h_coeffs_domain[j * domain_size + i]);
                         }
@@ -1285,31 +1334,40 @@ pub(crate) mod tests_bls12_377 {
 
     #[test]
     fn test_scalar_batch_inplace_ntt() {
-
         for batch_size in [1, 7, 128] {
             for log_test_domain_size in [8, 12, 20] {
                 let n_twiddles = 1 << log_test_domain_size;
 
                 let test_size = batch_size * n_twiddles;
 
-                if test_size > (1 << 20) { continue; }
+                if test_size > (1 << 20) {
+                    continue;
+                }
 
-                let (h_input, mut d_inout, mut d_twiddles) = set_up_scalars_bls12_377(test_size, log_test_domain_size, false);
+                let (h_input, mut d_inout, mut d_twiddles) =
+                    set_up_scalars_bls12_377(test_size, log_test_domain_size, false);
                 let (_, _, mut d_twiddle_inv) = set_up_scalars_bls12_377(0, log_test_domain_size, true);
 
                 ntt_inplace_batch_bls12_377(&mut d_inout, &mut d_twiddles, batch_size, false, 0);
-                
+
                 let mut h_ntt_result: Vec = vec![ScalarField_BLS12_377::zero(); test_size];
-                d_inout.copy_to(&mut h_ntt_result[..]).unwrap();
+                d_inout
+                    .copy_to(&mut h_ntt_result[..])
+                    .unwrap();
 
                 assert_ne!(h_ntt_result, h_input);
 
                 ntt_inplace_batch_bls12_377(&mut d_inout, &mut d_twiddle_inv, batch_size, true, 0);
                 let mut h_ntt_intt_result: Vec = vec![ScalarField_BLS12_377::zero(); test_size];
-                d_inout.copy_to(&mut h_ntt_intt_result[..]).unwrap();
+                d_inout
+                    .copy_to(&mut h_ntt_intt_result[..])
+                    .unwrap();
 
                 for j in 0..batch_size {
-                    assert_eq!(h_input[j * n_twiddles..(j + 1) * n_twiddles], h_ntt_intt_result[j * n_twiddles..j * n_twiddles + n_twiddles]);
+                    assert_eq!(
+                        h_input[j * n_twiddles..(j + 1) * n_twiddles],
+                        h_ntt_intt_result[j * n_twiddles..j * n_twiddles + n_twiddles]
+                    );
                 }
             }
         }
@@ -1323,9 +1381,13 @@ pub(crate) mod tests_bls12_377 {
         let (_, _, mut d_domain_inv) = set_up_points_bls12_377(0, log_test_domain_size, true);
 
         let mut d_evals = evaluate_points_bls12_377(&mut d_coeffs, &mut d_domain);
-        let mut d_coeffs_domain = interpolate_points_bls12_377(&mut d_evals, &mut d_domain_inv);
-        let mut h_coeffs_domain: Vec = (0..1 << log_test_domain_size).map(|_| Point_BLS12_377::zero()).collect();
-        d_coeffs_domain.copy_to(&mut h_coeffs_domain[..]).unwrap();
+        let d_coeffs_domain = interpolate_points_bls12_377(&mut d_evals, &mut d_domain_inv);
+        let mut h_coeffs_domain: Vec = (0..1 << log_test_domain_size)
+            .map(|_| Point_BLS12_377::zero())
+            .collect();
+        d_coeffs_domain
+            .copy_to(&mut h_coeffs_domain[..])
+            .unwrap();
 
         assert_eq!(h_coeffs[..], h_coeffs_domain[..coeff_size]);
         for i in coeff_size..(1 << log_test_domain_size) {
@@ -1342,16 +1404,24 @@ pub(crate) mod tests_bls12_377 {
         let log_test_domain_size = 6;
         let domain_size = 1 << log_test_domain_size;
         let coeff_size = 1 << 5;
-        let (h_coeffs, mut d_coeffs, mut d_domain) = set_up_points_bls12_377(coeff_size * batch_size, log_test_domain_size, false);
+        let (h_coeffs, mut d_coeffs, mut d_domain) =
+            set_up_points_bls12_377(coeff_size * batch_size, log_test_domain_size, false);
         let (_, _, mut d_domain_inv) = set_up_points_bls12_377(0, log_test_domain_size, true);
 
         let mut d_evals = evaluate_points_batch_bls12_377(&mut d_coeffs, &mut d_domain, batch_size);
-        let mut d_coeffs_domain = interpolate_points_batch_bls12_377(&mut d_evals, &mut d_domain_inv, batch_size);
-        let mut h_coeffs_domain: Vec = (0..domain_size * batch_size).map(|_| Point_BLS12_377::zero()).collect();
-        d_coeffs_domain.copy_to(&mut h_coeffs_domain[..]).unwrap();
+        let d_coeffs_domain = interpolate_points_batch_bls12_377(&mut d_evals, &mut d_domain_inv, batch_size);
+        let mut h_coeffs_domain: Vec = (0..domain_size * batch_size)
+            .map(|_| Point_BLS12_377::zero())
+            .collect();
+        d_coeffs_domain
+            .copy_to(&mut h_coeffs_domain[..])
+            .unwrap();
 
         for j in 0..batch_size {
-            assert_eq!(h_coeffs[j * coeff_size..(j + 1) * coeff_size], h_coeffs_domain[j * domain_size..(j * domain_size + coeff_size)]);
+            assert_eq!(
+                h_coeffs[j * coeff_size..(j + 1) * coeff_size],
+                h_coeffs_domain[j * domain_size..(j * domain_size + coeff_size)]
+            );
             for i in coeff_size..domain_size {
                 assert_eq!(Point_BLS12_377::zero(), h_coeffs_domain[j * domain_size + i]);
             }
@@ -1367,37 +1437,58 @@ pub(crate) mod tests_bls12_377 {
         let log_test_domain_size = 8;
         let coeff_size = 1 << 6;
         let (_, mut d_coeffs, mut d_domain) = set_up_scalars_bls12_377(coeff_size, log_test_domain_size, false);
-        let (_, _, mut d_domain_inv) = set_up_scalars_bls12_377(coeff_size, log_test_domain_size, true);
+        let (_, _, _d_domain_inv) = set_up_scalars_bls12_377(coeff_size, log_test_domain_size, true);
         let mut d_trivial_coset_powers = build_domain_bls12_377(1 << log_test_domain_size, 0, false);
 
-        let mut d_evals = evaluate_scalars_bls12_377(&mut d_coeffs, &mut d_domain);
-        let mut h_coeffs: Vec = (0..1 << log_test_domain_size).map(|_| ScalarField_BLS12_377::zero()).collect();
-        d_evals.copy_to(&mut h_coeffs[..]).unwrap();
-        let mut d_evals_coset = evaluate_scalars_on_coset_bls12_377(&mut d_coeffs, &mut d_domain, &mut d_trivial_coset_powers);
-        let mut h_evals_coset: Vec = (0..1 << log_test_domain_size).map(|_| ScalarField_BLS12_377::zero()).collect();
-        d_evals_coset.copy_to(&mut h_evals_coset[..]).unwrap();
+        let d_evals = evaluate_scalars_bls12_377(&mut d_coeffs, &mut d_domain);
+        let mut h_coeffs: Vec = (0..1 << log_test_domain_size)
+            .map(|_| ScalarField_BLS12_377::zero())
+            .collect();
+        d_evals
+            .copy_to(&mut h_coeffs[..])
+            .unwrap();
+        let d_evals_coset =
+            evaluate_scalars_on_coset_bls12_377(&mut d_coeffs, &mut d_domain, &mut d_trivial_coset_powers);
+        let mut h_evals_coset: Vec = (0..1 << log_test_domain_size)
+            .map(|_| ScalarField_BLS12_377::zero())
+            .collect();
+        d_evals_coset
+            .copy_to(&mut h_evals_coset[..])
+            .unwrap();
 
         assert_eq!(h_coeffs, h_evals_coset);
     }
 
     #[test]
     fn test_scalar_evaluation_on_coset() {
-        // checks that evaluating a polynomial on a subgroup and its coset is the same as evaluating on a 2x larger subgroup 
+        // checks that evaluating a polynomial on a subgroup and its coset is the same as evaluating on a 2x larger subgroup
         let log_test_size = 8;
         let test_size = 1 << log_test_size;
         let (_, mut d_coeffs, mut d_domain) = set_up_scalars_bls12_377(test_size, log_test_size, false);
         let (_, _, mut d_large_domain) = set_up_scalars_bls12_377(0, log_test_size + 1, false);
         let mut d_coset_powers = build_domain_bls12_377(test_size, log_test_size + 1, false);
 
-        let mut d_evals_large = evaluate_scalars_bls12_377(&mut d_coeffs, &mut d_large_domain);
-        let mut h_evals_large: Vec = (0..2 * test_size).map(|_| ScalarField_BLS12_377::zero()).collect();
-        d_evals_large.copy_to(&mut h_evals_large[..]).unwrap();
-        let mut d_evals = evaluate_scalars_bls12_377(&mut d_coeffs, &mut d_domain);
-        let mut h_evals: Vec = (0..test_size).map(|_| ScalarField_BLS12_377::zero()).collect();
-        d_evals.copy_to(&mut h_evals[..]).unwrap();
-        let mut d_evals_coset = evaluate_scalars_on_coset_bls12_377(&mut d_coeffs, &mut d_domain, &mut d_coset_powers);
-        let mut h_evals_coset: Vec = (0..test_size).map(|_| ScalarField_BLS12_377::zero()).collect();
-        d_evals_coset.copy_to(&mut h_evals_coset[..]).unwrap();
+        let d_evals_large = evaluate_scalars_bls12_377(&mut d_coeffs, &mut d_large_domain);
+        let mut h_evals_large: Vec = (0..2 * test_size)
+            .map(|_| ScalarField_BLS12_377::zero())
+            .collect();
+        d_evals_large
+            .copy_to(&mut h_evals_large[..])
+            .unwrap();
+        let d_evals = evaluate_scalars_bls12_377(&mut d_coeffs, &mut d_domain);
+        let mut h_evals: Vec = (0..test_size)
+            .map(|_| ScalarField_BLS12_377::zero())
+            .collect();
+        d_evals
+            .copy_to(&mut h_evals[..])
+            .unwrap();
+        let d_evals_coset = evaluate_scalars_on_coset_bls12_377(&mut d_coeffs, &mut d_domain, &mut d_coset_powers);
+        let mut h_evals_coset: Vec = (0..test_size)
+            .map(|_| ScalarField_BLS12_377::zero())
+            .collect();
+        d_evals_coset
+            .copy_to(&mut h_evals_coset[..])
+            .unwrap();
 
         assert_eq!(h_evals[..], h_evals_large[..test_size]);
         assert_eq!(h_evals_coset[..], h_evals_large[test_size..2 * test_size]);
@@ -1405,7 +1496,7 @@ pub(crate) mod tests_bls12_377 {
 
     #[test]
     fn test_scalar_batch_evaluation_on_coset() {
-        // checks that evaluating a polynomial on a subgroup and its coset is the same as evaluating on a 2x larger subgroup 
+        // checks that evaluating a polynomial on a subgroup and its coset is the same as evaluating on a 2x larger subgroup
         let batch_size = 4;
         let log_test_size = 6;
         let test_size = 1 << log_test_size;
@@ -1413,40 +1504,71 @@ pub(crate) mod tests_bls12_377 {
         let (_, _, mut d_large_domain) = set_up_scalars_bls12_377(0, log_test_size + 1, false);
         let mut d_coset_powers = build_domain_bls12_377(test_size, log_test_size + 1, false);
 
-        let mut d_evals_large = evaluate_scalars_batch_bls12_377(&mut d_coeffs, &mut d_large_domain, batch_size);
-        let mut h_evals_large: Vec = (0..2 * test_size * batch_size).map(|_| ScalarField_BLS12_377::zero()).collect();
-        d_evals_large.copy_to(&mut h_evals_large[..]).unwrap();
-        let mut d_evals = evaluate_scalars_batch_bls12_377(&mut d_coeffs, &mut d_domain, batch_size);
-        let mut h_evals: Vec = (0..test_size * batch_size).map(|_| ScalarField_BLS12_377::zero()).collect();
-        d_evals.copy_to(&mut h_evals[..]).unwrap();
-        let mut d_evals_coset = evaluate_scalars_on_coset_batch_bls12_377(&mut d_coeffs, &mut d_domain, batch_size, &mut d_coset_powers);
-        let mut h_evals_coset: Vec = (0..test_size * batch_size).map(|_| ScalarField_BLS12_377::zero()).collect();
-        d_evals_coset.copy_to(&mut h_evals_coset[..]).unwrap();
+        let d_evals_large = evaluate_scalars_batch_bls12_377(&mut d_coeffs, &mut d_large_domain, batch_size);
+        let mut h_evals_large: Vec = (0..2 * test_size * batch_size)
+            .map(|_| ScalarField_BLS12_377::zero())
+            .collect();
+        d_evals_large
+            .copy_to(&mut h_evals_large[..])
+            .unwrap();
+        let d_evals = evaluate_scalars_batch_bls12_377(&mut d_coeffs, &mut d_domain, batch_size);
+        let mut h_evals: Vec = (0..test_size * batch_size)
+            .map(|_| ScalarField_BLS12_377::zero())
+            .collect();
+        d_evals
+            .copy_to(&mut h_evals[..])
+            .unwrap();
+        let d_evals_coset =
+            evaluate_scalars_on_coset_batch_bls12_377(&mut d_coeffs, &mut d_domain, batch_size, &mut d_coset_powers);
+        let mut h_evals_coset: Vec = (0..test_size * batch_size)
+            .map(|_| ScalarField_BLS12_377::zero())
+            .collect();
+        d_evals_coset
+            .copy_to(&mut h_evals_coset[..])
+            .unwrap();
 
         for i in 0..batch_size {
-            assert_eq!(h_evals_large[2 * i * test_size..(2 * i + 1) * test_size], h_evals[i * test_size..(i + 1) * test_size]);
-            assert_eq!(h_evals_large[(2 * i + 1) * test_size..(2 * i + 2) * test_size], h_evals_coset[i * test_size..(i + 1) * test_size]);
+            assert_eq!(
+                h_evals_large[2 * i * test_size..(2 * i + 1) * test_size],
+                h_evals[i * test_size..(i + 1) * test_size]
+            );
+            assert_eq!(
+                h_evals_large[(2 * i + 1) * test_size..(2 * i + 2) * test_size],
+                h_evals_coset[i * test_size..(i + 1) * test_size]
+            );
         }
     }
 
     #[test]
     fn test_point_evaluation_on_coset() {
-        // checks that evaluating a polynomial on a subgroup and its coset is the same as evaluating on a 2x larger subgroup 
+        // checks that evaluating a polynomial on a subgroup and its coset is the same as evaluating on a 2x larger subgroup
         let log_test_size = 8;
         let test_size = 1 << log_test_size;
         let (_, mut d_coeffs, mut d_domain) = set_up_points_bls12_377(test_size, log_test_size, false);
         let (_, _, mut d_large_domain) = set_up_points_bls12_377(0, log_test_size + 1, false);
         let mut d_coset_powers = build_domain_bls12_377(test_size, log_test_size + 1, false);
 
-        let mut d_evals_large = evaluate_points_bls12_377(&mut d_coeffs, &mut d_large_domain);
-        let mut h_evals_large: Vec = (0..2 * test_size).map(|_| Point_BLS12_377::zero()).collect();
-        d_evals_large.copy_to(&mut h_evals_large[..]).unwrap();
-        let mut d_evals = evaluate_points_bls12_377(&mut d_coeffs, &mut d_domain);
-        let mut h_evals: Vec = (0..test_size).map(|_| Point_BLS12_377::zero()).collect();
-        d_evals.copy_to(&mut h_evals[..]).unwrap();
-        let mut d_evals_coset = evaluate_points_on_coset_bls12_377(&mut d_coeffs, &mut d_domain, &mut d_coset_powers);
-        let mut h_evals_coset: Vec = (0..test_size).map(|_| Point_BLS12_377::zero()).collect();
-        d_evals_coset.copy_to(&mut h_evals_coset[..]).unwrap();
+        let d_evals_large = evaluate_points_bls12_377(&mut d_coeffs, &mut d_large_domain);
+        let mut h_evals_large: Vec = (0..2 * test_size)
+            .map(|_| Point_BLS12_377::zero())
+            .collect();
+        d_evals_large
+            .copy_to(&mut h_evals_large[..])
+            .unwrap();
+        let d_evals = evaluate_points_bls12_377(&mut d_coeffs, &mut d_domain);
+        let mut h_evals: Vec = (0..test_size)
+            .map(|_| Point_BLS12_377::zero())
+            .collect();
+        d_evals
+            .copy_to(&mut h_evals[..])
+            .unwrap();
+        let d_evals_coset = evaluate_points_on_coset_bls12_377(&mut d_coeffs, &mut d_domain, &mut d_coset_powers);
+        let mut h_evals_coset: Vec = (0..test_size)
+            .map(|_| Point_BLS12_377::zero())
+            .collect();
+        d_evals_coset
+            .copy_to(&mut h_evals_coset[..])
+            .unwrap();
 
         assert_eq!(h_evals[..], h_evals_large[..test_size]);
         assert_eq!(h_evals_coset[..], h_evals_large[test_size..2 * test_size]);
@@ -1460,7 +1582,7 @@ pub(crate) mod tests_bls12_377 {
 
     #[test]
     fn test_point_batch_evaluation_on_coset() {
-        // checks that evaluating a polynomial on a subgroup and its coset is the same as evaluating on a 2x larger subgroup 
+        // checks that evaluating a polynomial on a subgroup and its coset is the same as evaluating on a 2x larger subgroup
         let batch_size = 2;
         let log_test_size = 6;
         let test_size = 1 << log_test_size;
@@ -1468,19 +1590,38 @@ pub(crate) mod tests_bls12_377 {
         let (_, _, mut d_large_domain) = set_up_points_bls12_377(0, log_test_size + 1, false);
         let mut d_coset_powers = build_domain_bls12_377(test_size, log_test_size + 1, false);
 
-        let mut d_evals_large = evaluate_points_batch_bls12_377(&mut d_coeffs, &mut d_large_domain, batch_size);
-        let mut h_evals_large: Vec = (0..2 * test_size * batch_size).map(|_| Point_BLS12_377::zero()).collect();
-        d_evals_large.copy_to(&mut h_evals_large[..]).unwrap();
-        let mut d_evals = evaluate_points_batch_bls12_377(&mut d_coeffs, &mut d_domain, batch_size);
-        let mut h_evals: Vec = (0..test_size * batch_size).map(|_| Point_BLS12_377::zero()).collect();
-        d_evals.copy_to(&mut h_evals[..]).unwrap();
-        let mut d_evals_coset = evaluate_points_on_coset_batch_bls12_377(&mut d_coeffs, &mut d_domain, batch_size, &mut d_coset_powers);
-        let mut h_evals_coset: Vec = (0..test_size * batch_size).map(|_| Point_BLS12_377::zero()).collect();
-        d_evals_coset.copy_to(&mut h_evals_coset[..]).unwrap();
+        let d_evals_large = evaluate_points_batch_bls12_377(&mut d_coeffs, &mut d_large_domain, batch_size);
+        let mut h_evals_large: Vec = (0..2 * test_size * batch_size)
+            .map(|_| Point_BLS12_377::zero())
+            .collect();
+        d_evals_large
+            .copy_to(&mut h_evals_large[..])
+            .unwrap();
+        let d_evals = evaluate_points_batch_bls12_377(&mut d_coeffs, &mut d_domain, batch_size);
+        let mut h_evals: Vec = (0..test_size * batch_size)
+            .map(|_| Point_BLS12_377::zero())
+            .collect();
+        d_evals
+            .copy_to(&mut h_evals[..])
+            .unwrap();
+        let d_evals_coset =
+            evaluate_points_on_coset_batch_bls12_377(&mut d_coeffs, &mut d_domain, batch_size, &mut d_coset_powers);
+        let mut h_evals_coset: Vec = (0..test_size * batch_size)
+            .map(|_| Point_BLS12_377::zero())
+            .collect();
+        d_evals_coset
+            .copy_to(&mut h_evals_coset[..])
+            .unwrap();
 
         for i in 0..batch_size {
-            assert_eq!(h_evals_large[2 * i * test_size..(2 * i + 1) * test_size], h_evals[i * test_size..(i + 1) * test_size]);
-            assert_eq!(h_evals_large[(2 * i + 1) * test_size..(2 * i + 2) * test_size], h_evals_coset[i * test_size..(i + 1) * test_size]);
+            assert_eq!(
+                h_evals_large[2 * i * test_size..(2 * i + 1) * test_size],
+                h_evals[i * test_size..(i + 1) * test_size]
+            );
+            assert_eq!(
+                h_evals_large[(2 * i + 1) * test_size..(2 * i + 2) * test_size],
+                h_evals_coset[i * test_size..(i + 1) * test_size]
+            );
         }
         for i in 0..test_size * batch_size {
             assert_ne!(h_evals[i], Point_BLS12_377::zero());
@@ -1493,8 +1634,16 @@ pub(crate) mod tests_bls12_377 {
     #[test]
     #[allow(non_snake_case)]
     fn test_vec_scalar_mul() {
-        let mut intoo = [ScalarField_BLS12_377::one(), ScalarField_BLS12_377::one(), ScalarField_BLS12_377::zero()];
-        let expected = [ScalarField_BLS12_377::one(), ScalarField_BLS12_377::zero(), ScalarField_BLS12_377::zero()];
+        let mut intoo = [
+            ScalarField_BLS12_377::one(),
+            ScalarField_BLS12_377::one(),
+            ScalarField_BLS12_377::zero(),
+        ];
+        let expected = [
+            ScalarField_BLS12_377::one(),
+            ScalarField_BLS12_377::zero(),
+            ScalarField_BLS12_377::zero(),
+        ];
         mult_sc_vec_bls12_377(&mut intoo, &expected, 0);
         assert_eq!(intoo, expected);
     }
@@ -1509,7 +1658,11 @@ pub(crate) mod tests_bls12_377 {
         };
 
         let mut inout = [dummy_one, dummy_one, Point_BLS12_377::zero()];
-        let scalars = [ScalarField_BLS12_377::one(), ScalarField_BLS12_377::zero(), ScalarField_BLS12_377::zero()];
+        let scalars = [
+            ScalarField_BLS12_377::one(),
+            ScalarField_BLS12_377::zero(),
+            ScalarField_BLS12_377::zero(),
+        ];
         let expected = [dummy_one, Point_BLS12_377::zero(), Point_BLS12_377::zero()];
         multp_vec_bls12_377(&mut inout, &scalars, 0);
         assert_eq!(inout, expected);
diff --git a/src/test_bls12_381.rs b/src/test_bls12_381.rs
index c8d79a00..960e3f5a 100644
--- a/src/test_bls12_381.rs
+++ b/src/test_bls12_381.rs
@@ -1,17 +1,12 @@
-use std::ffi::{c_int, c_uint};
-
-use rand::{rngs::StdRng, RngCore, SeedableRng};
-
-
 use crate::curves::bls12_381::*;
-
 use ark_bls12_381::{Fr as Fr_BLS12_381, G1Projective as G1Projective_BLS12_381};
 use ark_ff::PrimeField;
 use ark_std::UniformRand;
-
+use rand::{rngs::StdRng, RngCore, SeedableRng};
+use rustacuda::memory::{CopyDestination, DeviceBox, DeviceCopy};
 use rustacuda::prelude::*;
 use rustacuda_core::DevicePointer;
-use rustacuda::memory::{DeviceBox, CopyDestination, DeviceCopy};
+use std::ffi::{c_int, c_uint};
 
 extern "C" {
     fn poseidon_multi_cuda_bls12_381(
@@ -20,7 +15,7 @@ extern "C" {
         number_of_blocks: usize,
         arity: c_uint,
         device_id: usize,
-        stream: usize // TODO: provide a real stream
+        stream: usize, // TODO: provide a real stream
     ) -> c_uint;
 
     fn msm_cuda_bls12_381(
@@ -57,18 +52,18 @@ extern "C" {
         device_id: usize,
     ) -> c_uint;
 
-    fn build_domain_cuda_bls12_381(domain_size: usize, logn: usize, inverse: bool, device_id: usize) -> DevicePointer;
+    fn build_domain_cuda_bls12_381(
+        domain_size: usize,
+        logn: usize,
+        inverse: bool,
+        device_id: usize,
+    ) -> DevicePointer;
 
     fn ntt_cuda_bls12_381(inout: *mut ScalarField_BLS12_381, n: usize, inverse: bool, device_id: usize) -> c_int;
 
     fn ecntt_cuda_bls12_381(inout: *mut Point_BLS12_381, n: usize, inverse: bool, device_id: usize) -> c_int;
 
-    fn ntt_batch_cuda_bls12_381(
-        inout: *mut ScalarField_BLS12_381,
-        arr_size: usize,
-        n: usize,
-        inverse: bool,
-    ) -> c_int;
+    fn ntt_batch_cuda_bls12_381(inout: *mut ScalarField_BLS12_381, arr_size: usize, n: usize, inverse: bool) -> c_int;
 
     fn ecntt_batch_cuda_bls12_381(inout: *mut Point_BLS12_381, arr_size: usize, n: usize, inverse: bool) -> c_int;
 
@@ -78,15 +73,15 @@ extern "C" {
         n: usize,
         batch_size: usize,
         inverse: bool,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn interpolate_scalars_cuda_bls12_381(
         d_out: DevicePointer,
         d_evaluations: DevicePointer,
-        d_domain: DevicePointer, 
+        d_domain: DevicePointer,
         n: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn interpolate_scalars_batch_cuda_bls12_381(
@@ -95,7 +90,7 @@ extern "C" {
         d_domain: DevicePointer,
         n: usize,
         batch_size: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn interpolate_points_cuda_bls12_381(
@@ -103,7 +98,7 @@ extern "C" {
         d_evaluations: DevicePointer,
         d_domain: DevicePointer,
         n: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn interpolate_points_batch_cuda_bls12_381(
@@ -112,7 +107,7 @@ extern "C" {
         d_domain: DevicePointer,
         n: usize,
         batch_size: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn evaluate_scalars_cuda_bls12_381(
@@ -121,7 +116,7 @@ extern "C" {
         d_domain: DevicePointer,
         domain_size: usize,
         n: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn evaluate_scalars_batch_cuda_bls12_381(
@@ -131,7 +126,7 @@ extern "C" {
         domain_size: usize,
         n: usize,
         batch_size: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn evaluate_points_cuda_bls12_381(
@@ -140,7 +135,7 @@ extern "C" {
         d_domain: DevicePointer,
         domain_size: usize,
         n: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn evaluate_points_batch_cuda_bls12_381(
@@ -150,7 +145,7 @@ extern "C" {
         domain_size: usize,
         n: usize,
         batch_size: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn evaluate_scalars_on_coset_cuda_bls12_381(
@@ -160,7 +155,7 @@ extern "C" {
         domain_size: usize,
         n: usize,
         coset_powers: DevicePointer,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn evaluate_scalars_on_coset_batch_cuda_bls12_381(
@@ -171,7 +166,7 @@ extern "C" {
         n: usize,
         batch_size: usize,
         coset_powers: DevicePointer,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn evaluate_points_on_coset_cuda_bls12_381(
@@ -181,7 +176,7 @@ extern "C" {
         domain_size: usize,
         n: usize,
         coset_powers: DevicePointer,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn evaluate_points_on_coset_batch_cuda_bls12_381(
@@ -192,33 +187,29 @@ extern "C" {
         n: usize,
         batch_size: usize,
         coset_powers: DevicePointer,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn reverse_order_scalars_cuda_bls12_381(
         d_arr: DevicePointer,
         n: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn reverse_order_scalars_batch_cuda_bls12_381(
         d_arr: DevicePointer,
         n: usize,
         batch_size: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
-    fn reverse_order_points_cuda_bls12_381(
-        d_arr: DevicePointer,
-        n: usize,
-        device_id: usize
-    ) -> c_int;
+    fn reverse_order_points_cuda_bls12_381(d_arr: DevicePointer, n: usize, device_id: usize) -> c_int;
 
     fn reverse_order_points_batch_cuda_bls12_381(
         d_arr: DevicePointer,
         n: usize,
         batch_size: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn vec_mod_mult_point_bls12_381(
@@ -244,7 +235,11 @@ extern "C" {
     ) -> c_int;
 }
 
-pub fn poseidon_multi_bls12_381(input: &[ScalarField_BLS12_381], arity: usize, device_id: usize) -> Result, std::io::Error> {
+pub fn poseidon_multi_bls12_381(
+    input: &[ScalarField_BLS12_381],
+    arity: usize,
+    device_id: usize,
+) -> Result, std::io::Error> {
     let number_of_blocks = input.len() / arity;
     let mut out = vec![ScalarField_BLS12_381::zero(); number_of_blocks];
     unsafe {
@@ -254,19 +249,26 @@ pub fn poseidon_multi_bls12_381(input: &[ScalarField_BLS12_381], arity: usize, d
             number_of_blocks,
             arity as c_uint,
             device_id,
-            0
+            0,
         );
-        
+
         // TO-DO: go for better expression of error types
         if res != 0 {
-            return Err(std::io::Error::new(std::io::ErrorKind::InvalidInput, "Error executing poseidon_multi"));
+            return Err(std::io::Error::new(
+                std::io::ErrorKind::InvalidInput,
+                "Error executing poseidon_multi",
+            ));
         }
     }
 
     Ok(out)
 }
 
-pub fn msm_bls12_381(points: &[PointAffineNoInfinity_BLS12_381], scalars: &[ScalarField_BLS12_381], device_id: usize) -> Point_BLS12_381 {
+pub fn msm_bls12_381(
+    points: &[PointAffineNoInfinity_BLS12_381],
+    scalars: &[ScalarField_BLS12_381],
+    device_id: usize,
+) -> Point_BLS12_381 {
     let count = points.len();
     if count != scalars.len() {
         todo!("variable length")
@@ -373,7 +375,7 @@ pub fn intt_bls12_381(values: &mut [ScalarField_BLS12_381], device_id: usize) {
 /// Compute an in-place NTT on the input data.
 fn ntt_internal_batch_bls12_381(
     values: &mut [ScalarField_BLS12_381],
-    device_id: usize,
+    _device_id: usize,
     batch_size: usize,
     inverse: bool,
 ) -> i32 {
@@ -387,11 +389,11 @@ fn ntt_internal_batch_bls12_381(
     }
 }
 
-pub fn ntt_batch_bls12_381(values: &mut [ScalarField_BLS12_381], batch_size: usize, device_id: usize) {
+pub fn ntt_batch_bls12_381(values: &mut [ScalarField_BLS12_381], batch_size: usize, _device_id: usize) {
     ntt_internal_batch_bls12_381(values, 0, batch_size, false);
 }
 
-pub fn intt_batch_bls12_381(values: &mut [ScalarField_BLS12_381], batch_size: usize, device_id: usize) {
+pub fn intt_batch_bls12_381(values: &mut [ScalarField_BLS12_381], batch_size: usize, _device_id: usize) {
     ntt_internal_batch_bls12_381(values, 0, batch_size, true);
 }
 
@@ -419,7 +421,7 @@ pub fn iecntt_bls12_381(values: &mut [Point_BLS12_381], device_id: usize) {
 /// Compute an in-place ECNTT on the input data.
 fn ecntt_internal_batch_bls12_381(
     values: &mut [Point_BLS12_381],
-    device_id: usize,
+    _device_id: usize,
     batch_size: usize,
     inverse: bool,
 ) -> i32 {
@@ -433,83 +435,62 @@ fn ecntt_internal_batch_bls12_381(
     }
 }
 
-pub fn ecntt_batch_bls12_381(values: &mut [Point_BLS12_381], batch_size: usize, device_id: usize) {
+pub fn ecntt_batch_bls12_381(values: &mut [Point_BLS12_381], batch_size: usize, _device_id: usize) {
     ecntt_internal_batch_bls12_381(values, 0, batch_size, false);
 }
 
 /// Compute an in-place iECNTT on the input data.
-pub fn iecntt_batch_bls12_381(values: &mut [Point_BLS12_381], batch_size: usize, device_id: usize) {
+pub fn iecntt_batch_bls12_381(values: &mut [Point_BLS12_381], batch_size: usize, _device_id: usize) {
     ecntt_internal_batch_bls12_381(values, 0, batch_size, true);
 }
 
 pub fn build_domain_bls12_381(domain_size: usize, logn: usize, inverse: bool) -> DeviceBuffer {
+    unsafe { DeviceBuffer::from_raw_parts(build_domain_cuda_bls12_381(domain_size, logn, inverse, 0), domain_size) }
+}
+
+pub fn reverse_order_scalars_bls12_381(d_scalars: &mut DeviceBuffer) {
     unsafe {
-        DeviceBuffer::from_raw_parts(build_domain_cuda_bls12_381(
-            domain_size,
-            logn,
-            inverse,
-            0
-        ), domain_size)
+        reverse_order_scalars_cuda_bls12_381(d_scalars.as_device_ptr(), d_scalars.len(), 0);
     }
 }
 
-
-pub fn reverse_order_scalars_bls12_381(
-    d_scalars: &mut DeviceBuffer,
-) {
-    unsafe { reverse_order_scalars_cuda_bls12_381(
-        d_scalars.as_device_ptr(),
-        d_scalars.len(),
-        0
-    ); }
+pub fn reverse_order_scalars_batch_bls12_381(d_scalars: &mut DeviceBuffer, batch_size: usize) {
+    unsafe {
+        reverse_order_scalars_batch_cuda_bls12_381(
+            d_scalars.as_device_ptr(),
+            d_scalars.len() / batch_size,
+            batch_size,
+            0,
+        );
+    }
 }
 
-pub fn reverse_order_scalars_batch_bls12_381(
-    d_scalars: &mut DeviceBuffer,
-    batch_size: usize,
-) {
-    unsafe { reverse_order_scalars_batch_cuda_bls12_381(
-        d_scalars.as_device_ptr(),
-        d_scalars.len() / batch_size,
-        batch_size,
-        0
-    ); }
+pub fn reverse_order_points_bls12_381(d_points: &mut DeviceBuffer) {
+    unsafe {
+        reverse_order_points_cuda_bls12_381(d_points.as_device_ptr(), d_points.len(), 0);
+    }
 }
 
-pub fn reverse_order_points_bls12_381(
-    d_points: &mut DeviceBuffer,
-) {
-    unsafe { reverse_order_points_cuda_bls12_381(
-        d_points.as_device_ptr(),
-        d_points.len(),
-        0
-    ); }
-}
-
-pub fn reverse_order_points_batch_bls12_381(
-    d_points: &mut DeviceBuffer,
-    batch_size: usize,
-) {
-    unsafe { reverse_order_points_batch_cuda_bls12_381(
-        d_points.as_device_ptr(),
-        d_points.len() / batch_size,
-        batch_size,
-        0
-    ); }
+pub fn reverse_order_points_batch_bls12_381(d_points: &mut DeviceBuffer, batch_size: usize) {
+    unsafe {
+        reverse_order_points_batch_cuda_bls12_381(d_points.as_device_ptr(), d_points.len() / batch_size, batch_size, 0);
+    }
 }
 
 pub fn interpolate_scalars_bls12_381(
     d_evaluations: &mut DeviceBuffer,
-    d_domain: &mut DeviceBuffer
+    d_domain: &mut DeviceBuffer,
 ) -> DeviceBuffer {
     let mut res = unsafe { DeviceBuffer::uninitialized(d_domain.len()).unwrap() };
-    unsafe { interpolate_scalars_cuda_bls12_381(
-        res.as_device_ptr(),
-        d_evaluations.as_device_ptr(),
-        d_domain.as_device_ptr(),
-        d_domain.len(),
-        0
-    ) };
+    unsafe {
+        interpolate_scalars_cuda_bls12_381(
+            res.as_device_ptr(),
+            d_evaluations.as_device_ptr(),
+            d_domain.as_device_ptr(),
+            d_domain.len(),
+            0,
+        )
+    };
     return res;
 }
 
@@ -518,16 +499,17 @@ pub fn interpolate_scalars_batch_bls12_381(
     d_domain: &mut DeviceBuffer,
     batch_size: usize,
 ) -> DeviceBuffer {
-
     let mut res = unsafe { DeviceBuffer::uninitialized(d_domain.len() * batch_size).unwrap() };
-    unsafe { interpolate_scalars_batch_cuda_bls12_381(
-        res.as_device_ptr(),
-        d_evaluations.as_device_ptr(),
-        d_domain.as_device_ptr(),
-        d_domain.len(),
-        batch_size,
-        0
-    ) };
+    unsafe {
+        interpolate_scalars_batch_cuda_bls12_381(
+            res.as_device_ptr(),
+            d_evaluations.as_device_ptr(),
+            d_domain.as_device_ptr(),
+            d_domain.len(),
+            batch_size,
+            0,
+        )
+    };
     return res;
 }
 
@@ -536,13 +518,15 @@ pub fn interpolate_points_bls12_381(
     d_domain: &mut DeviceBuffer,
 ) -> DeviceBuffer {
     let mut res = unsafe { DeviceBuffer::uninitialized(d_domain.len()).unwrap() };
-    unsafe { interpolate_points_cuda_bls12_381(
-        res.as_device_ptr(),
-        d_evaluations.as_device_ptr(),
-        d_domain.as_device_ptr(),
-        d_domain.len(),
-        0
-    ) };
+    unsafe {
+        interpolate_points_cuda_bls12_381(
+            res.as_device_ptr(),
+            d_evaluations.as_device_ptr(),
+            d_domain.as_device_ptr(),
+            d_domain.len(),
+            0,
+        )
+    };
     return res;
 }
 
@@ -552,14 +536,16 @@ pub fn interpolate_points_batch_bls12_381(
     batch_size: usize,
 ) -> DeviceBuffer {
     let mut res = unsafe { DeviceBuffer::uninitialized(d_domain.len() * batch_size).unwrap() };
-    unsafe { interpolate_points_batch_cuda_bls12_381(
-        res.as_device_ptr(),
-        d_evaluations.as_device_ptr(),
-        d_domain.as_device_ptr(),
-        d_domain.len(),
-        batch_size,
-        0
-    ) };
+    unsafe {
+        interpolate_points_batch_cuda_bls12_381(
+            res.as_device_ptr(),
+            d_evaluations.as_device_ptr(),
+            d_domain.as_device_ptr(),
+            d_domain.len(),
+            batch_size,
+            0,
+        )
+    };
     return res;
 }
 
@@ -575,7 +561,7 @@ pub fn evaluate_scalars_bls12_381(
             d_domain.as_device_ptr(),
             d_domain.len(),
             d_coefficients.len(),
-            0
+            0,
         );
     }
     return res;
@@ -595,7 +581,7 @@ pub fn evaluate_scalars_batch_bls12_381(
             d_domain.len(),
             d_coefficients.len() / batch_size,
             batch_size,
-            0
+            0,
         );
     }
     return res;
@@ -613,7 +599,7 @@ pub fn evaluate_points_bls12_381(
             d_domain.as_device_ptr(),
             d_domain.len(),
             d_coefficients.len(),
-            0
+            0,
         );
     }
     return res;
@@ -633,7 +619,7 @@ pub fn evaluate_points_batch_bls12_381(
             d_domain.len(),
             d_coefficients.len() / batch_size,
             batch_size,
-            0
+            0,
         );
     }
     return res;
@@ -653,7 +639,7 @@ pub fn evaluate_scalars_on_coset_bls12_381(
             d_domain.len(),
             d_coefficients.len(),
             coset_powers.as_device_ptr(),
-            0
+            0,
         );
     }
     return res;
@@ -675,7 +661,7 @@ pub fn evaluate_scalars_on_coset_batch_bls12_381(
             d_coefficients.len() / batch_size,
             batch_size,
             coset_powers.as_device_ptr(),
-            0
+            0,
         );
     }
     return res;
@@ -695,7 +681,7 @@ pub fn evaluate_points_on_coset_bls12_381(
             d_domain.len(),
             d_coefficients.len(),
             coset_powers.as_device_ptr(),
-            0
+            0,
         );
     }
     return res;
@@ -717,7 +703,7 @@ pub fn evaluate_points_on_coset_batch_bls12_381(
             d_coefficients.len() / batch_size,
             batch_size,
             coset_powers.as_device_ptr(),
-            0
+            0,
         );
     }
     return res;
@@ -728,7 +714,7 @@ pub fn ntt_inplace_batch_bls12_381(
     d_twiddles: &mut DeviceBuffer,
     batch_size: usize,
     inverse: bool,
-    device_id: usize
+    device_id: usize,
 ) -> i32 {
     unsafe {
         ntt_inplace_batch_cuda_bls12_381(
@@ -737,12 +723,11 @@ pub fn ntt_inplace_batch_bls12_381(
             d_twiddles.len(),
             batch_size,
             inverse,
-            device_id
+            device_id,
         )
     }
 }
 
-
 pub fn multp_vec_bls12_381(a: &mut [Point_BLS12_381], b: &[ScalarField_BLS12_381], device_id: usize) {
     assert_eq!(a.len(), b.len());
     unsafe {
@@ -770,9 +755,13 @@ pub fn mult_sc_vec_bls12_381(a: &mut [ScalarField_BLS12_381], b: &[ScalarField_B
 // Multiply a matrix by a scalar:
 //  `a` - flattenned matrix;
 //  `b` - vector to multiply `a` by;
-pub fn mult_matrix_by_vec_bls12_381(a: &[ScalarField_BLS12_381], b: &[ScalarField_BLS12_381], device_id: usize) -> Vec {
+pub fn mult_matrix_by_vec_bls12_381(
+    a: &[ScalarField_BLS12_381],
+    b: &[ScalarField_BLS12_381],
+    device_id: usize,
+) -> Vec {
     let mut c = Vec::with_capacity(b.len());
-    for i in 0..b.len() {
+    for _ in 0..b.len() {
         c.push(ScalarField_BLS12_381::zero());
     }
     unsafe {
@@ -789,11 +778,12 @@ pub fn mult_matrix_by_vec_bls12_381(a: &[ScalarField_BLS12_381], b: &[ScalarFiel
 
 pub fn clone_buffer_bls12_381(buf: &mut DeviceBuffer) -> DeviceBuffer {
     let mut buf_cpy = unsafe { DeviceBuffer::uninitialized(buf.len()).unwrap() };
-    unsafe { buf_cpy.copy_from(buf) };
+    let _ = buf_cpy.copy_from(buf);
     return buf_cpy;
 }
 
-pub fn get_rng_bls12_381(seed: Option) -> Box { //TODO: not curve specific
+pub fn get_rng_bls12_381(seed: Option) -> Box {
+    //TODO: not curve specific
     let rng: Box = match seed {
         Some(seed) => Box::new(StdRng::seed_from_u64(seed)),
         None => Box::new(rand::thread_rng()),
@@ -829,44 +819,57 @@ pub fn generate_random_scalars_bls12_381(count: usize, mut rng: Box
         .collect()
 }
 
-pub fn set_up_points_bls12_381(test_size: usize, log_domain_size: usize, inverse: bool) -> (Vec, DeviceBuffer, DeviceBuffer) {
+pub fn set_up_points_bls12_381(
+    test_size: usize,
+    log_domain_size: usize,
+    inverse: bool,
+) -> (
+    Vec,
+    DeviceBuffer,
+    DeviceBuffer,
+) {
     set_up_device_bls12_381();
 
     let d_domain = build_domain_bls12_381(1 << log_domain_size, log_domain_size, inverse);
 
-    let seed = Some(0); // fix the rng to get two equal scalar 
+    let seed = Some(0); // fix the rng to get two equal scalar
     let vector = generate_random_points_proj_bls12_381(test_size, get_rng_bls12_381(seed));
-    let mut vector_mut = vector.clone();
+    let vector_mut = vector.clone();
 
-    let mut d_vector = DeviceBuffer::from_slice(&vector[..]).unwrap();
+    let d_vector = DeviceBuffer::from_slice(&vector[..]).unwrap();
     (vector_mut, d_vector, d_domain)
 }
 
-pub fn set_up_scalars_bls12_381(test_size: usize, log_domain_size: usize, inverse: bool) -> (Vec, DeviceBuffer, DeviceBuffer) {
+pub fn set_up_scalars_bls12_381(
+    test_size: usize,
+    log_domain_size: usize,
+    inverse: bool,
+) -> (
+    Vec,
+    DeviceBuffer,
+    DeviceBuffer,
+) {
     set_up_device_bls12_381();
 
     let d_domain = build_domain_bls12_381(1 << log_domain_size, log_domain_size, inverse);
 
     let seed = Some(0); // fix the rng to get two equal scalars
-    let mut vector_mut = generate_random_scalars_bls12_381(test_size, get_rng_bls12_381(seed));
+    let vector_mut = generate_random_scalars_bls12_381(test_size, get_rng_bls12_381(seed));
 
-    let mut d_vector = DeviceBuffer::from_slice(&vector_mut[..]).unwrap();
+    let d_vector = DeviceBuffer::from_slice(&vector_mut[..]).unwrap();
     (vector_mut, d_vector, d_domain)
 }
 
-
 #[cfg(test)]
 pub(crate) mod tests_bls12_381 {
-    use std::fs::{File, self};
-    use std::ops::Add;
-    use std::path::PathBuf;
+    use crate::test_bls12_381::*;
     use ark_bls12_381::{Fr, G1Affine, G1Projective};
     use ark_ec::{msm::VariableBaseMSM, AffineCurve, ProjectiveCurve};
     use ark_ff::{FftField, Field, Zero};
     use ark_std::UniformRand;
-    use rand::{rngs::StdRng, RngCore, SeedableRng};
-    use crate::test_bls12_381::*;
-    use crate::{curves::bls12_381::*, *};
+    use std::fs;
+    use std::ops::Add;
+    use std::path::PathBuf;
 
     fn random_points_ark_proj(nof_elements: usize) -> Vec {
         let mut rng = ark_std::rand::thread_rng();
@@ -878,11 +881,7 @@ pub(crate) mod tests_bls12_381 {
         points_ga
     }
 
-    fn ecntt_arc_naive(
-        points: &Vec,
-        size: usize,
-        inverse: bool,
-    ) -> Vec {
+    fn ecntt_arc_naive(points: &Vec, size: usize, inverse: bool) -> Vec {
         let mut result: Vec = Vec::new();
         for _ in 0..size {
             result.push(G1Projective::zero());
@@ -895,16 +894,24 @@ pub(crate) mod tests_bls12_381 {
         }
         for k in 0..size {
             for l in 0..size {
-                let pow: [u64; 1] = [(l * k).try_into().unwrap()];
+                let pow: [u64; 1] = [(l * k)
+                    .try_into()
+                    .unwrap()];
                 let mul_rou = Fr::pow(&rou, &pow);
-                result[k] = result[k].add(points[l].into_affine().mul(mul_rou));
+                result[k] = result[k].add(
+                    points[l]
+                        .into_affine()
+                        .mul(mul_rou),
+                );
             }
         }
         if inverse {
             let size2 = size as u64;
             for k in 0..size {
                 let multfactor = Fr::inverse(&Fr::from(size2)).unwrap();
-                result[k] = result[k].into_affine().mul(multfactor);
+                result[k] = result[k]
+                    .into_affine()
+                    .mul(multfactor);
             }
         }
         return result;
@@ -941,8 +948,14 @@ pub(crate) mod tests_bls12_381 {
 
             let msm_result = msm_bls12_381(&points, &scalars, 0);
 
-            let point_r_ark: Vec<_> = points.iter().map(|x| x.to_ark_repr()).collect();
-            let scalars_r_ark: Vec<_> = scalars.iter().map(|x| x.to_ark()).collect();
+            let point_r_ark: Vec<_> = points
+                .iter()
+                .map(|x| x.to_ark_repr())
+                .collect();
+            let scalars_r_ark: Vec<_> = scalars
+                .iter()
+                .map(|x| x.to_ark())
+                .collect();
 
             let msm_result_ark = VariableBaseMSM::multi_scalar_mul(&point_r_ark, &scalars_r_ark);
 
@@ -962,14 +975,19 @@ pub(crate) mod tests_bls12_381 {
 
         for arity in arities {
             // Generate scalars sequence [0, 1, ... arity * number_of_blocks]
-            let scalars: Vec = (0..arity * number_of_blocks).map(|i| ScalarField_BLS12_381::from_ark(Fr_BLS12_381::from(i as i32).into_repr())).collect();
+            let scalars: Vec = (0..arity * number_of_blocks)
+                .map(|i| ScalarField_BLS12_381::from_ark(Fr_BLS12_381::from(i as i32).into_repr()))
+                .collect();
             let out = poseidon_multi_bls12_381(&scalars, arity, 0).unwrap();
 
             let mut path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
             path.push(format!("test_vectors/poseidon_1024_{}", arity));
 
             let test_vector: Vec = serde_cbor::from_slice(&fs::read(path).unwrap()).unwrap();
-            assert!(out.iter().zip(test_vector.iter()).all(|(l, r)| l.eq(r)));
+            assert!(out
+                .iter()
+                .zip(test_vector.iter())
+                .all(|(l, r)| l.eq(r)));
         }
     }
 
@@ -983,8 +1001,14 @@ pub(crate) mod tests_bls12_381 {
                 let points_batch = generate_random_points_bls12_381(msm_size * batch_size, get_rng_bls12_381(seed));
                 let scalars_batch = generate_random_scalars_bls12_381(msm_size * batch_size, get_rng_bls12_381(seed));
 
-                let point_r_ark: Vec<_> = points_batch.iter().map(|x| x.to_ark_repr()).collect();
-                let scalars_r_ark: Vec<_> = scalars_batch.iter().map(|x| x.to_ark()).collect();
+                let point_r_ark: Vec<_> = points_batch
+                    .iter()
+                    .map(|x| x.to_ark_repr())
+                    .collect();
+                let scalars_r_ark: Vec<_> = scalars_batch
+                    .iter()
+                    .map(|x| x.to_ark())
+                    .collect();
 
                 let expected: Vec<_> = point_r_ark
                     .chunks(msm_size)
@@ -1003,14 +1027,16 @@ pub(crate) mod tests_bls12_381 {
     fn test_commit() {
         let test_size = 1 << 8;
         let seed = Some(0);
-        let (mut scalars, mut d_scalars, _) = set_up_scalars_bls12_381(test_size, 0, false);
-        let mut points = generate_random_points_bls12_381(test_size, get_rng_bls12_381(seed));
+        let (scalars, mut d_scalars, _) = set_up_scalars_bls12_381(test_size, 0, false);
+        let points = generate_random_points_bls12_381(test_size, get_rng_bls12_381(seed));
         let mut d_points = DeviceBuffer::from_slice(&points[..]).unwrap();
 
         let msm_result = msm_bls12_381(&points, &scalars, 0);
-        let mut d_commit_result = commit_bls12_381(&mut d_points, &mut d_scalars);
+        let d_commit_result = commit_bls12_381(&mut d_points, &mut d_scalars);
         let mut h_commit_result = Point_BLS12_381::zero();
-        d_commit_result.copy_to(&mut h_commit_result).unwrap();
+        d_commit_result
+            .copy_to(&mut h_commit_result)
+            .unwrap();
 
         assert_eq!(msm_result, h_commit_result);
         assert_ne!(msm_result, Point_BLS12_381::zero());
@@ -1027,9 +1053,13 @@ pub(crate) mod tests_bls12_381 {
         let mut d_points = DeviceBuffer::from_slice(&points[..]).unwrap();
 
         let msm_result = msm_batch_bls12_381(&points, &scalars, batch_size, 0);
-        let mut d_commit_result = commit_batch_bls12_381(&mut d_points, &mut d_scalars, batch_size);
-        let mut h_commit_result: Vec = (0..batch_size).map(|_| Point_BLS12_381::zero()).collect();
-        d_commit_result.copy_to(&mut h_commit_result[..]).unwrap();
+        let d_commit_result = commit_batch_bls12_381(&mut d_points, &mut d_scalars, batch_size);
+        let mut h_commit_result: Vec = (0..batch_size)
+            .map(|_| Point_BLS12_381::zero())
+            .collect();
+        d_commit_result
+            .copy_to(&mut h_commit_result[..])
+            .unwrap();
 
         assert_eq!(msm_result, h_commit_result);
         for h in h_commit_result {
@@ -1061,7 +1091,10 @@ pub(crate) mod tests_bls12_381 {
 
         test_naive_ark_ecntt(test_size);
 
-        assert!(points_proj[0].to_ark().into_affine().is_on_curve());
+        assert!(points_proj[0]
+            .to_ark()
+            .into_affine()
+            .is_on_curve());
 
         //naive ark
         let points_proj_ark = points_proj
@@ -1134,10 +1167,7 @@ pub(crate) mod tests_bls12_381 {
 
         // check that the ntt of each vec of scalars is equal to the intt of the specific batch
         for i in 0..batches {
-            assert_eq!(
-                ntt_result_vec_of_vec[i],
-                ntt_result[i * test_size..(i + 1) * test_size]
-            );
+            assert_eq!(ntt_result_vec_of_vec[i], ntt_result[i * test_size..(i + 1) * test_size]);
         }
 
         // check that ntt output is different from input
@@ -1226,10 +1256,14 @@ pub(crate) mod tests_bls12_381 {
         let test_size = 1 << log_test_size;
         let (mut evals_mut, mut d_evals, mut d_domain) = set_up_scalars_bls12_381(test_size, log_test_size, true);
 
-        let mut d_coeffs = interpolate_scalars_bls12_381(&mut d_evals, &mut d_domain);
+        let d_coeffs = interpolate_scalars_bls12_381(&mut d_evals, &mut d_domain);
         intt_bls12_381(&mut evals_mut, 0);
-        let mut h_coeffs: Vec = (0..test_size).map(|_| ScalarField_BLS12_381::zero()).collect();
-        d_coeffs.copy_to(&mut h_coeffs[..]).unwrap();
+        let mut h_coeffs: Vec = (0..test_size)
+            .map(|_| ScalarField_BLS12_381::zero())
+            .collect();
+        d_coeffs
+            .copy_to(&mut h_coeffs[..])
+            .unwrap();
 
         assert_eq!(h_coeffs, evals_mut);
     }
@@ -1239,12 +1273,17 @@ pub(crate) mod tests_bls12_381 {
         let batch_size = 4;
         let log_test_size = 10;
         let test_size = 1 << log_test_size;
-        let (mut evals_mut, mut d_evals, mut d_domain) = set_up_scalars_bls12_381(test_size * batch_size, log_test_size, true);
+        let (mut evals_mut, mut d_evals, mut d_domain) =
+            set_up_scalars_bls12_381(test_size * batch_size, log_test_size, true);
 
-        let mut d_coeffs = interpolate_scalars_batch_bls12_381(&mut d_evals, &mut d_domain, batch_size);
+        let d_coeffs = interpolate_scalars_batch_bls12_381(&mut d_evals, &mut d_domain, batch_size);
         intt_batch_bls12_381(&mut evals_mut, test_size, 0);
-        let mut h_coeffs: Vec = (0..test_size * batch_size).map(|_| ScalarField_BLS12_381::zero()).collect();
-        d_coeffs.copy_to(&mut h_coeffs[..]).unwrap();
+        let mut h_coeffs: Vec = (0..test_size * batch_size)
+            .map(|_| ScalarField_BLS12_381::zero())
+            .collect();
+        d_coeffs
+            .copy_to(&mut h_coeffs[..])
+            .unwrap();
 
         assert_eq!(h_coeffs, evals_mut);
     }
@@ -1255,11 +1294,15 @@ pub(crate) mod tests_bls12_381 {
         let test_size = 1 << log_test_size;
         let (mut evals_mut, mut d_evals, mut d_domain) = set_up_points_bls12_381(test_size, log_test_size, true);
 
-        let mut d_coeffs = interpolate_points_bls12_381(&mut d_evals, &mut d_domain);
+        let d_coeffs = interpolate_points_bls12_381(&mut d_evals, &mut d_domain);
         iecntt_bls12_381(&mut evals_mut[..], 0);
-        let mut h_coeffs: Vec = (0..test_size).map(|_| Point_BLS12_381::zero()).collect();
-        d_coeffs.copy_to(&mut h_coeffs[..]).unwrap();
-        
+        let mut h_coeffs: Vec = (0..test_size)
+            .map(|_| Point_BLS12_381::zero())
+            .collect();
+        d_coeffs
+            .copy_to(&mut h_coeffs[..])
+            .unwrap();
+
         assert_eq!(h_coeffs, *evals_mut);
         for h in h_coeffs.iter() {
             assert_ne!(*h, Point_BLS12_381::zero());
@@ -1271,13 +1314,18 @@ pub(crate) mod tests_bls12_381 {
         let batch_size = 4;
         let log_test_size = 10;
         let test_size = 1 << log_test_size;
-        let (mut evals_mut, mut d_evals, mut d_domain) = set_up_points_bls12_381(test_size * batch_size, log_test_size, true);
+        let (mut evals_mut, mut d_evals, mut d_domain) =
+            set_up_points_bls12_381(test_size * batch_size, log_test_size, true);
 
-        let mut d_coeffs = interpolate_points_batch_bls12_381(&mut d_evals, &mut d_domain, batch_size);
+        let d_coeffs = interpolate_points_batch_bls12_381(&mut d_evals, &mut d_domain, batch_size);
         iecntt_batch_bls12_381(&mut evals_mut[..], test_size, 0);
-        let mut h_coeffs: Vec = (0..test_size * batch_size).map(|_| Point_BLS12_381::zero()).collect();
-        d_coeffs.copy_to(&mut h_coeffs[..]).unwrap();
-        
+        let mut h_coeffs: Vec = (0..test_size * batch_size)
+            .map(|_| Point_BLS12_381::zero())
+            .collect();
+        d_coeffs
+            .copy_to(&mut h_coeffs[..])
+            .unwrap();
+
         assert_eq!(h_coeffs, *evals_mut);
         for h in h_coeffs.iter() {
             assert_ne!(*h, Point_BLS12_381::zero());
@@ -1292,39 +1340,52 @@ pub(crate) mod tests_bls12_381 {
         let (_, _, mut d_domain_inv) = set_up_scalars_bls12_381(0, log_test_domain_size, true);
 
         let mut d_evals = evaluate_scalars_bls12_381(&mut d_coeffs, &mut d_domain);
-        let mut d_coeffs_domain = interpolate_scalars_bls12_381(&mut d_evals, &mut d_domain_inv);
-        let mut h_coeffs_domain: Vec = (0..1 << log_test_domain_size).map(|_| ScalarField_BLS12_381::zero()).collect();
-        d_coeffs_domain.copy_to(&mut h_coeffs_domain[..]).unwrap();
+        let d_coeffs_domain = interpolate_scalars_bls12_381(&mut d_evals, &mut d_domain_inv);
+        let mut h_coeffs_domain: Vec = (0..1 << log_test_domain_size)
+            .map(|_| ScalarField_BLS12_381::zero())
+            .collect();
+        d_coeffs_domain
+            .copy_to(&mut h_coeffs_domain[..])
+            .unwrap();
 
         assert_eq!(h_coeffs, h_coeffs_domain[..coeff_size]);
-        for i in coeff_size.. (1 << log_test_domain_size) {
+        for i in coeff_size..(1 << log_test_domain_size) {
             assert_eq!(ScalarField_BLS12_381::zero(), h_coeffs_domain[i]);
         }
     }
 
     #[test]
     fn test_scalar_batch_evaluation() {
-
         for batch_size in [1, 6] {
             for log_test_domain_size in [8, 12, 20] {
                 for coeff_size in [1 << 6, 1 << (log_test_domain_size - 1), 1 << log_test_domain_size] {
-
                     let domain_size = 1 << log_test_domain_size;
 
                     let test_size = batch_size * coeff_size;
 
-                    if test_size > (1 << 20) || test_size < (6 * 1 << 8) { continue; }
+                    if test_size > (1 << 20) || test_size < (6 * 1 << 8) {
+                        continue;
+                    }
 
-                    let (h_coeffs, mut d_coeffs, mut d_domain) = set_up_scalars_bls12_381(coeff_size * batch_size, log_test_domain_size, false);
+                    let (h_coeffs, mut d_coeffs, mut d_domain) =
+                        set_up_scalars_bls12_381(coeff_size * batch_size, log_test_domain_size, false);
                     let (_, _, mut d_domain_inv) = set_up_scalars_bls12_381(0, log_test_domain_size, true);
 
                     let mut d_evals = evaluate_scalars_batch_bls12_381(&mut d_coeffs, &mut d_domain, batch_size);
-                    let mut d_coeffs_domain = interpolate_scalars_batch_bls12_381(&mut d_evals, &mut d_domain_inv, batch_size);
-                    let mut h_coeffs_domain: Vec = (0..domain_size * batch_size).map(|_| ScalarField_BLS12_381::zero()).collect();
-                    d_coeffs_domain.copy_to(&mut h_coeffs_domain[..]).unwrap();
+                    let d_coeffs_domain =
+                        interpolate_scalars_batch_bls12_381(&mut d_evals, &mut d_domain_inv, batch_size);
+                    let mut h_coeffs_domain: Vec = (0..domain_size * batch_size)
+                        .map(|_| ScalarField_BLS12_381::zero())
+                        .collect();
+                    d_coeffs_domain
+                        .copy_to(&mut h_coeffs_domain[..])
+                        .unwrap();
 
                     for j in 0..batch_size {
-                        assert_eq!(h_coeffs[j * coeff_size..(j + 1) * coeff_size], h_coeffs_domain[j * domain_size..j * domain_size + coeff_size]);
+                        assert_eq!(
+                            h_coeffs[j * coeff_size..(j + 1) * coeff_size],
+                            h_coeffs_domain[j * domain_size..j * domain_size + coeff_size]
+                        );
                         for i in coeff_size..domain_size {
                             assert_eq!(ScalarField_BLS12_381::zero(), h_coeffs_domain[j * domain_size + i]);
                         }
@@ -1336,35 +1397,44 @@ pub(crate) mod tests_bls12_381 {
 
     #[test]
     fn test_scalar_batch_inplace_ntt() {
-
         for batch_size in [1, 7, 128] {
             for log_test_domain_size in [8, 12, 20] {
                 let n_twiddles = 1 << log_test_domain_size;
 
                 let test_size = batch_size * n_twiddles;
 
-                if test_size > (1 << 20) { continue; }
+                if test_size > (1 << 20) {
+                    continue;
+                }
 
-                let (h_input, mut d_inout, mut d_twiddles) = set_up_scalars_bls12_381(test_size, log_test_domain_size, false);
+                let (h_input, mut d_inout, mut d_twiddles) =
+                    set_up_scalars_bls12_381(test_size, log_test_domain_size, false);
                 let (_, _, mut d_twiddle_inv) = set_up_scalars_bls12_381(0, log_test_domain_size, true);
 
                 ntt_inplace_batch_bls12_381(&mut d_inout, &mut d_twiddles, batch_size, false, 0);
-                
+
                 let mut h_ntt_result: Vec = vec![ScalarField_BLS12_381::zero(); test_size];
-                d_inout.copy_to(&mut h_ntt_result[..]).unwrap();
+                d_inout
+                    .copy_to(&mut h_ntt_result[..])
+                    .unwrap();
 
                 assert_ne!(h_ntt_result, h_input);
 
                 ntt_inplace_batch_bls12_381(&mut d_inout, &mut d_twiddle_inv, batch_size, true, 0);
                 let mut h_ntt_intt_result: Vec = vec![ScalarField_BLS12_381::zero(); test_size];
-                d_inout.copy_to(&mut h_ntt_intt_result[..]).unwrap();
+                d_inout
+                    .copy_to(&mut h_ntt_intt_result[..])
+                    .unwrap();
 
                 for j in 0..batch_size {
-                    assert_eq!(h_input[j * n_twiddles..(j + 1) * n_twiddles], h_ntt_intt_result[j * n_twiddles..j * n_twiddles + n_twiddles]);
+                    assert_eq!(
+                        h_input[j * n_twiddles..(j + 1) * n_twiddles],
+                        h_ntt_intt_result[j * n_twiddles..j * n_twiddles + n_twiddles]
+                    );
                 }
             }
         }
-    }   
+    }
 
     #[test]
     fn test_point_evaluation() {
@@ -1374,9 +1444,13 @@ pub(crate) mod tests_bls12_381 {
         let (_, _, mut d_domain_inv) = set_up_points_bls12_381(0, log_test_domain_size, true);
 
         let mut d_evals = evaluate_points_bls12_381(&mut d_coeffs, &mut d_domain);
-        let mut d_coeffs_domain = interpolate_points_bls12_381(&mut d_evals, &mut d_domain_inv);
-        let mut h_coeffs_domain: Vec = (0..1 << log_test_domain_size).map(|_| Point_BLS12_381::zero()).collect();
-        d_coeffs_domain.copy_to(&mut h_coeffs_domain[..]).unwrap();
+        let d_coeffs_domain = interpolate_points_bls12_381(&mut d_evals, &mut d_domain_inv);
+        let mut h_coeffs_domain: Vec = (0..1 << log_test_domain_size)
+            .map(|_| Point_BLS12_381::zero())
+            .collect();
+        d_coeffs_domain
+            .copy_to(&mut h_coeffs_domain[..])
+            .unwrap();
 
         assert_eq!(h_coeffs[..], h_coeffs_domain[..coeff_size]);
         for i in coeff_size..(1 << log_test_domain_size) {
@@ -1393,16 +1467,24 @@ pub(crate) mod tests_bls12_381 {
         let log_test_domain_size = 6;
         let domain_size = 1 << log_test_domain_size;
         let coeff_size = 1 << 5;
-        let (h_coeffs, mut d_coeffs, mut d_domain) = set_up_points_bls12_381(coeff_size * batch_size, log_test_domain_size, false);
+        let (h_coeffs, mut d_coeffs, mut d_domain) =
+            set_up_points_bls12_381(coeff_size * batch_size, log_test_domain_size, false);
         let (_, _, mut d_domain_inv) = set_up_points_bls12_381(0, log_test_domain_size, true);
 
         let mut d_evals = evaluate_points_batch_bls12_381(&mut d_coeffs, &mut d_domain, batch_size);
-        let mut d_coeffs_domain = interpolate_points_batch_bls12_381(&mut d_evals, &mut d_domain_inv, batch_size);
-        let mut h_coeffs_domain: Vec = (0..domain_size * batch_size).map(|_| Point_BLS12_381::zero()).collect();
-        d_coeffs_domain.copy_to(&mut h_coeffs_domain[..]).unwrap();
+        let d_coeffs_domain = interpolate_points_batch_bls12_381(&mut d_evals, &mut d_domain_inv, batch_size);
+        let mut h_coeffs_domain: Vec = (0..domain_size * batch_size)
+            .map(|_| Point_BLS12_381::zero())
+            .collect();
+        d_coeffs_domain
+            .copy_to(&mut h_coeffs_domain[..])
+            .unwrap();
 
         for j in 0..batch_size {
-            assert_eq!(h_coeffs[j * coeff_size..(j + 1) * coeff_size], h_coeffs_domain[j * domain_size..(j * domain_size + coeff_size)]);
+            assert_eq!(
+                h_coeffs[j * coeff_size..(j + 1) * coeff_size],
+                h_coeffs_domain[j * domain_size..(j * domain_size + coeff_size)]
+            );
             for i in coeff_size..domain_size {
                 assert_eq!(Point_BLS12_381::zero(), h_coeffs_domain[j * domain_size + i]);
             }
@@ -1418,37 +1500,58 @@ pub(crate) mod tests_bls12_381 {
         let log_test_domain_size = 8;
         let coeff_size = 1 << 6;
         let (_, mut d_coeffs, mut d_domain) = set_up_scalars_bls12_381(coeff_size, log_test_domain_size, false);
-        let (_, _, mut d_domain_inv) = set_up_scalars_bls12_381(coeff_size, log_test_domain_size, true);
+        let (_, _, _d_domain_inv) = set_up_scalars_bls12_381(coeff_size, log_test_domain_size, true);
         let mut d_trivial_coset_powers = build_domain_bls12_381(1 << log_test_domain_size, 0, false);
 
-        let mut d_evals = evaluate_scalars_bls12_381(&mut d_coeffs, &mut d_domain);
-        let mut h_coeffs: Vec = (0..1 << log_test_domain_size).map(|_| ScalarField_BLS12_381::zero()).collect();
-        d_evals.copy_to(&mut h_coeffs[..]).unwrap();
-        let mut d_evals_coset = evaluate_scalars_on_coset_bls12_381(&mut d_coeffs, &mut d_domain, &mut d_trivial_coset_powers);
-        let mut h_evals_coset: Vec = (0..1 << log_test_domain_size).map(|_| ScalarField_BLS12_381::zero()).collect();
-        d_evals_coset.copy_to(&mut h_evals_coset[..]).unwrap();
+        let d_evals = evaluate_scalars_bls12_381(&mut d_coeffs, &mut d_domain);
+        let mut h_coeffs: Vec = (0..1 << log_test_domain_size)
+            .map(|_| ScalarField_BLS12_381::zero())
+            .collect();
+        d_evals
+            .copy_to(&mut h_coeffs[..])
+            .unwrap();
+        let d_evals_coset =
+            evaluate_scalars_on_coset_bls12_381(&mut d_coeffs, &mut d_domain, &mut d_trivial_coset_powers);
+        let mut h_evals_coset: Vec = (0..1 << log_test_domain_size)
+            .map(|_| ScalarField_BLS12_381::zero())
+            .collect();
+        d_evals_coset
+            .copy_to(&mut h_evals_coset[..])
+            .unwrap();
 
         assert_eq!(h_coeffs, h_evals_coset);
     }
 
     #[test]
     fn test_scalar_evaluation_on_coset() {
-        // checks that evaluating a polynomial on a subgroup and its coset is the same as evaluating on a 2x larger subgroup 
+        // checks that evaluating a polynomial on a subgroup and its coset is the same as evaluating on a 2x larger subgroup
         let log_test_size = 8;
         let test_size = 1 << log_test_size;
         let (_, mut d_coeffs, mut d_domain) = set_up_scalars_bls12_381(test_size, log_test_size, false);
         let (_, _, mut d_large_domain) = set_up_scalars_bls12_381(0, log_test_size + 1, false);
         let mut d_coset_powers = build_domain_bls12_381(test_size, log_test_size + 1, false);
 
-        let mut d_evals_large = evaluate_scalars_bls12_381(&mut d_coeffs, &mut d_large_domain);
-        let mut h_evals_large: Vec = (0..2 * test_size).map(|_| ScalarField_BLS12_381::zero()).collect();
-        d_evals_large.copy_to(&mut h_evals_large[..]).unwrap();
-        let mut d_evals = evaluate_scalars_bls12_381(&mut d_coeffs, &mut d_domain);
-        let mut h_evals: Vec = (0..test_size).map(|_| ScalarField_BLS12_381::zero()).collect();
-        d_evals.copy_to(&mut h_evals[..]).unwrap();
-        let mut d_evals_coset = evaluate_scalars_on_coset_bls12_381(&mut d_coeffs, &mut d_domain, &mut d_coset_powers);
-        let mut h_evals_coset: Vec = (0..test_size).map(|_| ScalarField_BLS12_381::zero()).collect();
-        d_evals_coset.copy_to(&mut h_evals_coset[..]).unwrap();
+        let d_evals_large = evaluate_scalars_bls12_381(&mut d_coeffs, &mut d_large_domain);
+        let mut h_evals_large: Vec = (0..2 * test_size)
+            .map(|_| ScalarField_BLS12_381::zero())
+            .collect();
+        d_evals_large
+            .copy_to(&mut h_evals_large[..])
+            .unwrap();
+        let d_evals = evaluate_scalars_bls12_381(&mut d_coeffs, &mut d_domain);
+        let mut h_evals: Vec = (0..test_size)
+            .map(|_| ScalarField_BLS12_381::zero())
+            .collect();
+        d_evals
+            .copy_to(&mut h_evals[..])
+            .unwrap();
+        let d_evals_coset = evaluate_scalars_on_coset_bls12_381(&mut d_coeffs, &mut d_domain, &mut d_coset_powers);
+        let mut h_evals_coset: Vec = (0..test_size)
+            .map(|_| ScalarField_BLS12_381::zero())
+            .collect();
+        d_evals_coset
+            .copy_to(&mut h_evals_coset[..])
+            .unwrap();
 
         assert_eq!(h_evals[..], h_evals_large[..test_size]);
         assert_eq!(h_evals_coset[..], h_evals_large[test_size..2 * test_size]);
@@ -1456,7 +1559,7 @@ pub(crate) mod tests_bls12_381 {
 
     #[test]
     fn test_scalar_batch_evaluation_on_coset() {
-        // checks that evaluating a polynomial on a subgroup and its coset is the same as evaluating on a 2x larger subgroup 
+        // checks that evaluating a polynomial on a subgroup and its coset is the same as evaluating on a 2x larger subgroup
         let batch_size = 4;
         let log_test_size = 6;
         let test_size = 1 << log_test_size;
@@ -1464,40 +1567,71 @@ pub(crate) mod tests_bls12_381 {
         let (_, _, mut d_large_domain) = set_up_scalars_bls12_381(0, log_test_size + 1, false);
         let mut d_coset_powers = build_domain_bls12_381(test_size, log_test_size + 1, false);
 
-        let mut d_evals_large = evaluate_scalars_batch_bls12_381(&mut d_coeffs, &mut d_large_domain, batch_size);
-        let mut h_evals_large: Vec = (0..2 * test_size * batch_size).map(|_| ScalarField_BLS12_381::zero()).collect();
-        d_evals_large.copy_to(&mut h_evals_large[..]).unwrap();
-        let mut d_evals = evaluate_scalars_batch_bls12_381(&mut d_coeffs, &mut d_domain, batch_size);
-        let mut h_evals: Vec = (0..test_size * batch_size).map(|_| ScalarField_BLS12_381::zero()).collect();
-        d_evals.copy_to(&mut h_evals[..]).unwrap();
-        let mut d_evals_coset = evaluate_scalars_on_coset_batch_bls12_381(&mut d_coeffs, &mut d_domain, batch_size, &mut d_coset_powers);
-        let mut h_evals_coset: Vec = (0..test_size * batch_size).map(|_| ScalarField_BLS12_381::zero()).collect();
-        d_evals_coset.copy_to(&mut h_evals_coset[..]).unwrap();
+        let d_evals_large = evaluate_scalars_batch_bls12_381(&mut d_coeffs, &mut d_large_domain, batch_size);
+        let mut h_evals_large: Vec = (0..2 * test_size * batch_size)
+            .map(|_| ScalarField_BLS12_381::zero())
+            .collect();
+        d_evals_large
+            .copy_to(&mut h_evals_large[..])
+            .unwrap();
+        let d_evals = evaluate_scalars_batch_bls12_381(&mut d_coeffs, &mut d_domain, batch_size);
+        let mut h_evals: Vec = (0..test_size * batch_size)
+            .map(|_| ScalarField_BLS12_381::zero())
+            .collect();
+        d_evals
+            .copy_to(&mut h_evals[..])
+            .unwrap();
+        let d_evals_coset =
+            evaluate_scalars_on_coset_batch_bls12_381(&mut d_coeffs, &mut d_domain, batch_size, &mut d_coset_powers);
+        let mut h_evals_coset: Vec = (0..test_size * batch_size)
+            .map(|_| ScalarField_BLS12_381::zero())
+            .collect();
+        d_evals_coset
+            .copy_to(&mut h_evals_coset[..])
+            .unwrap();
 
         for i in 0..batch_size {
-            assert_eq!(h_evals_large[2 * i * test_size..(2 * i + 1) * test_size], h_evals[i * test_size..(i + 1) * test_size]);
-            assert_eq!(h_evals_large[(2 * i + 1) * test_size..(2 * i + 2) * test_size], h_evals_coset[i * test_size..(i + 1) * test_size]);
+            assert_eq!(
+                h_evals_large[2 * i * test_size..(2 * i + 1) * test_size],
+                h_evals[i * test_size..(i + 1) * test_size]
+            );
+            assert_eq!(
+                h_evals_large[(2 * i + 1) * test_size..(2 * i + 2) * test_size],
+                h_evals_coset[i * test_size..(i + 1) * test_size]
+            );
         }
     }
 
     #[test]
     fn test_point_evaluation_on_coset() {
-        // checks that evaluating a polynomial on a subgroup and its coset is the same as evaluating on a 2x larger subgroup 
+        // checks that evaluating a polynomial on a subgroup and its coset is the same as evaluating on a 2x larger subgroup
         let log_test_size = 8;
         let test_size = 1 << log_test_size;
         let (_, mut d_coeffs, mut d_domain) = set_up_points_bls12_381(test_size, log_test_size, false);
         let (_, _, mut d_large_domain) = set_up_points_bls12_381(0, log_test_size + 1, false);
         let mut d_coset_powers = build_domain_bls12_381(test_size, log_test_size + 1, false);
 
-        let mut d_evals_large = evaluate_points_bls12_381(&mut d_coeffs, &mut d_large_domain);
-        let mut h_evals_large: Vec = (0..2 * test_size).map(|_| Point_BLS12_381::zero()).collect();
-        d_evals_large.copy_to(&mut h_evals_large[..]).unwrap();
-        let mut d_evals = evaluate_points_bls12_381(&mut d_coeffs, &mut d_domain);
-        let mut h_evals: Vec = (0..test_size).map(|_| Point_BLS12_381::zero()).collect();
-        d_evals.copy_to(&mut h_evals[..]).unwrap();
-        let mut d_evals_coset = evaluate_points_on_coset_bls12_381(&mut d_coeffs, &mut d_domain, &mut d_coset_powers);
-        let mut h_evals_coset: Vec = (0..test_size).map(|_| Point_BLS12_381::zero()).collect();
-        d_evals_coset.copy_to(&mut h_evals_coset[..]).unwrap();
+        let d_evals_large = evaluate_points_bls12_381(&mut d_coeffs, &mut d_large_domain);
+        let mut h_evals_large: Vec = (0..2 * test_size)
+            .map(|_| Point_BLS12_381::zero())
+            .collect();
+        d_evals_large
+            .copy_to(&mut h_evals_large[..])
+            .unwrap();
+        let d_evals = evaluate_points_bls12_381(&mut d_coeffs, &mut d_domain);
+        let mut h_evals: Vec = (0..test_size)
+            .map(|_| Point_BLS12_381::zero())
+            .collect();
+        d_evals
+            .copy_to(&mut h_evals[..])
+            .unwrap();
+        let d_evals_coset = evaluate_points_on_coset_bls12_381(&mut d_coeffs, &mut d_domain, &mut d_coset_powers);
+        let mut h_evals_coset: Vec = (0..test_size)
+            .map(|_| Point_BLS12_381::zero())
+            .collect();
+        d_evals_coset
+            .copy_to(&mut h_evals_coset[..])
+            .unwrap();
 
         assert_eq!(h_evals[..], h_evals_large[..test_size]);
         assert_eq!(h_evals_coset[..], h_evals_large[test_size..2 * test_size]);
@@ -1511,7 +1645,7 @@ pub(crate) mod tests_bls12_381 {
 
     #[test]
     fn test_point_batch_evaluation_on_coset() {
-        // checks that evaluating a polynomial on a subgroup and its coset is the same as evaluating on a 2x larger subgroup 
+        // checks that evaluating a polynomial on a subgroup and its coset is the same as evaluating on a 2x larger subgroup
         let batch_size = 2;
         let log_test_size = 6;
         let test_size = 1 << log_test_size;
@@ -1519,19 +1653,38 @@ pub(crate) mod tests_bls12_381 {
         let (_, _, mut d_large_domain) = set_up_points_bls12_381(0, log_test_size + 1, false);
         let mut d_coset_powers = build_domain_bls12_381(test_size, log_test_size + 1, false);
 
-        let mut d_evals_large = evaluate_points_batch_bls12_381(&mut d_coeffs, &mut d_large_domain, batch_size);
-        let mut h_evals_large: Vec = (0..2 * test_size * batch_size).map(|_| Point_BLS12_381::zero()).collect();
-        d_evals_large.copy_to(&mut h_evals_large[..]).unwrap();
-        let mut d_evals = evaluate_points_batch_bls12_381(&mut d_coeffs, &mut d_domain, batch_size);
-        let mut h_evals: Vec = (0..test_size * batch_size).map(|_| Point_BLS12_381::zero()).collect();
-        d_evals.copy_to(&mut h_evals[..]).unwrap();
-        let mut d_evals_coset = evaluate_points_on_coset_batch_bls12_381(&mut d_coeffs, &mut d_domain, batch_size, &mut d_coset_powers);
-        let mut h_evals_coset: Vec = (0..test_size * batch_size).map(|_| Point_BLS12_381::zero()).collect();
-        d_evals_coset.copy_to(&mut h_evals_coset[..]).unwrap();
+        let d_evals_large = evaluate_points_batch_bls12_381(&mut d_coeffs, &mut d_large_domain, batch_size);
+        let mut h_evals_large: Vec = (0..2 * test_size * batch_size)
+            .map(|_| Point_BLS12_381::zero())
+            .collect();
+        d_evals_large
+            .copy_to(&mut h_evals_large[..])
+            .unwrap();
+        let d_evals = evaluate_points_batch_bls12_381(&mut d_coeffs, &mut d_domain, batch_size);
+        let mut h_evals: Vec = (0..test_size * batch_size)
+            .map(|_| Point_BLS12_381::zero())
+            .collect();
+        d_evals
+            .copy_to(&mut h_evals[..])
+            .unwrap();
+        let d_evals_coset =
+            evaluate_points_on_coset_batch_bls12_381(&mut d_coeffs, &mut d_domain, batch_size, &mut d_coset_powers);
+        let mut h_evals_coset: Vec = (0..test_size * batch_size)
+            .map(|_| Point_BLS12_381::zero())
+            .collect();
+        d_evals_coset
+            .copy_to(&mut h_evals_coset[..])
+            .unwrap();
 
         for i in 0..batch_size {
-            assert_eq!(h_evals_large[2 * i * test_size..(2 * i + 1) * test_size], h_evals[i * test_size..(i + 1) * test_size]);
-            assert_eq!(h_evals_large[(2 * i + 1) * test_size..(2 * i + 2) * test_size], h_evals_coset[i * test_size..(i + 1) * test_size]);
+            assert_eq!(
+                h_evals_large[2 * i * test_size..(2 * i + 1) * test_size],
+                h_evals[i * test_size..(i + 1) * test_size]
+            );
+            assert_eq!(
+                h_evals_large[(2 * i + 1) * test_size..(2 * i + 2) * test_size],
+                h_evals_coset[i * test_size..(i + 1) * test_size]
+            );
         }
         for i in 0..test_size * batch_size {
             assert_ne!(h_evals[i], Point_BLS12_381::zero());
@@ -1544,8 +1697,16 @@ pub(crate) mod tests_bls12_381 {
     #[test]
     #[allow(non_snake_case)]
     fn test_vec_scalar_mul() {
-        let mut intoo = [ScalarField_BLS12_381::one(), ScalarField_BLS12_381::one(), ScalarField_BLS12_381::zero()];
-        let expected = [ScalarField_BLS12_381::one(), ScalarField_BLS12_381::zero(), ScalarField_BLS12_381::zero()];
+        let mut intoo = [
+            ScalarField_BLS12_381::one(),
+            ScalarField_BLS12_381::one(),
+            ScalarField_BLS12_381::zero(),
+        ];
+        let expected = [
+            ScalarField_BLS12_381::one(),
+            ScalarField_BLS12_381::zero(),
+            ScalarField_BLS12_381::zero(),
+        ];
         mult_sc_vec_bls12_381(&mut intoo, &expected, 0);
         assert_eq!(intoo, expected);
     }
@@ -1560,12 +1721,12 @@ pub(crate) mod tests_bls12_381 {
         };
 
         let mut inout = [dummy_one, dummy_one, Point_BLS12_381::zero()];
-        let scalars = [ScalarField_BLS12_381::one(), ScalarField_BLS12_381::zero(), ScalarField_BLS12_381::zero()];
-        let expected = [
-            dummy_one,
-            Point_BLS12_381::zero(),
-            Point_BLS12_381::zero(),
+        let scalars = [
+            ScalarField_BLS12_381::one(),
+            ScalarField_BLS12_381::zero(),
+            ScalarField_BLS12_381::zero(),
         ];
+        let expected = [dummy_one, Point_BLS12_381::zero(), Point_BLS12_381::zero()];
         multp_vec_bls12_381(&mut inout, &scalars, 0);
         assert_eq!(inout, expected);
     }
diff --git a/src/test_bn254.rs b/src/test_bn254.rs
index 8f2eddb0..b7cae17b 100644
--- a/src/test_bn254.rs
+++ b/src/test_bn254.rs
@@ -1,17 +1,12 @@
-use std::ffi::{c_int, c_uint};
-
-use rand::{rngs::StdRng, RngCore, SeedableRng};
-
-
 use crate::curves::bn254::*;
-
 use ark_bn254::{Fr as Fr_BN254, G1Projective as G1Projective_BN254};
 use ark_ff::PrimeField;
 use ark_std::UniformRand;
-
+use rand::{rngs::StdRng, RngCore, SeedableRng};
+use rustacuda::memory::{CopyDestination, DeviceBox, DeviceCopy};
 use rustacuda::prelude::*;
 use rustacuda_core::DevicePointer;
-use rustacuda::memory::{DeviceBox, CopyDestination, DeviceCopy};
+use std::ffi::{c_int, c_uint};
 
 extern "C" {
 
@@ -49,18 +44,18 @@ extern "C" {
         device_id: usize,
     ) -> c_uint;
 
-    fn build_domain_cuda_bn254(domain_size: usize, logn: usize, inverse: bool, device_id: usize) -> DevicePointer;
+    fn build_domain_cuda_bn254(
+        domain_size: usize,
+        logn: usize,
+        inverse: bool,
+        device_id: usize,
+    ) -> DevicePointer;
 
     fn ntt_cuda_bn254(inout: *mut ScalarField_BN254, n: usize, inverse: bool, device_id: usize) -> c_int;
 
     fn ecntt_cuda_bn254(inout: *mut Point_BN254, n: usize, inverse: bool, device_id: usize) -> c_int;
 
-    fn ntt_batch_cuda_bn254(
-        inout: *mut ScalarField_BN254,
-        arr_size: usize,
-        n: usize,
-        inverse: bool,
-    ) -> c_int;
+    fn ntt_batch_cuda_bn254(inout: *mut ScalarField_BN254, arr_size: usize, n: usize, inverse: bool) -> c_int;
 
     fn ecntt_batch_cuda_bn254(inout: *mut Point_BN254, arr_size: usize, n: usize, inverse: bool) -> c_int;
 
@@ -70,10 +65,10 @@ extern "C" {
         n: usize,
         batch_size: usize,
         inverse: bool,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
-     fn ntt_inplace_coset_batch_cuda_bn254(        
+    fn ntt_inplace_coset_batch_cuda_bn254(
         d_inout: DevicePointer,
         d_twiddles: DevicePointer,
         n: usize,
@@ -81,14 +76,15 @@ extern "C" {
         inverse: bool,
         is_coset: bool,
         d_coset: DevicePointer,
-        device_id: usize) -> c_int;
+        device_id: usize,
+    ) -> c_int;
 
     fn interpolate_scalars_cuda_bn254(
         d_out: DevicePointer,
         d_evaluations: DevicePointer,
-        d_domain: DevicePointer, 
+        d_domain: DevicePointer,
         n: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn interpolate_scalars_batch_cuda_bn254(
@@ -97,7 +93,7 @@ extern "C" {
         d_domain: DevicePointer,
         n: usize,
         batch_size: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn interpolate_points_cuda_bn254(
@@ -105,7 +101,7 @@ extern "C" {
         d_evaluations: DevicePointer,
         d_domain: DevicePointer,
         n: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn interpolate_points_batch_cuda_bn254(
@@ -114,7 +110,7 @@ extern "C" {
         d_domain: DevicePointer,
         n: usize,
         batch_size: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn evaluate_scalars_cuda_bn254(
@@ -123,7 +119,7 @@ extern "C" {
         d_domain: DevicePointer,
         domain_size: usize,
         n: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn evaluate_scalars_batch_cuda_bn254(
@@ -133,7 +129,7 @@ extern "C" {
         domain_size: usize,
         n: usize,
         batch_size: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn evaluate_points_cuda_bn254(
@@ -142,7 +138,7 @@ extern "C" {
         d_domain: DevicePointer,
         domain_size: usize,
         n: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn evaluate_points_batch_cuda_bn254(
@@ -152,7 +148,7 @@ extern "C" {
         domain_size: usize,
         n: usize,
         batch_size: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn evaluate_scalars_on_coset_cuda_bn254(
@@ -162,7 +158,7 @@ extern "C" {
         domain_size: usize,
         n: usize,
         coset_powers: DevicePointer,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn evaluate_scalars_on_coset_batch_cuda_bn254(
@@ -173,7 +169,7 @@ extern "C" {
         n: usize,
         batch_size: usize,
         coset_powers: DevicePointer,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn evaluate_points_on_coset_cuda_bn254(
@@ -183,7 +179,7 @@ extern "C" {
         domain_size: usize,
         n: usize,
         coset_powers: DevicePointer,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn evaluate_points_on_coset_batch_cuda_bn254(
@@ -194,33 +190,25 @@ extern "C" {
         n: usize,
         batch_size: usize,
         coset_powers: DevicePointer,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
-    fn reverse_order_scalars_cuda_bn254(
-        d_arr: DevicePointer,
-        n: usize,
-        device_id: usize
-    ) -> c_int;
+    fn reverse_order_scalars_cuda_bn254(d_arr: DevicePointer, n: usize, device_id: usize) -> c_int;
 
     fn reverse_order_scalars_batch_cuda_bn254(
         d_arr: DevicePointer,
         n: usize,
         batch_size: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
-    fn reverse_order_points_cuda_bn254(
-        d_arr: DevicePointer,
-        n: usize,
-        device_id: usize
-    ) -> c_int;
+    fn reverse_order_points_cuda_bn254(d_arr: DevicePointer, n: usize, device_id: usize) -> c_int;
 
     fn reverse_order_points_batch_cuda_bn254(
         d_arr: DevicePointer,
         n: usize,
         batch_size: usize,
-        device_id: usize
+        device_id: usize,
     ) -> c_int;
 
     fn vec_mod_mult_point_bn254(
@@ -246,7 +234,11 @@ extern "C" {
     ) -> c_int;
 }
 
-pub fn msm_bn254(points: &[PointAffineNoInfinity_BN254], scalars: &[ScalarField_BN254], device_id: usize) -> Point_BN254 {
+pub fn msm_bn254(
+    points: &[PointAffineNoInfinity_BN254],
+    scalars: &[ScalarField_BN254],
+    device_id: usize,
+) -> Point_BN254 {
     let count = points.len();
     if count != scalars.len() {
         todo!("variable length")
@@ -353,7 +345,7 @@ pub fn intt_bn254(values: &mut [ScalarField_BN254], device_id: usize) {
 /// Compute an in-place NTT on the input data.
 fn ntt_internal_batch_bn254(
     values: &mut [ScalarField_BN254],
-    device_id: usize,
+    _device_id: usize,
     batch_size: usize,
     inverse: bool,
 ) -> i32 {
@@ -367,24 +359,17 @@ fn ntt_internal_batch_bn254(
     }
 }
 
-pub fn ntt_batch_bn254(values: &mut [ScalarField_BN254], batch_size: usize, device_id: usize) {
+pub fn ntt_batch_bn254(values: &mut [ScalarField_BN254], batch_size: usize, _device_id: usize) {
     ntt_internal_batch_bn254(values, 0, batch_size, false);
 }
 
-pub fn intt_batch_bn254(values: &mut [ScalarField_BN254], batch_size: usize, device_id: usize) {
+pub fn intt_batch_bn254(values: &mut [ScalarField_BN254], batch_size: usize, _device_id: usize) {
     ntt_internal_batch_bn254(values, 0, batch_size, true);
 }
 
 /// Compute an in-place ECNTT on the input data.
 fn ecntt_internal_bn254(values: &mut [Point_BN254], inverse: bool, device_id: usize) -> i32 {
-    unsafe {
-        ecntt_cuda_bn254(
-            values as *mut _ as *mut Point_BN254,
-            values.len(),
-            inverse,
-            device_id,
-        )
-    }
+    unsafe { ecntt_cuda_bn254(values as *mut _ as *mut Point_BN254, values.len(), inverse, device_id) }
 }
 
 pub fn ecntt_bn254(values: &mut [Point_BN254], device_id: usize) {
@@ -397,99 +382,61 @@ pub fn iecntt_bn254(values: &mut [Point_BN254], device_id: usize) {
 }
 
 /// Compute an in-place ECNTT on the input data.
-fn ecntt_internal_batch_bn254(
-    values: &mut [Point_BN254],
-    device_id: usize,
-    batch_size: usize,
-    inverse: bool,
-) -> i32 {
-    unsafe {
-        ecntt_batch_cuda_bn254(
-            values as *mut _ as *mut Point_BN254,
-            values.len(),
-            batch_size,
-            inverse,
-        )
-    }
+fn ecntt_internal_batch_bn254(values: &mut [Point_BN254], _device_id: usize, batch_size: usize, inverse: bool) -> i32 {
+    unsafe { ecntt_batch_cuda_bn254(values as *mut _ as *mut Point_BN254, values.len(), batch_size, inverse) }
 }
 
-pub fn ecntt_batch_bn254(values: &mut [Point_BN254], batch_size: usize, device_id: usize) {
+pub fn ecntt_batch_bn254(values: &mut [Point_BN254], batch_size: usize, _device_id: usize) {
     ecntt_internal_batch_bn254(values, 0, batch_size, false);
 }
 
 /// Compute an in-place iECNTT on the input data.
-pub fn iecntt_batch_bn254(values: &mut [Point_BN254], batch_size: usize, device_id: usize) {
+pub fn iecntt_batch_bn254(values: &mut [Point_BN254], batch_size: usize, _device_id: usize) {
     ecntt_internal_batch_bn254(values, 0, batch_size, true);
 }
 
 pub fn build_domain_bn254(domain_size: usize, logn: usize, inverse: bool) -> DeviceBuffer {
+    unsafe { DeviceBuffer::from_raw_parts(build_domain_cuda_bn254(domain_size, logn, inverse, 0), domain_size) }
+}
+
+pub fn reverse_order_scalars_bn254(d_scalars: &mut DeviceBuffer) {
     unsafe {
-        DeviceBuffer::from_raw_parts(build_domain_cuda_bn254(
-            domain_size,
-            logn,
-            inverse,
-            0
-        ), domain_size)
+        reverse_order_scalars_cuda_bn254(d_scalars.as_device_ptr(), d_scalars.len(), 0);
     }
 }
 
-
-pub fn reverse_order_scalars_bn254(
-    d_scalars: &mut DeviceBuffer,
-) {
-    unsafe { reverse_order_scalars_cuda_bn254(
-        d_scalars.as_device_ptr(),
-        d_scalars.len(),
-        0
-    ); }
+pub fn reverse_order_scalars_batch_bn254(d_scalars: &mut DeviceBuffer, batch_size: usize) {
+    unsafe {
+        reverse_order_scalars_batch_cuda_bn254(d_scalars.as_device_ptr(), d_scalars.len() / batch_size, batch_size, 0);
+    }
 }
 
-pub fn reverse_order_scalars_batch_bn254(
-    d_scalars: &mut DeviceBuffer,
-    batch_size: usize,
-) {
-    unsafe { reverse_order_scalars_batch_cuda_bn254(
-        d_scalars.as_device_ptr(),
-        d_scalars.len() / batch_size,
-        batch_size,
-        0
-    ); }
+pub fn reverse_order_points_bn254(d_points: &mut DeviceBuffer) {
+    unsafe {
+        reverse_order_points_cuda_bn254(d_points.as_device_ptr(), d_points.len(), 0);
+    }
 }
 
-pub fn reverse_order_points_bn254(
-    d_points: &mut DeviceBuffer,
-) {
-    unsafe { reverse_order_points_cuda_bn254(
-        d_points.as_device_ptr(),
-        d_points.len(),
-        0
-    ); }
-}
-
-pub fn reverse_order_points_batch_bn254(
-    d_points: &mut DeviceBuffer,
-    batch_size: usize,
-) {
-    unsafe { reverse_order_points_batch_cuda_bn254(
-        d_points.as_device_ptr(),
-        d_points.len() / batch_size,
-        batch_size,
-        0
-    ); }
+pub fn reverse_order_points_batch_bn254(d_points: &mut DeviceBuffer, batch_size: usize) {
+    unsafe {
+        reverse_order_points_batch_cuda_bn254(d_points.as_device_ptr(), d_points.len() / batch_size, batch_size, 0);
+    }
 }
 
 pub fn interpolate_scalars_bn254(
     d_evaluations: &mut DeviceBuffer,
-    d_domain: &mut DeviceBuffer
+    d_domain: &mut DeviceBuffer,
 ) -> DeviceBuffer {
     let mut res = unsafe { DeviceBuffer::uninitialized(d_domain.len()).unwrap() };
-    unsafe { interpolate_scalars_cuda_bn254(
-        res.as_device_ptr(),
-        d_evaluations.as_device_ptr(),
-        d_domain.as_device_ptr(),
-        d_domain.len(),
-        0
-    ) };
+    unsafe {
+        interpolate_scalars_cuda_bn254(
+            res.as_device_ptr(),
+            d_evaluations.as_device_ptr(),
+            d_domain.as_device_ptr(),
+            d_domain.len(),
+            0,
+        )
+    };
     return res;
 }
 
@@ -498,16 +445,17 @@ pub fn interpolate_scalars_batch_bn254(
     d_domain: &mut DeviceBuffer,
     batch_size: usize,
 ) -> DeviceBuffer {
-
     let mut res = unsafe { DeviceBuffer::uninitialized(d_domain.len() * batch_size).unwrap() };
-    unsafe { interpolate_scalars_batch_cuda_bn254(
-        res.as_device_ptr(),
-        d_evaluations.as_device_ptr(),
-        d_domain.as_device_ptr(),
-        d_domain.len(),
-        batch_size,
-        0
-    ) };
+    unsafe {
+        interpolate_scalars_batch_cuda_bn254(
+            res.as_device_ptr(),
+            d_evaluations.as_device_ptr(),
+            d_domain.as_device_ptr(),
+            d_domain.len(),
+            batch_size,
+            0,
+        )
+    };
     return res;
 }
 
@@ -516,13 +464,15 @@ pub fn interpolate_points_bn254(
     d_domain: &mut DeviceBuffer,
 ) -> DeviceBuffer {
     let mut res = unsafe { DeviceBuffer::uninitialized(d_domain.len()).unwrap() };
-    unsafe { interpolate_points_cuda_bn254(
-        res.as_device_ptr(),
-        d_evaluations.as_device_ptr(),
-        d_domain.as_device_ptr(),
-        d_domain.len(),
-        0
-    ) };
+    unsafe {
+        interpolate_points_cuda_bn254(
+            res.as_device_ptr(),
+            d_evaluations.as_device_ptr(),
+            d_domain.as_device_ptr(),
+            d_domain.len(),
+            0,
+        )
+    };
     return res;
 }
 
@@ -532,14 +482,16 @@ pub fn interpolate_points_batch_bn254(
     batch_size: usize,
 ) -> DeviceBuffer {
     let mut res = unsafe { DeviceBuffer::uninitialized(d_domain.len() * batch_size).unwrap() };
-    unsafe { interpolate_points_batch_cuda_bn254(
-        res.as_device_ptr(),
-        d_evaluations.as_device_ptr(),
-        d_domain.as_device_ptr(),
-        d_domain.len(),
-        batch_size,
-        0
-    ) };
+    unsafe {
+        interpolate_points_batch_cuda_bn254(
+            res.as_device_ptr(),
+            d_evaluations.as_device_ptr(),
+            d_domain.as_device_ptr(),
+            d_domain.len(),
+            batch_size,
+            0,
+        )
+    };
     return res;
 }
 
@@ -555,7 +507,7 @@ pub fn evaluate_scalars_bn254(
             d_domain.as_device_ptr(),
             d_domain.len(),
             d_coefficients.len(),
-            0
+            0,
         );
     }
     return res;
@@ -575,7 +527,7 @@ pub fn evaluate_scalars_batch_bn254(
             d_domain.len(),
             d_coefficients.len() / batch_size,
             batch_size,
-            0
+            0,
         );
     }
     return res;
@@ -593,7 +545,7 @@ pub fn evaluate_points_bn254(
             d_domain.as_device_ptr(),
             d_domain.len(),
             d_coefficients.len(),
-            0
+            0,
         );
     }
     return res;
@@ -613,7 +565,7 @@ pub fn evaluate_points_batch_bn254(
             d_domain.len(),
             d_coefficients.len() / batch_size,
             batch_size,
-            0
+            0,
         );
     }
     return res;
@@ -633,7 +585,7 @@ pub fn evaluate_scalars_on_coset_bn254(
             d_domain.len(),
             d_coefficients.len(),
             coset_powers.as_device_ptr(),
-            0
+            0,
         );
     }
     return res;
@@ -655,7 +607,7 @@ pub fn evaluate_scalars_on_coset_batch_bn254(
             d_coefficients.len() / batch_size,
             batch_size,
             coset_powers.as_device_ptr(),
-            0
+            0,
         );
     }
     return res;
@@ -679,7 +631,7 @@ pub fn ntt_inplace_coset_batch_bn254(
             inverse,
             d_coset.len() > 0,
             d_coset.as_device_ptr(),
-            0
+            0,
         )
     }
 }
@@ -698,7 +650,7 @@ pub fn evaluate_points_on_coset_bn254(
             d_domain.len(),
             d_coefficients.len(),
             coset_powers.as_device_ptr(),
-            0
+            0,
         );
     }
     return res;
@@ -720,7 +672,7 @@ pub fn evaluate_points_on_coset_batch_bn254(
             d_coefficients.len() / batch_size,
             batch_size,
             coset_powers.as_device_ptr(),
-            0
+            0,
         );
     }
     return res;
@@ -731,7 +683,7 @@ pub fn ntt_inplace_batch_bn254(
     d_twiddles: &mut DeviceBuffer,
     batch_size: usize,
     inverse: bool,
-    device_id: usize
+    device_id: usize,
 ) -> i32 {
     unsafe {
         ntt_inplace_batch_cuda_bn254(
@@ -740,7 +692,7 @@ pub fn ntt_inplace_batch_bn254(
             d_twiddles.len(),
             batch_size,
             inverse,
-            device_id
+            device_id,
         )
     }
 }
@@ -772,9 +724,13 @@ pub fn mult_sc_vec_bn254(a: &mut [ScalarField_BN254], b: &[ScalarField_BN254], d
 // Multiply a matrix by a scalar:
 //  `a` - flattenned matrix;
 //  `b` - vector to multiply `a` by;
-pub fn mult_matrix_by_vec_bn254(a: &[ScalarField_BN254], b: &[ScalarField_BN254], device_id: usize) -> Vec {
+pub fn mult_matrix_by_vec_bn254(
+    a: &[ScalarField_BN254],
+    b: &[ScalarField_BN254],
+    device_id: usize,
+) -> Vec {
     let mut c = Vec::with_capacity(b.len());
-    for i in 0..b.len() {
+    for _ in 0..b.len() {
         c.push(ScalarField_BN254::zero());
     }
     unsafe {
@@ -791,11 +747,12 @@ pub fn mult_matrix_by_vec_bn254(a: &[ScalarField_BN254], b: &[ScalarField_BN254]
 
 pub fn clone_buffer_bn254(buf: &mut DeviceBuffer) -> DeviceBuffer {
     let mut buf_cpy = unsafe { DeviceBuffer::uninitialized(buf.len()).unwrap() };
-    unsafe { buf_cpy.copy_from(buf) };
+    let _ = buf_cpy.copy_from(buf);
     return buf_cpy;
 }
 
-pub fn get_rng_bn254(seed: Option) -> Box { //TODO: not curve specific
+pub fn get_rng_bn254(seed: Option) -> Box {
+    //TODO: not curve specific
     let rng: Box = match seed {
         Some(seed) => Box::new(StdRng::seed_from_u64(seed)),
         None => Box::new(rand::thread_rng()),
@@ -810,26 +767,19 @@ fn set_up_device_bn254() {
     let _ctx = Context::create_and_push(ContextFlags::MAP_HOST | ContextFlags::SCHED_AUTO, device).unwrap();
 }
 
-pub fn generate_random_points_bn254(
-    count: usize,
-    mut rng: Box,
-) -> Vec {
+pub fn generate_random_points_bn254(count: usize, mut rng: Box) -> Vec {
     (0..count)
         .map(|_| Point_BN254::from_ark(G1Projective_BN254::rand(&mut rng)).to_xy_strip_z())
         .collect()
 }
 
-pub fn generate_random_points100_bn254(
-    count: usize,
-    mut rng: Box,
-) -> Vec {
-    let mut res =  Vec::new();
-    for i in 0..count{
-        if (i<1024) {
+pub fn generate_random_points100_bn254(count: usize, mut rng: Box) -> Vec {
+    let mut res = Vec::new();
+    for i in 0..count {
+        if i < 1024 {
             res.push(Point_BN254::from_ark(G1Projective_BN254::rand(&mut rng)).to_xy_strip_z());
-        }
-        else {
-            res.push(res[i-100]);
+        } else {
+            res.push(res[i - 100]);
         }
     }
     return res;
@@ -847,42 +797,55 @@ pub fn generate_random_scalars_bn254(count: usize, mut rng: Box) ->
         .collect()
 }
 
-pub fn set_up_points_bn254(test_size: usize, log_domain_size: usize, inverse: bool) -> (Vec, DeviceBuffer, DeviceBuffer) {
+pub fn set_up_points_bn254(
+    test_size: usize,
+    log_domain_size: usize,
+    inverse: bool,
+) -> (
+    Vec,
+    DeviceBuffer,
+    DeviceBuffer,
+) {
     set_up_device_bn254();
 
     let d_domain = build_domain_bn254(1 << log_domain_size, log_domain_size, inverse);
 
-    let seed = Some(0); // fix the rng to get two equal scalar 
+    let seed = Some(0); // fix the rng to get two equal scalar
     let vector = generate_random_points_proj_bn254(test_size, get_rng_bn254(seed));
-    let mut vector_mut = vector.clone();
+    let vector_mut = vector.clone();
 
-    let mut d_vector = DeviceBuffer::from_slice(&vector[..]).unwrap();
+    let d_vector = DeviceBuffer::from_slice(&vector[..]).unwrap();
     (vector_mut, d_vector, d_domain)
 }
 
-pub fn set_up_scalars_bn254(test_size: usize, log_domain_size: usize, inverse: bool) -> (Vec, DeviceBuffer, DeviceBuffer) {
+pub fn set_up_scalars_bn254(
+    test_size: usize,
+    log_domain_size: usize,
+    inverse: bool,
+) -> (
+    Vec,
+    DeviceBuffer,
+    DeviceBuffer,
+) {
     set_up_device_bn254();
 
     let d_domain = build_domain_bn254(1 << log_domain_size, log_domain_size, inverse);
 
     let seed = Some(0); // fix the rng to get two equal scalars
-    let mut vector_mut = generate_random_scalars_bn254(test_size, get_rng_bn254(seed));
+    let vector_mut = generate_random_scalars_bn254(test_size, get_rng_bn254(seed));
 
-    let mut d_vector = DeviceBuffer::from_slice(&vector_mut[..]).unwrap();
+    let d_vector = DeviceBuffer::from_slice(&vector_mut[..]).unwrap();
     (vector_mut, d_vector, d_domain)
 }
 
-
 #[cfg(test)]
 pub(crate) mod tests_bn254 {
-    use std::ops::Add;
+    use crate::test_bn254::*;
     use ark_bn254::{Fr, G1Affine, G1Projective};
     use ark_ec::{msm::VariableBaseMSM, AffineCurve, ProjectiveCurve};
     use ark_ff::{FftField, Field, Zero};
     use ark_std::UniformRand;
-    use rand::{rngs::StdRng, RngCore, SeedableRng};
-    use crate::test_bn254::*;
-    use crate::{curves::bn254::*, *};
+    use std::ops::Add;
 
     fn random_points_ark_proj(nof_elements: usize) -> Vec {
         let mut rng = ark_std::rand::thread_rng();
@@ -894,11 +857,7 @@ pub(crate) mod tests_bn254 {
         points_ga
     }
 
-    fn ecntt_arc_naive(
-        points: &Vec,
-        size: usize,
-        inverse: bool,
-    ) -> Vec {
+    fn ecntt_arc_naive(points: &Vec, size: usize, inverse: bool) -> Vec {
         let mut result: Vec = Vec::new();
         for _ in 0..size {
             result.push(G1Projective::zero());
@@ -911,16 +870,24 @@ pub(crate) mod tests_bn254 {
         }
         for k in 0..size {
             for l in 0..size {
-                let pow: [u64; 1] = [(l * k).try_into().unwrap()];
+                let pow: [u64; 1] = [(l * k)
+                    .try_into()
+                    .unwrap()];
                 let mul_rou = Fr::pow(&rou, &pow);
-                result[k] = result[k].add(points[l].into_affine().mul(mul_rou));
+                result[k] = result[k].add(
+                    points[l]
+                        .into_affine()
+                        .mul(mul_rou),
+                );
             }
         }
         if inverse {
             let size2 = size as u64;
             for k in 0..size {
                 let multfactor = Fr::inverse(&Fr::from(size2)).unwrap();
-                result[k] = result[k].into_affine().mul(multfactor);
+                result[k] = result[k]
+                    .into_affine()
+                    .mul(multfactor);
             }
         }
         return result;
@@ -948,8 +915,16 @@ pub(crate) mod tests_bn254 {
     fn decode_hex(s: &str) -> Vec {
         (0..s.len())
             .step_by(8)
-            .map(|i| u32::from_str_radix(&(s[i..i + 8].chars().rev().collect::()), 16)
-            .expect(&format!("{:?}", s[i..i + 8].as_bytes())))
+            .map(|i| {
+                u32::from_str_radix(
+                    &(s[i..i + 8]
+                        .chars()
+                        .rev()
+                        .collect::()),
+                    16,
+                )
+                .expect(&format!("{:?}", s[i..i + 8].as_bytes()))
+            })
             .collect()
     }
 
@@ -960,14 +935,20 @@ pub(crate) mod tests_bn254 {
         for pow2 in test_sizes {
             let count = 1 << pow2;
             let seed = None; // set Some to provide seed
-            // let points = generate_random_points_bn254(count, get_rng_bn254(seed));
+                             // let points = generate_random_points_bn254(count, get_rng_bn254(seed));
             let points = generate_random_points100_bn254(count, get_rng_bn254(seed));
             let scalars = generate_random_scalars_bn254(count, get_rng_bn254(seed));
 
             let msm_result = msm_bn254(&points, &scalars, 10);
 
-            let point_r_ark: Vec<_> = points.iter().map(|x| x.to_ark_repr()).collect();
-            let scalars_r_ark: Vec<_> = scalars.iter().map(|x| x.to_ark()).collect();
+            let point_r_ark: Vec<_> = points
+                .iter()
+                .map(|x| x.to_ark_repr())
+                .collect();
+            let scalars_r_ark: Vec<_> = scalars
+                .iter()
+                .map(|x| x.to_ark())
+                .collect();
 
             let msm_result_ark = VariableBaseMSM::multi_scalar_mul(&point_r_ark, &scalars_r_ark);
 
@@ -986,27 +967,39 @@ pub(crate) mod tests_bn254 {
         // loop over all the saved distributions: scalars0.txt, scalars1.txt, ...
         while let Ok(scalars_file) = std::fs::read_to_string(format!("src/scalars{}.txt", i)) {
             let scalars_file = decode_hex(&scalars_file);
-            let scalars = (0..scalars_file.len()).step_by(8)
-                                                .map(|i| ScalarField_BN254::from_limbs(&scalars_file[i..i+8]))
-                                                .collect::>();
+            let scalars = (0..scalars_file.len())
+                .step_by(8)
+                .map(|i| ScalarField_BN254::from_limbs(&scalars_file[i..i + 8]))
+                .collect::>();
 
             let points = if let Ok(points_file) = std::fs::read_to_string(format!("src/points{}.txt", i)) {
                 let points_file = decode_hex(&points_file);
-                (0..points_file.len()).step_by(16)
-                    .map(|i| PointAffineNoInfinity_BN254::from_limbs(&points_file[i..i+8], &points_file[i+8..i+16]))
+                (0..points_file.len())
+                    .step_by(16)
+                    .map(|i| {
+                        PointAffineNoInfinity_BN254::from_limbs(&points_file[i..i + 8], &points_file[i + 8..i + 16])
+                    })
                     .collect::>()
             } else {
                 // it doesn't really matter if there are no points.txt file as points shouldn't affect the performance or correctness
                 let seed = Some(0);
                 generate_random_points100_bn254(scalars.len(), get_rng_bn254(seed))
             };
-            assert!(points[0].to_ark_repr().is_on_curve());
+            assert!(points[0]
+                .to_ark_repr()
+                .is_on_curve());
 
             assert_eq!(scalars.len(), points.len());
             let msm_result = msm_bn254(&points, &scalars, 10);
 
-            let point_r_ark: Vec<_> = points.iter().map(|x| x.to_ark_repr()).collect();
-            let scalars_r_ark: Vec<_> = scalars.iter().map(|x| x.to_ark()).collect();
+            let point_r_ark: Vec<_> = points
+                .iter()
+                .map(|x| x.to_ark_repr())
+                .collect();
+            let scalars_r_ark: Vec<_> = scalars
+                .iter()
+                .map(|x| x.to_ark())
+                .collect();
 
             let msm_result_ark = VariableBaseMSM::multi_scalar_mul(&point_r_ark, &scalars_r_ark);
 
@@ -1025,8 +1018,14 @@ pub(crate) mod tests_bn254 {
                 let points_batch = generate_random_points_bn254(msm_size * batch_size, get_rng_bn254(seed));
                 let scalars_batch = generate_random_scalars_bn254(msm_size * batch_size, get_rng_bn254(seed));
 
-                let point_r_ark: Vec<_> = points_batch.iter().map(|x| x.to_ark_repr()).collect();
-                let scalars_r_ark: Vec<_> = scalars_batch.iter().map(|x| x.to_ark()).collect();
+                let point_r_ark: Vec<_> = points_batch
+                    .iter()
+                    .map(|x| x.to_ark_repr())
+                    .collect();
+                let scalars_r_ark: Vec<_> = scalars_batch
+                    .iter()
+                    .map(|x| x.to_ark())
+                    .collect();
 
                 let expected: Vec<_> = point_r_ark
                     .chunks(msm_size)
@@ -1045,14 +1044,16 @@ pub(crate) mod tests_bn254 {
     fn test_commit() {
         let test_size = 1 << 8;
         let seed = Some(0);
-        let (mut scalars, mut d_scalars, _) = set_up_scalars_bn254(test_size, 0, false);
-        let mut points = generate_random_points_bn254(test_size, get_rng_bn254(seed));
+        let (scalars, mut d_scalars, _) = set_up_scalars_bn254(test_size, 0, false);
+        let points = generate_random_points_bn254(test_size, get_rng_bn254(seed));
         let mut d_points = DeviceBuffer::from_slice(&points[..]).unwrap();
 
         let msm_result = msm_bn254(&points, &scalars, 0);
-        let mut d_commit_result = commit_bn254(&mut d_points, &mut d_scalars);
+        let d_commit_result = commit_bn254(&mut d_points, &mut d_scalars);
         let mut h_commit_result = Point_BN254::zero();
-        d_commit_result.copy_to(&mut h_commit_result).unwrap();
+        d_commit_result
+            .copy_to(&mut h_commit_result)
+            .unwrap();
 
         assert_eq!(msm_result, h_commit_result);
         assert_ne!(msm_result, Point_BN254::zero());
@@ -1069,9 +1070,13 @@ pub(crate) mod tests_bn254 {
         let mut d_points = DeviceBuffer::from_slice(&points[..]).unwrap();
 
         let msm_result = msm_batch_bn254(&points, &scalars, batch_size, 0);
-        let mut d_commit_result = commit_batch_bn254(&mut d_points, &mut d_scalars, batch_size);
-        let mut h_commit_result: Vec = (0..batch_size).map(|_| Point_BN254::zero()).collect();
-        d_commit_result.copy_to(&mut h_commit_result[..]).unwrap();
+        let d_commit_result = commit_batch_bn254(&mut d_points, &mut d_scalars, batch_size);
+        let mut h_commit_result: Vec = (0..batch_size)
+            .map(|_| Point_BN254::zero())
+            .collect();
+        d_commit_result
+            .copy_to(&mut h_commit_result[..])
+            .unwrap();
 
         assert_eq!(msm_result, h_commit_result);
         for h in h_commit_result {
@@ -1103,7 +1108,10 @@ pub(crate) mod tests_bn254 {
 
         test_naive_ark_ecntt(test_size);
 
-        assert!(points_proj[0].to_ark().into_affine().is_on_curve());
+        assert!(points_proj[0]
+            .to_ark()
+            .into_affine()
+            .is_on_curve());
 
         //naive ark
         let points_proj_ark = points_proj
@@ -1176,10 +1184,7 @@ pub(crate) mod tests_bn254 {
 
         // check that the ntt of each vec of scalars is equal to the intt of the specific batch
         for i in 0..batches {
-            assert_eq!(
-                ntt_result_vec_of_vec[i],
-                ntt_result[i * test_size..(i + 1) * test_size]
-            );
+            assert_eq!(ntt_result_vec_of_vec[i], ntt_result[i * test_size..(i + 1) * test_size]);
         }
 
         // check that ntt output is different from input
@@ -1268,10 +1273,14 @@ pub(crate) mod tests_bn254 {
         let test_size = 1 << log_test_size;
         let (mut evals_mut, mut d_evals, mut d_domain) = set_up_scalars_bn254(test_size, log_test_size, true);
 
-        let mut d_coeffs = interpolate_scalars_bn254(&mut d_evals, &mut d_domain);
+        let d_coeffs = interpolate_scalars_bn254(&mut d_evals, &mut d_domain);
         intt_bn254(&mut evals_mut, 0);
-        let mut h_coeffs: Vec = (0..test_size).map(|_| ScalarField_BN254::zero()).collect();
-        d_coeffs.copy_to(&mut h_coeffs[..]).unwrap();
+        let mut h_coeffs: Vec = (0..test_size)
+            .map(|_| ScalarField_BN254::zero())
+            .collect();
+        d_coeffs
+            .copy_to(&mut h_coeffs[..])
+            .unwrap();
 
         assert_eq!(h_coeffs, evals_mut);
     }
@@ -1281,12 +1290,17 @@ pub(crate) mod tests_bn254 {
         let batch_size = 4;
         let log_test_size = 10;
         let test_size = 1 << log_test_size;
-        let (mut evals_mut, mut d_evals, mut d_domain) = set_up_scalars_bn254(test_size * batch_size, log_test_size, true);
+        let (mut evals_mut, mut d_evals, mut d_domain) =
+            set_up_scalars_bn254(test_size * batch_size, log_test_size, true);
 
-        let mut d_coeffs = interpolate_scalars_batch_bn254(&mut d_evals, &mut d_domain, batch_size);
+        let d_coeffs = interpolate_scalars_batch_bn254(&mut d_evals, &mut d_domain, batch_size);
         intt_batch_bn254(&mut evals_mut, test_size, 0);
-        let mut h_coeffs: Vec = (0..test_size * batch_size).map(|_| ScalarField_BN254::zero()).collect();
-        d_coeffs.copy_to(&mut h_coeffs[..]).unwrap();
+        let mut h_coeffs: Vec = (0..test_size * batch_size)
+            .map(|_| ScalarField_BN254::zero())
+            .collect();
+        d_coeffs
+            .copy_to(&mut h_coeffs[..])
+            .unwrap();
 
         assert_eq!(h_coeffs, evals_mut);
     }
@@ -1297,11 +1311,15 @@ pub(crate) mod tests_bn254 {
         let test_size = 1 << log_test_size;
         let (mut evals_mut, mut d_evals, mut d_domain) = set_up_points_bn254(test_size, log_test_size, true);
 
-        let mut d_coeffs = interpolate_points_bn254(&mut d_evals, &mut d_domain);
+        let d_coeffs = interpolate_points_bn254(&mut d_evals, &mut d_domain);
         iecntt_bn254(&mut evals_mut[..], 0);
-        let mut h_coeffs: Vec = (0..test_size).map(|_| Point_BN254::zero()).collect();
-        d_coeffs.copy_to(&mut h_coeffs[..]).unwrap();
-        
+        let mut h_coeffs: Vec = (0..test_size)
+            .map(|_| Point_BN254::zero())
+            .collect();
+        d_coeffs
+            .copy_to(&mut h_coeffs[..])
+            .unwrap();
+
         assert_eq!(h_coeffs, *evals_mut);
         for h in h_coeffs.iter() {
             assert_ne!(*h, Point_BN254::zero());
@@ -1313,13 +1331,18 @@ pub(crate) mod tests_bn254 {
         let batch_size = 4;
         let log_test_size = 6;
         let test_size = 1 << log_test_size;
-        let (mut evals_mut, mut d_evals, mut d_domain) = set_up_points_bn254(test_size * batch_size, log_test_size, true);
+        let (mut evals_mut, mut d_evals, mut d_domain) =
+            set_up_points_bn254(test_size * batch_size, log_test_size, true);
 
-        let mut d_coeffs = interpolate_points_batch_bn254(&mut d_evals, &mut d_domain, batch_size);
+        let d_coeffs = interpolate_points_batch_bn254(&mut d_evals, &mut d_domain, batch_size);
         iecntt_batch_bn254(&mut evals_mut[..], test_size, 0);
-        let mut h_coeffs: Vec = (0..test_size * batch_size).map(|_| Point_BN254::zero()).collect();
-        d_coeffs.copy_to(&mut h_coeffs[..]).unwrap();
-        
+        let mut h_coeffs: Vec = (0..test_size * batch_size)
+            .map(|_| Point_BN254::zero())
+            .collect();
+        d_coeffs
+            .copy_to(&mut h_coeffs[..])
+            .unwrap();
+
         assert_eq!(h_coeffs, *evals_mut);
         for h in h_coeffs.iter() {
             assert_ne!(*h, Point_BN254::zero());
@@ -1334,39 +1357,51 @@ pub(crate) mod tests_bn254 {
         let (_, _, mut d_domain_inv) = set_up_scalars_bn254(0, log_test_domain_size, true);
 
         let mut d_evals = evaluate_scalars_bn254(&mut d_coeffs, &mut d_domain);
-        let mut d_coeffs_domain = interpolate_scalars_bn254(&mut d_evals, &mut d_domain_inv);
-        let mut h_coeffs_domain: Vec = (0..1 << log_test_domain_size).map(|_| ScalarField_BN254::zero()).collect();
-        d_coeffs_domain.copy_to(&mut h_coeffs_domain[..]).unwrap();
+        let d_coeffs_domain = interpolate_scalars_bn254(&mut d_evals, &mut d_domain_inv);
+        let mut h_coeffs_domain: Vec = (0..1 << log_test_domain_size)
+            .map(|_| ScalarField_BN254::zero())
+            .collect();
+        d_coeffs_domain
+            .copy_to(&mut h_coeffs_domain[..])
+            .unwrap();
 
         assert_eq!(h_coeffs, h_coeffs_domain[..coeff_size]);
-        for i in coeff_size.. (1 << log_test_domain_size) {
+        for i in coeff_size..(1 << log_test_domain_size) {
             assert_eq!(ScalarField_BN254::zero(), h_coeffs_domain[i]);
         }
     }
 
     #[test]
     fn test_scalar_batch_evaluation() {
-
         for batch_size in [1, 6] {
             for log_test_domain_size in [8, 12, 20] {
                 for coeff_size in [1 << 6, 1 << (log_test_domain_size - 1), 1 << log_test_domain_size] {
-
                     let domain_size = 1 << log_test_domain_size;
 
                     let test_size = batch_size * coeff_size;
 
-                    if test_size > (1 << 20) || test_size < (6 * 1 << 8) { continue; }
+                    if test_size > (1 << 20) || test_size < (6 * 1 << 8) {
+                        continue;
+                    }
 
-                    let (h_coeffs, mut d_coeffs, mut d_domain) = set_up_scalars_bn254(coeff_size * batch_size, log_test_domain_size, false);
+                    let (h_coeffs, mut d_coeffs, mut d_domain) =
+                        set_up_scalars_bn254(coeff_size * batch_size, log_test_domain_size, false);
                     let (_, _, mut d_domain_inv) = set_up_scalars_bn254(0, log_test_domain_size, true);
 
                     let mut d_evals = evaluate_scalars_batch_bn254(&mut d_coeffs, &mut d_domain, batch_size);
-                    let mut d_coeffs_domain = interpolate_scalars_batch_bn254(&mut d_evals, &mut d_domain_inv, batch_size);
-                    let mut h_coeffs_domain: Vec = (0..domain_size * batch_size).map(|_| ScalarField_BN254::zero()).collect();
-                    d_coeffs_domain.copy_to(&mut h_coeffs_domain[..]).unwrap();
+                    let d_coeffs_domain = interpolate_scalars_batch_bn254(&mut d_evals, &mut d_domain_inv, batch_size);
+                    let mut h_coeffs_domain: Vec = (0..domain_size * batch_size)
+                        .map(|_| ScalarField_BN254::zero())
+                        .collect();
+                    d_coeffs_domain
+                        .copy_to(&mut h_coeffs_domain[..])
+                        .unwrap();
 
                     for j in 0..batch_size {
-                        assert_eq!(h_coeffs[j * coeff_size..(j + 1) * coeff_size], h_coeffs_domain[j * domain_size..j * domain_size + coeff_size]);
+                        assert_eq!(
+                            h_coeffs[j * coeff_size..(j + 1) * coeff_size],
+                            h_coeffs_domain[j * domain_size..j * domain_size + coeff_size]
+                        );
                         for i in coeff_size..domain_size {
                             assert_eq!(ScalarField_BN254::zero(), h_coeffs_domain[j * domain_size + i]);
                         }
@@ -1378,31 +1413,40 @@ pub(crate) mod tests_bn254 {
 
     #[test]
     fn test_scalar_batch_inplace_ntt() {
-
         for batch_size in [1, 7, 128] {
             for log_test_domain_size in [8, 12, 20] {
                 let n_twiddles = 1 << log_test_domain_size;
 
                 let test_size = batch_size * n_twiddles;
 
-                if test_size > (1 << 20) { continue; }
+                if test_size > (1 << 20) {
+                    continue;
+                }
 
-                let (h_input, mut d_inout, mut d_twiddles) = set_up_scalars_bn254(test_size, log_test_domain_size, false);
+                let (h_input, mut d_inout, mut d_twiddles) =
+                    set_up_scalars_bn254(test_size, log_test_domain_size, false);
                 let (_, _, mut d_twiddle_inv) = set_up_scalars_bn254(0, log_test_domain_size, true);
 
                 ntt_inplace_batch_bn254(&mut d_inout, &mut d_twiddles, batch_size, false, 0);
-                
+
                 let mut h_ntt_result: Vec = vec![ScalarField_BN254::zero(); test_size];
-                d_inout.copy_to(&mut h_ntt_result[..]).unwrap();
+                d_inout
+                    .copy_to(&mut h_ntt_result[..])
+                    .unwrap();
 
                 assert_ne!(h_ntt_result, h_input);
 
                 ntt_inplace_batch_bn254(&mut d_inout, &mut d_twiddle_inv, batch_size, true, 0);
                 let mut h_ntt_intt_result: Vec = vec![ScalarField_BN254::zero(); test_size];
-                d_inout.copy_to(&mut h_ntt_intt_result[..]).unwrap();
+                d_inout
+                    .copy_to(&mut h_ntt_intt_result[..])
+                    .unwrap();
 
                 for j in 0..batch_size {
-                    assert_eq!(h_input[j * n_twiddles..(j + 1) * n_twiddles], h_ntt_intt_result[j * n_twiddles..j * n_twiddles + n_twiddles]);
+                    assert_eq!(
+                        h_input[j * n_twiddles..(j + 1) * n_twiddles],
+                        h_ntt_intt_result[j * n_twiddles..j * n_twiddles + n_twiddles]
+                    );
                 }
             }
         }
@@ -1416,9 +1460,13 @@ pub(crate) mod tests_bn254 {
         let (_, _, mut d_domain_inv) = set_up_points_bn254(0, log_test_domain_size, true);
 
         let mut d_evals = evaluate_points_bn254(&mut d_coeffs, &mut d_domain);
-        let mut d_coeffs_domain = interpolate_points_bn254(&mut d_evals, &mut d_domain_inv);
-        let mut h_coeffs_domain: Vec = (0..1 << log_test_domain_size).map(|_| Point_BN254::zero()).collect();
-        d_coeffs_domain.copy_to(&mut h_coeffs_domain[..]).unwrap();
+        let d_coeffs_domain = interpolate_points_bn254(&mut d_evals, &mut d_domain_inv);
+        let mut h_coeffs_domain: Vec = (0..1 << log_test_domain_size)
+            .map(|_| Point_BN254::zero())
+            .collect();
+        d_coeffs_domain
+            .copy_to(&mut h_coeffs_domain[..])
+            .unwrap();
 
         assert_eq!(h_coeffs[..], h_coeffs_domain[..coeff_size]);
         for i in coeff_size..(1 << log_test_domain_size) {
@@ -1435,16 +1483,24 @@ pub(crate) mod tests_bn254 {
         let log_test_domain_size = 6;
         let domain_size = 1 << log_test_domain_size;
         let coeff_size = 1 << 5;
-        let (h_coeffs, mut d_coeffs, mut d_domain) = set_up_points_bn254(coeff_size * batch_size, log_test_domain_size, false);
+        let (h_coeffs, mut d_coeffs, mut d_domain) =
+            set_up_points_bn254(coeff_size * batch_size, log_test_domain_size, false);
         let (_, _, mut d_domain_inv) = set_up_points_bn254(0, log_test_domain_size, true);
 
         let mut d_evals = evaluate_points_batch_bn254(&mut d_coeffs, &mut d_domain, batch_size);
-        let mut d_coeffs_domain = interpolate_points_batch_bn254(&mut d_evals, &mut d_domain_inv, batch_size);
-        let mut h_coeffs_domain: Vec = (0..domain_size * batch_size).map(|_| Point_BN254::zero()).collect();
-        d_coeffs_domain.copy_to(&mut h_coeffs_domain[..]).unwrap();
+        let d_coeffs_domain = interpolate_points_batch_bn254(&mut d_evals, &mut d_domain_inv, batch_size);
+        let mut h_coeffs_domain: Vec = (0..domain_size * batch_size)
+            .map(|_| Point_BN254::zero())
+            .collect();
+        d_coeffs_domain
+            .copy_to(&mut h_coeffs_domain[..])
+            .unwrap();
 
         for j in 0..batch_size {
-            assert_eq!(h_coeffs[j * coeff_size..(j + 1) * coeff_size], h_coeffs_domain[j * domain_size..(j * domain_size + coeff_size)]);
+            assert_eq!(
+                h_coeffs[j * coeff_size..(j + 1) * coeff_size],
+                h_coeffs_domain[j * domain_size..(j * domain_size + coeff_size)]
+            );
             for i in coeff_size..domain_size {
                 assert_eq!(Point_BN254::zero(), h_coeffs_domain[j * domain_size + i]);
             }
@@ -1460,37 +1516,57 @@ pub(crate) mod tests_bn254 {
         let log_test_domain_size = 8;
         let coeff_size = 1 << 6;
         let (_, mut d_coeffs, mut d_domain) = set_up_scalars_bn254(coeff_size, log_test_domain_size, false);
-        let (_, _, mut d_domain_inv) = set_up_scalars_bn254(coeff_size, log_test_domain_size, true);
+        let (_, _, _) = set_up_scalars_bn254(coeff_size, log_test_domain_size, true);
         let mut d_trivial_coset_powers = build_domain_bn254(1 << log_test_domain_size, 0, false);
 
-        let mut d_evals = evaluate_scalars_bn254(&mut d_coeffs, &mut d_domain);
-        let mut h_coeffs: Vec = (0..1 << log_test_domain_size).map(|_| ScalarField_BN254::zero()).collect();
-        d_evals.copy_to(&mut h_coeffs[..]).unwrap();
-        let mut d_evals_coset = evaluate_scalars_on_coset_bn254(&mut d_coeffs, &mut d_domain, &mut d_trivial_coset_powers);
-        let mut h_evals_coset: Vec = (0..1 << log_test_domain_size).map(|_| ScalarField_BN254::zero()).collect();
-        d_evals_coset.copy_to(&mut h_evals_coset[..]).unwrap();
+        let d_evals = evaluate_scalars_bn254(&mut d_coeffs, &mut d_domain);
+        let mut h_coeffs: Vec = (0..1 << log_test_domain_size)
+            .map(|_| ScalarField_BN254::zero())
+            .collect();
+        d_evals
+            .copy_to(&mut h_coeffs[..])
+            .unwrap();
+        let d_evals_coset = evaluate_scalars_on_coset_bn254(&mut d_coeffs, &mut d_domain, &mut d_trivial_coset_powers);
+        let mut h_evals_coset: Vec = (0..1 << log_test_domain_size)
+            .map(|_| ScalarField_BN254::zero())
+            .collect();
+        d_evals_coset
+            .copy_to(&mut h_evals_coset[..])
+            .unwrap();
 
         assert_eq!(h_coeffs, h_evals_coset);
     }
 
     #[test]
     fn test_scalar_evaluation_on_coset() {
-        // checks that evaluating a polynomial on a subgroup and its coset is the same as evaluating on a 2x larger subgroup 
+        // checks that evaluating a polynomial on a subgroup and its coset is the same as evaluating on a 2x larger subgroup
         let log_test_size = 8;
         let test_size = 1 << log_test_size;
         let (_, mut d_coeffs, mut d_domain) = set_up_scalars_bn254(test_size, log_test_size, false);
         let (_, _, mut d_large_domain) = set_up_scalars_bn254(0, log_test_size + 1, false);
         let mut d_coset_powers = build_domain_bn254(test_size, log_test_size + 1, false);
 
-        let mut d_evals_large = evaluate_scalars_bn254(&mut d_coeffs, &mut d_large_domain);
-        let mut h_evals_large: Vec = (0..2 * test_size).map(|_| ScalarField_BN254::zero()).collect();
-        d_evals_large.copy_to(&mut h_evals_large[..]).unwrap();
-        let mut d_evals = evaluate_scalars_bn254(&mut d_coeffs, &mut d_domain);
-        let mut h_evals: Vec = (0..test_size).map(|_| ScalarField_BN254::zero()).collect();
-        d_evals.copy_to(&mut h_evals[..]).unwrap();
-        let mut d_evals_coset = evaluate_scalars_on_coset_bn254(&mut d_coeffs, &mut d_domain, &mut d_coset_powers);
-        let mut h_evals_coset: Vec = (0..test_size).map(|_| ScalarField_BN254::zero()).collect();
-        d_evals_coset.copy_to(&mut h_evals_coset[..]).unwrap();
+        let d_evals_large = evaluate_scalars_bn254(&mut d_coeffs, &mut d_large_domain);
+        let mut h_evals_large: Vec = (0..2 * test_size)
+            .map(|_| ScalarField_BN254::zero())
+            .collect();
+        d_evals_large
+            .copy_to(&mut h_evals_large[..])
+            .unwrap();
+        let d_evals = evaluate_scalars_bn254(&mut d_coeffs, &mut d_domain);
+        let mut h_evals: Vec = (0..test_size)
+            .map(|_| ScalarField_BN254::zero())
+            .collect();
+        d_evals
+            .copy_to(&mut h_evals[..])
+            .unwrap();
+        let d_evals_coset = evaluate_scalars_on_coset_bn254(&mut d_coeffs, &mut d_domain, &mut d_coset_powers);
+        let mut h_evals_coset: Vec = (0..test_size)
+            .map(|_| ScalarField_BN254::zero())
+            .collect();
+        d_evals_coset
+            .copy_to(&mut h_evals_coset[..])
+            .unwrap();
 
         assert_eq!(h_evals[..], h_evals_large[..test_size]);
         assert_eq!(h_evals_coset[..], h_evals_large[test_size..2 * test_size]);
@@ -1498,7 +1574,7 @@ pub(crate) mod tests_bn254 {
 
     #[test]
     fn test_scalar_batch_evaluation_on_coset() {
-        // checks that evaluating a polynomial on a subgroup and its coset is the same as evaluating on a 2x larger subgroup 
+        // checks that evaluating a polynomial on a subgroup and its coset is the same as evaluating on a 2x larger subgroup
         let batch_size = 4;
         let log_test_size = 6;
         let test_size = 1 << log_test_size;
@@ -1506,44 +1582,74 @@ pub(crate) mod tests_bn254 {
         let (_, _, mut d_large_domain) = set_up_scalars_bn254(0, log_test_size + 1, false);
         let mut d_coset_powers = build_domain_bn254(test_size, log_test_size + 1, false);
 
-        let mut d_evals_large = evaluate_scalars_batch_bn254(&mut d_coeffs, &mut d_large_domain, batch_size);
-        let mut h_evals_large: Vec = (0..2 * test_size * batch_size).map(|_| ScalarField_BN254::zero()).collect();
-        d_evals_large.copy_to(&mut h_evals_large[..]).unwrap();
-        let mut d_evals = evaluate_scalars_batch_bn254(&mut d_coeffs, &mut d_domain, batch_size);
-        let mut h_evals: Vec = (0..test_size * batch_size).map(|_| ScalarField_BN254::zero()).collect();
-        d_evals.copy_to(&mut h_evals[..]).unwrap();
-        
+        let d_evals_large = evaluate_scalars_batch_bn254(&mut d_coeffs, &mut d_large_domain, batch_size);
+        let mut h_evals_large: Vec = (0..2 * test_size * batch_size)
+            .map(|_| ScalarField_BN254::zero())
+            .collect();
+        d_evals_large
+            .copy_to(&mut h_evals_large[..])
+            .unwrap();
+        let d_evals = evaluate_scalars_batch_bn254(&mut d_coeffs, &mut d_domain, batch_size);
+        let mut h_evals: Vec = (0..test_size * batch_size)
+            .map(|_| ScalarField_BN254::zero())
+            .collect();
+        d_evals
+            .copy_to(&mut h_evals[..])
+            .unwrap();
+
         // let mut d_evals_coset = evaluate_scalars_on_coset_batch_bn254(&mut d_coeffs, &mut d_domain, batch_size, &mut d_coset_powers);
         ntt_inplace_coset_batch_bn254(&mut d_coeffs, &mut d_domain, batch_size, false, &mut d_coset_powers);
         let d_evals_coset = d_coeffs;
 
-        let mut h_evals_coset: Vec = (0..test_size * batch_size).map(|_| ScalarField_BN254::zero()).collect();
-        d_evals_coset.copy_to(&mut h_evals_coset[..]).unwrap();
+        let mut h_evals_coset: Vec = (0..test_size * batch_size)
+            .map(|_| ScalarField_BN254::zero())
+            .collect();
+        d_evals_coset
+            .copy_to(&mut h_evals_coset[..])
+            .unwrap();
 
         for i in 0..batch_size {
-            assert_eq!(h_evals_large[2 * i * test_size..(2 * i + 1) * test_size], h_evals[i * test_size..(i + 1) * test_size]);
-            assert_eq!(h_evals_large[(2 * i + 1) * test_size..(2 * i + 2) * test_size], h_evals_coset[i * test_size..(i + 1) * test_size]);
+            assert_eq!(
+                h_evals_large[2 * i * test_size..(2 * i + 1) * test_size],
+                h_evals[i * test_size..(i + 1) * test_size]
+            );
+            assert_eq!(
+                h_evals_large[(2 * i + 1) * test_size..(2 * i + 2) * test_size],
+                h_evals_coset[i * test_size..(i + 1) * test_size]
+            );
         }
     }
 
     #[test]
     fn test_point_evaluation_on_coset() {
-        // checks that evaluating a polynomial on a subgroup and its coset is the same as evaluating on a 2x larger subgroup 
+        // checks that evaluating a polynomial on a subgroup and its coset is the same as evaluating on a 2x larger subgroup
         let log_test_size = 8;
         let test_size = 1 << log_test_size;
         let (_, mut d_coeffs, mut d_domain) = set_up_points_bn254(test_size, log_test_size, false);
         let (_, _, mut d_large_domain) = set_up_points_bn254(0, log_test_size + 1, false);
         let mut d_coset_powers = build_domain_bn254(test_size, log_test_size + 1, false);
 
-        let mut d_evals_large = evaluate_points_bn254(&mut d_coeffs, &mut d_large_domain);
-        let mut h_evals_large: Vec = (0..2 * test_size).map(|_| Point_BN254::zero()).collect();
-        d_evals_large.copy_to(&mut h_evals_large[..]).unwrap();
-        let mut d_evals = evaluate_points_bn254(&mut d_coeffs, &mut d_domain);
-        let mut h_evals: Vec = (0..test_size).map(|_| Point_BN254::zero()).collect();
-        d_evals.copy_to(&mut h_evals[..]).unwrap();
-        let mut d_evals_coset = evaluate_points_on_coset_bn254(&mut d_coeffs, &mut d_domain, &mut d_coset_powers);
-        let mut h_evals_coset: Vec = (0..test_size).map(|_| Point_BN254::zero()).collect();
-        d_evals_coset.copy_to(&mut h_evals_coset[..]).unwrap();
+        let d_evals_large = evaluate_points_bn254(&mut d_coeffs, &mut d_large_domain);
+        let mut h_evals_large: Vec = (0..2 * test_size)
+            .map(|_| Point_BN254::zero())
+            .collect();
+        d_evals_large
+            .copy_to(&mut h_evals_large[..])
+            .unwrap();
+        let d_evals = evaluate_points_bn254(&mut d_coeffs, &mut d_domain);
+        let mut h_evals: Vec = (0..test_size)
+            .map(|_| Point_BN254::zero())
+            .collect();
+        d_evals
+            .copy_to(&mut h_evals[..])
+            .unwrap();
+        let d_evals_coset = evaluate_points_on_coset_bn254(&mut d_coeffs, &mut d_domain, &mut d_coset_powers);
+        let mut h_evals_coset: Vec = (0..test_size)
+            .map(|_| Point_BN254::zero())
+            .collect();
+        d_evals_coset
+            .copy_to(&mut h_evals_coset[..])
+            .unwrap();
 
         assert_eq!(h_evals[..], h_evals_large[..test_size]);
         assert_eq!(h_evals_coset[..], h_evals_large[test_size..2 * test_size]);
@@ -1557,7 +1663,7 @@ pub(crate) mod tests_bn254 {
 
     #[test]
     fn test_point_batch_evaluation_on_coset() {
-        // checks that evaluating a polynomial on a subgroup and its coset is the same as evaluating on a 2x larger subgroup 
+        // checks that evaluating a polynomial on a subgroup and its coset is the same as evaluating on a 2x larger subgroup
         let batch_size = 2;
         let log_test_size = 6;
         let test_size = 1 << log_test_size;
@@ -1565,19 +1671,38 @@ pub(crate) mod tests_bn254 {
         let (_, _, mut d_large_domain) = set_up_points_bn254(0, log_test_size + 1, false);
         let mut d_coset_powers = build_domain_bn254(test_size, log_test_size + 1, false);
 
-        let mut d_evals_large = evaluate_points_batch_bn254(&mut d_coeffs, &mut d_large_domain, batch_size);
-        let mut h_evals_large: Vec = (0..2 * test_size * batch_size).map(|_| Point_BN254::zero()).collect();
-        d_evals_large.copy_to(&mut h_evals_large[..]).unwrap();
-        let mut d_evals = evaluate_points_batch_bn254(&mut d_coeffs, &mut d_domain, batch_size);
-        let mut h_evals: Vec = (0..test_size * batch_size).map(|_| Point_BN254::zero()).collect();
-        d_evals.copy_to(&mut h_evals[..]).unwrap();
-        let mut d_evals_coset = evaluate_points_on_coset_batch_bn254(&mut d_coeffs, &mut d_domain, batch_size, &mut d_coset_powers);
-        let mut h_evals_coset: Vec = (0..test_size * batch_size).map(|_| Point_BN254::zero()).collect();
-        d_evals_coset.copy_to(&mut h_evals_coset[..]).unwrap();
+        let d_evals_large = evaluate_points_batch_bn254(&mut d_coeffs, &mut d_large_domain, batch_size);
+        let mut h_evals_large: Vec = (0..2 * test_size * batch_size)
+            .map(|_| Point_BN254::zero())
+            .collect();
+        d_evals_large
+            .copy_to(&mut h_evals_large[..])
+            .unwrap();
+        let d_evals = evaluate_points_batch_bn254(&mut d_coeffs, &mut d_domain, batch_size);
+        let mut h_evals: Vec = (0..test_size * batch_size)
+            .map(|_| Point_BN254::zero())
+            .collect();
+        d_evals
+            .copy_to(&mut h_evals[..])
+            .unwrap();
+        let d_evals_coset =
+            evaluate_points_on_coset_batch_bn254(&mut d_coeffs, &mut d_domain, batch_size, &mut d_coset_powers);
+        let mut h_evals_coset: Vec = (0..test_size * batch_size)
+            .map(|_| Point_BN254::zero())
+            .collect();
+        d_evals_coset
+            .copy_to(&mut h_evals_coset[..])
+            .unwrap();
 
         for i in 0..batch_size {
-            assert_eq!(h_evals_large[2 * i * test_size..(2 * i + 1) * test_size], h_evals[i * test_size..(i + 1) * test_size]);
-            assert_eq!(h_evals_large[(2 * i + 1) * test_size..(2 * i + 2) * test_size], h_evals_coset[i * test_size..(i + 1) * test_size]);
+            assert_eq!(
+                h_evals_large[2 * i * test_size..(2 * i + 1) * test_size],
+                h_evals[i * test_size..(i + 1) * test_size]
+            );
+            assert_eq!(
+                h_evals_large[(2 * i + 1) * test_size..(2 * i + 2) * test_size],
+                h_evals_coset[i * test_size..(i + 1) * test_size]
+            );
         }
         for i in 0..test_size * batch_size {
             assert_ne!(h_evals[i], Point_BN254::zero());
@@ -1590,8 +1715,16 @@ pub(crate) mod tests_bn254 {
     #[test]
     #[allow(non_snake_case)]
     fn test_vec_scalar_mul() {
-        let mut intoo = [ScalarField_BN254::one(), ScalarField_BN254::one(), ScalarField_BN254::zero()];
-        let expected = [ScalarField_BN254::one(), ScalarField_BN254::zero(), ScalarField_BN254::zero()];
+        let mut intoo = [
+            ScalarField_BN254::one(),
+            ScalarField_BN254::one(),
+            ScalarField_BN254::zero(),
+        ];
+        let expected = [
+            ScalarField_BN254::one(),
+            ScalarField_BN254::zero(),
+            ScalarField_BN254::zero(),
+        ];
         mult_sc_vec_bn254(&mut intoo, &expected, 0);
         assert_eq!(intoo, expected);
     }
@@ -1606,12 +1739,12 @@ pub(crate) mod tests_bn254 {
         };
 
         let mut inout = [dummy_one, dummy_one, Point_BN254::zero()];
-        let scalars = [ScalarField_BN254::one(), ScalarField_BN254::zero(), ScalarField_BN254::zero()];
-        let expected = [
-            dummy_one,
-            Point_BN254::zero(),
-            Point_BN254::zero(),
+        let scalars = [
+            ScalarField_BN254::one(),
+            ScalarField_BN254::zero(),
+            ScalarField_BN254::zero(),
         ];
+        let expected = [dummy_one, Point_BN254::zero(), Point_BN254::zero()];
         multp_vec_bn254(&mut inout, &scalars, 0);
         assert_eq!(inout, expected);
     }
diff --git a/src/utils.rs b/src/utils.rs
index d6ce513d..b69b8244 100644
--- a/src/utils.rs
+++ b/src/utils.rs
@@ -1,5 +1,5 @@
-use rand::RngCore;
 use rand::rngs::StdRng;
+use rand::RngCore;
 use rand::SeedableRng;
 
 pub fn from_limbs(limbs: Vec, chunk_size: usize, f: fn(&[u32]) -> T) -> Vec {
@@ -33,7 +33,8 @@ pub fn u64_vec_to_u32_vec(arr_u64: &[u64]) -> Vec {
     arr_u32
 }
 
-pub fn get_rng(seed: Option) -> Box { //TOOD: this func is universal
+pub fn get_rng(seed: Option) -> Box {
+    //TOOD: this func is universal
     let rng: Box = match seed {
         Some(seed) => Box::new(StdRng::seed_from_u64(seed)),
         None => Box::new(rand::thread_rng()),
@@ -45,7 +46,7 @@ pub fn get_rng(seed: Option) -> Box { //TOOD: this func is uni
 mod tests {
     use ark_ff::BigInteger256;
 
-    use crate::curves::bls12_381::{ScalarField_BLS12_381 as ScalarField};
+    use crate::curves::bls12_381::ScalarField_BLS12_381 as ScalarField;
 
     use super::*;
 
@@ -54,7 +55,9 @@ mod tests {
         let arr_u32 = [1, 0x0fffffff, 3, 0x2fffffff, 5, 0x4fffffff, 7, 0x6fffffff];
 
         let s = ScalarField::from_ark_transmute(BigInteger256::new(
-            u32_vec_to_u64_vec(&arr_u32).try_into().unwrap(),
+            u32_vec_to_u64_vec(&arr_u32)
+                .try_into()
+                .unwrap(),
         ))
         .limbs();