From 1514fc5c6540d515ab00c8c6f975862ea53fe245 Mon Sep 17 00:00:00 2001 From: jolestar Date: Sat, 18 May 2024 11:46:02 +0800 Subject: [PATCH 1/3] [framework] Refactor the error_mapping generator and binary include --- Cargo.lock | 3 + crates/rooch/Cargo.toml | 2 + .../src/commands/move_cli/commands/explain.rs | 27 +++--- .../framework-builder/src/stdlib_configs.rs | 19 +++-- frameworks/framework-release/Cargo.toml | 2 + .../src/error_descriptions.rs | 80 ++++++++++++++++++ frameworks/framework-release/src/lib.rs | 2 + .../framework-types/src/error_descriptions.rs | 55 ------------ frameworks/framework-types/src/lib.rs | 1 - .../move-stdlib/error_description.errmap | Bin 2600 -> 0 bytes .../moveos-stdlib/error_description.errmap | Bin 3908 -> 0 bytes .../rooch-framework/error_description.errmap | Bin 6379 -> 0 bytes 12 files changed, 116 insertions(+), 75 deletions(-) create mode 100644 frameworks/framework-release/src/error_descriptions.rs delete mode 100644 frameworks/framework-types/src/error_descriptions.rs delete mode 100644 frameworks/move-stdlib/error_description.errmap delete mode 100644 frameworks/moveos-stdlib/error_description.errmap delete mode 100644 frameworks/rooch-framework/error_description.errmap diff --git a/Cargo.lock b/Cargo.lock index d52f14a43d..b05c6b5cc5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3746,8 +3746,10 @@ name = "framework-release" version = "0.1.0" dependencies = [ "anyhow", + "bcs", "clap 4.5.4", "framework-builder", + "framework-types", "include_dir", "move-binary-format", "move-core-types", @@ -8517,6 +8519,7 @@ dependencies = [ "dirs 4.0.0", "fastcrypto", "framework-builder", + "framework-release", "framework-types", "hex", "itertools 0.10.5", diff --git a/crates/rooch/Cargo.toml b/crates/rooch/Cargo.toml index cf8b872fb6..4c41b4b995 100644 --- a/crates/rooch/Cargo.toml +++ b/crates/rooch/Cargo.toml @@ -87,5 +87,7 @@ rooch-rpc-server = { workspace = true } rooch-rpc-client = { workspace = true } rooch-integration-test-runner = { workspace = true } +framework-release = { workspace = true } + [features] dashboard = [] \ No newline at end of file diff --git a/crates/rooch/src/commands/move_cli/commands/explain.rs b/crates/rooch/src/commands/move_cli/commands/explain.rs index 9be7363c31..5fd424141b 100644 --- a/crates/rooch/src/commands/move_cli/commands/explain.rs +++ b/crates/rooch/src/commands/move_cli/commands/explain.rs @@ -2,7 +2,6 @@ // SPDX-License-Identifier: Apache-2.0 use crate::cli_types::WalletContextOptions; -use bcs_ext; use clap::*; use move_core_types::errmap::{ErrorDescription, ErrorMapping}; use move_core_types::language_storage::ModuleId; @@ -31,13 +30,16 @@ impl Explain { let context = self.context_options.build()?; let address_mapping = context.address_mapping(); let module_id = self.location.into_module_id(&address_mapping)?; - let error_descriptions = framework_types::error_descriptions::ERROR_DESCRIPTIONS.clone(); - let error_description_bytes = error_descriptions.get(module_id.address()); + let error_descriptions = &framework_release::error_descriptions::ERROR_DESCRIPTIONS; + let error_mapping = error_descriptions.get(module_id.address()); - match error_description_bytes { - Some(bytes) => { - let explain_result = - explain_move_abort(AbortLocation::Module(module_id), self.abort_code, bytes); + match error_mapping { + Some(error_mapping) => { + let explain_result = explain_move_abort( + AbortLocation::Module(module_id), + self.abort_code, + error_mapping, + ); println!("{}", explain_result) } None => { @@ -54,11 +56,10 @@ impl Explain { pub fn get_explanation( module_id: &ModuleId, abort_code: u64, - data: &[u8], + error_mapping: &ErrorMapping, ) -> Option { - let error_descriptions: ErrorMapping = - bcs_ext::from_bytes(data).expect("Decode err map failed"); - error_descriptions.get_explanation(module_id.to_string().as_str(), abort_code) + let module_name = module_id.short_str_lossless(); + error_mapping.get_explanation(&module_name, abort_code) } #[derive(Debug, Clone, Serialize, Deserialize, Hash, Eq, PartialEq)] @@ -90,10 +91,10 @@ impl std::fmt::Display for MoveAbortExplain { pub fn explain_move_abort( abort_location: AbortLocation, abort_code: u64, - data: &[u8], + error_mapping: &ErrorMapping, ) -> MoveAbortExplain { let err_description = match abort_location { - AbortLocation::Module(module_id) => get_explanation(&module_id, abort_code, data), + AbortLocation::Module(module_id) => get_explanation(&module_id, abort_code, error_mapping), AbortLocation::Script => None, }; match err_description { diff --git a/frameworks/framework-builder/src/stdlib_configs.rs b/frameworks/framework-builder/src/stdlib_configs.rs index 73a18e50c9..35c36d5512 100644 --- a/frameworks/framework-builder/src/stdlib_configs.rs +++ b/frameworks/framework-builder/src/stdlib_configs.rs @@ -1,7 +1,7 @@ // Copyright (c) RoochNetwork // SPDX-License-Identifier: Apache-2.0 -use crate::{path_in_crate, Stdlib, StdlibBuildConfig}; +use crate::{path_in_crate, release_dir, Stdlib, StdlibBuildConfig}; use anyhow::Result; use move_package::BuildConfig; use once_cell::sync::Lazy; @@ -25,11 +25,14 @@ static STDLIB_BUILD_CONFIGS: Lazy> = Lazy::new(|| { .canonicalize() .expect("canonicalize path failed"); + let latest_error_descriptions = release_dir().join("latest").join("error_descriptions"); + vec![ StdlibBuildConfig { path: move_stdlib_path.clone(), error_prefix: "E".to_string(), - error_code_map_output_file: move_stdlib_path.join("error_description.errmap"), + error_code_map_output_file: latest_error_descriptions + .join("move_stdlib_error_description.errmap"), document_template: move_stdlib_path.join("doc_template/README.md"), document_output_directory: move_stdlib_path.join("doc"), build_config: BuildConfig::default(), @@ -38,7 +41,8 @@ static STDLIB_BUILD_CONFIGS: Lazy> = Lazy::new(|| { StdlibBuildConfig { path: moveos_stdlib_path.clone(), error_prefix: "Error".to_string(), - error_code_map_output_file: moveos_stdlib_path.join("error_description.errmap"), + error_code_map_output_file: latest_error_descriptions + .join("moveos_stdlib_error_description.errmap"), document_template: moveos_stdlib_path.join("doc_template/README.md"), document_output_directory: moveos_stdlib_path.join("doc"), build_config: BuildConfig::default(), @@ -47,7 +51,8 @@ static STDLIB_BUILD_CONFIGS: Lazy> = Lazy::new(|| { StdlibBuildConfig { path: rooch_framework_path.clone(), error_prefix: "Error".to_string(), - error_code_map_output_file: rooch_framework_path.join("error_description.errmap"), + error_code_map_output_file: latest_error_descriptions + .join("rooch_framework_error_description.errmap"), document_template: rooch_framework_path.join("doc_template/README.md"), document_output_directory: rooch_framework_path.join("doc"), build_config: BuildConfig::default(), @@ -56,7 +61,8 @@ static STDLIB_BUILD_CONFIGS: Lazy> = Lazy::new(|| { StdlibBuildConfig { path: bitcoin_move_path.clone(), error_prefix: "Error".to_string(), - error_code_map_output_file: bitcoin_move_path.join("error_description.errmap"), + error_code_map_output_file: latest_error_descriptions + .join("bitcoin_move_error_description.errmap"), document_template: bitcoin_move_path.join("doc_template/README.md"), document_output_directory: bitcoin_move_path.join("doc"), build_config: BuildConfig::default(), @@ -65,7 +71,8 @@ static STDLIB_BUILD_CONFIGS: Lazy> = Lazy::new(|| { StdlibBuildConfig { path: rooch_nursery_path.clone(), error_prefix: "Error".to_string(), - error_code_map_output_file: rooch_nursery_path.join("error_description.errmap"), + error_code_map_output_file: latest_error_descriptions + .join("rooch_nursery_error_description.errmap"), document_template: rooch_nursery_path.join("doc_template/README.md"), document_output_directory: rooch_nursery_path.join("doc"), build_config: BuildConfig::default(), diff --git a/frameworks/framework-release/Cargo.toml b/frameworks/framework-release/Cargo.toml index 16f67854cb..586e9c9942 100644 --- a/frameworks/framework-release/Cargo.toml +++ b/frameworks/framework-release/Cargo.toml @@ -21,6 +21,7 @@ serde = { workspace = true } tracing = { workspace = true } tracing-subscriber = { workspace = true } include_dir = { workspace = true } +bcs = { workspace = true } move-core-types = { workspace = true } move-binary-format = { workspace = true } @@ -29,6 +30,7 @@ move-package = { workspace = true } moveos-types = { workspace = true } moveos-stdlib = { workspace = true } +framework-types = { workspace = true } framework-builder = { workspace = true } [build-dependencies] diff --git a/frameworks/framework-release/src/error_descriptions.rs b/frameworks/framework-release/src/error_descriptions.rs new file mode 100644 index 0000000000..cbefca0cc0 --- /dev/null +++ b/frameworks/framework-release/src/error_descriptions.rs @@ -0,0 +1,80 @@ +// Copyright (c) RoochNetwork +// SPDX-License-Identifier: Apache-2.0 + +use crate::STATIC_FRAMEWORK_DIR; +use framework_types::addresses::*; +use move_core_types::{account_address::AccountAddress, errmap::ErrorMapping}; +use once_cell::sync::Lazy; +use std::collections::BTreeMap; + +pub static ERROR_DESCRIPTIONS: Lazy> = Lazy::new(|| { + let mut error_descriptions = BTreeMap::new(); + + let move_stdlib_err: ErrorMapping = bcs::from_bytes( + STATIC_FRAMEWORK_DIR + .get_file("latest/error_descriptions/move_stdlib_error_description.errmap") + .unwrap() + .contents(), + ) + .unwrap(); + error_descriptions.insert(MOVE_STD_ADDRESS, move_stdlib_err); + + let moveos_std_err: ErrorMapping = bcs::from_bytes( + STATIC_FRAMEWORK_DIR + .get_file("latest/error_descriptions/moveos_stdlib_error_description.errmap") + .unwrap() + .contents(), + ) + .unwrap(); + error_descriptions.insert(MOVEOS_STD_ADDRESS, moveos_std_err); + + let rooch_framework_err: ErrorMapping = bcs::from_bytes( + STATIC_FRAMEWORK_DIR + .get_file("latest/error_descriptions/rooch_framework_error_description.errmap") + .unwrap() + .contents(), + ) + .unwrap(); + + error_descriptions.insert(ROOCH_FRAMEWORK_ADDRESS, rooch_framework_err); + + let bitcoin_move_err: ErrorMapping = bcs::from_bytes( + STATIC_FRAMEWORK_DIR + .get_file("latest/error_descriptions/bitcoin_move_error_description.errmap") + .unwrap() + .contents(), + ) + .unwrap(); + + error_descriptions.insert(BITCOIN_MOVE_ADDRESS, bitcoin_move_err); + + let rooch_nursery_err: ErrorMapping = bcs::from_bytes( + STATIC_FRAMEWORK_DIR + .get_file("latest/error_descriptions/rooch_nursery_error_description.errmap") + .unwrap() + .contents(), + ) + .unwrap(); + + error_descriptions.insert(ROOCH_NURSERY_ADDRESS, rooch_nursery_err); + + error_descriptions +}); + +#[cfg(test)] +mod tests { + + use super::*; + + #[test] + fn test_error_descriptions() { + let error_descriptions = ERROR_DESCRIPTIONS.clone(); + let error_mapping = error_descriptions.get(&MOVEOS_STD_ADDRESS).unwrap(); + //println!("{:?}",error_mapping.module_error_maps); + let description = error_mapping.get_explanation("0x2::object", 1); + //println!("{:?}",description); + assert!(description.is_some()); + let description = description.unwrap(); + assert_eq!(description.code_name.as_str(), "ErrorAlreadyExists"); + } +} diff --git a/frameworks/framework-release/src/lib.rs b/frameworks/framework-release/src/lib.rs index 4e56a48d8a..673a488c09 100644 --- a/frameworks/framework-release/src/lib.rs +++ b/frameworks/framework-release/src/lib.rs @@ -5,6 +5,8 @@ use anyhow::{anyhow, Result}; use framework_builder::{stdlib_version::StdlibVersion, Stdlib}; use include_dir::{include_dir, Dir}; +pub mod error_descriptions; + pub(crate) const STATIC_FRAMEWORK_DIR: Dir = include_dir!("released"); pub fn load_stdlib(version: StdlibVersion) -> Result { diff --git a/frameworks/framework-types/src/error_descriptions.rs b/frameworks/framework-types/src/error_descriptions.rs deleted file mode 100644 index 8d3b253e9d..0000000000 --- a/frameworks/framework-types/src/error_descriptions.rs +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (c) RoochNetwork -// SPDX-License-Identifier: Apache-2.0 - -use crate::addresses::*; -use move_core_types::account_address::AccountAddress; -use once_cell::sync::Lazy; -use std::collections::BTreeMap; - -const MOVE_STD_ERROR_DESCRIPTIONS: &[u8] = - include_bytes!("../../move-stdlib/error_description.errmap"); - -pub fn move_std_error_descriptions() -> &'static [u8] { - MOVE_STD_ERROR_DESCRIPTIONS -} - -const MOVEOS_STD_ERROR_DESCRIPTIONS: &[u8] = - include_bytes!("../../moveos-stdlib/error_description.errmap"); - -pub fn moveos_std_error_descriptions() -> &'static [u8] { - MOVEOS_STD_ERROR_DESCRIPTIONS -} - -const ROOCH_FRAMEWORK_ERROR_DESCRIPTIONS: &[u8] = - include_bytes!("../../rooch-framework/error_description.errmap"); - -pub fn rooch_framework_error_descriptions() -> &'static [u8] { - ROOCH_FRAMEWORK_ERROR_DESCRIPTIONS -} - -const BITCOIN_MOVE_ERROR_DESCRIPTIONS: &[u8] = - include_bytes!("../../bitcoin-move/error_description.errmap"); - -pub fn bitcoin_move_error_descriptions() -> &'static [u8] { - BITCOIN_MOVE_ERROR_DESCRIPTIONS -} - -const ROOCH_NURSERY_ERROR_DESCRIPTIONS: &[u8] = - include_bytes!("../../rooch-nursery/error_description.errmap"); - -pub fn rooch_nursery_error_descriptions() -> &'static [u8] { - ROOCH_NURSERY_ERROR_DESCRIPTIONS -} - -pub static ERROR_DESCRIPTIONS: Lazy> = Lazy::new(|| { - let mut error_descriptions = BTreeMap::new(); - error_descriptions.insert(MOVE_STD_ADDRESS, move_std_error_descriptions()); - error_descriptions.insert(MOVEOS_STD_ADDRESS, moveos_std_error_descriptions()); - error_descriptions.insert( - ROOCH_FRAMEWORK_ADDRESS, - rooch_framework_error_descriptions(), - ); - error_descriptions.insert(BITCOIN_MOVE_ADDRESS, bitcoin_move_error_descriptions()); - error_descriptions.insert(ROOCH_NURSERY_ADDRESS, rooch_nursery_error_descriptions()); - error_descriptions -}); diff --git a/frameworks/framework-types/src/lib.rs b/frameworks/framework-types/src/lib.rs index 81ab38ba3e..98933c3d50 100644 --- a/frameworks/framework-types/src/lib.rs +++ b/frameworks/framework-types/src/lib.rs @@ -2,4 +2,3 @@ // SPDX-License-Identifier: Apache-2.0 pub mod addresses; -pub mod error_descriptions; diff --git a/frameworks/move-stdlib/error_description.errmap b/frameworks/move-stdlib/error_description.errmap deleted file mode 100644 index 8ba8f6c7269fce9a189d5a984a1ebb3f35ac1c32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2600 zcmcImT~pge6eT1Cl0azEJY?FJoi@{{r^F3`evs*OD(nT+5fZg!Ch3bTq_w?MdDoFv z2KwuJ_CvPQ^d%4F3ER8(o_o%{=kCs(HT(COA6|Na-%Y&U>EN7(@jmIKMZro^%~-}q zoaH1Hgo}AvaQs`2>nRh8d^=HU_J$n3devHYp|+zzoJ1!{&kIlKZ^YBLX0;-+Bqgir z0{@LjN-{acx2fV12Pz`BsN5Jquw5)Hy`n|LeAfp=M#8EdE- z$y%%saM;>(0XDtksE5KS=}3{)WywT#3#r7Y;F;P3l59fK3PPs&%c;!y==SAx$w7H@ zW(n)4wdJBd_JSVuy6+PD*6+vt6C>UNlbWPT_k*ommAchHY=#_&n-)6PEhy!cs#c>v zaM7RkXg?bCIuzm0yg?uEzbBDxr!lZX4+-H)qIJi|5qV!rl`cZPK59K|`0IFKhXw)d z?k$u@-((Dvkdv!h(^3v-L;ulH>yf*@<%cotgU~NFkP3u;u!Z2PkRcdkTA}5tB&}e#M(9h`XMb3lP*4C?={WovYtY{{D zZHsoIF!ucL8Z6Fz-+HOFwYt=m$Z|_ zQIrHxczTQ-B6K%HSFl=Vm~#P3Hl9B!fKVg#6N{>rIfC0TFU zXlEh+AU^r|i&f3_7e?ed-WME;zHt9+Of9Q z{&z+*ZbEPYtJ1CR>R4{FEA6q>9T#Ycz^uhj39;@%Jg49`j(Ythpy6qJmSA_BdvWKi zW$+YCjKLx7Z3(BsqPBj5HI^3bZPU|w^Wyu4&9x2s$G{8LcFm7hTqU*^FknfzZ%KGz z(#%RZ=Q*aw)xX%>AJ)4`Ey&iYI7^7g(g=^C9P>F7Pfhv}zhQYYli>B>^~N1H@7vf& zVRY_?9_s(f;K-SfQ!Y~7JPS;E!vAKaY$$s`yZ)uG7wj+Qk~V&`Mqv;zx$9=Kl$4~v zo5pN(OxlFO63u&JSpRr9yz7YArRRen_AdhcIzZ50P0%TxG<=5bm6J~kd(Tz(WPvg{ zewX}7d(qd#BRQY*NT}xDV44;+?R8;**%uaInHP|=J1OR@RNC;+ bxG5Q)Xu>Zn-*BCVky?~&2JglO(%a)7%CHXC diff --git a/frameworks/moveos-stdlib/error_description.errmap b/frameworks/moveos-stdlib/error_description.errmap deleted file mode 100644 index 71ca1d3069faa49363481cebb709fc8f5889b255..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3908 zcmc&%>vIz~5H}QB-j4z$Fcbu(!wdz=WGFN6EeQ#@B?*H~_~^)YYoExSbd_{|@Yi>> zD_v|}?YA-$#+Fw5`0Z~W?p!(Xc((fdxzzKcM>_oP;-!lRUv6$t6X6#vF*0-7aB?$OaD6J0%#rOMam9$bh0 z7|L<$$B*R4x*T`i3u|gQETJp9BO&u#NVKOP=J8mdo(3H>c;23&st01K%2LRou^vDA z0zE`mGm}H|Cp^r@k5D~&N^u8rXkOVqv{uzW^XTKKyG=f$>}L|`L? zgg5)DblogS{5yCB%v!@7S48*~%wB^Y`=XP=zD8lAPkSK)c)w9dD>Dx^Cc>6=tLp{{ zzkU6t2Uel{N9mQ(TT+#cg;wRwB=rK^m*h?o(LOk%Tg9KFb6b!Wp+-ce{eH_WDV(=W z=2HYekzfq)&))7%&s(L(cb63ebKxQ01d=Ld+-Y*f3_n2T&n4P3-PTGAGM{hGl=JR4 z%GEB(3FLb|*RoQX7%3=`gDfh5WRqWK$uC59%QQN_FE*s6+8Bke6x3JreHUwEWihbb zsRp~2=N6pn99xoLH6)O@)j1v|E|U(Hz{?&c7xK>c@s=ay+pb#=jy+3mdU*iCAn!sg z8;*QhsH_O^4LJrwmom%ntN$S?y}n>Fg1Bz5kxbF>i70c4WVQl&4&B^*tNe-&!hbU+oCq2rWQZ!GWr0QVq$C`N?deH>()li2TM^uL8?QuYHm|_T-Y#e^)5(^o{QllrS zmTnQ6sK_)ngJpc)Imq9OH7%s~fvjN!B@00jJ!y?$E5c@wO#4E55$GUsAXSw@4cH&7 z)DHVF_SaOccgcRV+jTKBpZN2;NCz$Inbh|@a?|1v{>+zDwRcE4=8Wb*Z|*P*)I=gH_$je|*V?6KtE7p>kDdnAQp8NCTGhQWjVn&ym46P24Ii-vrMp>QYFbB1$GTVJZ1=-s%iwjl80LqcgeqCzElTS#kQ=)0bm46bWg#v_xK7Ur;XxD z`ydt}Ef#Fm&jy*%9%jBx5`!1lBqUn6>|CHURk(W&Dw8)Q98Y=TB`)$1P14F5rddyo zaT9rn3u};1g&uMi0$*JG=`%^E7;P7G+tBt=lrAiT3MQD-@Ivt zrE5gz%9BwLCdA4)7)g0Co5aTrCZ_(7FQg%n9;DwI^# zYR#SvjgIBAcxALSanE&atF2WupD6P@%=f+f%5)yjbW`2e4$o8ZBAm_r;yYMmTdyYr@6z_7wAuLH#p?x9c4ef(LjozyoR)3IGKggi%UDQJd$If({Rn?gg3P}kk^ni9E0kFX>ATj6Iu>>q0Lh+iakjS!AygCV6c(y`9 z$ED0`$?Yu<{eBGk5+Ba!t~GUq!P#lrxGFBC;BjNJf!)r3XIyc4v@`;aH`CHJ&e+n{ z6{|wZwvB0vw~_$+{3jbB;_(q2$Hn4GT4R6sV-CgDk!3de7)sAJhW0AnVqhyvEXYfe zFfR8^{(64i7&?*&o}bey`C|)*=Fh!>9^3Dmnd#s(TXvBX$mvOGeQbj1ox$cuAqcww9gHe8T|y-kV_ z`0K>kh=~P&)||rZz>5=mO{EYjozRr}If!fLX6vqiUkL~ujY`|8nJIN2;5VNi(Wy%b zX1`w6|Gr&xx-$8k+*c50sjRNJLI*Wv74-DkuU?agFg)yP3%K{#lpdn^sGt4OtbVU3 zR?0GZw*9QOrFv#oYY5!2f~nNJ^9`YFunVVS-C0<@ifZYxtse7RX5*Qu3Z>nKt_Lj*#N>5sP~Smcb;AvVtwelWFN)go&Sz$yl1=2rY<m)vM}Ua;wCp;HZBu^p*w#*N~Mfo(6_Dc;IKba@>QZ8 zWJ%2-5Lx+cs-Xr@VcPhruZLtZ^-Q$}wuw^U#KjH=;w$O7K_T2D<)@~zKq@u%8GX() zh9^2pOqxc0c27yNB}i%Jv1dBd)Q#qYPYCx){Ty5 ziIg8##$aR;Qmb7*V_-l%i5TNbQl5mJlhy*QyEf7UEyLfXcs`}T>?Sb052xBPD-VUw zp*k#mYwnN@0ZeG7y2dEXNRWpBOWzJEpn_0IHok5OW_uhbm7A)j3sw;B4XqXPk1#eq z>Zy%)s9<5!72Xu5|Nl*t4J~w-hH`1J^fT&l>8DgY(BUu%?6}xjxWvAjeCS|*9_(hg zie9DwLkU0K%RRy{gAIBv&jNc$QTn)?63y2Dldno8v+iCWfLWTdk7jcY5JapEn8xNf zRSk$io*?NYS}BdflroxlaFc^h!DOb5O!e1PjEpK`Hyu7vp-pfNn&@lVEd3zlM(AOi zPzrbeAmZ5n05R)GNQjmS$5p07VJ2jxgl+e?(CL|-W7az~Na;dGu2|l-rT*~M0#P_(`xNwm-wAKv@Qf_s$ z@W^3Zay8XM!OAlmOPHAw&b-@*8`Fai^nUR^ZD=4&o#`7<$_1WAgRWsPHKrnLFQM9U z_b^Is0~Kvr2zwYL1V`Bf`e>`lES& z=Otc}PdmCpKyyR0m^R{Q{W#wtfO@*y5vv`R)?RDa_^h`OXE%8EeHR&4X?oD$RHwo@ z<2A0DuX%be`NR_Itjt9@N!eE+|=51|R*x1{N@0Z=f!N zL4HI;tB=EV!DHH!I6=nJhRce%2DB(Ko+aEl&;-^Z5H+z>udurs{Vkx$(>)-CaP5HE z@CDH?kiV>e`U2h2E=n5))4(rV4zq*+cjJ6?8P1q)<@@Hi_PRQeN^vG~Za3J(B@%JHJd?ZLO?YaAcJ-=_K(3%qX zJ+x>J@0eDeIqHZNGgr|gk0^+eAAV?IlmI|EyW0&e8L%+m*OcGSyWu|){9Kjm_K6!_ R*z-&o^`h^RpTo;~@jtCS@`?Ze From c9f6c1a891e5db3552313ecc946a485d885678ca Mon Sep 17 00:00:00 2001 From: jolestar Date: Sat, 18 May 2024 11:50:28 +0800 Subject: [PATCH 2/3] [example] Fix example --- examples/wasm_execution/sources/wasm.move | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/examples/wasm_execution/sources/wasm.move b/examples/wasm_execution/sources/wasm.move index 2c55fcd789..9242eeac74 100644 --- a/examples/wasm_execution/sources/wasm.move +++ b/examples/wasm_execution/sources/wasm.move @@ -6,7 +6,6 @@ module rooch_examples::wasm_execution { use std::debug; use std::string; use std::vector; - use rooch_nursery::bitseed::inscribe_generate; entry public fun run() { let wasm_bytes: vector = x"0061736d0100000001180560017f017f60000060037f7f7f017f60017f006000017f03090800010200000003040405017001020205060101800280020608017f0141808c040b076907066d656d6f727902000a746573745f616c6c6f6300040b5f696e697469616c697a650001195f5f696e6469726563745f66756e6374696f6e5f7461626c65010009737461636b5361766500070c737461636b526573746f726500060a737461636b416c6c6f6300050907010041010b01010ac02a084901027f4180082802002201200041076a41787122026a2100024020024100200020014d1b45044020003f004110744d0d010b4184084130360200417f0f0b418008200036020020010b02000b3301017f20020440200021030340200320012d00003a0000200341016a2103200141016a2101200241016b22020d000b0b20000b7a01037f0240024020002201410371450d0020012d000045044041000f0b0340200141016a2201410371450d0120012d00000d000b0c010b03402001220241046a210120022802002203417f73200341818284086b7141808182847871450d000b03402002220141016a210220012d00000d000b0b200120006b0ba42801127f230041106b220b2400200b42adc2c183d7cc9b32370008200b41086a220f1003221020001003220c6a41016a22112101230041106b220d24000240024002400240024002400240024002400240200141f4014d0440418808280200220441102001410b6a41f803712001410b491b22074103762201762202410371044002402002417f7341017120016a2203410374220141b0086a2202200141b8086a280200220128020822064604404188082004417e200377713602000c010b2006200236020c200220063602080b200141086a2102200120034103742203410372360204200120036a220120012802044101723602040c0b0b200741900828020022094d0d0120020440024041022001742203410020036b72200220017471682202410374220141b0086a2203200141b8086a280200220128020822064604404188082004417e2002777122043602000c010b2006200336020c200320063602080b20012007410372360204200120076a22052002410374220220076b2206410172360204200120026a200636020020090440200941787141b0086a2102419c082802002103027f20044101200941037674220871450440418808200420087236020020020c010b20022802080b2104200220033602082004200336020c2003200236020c200320043602080b200141086a2102419c08200536020041900820063602000c0b0b418c08280200220e450d01200e6841027441b80a6a280200220328020441787120076b210520032101034002402001280210220245044020012802142202450d010b200228020441787120076b22012005200120054922011b21052002200320011b2103200221010c010b0b2003280218210a2003200328020c22024704404198082802001a20032802082201200236020c200220013602080c0a0b20032802142201047f200341146a0520032802102201450d03200341106a0b21060340200621082001220241146a2106200128021422010d00200241106a2106200228021022010d000b200841003602000c090b417f2107200141bf7f4b0d002001410b6a22014178712107418c082802002208450d00410020076b2105024002400240027f41002007418002490d001a411f200741ffffff074b0d001a2007412620014108766722016b7641017120014101746b413e6a0b220941027441b80a6a28020022014504400c010b2007411920094101766b41002009411f471b74210303400240200128020441787120076b220420054f0d0020012106200422050d0041002105200121020c030b200220012802142204200420012003411d764104716a2802102201461b200220041b21022003410174210320010d000b0b20022006724504404100210641022009742201410020016b722008712201450d0320016841027441b80a6a28020021020b2002450d010b0340200228020441787120076b220320054921012003200520011b21052002200620011b210620022802102201047f20010520022802140b22020d000b0b2006450d00200541900828020020076b4f0d00200628021821092006200628020c22024704404198082802001a20062802082201200236020c200220013602080c080b20062802142201047f200641146a0520062802102201450d03200641106a0b21030340200321042001220241146a2103200128021422010d00200241106a2103200228021022010d000b200441003602000c070b200741900828020022064d0440419c0828020021020240200620076b220141104f0440200220076a22032001410172360204200220066a2001360200200220074103723602040c010b20022006410372360204200220066a2201200128020441017236020441002103410021010b4190082001360200419c082003360200200241086a21020c090b20074194082802002203490440419408200320076b220236020041a00841a008280200220120076a22033602002003200241017236020420012007410372360204200141086a21020c090b410021022007412f6a2205027f41e00b280200044041e80b2802000c010b41ec0b427f37020041e40b4280a0808080800437020041e00b200d410c6a41707141d8aad5aa057336020041f40b410036020041c40b41003602004180200b22016a2204410020016b220871220120074d0d0841c00b2802002206044041b80b280200220920016a220a20094d2006200a49720d090b024041c40b2d0000410471450440024002400240024041a0082802002206044041c80b210203402006200228020022094f0440200920022802046a20064b0d030b200228020822020d000b0b410010002203417f460d032001210441e40b280200220241016b22062003710440200120036b200320066a410020026b716a21040b200420074d0d0341c00b2802002202044041b80b280200220620046a220820064d2002200849720d040b2004100022022003470d010c050b200420036b200871220410002203200228020020022802046a460d01200321020b2002417f460d01200741306a20044d0440200221030c040b41e80b2802002203200520046b6a410020036b7122031000417f460d01200320046a2104200221030c030b2003417f470d020b41c40b41c40b2802004104723602000b200110002203417f46410010002201417f4672200120034d720d05200120036b2204200741286a4d0d050b41b80b41b80b28020020046a220136020041bc0b280200200149044041bc0b20013602000b024041a0082802002205044041c80b21020340200320022802002201200228020422066a460d02200228020822020d000b0c040b41980828020022014100200120034d1b45044041980820033602000b4100210241cc0b200436020041c80b200336020041a808417f36020041ac0841e00b28020036020041d40b410036020003402002410374220141b8086a200141b0086a2206360200200141bc086a2006360200200241016a22024120470d000b419408200441286b2201417820036b41077122026b220636020041a008200220036a220236020020022006410172360204200120036a412836020441a40841f00b2802003602000c040b200320054d200120054b720d02200228020c4108710d022002200420066a36020441a0082005417820056b41077122016a220236020041940841940828020020046a220320016b220136020020022001410172360204200320056a412836020441a40841f00b2802003602000c030b410021020c060b410021020c040b41980828020020034b044041980820033602000b200320046a210141c80b21020240034020012002280200470440200228020822020d010c020b0b20022d000c410871450d030b41c80b2102034002402005200228020022014f0440200120022802046a220620054b0d010b200228020821020c010b0b419408200441286b2201417820036b41077122026b220836020041a008200220036a220236020020022008410172360204200120036a412836020441a40841f00b28020036020020052006412720066b4107716a412f6b22012001200541106a491b2201411b360204200141d00b290200370210200141c80b29020037020841d00b200141086a36020041cc0b200436020041c80b200336020041d40b4100360200200141186a2102034020024107360204200241086a2112200241046a210220122006490d000b20012005460d0020012001280204417e713602042005200120056b220341017236020420012003360200027f200341ff014d0440200341787141b0086a2102027f41880828020022014101200341037674220371450440418808200120037236020020020c010b20022802080b2101200220053602082001200536020c410c210341080c010b411f2102200341ffffff074d04402003412620034108766722016b7641017120014101746b413e6a21020b2005200236021c20054200370210200241027441b80a6a210102400240418c0828020022064101200274220471450440418c082004200672360200200120053602000c010b2003411920024101766b41002002411f471b742102200128020021060340200622012802044178712003460d022002411d76210620024101742102200120064104716a220428021022060d000b200420053602100b2005200136021841082103200522012102410c0c010b20012802082202200536020c20012005360208200520023602084100210241182103410c0b20056a2001360200200320056a20023602000b419408280200220120074d0d00419408200120076b220236020041a00841a008280200220120076a22033602002003200241017236020420012007410372360204200141086a21020c040b4184084130360200410021020c030b200220033602002002200228020420046a3602042003417820036b4107716a220920074103723602042001417820016b4107716a2204200720096a22056b2108024041a008280200200446044041a008200536020041940841940828020020086a2201360200200520014101723602040c010b419c082802002004460440419c08200536020041900841900828020020086a220136020020052001410172360204200120056a20013602000c010b2004280204220241037141014604402002417871210a200428020c21030240200241ff014d0440200428020822012003460440418808418808280200417e200241037677713602000c020b2001200336020c200320013602080c010b200428021821070240200320044704404198082802001a20042802082201200336020c200320013602080c010b024020042802142202047f200441146a0520042802102202450d01200441106a0b21010340200121062002220341146a2101200228021422020d00200341106a2101200328021022020d000b200641003602000c010b410021030b2007450d000240200428021c220141027441b80a6a220228020020044604402002200336020020030d01418c08418c08280200417e200177713602000c020b20074110411420072802102004461b6a20033602002003450d010b2003200736021820042802102201044020032001360210200120033602180b20042802142201450d0020032001360214200120033602180b2008200a6a21082004200a6a220428020421020b20042002417e7136020420052008410172360204200520086a2008360200200841ff014d0440200841787141b0086a2101027f41880828020022024101200841037674220371450440418808200220037236020020010c010b20012802080b2102200120053602082002200536020c2005200136020c200520023602080c010b411f2103200841ffffff074d04402008412620084108766722016b7641017120014101746b413e6a21030b2005200336021c20054200370210200341027441b80a6a210202400240418c0828020022014101200374220671450440418c082001200672360200200220053602000c010b2008411920034101766b41002003411f471b742103200228020021010340200122022802044178712008460d022003411d76210120034101742103200220014104716a220628021022010d000b200620053602100b200520023602182005200536020c200520053602080c010b20022802082201200536020c20022005360208200541003602182005200236020c200520013602080b200941086a21020c020b02402009450d000240200628021c220141027441b80a6a220328020020064604402003200236020020020d01418c082008417e2001777122083602000c020b20094110411420092802102006461b6a20023602002002450d010b2002200936021820062802102201044020022001360210200120023602180b20062802142201450d0020022001360214200120023602180b02402005410f4d04402006200520076a2201410372360204200120066a220120012802044101723602040c010b20062007410372360204200620076a22042005410172360204200420056a2005360200200541ff014d0440200541787141b0086a2101027f41880828020022024101200541037674220371450440418808200220037236020020010c010b20012802080b2102200120043602082002200436020c2004200136020c200420023602080c010b411f2102200541ffffff074d04402005412620054108766722016b7641017120014101746b413e6a21020b2004200236021c20044200370210200241027441b80a6a21010240024020084101200274220371450440418c08200320087236020020012004360200200420013602180c010b2005411920024101766b41002002411f471b742102200128020021010340200122032802044178712005460d022002411d76210120024101742102200320014104716a220828021022010d000b20082004360210200420033602180b2004200436020c200420043602080c010b20032802082201200436020c20032004360208200441003602182004200336020c200420013602080b200641086a21020c010b0240200a450d000240200328021c220141027441b80a6a220628020020034604402006200236020020020d01418c08200e417e200177713602000c020b200a41104114200a2802102003461b6a20023602002002450d010b2002200a36021820032802102201044020022001360210200120023602180b20032802142201450d0020022001360214200120023602180b02402005410f4d04402003200520076a2201410372360204200120036a220120012802044101723602040c010b20032007410372360204200320076a22062005410172360204200520066a200536020020090440200941787141b0086a2101419c082802002102027f41012009410376742208200471450440418808200420087236020020010c010b20012802080b2104200120023602082004200236020c2002200136020c200220043602080b419c08200636020041900820053602000b200341086a21020b200d41106a2400200c20022000200c100222006a200f201010021a200020116a41003a0000200b41106a240020000b1000230020006b4170712200240020000b0600200024000b040023000b0b0901004181080b020601"; @@ -44,14 +43,4 @@ module rooch_examples::wasm_execution { wasm::release_wasm_instance(wasm_instance); } - entry public fun run_inscribe_geneate() { - let bitseed_generator_wasm_bytes = x"0061736d010000000187011560027f7f0060027f7f017f60017f017f60017f0060037f7f7f017f60037f7f7f0060047f7f7f7f0060027f7e0060057f7f7f7f7f0060067f7f7f7f7f7f0060000060047f7f7f7f017f6000017f60027c7f017c60017f017e60027e7f017f60087f7f7f7f7f7f7f7f0060027f7c0060057f7f7f7f7f017f60047f7e7f7f017f60037f7e7f017e0289010416776173695f736e617073686f745f70726576696577310766645f7365656b001316776173695f736e617073686f745f70726576696577310866645f7772697465000b16776173695f736e617073686f745f70726576696577310866645f636c6f7365000216776173695f736e617073686f745f70726576696577310970726f635f65786974000303c501c3010305010200020a0e000501080300010103000b040404030200000400000003060401030b0002010c00010100000a020302000404040000020f0001010101010102060607010102010101020707030107000401040202000101010101010a020a0200010403000501010102011002020211030303000500000101020202030307030702040102010001050505060206050505040101020d0d01050212020504040100010004030001030302050001030209080606080904020104140402020202030c030405017001252505060101800280020608017f014190a1040b079a0109066d656d6f7279020011696e7363726962655f67656e6572617465006e0f696e7363726962655f76657269667900b10110696e64657865725f67656e657261746500bb010b5f696e697469616c697a650061195f5f696e6469726563745f66756e6374696f6e5f7461626c65010009737461636b5361766500c5010c737461636b526573746f726500c4010a737461636b416c6c6f6300c1010942010041010b2461bd0129a901c301a901ae0133c601bc0133b001af016233c001bf01be0173b201c201623381018101ba01b401b501b60133b901b801b7016233b3010a9fcb02c301130020002d000b10320440200028020010100b0b4f01017f230041106b220324002003200136020c20032002360208200341de0d36020420032000360200230041106b220024002000200336020c41801c41a512200310a101200041106a2400100a000b810101047f200021032001104a2102230041106b220424000240200241f0ffffff0749044002402002105804402003200210300c010b200441086a2002103b41016a102f200320042802082205103a2003200428020c103920032002101d200521030b200320012002101820026a4100101c200441106a24000c010b1031000b20000b1c0020002d000020002802081008200041086a20002d0000102820000b7400024002400240200145200041ff01712200410146714504402001452000410246710d012001452000410346710d022001452000410846710d030f0b41b00c41939c0141e70a1005000b41d90b41949c0141e70a1005000b41f50c41959c0141e70a1005000b41940b41969c0141e70a1005000b1e0041012000200041014d1b210002402000106422000d00100a000b20000b070041011003000b4602017e017f2000200028021041016a3602100240200028020022022000280204460440427f21010c010b200231000021012000200241016a3602000b2000200137030820010b4801017f230041106b22022400200220013a000f20002d000004402002410f6a200241106a10350b200028020422002002410f6a41012000280200280204110500200241106a24000bc10101037f20002d00004120714504400240200220002802102203047f20030520001080010d0120002802100b200028021422046b4b044020002001200220002802241104001a0c010b024002402002452000280250410048720d00200221030340200120036a220541016b2d0000410a470440200341016b22030d010c020b0b20002001200320002802241104002003490d02200220036b2102200028021421040c010b200121050b20042005200210371a2000200028021420026a3602140b0b0b9d0101087f230041d0006b2202240002402000290308427f522205450440200028021c2103200241c4006a41ae0f1006210920002802102100200241246a22044101200241186a41b10a100622072002410c6a2001100622011046200241306a220841ee00200020041045200341013a001420032d00150d01200810291a200410042001100420071004200910040b200241d0006a240020050f0b100a000b6901017f23004180026b2205240020044180c00471200220034c7245044020052001200220036b220341800220034180024922011b10551a2001450440034020002005418002100d20034180026b220341ff014b0d000b0b200020052003100d0b20054180026a24000bd90b01077f02402000450d00200041086b2203200041046b280200220141787122006a2105024020014101710d002001410271450d012003200328020022016b220341a41d280200490d01200020016a21000240024041a81d2802002003470440200328020c2102200141ff014d04402001410376210120032802082204200246044041941d41941d280200417e200177713602000c050b2004200236020c200220043602080c040b200328021821062002200347044020032802082201200236020c200220013602080c030b20032802142201047f200341146a0520032802102201450d02200341106a0b21040340200421072001220241146a2104200228021422010d00200241106a2104200228021022010d000b200741003602000c020b200528020422014103714103470d02419c1d200036020020052001417e7136020420032000410172360204200520003602000f0b410021020b2006450d000240200328021c220141027441c41f6a220428020020034604402004200236020020020d0141981d41981d280200417e200177713602000c020b20064110411420062802102003461b6a20023602002002450d010b2002200636021820032802102201044020022001360210200120023602180b20032802142201450d0020022001360214200120023602180b200320054f0d0020052802042201410171450d000240024002400240200141027145044041ac1d280200200546044041ac1d200336020041a01d41a01d28020020006a220036020020032000410172360204200341a81d280200470d06419c1d410036020041a81d41003602000f0b41a81d280200200546044041a81d2003360200419c1d419c1d28020020006a220036020020032000410172360204200020036a20003602000f0b200141787120006a2100200528020c2102200141ff014d04402001410376210120052802082204200246044041941d41941d280200417e200177713602000c050b2004200236020c200220043602080c040b200528021821062002200547044041a41d2802001a20052802082201200236020c200220013602080c030b20052802142201047f200541146a0520052802102201450d02200541106a0b21040340200421072001220241146a2104200228021422010d00200241106a2104200228021022010d000b200741003602000c020b20052001417e7136020420032000410172360204200020036a20003602000c030b410021020b2006450d000240200528021c220141027441c41f6a220428020020054604402004200236020020020d0141981d41981d280200417e200177713602000c020b20064110411420062802102005461b6a20023602002002450d010b2002200636021820052802102201044020022001360210200120023602180b20052802142201450d0020022001360214200120023602180b20032000410172360204200020036a2000360200200341a81d280200470d00419c1d20003602000f0b200041ff014d0440200041787141bc1d6a2101027f41941d2802002204410120004103767422007145044041941d200020047236020020010c010b20012802080b2100200120033602082000200336020c2003200136020c200320003602080f0b411f2102200041ffffff074d04402000412620004108766722016b7641017120014101746b413e6a21020b2003200236021c20034200370210200241027441c41f6a2107027f0240027f41981d2802002201410120027422047145044041981d2001200472360200411821022007210441080c010b2000411920024101766b41002002411f471b742102200728020021040340200422012802044178712000460d022002411d76210420024101742102200120044104716a41106a220728020022040d000b411821022001210441080b2100200322010c010b20012802082204200336020c41082102200141086a21074118210041000b210520072003360200200220036a20043602002003200136020c200020036a200536020041b41d41b41d28020041016b2200417f20001b3602000b0b4e02017f017e20012d00002001280208100820002d00002102200020012d00003a0000200120023a000020002903082103200020012903083703082001200337030820002d0000200028020810080b2701017f20002001280200200120012c000b220041004822021b2001280204200020021b10a8010b0d00200020012001104a10a8010b3c01027f2000280204210203402002200028020822014704402000200141106b2201360208200110071a0c010b0b200028020022000440200010100b0b8d0101037f20012802042102200028020021042000280204210303402003200446450440200241106b200341106b2203105221020c010b0b20012002360204200028020021032000200236020020012003360204200028020421022000200128020836020420012002360208200028020821022000200128020c3602082001200236020c200120012802043602000b4b0020002003360210410021032000410036020c200104402001107f21030b200020033602002000200320024104746a22023602082000200320014104746a36020c2000200236020420000b7101017f200245044020002802042001280204460f0b2000200146044041010f0b0240200028020422022d00002200452000200128020422012d0000220347720d00034020012d0001210320022d00012200450d01200141016a2101200241016a210220002003460d000b0b20002003460b11002001200120026a20001096011a20000b350020024180808080014f0440100a000b41ffffffff00200120006b220041037522012002200120024b1b200041f0ffffff074f1b0b1901017f20002802002201044020002001360204200110100b0b160020004100102a22002d00002000280208100820000b0900200020013a00000b0900200020013602040b4a01017f2000200149044020002001200210370f0b20020440200020026a2103200120026a21010340200341016b2203200141016b22012d00003a0000200241016b22020d000b0b20000b4801017f230041106b220224002002200136020c20002d000004402002410c6a200241106a10350b200028020422002002410c6a41042000280200280204110500200241106a24000b4801017f230041106b22022400200220013b010e20002d000004402002410e6a200241106a10350b200028020422002002410e6a41022000280200280204110500200241106a24000bc00201087f230041106b220424002004200136020c200141f0ffffff0749044002402000105920014f0d002004200028020420002d000b104d3602082004410c6a200441086a106f280200103b220120001059460d00230041106b22022400200028020420002d000b104d21050240027f200110582209044041012107200141016a2108200028020021032000210120050c010b200141016a2103027f200010592001490440200241086a2003102f20022802082101200228020c0c010b200241086a2003102f20022802082201450d02200228020c0b210820002d000b2206103221072000104e210320002802042006104d0b210620012003200641016a1018210120070440200310100b200945044020002008103920002005101d20002001103a0c010b2000200510300b200241106a24000b200441106a24000f0b1031000b2a01017f20002802002101200041003602002001044020002d00080440200141106a10750b200110100b0bac0201037f20032001360208200342003702002002200336020020002802002802002201044020002001360200200228020021030b2003200320002802042205463a000c03400240024020032005460d00200328020822012d000c0d002001200128020822022802002204460440024020022802042204450d0020042d000c0d000c030b20032001280200470440200110ad012001280208220128020821020b200141013a000c200241003a000c200210ac010c010b02402004450d0020042d000c0d000c020b20032001280200460440200110ac012001280208220128020821020b200141013a000c200241003a000c200210ad010b2000200028020841016a3602080f0b2004410c6a2106200141013a000c200220022005463a000c200641013a0000200221030c000b000b6301027f200041046a2104024020002802042203450440200421000c010b034020022003220041106a22031066044020002104200028020022030d010c020b200320021066450d01200041046a2104200028020422030d000b0b2001200036020020040ba805020a7f017e230041106b220424002000420037030020004200370308200020012d000022053a000020052001280208100802400240024002400240024002400240024002400240024020002d000041016b0e080102030405060708000b200028020821020c090b20012802082101410c1009220242003702042002200241046a2206360200200141046a210a2001280200210703402007200a460d08200741106a21082002280204210902400240027f024020062201200228020047044020012105024020092203044003402003220128020422030d000c020b000b034020052802082201280200200546210b20012105200b0d000b0b200141106a20081066450d010b20094504402004200636020c2006220521010c030b2004200136020c200141046a0c010b20022004410c6a200810240b22012802000d01200428020c21050b4130100921032004200636020420042003360200200341106a2008104b1a200341206a200741206a10251a200441013a00082002200520012004280200102320044100360200200410220b2007104421070c000b000b20012802082101410c100922024100360208200242003702002001280204220520012802002201460d06200520016b220641047522034180808080014f0d0820022003107f2203360204200220033602002002200320066a3602080340200120054645044020032001102541106a2103200141106a21010c010b0b200220033602040c060b2001280208107e21020c050b200020012d00082202ad3703080c050b20002001290308220c370308200ca721020c040b20002001290308220c370308200ca721020c030b20002001290308220c370308200ca721020c020b20012802082101412010092001107d21020b200020023602080b20002d000020021008200441106a240020000f0b100a000b3901027f20002802082101200028020421020340200120024704402000200141016b22013602080c010b0b200028020022000440200010100b0b3b002000200336021020002001047f200110090541000b22033602002000200220036a22023602082000200120036a36020c2000200236020420000bd90301047f230041206b22022400024020002802002203452001410146712001410847200141fe01714102477120037245720d00200141016b220441ff017141014d04402002410036021c20024200370214024020014102460440200241146a2201200328020420032802006b410475107a200028020022032802002003280204200110790c010b200241146a2003280208107a2000280200220141046a210320012802002101034020012003460d01200241146a200141206a10652001104421010c000b000b03402002280218220120022802144704402002200141106b10522103200241146a200228021841106b107802400240024020032d000041016b0e020001020b2002280208220141046a2105200128020021010340200120054604402002280208220128020410512001200141046a360200200142003702040c0305200241146a200141206a10652001104421010c010b000b000b200228020822012802002001280204200241146a1079200228020810770b200310071a0c010b0b200241146a10760b0240024002400240024020040e080001020505050503050b200028020028020410510c030b200028020010760c020b200028020010040c010b2000280200101a0b200028020010100b200241206a24000b1400200041d012360200200041086a10731a20000bd00100200020013a000002400240024002400240024002400240024002400240200141016b0e080001020405060703080b102b21010c080b410c100922014100360208200142003702000c070b410c100941c712100621010c060b41201009220141003a00182001420037031020014100360208200142003702000c050b200041003a0008200028020821010c050b20004200370308410021010c040b20004200370308410021010c030b20004200370308410021010c020b410021010b200020013602080b20002d00002001100820000b1b01017f410c1009220042003702042000200041046a36020020000b6200200020011056220028020022010440024002400240024020012d00000e03020001030b200020012802082802003602040f0b200020012802082802003602080f0b2000410136020c0f0b2000410036020c0f0b419c0c418ce60041850e1005000bd40101037f230041206b22022400200241046a20011006210120002d00002203047f200305200041013a00002000102b220336020820002d00002003100820002d00000b4101460440200028020822032002411c6a20011024220428020022004504404130100921002002200341046a36021420002001280208360218200020012902003702102001420037020020014100360208200041206a101b1a200241013a00182003200228021c20042000102320024100360210200241106a10220b20011004200241206a2400200041206a0f0b100a000b1700200141017441d0176a2201200141026a20001096010b1801017f20011009210220002001360204200020023602000b0d002000200141ff00713a000b0b05001063000b0b002000418001714107760b0600200010100b4901027f41f81b2802002201200041076a41787122026a2100024020024100200020014d1b45044020003f004110744d0d010b41901d4130360200417f0f0b41f81b200036020020010b3f01017f024020002001460d0003402000200141016b22014f0d0120002d00002102200020012d00003a0000200120023a0000200041016a21000c000b000b0b16002000104a2001200241ff01712002c04100481b6a0b3301017f20020440200021030340200320012d00003a0000200341016a2103200141016a2101200241016b22020d000b0b20000b310020024100480440100a000b41ffffffff07200120006b220041017422012002200120024b1b200041ffffffff034f1b0b100020002001418080808078723602080b0900200020013602000b24002000410b4f047f200041106a4170712200200041016b22002000410b461b05410a0b0b850102057f017e02402000428080808010540440200021070c010b0340200141016b22012000420a80220742f6017e20007ca74130723a0000200042ffffffff9f015621052007210020050d000b0b2007a7220204400340200141016b22012002410a6e220341f6016c20026a4130723a0000200241094b21062003210220060d000b0b20010b9b0201047f024002400240024020002d000b220210320440200028020422022000280208107141016b2203460d010c020b410a2103200210722202410a470d020b230041106b220224000240200341efffffff074704402000104e2105200241046a2204200341e6ffffff034d047f2002200341017436020c2002200341016a36020420042002410c6a106f280200103b41016a0541efffffff070b102f200228020421042003044020042005200310181a0b2003410a470440200510100b20002004103a200020022802081039200241106a24000c010b1031000b20002003101d200321020b200028020021032000200241016a101d0c010b2000200241016a1030200021030b200220036a22002001101c200041016a4100101c0bab0301027f230041106b22022400200028021c2103200241013a000f200341046a20032002410f6a10a60110a50102400240024002400240024002402001417f470440200328020841046b28020022032d0000200328020810a4012001490d052001450d02200241003602082002420037030041002103034020012003460d022000100b1a20002002105f450d04200028021c200210a701200041011048450d04024020022c000b4100480440200228020041003a0000200241003602040c010b200241003a000b200241003a00000b200341016a21030c000b000b200241003602082002420037030003402000100b42ff01510d0120002002105f450d03200028021c200210a701200041011048450d0320022c000b4100480440200228020041003a00002002410036020405200241003a000b200241003a00000b0c000b000b200210040b200028021c220028020420002802082201460d0341012103200141046b22012802002d00004101470d04200020013602080c010b20021004410021030b200241106a240020030f0b100a000b418f1041eb3541f80a1005000b41df1041ec3541f80a1005000bf60101027f230041106b22032400200028021c2102200341023a000f200241046a20022003410f6a10a60110a501024002400240024002402001417f46044003402000100b42ff01510d02410021022000410010480d000c030b000b200228020841046b28020022022d0000200228020810a4012001490d0241002102034020012002460d01200241016a21022000410110480d000b410021020c010b200028021c220028020420002802082201460d02200141046b22012802002d00004102470d0320002001360208410121020b200341106a240020020f0b100a000b418f10418136418b081005000b41a210418236418b081005000b7601037f230041106b2203240020034200370308027f02400340200241084704402000100b1a200041d20d100e450d02200341086a2002410773200220002d00141b6a20002903083c0000200241016a21020c010b0b2001200329030837030041010c010b200241074b0b2104200341106a240020040b7601037f230041106b220324002003410036020c027f02400340200241044704402000100b1a200041d20d100e450d022003410c6a2002410373200220002d00141b6a20002903083c0000200241016a21020c010b0b2001200328020c36020041010c010b200241034b0b2104200341106a240020040b7101037f230041106b22032400200341003b010e027f02400340200241024704402000100b1a200041d20d100e450d022003410e6a200220002d0014736a20002903083c0000200241016a21020c010b0b200120032f010e3b010041010c010b200241014b0b2104200341106a240020040b3e01027f4101210202400340200204402000100b1a200041d20d100e450d0220002d00082103410021020c010b0b200120033a00000b2002417f734101710b3601017f024020002802042201044003402001220028020022010d000c020b000b0340200020002802082200280200470d000b0b20000be50401087f230041d0006b22042400200441246a41ba0d10062109230041206b220624002006410c6a200641156a2207200641206a22082001109201200441406b22052007200628020c109301200824002004410036023820044200370330200441306a2206200428024420042c004b220720074100481b200928020420092c000b220720074100481b6a41136a1021200641e20f1013200910122206412e103d200620051012419f121013210620051004024020020440230041206b220524002005410c6a200541156a2207200541206a220820021092012004410c6a220a2007200528020c109301200824002004410036022020044200370318200441186a2205419512200428021020042d00171036102120054195121013200a10121a0c010b200441186a41c71210061a0b200441c712100621052004410036024820044200370340200441406b2207200328020420032c000b220820084100481b200528020420052c000b220820084100481b6a200428021c20042c0023220820084100481b6a200628020420062c000b220820084100481b6a410d6a102120072006101241c60d1013200441186a2207101241a2121013200510122003101221032005100420071004200204402004410c6a10040b20061004200910042003280200210b20032c000b210520002001360204200041d012360200200041086a220641e81b360200200641c41a360200200b200320054100481b2205104a2201410d6a100922094100360208200920013602042009200136020020062009410c6a2005200141016a103736020420002002360210200041e41236020020031004200441d0006a24000bb60101037f230041106b22052400200541046a41f91110062106200141016b220141054f044041c10e41b9de0041e00e1005000b2006200141027441a4136a2802001013210120004100360208200042003702002000200328020420032c000b220420044100481b41a212200228020420022d000b10366a200128020420012c000b220420044100481b6a41016a102120002001101222004120103d20002003101241a2121013200210121a20011004200541106a24000bb80101047f230041106b22032400200341003a000e200341003b010c20032001a741ff0171360200230041106b220424002004200336020c230041a0016b22022400200241023602980120022003410c6a2205360294012002410041900110552202417f36024c200241023602242002417f36025020022002419f016a36022c200220024194016a360254200541003a00002002418e0f200310a101200241a0016a2400200441106a24002000200510061a200341106a24000b961403097f017c037e230041e0006b2202240002400240024002400240027e200104402000100b0c010b20002903080b42017c220c42fc01560d000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200ca741016b0efc01010101010101010101010101010101010101010101010101020304051f1f1f1f0606060606060606060606060606060606060606060606060708090a1f1f1f1f0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b1f1f1f0b0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c1f1f1f0c0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0e0f10111f1f1f12131313131313131313131313131313131313131313131313141516171f1f1f181f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f191a1b1f1f1c1d1e000b200041bb0e100e21010c200b200028021c200029030810500c1e0b200241003a00282000200241286a10432201450d1e200028021c200231002810500c1e0b200241003b01282000200241286a10422201450d1d200028021c200233012810500c1d0b200241003602282000200241286a10412201450d1c200028021c200235022810500c1c0b200242003703282000200241286a10402201450d1b200028021c200229032810500c1b0b200028021c4280808080808080801f20002903084238867d423887104f0c190b200241003a00282000200241286a10432201450d19200028021c2002310028427f85104f0c190b200241003b01282000200241286a10422201450d18200028021c2002330128427f85104f0c180b200241003602282000200241286a10412201450d17200028021c2002350228427f85104f0c170b200242003703282000200241286a10402201450d16200028021c2002290328427f85104f0c160b200241003a004020024200370338200241003602302002420037032802402000200241286a220310ab012201450d00200028021c220028020420002802082204460440200241c8006a200310602103200028020020031011200310071a0c010b02400240200441046b28020022032d000041016b0e0201001a0b200328020822002802042203200041086a2204280200220549044020002003200241286a106041106a3602040c020b200241c8006a200028020022062005200320066b41047541016a1019200028020420002802006b410475200410162203280208200241286a10601a2003200328020841106a360208200020031015200310140c010b2000280210450d17200241c8006a200241286a10602103200028021020031011200310071a0b200241286a101a0c150b200241003602502002420037034802402000200241c8006a2203105f2201450d00200028021c220028020420002802082204460440200241286a200310492103200028020020031011200310071a0c010b02400240200441046b28020022032d000041016b0e020100190b200328020822002802042203200041086a2204280200220549044020002003200241c8006a104941106a3602040c020b200241286a200028020022062005200320066b41047541016a1019200028020420002802006b410475200410162203280208200241c8006a10491a2003200328020841106a360208200020031015200310140c010b2000280210450d16200241286a200241c8006a10492103200028021020031011200310071a0b200241c8006a10040c140b20002000280208411f71103f21010c130b41002101200241003a00282000200241286a1043450d12200020022d0028103f21010c120b41002101200241003b01282000200241286a1042450d11200020022f0128103f21010c110b41002101200241003602282000200241286a1041450d1020002002280228103f21010c100b20024200370328410021012000200241286a1040450d0f20002002280228103f21010c0f0b2000417f103f21010c0e0b20002000280208411f71103e21010c0d0b41002101200241003a00282000200241286a1043450d0c200020022d0028103e21010c0c0b41002101200241003b01282000200241286a1042450d0b200020022f0128103e21010c0b0b41002101200241003602282000200241286a1041450d0a20002002280228103e21010c0a0b20024200370328410021012000200241286a1040450d0920002002280228103e21010c090b2000417f103e21010c080b200028021c410010aa010c060b41012101200028021c410110aa010c060b200028021c220028020420002802082201460440200241286a101b2101200028020020011011200110071a0c050b02400240200141046b28020022012d000041016b0e020100090b200128020822002802042201200041086a2203280200220449044020002001101b41106a3602040c060b200241286a200028020022052004200120056b41047541016a1019200028020420002802006b410475200310162201280208101b1a2001200128020841106a360208200020011015200110140c050b2000280210450d06200241286a101b2101200028021020011011200110071a0c040b410021012000100b210c200041d20d100e450d042000100b210e200041d20d100e450d04200ea741ff0171200ca7220341087441800671722101027c02402003410276411f712204411f47044020040d012001b84168109a010c020b44000000000000f87f44000000000000f07f20011b0c010b200141800872b8200441196b109a010b210b200028021c2108200241286a41c712100621012008200b9a200b2003418001711b1074200110040c030b20024100360228024002400340200341044704402000100b1a200041d20d100e450d02200241286a2003410373200320002d00141b6a20002903083c0000200341016a21030c010b0b20022a0228bb210b0c010b4100210120034104490d040b200028021c2109200241286a41c712100621012009200b1074200110040c020b20024200370328024002400340200341084704402000100b1a200041d20d100e450d02200241286a2003410773200320002d00141b6a20002903083c0000200341016a21030c010b0b20022b0328210b0c010b4100210120034108490d030b200028021c210a200241286a41c71210062101200a200b1074200110040c010b200241c8006a220120002903081047200028021c210320002802102105200241106a2200420037020020004100360208200041950a200128020420012d000b10361021200041950a1013200110121a2002411c6a220441012000200241046a41bb0e100622061046200241286a220741f000200520041045200341013a001420032d0015450440200710291a20041004200610042000100420011004410021010c020b100a000b410121010b200241e0006a240020010f0b41d80a41b53641b40e1005000b41bf1041ac3641b40e1005000b2400200042003703002000420037030820002001107b20002d00002000280208100820000b7a01037f0240024020002201410371450d0020012d000045044041000f0b0340200141016a2201410371450d0120012d00000d000b0c010b03402001220241046a210120022802002203417f73200341818284086b7141808182847871450d000b03402002220141016a210220012d00000d000b0b200120006b0baa0101047f20012c000b41004e0440200020012902003702002000200128020836020820000f0b200021032001280200210520012802042102230041106b220424000240024002402002105804402000200210300c010b200241f0ffffff074f0d01200441086a2002103b41016a102f200320042802082201103a2003200428020c103920032002101d200121030b20032005200241016a10181a200441106a24000c010b1031000b20000b11002000200141306a3a0000200041016a0b100020011032047f200005200110720b0b11002000280200200020002d000b10321b0ba00201057f230041206b220324002003200137030002400240200028020822022000280204460440200341086a2003105c2102200028020020021011200210071a0c010b024002400240200241046b28020022022d000041016b0e020201000b41bf1041ac3641b40e1005000b200228020822002802042202200041086a22042802002205490440200020022003105c41106a3602040c020b200341086a200028020022062005200220066b41047541016a1019200028020420002802006b4104752004101622022802082003105c1a2002200228020841106a360208200020021015200210140c010b2000280210450d01200341086a2003105c2102200028021020021011200210071a0b200341206a24000f0b41d80a41b53641b40e1005000ba00201057f230041206b220324002003200137030002400240200028020822022000280204460440200341086a2003105d2102200028020020021011200210071a0c010b024002400240200241046b28020022022d000041016b0e020201000b41bf1041ac3641b40e1005000b200228020822002802042202200041086a22042802002205490440200020022003105d41106a3602040c020b200341086a200028020022062005200220066b41047541016a1019200028020420002802006b4104752004101622022802082003105d1a2002200228020841106a360208200020021015200210140c010b2000280210450d01200341086a2003105d2102200028021020021011200210071a0b200341206a24000f0b41d80a41b53641b40e1005000b2000200004402000280200105120002802041051200041106a1075200010100b0b3e00200020012903003703002000200129030837030820012d00002001280208100820014200370308200141003a000020002d00002000280208100820000b4801017f230041106b220224002002200137030820002d00000440200241086a200241106a10350b20002802042200200241086a41082000280200280204110500200241106a24000bda0f04047f027e027c017d230041106b22042400024002400240024002400240024002400240024020012d00000e09080705040001020306090b2000280204220041f50141f40120012d00081b20002802002802001100000c080b2001290308220642005904402006421758044020002006a741ff0171100c0c090b200642ff015804402000280204220241182002280200280200110000200020012d0008100c0c090b200642ffff035804402000280204220241192002280200280200110000200020012f010810200c090b200028020422022802002802002103200642ffffffff0f5804402002411a200311000020002001280208101f0c090b2002411b20031100002000200129030810530c080b200642685a04402000411f2006a76b41ff0171100c0c080b2006427f852107200642807e5a0440200028020422014138200128020028020011000020002007a741ff0171100c0c080b20064280807c5a0440200028020422014139200128020028020011000020002007a741ffff037110200c080b20002802042201280200280200210220064280808080705a04402001413a200211000020002007a7101f0c080b2001413b20021100002000200710530c070b20012903082206421758044020002006a741ff0171100c0c070b200642ff015804402000280204220241182002280200280200110000200020012d0008100c0c070b200642ffff035804402000280204220241192002280200280200110000200020012f010810200c070b200028020422022802002802002103200642ffffffff0f5804402002411a200311000020002001280208101f0c070b2002411b20031100002000200129030810530c060b20012b0308220820086204402000280204220141f90120012802002802001100002000280204220141fe00200128020028020011000020002802042200410020002802002802001100000c060b200899220944000000000000f07f6104402000280204220241f90120022802002802001100002000280204220241fc0041fc0120012b0308440000000000000000641b200228020028020011000020002802042200410020002802002802001100000c060b0240200944000000e0ffffef4765450d0020082008b6220abb620d002000280204220141fa0120012802002802001100002004200a38020020002d000004402004200441046a10350b200028020422002004410420002802002802041105000c060b2000280204220141fb0120012802002802001100002004200839030020002d000004402004200441086a10350b200028020422002004410820002802002802041105000c050b02402001280208220228020420022c000b220220024100481b220241174d04402000200241e0007241ff0171100c0c010b200241ff014d04402000280204220341f80020032802002802001100002000200241ff0171100c0c010b200028020422032802002802002105200241ffff034d0440200341f90020051100002000200241ffff037110200c010b200341fa00200511000020002002101f0b2000280204220220012802082200280200200020002c000b220141004822031b2000280204200120031b20022802002802041105000c040b02402001280208220228020420022802006b410475220241174d0440200020024180017241ff0171100c0c010b200241ff014d04402000280204220341980120032802002802001100002000200241ff0171100c0c010b200028020422032802002802002105200241ffff034d0440200341990120051100002000200241ffff037110200c010b2003419a01200511000020002002101f0b20012802082201280204210220012802002101034020012002460d04200020011054200141106a21010c000b000b0240200128020822022d0018450d002002290310220642ff01580440200041d801100c2000200128020822022d0010417f20022d00181b41ff0171100c0c010b200642ffff03580440200041d901100c2000200128020822022f0110417f20022d00181b41ffff037110200c010b200642ffffffff0f580440200041da01100c200020012802082202280210417f20022d00181b101f0c010b200041db01100c200020012802082202290310427f20022d00181b10530b02402001280208220228020420022802006b220241174d04402000200241c0007241ff0171100c0c010b200241ff014d04402000280204220341d80020032802002802001100002000200241ff0171100c0c010b200028020422032802002802002105200241ffff034d0440200341d90020051100002000200241ffff037110200c010b200341da00200511000020002002101f0b200028020422002001280208280200200220002802002802041105000c020b02402001280208280208220241174d04402000200241a0017241ff0171100c0c010b200241ff014d04402000280204220341b80120032802002802001100002000200241ff0171100c0c010b200028020422032802002802002105200241ffff034d0440200341b90120051100002000200241ffff037110200c010b200341ba01200511000020002002101f0b2001280208220141046a210220012802002101034020012002460d0220044200370308200442003703002004200141106a107b20042d000020042802081008200020041054200410071a2000200141206a10542001104421010c000b000b2000280204220041f60120002802002802001100000b200441106a24000b2901017f20020440200021030340200320013a0000200341016a2103200241016b22020d000b0b20000b5d01017f200041808080807836020c200042003702042000200136020020010440200041046a210202400240024020012d000041016b0e020100020b200041086a21020b200241003602000b20000f0b419c0c41abe50041930e1005000bc70101057f200028020021052002210320012802042206210403402003200546450440200441016b2204200341016b22032d00003a00000c010b0b200120043602042000280204220720026b21032001280208210520022007470440200520022003101e1a200128020421040b2001200320056a360208200028020021022000200436020020012002360204200028020421022000200128020836020420012002360208200028020821022000200128020c3602082001200236020c2001200128020436020020060b07002000410b490b1f01017f410a210120002d000b1032047f2000280208107141016b05410a0b0b8d0101047f230041206b2203240002402000280204220220002802082204490440200220012d00003a00002000200241016a3602040c010b2003410c6a200028020022052004200220056b41016a1038200028020420002802006b200041086a1027220228020820012d00003a00002002200228020841016a360208200020021069200210260b200341206a24000b4a02017f017c20004200370300200041086a2202420037030020012b0300210320024100102820022003390300200041073a000041072003bda7100820002d00002002280200100820000b280020004200370300200042003703082000200129030010830120002d00002000280208100820000b280020004200370300200042003703082000200129030010850120002d00002000280208100820000b4701017f20004200370300200041086a2202420037030020012d0000210120024100102820022001ad370300200041043a000041042001100820002d00002002280200100820000bf30402077f027e230041d0006b220224000240200041a90e100e4504400c010b02400240024002402000290308220942e0007d220a421f560d00024002400240024002400240200aa741186b0e080102030406060605000b20002009a7411f71200110a30121040c090b200241003a00302000200241306a1043450d0820022d003021050340200341ff017120054f22040d092000100b1a200041a90e100e450d09200120002c0008103d200341016a21030c000b000b200241003b01302000200241306a1042450d0720022f013021050340200341ffff037120054f22040d082000100b1a200041a90e100e450d08200120002c0008103d200341016a21030c000b000b200241003602302000200241306a1041450d0620002002280230200110a30121040c060b42002109200242003703302000200241306a1040450d052002290330210a03402009200a510440200a21090c060b2000100b1a200041a90e100e450d05200120002c0008103d200942017c21090c000b000b03402000100b42ff01510440410121040c060b20024100360238200242003703302000200241306a2203105f450d022001200310121a200310040c000b000b200241c4006a220620091047200028021c2101200028021021002002410036022020024200370318200241186a220341db08200228024820022d004f10361021200241246a22074101200341db0810132006101222032002410c6a41a90e100622051046200241306a220841f100200020071045200141013a001420012d00150d01200810291a200710042005100420031004200610040c030b200241306a10040c020b100a000b2009200a5a21040b200241d0006a240020040ba50101037f230041206b2204240020004200370300200041086a22034200370300200341001028200041083a000020042001107d2101412010092202200128020036020020022001280204360204200220012802083602082001410036020820014200370300200220012d00183a001820022001290310370310200320023602002001101a20002d00002003280200100820002d000020032802001008200441206a240020000b02000b040020000b0500100a000bd727010c7f230041106b220a24000240024002400240024002400240024002400240200041f4014d044041941d280200220441102000410b6a41f803712000410b491b22064103762200762201410371044002402001417f7341017120006a2202410374220141bc1d6a2200200141c41d6a2802002201280208220546044041941d2004417e200277713602000c010b2005200036020c200020053602080b200141086a2100200120024103742202410372360204200120026a220120012802044101723602040c0b0b2006419c1d28020022084d0d0120010440024041022000742202410020026b72200120007471682201410374220041bc1d6a2202200041c41d6a2802002200280208220546044041941d2004417e2001777122043602000c010b2005200236020c200220053602080b20002006410372360204200020066a22072001410374220120066b2205410172360204200020016a200536020020080440200841787141bc1d6a210141a81d2802002102027f2004410120084103767422037145044041941d200320047236020020010c010b20012802080b2103200120023602082003200236020c2002200136020c200220033602080b200041086a210041a81d2007360200419c1d20053602000c0b0b41981d280200220b450d01200b6841027441c41f6a280200220228020441787120066b210320022101034002402001280210220045044020012802142200450d010b200028020441787120066b22012003200120034922011b21032000200220011b2102200021010c010b0b200228021821092002200228020c220047044041a41d2802001a20022802082201200036020c200020013602080c0a0b20022802142201047f200241146a0520022802102201450d03200241106a0b21050340200521072001220041146a2105200028021422010d00200041106a2105200028021022010d000b200741003602000c090b417f2106200041bf7f4b0d002000410b6a2200417871210641981d2802002207450d00410020066b2103024002400240027f41002006418002490d001a411f200641ffffff074b0d001a2006412620004108766722006b7641017120004101746b413e6a0b220841027441c41f6a2802002201450440410021000c010b410021002006411920084101766b41002008411f471b74210203400240200128020441787120066b220420034f0d0020012105200422030d0041002103200121000c030b200020012802142204200420012002411d764104716a2802102201461b200020041b21002002410174210220010d000b0b20002005724504404100210541022008742200410020006b722007712200450d0320006841027441c41f6a28020021000b2000450d010b0340200028020441787120066b220220034921012002200320011b21032000200520011b210520002802102201047f20010520002802140b22000d000b0b2005450d002003419c1d28020020066b4f0d00200528021821082005200528020c220047044041a41d2802001a20052802082201200036020c200020013602080c080b20052802142201047f200541146a0520052802102201450d03200541106a0b21020340200221042001220041146a2102200028021422010d00200041106a2102200028021022010d000b200441003602000c070b2006419c1d28020022054d044041a81d28020021000240200520066b220141104f0440200020066a22022001410172360204200020056a2001360200200020064103723602040c010b20002005410372360204200020056a2201200128020441017236020441002102410021010b419c1d200136020041a81d2002360200200041086a21000c090b200641a01d280200220249044041a01d200220066b220136020041ac1d41ac1d280200220020066a22023602002002200141017236020420002006410372360204200041086a21000c090b410021002006412f6a2203027f41ec20280200044041f4202802000c010b41f820427f37020041f0204280a0808080800437020041ec20200a410c6a41707141d8aad5aa0573360200418021410036020041d02041003602004180200b22016a2204410020016b220771220120064d0d0841cc202802002205044041c420280200220820016a220920084d2005200949720d090b024041d0202d0000410471450440024002400240024041ac1d2802002205044041d420210003402005200028020022084f0440200820002802046a20054b0d030b200028020822000d000b0b410010342202417f460d032001210441f020280200220041016b22052002710440200120026b200220056a410020006b716a21040b200420064d0d0341cc202802002200044041c420280200220520046a220720054d2000200749720d040b2004103422002002470d010c050b200420026b200771220410342202200028020020002802046a460d01200221000b2000417f460d01200641306a20044d0440200021020c040b41f4202802002202200320046b6a410020026b7122021034417f460d01200220046a2104200021020c030b2002417f470d020b41d02041d0202802004104723602000b200110342202417f46410010342200417f4672200020024d720d05200020026b2204200641286a4d0d050b41c42041c42028020020046a220036020041c820280200200049044041c82020003602000b024041ac1d2802002203044041d42021000340200220002802002201200028020422056a460d02200028020822000d000b0c040b41a41d28020022004100200020024d1b45044041a41d20023602000b4100210041d820200436020041d420200236020041b41d417f36020041b81d41ec2028020036020041e020410036020003402000410374220141c41d6a200141bc1d6a2205360200200141c81d6a2005360200200041016a22004120470d000b41a01d200441286b2200417820026b41077122016b220536020041ac1d200120026a220136020020012005410172360204200020026a412836020441b01d41fc202802003602000c040b200220034d200120034b720d02200028020c4108710d022000200420056a36020441ac1d2003417820036b41077122006a220136020041a01d41a01d28020020046a220220006b220036020020012000410172360204200220036a412836020441b01d41fc202802003602000c030b410021000c060b410021000c040b41a41d28020020024b044041a41d20023602000b200220046a210141d42021000240034020012000280200470440200028020822000d010c020b0b20002d000c410871450d030b41d4202100034002402003200028020022014f0440200120002802046a220520034b0d010b200028020821000c010b0b41a01d200441286b2200417820026b41077122016b220736020041ac1d200120026a220136020020012007410172360204200020026a412836020441b01d41fc2028020036020020032005412720056b4107716a412f6b22002000200341106a491b2201411b360204200141dc20290200370210200141d42029020037020841dc20200141086a36020041d820200436020041d420200236020041e0204100360200200141186a2100034020004107360204200041086a210c200041046a2100200c2005490d000b20012003460d0020012001280204417e713602042003200120036b220241017236020420012002360200027f200241ff014d0440200241787141bc1d6a2100027f41941d2802002201410120024103767422027145044041941d200120027236020020000c010b20002802080b2101200020033602082001200336020c410c210241080c010b411f2100200241ffffff074d04402002412620024108766722006b7641017120004101746b413e6a21000b2003200036021c20034200370210200041027441c41f6a21010240024041981d2802002205410120007422047145044041981d2004200572360200200120033602000c010b2002411920004101766b41002000411f471b742100200128020021050340200522012802044178712002460d022000411d76210520004101742100200120054104716a220428021022050d000b200420033602100b2003200136021841082102200322012100410c0c010b20012802082200200336020c20012003360208200320003602084100210041182102410c0b20036a2001360200200220036a20003602000b41a01d280200220020064d0d0041a01d200020066b220136020041ac1d41ac1d280200220020066a22023602002002200141017236020420002006410372360204200041086a21000c040b41901d4130360200410021000c030b200020023602002000200028020420046a3602042002417820026b4107716a220820064103723602042001417820016b4107716a2204200620086a22036b2107024041ac1d280200200446044041ac1d200336020041a01d41a01d28020020076a2200360200200320004101723602040c010b41a81d280200200446044041a81d2003360200419c1d419c1d28020020076a220036020020032000410172360204200020036a20003602000c010b20042802042200410371410146044020004178712109200428020c21020240200041ff014d044020042802082201200246044041941d41941d280200417e200041037677713602000c020b2001200236020c200220013602080c010b2004280218210602402002200447044041a41d2802001a20042802082200200236020c200220003602080c010b024020042802142200047f200441146a0520042802102200450d01200441106a0b21010340200121052000220241146a2101200028021422000d00200241106a2101200228021022000d000b200541003602000c010b410021020b2006450d000240200428021c220041027441c41f6a220128020020044604402001200236020020020d0141981d41981d280200417e200077713602000c020b20064110411420062802102004461b6a20023602002002450d010b2002200636021820042802102200044020022000360210200020023602180b20042802142200450d0020022000360214200020023602180b200720096a2107200420096a220428020421000b20042000417e7136020420032007410172360204200320076a2007360200200741ff014d0440200741787141bc1d6a2100027f41941d2802002201410120074103767422027145044041941d200120027236020020000c010b20002802080b2101200020033602082001200336020c2003200036020c200320013602080c010b411f2102200741ffffff074d04402007412620074108766722006b7641017120004101746b413e6a21020b2003200236021c20034200370210200241027441c41f6a21000240024041981d2802002201410120027422057145044041981d2001200572360200200020033602000c010b2007411920024101766b41002002411f471b742102200028020021010340200122002802044178712007460d022002411d76210120024101742102200020014104716a220528021022010d000b200520033602100b200320003602182003200336020c200320033602080c010b20002802082201200336020c20002003360208200341003602182003200036020c200320013602080b200841086a21000c020b02402008450d000240200528021c220141027441c41f6a220228020020054604402002200036020020000d0141981d2007417e2001777122073602000c020b20084110411420082802102005461b6a20003602002000450d010b2000200836021820052802102201044020002001360210200120003602180b20052802142201450d0020002001360214200120003602180b02402003410f4d04402005200320066a2200410372360204200020056a220020002802044101723602040c010b20052006410372360204200520066a22042003410172360204200320046a2003360200200341ff014d0440200341787141bc1d6a2100027f41941d2802002201410120034103767422027145044041941d200120027236020020000c010b20002802080b2101200020043602082001200436020c2004200036020c200420013602080c010b411f2100200341ffffff074d04402003412620034108766722006b7641017120004101746b413e6a21000b2004200036021c20044200370210200041027441c41f6a2101024002402007410120007422027145044041981d200220077236020020012004360200200420013602180c010b2003411920004101766b41002000411f471b742100200128020021010340200122022802044178712003460d022000411d76210120004101742100200220014104716a220728021022010d000b20072004360210200420023602180b2004200436020c200420043602080c010b20022802082200200436020c20022004360208200441003602182004200236020c200420003602080b200541086a21000c010b02402009450d000240200228021c220141027441c41f6a220528020020024604402005200036020020000d0141981d200b417e200177713602000c020b20094110411420092802102002461b6a20003602002000450d010b2000200936021820022802102201044020002001360210200120003602180b20022802142201450d0020002001360214200120003602180b02402003410f4d04402002200320066a2200410372360204200020026a220020002802044101723602040c010b20022006410372360204200220066a22052003410172360204200320056a200336020020080440200841787141bc1d6a210041a81d2802002101027f4101200841037674220720047145044041941d200420077236020020000c010b20002802080b2104200020013602082004200136020c2001200036020c200120043602080b41a81d2005360200419c1d20033602000b200241086a21000b200a41106a240020000b8a0101047f230041206b2203240002402000280204220220002802082204490440200020022001105241106a3602040c010b2003410c6a200028020022052004200220056b41047541016a1019200028020420002802006b410475200041086a10162202280208200110521a2002200228020841106a360208200020021015200210140b200341206a24000b5901047f2000280200200020002c000b220241004822031b2001280200200120012c000b220441004822051b2001280204200420051b22012000280204200220031b2200200020014b1b10672202410048200020014920021b0b4301037f02402002450d00034020002d0000220420012d00002205460440200141016a2101200041016a2100200241016b22020d010c020b0b200420056b21030b20030b5701017f20002802042200044020002000280204220141016b3602042001450440200020002802002802081103000240200041086a220128020004402001109901417f470d010b200020002802002802101103000b0b0b0b910101037f20012802042102200028020021042000280204210303402003200446450440200241016b2202200341016b22032d00003a00000c010b0b20012002360204200028020021032000200236020020012003360204200028020421022000200128020836020420012002360208200028020821022000200128020c3602082001200236020c200120012802043602000b830201037f200041ff017141034604402001200247044020012c000b210020022c000b41004e0440200041004e044020022001290200370200200220012802083602080f0b20012802002103024020012802042200410a4d0440200220001030200220032000101820006a4100101c0c010b2002410a2000410a6b20022d000b10722201410020012000200310700b0f0b20012802002001200041004822041b21032001280204200020041b2100024020002002280208107122014904402002280200210520022000101d200520032000101820006a4100101c0c010b2002200141016b200020016b41016a20022802042201410020012000200310700b0b0f0b100a000b1b002000200141c0843d6e2200102e200041c0fb426c20016a106c0b1b00200020014190ce006e2200102e200041f0b17f6c20016a106d0b19002000200141e4006e2200102e2000419c7f6c20016a102e0bfc1b030d7f017c017e23004180026b2201240020001091012102200141003602ac01200142003702a40120014190016a2203200241004a047f200041046a21052002200141e8016a41004100200210384100200141ac016a1027220228020822006a2104034020002004470440200020052d00003a0000200541016a2105200041016a21000c010b0b20022004360208200141a4016a2002410010571a2002102620012802a801210520012802a4010541000b2005108d0120014180016a101b21082001410036027820014200370370200341fd0e102d22002d00002000280208200141f0006a106a2001410036026820014200370360200341a60a102d22002d00002000280208200141e0006a106a2001410036025c200142003702540240024002400240200341830b102d22002d00004102470d002001410036024c20014200370244200141cc006a210c41022000280208108c012202044020024100480d01200141c4006a200141e8016a20024100200c102722021069200210260b200141c0016a2000105622042802002202450d030240024002400240024020022d00000e03020001030b200420022802082802003602040c030b200420022802082802003602080c020b2004410136020c0c010b2004410036020c0b200141b0016a2000105622062802002200450d02024002400240024020002d000041016b0e020001020b2006200028020841046a3602040c020b200620002802082802043602080c010b2006410136020c0b200441046a210a20012802482103034020042802002000470d01024002400240024002402000044002400240024002400240024020002d0000220541016b0e020104000b200428020c200628020c460d0420050e030c0108020b200a2802002006280204460d030b200a2802002202200028020841046a460d04200241206a21020c070b200428020c0d090c070b20042802082006280208470d040b2001200128024c36025c200120012802482200360258200120012802442202360254200142003702442001410036024c200141c4006a101a200141d0016a20022000108d01200128026420012c006b220420044100481b2203200128027420012c007b220620064100481b22056a220041f0ffffff074f0d0702402000410a4d0440200141003602f001200142003703e801200120003a00f301200141e8016a21020c010b2000410f7241016a220710092102200120003602ec01200120023602e80120012007418080808078723602f0010b2005044020022001280270200141f0006a20064100481b2005101e1a0b200220056a21022003044020022001280260200141e0006a20044100481b2003101e1a0b41002100200220036a41003a000020012802ec0120012c00f3012202200241004822021b210320012802e801200141e8016a20021b210541c5bbf2887821020340200020034704402002200020056a2d00007341938380086c2102200041016a21000c010b0b200141e8016a1004024020012d00d00122004102470d0020012802d80122032802002003280204462000410247720d00200141c0016a200141d0016a102c0340200141e8016a2200200141d0016a108b01200141c0016a22032000108a01450d010240200141b0016a2003108901102522052d00004101470d00200141c4006a2005102c0340200141e8016a22002005108b01200141c4006a22032000108a01450d01200141306a2003108901102522032d0000410146044020012802442200450d0720002d00004101470d0c200141246a200128024841106a104b21040240200341820f108801450d00200341c70e108801450d00200341c70e102d2100200141003602202001420037031820002d00002000280208200141186a2200106a0240200128021c20012c0023220620064100481b4105470d00200041da0e41051087010d00200141086a200341820f102d1025220741810e102d108601210a20022007419508102d108601200a6b41016a70210b0240024020082d00000e020001100b200841013a00002008102b220036020820082d0000200010080b200828020821004130100921062001200041046a3602ec01200120063602e801200641106a41fa0e10061a200641206a200141e0006a10491a200141013a00f0012000200141fc016a20012802e80141106a10242206280200450440200020012802fc01200620012802e8011023200141003602e8010b200141e8016a2200102220002008102c0240024020082d00000e020001100b200841013a00002008102b220036020820082d0000200010080b20082802082206200141fc016a20041024220c2802004504404130100921002001200641046a3602ec01200120003602e801200041106a2004104b1a2000420037032820004200370320200041206a200a200b6aad10850120002d002020002802281008200141013a00f001200620012802fc01200c20012802e8011023200141003602e801200141e8016a10220b200141e8016a2008102c200710071a0b200141186a10040b200410040b200310071a200141c4006a1084010c000b000b200510071a200141c0016a1084010c000b000b200141c0016a4101102a210502400240200141b0016a101b22002d00000e020001090b200041013a00002000102b220236020820002d0000200210080b200028020821034130100921022001200341046a3602ec01200120023602e801200241106a41c90a100621042002420037032820024200370320200241206a420110830120022d002020022802281008200141013a00f0012003200141c4006a20041024220428020045044020032001280244200420021023200141003602e8010b200141e8016a2202102220022000102c0240024020002d00000e020001090b200041013a00002000102b220236020820002d0000200210080b200028020821034130100921022001200341046a3602ec01200120023602e801200241106a41890b10062104200241206a200810251a200141013a00f0012003200141c4006a20041024220428020045044020032001280244200420021023200141003602e8010b200141e8016a2202102220022000102c0240024020002d00000e020001090b200041013a00002000102b220236020820002d0000200210080b200028020821034130100921022001200341046a3602ec01200120023602e801200241106a41d00a10062104200241206a200510251a200141013a00f0012003200141c4006a20041024220428020045044020032001280244200420021023200141003602e8010b200141e8016a2203102220032000102c2001410036024c2001420037024441141009220241941336020c200241f812360200200242003702042002200141c4006a22063602102001200236020c20012002410c6a22043602082002200228020441016a360204200120023602f001200120043602ec01200141013a00e80120014200370330200141306a1068200320001054200141ec016a1068200141086a10682001280244210320012802482102410410642207200220036b220241187420024180fe03714108747220024108764180fe037120024118767272360000200241046a106422042007280000360000200441046a2003200210371a2006101a200010071a200510071a200141d0016a10071a200141d4006a101a200141e0006a1004200141f0006a1004200810071a20014190016a10071a200141a4016a101a20014180026a240020040f0b419c0c41a2e80041bc0f1005000b41ba1141e5e60041fe0f1005000b419c0c4199ea004187081005000b200428020822022000280208280204470d0041fd1041ebe60041fe0f1005000b20022d00002105200221000b027f024002400240200541ff017141046b0e0401010100050b20002b0308220e44000000000000f04163200e4400000000000000006671450d01200eab0c020b20002d00080c010b41000b210b024020012802482200200128024c2202490440200020034604402003200b3a00002001200341016a3602480c020b20002105200320012802482202200341016a220d6b22096a2107200221000340200520074d0440200120003602482002200d470440200220096b20032009101e1a0b05200020072d00003a0000200041016a2100200741016a21070c010b0b2003200b3a00000c010b200141d0016a200128024422052002200020056b41016a1038200320012802446b200c10272102024020012802d801220020012802dc01470d0020012802d4012205200228020022074b0440200020056b21092005200520076b41016a417e6d220d6a210720012000200547047f200720052009101e1a20012802d4010520000b200d6a3602d4012001200720096a22003602d8010c010b200141e8016a4101200020076b4101742200200041014d1b2200200041027620012802e0011027210720012802f001220020012802d80120012802d40122056b6a2109034020002009470440200020052d00003a0000200541016a2105200041016a21000c010b0b20022802002100200220072802003602002007200036020020012802d4012100200120012802ec013602d401200120003602ec0120012902d801210f200120093602d801200120012802f4013602dc012001200f3702f0012007102620012802d80121000b2000200b3a0000200120012802d80141016a3602d801200141c4006a2002200310572103200210260b20042802002200450d02024002400240024020002d000041016b0e020001020b200a1082010c020b2004200428020841106a3602080c010b2004200428020c41016a36020c0b200341016a2103200628020021000c000b000b100a000b419c0c41c0e70041f30f1005000b419c0c41b8e60041f20e1005000b419c0c418ce60041850e1005000b140020012000200028020020012802001097011b0bef0101037f230041106b22082400200241eeffffff0720016b4d04402000104e2109200841046a220a200141e6ffffff034d047f2008200141017436020c2008200120026a360204200a2008410c6a106f280200103b41016a0541efffffff070b102f200828020421022004044020022009200410181a0b20060440200220046a2007200610181a0b2003200420056a220a6b21072003200a470440200220046a20066a200420096a20056a200710181a0b2001410a470440200910100b20002002103a2000200828020810392000200420066a20076a2200101d200020026a4100101c200841106a24000f0b1031000b0b00200041ffffffff07710b0800200041ff00710b2801017f200041c41a3602002000280204410c6b220141086a1099014100480440200110100b20000ba00201057f230041206b220324002003200139030002400240200028020822022000280204460440200341086a2003105b2102200028020020021011200210071a0c010b024002400240200241046b28020022022d000041016b0e020201000b41bf1041ac3641b40e1005000b200228020822002802042202200041086a22042802002205490440200020022003105b41106a3602040c020b200341086a200028020022062005200220066b41047541016a1019200028020420002802006b4104752004101622022802082003105b1a2002200228020841106a360208200020021015200210140c010b2000280210450d01200341086a2003105b2102200028021020021011200210071a0b200341206a24000f0b41d80a41b53641b40e1005000b0e00200041106a10071a200010040b15002000280200044020001077200028020010100b0b0b002000200028020010780b2901017f2000280204210203402001200246450440200241106b100721020c010b0b200020013602040b1d0003402000200146450440200220001065200041106a21000c010b0b0b5f01027f230041206b22022400024020012000280208200028020022036b4104754b044020014180808080014f0d0120002002410c6a2001200028020420036b410475200041086a101622001015200010140b200241206a24000f0b100a000b2900200041086a20002d00001028200041033a000020002001107e220136020820002d0000200110080b0d00200020012001104a1087010b7b01047f200041003602082000420037030002402001280204220220012802002204470440200220046b22024100480d012000200210092203360204200020033602002000200220036a2205360208200320042002101e1a200020053602040b20002001290310370310200020012d00183a001820000f0b100a000b0a00410c10092000104b0b180020004180808080014f04401063000b200041047410090b5901017f20002000280248220141016b20017236024820002802002201410871044020002001412072360200417f0f0b200042003702042000200028022c220136021c200020013602142000200120002802306a36021041000b02000b2801027f20002802002101410121020340200204402000200110442201360200410021020c010b0b0b2300200041086a20002d0000102820002001370308200041053a000041052001a710080b5601017f20002802002201044002400240024020012d000041016b0e020001020b200041046a1082010f0b2000200028020841106a3602080f0b2000200028020c41016a36020c0f0b419c0c41c0e70041f30f1005000b2300200041086a20002d0000102820002001370308200041063a000041062001a710080b5501017c024002400240024020002d000041046b0e0401030300020b20002b0308220144000000000000f041632001440000000000000000667104402001ab0f0b41000f0b20002d00080f0b100a000b20002802080b860101027f230041106b22032400200320023602082003417f36020c2002417f4704402003200028020420002d000b104d36020020032003410c6a2003109801280200220436020402402000104e2001200341046a200341086a109801280200106722000d00417f2100200220044b0d00200220044921000b200341106a240020000f0b1031000b7b01047f20002d0000410146047f200028020841046a2204210220042103034020022802002205044020032005200541106a2001107c22024100481b210320052002411d764104716a21020c010b0b024020032004470440200341106a2001107c41004c0d010b200421030b2003200028020841046a470541000b0b8d0101027f02400240200028020022010440024002400240024020012d00000e03060001020b20002802042200200128020841046a460d04200041206a0f0b200028020822022001280208280204470d0141fd1041ebe60041fe0f1005000b20012102200028020c0d030b20020f0b419c0c41dfe60041fe0f1005000b41ba1141e5e60041fe0f1005000b100a000b6e01017f02402000280200220220012802004604402002450d01027f02400240024020022d000041016b0e020001020b20002802042001280204460c020b20002802082001280208460c010b200028020c200128020c460b4101730f0b100a000b419c0c41a2e80041bc0f1005000b590020002001105622002802002201044002400240024020012d000041016b0e020001020b2000200128020841046a3602040f0b200020012802082802043602080f0b2000410136020c0f0b419c0c41b8e60041f20e1005000b37000240024002400240200041ff017122000e03030100020b200128020420012802006b4104750f0b20012802080f0b410121000b20000bb20b020c7f017e230041a0056b2203240020034188036a101b210d200342003702fc0220034180023b018403200342003702f4022003200d3602f002200342fb00370360200342db00370358200342da00370350200342d400370348200342d300370340200342ce00370338200342c800370330200342c60037032820034201370320200341013a001c200341003602182003427f3703102003200236020c20032001360208200342c3003703880520034190056a41d90d10062101200342c4003703f004200341f8046a41d30e10062102200342c9003703d804200341e0046a41ce0f10062104200342cc003703c004200341c8046a41d50f10062107200342cd003703a804200341b0046a41d40f10062108200342d5003703900420034198046a41c70f10062105200342e4003703f80320034180046a41cc0e10062106200342e9003703e003200341e8036a41c80f10062109200342ec003703c803200341d0036a41dc0f1006210a200342ed003703b003200341b8036a41db0f1006210b200342f50037039803200341a0036a41cd0f1006210c200320032903880537036820032001280208360278200320012903003703702001410036020820014200370300200320032903f00437038001200320022802083602900120032002290300370388012002410036020820024200370300200320032903d80437039801200320042802083602a801200320042903003703a0012004410036020820044200370300200320032903c0043703b001200320072802083602c001200320072903003703b8012007410036020820074200370300200320032903a8043703c801200320082802083602d801200320082903003703d001200841003602082008420037030020032003290390043703e001200320052802083602f001200320052903003703e8012005410036020820054200370300200320032903f8033703f801200320062802083602880220032006290300370380022006410036020820064200370300200320032903e00337039002200320092802083602a00220032009290300370398022009410036020820094200370300200320032903c8033703a8022003200a2802083602b8022003200a2903003703b002200a4100360208200a4200370300200320032903b0033703c0022003200b2802083602d0022003200b2903003703c802200b4100360208200b420037030020032003290398033703d8022003200c2802083602e8022003200c2903003703e002200c4100360208200c4200370300200c1004200b1004200a100420091004200610042005100420081004200710042004100420021004200110042003200341f0026a36022402400240200341086a41011048450d0002400240024002400240200328022041036b0e03000100010b2003280208210220032802182101200328020c210403402003200141016a220136021820022004460d0220032002310000220f3703102003200241016a2202360208200f42ce00510d000b0c030b2003200328021841016a36021820032802082201200328020c470d010b2003427f3703104101210e0c020b20032001310000220f3703102003200141016a3602080b20032802242101200341f0046a2207200f10472003280218210820032802202105200341a8046a220220032903101047200341003602c804200342003703c004200341c0046a220641b60820032802ac0420032d00b30410361021200341d8046a22042005200641b608101320021012220520034190046a41bb0e10062206104620034188056a220941ee00200820041045200141013a001420012d00150d01200910291a20041004200610042005100420021004200710040b200341086b210141e80221020340200120026a1004200241186b220241e000470d000b0240200e04402000200d10251a0c010b20004109102a1a0b20032802f40222000440200320003602f802200010100b200d10071a200341a0056a24000f0b100a000b5d01017f200028021022034504402000410136022420002002360218200020013602100f0b02402001200346044020002802184102470d01200020023602180f0b200041013a0036200041023602182000200028022441016a3602240b0b2000024020002802042001470d00200028021c4101460d002000200236021c0b0b9a0100200041013a0035024020002802042002470d00200041013a003402402000280210220245044020004101360224200020033602182000200136021020034101470d0220002802304101460d010c020b2001200246044020002802182202410246044020002003360218200321020b20002802304101470d0220024101460d010c020b2000200028022441016a3602240b200041013a00360b0b28002000280000220041187420004180fe03714108747220004108764180fe0371200041187672720bda0201027f2000027f200220016b220441094c0440413d200441202003410172676b41d1096c410c762205200541027441a0176a28020020034d6a480d011a0b027f200341bf843d4d04402003418fce004d0440200341e3004d0440200341094d044020012003104c0c040b20012003102e0c030b200341e7074d04402001200341e4006e2201104c2001419c7f6c20036a102e0c030b20012003106d0c020b2003419f8d064d0440200120034190ce006e2201104c200141f0b17f6c20036a106d0c020b20012003106c0c010b200341ffc1d72f4d0440200341fface2044d04402001200341c0843d6e2201104c200141c0fb426c20036a106c0c020b20012003106b0c010b200341ff93ebdc034d0440200120034180c2d72f6e2201104c20014180bea8506c20036a106b0c010b200120034180c2d72f6e2201102e20014180bea8506c20036a106b0b210241000b360204200020023602000b950101037f0240230041106b22032400200220016b220441f0ffffff0749044002402004105804402000200410300c010b200341086a2004103b41016a102f200020032802082205103a2000200328020c103920002004101d200521000b034020012002470440200020012d0000101c200041016a2100200141016a21010c010b0b20004100101c200341106a24000c010b1031000b0b130020002001360200200020022802003602040b0b002000200120021094010bc10101077f230041106b22052400230041206b22032400230041106b220424002004200136020c200341186a20002004410c6a109401200441106a2400200341106a210820032802182101200328021c2104230041106b22002400200420016b22060440200220012006101e1a0b2000200220066a36020c200820042000410c6a109501200041106a2400200328021021002003200328021436020c200541086a20002003410c6a109501200341206a2400200528020c2109200541106a240020090b070020002001490b140020012000200128020020002802001097011b0b13002000200028020041016b220036020020000ba80100024020014180084e0440200044000000000000e07fa22100200141ff0f490440200141ff076b21010c020b200044000000000000e07fa2210041fd172001200141fd174f1b41fe0f6b21010c010b20014181784a0d002000440000000000006003a22100200141b8704b0440200141c9076a21010c010b2000440000000000006003a2210041f0682001200141f0684d1b41920f6a21010b2000200141ff076aad423486bfa20b7f02017f017e2000bd2203423488a741ff0f71220241ff0f47047c20024504402001200044000000000000000061047f410005200044000000000000f043a22001109b012100200128020041406a0b36020020000f0b2001200241fe076b360200200342ffffffffffffff87807f834280808080808080f03f84bf0520000b0b3900200045044041000f0b027f200141807f714180bf0346200141ff004d7245044041901d4119360200417f0c010b200020013a000041010b0bbb0702067e017f02400240024002400240024002400240024002400240200141096b0e120008090a0809010203040a090a0a08090506070b20022002280200220141046a360200200020012802003602000f0b20022002280200220141046a360200200020013201003703000f0b20022002280200220141046a360200200020013301003703000f0b20022002280200220141046a360200200020013000003703000f0b20022002280200220141046a360200200020013100003703000f0b2002200228020041076a417871220141086a360200200020012b03003903000f0b2002200228020041076a417871220141106a360200200021092001290300210420012903082107230041206b220224000240200742ffffffffffffffffff0083220542808080808080c0803c7d200542808080808080c0ffc3007d54044020074204862004423c88842105200442ffffffffffffffff0f832204428180808080808080085a04402005428180808080808080c0007c21030c020b2005428080808080808080407d2103200442808080808080808008520d01200320054201837c21030c010b200450200542808080808080c0ffff0054200542808080808080c0ffff00511b45044020074204862004423c888442ffffffffffffff03834280808080808080fcff008421030c010b4280808080808080f8ff002103200542ffffffffffffbfffc300560d00420021032005423088a722004191f700490d0020042103200742ffffffffffff3f8342808080808080c0008422062108024020004181f7006b220141c0007104402004200141406aad862108420021030c010b2001450d0020082001ad220586200341c00020016bad88842108200320058621030b200220033703102002200837031802404181f80020006b220041c0007104402006200041406aad882104420021060c010b2000450d00200641c00020006bad8620042000ad220388842104200620038821060b2002200437030020022006370308200229030842048620022903002204423c888421032002290310200229031884420052ad200442ffffffffffffffff0f83842204428180808080808080085a0440200342017c21030c010b200442808080808080808008520d00200342018320037c21030b200241206a2400200920032007428080808080808080807f8384bf3903000b0f0b20022002280200220141046a360200200020013402003703000f0b20022002280200220141046a360200200020013502003703000f0b2002200228020041076a417871220141086a360200200020012903003703000b7301067f200028020022032c000041306b220141094b044041000f0b0340417f2104200241cc99b3e6004d0440417f20012002410a6c22056a2001200541ffffffff07734b1b21040b2000200341016a220536020020032c000121062004210220052103200641306b2201410a490d000b20020b9d2c03207f027c037e230041d0006b220b2400200b200136024c200b41376a2120200b41386a211a02400240024002400340410021050340200121062005201341ffffffff07734a0d02200520136a2113024002400240200622052d0000220c0440034002400240200c41ff01712201450440200521010c010b20014125470d012005210c0340200c2d00014125470440200c21010c020b200541016a2105200c2d00022121200c41026a2201210c20214125460d000b0b200520066b2205201341ffffffff077322144a0d0820000440200020062005100d0b20050d06200b200136024c200141016a2105417f210d024020012c000141306b220841094b0d0020012d00024124470d00200141036a21054101211c2008210d0b200b200536024c41002108024020052c0000220741206b2201411f4b04402005210c0c010b2005210c410120017422014189d10471450d000340200b200541016a220c36024c2001200872210820052c0001220741206b220141204f0d01200c2105410120017422014189d104710d000b0b02402007412a460440027f0240200c2c000141306b220141094b0d00200c2d00024124470d00027f2000450440200420014102746a410a36020041000c010b200320014103746a2802000b2109200c41036a210141010c010b201c0d06200c41016a21012000450440200b200136024c4100211c410021090c030b20022002280200220541046a3602002005280200210941000b211c200b200136024c200941004e0d01410020096b210920084180c0007221080c010b200b41cc006a109e0122094100480d09200b28024c21010b41002105417f2107027f410020012d0000412e470d001a20012d0001412a460440027f024020012c000241306b220c41094b0d0020012d00034124470d00200141046a2101027f20004504402004200c4102746a410a36020041000c010b2003200c4103746a2802000b0c010b201c0d06200141026a210141002000450d001a20022002280200220c41046a360200200c2802000b2107200b200136024c200741004e0c010b200b200141016a36024c200b41cc006a109e012107200b28024c210141010b211103402005210e411c210c2001220a2c0000220541fb006b4146490d0a200141016a21012005200e413a6c6a41ff126a2d0000220541016b4108490d000b200b200136024c02402005411b4704402005450d0b200d41004e044020004504402004200d4102746a20053602000c0b0b200b2003200d4103746a2903003703400c020b2000450d07200b41406b20052002109d010c010b200d41004e0d0a410021052000450d070b20002d00004120710d0a200841ffff7b71220f200820084180c000711b21084100210d4199082112201a210c02400240200041202009027f027f0240024002400240027f0240024002400240024002400240200a2c0000220541537120052005410f714103461b2005200e1b220541d8006b0e210414141414141414140e140f060e0e0e1406141414140205031414091401141404000b0240200541c1006b0e070e140b140e0e0e000b200541d300460d090c130b200b29034021274199080c050b410021050240024002400240024002400240200e41ff01710e0800010203041a05061a0b200b28024020133602000c190b200b28024020133602000c180b200b2802402013ac3703000c170b200b28024020133b01000c160b200b28024020133a00000c150b200b28024020133602000c140b200b2802402013ac3703000c130b41082007200741084d1b21072008410872210841f80021050b201a2101200b29034022272228504504402005412071210f0340200141016b22012028a7410f714190176a2d0000200f723a00002028420f5621222028420488212820220d000b0b20012106200841087145202750720d0320054104764199086a21124102210d0c030b201a2101200b29034022272228504504400340200141016b22012028a74107714130723a0000202842075621232028420388212820230d000b0b200121062008410871450d022007201a20066b220141016a20012007481b21070c020b200b29034022274200530440200b420020277d22273703404101210d4199080c010b20084180107104404101210d419a080c010b419b084199082008410171220d1b0b21122027201a103c21060b20112007410048710d0f200841ffff7b71200820111b21082027420052200772450440201a2106410021070c0c0b2007202750201a20066b6a220120012007481b21070c0b0b027f41ffffffff072007200741ffffffff074f1b2208220a410047210c024002400240200b280240220141881020011b22062205220e41037145200a45720d000340200e2d0000450d02200a41016b220a410047210c200e41016a220e410371450d01200a0d000b0b200c450d01200e2d000045200a410449724504400340200e2802002201417f73200141818284086b71418081828478710d02200e41046a210e200a41046b220a41034b0d000b0b200a450d010b0340200e200e2d0000450d021a200e41016a210e200a41016b220a0d000b0b41000b220120056b200820011b220120066a210c200741004e0440200f2108200121070c0b0b200f210820012107200c2d00000d0e0c0a0b20070440200b2802400c020b20004120200941002008100f41000c020b200b410036020c200b200b2903403e0208200b200b41086a2205360240417f210720050b2106410021052006210c03400240200c280200220f450d00200b41046a200f109c01220f4100480d0f200f200720056b4b0d00200c41046a210c2005200f6a22052007490d010b0b413d210c20054100480d0c20004120200920052008100f4100220c2005450d001a0340024020062802002207450d00200b41046a220f2007109c012207200c6a220c20054b0d002000200f2007100d200641046a21062005200c4b0d010b0b20050b220520084180c00073100f2009200520052009481b21050c080b20112007410048710d09413d210c200b2b03402125200921112008211220052114410021154100211f230041b0046b221024002010410036022c02402025bd222742005304404101211741a308211b20259a2225bd21270c010b20124180107104404101211741a608211b0c010b41a90841a408201241017122171b211b201745211f0b024020274280808080808080f8ff00834280808080808080f8ff00510440200041202011201741036a2206201241ffff7b71100f2000201b2017100d2000418f0e41a60f201441207122051b41b00e41aa0f20051b20252025621b4103100d200041202011200620124180c00073100f20062011200620114a1b210d0c010b201041106a21190240027f024020252010412c6a109b0122262026a022254400000000000000006204402010201028022c220541016b36022c2014412072221d41e100470d010c030b2014412072221d41e100460d02201028022c21094106200720074100481b0c010b20102005411d6b220936022c202544000000000000b041a221254106200720074100481b0b210a201041306a41a0024100200941004e1b6a220f210603402006027f202544000000000000f041632025440000000000000000667104402025ab0c010b41000b2205360200200641046a210620252005b8a1440000000065cdcd41a22225440000000000000000620d000b0240200941004c04402009210720062105200f21080c010b200f2108200921070340411d20072007411d4f1b21070240200641046b22052008490d002007ad21294200212703402005202742ffffffff0f8320053502002029867c2228428094ebdc038022274280ec94a30c7e20287c3e0200200541046b220520084f0d000b2027a72205450d00200841046b220820053602000b0340200820062205490440200541046b2206280200450d010b0b2010201028022c20076b220736022c20052106200741004a0d000b0b20074100480440200a41196a41096e41016a2115201d41e60046211803404109410020076b2206200641094f1b211e0240200520084d044020082802004541027421060c010b418094ebdc03201e762116417f201e74417f73210d41002107200821060340200620072006280200220e201e766a360200200d200e7120166c2107200641046a22062005490d000b20082802004541027421062007450d0020052007360200200541046a21050b2010201028022c201e6a220736022c200f200620086a220820181b220620154102746a2005200520066b41027520154a1b210520074100480d000b0b410021070240200520084d0d00200f20086b41027541096c2107410a21062008280200220e410a490d000340200741016a2107200e2006410a6c22064f0d000b0b200a20074100201d41e600471b6b201d41e70046200a410047716b22062005200f6b41027541096c41096b480440201041306a410441a40220094100481b6a20064180c8006a220d41096d220e4102746a22154180206b2109410a2106200e41776c200d6a220d41074c044003402006410a6c2106200d41016a220d4108470d000b0b024020092802002216201620066e220d20066c221846201541fc1f6b220e200546710d00201620186b21160240200d41017145044044000000000000404321252006418094ebdc0347200820094f720d0120154184206b2d0000410171450d010b44010000000000404321250b44000000000000e03f44000000000000f03f44000000000000f83f2005200e461b44000000000000f83f20162006410176220e461b200e20164b1b21260240201f0d00201b2d0000412d470d0020269a212620259a21250b2009201836020020252026a02025610d002009200620186a22063602002006418094ebdc034f04400340200941003602002008200941046b22094b0440200841046b220841003602000b2009200928020041016a2206360200200641ff93ebdc034b0d000b0b200f20086b41027541096c2107410a21062008280200220e410a490d000340200741016a2107200e2006410a6c22064f0d000b0b200941046a22062005200520064b1b21050b03402005220e20084d220d450440200541046b2205280200450d010b0b0240201d41e700470440201241087121090c010b2007417f73417f200a4101200a1b220620074a2007417b4a7122051b20066a210a417f417e20051b20146a2114201241087122090d00417721050240200d0d00200e41046b2802002209450d00410a210d410021052009410a700d0003402005220641016a21052009200d410a6c220d70450d000b2006417f7321050b200e200f6b41027541096c21062014415f7141c60046044041002109200a200520066a41096b22054100200541004a1b22052005200a4a1b210a0c010b41002109200a200620076a20056a41096b22054100200541004a1b22052005200a4a1b210a0b417f210d200a41fdffffff0741feffffff072009200a7222161b4a0d01200a20164100476a41016a211802402014415f71220641c6004604402007201841ffffffff07734a0d0320074100200741004a1b21050c010b201920072007411f7522057320056bad2019103c22056b41014c04400340200541016b220541303a0000201920056b4102480d000b0b200541026b221520143a0000200541016b412d412b20074100481b3a0000201920156b2205201841ffffffff07734a0d020b200520186a2205201741ffffffff07734a0d01200041202011200520176a220d2012100f2000201b2017100d200041302011200d20124180800473100f024002400240200641c600460440201041106a2205410872210620054109722109200f20082008200f4b1b22072108034020083502002009103c21050240200720084704402005201041106a4d0d010340200541016b220541303a00002005201041106a4b0d000b0c010b20052009470d00201041303a0018200621050b20002005200920056b100d200841046a2208200f4d0d000b20160440200041f10f4101100d0b200a41004c2008200e4f720d01034020083502002009103c2205201041106a4b04400340200541016b220541303a00002005201041106a4b0d000b0b200020054109200a200a41094e1b100d200a41096b2105200841046a2208200e4f0d03200a41094a21242005210a20240d000b0c020b0240200a4100480d00200e200841046a2008200e491b210f201041106a220541087221072005410972210e200821060340200e2006350200200e103c2205460440201041303a0018200721050b0240200620084704402005201041106a4d0d010340200541016b220541303a00002005201041106a4b0d000b0c010b200020054101100d200541016a21052009200a72450d00200041f10f4101100d0b20002005200e20056b2205200a2005200a481b100d200a20056b210a200641046a2206200f4f0d01200a41004e0d000b0b20004130200a41126a41124100100f20002015201920156b100d0c020b200a21050b20004130200541096a41094100100f0b200041202011200d20124180c00073100f200d2011200d20114a1b210d0c010b201b2014411a74411f754109716a210e02402007410b4b0d00410c20076b2105440000000000003040212603402026440000000000003040a22126200541016b22050d000b200e2d0000412d460440202620259a2026a1a09a21250c010b20252026a02026a121250b2017410272210a2014412071210f2019201028022c22062006411f7522057320056bad2019103c2205460440201041303a000f2010410f6a21050b200541026b22092014410f6a3a0000200541016b412d412b20064100481b3a000020124108712108201041106a2106034020062205027f20259944000000000000e0416304402025aa0c010b4180808080780b22064190176a2d0000200f723a00002008200741004a724520252006b7a1440000000000003040a222254400000000000000006171200541016a2206201041106a6b410147724504402005412e3a0001200541026a21060b2025440000000000000000620d000b417f210d41fdffffff07200a201920096b220f6a22086b2007480d002000412020112008200741026a2006201041106a22066b220d200d41026b2007481b200d20071b22056a22082012100f2000200e200a100d200041302011200820124180800473100f20002006200d100d200041302005200d6b41004100100f20002009200f100d200041202011200820124180c00073100f20082011200820114a1b210d0b201041b0046a2400200d220541004e0d070c0a0b200b200b2903403c00374101210720202106200f21080c040b20052d0001210c200541016a21050c000b000b20000d08201c450d02410121050340200420054102746a28020022000440200320054103746a20002002109d0141012113200541016a2205410a470d010c0a0b0b410121132005410a4f0d080340200420054102746a2802000d01200541016a2205410a470d000b0c080b411c210c0c050b2007200c20066b220f2007200f4a1b2201200d41ffffffff07734a0d03413d210c20092001200d6a220720072009481b220520144a0d0420004120200520072008100f20002012200d100d200041302005200720084180800473100f200041302001200f4100100f20002006200f100d200041202005200720084180c00073100f200b28024c21010c010b0b0b410021130c030b413d210c0b41901d200c3602000b417f21130b200b41d0006a240020130b1500200045044041000f0b41901d2000360200417f0ba30201047f230041d0016b22032400200320023602cc01200341a0016a22024100412810551a200320032802cc013602c801024041002001200341c8016a200341d0006a2002109f014100480d00200028024c4100482106200020002802002205415f71360200027f024002402000280230450440200041d0003602302000410036021c20004200370310200028022c21042000200336022c0c010b20002802100d010b417f20001080010d011a0b20002001200341c8016a200341d0006a200341a0016a109f010b21012004047f20004100410020002802241104001a200041003602302000200436022c2000410036021c20002802141a2000420037031041000520010b1a2000200028020020054120717236020020060d000b200341d0016a24000b5801027f230041106b220424000340024020012003460440200121030c010b2000100b1a2000418008100e450d00200420002903083c000f20022004410f6a105a200341016a21030c010b0b200441106a2400200120034d0b3e01017f0340024020012003460440200121030c010b2000100b1a200041a90e100e450d00200220002c0008103d200341016a21030c010b0b200120034d0b3401017f41ffffffff002102024002400240200041ff017141016b0e020002010b41d5aad52a0f0b20002001108c0121020b20020bf00101067f2000280204220420002802082203490440200420013602002000200441046a3602040f0b02402004200028020022066b410275220741016a220241808080800449044041ffffffff03200320066b22034101752205200220022005491b200341fcffffff074f1b2203047f20034180808080044f0d02200341027410090541000b220520074102746a2202200136020020022101034020042006470440200141046b2201200441046b22042802003602000c010b0b2000200241046a36020420002802002102200020013602002000200520034102746a36020820020440200210100b0f0b100a000b1063000bca0201077f230041406a220424000240027f200028020822022000280204460440200441186a20012d0000102a2101200028020020011011200110071a20002802000c010b024002400240200241046b28020022022d000041016b0e020201000b41bf1041ac3641b40e1005000b0240200228020822022802042203200241086a220528020022064904402002200320012d0000102a41106a3602040c010b2004412c6a200228020022072006200320076b41047541016a1019200228020420022802006b41047520051016220328020820012d0000102a1a2003200328020841106a360208200220031015200310140b200028020841046b28020028020828020441106b0c010b2000280210450d01200441086a20012d0000102a2101200028021020011011200110071a20002802100b2108200441406b240020080f0b41d80a41b53641b40e1005000bb80101047f230041106b220324000240200028020822022000280204470440200241046b28020022022d00004101470d01200228020822042003410c6a20011024220528020022024504404130100921022003200441046a360204200241106a2001104b1a200241206a101b1a200341013a00082004200328020c20052002102320034100360200200310220b2000200241206a360210200341106a24000f0b418f1041e1354187081005000b41df1041e2354187081005000b7f01027f02402002200010592204200028020420002d000b104d22036b4d04402002450d012000104e220420036a2001200210181a200220036a2101024020002d000b1032044020002001101d0c010b2000200110300b200120046a4100101c20000f0b20002004200220046b20036a2003200341002002200110700b20000b08002000102910100bac0201047f230041206b22022400200220013a000702400240200028020822012000280204460440200241086a200241076a105e2101200028020020011011200110071a0c010b024002400240200141046b28020022012d000041016b0e020201000b41bf1041ac3641b40e1005000b200128020822002802042201200041086a2203280200220449044020002001200241076a105e41106a3602040c020b200241086a200028020022052004200120056b41047541016a1019200028020420002802006b410475200310162201280208200241076a105e1a2001200128020841106a360208200020011015200110140c010b2000280210450d01200241086a200241076a105e2101200028021020011011200110071a0b200241206a24000f0b41d80a41b53641b40e1005000bd90602087f027e230041e0006b220224000240024002402000418008100e0440024002402000290308220a42407c220b421f560d00024002400240024002400240200ba741186b0e080102030406060605000b2000200aa7411f71200110a20121040c0a0b200241003a004c2000200241cc006a1043450d0920022d004c21050340200341ff017120054f22040d0a2000100b1a2000418008100e450d0a200220002903083c00282001200241286a105a200341016a21030c000b000b200241003b01282000200241286a1042450d0820022f012821050340200341ffff037120054f22040d092000100b1a2000418008100e450d09200220002903083c004c2001200241cc006a105a200341016a21030c000b000b200241003602282000200241286a1041450d0720002002280228200110a20121040c070b4200210a200242003703282000200241286a1040450d062002290328210b0340200a200b510440200b210a0c070b2000100b1a2000418008100e450d06200220002903083c004c2001200241cc006a105a200a42017c210a0c000b000b200141086a21094101210403402000100b42ff01510d06200241003a00402002420037033820024100360230200242003703282000200241286a10ab01450d020240200228022c2206200228022822056b220341004c0d00200320092802002208200128020422076b4c044020052006470440200720052003101e1a0b2001200320076a3602040c010b200241cc006a200128020022062008200320066b20076a1038200720012802006b2009102721062003200228025422036a210803402003200846450440200320052d00003a0000200541016a2105200341016a21030c010b0b2002200836025420012006200710571a200610260b200241286a101a0c000b000b200241cc006a2206200a1047200028021c2101200028021021002002410036021820024200370310200241106a220341b509200228025020022d0057103610212002411c6a22074101200341b5091013200610122203200241046a418008100622051046200241286a220841f100200020071045200141013a001420012d00150d02200810291a200710042005100420031004200610040c040b200241286a101a0b410021040c020b100a000b200a200b5a21040b200241e0006a240020040b4e01027f200020002802002202280204220136020020010440200120003602080b200220002802082201360208200120012802002000474102746a200236020020022000360204200020023602080b4e01027f200020002802042202280200220136020420010440200120003602080b200220002802082201360208200120012802002000474102746a200236020020022000360200200020023602080b0c00200041f81236020020000bb90101057f230041206b220624000240200241004c0d0020022000280204220341086a22002802002204200328020422056b4c04402003200520012002101e20026a3602040c010b20022006410c6a200328020022072004200220076b20056a1038200520032802006b20001027220228020822006a210403402000200446450440200020012d00003a0000200141016a2101200041016a21000c010b0b2002200436020820032002200510571a200210260b200641206a24000b8c0101047f230041206b220324000240200028020422002802042202200041086a2204280200470440200220013a00002000200241016a3602040c010b2003410c6a200028020022052002200220056b41016a1038200028020420002802006b20041027220228020820013a00002002200228020841016a360208200020021069200210260b200341206a24000b17002000106e220041046a2001200010910110674100470b08002000107310100b050041f20d0b1b002000200128020820051017044020012002200320041090010b0b92010020002001280208200410170440200120022003108f010f0b02402000200128020020041017450d0002402002200128021047044020012802142002470d010b20034101470d01200141013602200f0b20012002360214200120033602202001200128022841016a360228024020012802244101470d0020012802184102470d00200141013a00360b2001410436022c0b0b190020002001280208410010170440200120022003108e010b0b320020002001280208410010170440200120022003108e010f0b20002802082200200120022003200028020028021c1106000bf3010020002001280208200410170440200120022003108f010f0b02402000200128020020041017044002402002200128021047044020012802142002470d010b20034101470d02200141013602200f0b200120033602200240200128022c4104460d00200141003b01342000280208220020012002200241012004200028020028021411090020012d003504402001410336022c20012d0034450d010c030b2001410436022c0b200120023602142001200128022841016a36022820012802244101470d0120012802184102470d01200141013a00360f0b20002802082200200120022003200420002802002802181108000b0b38002000200128020820051017044020012002200320041090010f0b200028020822002001200220032004200520002802002802141109000b900401057f230041406a22042400027f410120002001410010170d001a41002001450d001a230041f0006b220324002001280200220541046b2802002106200541086b28020021052003420037024c200342003702542003420037025c200342003702642003410036006b20034200370244200341bc193602402003200136023c200341ec193602380240200641ec194100101704404100200120051b21010c010b2001200120056a22054e04402003420037022c20034100360033200342003702142003420037021c200342003702242003420037020c200341ec19360208200320013602042003200636020020034101360230200620032005200541014100200628020028021411090020032802180d010b410021012006200341386a200541014100200628020028021811080002400240200328025c0e020001020b200328024c410020032802584101461b410020032802544101461b410020032802604101461b21010c010b2003280250410147044020032802600d0120032802544101470d0120032802584101470d010b200328024821010b200341f0006a240041002001450d001a2004410c6a4100413410551a200441013602382004417f36021420042000360210200420013602082001200441086a20022802004101200128020028021c110600200428022022004101460440200220042802183602000b20004101460b2107200441406b240020070b06002000106e0b040041000ba80101057f200028025422032802002105200328020422042000280214200028021c22076b220620042006491b2206044020052007200610371a2003200328020020066a22053602002003200328020420066b22043602040b20042002200220044b1b2204044020052001200410371a2003200328020020046a22053602002003200328020420046b3602040b200541003a00002000200028022c220136021c2000200136021420020b3f01027f200028023c2104230041106b2200240020042001200241ff0171200041086a100010a001210220002903082101200041106a2400427f200120021b0bbe0201087f230041206b220324002003200028021c2204360210200028021421052003200236021c200320013602182003200520046b2201360214200120026a210541022106200341106a2101027f0340024002400240200028023c200120062003410c6a100110a0014504402005200328020c2207460d01200741004e0d020c030b2005417f470d020b2000200028022c220136021c200020013602142000200120002802306a36021020020c030b20012007200128020422084b22094103746a220420072008410020091b6b220820042802006a3602002001410c410420091b6a2201200128020020086b360200200520076b2105200620096b2106200421010c010b0b2000410036021c2000420037031020002000280200412072360200410020064102460d001a200220012802046b0b210a200341206a2400200a0b0900200028023c10020b1000230020006b4170712200240020000b070020002802040b0700200028020c0b0600200024000b040023000b13002000410c6a200028020c2802081102001a0b0b801317004180080bc70a62696e617279006b657900656e645f6172726179006d6178002d2b20202030583078002d30582b30582030582d30782b307820307800657870656374656420656e64206f6620696e7075743b206c61737420627974653a203078006578706563746564206c656e6774682073706563696669636174696f6e2028307836302d3078374229206f7220696e646566696e69746520737472696e672074797065202830783746293b206c61737420627974653a203078006578706563746564206c656e6774682073706563696669636174696f6e2028307834302d3078354229206f7220696e646566696e6974652062696e6172792061727261792074797065202830783546293b206c61737420627974653a20307800696e76616c696420627974653a20307800757365725f696e70757400756e657870656374656420656e64206f6620696e70757400616d6f756e7400636f6e74656e74006f626a6563745f656c656d656e74006173736572745f696e76617269616e7400656e645f6f626a6563740061747472730061747472696275746573006d5f646174612e6d5f7479706520213d2076616c75655f743a3a62696e617279207c7c206d5f646174612e6d5f76616c75652e62696e61727920213d206e756c6c707472006d5f646174612e6d5f7479706520213d2076616c75655f743a3a6172726179207c7c206d5f646174612e6d5f76616c75652e617272617920213d206e756c6c707472006d5f6f626a65637420213d206e756c6c707472006d5f646174612e6d5f7479706520213d2076616c75655f743a3a6f626a656374207c7c206d5f646174612e6d5f76616c75652e6f626a65637420213d206e756c6c707472006d5f646174612e6d5f7479706520213d2076616c75655f743a3a737472696e67207c7c206d5f646174612e6d5f76616c75652e737472696e6720213d206e756c6c7074720070617273655f6572726f72007061727365206572726f72006e756d6265720063686172002e2f6e6c6f686d616e6e2f6a736f6e2e687070007374643a3a657863657074696f6e006d696e007365745f626567696e006e616e00697465725f696d706c004d6573736167655061636b00737472696e6700696e660068616e646c655f76616c75650066616c736500747970650073696e676c6500646f75626c650072616e676500657863657074696f6e5f6d657373616765007365745f656e640069640073656564006461746100424a4461746100252e326868580043424f520055424a534f4e0042534f4e004e414e00494e46003c656e64206f662066696c653e006f70657261746f723d3d0075696e74380075696e7431360075696e7436340075696e743332005b6a736f6e2e657863657074696f6e2e006f70657261746f722b2b006f70657261746f722a00286e756c6c2900217265665f737461636b2e656d7074792829007265665f737461636b2e6261636b28292d3e69735f61727261792829007265665f737461636b2e6261636b28292d3e69735f61727261792829207c7c207265665f737461636b2e6261636b28292d3e69735f6f626a6563742829006d5f69742e61727261795f6974657261746f7220213d206d5f6f626a6563742d3e6d5f646174612e6d5f76616c75652e61727261792d3e656e642829006d5f69742e6f626a6563745f6974657261746f7220213d206d5f6f626a6563742d3e6d5f646174612e6d5f76616c75652e6f626a6563742d3e656e6428290073796e746178206572726f72207768696c652070617273696e672000206174206279746520005d20003a2000417373657274696f6e206661696c65643a202573202825733a2025733a202564290a0041d0120b090300000004000000050041e4120b090300000006000000050041f8120b110700000008000000090000000a0000000b004194130b220c0000000d0000000e0000000f000000950700001d0700009a070000a107000087070041c0130b4119000a00191919000000000500000000000009000000000b00000000000000001900110a191919030a07000100090b18000009060b00000b000619000000191919004191140b210e000000000000000019000a0d191919000d00000200090e00000009000e00000e0041cb140b010c0041d7140b1513000000001300000000090c00000000000c00000c004185150b0110004191150b150f000000040f0000000009100000000000100000100041bf150b01120041cb150b1e11000000001100000000091200000000001200001200001a0000001a1a1a004182160b0e1a0000001a1a1a000000000000090041b3160b01140041bf160b151700000000170000000009140000000000140000140041ed160b01160041f9160bf804150000000015000000000916000000000016000016000030313233343536373839414243444546000000000a00000064000000e803000010270000a086010040420f008096980000e1f50500ca9a3b000000000000000030303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839394e31305f5f637878616269763131365f5f7368696d5f747970655f696e666f4500000000b80d0000980c0000a80d00004e31305f5f637878616269763131375f5f636c6173735f747970655f696e666f45000000b80d0000c80c0000bc0c00004e31305f5f637878616269763132305f5f73695f636c6173735f747970655f696e666f4500000000b80d0000f80c0000ec0c0000537439657863657074696f6e0000000000000000640d00001300000014000000150000005374313372756e74696d655f6572726f72000000b80d0000500d0000d80d000000000000ec0c0000160000001700000018000000190000001a0000001b0000001c0000001d000000537439747970655f696e666f00000000780d0000980d000000000000200d0000160000001e00000018000000190000001a0000001f0000002000000021000000780d00002c0d000000000000d80d00002200000023000000240041f81b0b0990100100000000000500418c1c0b01100041a41c0b0a11000000120000008c100041bc1c0b01020041cc1c0b08ffffffffffffffff"; - // [{"power": {"type": "range", "data": {"min": 199, "max": 199999}}}] - let arg_in_cbor = x"81a165706f776572a264747970656572616e67656464617461a2636d696e18c7636d61781a00030d3f"; - let seed = b"seed"; - let user_input = b"user_input"; - let ret_val = inscribe_generate(bitseed_generator_wasm_bytes, arg_in_cbor, seed, user_input); - // Map([(Text("amount"), Integer(Integer(1))), (Text("attributes"), Map([(Text("id"), Text("user_input")), (Text("power"), Integer(Integer(44607)))])), (Text("content"), Map([]))]) - assert!(ret_val == x"a366616d6f756e74016a61747472696275746573a26269646a757365725f696e70757465706f77657219ae3f67636f6e74656e74a0", 1) - } } From a2cff9560e6f544ad9a1ad9a9b661656e608af07 Mon Sep 17 00:00:00 2001 From: jolestar Date: Sat, 18 May 2024 12:49:05 +0800 Subject: [PATCH 3/3] fix up --- frameworks/framework-builder/src/releaser.rs | 2 +- .../framework-builder/src/stdlib_configs.rs | 18 ++++++++++-------- .../framework-builder/src/stdlib_version.rs | 8 ++++++++ .../src/error_descriptions.rs | 10 +++++----- 4 files changed, 24 insertions(+), 14 deletions(-) diff --git a/frameworks/framework-builder/src/releaser.rs b/frameworks/framework-builder/src/releaser.rs index 6def6c3fca..648d1174bb 100644 --- a/frameworks/framework-builder/src/releaser.rs +++ b/frameworks/framework-builder/src/releaser.rs @@ -46,7 +46,7 @@ pub fn release(version: StdlibVersion, check_compatibility: bool) -> Result<()> ); } } - + version.create_dir()?; let curr_stdlib = build_stdlib(!version.is_latest())?; // check compatibility if let Some(pre_version) = pre_version { diff --git a/frameworks/framework-builder/src/stdlib_configs.rs b/frameworks/framework-builder/src/stdlib_configs.rs index 35c36d5512..66df8b8424 100644 --- a/frameworks/framework-builder/src/stdlib_configs.rs +++ b/frameworks/framework-builder/src/stdlib_configs.rs @@ -1,7 +1,9 @@ // Copyright (c) RoochNetwork // SPDX-License-Identifier: Apache-2.0 -use crate::{path_in_crate, release_dir, Stdlib, StdlibBuildConfig}; +use std::fs; + +use crate::{path_in_crate, release_dir, stdlib_version::StdlibVersion, Stdlib, StdlibBuildConfig}; use anyhow::Result; use move_package::BuildConfig; use once_cell::sync::Lazy; @@ -25,13 +27,13 @@ static STDLIB_BUILD_CONFIGS: Lazy> = Lazy::new(|| { .canonicalize() .expect("canonicalize path failed"); - let latest_error_descriptions = release_dir().join("latest").join("error_descriptions"); - + let latest_version_dir = release_dir().join(StdlibVersion::Latest.to_string()); + fs::create_dir_all(&latest_version_dir).expect("create latest failed"); vec![ StdlibBuildConfig { path: move_stdlib_path.clone(), error_prefix: "E".to_string(), - error_code_map_output_file: latest_error_descriptions + error_code_map_output_file: latest_version_dir .join("move_stdlib_error_description.errmap"), document_template: move_stdlib_path.join("doc_template/README.md"), document_output_directory: move_stdlib_path.join("doc"), @@ -41,7 +43,7 @@ static STDLIB_BUILD_CONFIGS: Lazy> = Lazy::new(|| { StdlibBuildConfig { path: moveos_stdlib_path.clone(), error_prefix: "Error".to_string(), - error_code_map_output_file: latest_error_descriptions + error_code_map_output_file: latest_version_dir .join("moveos_stdlib_error_description.errmap"), document_template: moveos_stdlib_path.join("doc_template/README.md"), document_output_directory: moveos_stdlib_path.join("doc"), @@ -51,7 +53,7 @@ static STDLIB_BUILD_CONFIGS: Lazy> = Lazy::new(|| { StdlibBuildConfig { path: rooch_framework_path.clone(), error_prefix: "Error".to_string(), - error_code_map_output_file: latest_error_descriptions + error_code_map_output_file: latest_version_dir .join("rooch_framework_error_description.errmap"), document_template: rooch_framework_path.join("doc_template/README.md"), document_output_directory: rooch_framework_path.join("doc"), @@ -61,7 +63,7 @@ static STDLIB_BUILD_CONFIGS: Lazy> = Lazy::new(|| { StdlibBuildConfig { path: bitcoin_move_path.clone(), error_prefix: "Error".to_string(), - error_code_map_output_file: latest_error_descriptions + error_code_map_output_file: latest_version_dir .join("bitcoin_move_error_description.errmap"), document_template: bitcoin_move_path.join("doc_template/README.md"), document_output_directory: bitcoin_move_path.join("doc"), @@ -71,7 +73,7 @@ static STDLIB_BUILD_CONFIGS: Lazy> = Lazy::new(|| { StdlibBuildConfig { path: rooch_nursery_path.clone(), error_prefix: "Error".to_string(), - error_code_map_output_file: latest_error_descriptions + error_code_map_output_file: latest_version_dir .join("rooch_nursery_error_description.errmap"), document_template: rooch_nursery_path.join("doc_template/README.md"), document_output_directory: rooch_nursery_path.join("doc"), diff --git a/frameworks/framework-builder/src/stdlib_version.rs b/frameworks/framework-builder/src/stdlib_version.rs index 122632ca4c..00dfbcb830 100644 --- a/frameworks/framework-builder/src/stdlib_version.rs +++ b/frameworks/framework-builder/src/stdlib_version.rs @@ -59,6 +59,14 @@ impl StdlibVersion { release_dir().join(self.dir_with_file()) } + pub fn create_dir(&self) -> Result<()> { + let dir = release_dir().join(self.to_string()); + if dir.exists() { + return Ok(()); + } + std::fs::create_dir_all(&dir).map_err(|e| anyhow!("Create dir {:?} failed: {:?}", dir, e)) + } + pub(crate) fn load_from_file(&self) -> Result { let file = self.output_file(); Stdlib::load_from_file(file) diff --git a/frameworks/framework-release/src/error_descriptions.rs b/frameworks/framework-release/src/error_descriptions.rs index cbefca0cc0..283f0101d5 100644 --- a/frameworks/framework-release/src/error_descriptions.rs +++ b/frameworks/framework-release/src/error_descriptions.rs @@ -12,7 +12,7 @@ pub static ERROR_DESCRIPTIONS: Lazy> = La let move_stdlib_err: ErrorMapping = bcs::from_bytes( STATIC_FRAMEWORK_DIR - .get_file("latest/error_descriptions/move_stdlib_error_description.errmap") + .get_file("latest/move_stdlib_error_description.errmap") .unwrap() .contents(), ) @@ -21,7 +21,7 @@ pub static ERROR_DESCRIPTIONS: Lazy> = La let moveos_std_err: ErrorMapping = bcs::from_bytes( STATIC_FRAMEWORK_DIR - .get_file("latest/error_descriptions/moveos_stdlib_error_description.errmap") + .get_file("latest/moveos_stdlib_error_description.errmap") .unwrap() .contents(), ) @@ -30,7 +30,7 @@ pub static ERROR_DESCRIPTIONS: Lazy> = La let rooch_framework_err: ErrorMapping = bcs::from_bytes( STATIC_FRAMEWORK_DIR - .get_file("latest/error_descriptions/rooch_framework_error_description.errmap") + .get_file("latest/rooch_framework_error_description.errmap") .unwrap() .contents(), ) @@ -40,7 +40,7 @@ pub static ERROR_DESCRIPTIONS: Lazy> = La let bitcoin_move_err: ErrorMapping = bcs::from_bytes( STATIC_FRAMEWORK_DIR - .get_file("latest/error_descriptions/bitcoin_move_error_description.errmap") + .get_file("latest/bitcoin_move_error_description.errmap") .unwrap() .contents(), ) @@ -50,7 +50,7 @@ pub static ERROR_DESCRIPTIONS: Lazy> = La let rooch_nursery_err: ErrorMapping = bcs::from_bytes( STATIC_FRAMEWORK_DIR - .get_file("latest/error_descriptions/rooch_nursery_error_description.errmap") + .get_file("latest/rooch_nursery_error_description.errmap") .unwrap() .contents(), )