From 89a4f5b4d904f9e10ea44834a376e29034ee115d Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Wed, 19 Oct 2022 17:05:50 +0200 Subject: [PATCH 001/115] =?UTF-8?q?Ajout=20explication=20d'utilisation=20d?= =?UTF-8?q?e=20la=20doc=20et=20ajout=20d'un=20warning=20quand=20les=20fonc?= =?UTF-8?q?tions=20ne=20sont=20pas=20comment=C3=A9es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cargo.lock | 7 ++ doc/DOCUMENTATION.md | 191 +++++++++++++++++++++++++++++ doc/Screenshot_20221019_153737.png | Bin 0 -> 33185 bytes doc/Screenshot_20221019_153803.png | Bin 0 -> 55212 bytes doc/Screenshot_20221019_153817.png | Bin 0 -> 43087 bytes src/main.rs | 15 +++ 6 files changed, 213 insertions(+) create mode 100644 Cargo.lock create mode 100644 doc/DOCUMENTATION.md create mode 100644 doc/Screenshot_20221019_153737.png create mode 100644 doc/Screenshot_20221019_153803.png create mode 100644 doc/Screenshot_20221019_153817.png diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..1e08526 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "burritos" +version = "0.1.0" diff --git a/doc/DOCUMENTATION.md b/doc/DOCUMENTATION.md new file mode 100644 index 0000000..ee88c72 --- /dev/null +++ b/doc/DOCUMENTATION.md @@ -0,0 +1,191 @@ +# Comment utiliser la documentation Rust + +![](https://www.rust-lang.org/static/images/rust-social-wide.jpg) + +## Écrire un commentaire en Rust + +Pour écrire un commentaire qui apparaitra sur la doc de cargo, écrivez : + +```rust +/// Votre commentaire +``` +pour commenter votre fonction, attribut, structure.... + +Pour les commentaires de **crate** et **module**, utilisez : + +```rust +//! Votre commentaire +``` + +*Les commentaires style java (`/** */`) sont supporté à l'exception des règles `@` **mais utilisez plutôt les commentaires standard de rust please***. + +Vous pouvez ensuite écrire votre commentaire comme bon vous semble; la documentation supporte le markdown, n'hésitez surtout pas à mettre des h3, des textes den gras, des exemple encapsulé, etc. + +Petit aide avec la markdown dans le chapitre [#aide-markdown](#aide-markdown). + + +### Exemple + +Vous obtenez quelque chose sur votre code comme à la figure 1. + +![Capture d'écran de main.rs](Screenshot_20221019_153737.png "Aperçu de mon main") + + +## Générer la documentation Rust + +Éxecutez la commande __`cargo doc`__ dans le dossier du projet, cela va générer un dossier dans le dossier **target/doc/** qui contient des pages web, ouvrez le fichier **burritos/all.html** + +Lors de l'affichage de la liste de vos fonctions et autres éléments, la doc n'affiche que la première ligne, le autres lignes sont affiché lorsqu'on ouvre les détails. + +### Exemple + +En partant du code de la figure 1, vous obtenez une documentation comme aux figures 2 et 3. + +!["Page d'accueil de la doc"](Screenshot_20221019_153803.png "Page all.html de la crate burritos généré à partir de l'exemple de la figure 1") + +!["Page de la fonction main de la doc"](Screenshot_20221019_153817.png "Page de la fonction main") + + +## Aide markdown + +Comme le markdown est utile pour écrire et mettre en page des commentaire en Rust, petit tuto sur comment formaté du texte en markdown. + +lorsque vous voulez passer à la ligne, faites 2 sauts à la ligne en markdown (oui pas une blague), un saut à la ligne sur le fichier markdown n'est pas +considérer comme un passage à la ligne, ça vous permet juste d'écrire des commentaires sans aller trop à droite dans votre IDE comme celui-ci. + +### Italic et gras + +```md +*Texte en italic* _Texte en italic_ + +**Texte en gras** __Texte en gras__ + +***Texte en italic et gras*** + +``` + + +### Titre et sous-titres + +```md +# Titre type h1 + +## Titre type h2 + +etc. jusqu'à + +###### Titre type h6 +``` + +### Listes + +```md +- Une +- Liste +- Non +- Ordonnée + +1. Une +2. Liste +3. Ordonnée + +- [x] Liste +- [ ] de +- [ ] tâches +``` + +#### Exemple + +- Une +- Liste +- Non +- Ordonnée + +1. Une +2. Liste +3. Ordonnée + +- [x] Liste +- [ ] de +- [ ] tâches + + +### Code + +```md + `Commentaire mono-ligne` +``` + +```md + ``` + Commentaire + Multi + ligne + ``` +``` + +```md + ```md + Commentaire + multi + ligne + avec + coloration + syntaxique (ici md pour markdown) + ``` +``` + +#### Exemple + + +Texte avant `Commentaire mono-ligne` texte après + +``` +Commentaire +multi +ligne +``` + +### Tableaux + +```md + +| Colonne 1 | Colonne 2 | +|-----------|-----------| +| ligne 1 | ligne 1 | +| ligne 2 | ligne 2 | + +``` + +#### Exemple + +| Colonne 1 | Colonne 2 | +|-----------|-----------| +| ligne 1 | ligne 1 | +| ligne 2 | ligne 2 | + +### Liens et images + +```md +[Mon lien](www.google.com) +![Mon image](www.imagelink.com) +``` + +### Autres + +Vous pouvez retrouver d'autres exemples par ici: + +[https://doc.rust-lang.org/rustdoc/how-to-write-documentation.html](https://doc.rust-lang.org/rustdoc/how-to-write-documentation.html) + +ou ici + +[https://www.markdownguide.org/cheat-sheet/](https://www.markdownguide.org/cheat-sheet/) -- Méga utile + +## Liens utiles + +La documentation officielle du crate core: [https://doc.rust-lang.org/core/index.html](https://doc.rust-lang.org/core/index.html) + +La documentation officielle du crate std: [https://doc.rust-lang.org/std/index.html](https://doc.rust-lang.org/std/index.html) + +La documentation des crates téléchargeable sur [https://crates.io/](https://crates.io/) est retrouvable sur: [https://docs.rs/](https://docs.rs/) + diff --git a/doc/Screenshot_20221019_153737.png b/doc/Screenshot_20221019_153737.png new file mode 100644 index 0000000000000000000000000000000000000000..f407abb877f114c007b0145ab4456d7e04c92642 GIT binary patch literal 33185 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 saBE=wza{yq`SNSi+iu{@B7a4 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

9oncEQ%zILw4c z2vLoFvpslI-mHNyq`$qQ=#*;a{(@iMwYMu!g&5p0ahzN?tPk^w^YW3mnFOAb!Y<@( z9e*Rvc?}}VnW3?DkUgML#;#@OBZvE;XoxrQT#UVnexnEo6Zt^Tb7ZGt;P5wg=m>Cy zpG<&8^cl$5ADtc&4U-bN%D1&E_xBHa7x}NgFVm}Y_{Ha1BR9|uo_kV1p^nR_gw?BV z{r&nGH9XMzKQ^x)Y}3#FC`j0VznOv7P!r&@gs?}Ul3Gd)I7e^OsV*t!`_V#dJ;)K% zgjnncuY7HyprDx`Nb~Oujs*DT=UwVK-x{NPXkE{ltb(2wSBlOjvj>hgmdQh8%r5D> zU)MfzsM2)}=Ptc|=f*^{zgsY=t4UuydcTsJi$jd9JK>&eFfN$*#u#J=gh?dOz}bmH zSBvmMv9qIlc|`}|Nu#faAR4yb2fEJEz{d8XH_wLJ>uX5s*IF}&nCyAqI}VwG>m!-) zU-7J=eQdI3kqp~61#bI@-rnCMVUD*J9nZvvO@u z7OPyM3vELEth=)Y^Box9pCH3GHq}=5SdB~8k}n9_*`=USs7jA|uK>L^XI|-x;W1Ay z5(mN`4D6{cOl#*qeiB$Y>fWT!KJ`LRkQ!cu-}9Qd+4!P5chsqQBBdAd;H|J-|8Nde zlpNV7t<{$1mk8WlbZ4p$H4$|0YE5h;MJS>%!#UEyX^HRdEq@DVBSvff!^)NJdp5Tm zIRYQMZ`BhZG3_^ewB(<9AZO*A%OdcPJ)bb6sFKdp;Uw^G*09~3y*jd+uuiV)T~t)j zoD7@US)9$q)wHqq7gIjv==R!B%kL>x{+aKIBa zb%$ak@{zd)=0CjpjmmKL6f5zQ;+x;K*!68>yf~Ds(@iTJR1d}+cV%1#Ukja?Pj&V2 zKR-{qdES`4D1YR|&ifDKqxge0*?xH&JNwtl^+m2DJ-#rt7xtVo{M?W~{YZ%7`}5xw zIUL@n9&Qb(O%`S{m#^kGxE`pX0LHWr&bC?3DQoGb?8fOXMN}=4Nzmyis!=Jb=u_?& z@z}jA#)FXYN9iuc1RK-OEpf~=Q7gL`(>@voYncQuJ^&0+{y~bdr|FB_|Y=9WJ#*0r&~Vic1TBsi?5Go-T0YD@1RXhmVzmARJUf-5e9Oo{_&>*o4yJfktWg6)N5(4*lI$P(*(w|j*R`?veG4% zTu>6ZHR};+1w8sWQsiNft!%H|OxzvNIxIr|S*CLeVPoKfPkPnZyXLnkjJ*ZLq%`uz zqYzO=MsD0frX9v~t`7E8MDb=7N#zNP*Gn_oO?01qLq~uBd&7gT{g3@;d1VXkD)Co@ zV|pe`vF-AqyRV+`dU5#@a?q}zn7N-U+6uNlJ~LCMj2)+T;`#Uf-(>)&iXl|y+=7A) z>muy%y6OZ*>3y^j`m2F+Q_ic4Jb1N!jj*nbllwl+dInLFi_GEtvH5^kpS{ohre{aF zZmVBLgGB5HiEl^3MBU(1rirF1^KAmR$|>M(o)C$L`GgwzEW8p23Iejl<@M44;!I+T`FVP0Rn@t6ycuU-^s2H}0y+-Dk8qe7{jL9AC6A{oCv>p1#+N{Ej zwy}vIV`;i_6W-Ix&c{VMeW%Z?Qgf}Cc|rcD_BXCIR?LoCPSZdA<**Qm+H8bQ>mI_&PRP=)m_EEuHVg9?4r#+AsbF(jRjuNz363L#fj8>y+k zvo8GV$giJ<*rq=Oq-h>`DqkZ;)Z4J?6N0Xo=m5e+*Lj z`)SXgt#G)NgqjK>sY{Qi7z_)KA08i6xpuK*cC2Vap^qtyBF-cZ=i;WU#Y|>iHF2Kt zGgM+san7rXc`ECtNBpPp_bL`&R)PXv((e_t?Il_#JQlR&%Ns7dnAwV@XvE7!ZoOG$ z2Z7bL=NDwsbg~E|p&kIx>)br>s z39EP)cfRLb1L7U~>m`(lo@&Nh9u>^bJ_;B>p^h4*iflDoTD@SVmaz9`dS!M(wKHjJ zq4X;lv??3oD?4gt|7ZTMXg1q=x~Q(qIC7)R?i$Lcp8jWb0kY{_z465(3C3dWI~QJM z+54ipYHv$)WsNMT9AaRfWAJNgW@>8MsMwl6mS=iC)^J;R>DGC%3|f{I&=WZHD5il#WYRbw?!9~r( z5>kwO+7onNnn|Es|1{HPykeRgwpagzj_Frao|t$)Z~W~tYn-83&fZT$8tV1~GrJoMJ_Cb$W*k#u1!}0z#vx z!mML&%?j;L(8%!VcQ+K&xEb%h9%T)RE;yzCjP0xQ^j5An^g|RTC2jwiC>1kHFDO8z zR9DNzF8@1SstTTS-UZXz+#U;X#+Th)o$cTM``Y$+sMWO49{#ca`pnE;eJiZB%74dC zW!O*3u*V5DILxwyqUNm>?780+mZ(li@gfQFk+*(}sCvAx_)^sbhp%1C;M0_y;>Zztlo^Q`p2V*p5ankSaqe(lyl3;pT~#X0yFWsSP++6sf@z`;i4Mq z!J(l)dw;S)bA>#PH$SYg3&4AJ>N8c({18qd`7UwoD$tI-P2HzCFnPN2zi{ohoqxvW z{A7BEOH2FSmpsT9dqV{7}zA zT7poC{2jV{uzUO}MLwn&Hk_-bsiIL2*qgM}h5D%Kh+&HwHbpf94fKP8A{XyvcPQvi z2etIwnBGVwSx(2A8Rcq&ha2}V=~&aMPHC%Gv6fzTdpoc8hA)kM3tSn_yQ|nyLp{Rf zE_-+QEe8$vrS=MNxJn!JNSXclwttEO&?kb}`yx6zM+SwKwpZ5X=1yLZ8Mh)p+8Qoj z;GY40@0z7*_al2UpB#SK@le7_aqb|3?lLT1LUXe?HZ(mDk>7D{7X8Tr-^EYt%t(db zZa?2Z^9+%80Zn^px$xCfb>ot@3hoRx{>jkIc_M9tnT%=5n^5=<+_ue zuwq8789CfXaXvClbg!-TrU_&!yZNl!)V2tNHrx0V)g`08cv~W$kEe$%9U>!G3}UBM ze)FrX$3E4drhYVTc)nEpigz*LeN16gmhIH7hfm^iY4Cd&p$$RiChuT|m_L4S**KOa zAblVtU2EIH*@BlPP9;SW8Hd+OkQ~g>1W#t1Ur>diL8y{q;Hrl6+DU*ZHjz zmKWnAA1vNNdDQdzC^=svdJKgv5xg__&f+d{>kgogN_X6E;EDdm8RUeolwG~8K#kN2HN%6t>7b8cn-RLTwx%WzQ4 zFDq_Zr%7=B37~LZxRe=YEiM}Mnq~yDu8k^!$Y0G0E4vN6a(QuKfq!w%Uv-Z_RM&VI-7L0>?vV?o^{%nT^n9I|dhR6MCDk1d>N{Q?IN{Xz#GSvG zu46o+mBF*Jwk5<{nm^zzyz}d_Qv4x;#(6Q=OUv8__}m?BWFi=;!5DNY(G(pNvE7J+ zR26p;23738A{Vvq>PUu-1AVf&s({ua>00XYw~AF52+9OWD!S zNK8!2^LVgbDRpLkSbQi?rINn=PqaA>heJiP9E*-!L@+k-tj=u+uMLH^OH|Ms@29)t zM?_T=s-_gkUgUq_ap*3Xn|82MHs|{d6UfFaHWIph?5qAdv(I+7W#O1hQauIbre|}~ zSHHzp3aZu0u&%+bg^Dnlg$UD+g=gm(Z>v5^+Ny%>s0I3CK;PGaT%x?=dl`39X68No zMcCli5kLBvI5fYA#Y1m`9(_4*$E}dS-%o5C4|+o*MoS yl;ytg|8mxX|F;e2|4;ZI7~TKJ;s0VB=(^*H&Foq`f}j6Qa^pv44{P)t-~JZ>{$C#e literal 0 HcmV?d00001 diff --git a/src/main.rs b/src/main.rs index e7a11a9..c38343f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,18 @@ +#![warn(missing_docs)] + +//! # Crate burritos +//! +//! Crate du point d'entrée de burritos +//! +//! ## Liste des crate: +//! +//! - kernel +//! - machine +//! - A remplir + +/// Cette fonction est le point d'entrée de burritos +/// +/// Elle se contente de parser les arguments de lancement et les transmet ensuite fn main() { println!("Hello, world!"); } From 9430fb04d1c9f6bc7f02a3479b267db5eb12ba9c Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Wed, 19 Oct 2022 17:50:56 +0200 Subject: [PATCH 002/115] =?UTF-8?q?Am=C3=A9lioration=20de=20la=20documenta?= =?UTF-8?q?tion:=20explication=20des=20tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/DOCUMENTATION.md | 27 ++++++++++++++++----------- doc/Screenshot_20221019_173551.png | Bin 0 -> 68125 bytes doc/Screenshot_20221019_174036.png | Bin 0 -> 46984 bytes 3 files changed, 16 insertions(+), 11 deletions(-) create mode 100644 doc/Screenshot_20221019_173551.png create mode 100644 doc/Screenshot_20221019_174036.png diff --git a/doc/DOCUMENTATION.md b/doc/DOCUMENTATION.md index ee88c72..81c15e1 100644 --- a/doc/DOCUMENTATION.md +++ b/doc/DOCUMENTATION.md @@ -9,9 +9,9 @@ Pour écrire un commentaire qui apparaitra sur la doc de cargo, écrivez : ```rust /// Votre commentaire ``` -pour commenter votre fonction, attribut, structure.... +pour commenter votre fonction, attribut, structure, module.... -Pour les commentaires de **crate** et **module**, utilisez : +Pour les commentaires de **crate**, utilisez : ```rust //! Votre commentaire @@ -28,14 +28,14 @@ Petit aide avec la markdown dans le chapitre [#aide-markdown](#aide-markdown). Vous obtenez quelque chose sur votre code comme à la figure 1. -![Capture d'écran de main.rs](Screenshot_20221019_153737.png "Aperçu de mon main") +![Capture d'écran de main.rs](Screenshot_20221019_153737.png "Aperçu du main") ## Générer la documentation Rust -Éxecutez la commande __`cargo doc`__ dans le dossier du projet, cela va générer un dossier dans le dossier **target/doc/** qui contient des pages web, ouvrez le fichier **burritos/all.html** +Éxecutez la commande __`cargo doc`__ dans le dossier du projet, cela va générer un dossier dans le dossier **target/doc/** qui contient des pages web, ouvrez le fichier **target/doc/burritos/all.html**. -Lors de l'affichage de la liste de vos fonctions et autres éléments, la doc n'affiche que la première ligne, le autres lignes sont affiché lorsqu'on ouvre les détails. +Lors de l'affichage de la liste de vos fonctions et autres éléments, la doc **n'affiche que la première ligne**, le autres lignes sont affiché lorsqu'on ouvre les détails. ### Exemple @@ -168,18 +168,22 @@ ligne ```md [Mon lien](www.google.com) -![Mon image](www.imagelink.com) +![Mon image sur internet](www.imagelink.com/image.png) +![Mon image stocké sur mon pc](image/monscreenshot.png) ``` -### Autres -Vous pouvez retrouver d'autres exemples par ici: +## Faire des tests -[https://doc.rust-lang.org/rustdoc/how-to-write-documentation.html](https://doc.rust-lang.org/rustdoc/how-to-write-documentation.html) +Pour écrire vos tests faites comme dans l'exemple ci-dessous: -ou ici +![Exemple de test](Screenshot_20221019_173551.png) -[https://www.markdownguide.org/cheat-sheet/](https://www.markdownguide.org/cheat-sheet/) -- Méga utile +Executez ensuite les tests en faisant `cargo test`, vous obtenez comme en suivant l'exemple ci-dessus le résultat de la figure 5. + +![Exemple de résultat des tests](Screenshot_20221019_174036.png) + +Lors d'un cargo build optimisé (`cargo build --release`), les tests ne sont pas inclus dans le fichier binaire. ## Liens utiles @@ -189,3 +193,4 @@ La documentation officielle du crate std: [https://doc.rust-lang.org/std/index.h La documentation des crates téléchargeable sur [https://crates.io/](https://crates.io/) est retrouvable sur: [https://docs.rs/](https://docs.rs/) +Pour le markdown vous pouvez retrouver des tutos ici: [https://doc.rust-lang.org/rustdoc/how-to-write-documentation.html](https://doc.rust-lang.org/rustdoc/how-to-write-documentation.html) et ici [https://www.markdownguide.org/cheat-sheet/](https://www.markdownguide.org/cheat-sheet/) diff --git a/doc/Screenshot_20221019_173551.png b/doc/Screenshot_20221019_173551.png new file mode 100644 index 0000000000000000000000000000000000000000..463f662febbf669991bcaafb3602636c91dcb659 GIT binary patch literal 68125 zcmdSAWl&sA*Djnp9xTBvKo~5z2A2SX1P$&G9D=(`LVy`GxI=IT4K}z2cOBeqU~m~6 zJ|Oq=oH}*hAE&;5XR0Vxb?@$8yL+wGeOKS=@=A3b_X_2|)K zrncSGYoS|SMl(BWgk8A4SwqOVY)sZ2&C3R5p8}@ zvEb`kdYkD>W<-8w@PQwM z)&rf_Ei!wBJo`@dPDi~8VjYIp?g!mxr3htur&(?^j?Z&C7*4|bPLf0BH)HKh8K&zl zc%cD^W|w_?u!1`rk1>lmemW%j!7r%P&R<7?%gZSaiqp(3<-NR*)a zJ{t-#5QqDwIdz3Sctn->dxT^X?aF+=&<@rI>ZK$2nGI&|HkBG0b6Q zyams_fFwR=p>k$6DD3Apax zwq1A3!j+}--mTze(~CEp_b#DnpXf18mJz8az7YpxgpJzFJ9cCa&K<{= z-Y#fw>h)HXXY2 z9UA#v_oeG6{Ftm0^C#_Ok_&Ulz;a;#pc~2TwMo3xz$G+?O9{YQlP)|(zI>6b0{SL#;{U%IH&5Cwpv&$u?=HLKdZcN_$LY{J79h=nhGf9e!vdpyntvMmd zwyJW%gvoEBLoy!Q!<#?#fo4-3^f!vE`Zf`?y7_?$_JZJ$HNP_-rmI&S811 z{|g@<Oq#S)jpnu~k)3>>JEi0=MN$lVGs)+hU7bhq*SzT)C=w z^B#6uQ2lC!Ktn&L!V*Tz>bw?2Ey{zGFN*jiVZNB=RD)!N74>1+_(rJ(o?5*on>w0u zS@1m52HJAWR-BF}Asa6$2M+KU3Yf0}9!QJ5`da6`o2DFwa|MVwvh+LvSE$i~Z~}Up z=5yt9TR&4}9;zUyn||FRG;3Q>c2uf&wOK5&Fh!w*T=7ti>sMzdg*acv)Lt|-+D`l_ zxf<4=v>U7qwYxCRi7;6>t+e2Lu1V&8yvgT%VBKIn{>O!BTvo*)f(Tp5$KGV)d1n1} zB3iFSCrqIB_Cigfr4#W#hF zVRL#)%E{Em!}H4$&l8`H4ypD(@DByftESVI{j$R0cuH#-hS%3= zCU4XBn%uM;njrA4rV_}Naz3T|H-c}|B+TY#qt(=T%!SN4_kK`^mSkkImSawA)qB9+Q0Ybt>cG;ys&iu5*fh zzkO5phjD^Ilg+B1z?dF24kOL;swAc8sw-jL(8rQ^4=sY3v59r&WZPkn%=T>C50;x+ zWWyTmo$ol{ylsZKaY^I-GxOqwu6uf;Sd9^)Y)W;wD1TODr^$WY==#^-E_~{whtOMN zn0gIZ$uGeX7>^xAmM{Ms>Ue#VED3}`9VGm=j01Q~exW*V)R8uhW8&3bE;t_01ilZA zk{!q3&_0EwrpY6@`#!BcnRk_zw$V5}%9-)0*{e-Ly|}gak#^~0;j*47``Z8Ix-o%7 zP9`{%)g&0gjxreN^!r-t#r#>S4zk^8=0^LMaVEm>6=pb%Zk!)vKgp@;Hh(wAqv>72 zZTFIkyx0Ug)p-)vXTRd#CCqFIxlQ#wL%Sj9htnjL7m`^VUXZ1khqyXi|WIaRLIuLa)(3 zlnGwl%n2l;O=O6W4jlOaG)$|>WyV_51=C+-`q(wErJ2El{)wpOS$^*3Df~_HWpL`} z&+h;c>L$fb1EQ`r*M=lCYeXlJR=w6Um2!a%!Rq?`X;-LCK4Cm#6NfM(`;-s?`A06wkyo60*}S2 z#KL4X@e`Mm0}%0WamPce-=~CyRo>K~Ik@M|EKy{<3yoB!ra{5N+zc8~GP7@sQjUo$ z`o%e#+{uF_R!EUL30~XIz-`j2fyb|%S`=)JtP`wDAhy|>`AcT_Ys zLkXwyE_#*A^H#`C3|?A~b9~kOZV4dH_E)cdP5TWJ`nsEGXX<*h-Xi+m7xLbFGCx4I z9)V^S-T1N7di)a76UB4Ua!PJ~im}#>hZu;6C-nw9(5=Iz^4BTJ7cX_0;;=Bgb9BG0 z@y=IoOz-eDRwO#76>lhoBm@_f`%fSpr#tgs=+Fwwaj=c?hC{2zmrl&s1@+AL1h9M5 z75CRX1Dn?V8-msiQCX5-68;=*o{Zx78}IO~F$)x=RI!+GMYTDIc2Zxmru= zLOx()MpX6hBsU~cY?}$4Y*ZCkR}0vHSC!cVlD%0dAx z_nGzTsdg(gID^pW<<7u-F8S!4C>^V+1dh)RE?6)XPSZu}4ofat)%NQB9-AhH@9}1x z1(+CEET!h&tQXfDK}nu>gNhs`$S}xWVq>~=hH1Ir(5@;5fO;Bl#&`5voILk((-5x$ zteP&uxt`l-HLMh<@Md$f!L50mkK4ha3PaSTy&}D`6)vQDa^%UIuB&EKRW|BJ1G4%S zRVSqlPhP8vGe?08rnP)c{}eLa4h$%+xORS8dlE<|*5a@~&!tx!TUy)B;hO9@GAPRYw6S=GIP7bWgGU9*gr zml9l-Zxn_;uw`}Y))-wiXx=|>OBe}fL%SR23B?A%C%1jo%Hz<1=2UM>zV?weO4l90y8HcP_^&{=S>J+p?K?%aR;9R>d|=FuPRfUUexg8Nq@Ni{lkyGkmoe|hz`(+ zw1i8dYNdIsA?Q&ivhvxKlWF^pLl1jGZ^}zT`y%;|HL3))B`@U~p#?h)vBOkpC7PL= ze4dmny+jZFu*6BvHAR$`9i|*E`RuGUYRAN;8$9(`pzx`z-=a1cA-ip{Kc|1;ToD8W zj)dq4y+;@HStQOKKb=!*+}8eOc@BWVPJS?6BP@89WG;0Ek5fYDkvOIc2R?6Mh2455 z@^sG-UvI3uq=|(tCoXubNoTtI2#G4$^e-T@($LX!!Qq4 zH*cbt=82+B`%cz=Jgb#KYR`~a=HA+TZlKn|)Db|qSO5icQ7c`eDX-fagE`B?X$c7$Djwr zKE8GMFcT$=voY+@EW^hU(TXh;(B3^lIb=G2byiDfdKC3~lEvWx055*`dgDg%k1(aG z;0?RQXMEi)QFcO`naX1OUz=Q~nk>=xc>mF&!P%n@rFNRb*ng%qQ>toazUq%v=_SQr zHUJe9WYVT8b0UQ_7&%?DO@L62S%!Dt-mLk& zZY+xOL0nvU@_#^gV>+8JhyVJ9HvHiT_Q=;rc>bZm|0G1*d8|^Coyuzgw~gE&+%OoE z$CrG9zy0&~^$`o3>UcFR&=+wE{-G*HO=+y-NXrNZo%%vX+mE}f{OnRt?tWx z#I*_pF2V1JnY*9wv!E!h2k8-0P<(y*Pzl3$K(e)s4$zct^pabi_vE>-eXqb7p8|JtQ3Ca@umZo8fP{`htmQ6vr4A423^2%`LNV2sn!`+h=r=nr8j2Me2Oh7Yqv5jj-ZJ;7BPlG zWNvHCb9;fNFlOIElL^@*zWJL|iCF{3@$Znm`QxGM1jBzuPex{Lk&BD|HbZvvc z`{nUo?`h+*00!q=+!$8aIwT&8~%W*l&EyhOpT7O z;j6mkn{`Z$8*%L z6yVJcC6&xgTf4?@4{}M};d8MnGq+`-w{c`-+)_Yb2ffh2vB}0Msi3wzP;rhiP1|Qf z%1?oMy2v!m3ppemW}b$OD|*E!K;uziQ}*%Vysr4_LUL4v89j83iL(iwQa9#vF&IEI zTTxgBe}P~xII&knOWoP^*p3OS;*X*q5b=`lk7a&_u<>j%_5R~E*+=YL1c8i6y15|8 z7A||0R?_AW(3k}%Mbod3)Vy;=gPaZ37DGZ%{@l6!KU@986`F2cQ)5RL6pW!Hr6feG z@l9k=vtFWRJEX|w^YB{$;sCV!bVFo_25TF0d{w_@px6!Pm5)sTGZOw3oT76 z!}g$M5BjPF0}lH>(2n-pz{SLAsF34Gl^+Q&tzdu`%3NHikD=IDlRMz;!l zl(+bYShTRih0criQlq7nsuoT*ZTbo|+{ZiW`Ums`8cV2tMy4h}j`~>3|BP#27VR2B zdP^?)RhJI*NQ-Gup8Ma?XQw{5%iXuJTaAZBGd6Qjo@@9w=38@Lj>8rfs+$nq((B?R z=d3iZtApzkQm8vZ<#b2g#^<<{waf)ec3d{cI?L(AUl#?)d~cD$lgqx zpKq!GgPx0vhczNx$JS3J$E$3ZJ&fwAmIynW$7)}_G625WnE4$8x1r_OA zq}?KGwXAFe%b5W>I&Oo0)SUx=nkF}5RPg4Jf6#B=ZM$93GDl>rm-cg+@!lSW{xNlP zYHzUEo$Wr`GvgNMZ6MmK(8@Jjm@n07X1-+l`B+tHNq}2-oA_q!`!lFUVKVOskO!=x+&ru}7?UJ_=KOXqpvVSj z4bl9Pua|As3^p|iI!2h|>#)i5A!VCS+&E|o`MKAnb1>_sp`At3VCGG#DyE|bd;E@-fuEQoAWlX)G3d**>_0=uYz z!hlC-_8fX zZ@#C7fnVqQVP@dG%6=0%pl;%=xd8E^-OEoCh}QAR+njP?IJrT!SqQ7;yd*rFNu}0F*jR+K2YEI!5Kh zy?39e5l;|B69s_u)ze~9YPQ5M4=T`Q(MC~DoSqt~BnR*(PD?WCx84Rcb?_8WI~ ztNt2}s6&hap9xJ`WPUjR8nAv4K%X-xtL2z!pHV|In`I>E*qKEwW@&Bf)V!!s!?ekk<7zYUuHPtPC=CeH_VrY`~?+=9NPVlZp9n|Bp6epZr@ zA8c#OuwD6;(%0dc5e7EKmyE4-_D|i$L(93pyQzk+Cviz;p(b(*hAv#3Vc(vfW>dLX zYh0I;6-^!;)8Ec>B9wo+y=g5+pN^2u9bhBa^+4iZE~LN^SZ`A&>yoK>6#9BAT5ULA z-z)}%5N-ba99z7(>pm(01VRGRys4RY_Q7?jq`btG(CXEFWF9VatSc?Gwd)t^o{e1v z5HkVwIe!{xxP>OX@!X(CJunP@EYCS^tdg_r5sSx!s&Tv5Myy9%|N9iZ%|(H$`~HZ< z#k6NLdv4Q7GVFBkW47t*A0EM%gB{b%uTN=GJ@RBr*Yc@4;M3LOU`jBJN#7gFh^#WO zKb6T7E~LZIdWBM=!U}?PmF9Merd)yrC=B2>Zedl*ZhF zj)tzYW2ubaZ;K%I&RvCXxTWqT?xeo=vHjDJ9{o0Q3ySH*}J`@ z34Xna{a+&$Cp~E8ipHE-vf?;3(Q8IPMX{|4W4{KbI<`w#|8w?SP0i8^_84q|r+z!k zsnM1-hP`ul{d6++_tqI|txZE-9|tNuHy_JOy7CgS-4A7t>?cO$EO@@aD==S%7x3hX zeg8>s&9?GdP}z40nBDN)8%4->Npi!C-cNUXa{r!cLPt}awVceS%_5gvgiKH}UqMMR z8b>3HEJt#t9B*Rlkk2^_A&au|Va;V0vg_78!uTd-i~loCNljB(zG4fmnZ-?Iee0;h zex>=GP$5tXNC|e>XlG!o(eCramf(k_`f-u+BGazt-R8z#ZRLB=$Hl#`j_f1e?cb1d z;!Fi#J%8P>I&jsRPh31~OYO82wq-$oPQiQ<2(B+lvBI(!I{2gQ@J&R^y!K??QzK=q z!Q2mGWdAAxNaV1zg3327e|>IMP|I!8eU3!EM+_eUM{fnnKOc_B`kV)1&AIkfZ`Gvf ziRoY7ZKrFwZ-L31Fst!}MWaL8Uv&-V!*P73NlOCclPb3bbLI<^7u~r+RId(W^#scH zKG0oEg%@iU7=b`CTn(Pt+#^@W+*@0dAMed9JUy#+8;jCBFQW9-;*2L2{d!B3!t)O6GQGu+lryS1rgVOZta61=yMrRU4ZpNr1NmfE2YYy2`Nr_| ztbDQ7`G9OjWz`;-tB6pmV`AFfu%ALjs$X5G8%nQLj4v=p;&Pq7v3iz>1;~g#&|Amh zZ74|h`IB$6P!Msri_Q1Csf<|!xKtZUL-uQCSLZav!+6!P>gHfExUM6I_i31r?ayod z6J%%A=4wVc=Uhy-8uy71Qppu2lua9-`^3h-l=CR8<4SjT+g#N)7@^SbO8$upct?d&Y+ zvjlt!dqA^fYX6d2hT~k9-mz4dhuHX6UOr?Zwe*jDYMIuCC79utT!LAv#5R|srV^w# z9mM_dY#8_9M}Z3BWB847#>I2(vUl05dDaOYcFV0F&Lo?7@uzIp2W2jv%ENPu{#KB> zjd%k1d_hgl8^60#>R-AGI6Ui}zQ=U$z`mPIQ8%Gujwu?L%r;NY*!@^-LZtGyb{ff; zV|{i`N2KHInV!@JHQ&zupjG87Q?ea!@jS)YvEh} z7Y28K|BqnrR{z>X)zW9%`yRz05k4UICu9!A1TSBaIyT$FflRxrGy`SEPMBt`1qd$Nk_r}$U=2~U~2u5Qag%- zMV!}RQqy0<9O&(<$8>~^pAr{OUqId>5PLNgO1OX3K*jrzO1HgJx@~1!z<#`y@SozC zFE;@kwSS-al8&|d0L~xzqTznw(W0#Ot-H^}Ik5PX7Ok0$|vf zAfuPbW~;S7Nh%AetHxbx668D;8>+^jS5{%vJrY^*F>sDToY}5%z5MjGKPoR~g4?)L zQg5(SECZuPBqPZ-=}REO|&q9aE+2vo?pf zVeH}s?$>Zoa)NCSF0F~7xnJM-zHy*sUVm7={eM0UF(?@&jd(fF*gEn=aPlRQz@eR< zTfIh!=$T#(4pl;;OK)-qKVxE+61p?tV2Cl>*@a+*4!E(zk!C9AXY>xlDMJjHy(Z&1 zq$1!My&r=#At6k4eXqPiB`~-;kF&J^sgqu|&G$9wLo4*&hNth$vCRn17?;TXIs$QvyVl-@!55hmZl*~ zSc4d%#Z0Ir8Ufp?CY-yZrR|+8+s1W0hEh}EKtMn~g1+1c2+SOSHB@4U?-qs!jeJ&D zHIdpd$`~A7nDQQ3Ce;g8Na~S}GqH$aLpiVai;eA&^L8w}4^xXzu(@n(sj)Y9^MkGG zrP%ueByGGbX#xN<@w?^WTqzsxFwjF*3E7Mq($P|Ueo+{a_7bysonMqyI27%DsD7GI zY%4akg}WrW$M@6#FGh`d@GuQhu(OtZF%oph5l|&=<i>TND%dQ{3Qm^Fl7qTR^0T3{tV+lq=_L6RrH*j-p{V*Y!n3-V6{ zNMxnoz4&(yZ>K3wX%m>nSk-MUNF`mgvcVg$Y#$eAA%MR30qqABO13!pQxND18c^%4 zxDG4qvHw8I*B_1r#-5RScL44yJM~8myh=@l4V*TJ08@1}OFfNS_Ge-Vr>Kd_^DM_v z%7?~hT@AR~@;D%v`q3asxIk@HoW6qvCk{Sy9I}$k+wik;7l0gq^6JkMJcM}_SD$Up zp$cyA*%NfweqO;!gG;RvTM(?|3*)6+a_}1kqr%ZIOQ$KI__3?EHVE+a^CnNb;h>;= zW6vG1hAJkBY~8}wSVFog2Cfo1Tj+R`7svZJF;5&M6+foL%5GI60cWOxQ>FWK4wevI zNHIKU{CQ*c=EpR>{C-+JjRt^yR`IAju&}0rpMK1_0=gh=FPDjOjx88;zZJyE)gLHN zYf~U9Qi81-%K|JLhD@D0D-5Hl%VDEd#9*fI;8(mUf+>Om6r%WV;isWwkCS5J#E?q; zNd2@o1kf}~C|F~i0TebWamq~$O(aB!WBPr6^YX_Zpg|Yen;*XKLeM1* z&}vM^n;`*Ax$@baG)vY?*?SRI_W z$tz`){1F>fb?PK)53f7BDW9RIr^M6l;g|UC*yLie?vJt>~{`PKhm|m1#6NfO- z1QMFr0=d3{qIsxEY%D@I+ay1+8$+~HV3WR)z7tDmg>>(+BuHq^y3RIgdz7gTklpEA z88iJ+5i1}OsceS6*Ycjzq(n;%1{Y_{sM#=EwA`YaV%MuvoPbYuWr`W_^rI*vFp_E9 zRtntcIx34j0|+1&?jD-W3^aH@!eLLSW_MkQi%o?_fkq4R1bR+<3WnNWn>1wRt~kbd zalgezuG1`m`)W`94Y@@XG`=b1MoSX_3bFGGad0Dd*=mm|RPAQ^^iS2@bYD zA*u`^m(nLlcW}2V^j~lR09Y5-Y4Bbi)xR6hE?Z45mGsQ$b~IcO_=GyEPCyQG0wq7^&AV-L0Y>*$!SR^1#n78s-e!5x-vd+F+hNyX*% z<>+VrhB%21iJZ?5vu%o7I2Fi5H|D`60><-c<}Vr6xH-3pU!@Kzxd@wBYcIMfK$3{k zb71C1-y$N+a{*{G^5Y~B#2b8kA{yPh{Pw#v?tg;5=9hMCqcs)LIFGPrvJ)F&%+$my zle5ROQCv5a+7u>^zu)^^G1I9hBzAW_)tK4{Dy?XZ?tB~y^>*D9Is9VXQ$Q_ag|lp;5^wP*}6u3w48%01uSitX=?dg8(F1_s@bZgKww5@ zZtw(N5fj_y7>X)nm>4xE#86M66)y8^idU|^tWYyotrsxbc@bFeDVbo*W?z`BVxJ%1 zm`{k6+Qs0J77T2C^C=!uj`7SN#Kx|bYoHM$XzErYEOuJ$Jdm7pxKO68 zTcc`s86=>!Ol0k6wu|Ktinx?G!$oC=-h2*sMn0m%x+nK||K0grE&)y84mKp{De#>C+!RH7W#@lKO$l`%|2{J|57U@Q3Q_9-lu zO22K`t0TK)Y-U05D{6%GRBV27=>!-Hb2yKH)RIrp^Z=Wc&Ty&Bz|ftj7xaB%XUp7r zC(%pBtFRuhSnN< zU*-VIQx4B#E3B)P(2sW;M|~1SJGTt=n0^k5?ik6Jii*u%{GFNEo}z0APjjwYF&xV| z9HE-htPE-W?lU=ZmFiDMb$y5^u%Co*y0%Rrt*vZ)K?GJU`DKs&G>H!CYG*tkzkwsQ zO>XvIh%;H^V(^W#AXyoUmVBQVRxT~kykZ1wboX1=_2%5B4hgxy>rt0N%@eNcZ&_3Y6KUk`B)`#-Du@xsg-=-{Pob?-E%VY zKM7<4B%7SxnRMYmWT%L##&?66Xzn*TE4#;knFY^6u?_T10|)WngIhshV#5>y*rXhq zcv@8ZvCHds4>@d)nq?H+{63hNo>>Wa_MxGRn{sx&g*vc8L`+zW#V+R%j3SkRRqH zVMVsr>!~5+geAJ!5yN{qJgrm=1{8m}9``o~0y%gs-CTSEZS2hfL3KU+@B7BpVn6X& zgr|`-n!UcyEYcSlm@N((&bwak}aD}`&vQ{{e#+m;Ev2B*K)L^COn z1MInjngbzOO#PHv6E){TR1OM6eN$!Wa`d+mb$weI{Ro*G>p-qrKx*$I#Lxj|N&mKT z@;u%nsr4(HlVbSzZt9f{(c3KnFPMGp(X5#`#>UPrQBaSBooWKMMSeaEqh8O)@o^gCU4*(03s^Z;aAj}#+(_5)qm>b&lZ{P`Li}mA)EK* zWt9{#Rl(Y1%I8rE%VuFDXcX)w#6KD}U1Zulvk7AL>JrV}in^KZ(yu#u80p&r=4dX! zpe*zAY-4{yq8LYx)s0Jr&`@VGT8D{Zx}MKHgaFZg^t+vT7v>kp=nViUGBGjIahTdN zyke4&aL}5tb+y;C>vnWA#x;3DgL)Lkj^|_TU*>fR_Euz?s-K^9S^a!D8F)9R1s2Bw zm4+S>*=y0ttArI&=52hFR_5kTAv=7m*`beRWe--l6P=w09dex|Z30c{>W=&CGZ(oQ8>eZ%;yA&h4XyYV- z+QVCwCN`rtu$#{rDiyuZ=$^Oa4I1>k3@QH@rfZOFTk%iB(bz8X5pmCFo-3bI7m08Z z5x~D%3Lp|!daw($6m{b*hTc<>&kuX#LnxqXR@4ya?~1~qU;4C*+neYzC7SzQWLn0b zoOyF2!%#eLH`hA`N(b;c8}jn9-uXqb3VZ*`U5jp~{k-fz_Cd{t1%)X_zqEB>Ze5a* zK{Bpdeu8vwmA1t=3rA--Ck9KJFG?v(joxUL^&_JE%?Kvj>dMV8c>sf7U>f zRQjKYsTKFAmMaG2ZRHfH0CCD1s_LA4-&f|X_b7&u0}fqC_+9Nu{W487s1DfE;EkQv zqxXgsr}#IH))g>84;cD6hye|DysS7=9gb<&o-?8jOaC|cJ-rn6B1*S3UvW=RLv3cy znB!S?%!lmOMr@>pcttPTS^=s`0}Te5odmbiRQ}_zx5K?ag|$NUCXVd#b9E9jMR>3p zlOEyWIJ7g2Dj|cmD8KI@g;&$!RBBYZH;y>_O1q!Arqt3&EWe?q(e2&)QC#K1JYBpz zE4v`zG!;Ecv{z^#;_NrDJDZilp<)=@nr@kYZcL%PHh+Ki2C47VawvkFy*#;2*H9$~ zFzKl3d3>z<>M)FThxj#5@=t0Ai{!L^fVdqRFI{))I-dpfmS{FW`|dsvvVj_|pjhNP zc*bI1Cb=q_#Hbakx3$hsl?G;v!G1UVN38W}`3G zAhP7P|N4!|%GF&$n%JkX_FGd{7}r%jvQRzT^#j=gYt=EHku7>kNQr`~i{#Su=^1MN^7 zby27;yu8*haqPd_ryhe03RpO8g857$K*uZWz(fJ~=J9tS9CB95r%%b>y=*B(Ng!X4 zfv&@JJQ(r+A*1RaNo03h(pq$+--U%#y^#rd64p$tWd7;s0p< zU9?lkH*PrwWd4xCIa7#KpRUvP7GAv6tb4w0Jx5!PivB(OJS*n)%f~iCUNCYkOBgE< z7y=Z@SUkOWDzvv-Rl9yM<{T>v7PacvF|ZbMlT%Ph9h-I^VMR{uTNYH46gU4)dhM^{ zh0!#Fpiw0!UWh6vH~e__QPAG@??5)0VAHz85b}vaBJS~_wc}Uc2j`|n5Tk^lD@Um- z2FE^A2|MDe#nR8`i@%sQgaB8os!k69n6EGj==<#6iUJKj zzj^%4HeM3#yfby@C?$erW?qRBNUs0m^o8d}@(!E$l)wUg5X7_h%fY^vMo_%-(MO=R|Ky$x!GWWO(OcM5Ew{NRuAL z8s4IfIn4yr1*egWBJC!PJ@_W~oG}?j=hIX|MeZ=e=!?Vx*(fSB_6!3s7Dkame)Ou7 z+yFP}(nfOYe~F9sJB~v1dt~~Lz4i#mc-fo1R7tk<2+Wea_);K4Wq={KRlgH9-zWWe z92$Bmlt_e3RFS(_ze#51%*e3eX~%p?g2@z4L|2+Qyk}Bfb8&}vWI54nnp%@e1_$LC z5I}@0`u!aiIHI(J9#esPG079_>gLg=QVebM?-_}RoQU4)AVf(~{Cj-@eM#YH7NJr) z-18Uw*c*rqH+^Mc$2)M3BUK3`aBSzVWvkRAN2{YY%w^d=>^+9q+Yj3BW|EUj0u78f zaIiq?890$yl=UGv0Ko8GN-_p1rdVW_%$0M*9Sr{ol$hD|1+?ASf-@&75Qn3K~O z@M0!xZ*RyLA0NkNR()trdxF0cktZ(ZBC!MBq_}J!n$^Km0)W>y*`oSe6tMhYus>F# z9v&hNaw;jXM4WaYsyyGR0#*v6gl3L>Jou&I2I=oA5@$za92|zC!fxhmZrvHy%k2aW zPBEb3GkQbNs#JE!EO!6i(*iS4+c3B+9<@D-1uc|JC`trdh?;W?QB<;%2;-p+*m!%w zW|b5rA+q7HK=ay3R}o~w=Mo{_84K=1e}K*Lo@%x*JV{3D5YO2 zTY0H%Cl|FT#vg#(y8nieXSbVoGvXV}=*}PGSjs~&X&RdHf%kuBNm^F|l+%BT<%rAP zaeE2;$;xtsC&DG~tKAdB$?_b!`rU%3AcqP76O%gA=naYYD(wMRg14(e`mmLw%d0lK zMDQFv_xNfA2s5&W+8}^IrHHiP)g70$79D9`w||)vP7cOAybxu`O>y;qohg$7je5GV zyXGdfX4HDzAT!93;nO_g?y6UiMBl{)T!_M1!<`bGVt&Lc zTOYn1e=FggCRD2k4rs_Jwfrdag4~dl)=)LslagBeYQe1WyW+~AuHdXJHndex)t8{JmHTs zQ_czXe@Papk2&mX#>B_&DW!Rq5aG9uA*ZiHY6Wyh*6|S03Mcw~9$suC9 z#Ui3BnAOKd$fG(y#}g9`dcO+a#$YTiq+_$Ei&e?qEDt_pGqo~(=>_#>!-*m0j#b$@ zj7_NNCQ5xxTYgx^tvX<@VeGbvt!7zW-kVLAm)|q&AmuOB&=s#_xt_z-L_jFomL;R3 z?_yIGN6)}GM601{#h{nS%DO~;P;+U8ClTc4W}L2@X%Lgl$=<|bV~O=mCQi#ty^U5Q zb{y_R2Y%N#{6n^$)}WkDn(d68hJndK>GEf>J{#KlIY!$8lHJ3Zx~bB zwQa;~_4Ak)Myo(n%G0`j#OGSaHqhhauQR|PxC{j{qvqq3PeoX74@~#b!+{kYo_>kO zG1FIA<<8$;dzn6+KLxxu~$yfQ(-3C`h?fIZq4+)v6Pet4foG zDD!(!rI?n2c0hkjr-Bv^-aYCCol1r?QBwFA_mueNcyvyn6Hwfs@bA~3^sYF+j} zl!*AJx0b~oLZ2%tu7bXoo_^uA+DVBjxbi{n@)tws_sGuT7`Q%S{rtfw;wSR)9|fQ> zL~8uI6LINRgeu=w-so2eEuYFAo1BwVepo{8sPnXW+O%^;rfQv80aUY8wFvdgKVlz0 z{}lVth4D%nOT-$_+vgD$;GL!@$#uQn4dy`2>8vHQ-bR$efPet2@>RU%8+W5}{W!yq6#tMq@@s#~9pc56d)vg0r{03clpIXoo&}!FfMVyE+ zBPb~auOg6130R@=oFB#v6xVW7nPFUOrtABnfnxG+#objj%-u#=s*pMEK05*V^yY*? zKlRgD(;tVm|FTe~cbK-|meWNM`x)gs$XaQ(b?6Xm?NU%MpJ;!Kif%W7n_M$I;yq+M z_=-X_aLhOwdh9Nhc6T+1&=wcRa9B&?aB4SKqeBO_MTHUy8T|HLn0E^aiHd0d>_m0$ zi7TDB>_E6a^sCwITvCuw%P};DDrQcrLch4X$(6^k4V2gI8QfT0@#~|2;)t%pMjD^S zmOYz2L(4yzozM5XjfS{zH=-v#6DvsDnLK~?B0NNq+aW~OiEF?V@1&MvgL8MwiW1OY zxh;|#aWg#nod?g$SbQrxe;z;M_@)SPy@mI}bc#jnSEjFoxR;W#xAlRQGag4QzOLPC zVp5*@aJ1>fvV!v~gv z{qXP{X%fCKli<&+v>oO3hVh#Ft|6}i~qT&jgFr$zlAp^mJg~5WmTM`Dh;0_7yKDZ>o26vYU zE`z&6aCaYIaCdi>kpDk>cF*qXKJD8*Gq>-(UENh({nc01|IIl1pBI~r2n2s;v|yt{ zYk;ax6>aN8^8Ly9B*t7Z|6_LG6Jo`xAS-KZT7kJ+TXG@dW5n%Ng@2Gz^ge2uR;=c^ zrtMrs^1iXsJg?!+5||aFQrXn#*4`s{YoTI`xE65?h?_sUB?;sR}07 zO=u`Ygcl&1Od$<5FlXeaR?-36DUyY*4F0jw<++bN`XMmO()g!qb#Gj)oeqmUcKjV~ z$($K|>`9RoQy#iS!CbE^X@po@Ry|bKh*mAlBgDL#K&5@iU-r^qP69u^%A47dwpOEo zBXi*Un~p6N>80%3t`e6yq|viYY2Ft%?4sAWrGI7kvwZw z&tU#?eNNwRSrxvJXE5+pEZ48p#4QOHz%zHyo}|ikG@IUOXpxaxjv_7=YHa3#RKS^& zWqn}U*1nEfBYPqRQ2asx7Sr#q?8Isgp3fyBvAn(%ah3n}uF3WL?XTA;j)2Yap5ALg zCp%AKxRC+~lti{UYm`lpF8eA%is%8R5JAVc_=Wq}r&(>4`EMQd#dgQ$Rt$jHd49gc zYS0?JUfgzma`Mr?dCF&6qYparK$hk!bdy3%xr#iTluF3^m1<(y@^wK74RcfVA1q8G;qwV z@lrO|)b{kvi6LxSAaN^WU|CD%o8HaG+{xH~X_~j=(VSC(B=qq$7ALiXDP}V_os4no z0&}1C3vSpDTT>d$q^wKt#s%vy_BfsC0ITZ;V8!B@1XKF(41Wq%SfL^fFVAV;#s&3! zX6GGZay{BGEg{swTl7wPc=|nnTkY8#w~xV`aYUF{d*I_N#`C2THi1Mb|RuH0~8 zH%sQ!q?fnt+WC&7f&mg*nU^7@72q#TEA##?w*A21iuQAKBRV>gyuUm0S3r==dTzLZ zo1moGrQu5y7HD!!vX6AKA1UC~U~k8ed{jM%T5! z4-u=QSt8)Akp9N0OXXBnl&sENG}!L2D!v?jm&&ZH(aHVN|6ucYUGVnG$d1A7#Pi-^ zXALvFv4m3BQf>SZ#(v_MYBn*H8eB%KbFOq4-0GRY55Ami9~W#8aGx3T7HB~Nn808a zz@}7N_>uNzo>@7N#K%$e>-QVC`U035SqbQuhLsXL1YYn(BTtdHJ5w{WwEP%>o~aH8 zKhcPEH{Rav;hj=!oB27OJLxwx zrjg?Lfjo*TdBS8_ot$D*ttkkmmr zwjHH6+Tj^-J|4dW0}D(^+MV5?oyF;G?)b!c>mywKqfVdS4ib)WIzbayq3Qfv6LuqG zq%=;zVRpT}KeAJMG$0woeIM zEaPXG()?Cu%qJ#E+&3GpHv6IcoyA*rB=nxgcxK8Tb*o^9@ltNahT9~_RMyr~U+bnJ z5I8{>A*+#8+@jI;pa%6T1@JfHC(~p75~&nJ!3r*|i-wQ$%QB|{-3ZuIEv+Z~BO<@CPQ53!C4k3;WP4J$Ch(+eWj zj0oGwxf4v#>gM>zOB_l>oD~*HEqt{yRfH8N+Zx@qFcO$2u~)GQV7&KGR}8Ca6B2OgK&9$V5_q5ZE;Db&XLnXu(HTFq zi#E)>i%{~Zz<+$_xxC8!E8=CHM1?dKb)~bu{Mv*55IZm*RcP~+$!HcEEymis^k5V7 z@-YT0L}-LrmeFSL;vyR}vi&SfyV_gW=UDc(w*E6{EW*`#otfe=X?BIIqq9GL-NhIY z-viJ77xdc5F02Q<<9Aoq7y9m?E+OJ6j~ssjzPwzG%&xAs?OGsdGL)KIzb;LLK$dwe z+S7xPo5U4(LsNJ=VdY=(-mfhKna0lv(%MF9IIQ=3%i|u|fULMxjY` zrkkeqo>Eu75vYP5`_j$TtXUDXP2+B(+T;>W%)g{Qx+}a-~{X(KRyy3b<vM547={_8X6i~!(nR~jJBG{eQ(b(-H~QC zc7TM8+^tnjX_34&*;hP5fJXRq@@K~9&xNZs`0R$I_n1Jv_5fA0$_%2OX z>Z-o!LC>)MOHS@$3^8Lbi(ysX94hzmH%TJgCHyaDB{S!*B#hC(uaPiR?ICVtm zT}O6wfaukj8`q9%B6AI-=VVN}rElin@e5cEtI`beIMZn4?kl?^CndkkANWR@`t`%B zxYD&yg}+ZI6c`K_;$ewb*Wk(asMrX4Ci+xva1t}%1(Mb}jAL_pLZHL*QALT3-I1S^ z6;{?Ri6kpcZRF+E$H|p(@r=O8YkX_zPuG}!5sL_431wTbM`i5uDGs?0JLsv+gc{&8 z+(lw8EswdrdH1y{+rqp{Rv-ephQk4#$bXFvmpS2|A0a4otA^@HyZHEMo+8bSXN1be zXsAf~Q&~H#0UqioEYqzJn4%Gx$?!k}n&pP>K24gwb>evqK?8x%Cc}%79+jI|p1=R0 zWCY8$z=LzD z(?$V&n4JosHpk;A6i8P_fy!oI8%5~`8j_K}tLwh@hv=HuT%e9MiHb#z&0Ji*aM6P{ zwKCs|B-sYT4|()-W9UR!{HmWG+8;*oI1;X5@y&Qiww)4UuT9D;kBI4;Te4JNc2z&@ z0g-&1?EE1)nJcw3M*4A7P{=waAMn!@-1X7eNv=|zuv8)z zAH<9UKS6@kqu%rb%Zh$Xe|)k1oOb}0PSUcl6qK*cN6L4?*DN~}F}&bwH#J-F9ft)! zVH}$xyGguPCEg#h#nLE97Kc;CCelY%spfpx_EZTqTs&TDg~$1j2O~B2QvIkTNF5ar zolO}#=+dctN4t zkBAN{%9LR?M3GnK*q}9!8{v`-Lc|y!~ z&SG@}m0d~ckJPh}+z%OqCE_-$*ku=a?GvAO8r;tu&K`Y$|H~h!R@p0uddM=#mz0|= zhw5~S)7h2M*YOu^mMMo?@Lvu#AT-Mg9&N!7*Gw3k@gRgpU@U3iG#G137Dv;_Hwc1l z+}LQnMN|uRNX2VXfc6&=L|nYv-YwRu(rz}lGe58A&FnWv z|43n&e0K7Uvzmj*K%egkvyB-BRBcm#f{udI^#oEC zjsxGLyFn*AL*5q*xG#Eg$G(VzJKz}IcDM<~ffT%Bl))JST>ta#U?Kog2yX<3AvH9>>T z+)oKim&l~w&RY}DX-g$QL$T0Z#Y7AqZx1b7e*#D6K>A+T$F5$v71qmZM@q*S>-a2Fd^!B#=+X5? z0+!3&{>FIf*s~OdfiZ+hc`>tbSKO1%nZVOHsYfsVo66j=2m$^K1kxqtYl+RjscLGu z$1|dPdcjbxl$qpq8~2Q3#4;yQ?!zvU8~YVD5;b>|ZBp_6CsQo8*5!5QHOD${hwPiMIXXjnkmlBX3W@nZ zH|IRR0x^>bc=iMQZ{+d;BhS8iD6-R#&!xk*)Bj1WxOrFy^Cb3ziLlz|QXe+(q-+Ae zir<@HTl*8ohi-h$Z9W@I$xT$05m2CVy5Q!%cCP7xK>AFwZF_u0EaN%(W+cfYYehx9 zi-L`1U(7-_4yc~b-L?&|Fizt!3cyS@)o}`~@>o#PsgS$_hz#WY5xe`r@I3l%F+LQ^p^F3gd~mw)1ENhuzER(=jv8 zRgTL<#VrPRpK2sr-pNf?C}5rSEte)No!_sogZN9ZaXBs78^Yd}Y_4{K^c5$^lKAIq zxP7OL_JSZ4x&nHp^t64>+t=GOi5Bru@N@m91g1r=ezeU*EXO_9rW`>SZy)8|Tp`;( z+vj2X^+jkoz3ZzWwc{mNi{4))heC#yz-Pqq%|2+QoO;*$2FVXUk9t zm;1|%bEvG#edv8i)jkceT3h-4J;(aA-(iaJ-xp#~tOR?!Cc*J^h?4rI;WlXF8;pOs zm(Y2Sv#PJ5Cn`+U80@~OV?%Jh3o|JzsGCH)GK^M-F;B-JxS=YXj4s`sDF{Sy_3Jul zpgI=i3Vh=4LqB;QnxpDO%o|4%WfQoQrVxl2U5pjl>y)jvmh#Ob+T$wC zniQ)N({d`^!=d0mpF_npXSq9$I*u%+@sZWLR0I~SUYVi@_F0ZpWPf&V;lF% z9=z;A6{@4x(@cWE8I`V$?TCo&>B97Oo7Y$#f*qZM-DwPryiOkt9CLp{$cI^*;!~a7 z73ALo0Ns>*^Q^gd(ezFFmCzNQmGRT`C3l}OMZ2Yq&2!eo{P#PrWsme*E`0Rr_1z?u zE-M;b6&hhRb-b_a($?ucT)$kK7hcU-xnHYEt3)HZHewB5gdEtCyGxFr))(+HW}Sw+ zWu#gOlHikq^&vp*yXDA-A}3G_?rII;zOL&1SmXdm&eF|xws#YhmG7&0jqL_}eUPj1 z#O2FSJY$Ni$^8#E?KwULhm&L6Q8W-aYLIH;Tg*iY{gdGM?)7;=Iqh*9iixk*xq0Lq zQmPI2h=^BZ1MW@7}Q)=fP;&LBMp8{&7L`ggy3 z;Xygm$=qNplR9|?3z90K0ar#jmL8U(?>6xf>-`%g>4`^zd{B@6winghF=ZgoYERTF zipfcTTo3%dNSDgLULB7M1SQO+uaU4>j{V2=>#JG`&J0>mF2 zfH%|Uo6=*|9$BCzz^tBpI8k?Lz<0SHEAwiFJqr_HLxySCfRi=TxDL-SwcKc%LWe<_ zZk7)k;pWkMZ@IpM#(zTZioK$Polh!+N6Xm}mIWJRHQWQ5S9MAwW*Su~-R3wTspOlH zyh9}`ic@SP7XxwL1L2*gh5B7n7!y5p;|IQl>Rg)ER~N_e!TIT2LxBntj@NlD=Yk*g zGDs6AXiyw)imNJvRU;*YKy7PDNrxlU;%!lkIKfj)nK#Fty8^>IA2TU|q7R!%W&yp* z{5NtGDcYWL{VvFbT0G#$JNUXnexnB6Da-ayU#VeQoutlR?Z*hd{%95UoLRqclr6R# zvtp~1H}IAOAII#Ywyj#cET{n6lfICP*VcF}dM2{LF>1~rKvkw)r;LGw2@_zzsiBgP zC}sF`FewEZnZt^OzYP!6$h*rl_Z(B#c5_dG0^9s$w!~U1O(7aql%;sI>hMS;KzOrK zNms$*C~GX1hJViKc74l5^@18hY#FcTE6ykRF@kIa58aKYpIutTFSfwl2adv~6 zOy8M$doaq(U(C+L)pmhu_^Ai=bQLtW-Ox(oZiNFb|5w%$x5y$r&Qe>$(uRK)^7Fr3fQ$m;B~fZ}uc)n#`Qt~Y@MNuO zfMCMiMe=xZS}^(THJysLc|4oB&HVJbWFk6fOvJY~i6Rze8AAUye%oc6{5-PVP$bfN zIxbGlH%TR;Fq@#Sji8oH=DXIM7Y9pmkK=%rOqFSN&8em9(z9uui6FGmD63m#HF!hE z*m%Ezv;`4k-9EmkGTwaAmA9J0>b&D%QbjEx+@5u1mUbVq4 zl>a4qw6iTCz< z7P!;Tf5;o!6x+a=y)Wbtea~RYZ&ScE_l*+xv#i*UpumA-Z-|X^;!u;1YhqAB#dGpj zPN@H^h}Cnk&O4%bnLtnJx&&vvp_`XctX=!?7=q!fwcyDEH)`ub<#N4EdO=VhRfTjThy#Y;szo*h|2#=#kkqn=U z?WW*}(&xppXIAdVR)5qX)nf?Wadik}(T4XfqV|%z!ZTr}<$d~?WKM<4PlE*I?ejKj z%bwyzu(0QC7T0;9pyq=}e)y>hx;UIG`edms@04{Jg)uJU?XjB1mzQCPt?Uz(_i4P} z+1S{o3kGA!o0(}50OZ7-wK0u0bVQK*?EzOjbs%SIjyH!p-{Cy8tK*ZS-9}nYLsBZS z-wuCsO%HLcCq`?k5XTZ$7v2;~DkK($fP;?0U!oG;&iUR^NG%T2YsK|~c}hf^fhwYo zKbcfFK7L?f!}ct|WC+Bo>uYUC$l);@UM?S`?mo>;p0eAKRal;^v5&TY+a>6KJ@=+Y zDgOhobWC~DJ$mlLN%)1MJEghYpJ~d$8oSoC%mEf?bA`exk;xzX?kVyO~7;jS0Sy{6<)`PSm+eDwf;()+}u&pM{->u?>Z^Ekd%`Rx}vNMHkb{N zSf`oH*OL|YHWvkB&1M<5O^{$`j|vC*4SwmjjvQmy+fFGr@P6pEwrl-;qK`F&u7D6> zN#yTsnvv8&8NBz46cPUIfIr&uBd~<);j&3iC48S@tmj|aLs)X#ingh(g=I7!Frn_P z<;=Aflt`VE94I>%t}oVo_S-O zQi7UUF+LNZf68{_z-YTewf(UKXtnUY-;+Ibp}Ey6$+QWdj(fHdRc)P{#qj`6H{NYR zO+$2&%7JdVPk-Gw3_BEF4pSz@`hL!LHg1uM({3xpo)*^4D z24;__xS-RSndJCM|Bsd{`|~lpmFLZzve8x?~ioQJO(Ud`&MsJK$3)5({an@^(IaN~M1PqEL&X;ci7Ddr{;rML@u3WwY(|-Jy`~9)0Ss16(|9%w&;2Ae zT(p%vIZy$Db!)lNKZzDQt!@LTy7LG4?oLwVW1LEvmvJZ|Aij}2)6qA{({M0scK-jc zGlBpO`A!|`Gx(q6&(*sWG?YFeEJ4N3D02($n z%gUpuuK|hL9#S9?uyp_Q@??II5NNlRj3e%ok7gT=5%%m_;@|UD4#Mmnwpr$$EEYl6?v1480MgfR71-ve;LWA6m&N#Vul3Vd!IzwbT*oE5MD6uZ zm;1787()H%{N0Pc`>Y=VXeSp)Cx52$t*j$JPRF*iyX6u~+Pd#h1aB{8BXsDc+bqIF zYR1SZZZCh0?^Y8F@U4GhTu+G+i5p`NK2tBV)SHT$x+fN{$>qM6GAo}$dEDAwAv-VM zwJyHm#+hqA$xX#T3$eJV3n?u8^uAO)CkYhx6WF``!G2od|5$M5r1cX5<6rQe znD{@HQok|&|BEO8PlV7UJ^zi;isxj&?KQI;!KE3nrs~ISm!G zi$9U7Q$2RJA|>(2<#YLV#9z)zT_vk7T;gG1A8;1bhv$UR)>m)_RFH@F=I*#uNL#>b z?&0-@zt$3ul?{Rv=~mTlZ)s0P6#E@^?XVIMvt}hzk9+AS&2yWn%NCw#pK2VZFLh&H zW1QqM)OO4$R+S`h1ZN#H{@>tBa!B04MxMCPvrMiGK{IC8!d9oM$bbuhuyXveE)d(WVwzn{7=3jksk+M9P z(dR*~9}Y%QAj3tonRtZCgamcm*bz zU2@M?T+#AntHU}{XQ3`4pVGnON0c`L|5iNKregbMWyMkRcprnIW)Voe;`KdA*WN? za;=!6&Fgq<2_x@=6W9#$uHfvCXx$SBre7MW8AK!_`>NBa09 zB@p*3`anvVM}P>e_-Q}EPJ3uf-|X3i=dQ=iO^+b-&HZuVv@m1+kwx1yNX1Q@lF?f5pm z&@7vBC%)5wy?y_FaM0g{Mv}X7_+6Rl$TCTv9l5)ilJn-Do3lAqIv^s%|?kls4I{dyKO_sXixs_lFEl@_>KwNH_Tr>HqynxZUeOlyzurS-s7%3D)2=>j!gN^Ok3w&vmrTi}@cX%)%nmkTcmwm#h3P z-7We4v<^fL?J?`CfGLu+YFz)N`D}hftx| z-D3Xt*?ciZ&b_47?`tEGb+Wkgn;(2~Gb=yb{`lj3ilygeEA#HX|2lw!-ZKCGLt*Zr z`jM=7&DPmdoY?QOeEbLtW5oR2JoxdmM`wP zG`W?bHm{MZ7QX%YdCQA|r}@jMFOjXX_&};+mswd;v_qCa-c$dal;X03ADcv{>{`s? zpv}7WVBDyNr||36mwx(MXyi&LpXtS7;tCIZ^m>)fpw-XSun*BuP zY(IN6&OfdPtg5s%7jWLOy0`aaW2N0>y1^xYh4y`;1d|1G7dO9bvQFHyd#(t-F-@)+ zQJ;ch*3!1YUvOgu6r##Je@lU>g>tDzV%IfUyKW8ijg3w1P~R`E_i%12qSp$P_7j!h zsiX4|3y~jVq?zF!B}nTlYjqceUvxj%_A&W{XoNYCMbU6&%=M!8B?tQKO74LjUH^c5 zygynreoYUYQSi}PTk7@U1uAw|AT=&q(j7^UCq^YfaExVO{J&q{VXERAj(G3;? zd%96(ccd%QzqBD%6tVJtt8y%{^_2@A_9jMh<@nc# z#^bM_&lz0*_o)0(k*D2@r>!e7d3rP~uhr4f)vnJoCe>AVu?B~yOO91j$%>S$K46B8 z`&dziDL4EXo{ksQf9R3Qff@8M&e{CwVs}je0Eh>3+RA#AT`xZuSBs{vjNY~P>2_vw zaf=Isu=T6sPJerl!{m2T565^;b&0}>OAzQf@F6UY23X#zK=dcI&d0+gUqIZtM2(=h{-aIkH?bVXcVK_FydE;ZotZ8m*-2x_PplhcXV zc`atml_c#a*^+=n(W2@+O(035!q5N2d`4l2*QP~v#HnH0NI^OI0X`K z!_+jQPmjaZD>T~5x&L@o8%Cz)vMqPQkbpumhSN!}B`2kGxDMMxFJ0gwE`Op!TwRvA zfa$5Zg>>s}KZ7D3h-(U$@gxi#`~th7SU#G8pS2?HZe`Jt(k9GmB&N&9u_&HJ@(6BD z`4|FOa5J-!r4uWFpRz|yq6`d>m;nH#Orq{2p50s}Ec)7nUlAw`Rj2<>WZ0Aa8)UCE zIEyMi@{{v8#8!SbKle#N-|y@>tUD5ykbc|ewqKsz~gT#6KTJR0#=$qTOZd;IQZ z&uWCRn-?Pjk0v|s1Uox);C?k$R_R=HYGFXLaS0JQbAEhRp^s$<)x;(*rQiGJe8xT3 zv`iPI6t1toeO~llH#tAx%B$5M?4R`e%5~+mcY#Nuz{>TAEnKwsJ zM|G$z#-=!|u~_w6QZ7T{MW9YPc58={d2-834JYERjqoJBAg!xDv#67klx-q+YmflDOa707ncd2d2~O z@fqmKbfxm>*4c!NJ|ho=+wYZ)1`kuc5Wk)OG1nU}^!_$gBoJ)>sAbi%X!i4643`Gt z_{;;X0+2HqS=mboBg1Y@BU0NBwr>Xr){ehl$rc&+HO|ZFhy-b9doHy$dQ{?GbhYtf zhPvOT;KcJ zJcxustE^xP9SWH-e=H^ZWDn~(KeXqYIlYwyJ##TqDI0-3MM1%8K}VwCNvz7+{z#mE zPQ6IHB_?uUjdJ!`vtn#QHa(5iP(t3oiZO~6+e0>L5QM%*5YETt5k>YeDk7mL`90J% zx^|YFI0YgaS*G8mLG%x}qeZ*~%#uVe>RQMVp6K(OWGxytg zHg*eBKa9oG6`#h>T_Erf4U%Y4Hnw z-4gnJFE5M7k!!xy``yWTrC&I?$y4T6GyY`>oEPSu>&M6l5h8G$#B`B zpqD)(wy>lX=Ej6_p;M0aGpyz1z0SyshWexKkY{gN?W%#RSn<MQwK+^%-l6P zBu%!Z9S$CfgBg}MBArU-Nz`1?!S5JN^dOc*w;NBPoXRU-VJ-TPjMQq`ITdFwGz;bD zPj8zm!Dr>t99ny6eJyFZKUp(tT-|+xj2rKqLt9_pwkFV=H@dFnk4K!oDg=vXw#r~IM*)9qS^RWKc|byqbXXb za!3St-)rWju}&hlgQ`VCBXVs6u9Kw3eJFq)RaM>vIYmH~cuC243AVrcK@7hdIQ54sI`ME9Cn_M5P$5_*%)N??q^*IwmHI%3}fv?>Bt7mHwJ9Yv@)c z{Q8M8cepY&0lPzj^JCrkH+ zkVXGbklb#~7fiw{b8ot@TXd1Nofqh7Sur6LBp^^s>3j4`nl+>V3SGJ1u{pF(Ib(0~ zr-0j+!BuF)AX6}gWVh=#6IzpRSOnDH-d6dkKDv_DBpZm? zCg+}heOmBErSPL!KSzDwYj>TAekp;;jM@ZdB6}bIVjt|IxiZ}J7l9`rq6}8AVmeWh zWABW4J4o>-uiCNRST%sJZ#ktxJIV#|us(VOXX`{DN<4hdCG*DrRx5k*q^Shi$<3=x zi0X0zI_Jo0eqlLtQ^!?u3fQGHpn5~c?-I*dT#K62rsHI{{MVqF%-Q-FC`YM*hjU#Q zEynQZR(eqNq;Rj_G&R&bJK{897YoTX#DJ5#)vTDQY33p_tN-q=;PNnm= zPH-Lri)-hmO8XJ3ESP>gEJ%MH#d$w@6R{L5vl?CCrQQ5Vz2(TzvS^Nk;c5Z zpaEDs%efd!S{2wY;f^WNJ3Ry#VTs4NJk~^bk_2$ye~YWN=VlD2l=*#S{x!CKC|Yi< zoT&!N!H=u+RD0l+(3dESzYBJA>*B=pKcPN3NBU2xpQ-=W{F&-~?(9jkfn0=MBy}us zdrFJDx8b3>s~J<^%EGeUoS+Zq)nz`~m^1rAzU!&UTV?I~S+L6CukZN-8SBV5*{M_N z-rQ-pCAqy)>&R7t*=m>l%LqfSLKa{LEa3V)y-*@ z;xa}G(c30X=AZyUZR?79T8~3NI*i2Iv2Rw?n-XRommjWA7&``Nx?lBE9lp80_Wzi9 zy0-XNq(jeF(61MqB)uyQ9Gc%tgK*9a1*=gz>sMZT@qmY(_y)`1#BkYDCE{QL0JQG4 z1EgBR_#6;O+rU8HkyjB;v?Jl4iFvf=F|d^Jo@Y?*nYBUTn1PnMMZ$*D5`3@3Qc3n0 z(m5J$S#Nr^MfC%dne&$`b>wanYX?~`aanlx3iBIx+>G6pkNiW{We@gr-TrQT78VbG ztf6;y`40!`A<>efrCU)mRG$pr{i;7BE{@^iD8ScHEuXo?8mbOjS^5szd)mP(KyCB|KS_F3YWEFYgr=^L{zfN zUAhAHI0)1x=3AJ;X&3+vGbt2sIPpE_6F$5ro*(Cy^k;Jl*ZvUccGbQkG9j07 zu=0_&Hauh$M@ECPrtu-A${Za_fa1)@KyG~h)^>iZe7kkf@o+Y#Ks=5g{A=aQRzd@q z+;EH%)%E5gLErKsNR5%ppvmcX5QXk(f%`dM{GY|d7z~B`s3VEWgwqq92J0iUt9>1* zaZK?T`oQEN>&1feLKWT~oIw(j%`ruDFwm^DSi}y)>-8e3Ncaf%oJ%DJE5+iWfky?r zGFf66C7YbDQgtcp;iQiUz;YG2SQ*Ac)tNl)cTA?OH&h&WO^77-Z8UnbHvw@ATSD0r zng$K6WSo7TZfd)!7SZlOY$sSvfN60^SIY7F%DH&fNv z7D^0^L0$e0N*Pw`lnxcc!^}#doXGR#4B=AIse0hxmITFb} zo_#ib^-t@?KfAjU#4>8mh7VCPQ=I{MB&GYjp)h39SIBNAOadH-DkeC;W=+edU%T_XlW${B=X9;>DBcHmkHLs#%I?4 zGHOswT<0}-!FYX9b1Pv{QM(2cQi&qMmQm34m7nlAXBeYpuYJJCEO7h6LupnXd_pl- z_Tz?f&usPoasg0JC8UopSB^VPwJ3w^jLb1gM$X}4hS@)q?c(juaplhq)&`_apheQt zjhlJ$eD=fFWPbhy+rcumG-c@zr*Y-zC*h@w7^IR488I#zxPMjsYO)ac(hWwY?$nMR z^9iaUpsuwA_f$Q}9%Qcm>-c>-X%2ZvgI&~%ZNKtyLcs$985Gurw8LZF?urrK^qz;^ zG7a^DHRKwIOWyKa^GQ;~q#@s>+C_z)cq|4kTUF7qA(G^3{pTaFq>&?G=Xa+!&X@wj z{T_yiwfT8v`yP(oD6&6|54;;R9w2J#_%(GaU;&7Zg@c+`&#SVsWM<4=4bm+&<{&v3 zGrC3z1PfI$Q3E7%D2mdKRl(`}YImde-{2dVjaJSU!WTh?Wxv!6_1 zpFB*O9Llx5yqFBW3b25mlc2sz5~R?Tl$y$I5NuQ#64>n0bR#ucHK;Pd67AQySTSGq z>E}J3$tEbt%DW{=DND&5XKM zZvZ9Hc@G(_INQ;tyZxTyRfVw|a-O^!wM**hZKG;t;MbX1(G(+j?CMmU!t22X!YK?9 zdr!j)XnB*==b2A?1D>0e?4odT!n)P=rkxw7l=jBvo2-;MR98IqlBa#KmZ(x|MJNE_ zK9F862RBhrN};lf;{h?sd4fB&XaHuouU)UH5&2S zvADBD6GZy;&+wElR{rEHeCFV4T0qGpih}7}7KOL4L{dF6h8BPOafybHM{@UXOVZtnb;0?4S4t4yP#03oC3+lTnV_V#=_K35wIDj+5(^)&G(f|> zF&N}l>3=~y_Z*e#qNaFidQYfDb2W0c?4J1j*CHwYxm}9*mwSeK{C2%h{1Bt}Q|G6G zI9Ko(#OvkN)>Y~JaBPTs>ul$pL7(>@FuowT2@oT^CSl6n$zeDb2>Yu|d`!e$mx?pJ z`0!_x^cn(=0{Bs}b`C`A4IF7@GIWXj;4xF?P-gt7$-??r)rp!{KezdLbnm26A)@Nw z+sn47+g;9|6t^V}{wJW7n@iSM|C)S}(>RTMY6auiul2y?y=bBh7p< z@JqwkOkm7Jz^EzIL~^kF^kmE4eqd}A+R0tPUm#eyd?K+C~UW z17Mg#|0E0$X&i!`ueUs6%VgcK@y^>uWp8A5STt`=3m6$sY+jkMbsq(DW2VaA)l&e|}xMjtWu30Zm-1FKT zDwHrbe3_7#^RFrZjN4$D-2@hUfO_~_@Gn8_b!lZbiNO5!vV7X+&t6u9%27mkwIxVGZ!@N={) zHSkQ?-3E6dvKx7C#}ZT;Kb{e~R7dMGOG5`2-Kx9oZqY+01QCgnph5bCc@wg~))5ip zYU{TAh8&Oia#@Aa{ya==yRn>zfDs&zWgjVp3-SvJM%A5y$~bvE^)#v_hmFSc7)@_E z)G=O8qGls*(fhN%ysx7>M5w6#*Vq`=tJGi5(?ATZ{2+9xy^_aA5Mo1Z5}PW` z!Kt|XiWXWpxi=GP#rQyJI>3nxE~7ibxm)I{lFY{on)ti4?*Y3AyxL6YVVmyldm8=L zpG$9k87&e8HL%^ZB&PWAe`gH(xOd!9m9m&*zsWuL<)O)wjl9uY0z*BLMzuz6((iz1 z14jkMf7!=ZyL)l7k1YQuj%5FVYwfI~ikjme7Aa2OyGsF&TA*%b1`>Q71O8Q3`;H z&&_&iLNg=AYy{4kJ2b-`wnzuywG7ggT{wfK)ZuMjfjk-d_NelQm+yf59~+F*$+(YZ zBLw!?tAAURZGjqGBp}&*R@81>HNje?i%+BSWm} zEh6|ygLpkw5wCT`iM+_bg51#6aU$-NU`YWc>(il=g6CuuQ_geCaMOPrp%|ZXTr!O2*?9<>S^XvhG z;bVL}(b7qfvhOqRVI~sy!^*`HW_~NYtc|58Y#hv5;6MtJFN}b-zkh3LFwJ%=n-tLH({-N<3|PN zIoY5#KFEdWC=`JqSijtqvNS)!qq{jTMH51}6aD4Mye-4aWQ8_hf#fbbVrgC_q*|q3 zml7b679KRW@zgg>kvyGqFZ{Kdj5>%+H|A7~SA(9TdXp7*SnkVQHBtY>F<1elTm6il z%**_ydL%QPtnTvAF6i`wkL5oJB1n*K3{Q&h9mSNGE88p*(ic-(_RCr)SzkjzWJlKB zax_-!sYGNvkoXtQ-lUXNHSwO^t*)xV`iJ|>%Q`Q|G<<8GasK+Cq|7YigoVhN0Mn+% zwm*vEH}}<-<0=%e+YQ+YF-mZ>=t+zm%vSSKmred6KE zJwK(Ugfb;aqc}j(cOT7~B7(y9fM;g1^6r{xaVm#M_ANdFRH+}P%~;y;}4TkGXbj8Zq9T`|}X8$PH5zZu)J zRBJ3AisJF}9)SWJQzW=5xOp`x^3B|qCt|n&``&cUGm|G#TRU7{1vcba`yqmhek)Sy z;b8Euy?)HViHXn7KYyFiu1_z%+_KGn-WL#KQEC_E(BGT2snv;`1-^|@_OrpYPtlfZ z8YeDgai#a5?K6A+`CB6P=v*06_Lt?y-uxbRJAgkIwA&2iu(O|Gol-e|O_GoKA}FZg zJ6d^sNLII2vk3Nz0e)7v6EfpP$EMnS6q*t(!#q6RT(7q*sMhcFMIj!O6%RJPbOB{mJFwzE&(Ql2ET zJ>Mp7uDs0|t*#)t#mW@wdNEO~P{%B%(6bd~^L%2|AV5Cnj(sKdy%PvCDON<(ivkyW z_NdD(+Ys2PfOD+Vw(|{o9xb9nKcxLwf=vH?e%`n3!Q`i+dSx_!PIkT`n8f{rVhY5f zf_ntMa@KF{lq&Mi8Sk%~(JEFJzPprg5rwu`K-vW@?m?{(+THL+Y^?Opzub|zT(q;Z!^xV zK>c3Voc$NmzVfN>IO?K8?fg}{OW8VZ_2BouOZX!^QuYdWoPW*(R=+ZNEkm01^MKiQ zxR4tY%RvpzV#gCXRd%;^GWu|8}n$g~o-x9g4|!L_dThiJ`(Na&7dkyeO${SzqCgB>-k zf%Us8J39|dle*o_)ULbe0oNI#rTT8rxN$p={t5snwEKXPAK5tO4u!VMtK*j?H9Lw` zIJ#BVDX?gEP#UxREnD1diRXjCxM9z5DACi)FIA)w#v9lwG|v}r5a7hQ;K;(qs>*h` zpLn%8&BO4FWx~CtLmHG=(Snuf!-G`^28-;Bf`iVfo5!4Xn9}M2Y#*rOibOueGpAxM z#!o&G$c$C!!Ey1pWGbE@q)8o!&qciBk`NY`O``~x)ky3MfJMQ5EO)ylzc!O`8D$B2WDx^g)@yJUW4x_)ddGAqRuEi8b%HP3a6)Yb>PExDN}z z_2#lT(_6M?kg<0M1*i;W61^X3ZsCY z39UMxiTKc**f+1XB_)Gju;cC!5RXS1zN}D*=kt81^nsob300>dC6xyIxVx_SA9>oP zEUy><>D?tcFl zW5@6p4`e;R+TXXaO1dvw{%~`1bKt>fdS;Ulam++cWOZ+X#7%~gmi#KSzl{k3hbQd=KFCHrks0*E@d~6 zJ<7MyOCW$~@u9RZWpn8(D>%3?lbnrpaa!G?o{Q`d)a5bWywKsc>0z!r)H=4-%6?!m zcqYNU#MbbXN7};;=>QM(@&pl=9piPQ+vkk@LI|I7l5UmVhTZF>t1E6Qd2Kv#EcALG z?{0mmrAhSrU2|&xk?Kgo(-1z~mnc3*S9hsDT)G21)fLA+ejNNlL)}&VcZspj&O&yN zm8?I3*&Qfn9KUr~GBb^>G#q&;4JUgV^@h-z(TF`8=qZu18{oCK*OMR4q9j&xK0H95 z*?0q}(yqbXQE3;LXGL@ub8A>!z^9yQ2CWzL`8EF>s-`MCXh@x zd9(mSS+FVysljbM<=yyN=07=$KIeXJHdhdL^6kxUSHj5odVm#FxAAa+ z>$AR5GXS;%x=st50DYIl0EeEm@YPbErHF(MGWY+s`=qh1cu}A$JnCx01HM2gKmRm6 z(<%Hjbcp5NX<_dw{hquyuX2GVkZ(JNG8 zNg3CkL$XH!#=K(z<3iWx?CFQF*?1}@*`GVaz~cixDDG|=V@%W?7|V7fTdF+tOdqV& ziOGsrtiw__f9%ZmDxoqv2R8+?(^B4vAH%k$2B6w6cp{Yw4e_b6;Hst5~2DfGN|6~w|ysXkl0PV1WMCo>S{70O*7X>t+P z@C^0mi{DH~wa5=iY4^$0xVdaSpeG(Gu<+Gx`wCkeo3^a0)wUsCKhlF0FRli_Hk$)O z{Dr1g(gbsP_+5rM0glu2K|zB0C$le}u4~0CUn|y{m?Ank2@PVMazC-l2$2AR&oO|m z8$1hX@WEs&(1$HQh^%isZ_R0UKpiN!T$qyBBSWi2ZnN>T`xq~2%wa0UW-f3<&WSZF zbinxXp<@DEgY+OP#9%hnkzv$}@?ySOq%_%{kE6cwY}Qz~gukV=ILEMUwtsSKmR+fo z&CO~usalUaOc~v$Jt;gOJBt;?>TS0iHu&OoakXQJo~Woi>IS)#%3xm@JqDK6k*KJ8 z3}}c|TXTKB)>B32*IvhaW^9)<1!}XIe^RmKxY@y}uC1k38groo7SnoDyLvg?@tz>p zwHk{HsxOY%yyu=VJ7G+Y1Zks>+SdAyo+25kj3MbYVU7pgy6*~IwaI$FB!kO*2(0>%@6Cs|rt z4?vxWgr>PLm0Wt$k2)b##p1TMziZmR01F3d2evolK=S3^f*QLfPDs|e=~~a8ejf9> zf%gj?sXn00>bnG!xf}Kq_vo$yBUFN(h>Gfd{GlNuHnCQ+L=g-rM;{tzobzd5Tv-5} zBBxa!z0`;APL{G#?**c};&Rt*KKc0hYY44MspnlK=!oZ0x<*tgRwJKZV95vRd$To_`VUhsVgl;9 zGb8LMQ+{U*P}==W%C6-eMhHm%@nSyz0>^lWV6xdD*wiM*ycKq4h*EQ;C2zc}b<%3- zFE;FaRVAp#Q!eioV=nEM;Q9_Sw6ki-PWB$(4l{caH@9SB=&SB2kF1BEzt||5zw3<3 zE}bey!h`zc5k}2ZYj+1Otn&C9hiv*3n9*McmQClfCHfxo`wk4gl#&k8YP9UC>W1r& z{&ppiX=GhmR+|*>*g#wGby$cv0;j3(yW-)=z}tw0WFl<)EXulP76;M)FJ3#S-kd8w zF;D(9V6CFZ5jHAX%3JNXG|#vO#Cu5Apfu8+1qg^z%<6&TRqV(C>qT!S$1a%VEGB@t z)bqo>^;{0;@#|R;{A48o=V6cc8gYaS1WyfJl$7X(RcEa%QYUA#93VPZSQ)buA0Zu< z;~7iTZQJwpX2d<1NRA-0$YlLQ=Qtf#)w=?Zlji>Z{<|!}RlE?-KWJ>CGC%5dG-Osc zK8OnK9%Qbgb&)LY6Bah*@ktvMv?eB`hib2VQgFsz?AeEX`ZN^;%54kz8c#yPxy7}{ zL1qivS{Pew#;PD*Zy?q~`W(n!&5`g|t$$pD557y+^}pTz$?ohK_`Xw&h*iFyYv_r6 z(N#yv#ZBY7ZoH2YH?32sD6f7(n4RnLDC+-&tKL%@3LzoFk9mW?+1U4t({ry-i|&k( z2CzOXri*<-JsDBf#K>kT7N*Q}r9Sl7tl+kA!l=P#4%q{`-}~)sBcP~fnf^z{qV^jv z-to|DffwUPI1`%XmD0xMKg6WOiaJi>u2AdJe%Q`pl?pg4FEspm*C>ixkec$|+d>i^ zpZP$C_U=%nI3 zon6EWEB;?*5`(#!QNt@3p{c7IWcx&Q?+>GJNv%9zx&#H8mmjE#i;4=B=8= z?P&xI+n88Sg{o*HIB`imp~I7xgmTFv#uk(~@rXM&h92f_*rCQ$2;a)a1m~_+<6A#( zuw*>5%XDz}iZ4HfI`}O+s4P@d<}#IJr7g~w5}L;9D_x~awZ{8$Mop*fjUC$Q}e=N$iBh`ty(e_j9Ui;dXiRLkP(nmm zs(-<#9{5xy zv1$rm5H;Vo_Pz@<=y6V7rTQqoQZ7Xv8d**hFOh~_4jR8d;>dMhV<63(`^A8&s>O}rMK zHcKV2=1XK7_uPt@>yy{T2D71G&RAf-CkX=NR4I%dC>G8^e7_^*|AzwWtIjKr4SD5Z zg;CcM@869FPWq7ItBVgAz?0s|GK4iCztjfS)wyQ6%s*0bXZichUT#a z=PT41*H#ZoS5h1wsS~4Mb6zd>6%W8vHRhkYv3)v{fBYT`nPVqMkrMr=`bQrk*|XW^ zHi%5S1AbQ!rss;b;LNB0MR(aJG&5bDJv`H4_vpU_9=0OOL8MGD*P?OhrxL4Le@YK1 zC|9wIKe^EuMh}YS>9WPp#nK<}i756gjTjz&x}*4Id_%!R{(lFT+bcAa{AoWU06?LP z59akNaL{J>FA2B(c(a^`pJ}nReiYj>=1Yf%w}YE)RhG#wn?peiY>@K2U|PzD=nVy& z?VkSB&!62b_Fb2ej>aC(;-S_Om=b9*7Ss%k`2t4BcP{Babf3I_G{ke4% zlxvIz8xN5WqKQ%uE-P|Vf=GUAVc~($nR&tCKV}hSRo{^aDlS^EIrZFj##AR@ruuJR z*)etf8cY?RV>_QdnNT+G;m#UnF zMWWKIFU?S=WFIzbZ}rk~`6uH-1tKo^(K@!=lFNxHfO&NOW_U`ADE@YqVtj65NHOsu znMQ+6=rjg)IsIB;6NfcSPeD|)r~!6>@0n}2(p=V+8J2vRzlEOIek5CJ7TiJx6tERn zIW`a~nCAZ>9Y<#T87TbbVL`B`Un;jOP(!%IZ8w|DI{kX;UMnG`;cl2PsofWtG3Zn+ zpUPF5{zOh55U6iA>8$$y;wAG1@O%>Lx8+dZ4|~RDd44g=|M&ebzkVDe5*7V^QdyLI zCZ_()Q??@W&pQH)7s?eyPb5Dq-_J& zf7s>wFV8sbp3{`yIxb~*KNWSp=Z5Q(Ge;d%`zgeGpWVn9#Jbyp@#PmQ)0(HG^+>4k zWQJ=PRZKf|4rGjtXsKugYB)0;r)W_pSsfna>hn(w%jM7VHa`2A3Og;;relLU_g?Pn z8SS1m&RaSwvmUmfRx?0ZM{7sXECVW^q- zube*X`X&52fhg}4hhEwHiJify2&PYwrBw&}3dqcc zh9n!ita_Z*Lbpg^(`WiKZqw^l0pAHwe`8ps^;9$JRB6tCvY@6HFV(R*T*cPCrCAdy zxzhMuI5?*!;h7JYy9zo(3k|b{4NB~rb6t8g82)+=D<{P#T;cF>09TvYhk2?%U7ws; zqD{5k{Z)DAv%kjk|LXXau#d>@Pt??g*WUT;hn)#>E4c0;3}Ug6@uoMV29l{U|5DGt zS=<)9=m8eL5)>s(Xl1;sdylpF?HiQKzh>%-in^+69BKXStl=)B{7ZU>0@iNu{j2hk zsz_YezMJfN>HFvLNg^(`yB}LqfgbS>TLAMP_rQCD-#IUzMM}H~4kE^Dt)qe~syirz z23?K$4zV-jy*`L7((M(_LuhV0vh2qzNH(;TZC1@!x8Reoq_`wqsO^kzn&Hjx3f4co z@w$}Yumy{kx2CQ_7jnV~>B_yoXlAL}cVExkzkZ5-Y}eFsa2S4myU4MLID>ffP{1~6 zGtdU$*E^2p!{5Ko?(qBEh~8xq4HF%)q_{74i$^Mi8PurOoTaGD3jAvcn?FmC!dJVe z%HmQ72S*NM_Q~^W%NiQ!Pkju8U(Ji`v~n~aXYh}4U}MpK>8!ruJiKAf zPH7kk5%*q)C7GsQd)-DJD+poH=ZcrE%j5v;S1&T|K414(QNwtXV6!qL zT@)MH-z9-1bqNkH$|<6vy3&Nb8mEql8c$CB>8PnC$~)04?eu_vJ5m^Q&*|u>Q|u#(hvHSR(eQY^Td&@ zn1T%0ucB>ipIg<>dkFj!#m14!jPPt5lw$T)s+7+|i^s%@%7r>R#Ka8f$7pB@b8u+x zI(&8Q?o!PfV$Z)|1_0%j=Z9z85f8r3>g7SLxzKZek#2JV0#X%?)C}OQhMcj4#7eI4 z#S*?&0M@AtKAcCcHS!x~(ufVi<0{eAWrZP$^==YYAdG<>3FPk1mi}j4sSOfntYRkX zyFZ`QQm_-gF zX9iUMHmj@&U`|*XA-Dgda60sUU6sLB?USs^)eQ=r(1}RYIP;;-?V)LT?}W>;7Vza|YJj>0CBH;8x7cd>j~*)VjrcB+0J9LUVFNQU5kz9ZnKaxUR>lA}Q8sVB~9}E^0v5f@3(l z$*ntKLJ&hFY598nn+H`0p0J(0+GKVb?L9mMPic4t5!zawIdLeAr{g;M7;Mc`;*+Jq zr=b>Rp@n5dy5&%Cjon-HtNVB9f^J$v0E$N0g(+0u63&;wS`|E#83&FFL=0y>O`mD2 z@VBk-`k8#G%RKLAg>iKRUr#oXjI2Lb!Bh|j*Z%t(a&AwX2&`WZk5`&TzgH3wOTa8#T(3T-Q^zF zDAZgo!u;@H{pjbN@P+i_sjtfpUfmlT8P8AFqNkP>(^`e|>z_(JJahcgPcY-JMfc(7 zOIO&Uyl`UpYx5ek>aRQ+9-gvi`JW2P|9H)&6-YA}K*Z}f>09Xcsn^Rf`SqJa--DuV zrE`?_Z4ZT{$a>7J z8>C+f+3M{x8~_nMNL1)m66 z==t_yZA`DtD0eG?)=j+`!@$4f9s)nluwBWCyk1C%H z!~R28b|&r~IKMEJ`zPN0s$*4g)|UjuQLvC)72M9ATWf4gT1nP>*|@I>U;(gX^!Gox z6TI4~4=ek%Hq{=SbOXOZ_}VqYe=&Fu=0$Qmg3Z;k1jc!tmLJuQ_V8RB!TiZutU*6U z4SX~WVNXUxS6^A6#ajgt%;LWh|IvZABZ;4#Y}H^ z(<@5~3JY&N57K+vDuw+H7gK6lY4{Vd#H)liFc=-IPlYeOWXAx$;qi|G^f#2&;1YbQ zUMMfK)T+0do8IhxagwFc&diF%iieJ59Q)6pul=o|D|zf=;(jPstVcYK(*G1$76pqv zyJ+_v{2w&ZvyRU@7|q@4Tjc9(u0|<`+m1T<3q{H62>$64TysUN8z>4eVRU1+JWM28*MTOv+R z91$A1T5}hC!8+y?Hbc_5Thm3D7cG{a{G!g=d&g^Qhdo;cEDtQ+@FuIbt)b_AlORFO zm~yp?Gy6@L zkVk;$WnVR`+c^?_{&!f`BG>Na&=tKv5U%c4f-C-AA_FnT3YJjnBwQ#PW8C@YD5>c@31yW0FWoKlNVc{?!mX9vY2kJTHu z?nRj=Emn>O00!1vSc(&=yYb8vJKDG{Ja_kN*|@=oTi-y*=>NFhx)%wfNX)t{pD!XQFwfvG}x52 z8`h+(!XhH^N8#C9Eh%~U9gYe{nt=)W)>=B-T8cS#R-upPMS@uehZAVjOztHX=0T7> zJ7N{@?NXM|CB8vs?*o?qRMNPloO>T2&LsTaz=8(ANbvI?&B7`t)FTq7$v>w#k4cXQ93v`!7GN7EnL z4&HyZHF~l()=`0EGuO#DyLqTx3=5CU1S)tnxD{DygPTju0%btt zjpI_U4e!M>S|o@mB%Y|p?$HL-$MHQE(yb@ASJRMLeUG|CjT#chSJ zx$)d)n6>-n+peo=7&VY}GqpdgbdB?hBd%f@Pj{?06DVs*7DvR|wDYsfNX{)4LV*YPSvy&iErtWma4`Zubg{ zHNq1xRc?mc^}z-!XYNn4C#uQmlRO>-x8W?6Z%=eyi- zL&S=Xy^M{=vQpg5wDISo^4lmQTOpAA-m#Za9-`!dhZ9AO*eHcuaQ$>dzm3;%Gv0*o z^_Qft$ujJvGW^Z7A2q%DTyB|i$RW?QERhhI^1w^~>}emjXZM*pLrZhY*A0%{w>5e+ z*I=XeEfD{yQ`^c}w*T0>&$O@4mAw7x6hH=j{wc6Sy)WArBj z^r4;HuEQ?!Yrh*Gi658fp97u{ZNtv9zHL(;!J*bDkNrN*{nC3o7!VXPo!v?ny^e{EP zwu1y_byv%oozJwU-*fsRBtkjz1ow2%Vj^8o+1ceizFgxe2mvscN4I>(qp1p%SR$fQ zm6r~C6SrlSuoNQk!ReL~JMSIQcsfsRH4x;|r6HHZue6OMGy+w{NQAsi7OeZzvVi%2 z1JjFAY2Qq?ljz`PUoz4HvJz35fay-|%)rj%FgefG+$-NTIFF$Cd2q7q+_QD|2TzHIS7seuqoER30pI>!Y4g&Z@F; zhM!`Km$!qYESHS!gzHMx+spW%Q3~FFl&)9^gb(?U7_}hyjy%~+(_4NlbJ0UEuT5)x zbCiH5s6=uPqt)jwh*gPF3P=whxGPDG*}6G!xw0$usX4AnD!~KJV!$1a>#+|il1lLw znFc=)-wzBJ=BJAwFCk9RG671uH(t#{(3{lJ)OmG3%h zS#E_z^BeKcPr^f!aKC`ZV+i<$+&Nm0mHPV z>03R7dCDBKoA-S;p9L!Ge;+){s2#n+^CWbc;d7b|<#~QH(Nvg4K4tSQkqg0lr8B5x z;MKBRUC~~G3!7guElTHD$!ga_@+=N7WqXMH2Ul^rN;K_1v=mGdt`=k&8yFOj=3_?9 zWR>z{+-w!5#_PFP_2Z4ork5x}wQOc`j~3b84s=ED#>+h&k!K%pu$J&df@E-wb4^+* zY?mCgYfLUogo6`hIB1QhhyiR{`7Fzxjin63Y-47QJk5La;&N^U6?@`oFPkbW3e6ou1@_`x+d zb{w1KT-ptSW}|0ZqxejCE~{jroHVqVR1 zKtJX4Kv2MZ)c-K0AbmRUr?VNct5D1e{ za6OM`2tc$^u;|5jAL!XxuuuWkZxe_0PJdClwx1;Kd?F$z&pWE0Z4a)~Dciq4zuQD7mYKjK(o)hgctjDyLRqal@w0q-621UFiS!2P1 zCLfu#Zm-X;-^3?uZ$R&c130d7r7Akh^xJNmIvfcw6)o>4mbB%#~SU#)MPYppO z**n^xWc-L!A>kal1NX{r8$?3h0Y!V~QCZrkSTFpH%*B8Aj-*e{VzhfwdP)xTq^9jc4M0G+|#DZKHpLo!~fXS{?N|?a+rYXOXUm%6IfUwY17q zC+1Qscgm@@VTu zJJiMZWaF68TUD{^)Stg-_Z9EhDv8GjBjC%zpXPTR3_H;bux1UX^%@lwmv0;nzqwt9 zCEYcl%XaLpVGH#e7SS{C8GfsMCw*P@(*Z|k zthKDAhYz5w`Da0YN@MeI75kQ;eRKuTKo&s!`b4j(3-NR&;<#ME0GD0Hg4>-TAhaae zD2<9ybkW!L62_)(<(tJg8w=>L9Pm_-~91eq?*w`u}IhUF{B? z=NA|y9aN^UPy(9b&w7SqppaC!WY5??e=?7n;nNo*c)t*x^Wz0H)p*=nPonKnYm6z| zWCnj%xCh6ci^Fm#KRp4U&&Wjvf7CTU#-SmMgt~Oj|GBzT@}h-(b}nuv-|;tvb?~s% zuXLz**5)oq(6_J-JqK!kTC0!5w-BOL>rZV;_tE;Wt)$tsDdPh(9{Tn;`3eLAw@nx|gxl0DN$ zvAi7D-t^j57wmPO&D0Z0a0TUWo2R3NhV?Ay$+-d?lMaZ+a^k!VJ{vy@pt|+AfyQC@ zdgp_xS0M85d{@V#svghZyPqZNt!4*p?rTfPG#G`;fRQf3T*GIj+r2kq0{Y_Zry#QK?C=xG5)g!@Om&b?9L#GS?b`3K4G#6C(l ziUHTQ+m5zT3;krEPM4fK*LP9Xd7=_;Bi>vJ@h%(Ml`s@H&3$%t%=xyFCmP8~%CEOY zwf+u}{kiaGb>qHOFQ9VOQOJ;qQ zP(_?zY*U|u3#T$-8K{YYORJzy6T!o1)|7QTOB_Bg)>BuKFgX=`?r%d+$EYS788WHI zuQIMCCU$)=PIgRft=O(zZ!pMf|AQy%*J-u(th|k3>!}khAVPrgL|gs%qhAaQdfHol zhZ5EUYr#dQ15qjxTnqYyVmtsHr}hNSN)H8z&}86?b-49RX92dQPV2!o@IbJ~XnLDRwavahHmeT){P@3%fQ=II*1>2>t8$O(di(gEhRC`0QvmNW zR@6p}X(V;h%6bF|hVsz8F9xp2FE2Lk@->J&#s%Lz(wk*{>F{f)UCOEMfOfr)XP=&# zizjGcLNU9#_%`>E|7zoYnbJw5h7vRAfUu z{Ji*GWyEvjkZ_e9XF0|wgtStUk!Fq#LrM4E`ibsE?~XHG{J@0cR#Q7vblRG0n(%1s z8N)&86qj~unCrLtp94}oT)Qvp#M$^#x8J7Kel*O@1PD2pAo$!+z5+Y{9aSrKfJhb# ztac5gYHMeHCtUp*zE+}S_ZL-LFZ-fVD38O}Y3#9GiKnOd+PqEs8Dr;GH`>*A% zGekCf*XDHW*gw1U;s?r+umjVpnzEqE9^P=nK~0ag5#O#6f0U&yXlUGmxH*!Uaa;q* z;}({L7)Y!;;vudI<(-~$sIpdRZL{KP6Z7PYTIL{PKo5CrCLY+x0qd{jb~=Sm-Gmz- znE~O8NX~VSf3PWLbbwZAwa#9`9Zf;Qrwvv`?3MM2BNu&jT(aU*7vB{Pmap2dVKB7o z$=#<;i-F&Hh~b=AO6A_iW+|=Sm|t17NdUpG1Hoq0o?iR@Ldp@jd4-7aW$Q1FVNuui z12U6);3V4IaYZaBE(<4ZEiVt$Z z@^FBA93wGj{y;Xn=b!RQ4f5z08XT6wwelGa($S(xo!NV_63 z;~LwWFd}#k_=KOuy0|-dH675f%437Sw?E5dd)J|@0v=Vx@r_f~G{`zwG|x@q6XY8U zEto$NbAz3nixa#Nq)t_FfSTyH&WLe1uOl`ViZqQ~Iw|xT+1$?)cjpZ;@T;He;dj(xn3aF^9KDbN~^*XvS|e{fI({f`=_Rv8uT^W}bi5N_x;b%c7;tmdCa%6Q+z z;@27170AXNS(n!M+t@a|@a4I?jJgE6jpOTcG3hvhP;ug229yFQY1&1wG9s z)okZ059ZS})PgsR1@G4m)!CzTtQ%g%@7~)%^s^TmppQH6l|ED|qJ(_?posbWD>(%w z)e~&5pe!+!*EbaPH)}Z?^7(1=OX)Fko-~omgEVlSc?nN;Z#LSoMzO9<6J>)YrwrC!yb84ot$^pZplMr*H8* z3QU19e|%QmwBJ3iH|Kv9etLhTvk_Wa7K*=xLOv#p_7NfF#3zvP?k+UGrGi3IsbmhX zNTs6;3sS4BB}Y5A>Il;TbbYn~fF2W}7DMuQNxz7!VN^-tW8O-Ha@gnTB0Z&8q6I-$hqdjrpGBpMnPsYb0+@rpubc)NaNcxV z8~j2G$YdLIzhU>+kC1Wfcz?0TugJzz5G)o9`ZH`iQ6ix4My8Q!kga;D?w z6z8%9ttVa~l~L~6E4R`qpq||^1NSxlrC#lp7KqpQcnzU-*pLZF8fUZxmsY`Bt{NZs zC#wu4W1~c&gvx&!MwzfsK06&txNT{)xoj;m`-K}WXlu7!#2p)rw#k2FrTY3wi|eYC z;Cba|hZa!ZE}>kCQgv}iIiGJPq!t}-aV)we(Hh5*#(U2Q1*PgET_B%w_o1rJIrCLL zT-FAIUd7Mwcb=ano8wP)MXEZf6oba!U$WJ>vRyTFLah}CzN&tC)9fh9NW7YOhEHNE zZo$sq4$t!7$IB$sL+5I--vZ(@9zP2owf6M5ZnUd?!yTKOMYZei4cSBn1Z9pdx(Cw} z_Fc?s5f{sLce0hyt)=qvkA5~^nelj>@|#HnCbKe(;wx}{3c)b{2c@f+tS#;M_V~;I zL73KABEb9k?QL20aEp})N)#U*+5zrc5u=z_fT${%{eh;;NgwqkB=m{r$m`dlOUhIyje>Zn)=})d4KxDix1Z(+L_!*HE(i_WXqVF z%Mv@z=>jie^-FW!X&28HepA3rKg9N|Udl38eIr(Q@r*NR>&%bU2t5=lt~I~k^7EHm zY40u*oBAU!t?%SpPrjy7$&8aff1&;>WrQZ6DEo`J%dY?j-a#aJ2Uq47>)QQyPkRYc znK$Hp1t#tDW>YW5!LNUKsZb2<)g=f3dEO8HMi1hPM&YegF<{|w2Ake&zaq-cc~?5R z^<`7!TTp}VZuIkLWfaWKF|D;(_1VtdLk_k#Vh1{7b0KtH)g>ReYdKg|NqRXNb>7x- z7y2w0M-RV1fypNaW#)>h?-1K3UszI$%@WDF<`^qknG^F8m1(g4ZXdE*Jl=kHW^hj}o^Douypn-TWq;WrySqf+ zIUBzlEx%iO$|`ixIgV(C_i}H2i!5t5B)NkbT+^=PRYx^vx8DW0K?owD&3Lr0MX$$N zMdB^~{P@J9$zJ7l`HH^{^>&o(Zsi^^`sM>-l>t%C{f-ljqN)j+;EUM%C?uG!pL*T7 zxL^R>%D>+yf^r<(cS2h4@$wOu<-TVL+EBHcZ^Cc`)X9`($o=uf0m@G;kB$4Jn`Lh1 z+xaWp)6tpwyStc_a(qvFR3Xou_TiU4=GVFR2qNiK<<7WXG9;LN^48n*l7X%ktpUML z6KdRcf6~394^Lyk_=ZWEf`AKaA=ER4ap$l4HGD6>M~~HW`0Uh@-O9(evfiPt=t+Oo zb*nrZ5>_iFe{7&N3{HW^3021P>P6 z-7QFPhA_AX4;Bb+f#AUjF2UUfcXx*X!QCB#yX&B5UfbWfPGaD1D(!TlZ%(h8WDLs{XFBrY@3-fo&b??2?*1_jz?hLSR)L2mSy| ze{DpT+)Wp?!`OBSnVr>1Y;?M!$wuIqV1=~^mq)U{yrI`cAg@Yy3(85QVI|>_DCF`J{L12OtDJtK zt>^wjMSUp9-sytA9nIj0dQ+>R=Gdbq=oMvhaQVn77^XE_*Vuy5O87yAmvuKA=JZ&r z-mM(l==q$3Z}Xsii?U~Hws-m03OqW%2Saf!x5X`OtU+bL*w~5oSKW@-TSvX)Diw&Q zQ-}3;>-pRDe*5D5xI_)PWh~HMGKE7Uin`sq9EEAl_5O7s@CRVQeLMKEo9+VtWvu%2 z$#XU8yj}$Pjkld!z477#efS>w^^>LZId6(=dk4(DLs7?b%+alP$JGO|)2{dB+Kcn$ z+S7&i(`kcQq3GTnL+NgiQcZ@(UfJ8{-6YKX@*ZizEAvB_h7W4hqRRfaC7rCm3@Q^x6!Q_Ab^`lF9~YfQ!7ZAx7`^rtU_PqLeI zoJGfD_&~DiU#axe9S`G^V?qQKZMU5hRHN3~+T39;vBkCQ;j6J;3T1bjRwjPDfQ07_ z%`k^&Du3WEfkO~H&m5JGO!Rb$z~Uh`jD8s@E*1!hl%$>)%!X}S)c&dY==UVap`NFJ zO@_?1-2#*e>pu_aufCl<+B|Fy z#02RZ@Oi;e`eTBiy`~E;KW|0)^Or0$Uhkb0um$P~F_WH`Pw#8cG%l$f2 z%i5N%mw1cIDDD>T2S-n=fVuRDx;a6dW^1; zHrxHiom#(U$z>oRU@IvMxZYJqa9)2RG!M9r@5it5m~0AUyP2&CBOWL=ftXS9HV3jd zF!LsMOFi3VY-Ty3=^d0svfI!^uqs4MaXord76mY%p=9_AL6c?G#^r!NX9lrxto_+)qc4@_10y0*jv##`aF~+DSp)rWp80D zPVY_>4nTl(lGrUv06Xm%vyOg(2~`;Nu?Ls;)mS1GgywG_){h?hQ%|4oMs976JYJDf z%AkS6@b%=Mu`iVPDc?SC@~%Cdr;?BQ-?pHDwfsl71qg3F?U@~Q$9Sw5cQN#5LqJTO zw5mb#8(J|kJxw$&rL1LXKj~vhywg5o=ASU*>%`@SWhE@azvsc-jS1rWv_GB^Y~}*g z?VA3&`~?l*QyT@3Ifcs!pnRUHFr^}&I6d}M^S*p)ZhE16N=NUxg+6^gac$&|B&kS2L=BgxNBs<8@%2#vd5D$yw>J~hv)!c8_i zgRuze@Jxaxci|+VGc;kujVwjB`)rkQCfS>&6b%kUr4gei`tLeP1j6!lN0pXLf7}xC z=e6*!`(5lm?z++=@nrGISUEUf2I?jQq~wY;2C`HZ?CuufNq`D8V&0tKo*M+aed4vp zvKnnPR>W`n$K8)ej;7+kxnJ;FjNxl?k1oT8at-Qq;ISsjde z-L5^c!!^A8hGuBbeVlSok&f-@uLu_(V%AzT#U=%Ne_WqOm;Nj)VjU_k<>*`jE~oZ4 zH#muCSUiMH?sUys%g)Dn^?t0R;tJqXdB4B33N?LYhNCwuE&q%%w72s7d{Qow(n0;Zf) zq3{3-4(~5p;H!8Yv1OCq@k8I7&;NmL)fV&0%V@&g%1bp$(G>t#+;VPMa+Li|jp~3w*g(s9UzIV{ z#15Wgecp6d;r_;!p$b{+NM4HqZrcl3hrfpRpy3wT*7-qNI|d^3t*UKFqgQ&Ho3xB_ z-|C|IX68-6+bi8Kat}OeWv1yd!+AV-^lcbagg%yxN^kSgBim#uG>n_1m@i$-G#cE~ z#udQj&S8p-&^7u+EN=*h@M(TbeIZ_a@NiVuE}F8_U@C<21vI!-Su`~i%S%svUxWW; zp)z|QR~G)19czS*x`!=7|5oJ9`nX+1#AL>aW{;EanFtgISU^v;!v&4 zA*<<-w-}Jge8!!n$p&rrSt0ZYzKOGO;Gofv;A861)Rdn(5 zmk-J)cFcU6>7NE%xIgTXur+jlR1#%st!-5`#k%Iv?6c@b4x|$IV#aB77hFqJEH2GS z9lI4I-WP!V$#-W$4|qTAzG>ury-Og43k{z#scaF1rks?eI~(|TwtBbhHltFRGRUYO zKP^L(Y}#<>sM@B&_KVl|w%`%t68^jKG6re0v4t2xONDc)48UMla_3N&bi|E`IGMPq zDk*M|2{37*w=Kl3{#BiQm$^h^7N)4dxiLlQV8$s*MqI;V(}7s1|Ehclzl;e02!=>X z?%bT}vpD?(1Sz@}CLA&))=t9XNN+)y3U{)?(h*<*?_aO1wu|^~=}8usq889r@Qw2! zvNsaILgPtW?KV%!o0A-u^VG`qrUeo2Nw0Ba`h8rXMiW33szQf5S5ldFOH}{Qxa-Fr zHfk6E#Vh*NWUt0_I+a~L&Z{nGrC&AktC+U!PqXZwVsD?OtvW;_Uj{MoCjt93i3ou4 zr%7+f_MAVI1W4JgjqO#m-gMnQH$Be1m=B{Gw46=eej3+(iL`wlTdh6b*j{T^LBxi% z$=Jm7nb})>*4)f3tl%m^o(|V&W?xBD&eb1#trFTGTW!aaKH9ZTCeO&4A81?&5>6V| zNyQ=N%JOT_WuhcnJU*`qu`&|Ms>9H=cM<2I3)A#Y)-`^f@_yYzSWL;(+?+|KIT3;N=K?9u2@)TMEv4|EeLRoMH51~22E*x3 zV6LO6c&tg&M1)Wr#bj;ogl% ztDwYW_{n#$9->Bf`G$kh=`hxh%O+HGvqXERokc_rifu+LpSR7+c#w^)Is+lOacwk` zOq-&&b!it~_M7Sc(uB}V*Jewb7}v9OwzJ%x<-%Qg`}icg`%Bs8rITU8;!t6?80Nwh8i7 zgDDP<%TGk{U!EPmX0&LVIMLnuNMWa?BrQtEy0sKEoXT4oca$^!D0?RWyjbT`dRrz8 zx4W|Z;4=GdKaL(PUCicK?6jbPTByk7su|IZi+ly;9B^F@RKn)vbvBBpRpeXNqm!V5 z{cud9A>*3=J&mBL{E*xk{3)4?Q27?)9j_a;R@C8j*T^mXaN@mQ*-%EiphfdmJsL5b>2~gGXdc=JbJafDPpjqspMHz^0@{r=opTW%_B21R|9h|-N zs2Hl|Xdi~Nuupe7q*C3)wi24zIy%lZ3AoQ>$gTHX%}X}dE;Z726KX3jvr>hGn)Osi z=(GvfqdQ(2c&i#;#A@*%QfROv{YDbQhjA=$KfYSr>NB#IROHg8YFGNLt|sHks6roI zohCe|ST4WTc*!7_;Ru~}0|B?5sfO{5bC}KI7Sw^z3L+;s7Dw%qCWj3{p4jBe@^jG( zG(L_R(JY6>TaZEcL`QyhndVZs!DWYbJ<=PcNb9d!p%bx;WB>~Mb3OMdsi@}qEU)fW z*5X2spLMydYUQyk79}_zCS5m$ z+h)9i9ca8q-t9Y?>$cShdO7<o!ZtfkT{T2Fm}*VxP(5?wXt8SG}xDxSNB+2Tofqy!>Hg~N*}`%b8P zhO?Ne2xZ8I@MBIf0(&kQfw9m+)Yf$$C|`y_aht9@TNyVF_ZlU5K9-#C-tVodz3sgm zID0&@KNpQCZ>sYeI`za=NW?u_Jx6q#p1~0UlphGx}k-?#}!I3KtCrgTO{& zsNefFVs>4fzpxQ#&dtRxr6Lid)+oaO{P(nj3kdRU+!gZT=CrI2SYMV6{Wo2mM_L-I zZ1L#A%XmJfU$9B>ft9T99<8*X>+Mnw&f><~i|3*iX6w-1h2KYhn688Q6)A@R02S&b zu@E5msLSJnId=wA;3vxMqWlCpq}5cE-WU%iyjHn6l)ab-Lp>N82Wrl7WEgSZ^|etY zw>N1Gu`XY*1$;~};nhf(iv18aZM> zKe84U(n9Z}ypIB^hfwnOVl9d6(vp;2W<1@P?MEO}yi;cNJ7WKt{qvq{Y2R>(Sv*k7 zy`m4p*)|4eNs;5vcX_Si9+JE zdxY+O6ZN;Ii{DZe>hR=EEY(vR_z6LSTx}n)p)ScRt5%KRCX1Ln4-YBuRfL=Kx1tO zXjY+0l}}1)1Yg1zwv~8AtPrrL27WnHLcvMDPgG}?ASvtz%RuS!FStWX;>L33bA`xJ zMdk+GJ^OO=A6qLORLV3is-({uUz3M@%@tKeTxTL}&Sg}DrqCJ*bbBWQ=tuGuk*Dt; zljJ;s^t}X8HkB~hdWPB$?CqSi5C&7O9St}fCsrhB;Ny`G2Q|TMB|u*{!74f#@=>a|z+0aVsa&)2YcoJAhu61?|x!MXS){cUhlw?Z5Gp9MJQlDE()$cgaWSc-AOznLCTx#$Qv>y07Koi6U}DRz5O{Qspwf`96$zu2@$tD z3r~{2K=BLoH5V2eLOV{>UjedEApPD4f$?LlIktOP`jPnoADD2z688-G8)*R>(u3k8 z-Gio^X>xItRx&`=xuJ^H#LEc7e_&fY(JBK}FgWSGl+}cKGt^yl)8|QQ&A*7_NZWTXE>l&OlE-#TD^fHbxxNHPX2LdU$V@@tX{&vXkPeKY0p;2NAOn_TRp;3=F7XG6smMzgsDIscN;Bqa|v*}APJZ4Y;C=jFIINCOz=J8i>QNQC~657#6+pN{#ZKU$r9dY_BE|=oS3bI& z>2ww&H?JB|0`sdqsyzyVYD;*K0765dwO$2b;oAC2`5SgvjWmb{ZX?b>HICvg?*MTj ziTx{Rg8MiPC9`=Zg+@zm1Uh`}GzCM{+{W}1E{P{0DR zR5ZP*mBXWczp^Y?A``W$H;RG73O2M?ex1`#{w2a>GgDa^HgPNT#WFpWuCqGxv$WS- zdE?WNJE$86AhE6aP$7L%d(p*_$nFrJOi|P}uZHV6vk_E}o06~6I zR9{wo9AaVAp(TTb)!5}Wy8i48nVZ&f$$W=1CH){C?vXIqlk2NOu9)``I0cU1-jL## zZ_l|lagG`H7fA)u_ihspv!N%~w&`ugYRN>yYhF**yE`i{jv}a0t-vbXIqzp)Avf$C zVQ-T?tKP0pxx9?#hX-!QJrV7b%4pfv;qX()A!*ro#0*+rH5*oiMl`){M><}3Up9_T zcw)FG&4I~!`sHsyVqYv~g|tz~&R}fWh!!!gZazK82eH^ z)o@_0lBG5w3k&#F=^bL_=va4P9y&=tYJ>RH-$4TRd(QWB*YpV|lnxSW>)vd9Yc@Cd zEO-1>@P}n+wi2Jf;#Ejqz`^D)&G|qr$d=QBQMM;ZSI>C`?7>cr<3s}xjiF8SBT%Bl zK}c1XV`PZecJi@}Az?ac+S7n_965GN$yP&fZzM2jC4expb&rd+#vU_VW-;mZNQob*TlT1=EM$eL6-I}shC zYgDSqLiX$_I{9>+g%y-7Rn2rZZ#d|U&P$>BE!9+U%B+qn_v;%lL8vh6YA%sezX};- z^WJ?-W2MLVS`9z~DgG>%d<|$gz!DxYZ9Vkm0+xsOze~QPtc47VCtdK9FVfLe9vca$|+f?-knwd ztog3MgZ80!W!!1I2j3k%iUiPfHb_)bpW&qS+7h>W?+0CM0sz2KTibt-2B%m91<8AE zegh}mxb$p^`>BG~KVq_Lc@lG?G2p4F-dlg>$gaM<`iSrRbQW$_#QzoZxPmFR*o-oFPVp-9Z)q|5>k;%# z#&RX;L(Q;V4FyO=CEC>2E2cdZ&zY2y~uj^rxsV>z3+<}K|O zc|m>IT5{yEce$EdJ42wjN%Vd;x?9Lvd$b)p_>M6QX@4o$#3lsz{2uXs1YUMkv_02| z&;EyO7hECNTNH)x(3na8kk|9n&Y!;Iv|mj%BmwKt?piE{4xpG42xMD0MBN?Z ze=O#rr^Az!Ji%2YdN8n$xS1c*cfz7--~qbPH?Bqbi1n@r=3Lg^q6vPF40v?GD_ZqT zA&F^$b@rMZyQ)p^I2feM5nVe9orLCY4$c2Ax03%@0@!J)_~-!odXc`Li3G@&H?ef7 zWn_d$(zPDpJzn#k?fFk+$%6z3HTM7f$v*GwQf2*29?(h@My=I1@b`vFl5AzRgUf5(i?1vna&ddJ3 zU28S)x@Em%UvD!D>R7xqU&* zH%eZ7Zl^&+mZBF<4moGnSE>wiK8P#U&0-Xznstf#i?dxPS#F2|%#dBdujy`ey8^ zk`uy0`Ulgoyq|StdfEo{cm*b>B$GsPXKw#g7;&r{)N&y&?c z9OwyA?%KB8Cv|50B_E2mvV;T+SXuP$%weBis)N%cp|~i)KK(WqCMfLx=jKW#zBUG4 zO~Lh3*ZPpa{y44zT%u6^v1u;^pA`W5df#1Tpv`#_lWU3Z+7)Umduk&hI1Tc}OeSyP z=n%H4Q8@;2!Vx!@-+U|tadkV)?0p}mKHb{`VmoLelj1bHp%Lnb9ckwA%W?*ly!|0P zVvc`jb2*vW+W{j+w9>0J)}1eY8Z zNlA-M_6$|`EJ9kAr=JYjzj@o69dikXM`c%n$$=wY7g@LOb4JIxPG#bF_83(zJeeG8 ziG&izEOtd&l|4OKlbQ^iafa8Zz~nuI;T%xYEF(KI(2Y1)a3d+?74W|a7dBnv6nu7w6#id)N{zC1{yG93w_D4P8folMg4d3E9lA@<~RwOgEe)u(d*{XXfM*DQgkG*xzz< zp@4p8Gp`O5ayK_0S*G~QGd0`2& zJvu#q-Ff~mmhHRwzY%WVW3)eMxc|6a^dT{7hJ4YVu)B{A2#s#AC3qN59CLC?vpM8D ze!D%3M^5TEDl<6kZjy;Rt4W2pvSA_7@LEs6N)}ObVKeO^-iEZBFUfU)ybK!O+x+qc+j6vx9bi2*HKW=L0uL42PGu=j|=JiTu!|{sGU$ zp;eWzmdY+s^SsU&n+=VNf|J71J)3^@pl?Yec>GMV%xX`?*3-j|TA2sN1ub{ulcdYe zV4j0s!IFStgOj=HWoH>ZU-IlO{TMV<3V*ET#mmp8?e5|-0wv>1xeJ;ezim0Q-Xl%r zCADq)1C$T9M88N|5++YPU6ickU&PX)6unB6C+$=Kzje}Yn$Kp@^QfI3T^|AuX1v0k zLXMC-m%@y-6#s)quh#@k{%-m<(X%CT69Rx*^Brx(xUe2K%Cf1&Qd zifE!D9pTv@wj0iwwKpk$pk~d<*>%|1jC;-zFrMk@MIT*isDsRNu(m;r9Xod0L#&JU z<4()z50=CXOy~faFL8;Gvl(%6P2^Qw5EqOZX7QMUvlnLVDKxCD0f1cpS^#eG0BGKY zTDQ59PPR@Ky-&!F07{ahf~h-r_?tDF&-zK#8Bnw(1|se&$0KXi72LX295Wwi{+mVt#udmC+hhu|aQJ~$gh}Z)0j>aw zA1j(IBQ$_Y2kJ|w@(5Gm`0(NI<&W|SN4G!iK?1RFTzJEc-R8E#G@uz{etA$+J1k)Y zB8!d9@Ypa(3zniW$x_P@SHdHWB!h7mY4N2cpMpHBkYKx`} z;cltob{HeyfqB18;_;slw&p%ZuWSBcrVBM&cmB5XCVJ?H9y$H#ypKO1Z8D8Ia%ey0p1d z63Dd-xn8^y3mquS9CLS}jUK!GZ|eM*5^9H-u5;gtZRt=@GLoGmgBcT|@G`sw+D>$G zbxJ7T6(p8X5q$%IV^0MD=9@4ipI87UU!9kr${Z~+h_jhz^BTS>%@LePn1+APYAGuU zxN5zZ#Q-3cWV9cz%%hi34gTJ{NFpXsF{VcCw6-Z2WQo^RyBzOPgoBdBKpWd#LIA}z ztJ(6bB&ouiWHp+tj0@JjVq6x^w#y4Grb>W9SvV6dQgnRFro$nGJ3hF@5nNEZ%kE5w z43&-e&PT7h)1xe6msV`17{5od3=11CC-m?2d6ip&6GPq6ETQ~a2DKI%i7h)5<@(%d&_@L6;&Dd{9 z)%9V8adO@>Z)nyQ^NyDX z0C;tx95=sWJ}BWaw|a$@TmGeRt-J}_BvZ(v2(uXETUHLK9t6& zN4UR>8<|<4xwDBVrO%8g(nQv+n}Uh@bh)ye1lP1aTp4y2F)XwkPx}gpr3Jo{h_%Q} zO>28P*?QOvlNk`o2pjgkkA%_6aVSi@=n#2&iwan%mh)mCJR&sDnrr2iqJlL#IdX}@ z9Il8~Wb?AvYQqI()iwvAtg$flBQ4LyxU6gVj?KPn6w)(0uEKbP{7R%!P1dfR;$6$w z@v%8LJ|&aJ2TMu+BBi+$`f~s&;u6Zk+#`!uXQsX=thVsKk!K*%P1mD?CtkSpv!ApR zsnvF-Ri1p~w%Y_lE$Fa&PgF3jB{+6-Z7S7=*O+o41VYN9-{@}^6bau7H_Z`hRe65n z$Ep4LaZz@L=zu4_Y=NRwF_OJp>Wwu^bv>pbsugGI_wAr)@zCAa^`0KIam#l-h}Qg+ z%&?S8Ng2qM7T+W3OGI{8BQY-&5L_B~FT}rBH0tyG)|U$f7~1m_z}MA}7o|mgPg11g z1BdldS!IEaIqAUbJ&Y~UP$ZOw zDjZ5%PnDI2%YzD_$ae+C4;ll+zssFN5rs?S{Ah?rvtvi|&g?yF$E_$|=jC$#n!8AL zeccW@JKVp)s~w8Xuhm^yy*6slOjUo=m@`Ol?j^IdQ3;wxLF*7!#4a{5@I`ypoabaJ za~Cu;M9DL7$;k6)U=cQbXh{Obpz=7PHS8P?Fb5WXIgko=6T8MK&$YkMU#2cn@s{F-|HJ&dYCJ_6DT6p?)c5`r^U z2zgaln*i@|xO5k!14xLqk;Lm`gvM&D96B4D+rcalnWkR{x>49L;x=Dw;-`}3A^5!N z8=qLm!aOW`XaAkxDZ5Q?--JATo~~vNiAmsFu*?EICkHU}U0U~x9PeJ0X|PTw?LuQO zg^?fBf`D^4k~&7tkg1VsV%9J34j0r&2|+sl23oFQ)R9}J{j2L$xWw(h6iCa6*ZVt%rvT~` zgd(AP`H*jcOT=*lhQDW-hVOEDbPjU93uYAgVFOIguLMH^s;bW4Cc>K^xmML&(MJs= ztO}8%a%l3;59ixHF1D^t+SqnD4v-}grJ|6ZA+VSRR2wf-GIN`g1sReaek8KDZ?Z1< zmZZuxMGl|ciUf_^9D;^bL1~L}nJLuOz|j)5;u#S- z(f^$QOqjm#l)yf;OHK9POaztv6dmVQcvsIDzt^VJLZR&V=2`QIxS@|;v$$99&BWgR z;W+&14|$u)WRka}nxn^>%H<>FTZ1R^MjxO(`F7MnkDhu}M+Er`GF72A*t@7S$Ov9M zk7odACt?j=i~k~CWuIJ0KSmBbiHZ2CSxHYNC}%lz3Ehu^{bhOE%>4es1Py{BP^n`F zn$^o>I}^izKOvSw9>SeS1Q(0SIvUi(^8T4pcb^?BOGU1gLev4oE3TKYT8cmH&U)MS)7zuO3DJBcB7QCB?Vm8kC_F>nZHPIs9}i$ z+4zNuwgzD^-F3A16TeBFAuHh5COT85+~TVE9mnV+fWnK;kzY44UVPok>CLU0NM7B z8UaOh-uCfXj@nL!PHc^|!GQOL(}7%90zw7N^b`47C5~B>@n+L273k5<=)u7uf%34fJ zMWfJl|K^*~Q#JFg+(?~lSsFvHi=q(U>9ZNO{hoDb85uv=m-}FX zYTVt9A(fyC=o(C$8=v8LYYYb@Ls`CzURlzUzQa8&Fn%BmG8-=ge2)xzjAib5KaUve zP}}GATpWhkRChih*f|W|g55nU8BI(2NI=+x|2@~+kVKbl%mE#j@)u7+AKeMLHRb^2 zS;;D4dO@4*JhBJNR!5EWHC~B6bhwt!TzBJ-%>vnDqhyAaR?j5uDgH;-y`1U~)ZE1j zO;w8u8y>rBSvCu@zK|EH{btLw#duZlrW<(byXdsjGi3jLNjE7Kt(n!mfi?CcL2But z%XRw}#Vek@R6XUzOXj=G+nvTu`4;za1uUwJV9A913oG&D!RZroRTUJ>#`zT6MST(; zJ^mB*QNbwrnjtUAJc?iPRBzIn+q9jJNijPFwx=?j(mFN+U`+7WZ5-~bOhkgdsK zoT>dIVrNEi;86>(N-eLC=D%h7sSg58G*ENV(mnX3eTYrE4|K_OJJ30pQM)Ymn!PkC zA}dTFzCS?ICUSc>Gv-GNx7gea8LGOu>9=ws;V9QFQqpS&jdM0YO;j=2#B0|QT+^wD@p$wHqOC8~FgQ0F8%;M55)Hg_^8Uwe?mK0NhK|$OO zwhE=Q%|YF&f`N!ivs9X0fbj%!RdS2C@ruM@3n? zNqDRjFwRyxDs7@gMo`lhGM^Ggmd#5Ff(9zdR#3w$QXJ@z+*@z?#9BZfv>>F)w(spo z=CLgW$;z0p_juSZDW!H0d9!;J4%a`0Mj-k^|S_y^k*k z40%yrB>H-v^pRIa((ZOp3#!}e7W%L#{<6*N4Sa(=<)s)ITSXrATg+zF^ZWbj2|^(^ z(E1*^>&OTZe;*>L9E5Ii{%C^$n^Iw0bVx;SzjM&1TmLSpzZxctpj6zRaku1sR>n8_ zyrl1RD_kV@Poudc_I>;Oy&yd|5#bLn2a;d4S@eSbJ~NL{Rw8QX{b>GC*-{wxVe5xx z^gj(glvh8#fsVt4JZk>xg>kOqkUHK2z&}3mIO&*m@~2twrXkcR4;URETi3qHhob?c z&Auu!{nf+mNZ{eSf5cXNnE%yp^zUkHxS%&QU+Bx_T*pNDYgc@~qV%4>E>EfE*LEE4 z_|4jI<*ti)t+M>_Zpz%*4F0c?KqA$a@h+A(9C%qhE^MC2Ty25WP1*Le^L*$ep?t2X8o{)6}Ey@40d>e-nWZ-93M{0A?P(?7qwljh%Cyj%;xM z(+@=I-$Imk37^f_e+Iqu>36saYX8&Y{^-y%ZW@~ng=`OWw6$LpI->p4K2X3pF*M(4 z@?_rM_v0vyyZEvczKfb-{YxOw*RqG+)mU{=Pe;xM8Ju83U2O`+ppZk+|dU`vOV5`e)>`Hvg|q u@4Wfv%Z&!^|MH3b|NeDQ|7R?>Ul2*+ZRI!aTlN3Q5-B60C|(XS@clm#Xo4vK literal 0 HcmV?d00001 diff --git a/doc/Screenshot_20221019_174036.png b/doc/Screenshot_20221019_174036.png new file mode 100644 index 0000000000000000000000000000000000000000..d404f4a632fafc857cb273dfc452ab0335813d2d GIT binary patch literal 46984 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 literal 0 HcmV?d00001 From 663fb5ab9401facc60873dba0bcb9444fc4ae674 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Thu, 20 Oct 2022 09:15:12 +0000 Subject: [PATCH 003/115] New project logo --- README.md | 2 + assets/logo/README.md | 104 + assets/logo/logo.png | Bin 0 -> 157346 bytes assets/logo/logo.svg | 377 +++ assets/logo/logo_128.png | Bin 0 -> 16036 bytes assets/logo/logo_full.png | Bin 0 -> 304751 bytes assets/logo/logo_full.svg | 5986 +++++++++++++++++++++++++++++++++++++ 7 files changed, 6469 insertions(+) create mode 100644 assets/logo/README.md create mode 100644 assets/logo/logo.png create mode 100644 assets/logo/logo.svg create mode 100644 assets/logo/logo_128.png create mode 100644 assets/logo/logo_full.png create mode 100644 assets/logo/logo_full.svg diff --git a/README.md b/README.md index 2b65c9f..61450ea 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +![BurritOS Logo](assets/logo/logo_full.png) + # BurritOS BurritOS (BurritOS Using Rust Really Improves The Operating System) is an educational operating system written in Rust and running on a RISC-V emulator. It aims to be used as an educational platform for learning about operating systems. diff --git a/assets/logo/README.md b/assets/logo/README.md new file mode 100644 index 0000000..151d836 --- /dev/null +++ b/assets/logo/README.md @@ -0,0 +1,104 @@ +# BurritOS logo + +Designed with Inkscape. +Font: [Fira Code](https://github.com/tonsky/FiraCode) by The Fira Code contributors + +Logo by François AUTIN + +## Licences + +### Fira Code + +Copyright (c) 2014, The Fira Code Project Authors (https://github.com/tonsky/FiraCode) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/assets/logo/logo.png b/assets/logo/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..15c8513d2e871c9360c54fd76f1e9ac7fdd9a08e GIT binary patch literal 157346 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�ggmQLQhE8((O^ycOg# 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 literal 0 HcmV?d00001 diff --git a/assets/logo/logo.svg b/assets/logo/logo.svg new file mode 100644 index 0000000..91ac653 --- /dev/null +++ b/assets/logo/logo.svg @@ -0,0 +1,377 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Background of the logo + Background circle + + + diff --git a/assets/logo/logo_128.png b/assets/logo/logo_128.png new file mode 100644 index 0000000000000000000000000000000000000000..1518e3a4c841d212e0401ecba9a9c5f0d85bd391 GIT binary patch literal 16036 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�=ML9*GX_4_g9o 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 PUteOVYYMBn=@R#Uqt;70 literal 0 HcmV?d00001 diff --git a/assets/logo/logo_full.svg b/assets/logo/logo_full.svg new file mode 100644 index 0000000..7730f6e --- /dev/null +++ b/assets/logo/logo_full.svg @@ -0,0 +1,5986 @@ + + + +BurritS From 4425ac747e650fe4cb3ae03865160cb5f09123b1 Mon Sep 17 00:00:00 2001 From: Baptiste Date: Wed, 15 Feb 2023 15:45:37 +0100 Subject: [PATCH 004/115] debuging mem_checker::from --- src/simulator/mem_cmp.rs | 12 +++++---- test_file_section.txt | 23 ++++++++++++------ .../simple_arithmerics/unsigned_addition.o | Bin 0 -> 1088 bytes 3 files changed, 22 insertions(+), 13 deletions(-) create mode 100644 test_programs/riscv_instructions/simple_arithmerics/unsigned_addition.o diff --git a/src/simulator/mem_cmp.rs b/src/simulator/mem_cmp.rs index abddae9..c4a8a5a 100644 --- a/src/simulator/mem_cmp.rs +++ b/src/simulator/mem_cmp.rs @@ -94,7 +94,10 @@ impl Mem_Checker{ fn from(path: &String) -> Mem_Checker { let file = fs::File::open("test_file_section.txt").expect("Wrong filename"); - let reader = io::BufReader::new(file); + let reader = io::BufReader::new(&file); + let reader2 = io::BufReader::new(&file); + let lines = reader.lines(); + let length = reader2.lines().count(); let mut pc: usize = 0; let mut sp: usize = 0; @@ -103,15 +106,15 @@ impl Mem_Checker{ let mut tmp_addr_str: String = String::new(); let mut tmp_len_str: String = String::new(); - for (i,line) in reader.lines().enumerate() { + for (i,line) in lines.enumerate() { let current_line = line.unwrap(); - if i == current_line.len()-2 { + if i == length-2 { //Lecture de PC pc = string_hex_to_usize(¤t_line); } - else if i == current_line.len()-1 { + else if i == length-1 { //Lecture SP sp = string_hex_to_usize(¤t_line); } @@ -277,7 +280,6 @@ mod tests { } - #[test] fn test_enum_start_at_zero(){ let v = vec![1,2,3]; diff --git a/test_file_section.txt b/test_file_section.txt index 05d3ead..df1b0d2 100644 --- a/test_file_section.txt +++ b/test_file_section.txt @@ -1,8 +1,15 @@ -0 -0 -FF FF -F4A12200 -A0 0A -01022B -0B 0F -FFACBC5CEF +addi sp,sp,-32 +sd s0,24(sp) +addi s0,sp,32 +sw zero,-20(s0) +li a5,1 +sw a5,-24(s0) +lw a5,-20(s0) +mv a4,a5 +lw a5,-24(s0) +addw a5,a4,a5 +sw a5,-20(s0) +nop +ld s0,24(sp) +addi sp,sp,32 +ret \ No newline at end of file diff --git a/test_programs/riscv_instructions/simple_arithmerics/unsigned_addition.o b/test_programs/riscv_instructions/simple_arithmerics/unsigned_addition.o new file mode 100644 index 0000000000000000000000000000000000000000..3d69445f952a67be3ab705cbfff4767457813b8b GIT binary patch literal 1088 zcmbtTPfG$(5TE^H>dlfOs6bJ)ARen}M0hZyy!0Jp)y4L(tGG`w2uck40A2hdow{`B zL-aKwq1)CxdoLd^>EgidZ{|1id-G=4y*g?AqtcHefS*xgiLN0CQ)aU#u{q$&K(BzTJ1Eo-zhpy z*(n`aR^j9zRVb1ovEVF)`Mw*phM;YsYbGN7;c>|=_N<17FQoo8HiHT8U(1S&F4UDh7Vwc6_JZu-k2yx?P{NAUgujc6|U6 zTzk}RBGUd3UI~vnBMPK#QyWM#2!OP@p6B?;&9_NxO8aheK%GEzS_yYh&9<szKHD3M2@Ol;0jpwl-wu1f;wd_pwgA)CBF(;eoFR+YByn9csVg8g8X(b_a zf@ZPwYY7@&xc9~}ipb_<4>R`NFpJ}(?vC+O-e`{nlBxaIF}FpF literal 0 HcmV?d00001 From 9fab99e31f39d73df97ddd4f5e4ef4a9e58051da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Rativel?= Date: Wed, 15 Feb 2023 16:14:27 +0100 Subject: [PATCH 005/115] make struct and function public --- src/simulator/mem_cmp.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/simulator/mem_cmp.rs b/src/simulator/mem_cmp.rs index abddae9..3e2ccd6 100644 --- a/src/simulator/mem_cmp.rs +++ b/src/simulator/mem_cmp.rs @@ -82,7 +82,7 @@ impl Section{ /* * Representation de l'etat de la mémoire (apres execution.... a confirmer), sous forme de sections */ -struct Mem_Checker{ +pub struct Mem_Checker{ pc: usize, sp: usize, sections: Vec

, @@ -91,7 +91,7 @@ struct Mem_Checker{ impl Mem_Checker{ - fn from(path: &String) -> Mem_Checker { + pub fn from(path: &String) -> Mem_Checker { let file = fs::File::open("test_file_section.txt").expect("Wrong filename"); let reader = io::BufReader::new(file); @@ -151,7 +151,7 @@ impl Mem_Checker{ } - fn fill_memory_from_Mem_Checker(m_c: &Mem_Checker, machine: &mut Machine){ + pub fn fill_memory_from_Mem_Checker(m_c: &Mem_Checker, machine: &mut Machine){ machine.sp = m_c.sp; machine.pc = m_c.pc as u64; From 6507b601e7e2d94ffea055e90ec2292cd1fc11c0 Mon Sep 17 00:00:00 2001 From: Samy Solhi Date: Wed, 15 Feb 2023 17:20:10 +0100 Subject: [PATCH 006/115] Added loader --- src/simulator/loader.rs | 33 +++++++++++++++++++++++++++++++++ src/simulator/mod.rs | 2 +- 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/simulator/loader.rs diff --git a/src/simulator/loader.rs b/src/simulator/loader.rs new file mode 100644 index 0000000..0391aed --- /dev/null +++ b/src/simulator/loader.rs @@ -0,0 +1,33 @@ +use crate::Machine; + +use std::fs; +use std::io; +use std::io::BufRead; + + + + /// Load a file into a new machine + /// + /// `panic!` when size is not 1, 2, 4 or 8 + /// `panic!` when the text does not represents instructions in hexadecimal + /// + /// ### Parameters + /// + /// - **path** the path of the file to load + /// - **size** the number of bytes to write (1, 2, 4 or 8) +pub fn load(path : &str, instruction_size: i32) -> Machine { + let file = fs::File::open(path).expect("Wrong filename"); + let reader = io::BufReader::new(file); + let mut machine = Machine::_init_machine(); + + for (i,line) in reader.lines().enumerate() { + let res = u64::from_str_radix(&line.unwrap(), 16); + match res { + Ok(value) => { + Machine::write_memory(&mut machine, instruction_size, i, value); + }, + _ => panic!() + } + } + machine +} \ No newline at end of file diff --git a/src/simulator/mod.rs b/src/simulator/mod.rs index 54d271e..6ee59e2 100644 --- a/src/simulator/mod.rs +++ b/src/simulator/mod.rs @@ -2,7 +2,7 @@ pub mod machine; pub mod decode; pub mod print; pub mod mem_cmp; - +pub mod loader; pub mod global { From 39b7db864a64671119d62d9fdefbe607b82461af Mon Sep 17 00:00:00 2001 From: Baptiste Date: Wed, 15 Feb 2023 18:01:50 +0100 Subject: [PATCH 007/115] calling mem_checker in main --- src/main.rs | 13 +++--- src/simulator/machine.rs | 5 ++- src/simulator/mem_cmp.rs | 91 +++++++++++++++++++++------------------- test_file_section.txt | 32 +++++++------- 4 files changed, 75 insertions(+), 66 deletions(-) diff --git a/src/main.rs b/src/main.rs index 4acaaf7..41ec194 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,14 +1,13 @@ mod simulator; use simulator::machine::Machine; +use simulator::mem_cmp; fn main() { let mut m = Machine::_init_machine(); - m.main_memory[4] = 43; - m.main_memory[5] = 150; - let a : u8 = 128; - let b : i8 = a as i8; - let c : u8 = b as u8; - println!("aaa {c}"); - println!("read_memory : {}", Machine::read_memory(&mut m, 2, 4)); + let path = "test_file_section.txt".to_string(); + let checker = mem_cmp::Mem_Checker::from(&path); + mem_cmp::Mem_Checker::fill_memory_from_Mem_Checker(&checker, &mut m); + Machine::run(m); + mem_cmp::Mem_Checker::print_Mem_Checker(&checker); } diff --git a/src/simulator/machine.rs b/src/simulator/machine.rs index f3f635b..4b80ffd 100644 --- a/src/simulator/machine.rs +++ b/src/simulator/machine.rs @@ -155,7 +155,7 @@ impl Machine { /// - **machine** which contains a table of instructions pub fn run(machine : Machine){ let mut m = machine; - loop{ + for i in 0..MEM_SIZE{ Machine::one_instruction(&mut m); } } @@ -190,7 +190,8 @@ impl Machine { let val = u64::from_le_bytes(val); let inst : Instruction = decode(val); - + print!("executing instruction {}\n", val); + print!("executing instruction {}\n", inst.opcode); match inst.opcode { RISCV_LUI => { diff --git a/src/simulator/mem_cmp.rs b/src/simulator/mem_cmp.rs index c4a8a5a..8b3bed4 100644 --- a/src/simulator/mem_cmp.rs +++ b/src/simulator/mem_cmp.rs @@ -1,6 +1,8 @@ use std::fs; use std::io; use std::io::BufRead; +use std::io::BufReader; +use std::io::Lines; use crate::Machine; const MEM_SIZE : usize = 4096; @@ -30,14 +32,14 @@ const MEM_SIZE : usize = 4096; //content est une suite hexadécimale //Section dans le fichier, champ String car informations proviennent d'un fichier txt -struct SectionFormat{ +pub struct SectionFormat{ addr: String, len: String, content: String, } //Section dans le programme -struct Section{ +pub struct Section{ addr: usize, // adresse dans la mémoire len: usize, // nombre d'octets de la donnée à addr content: Vec, // la donnée en question @@ -82,7 +84,7 @@ impl Section{ /* * Representation de l'etat de la mémoire (apres execution.... a confirmer), sous forme de sections */ -struct Mem_Checker{ +pub struct Mem_Checker{ pc: usize, sp: usize, sections: Vec
, @@ -91,59 +93,60 @@ struct Mem_Checker{ impl Mem_Checker{ - fn from(path: &String) -> Mem_Checker { + fn vect_from_lines(lines: &mut Lines>, pc: &mut usize, sp: &mut usize) -> Vec{ + let mut vector = Vec::new(); + for (i,line) in lines.enumerate() { + vector.push(line.unwrap()); + } + let size = vector.len(); + *pc = string_hex_to_usize(vector.get(size - 2).expect("0")); + *sp = string_hex_to_usize(vector.get(size - 1).expect("0")); + vector + } + + pub fn from(path: &String) -> Mem_Checker { let file = fs::File::open("test_file_section.txt").expect("Wrong filename"); - let reader = io::BufReader::new(&file); - let reader2 = io::BufReader::new(&file); - let lines = reader.lines(); - let length = reader2.lines().count(); - + + let reader = io::BufReader::new(file); + let mut lines = reader.lines(); + let mut pc: usize = 0; let mut sp: usize = 0; + let vector = Mem_Checker::vect_from_lines(&mut lines, &mut pc, &mut sp); + let mut sections: Vec
= Vec::new(); - let mut tmp_addr_str: String = String::new(); let mut tmp_len_str: String = String::new(); + + let default = String::new(); + for i in 0..vector.len()-2 { + let current_line = vector.get(i).unwrap_or(&default); - for (i,line) in lines.enumerate() { - - let current_line = line.unwrap(); - - if i == length-2 { - //Lecture de PC - pc = string_hex_to_usize(¤t_line); - } - else if i == length-1 { - //Lecture SP - sp = string_hex_to_usize(¤t_line); + //Lecture des sections + if current_line.contains(' ') { + //lecture ligne ADDR LEN + let next_word_index = current_line.find(' ').unwrap(); + tmp_addr_str = String::from(¤t_line[0..next_word_index]); + tmp_len_str = String::from(¤t_line[next_word_index+1..]); } else { - //Lecture des sections - if current_line.contains(' ') { - //lecture ligne ADDR LEN - let next_word_index = current_line.find(' ').unwrap(); - tmp_addr_str = String::from(¤t_line[0..next_word_index]); - tmp_len_str = String::from(¤t_line[next_word_index+1..]); - } - else { - //lecture ligne CONTENT - let section_f = SectionFormat{ - addr: tmp_addr_str.clone(), - len: tmp_len_str.clone(), - content: current_line, - }; - sections.push(Section::from(§ion_f)); - } - + //lecture ligne CONTENT + let section_f = SectionFormat{ + addr: tmp_addr_str.clone(), + len: tmp_len_str.clone(), + content: current_line.clone(), + }; + sections.push(Section::from(§ion_f)); } - } + } + Mem_Checker{pc:pc, sp:sp, sections:sections} } - fn print_Mem_Checker(m_c: &Mem_Checker){ + pub fn print_Mem_Checker(m_c: &Mem_Checker){ println!("PC :: {}", m_c.pc); println!("SP :: {}", m_c.sp); @@ -154,7 +157,7 @@ impl Mem_Checker{ } - fn fill_memory_from_Mem_Checker(m_c: &Mem_Checker, machine: &mut Machine){ + pub fn fill_memory_from_Mem_Checker(m_c: &Mem_Checker, machine: &mut Machine){ machine.sp = m_c.sp; machine.pc = m_c.pc as u64; @@ -195,7 +198,11 @@ impl Mem_Checker{ -fn string_hex_to_usize(s: &String) -> usize{ +fn string_hex_to_usize(s: &String) -> usize { + + if s.len() == 0 { + return 0; + } let max_pow = (s.len()-1) as u32; let mut ret_value: usize = 0; diff --git a/test_file_section.txt b/test_file_section.txt index df1b0d2..21571c8 100644 --- a/test_file_section.txt +++ b/test_file_section.txt @@ -1,15 +1,17 @@ -addi sp,sp,-32 -sd s0,24(sp) -addi s0,sp,32 -sw zero,-20(s0) -li a5,1 -sw a5,-24(s0) -lw a5,-20(s0) -mv a4,a5 -lw a5,-24(s0) -addw a5,a4,a5 -sw a5,-20(s0) -nop -ld s0,24(sp) -addi sp,sp,32 -ret \ No newline at end of file +fe010113 +00813c23 +02010413 +fe042623 +00100793 +fef42423 +fec42783 +00078713 +fe842783 +00f707bb +fef42623 +00000013 +01813403 +02010113 +00008067 +0 +0 \ No newline at end of file From 82c9282f0ee41a79ab744e762a3b8f583775b2a5 Mon Sep 17 00:00:00 2001 From: Samy Solhi Date: Wed, 15 Feb 2023 18:09:18 +0100 Subject: [PATCH 008/115] debug loader --- src/main.rs | 13 +++++-- src/simulator/loader.rs | 1 + src/simulator/machine.rs | 34 +++++++++++-------- .../simple_arithmerics/unsigned_addition.hex | 15 ++++++++ 4 files changed, 46 insertions(+), 17 deletions(-) create mode 100644 test_programs/riscv_instructions/simple_arithmerics/unsigned_addition.hex diff --git a/src/main.rs b/src/main.rs index 4acaaf7..46ca3ff 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,14 +1,21 @@ mod simulator; use simulator::machine::Machine; +use simulator::loader; fn main() { - let mut m = Machine::_init_machine(); + + let mut m = loader::load("test_programs/riscv_instructions/simple_arithmerics/unsigned_addition.hex", 4); + + Machine::run(m); + + /*let mut m = Machine::_init_machine(); m.main_memory[4] = 43; m.main_memory[5] = 150; let a : u8 = 128; let b : i8 = a as i8; let c : u8 = b as u8; println!("aaa {c}"); - println!("read_memory : {}", Machine::read_memory(&mut m, 2, 4)); -} + println!("read_memory : {}", Machine::read_memory(&mut m, 2, 4));*/ + +} \ No newline at end of file diff --git a/src/simulator/loader.rs b/src/simulator/loader.rs index 0391aed..5659003 100644 --- a/src/simulator/loader.rs +++ b/src/simulator/loader.rs @@ -29,5 +29,6 @@ pub fn load(path : &str, instruction_size: i32) -> Machine { _ => panic!() } } + println!("{:x}", Machine::read_memory(& mut machine, 4, 0)); machine } \ No newline at end of file diff --git a/src/simulator/machine.rs b/src/simulator/machine.rs index f3f635b..c088af5 100644 --- a/src/simulator/machine.rs +++ b/src/simulator/machine.rs @@ -183,13 +183,14 @@ impl Machine { println!("ERROR : number max of instructions rushed"); return ; } - let mut val: [u8; 8] = [0; 8]; - for i in 0..8 { + let mut val: [u8; 4] = [0; 4]; + for i in 0..4 { val[i] = machine.main_memory[machine.pc as usize + i]; } - let val = u64::from_le_bytes(val); - let inst : Instruction = decode(val); + let val = u32::from_be_bytes(val); + println!("{:x}", val); + let inst : Instruction = decode(val as u64); match inst.opcode { @@ -197,11 +198,11 @@ impl Machine { machine.int_reg.set_reg(inst.rd as usize, inst.imm31_12 as i64); }, RISCV_AUIPC => { - machine.int_reg.set_reg(inst.rd as usize,machine.pc as i64 - 8 + inst.imm31_12 as i64); + machine.int_reg.set_reg(inst.rd as usize,machine.pc as i64 - 4 + inst.imm31_12 as i64); }, RISCV_JAL => { machine.int_reg.set_reg(inst.rd as usize, machine.pc as i64); - machine.pc += inst.imm21_1_signed as u64 - 8; + machine.pc += inst.imm21_1_signed as u64 - 4; }, RISCV_JALR => { let tmp = machine.pc; @@ -215,32 +216,32 @@ impl Machine { match inst.funct3 { RISCV_BR_BEQ => { if machine.int_reg.get_reg(inst.rs1 as usize) == machine.int_reg.get_reg(inst.rs2 as usize) { - machine.pc += inst.imm13_signed as u64 - 8; + machine.pc += inst.imm13_signed as u64 - 4; } }, RISCV_BR_BNE => { if machine.int_reg.get_reg(inst.rs1 as usize) != machine.int_reg.get_reg(inst.rs2 as usize) { - machine.pc += inst.imm13_signed as u64 - 8; + machine.pc += inst.imm13_signed as u64 - 4; } }, RISCV_BR_BLT => { if machine.int_reg.get_reg(inst.rs1 as usize) < machine.int_reg.get_reg(inst.rs2 as usize) { - machine.pc += inst.imm13_signed as u64 - 8; + machine.pc += inst.imm13_signed as u64 - 4; } }, RISCV_BR_BGE => { if machine.int_reg.get_reg(inst.rs1 as usize) >= machine.int_reg.get_reg(inst.rs2 as usize) { - machine.pc += inst.imm13_signed as u64 - 8; + machine.pc += inst.imm13_signed as u64 - 4; } }, RISCV_BR_BLTU => { if machine.int_reg.get_reg(inst.rs1 as usize) < machine.int_reg.get_reg(inst.rs2 as usize) { - machine.pc += inst.imm13_signed as u64 - 8; + machine.pc += inst.imm13_signed as u64 - 4; } }, RISCV_BR_BGEU => { if machine.int_reg.get_reg(inst.rs1 as usize) >= machine.int_reg.get_reg(inst.rs2 as usize) { - machine.pc += inst.imm13_signed as u64 - 8; + machine.pc += inst.imm13_signed as u64 - 4; } }, _ => { @@ -602,10 +603,10 @@ impl Machine { } } } - _ => { panic!("{} opcode non géré", inst.opcode)}, + _ => { panic!("{:x} opcode non géré pc : {:x}", inst.opcode, machine.pc)}, } - machine.pc += 8; + machine.pc += 4; // Possible bug avec jump } } @@ -628,5 +629,10 @@ impl Machine { Machine::write_memory(&mut m, 2, 6, (43 << 8) + 150); assert_eq!(43, m.main_memory[6]); assert_eq!(150, m.main_memory[7]); + Machine::write_memory(&mut m, 4, 8, (52 << 24) + (20 << 16) + (43 << 8) + 150); + assert_eq!(52, m.main_memory[8]); + assert_eq!(20, m.main_memory[9]); + assert_eq!(43, m.main_memory[10]); + assert_eq!(150, m.main_memory[11]); } } diff --git a/test_programs/riscv_instructions/simple_arithmerics/unsigned_addition.hex b/test_programs/riscv_instructions/simple_arithmerics/unsigned_addition.hex new file mode 100644 index 0000000..d5a8502 --- /dev/null +++ b/test_programs/riscv_instructions/simple_arithmerics/unsigned_addition.hex @@ -0,0 +1,15 @@ +fe010113 +00813c23 +02010413 +fe042623 +00100793 +fef42423 +fec42783 +00078713 +fe842783 +00f707bb +fef42623 +00000013 +01813403 +02010113 +00008067 \ No newline at end of file From b86331503051a9a1e5250ca767febb25c0868fe0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Rativel?= Date: Thu, 16 Feb 2023 15:48:26 +0100 Subject: [PATCH 009/115] updated gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index ea8c4bf..d114b83 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ /target +/.idea +*.iml \ No newline at end of file From afe643170f561669fdabe977032e541844ea4368 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Wed, 1 Mar 2023 13:44:48 +0100 Subject: [PATCH 010/115] Automated objdumping of test programs --- test_programs/.gitignore | 4 +++ test_programs/Makefile | 9 +++---- test_programs/Makefile.config | 5 ++-- test_programs/Makefile.dumps | 12 +++++++++ test_programs/Makefile.objdumps | 24 ------------------ test_programs/riscv_instructions/Makefile | 6 +++-- .../riscv_instructions/boolean_logic/Makefile | 4 +++ .../jump_instructions/Makefile | 4 +++ .../simple_arithmerics/unsigned_addition.hex | 15 ----------- .../simple_arithmerics/unsigned_addition.o | Bin 1088 -> 0 bytes .../simple_arithmetics/Makefile | 4 +++ .../README.md | 0 .../unsigned_addition.c | 0 .../unsigned_division.c | 0 .../unsigned_multiplication.c | 0 .../unsigned_substraction.c | 0 16 files changed, 39 insertions(+), 48 deletions(-) create mode 100644 test_programs/.gitignore create mode 100644 test_programs/Makefile.dumps delete mode 100644 test_programs/Makefile.objdumps create mode 100644 test_programs/riscv_instructions/boolean_logic/Makefile create mode 100644 test_programs/riscv_instructions/jump_instructions/Makefile delete mode 100644 test_programs/riscv_instructions/simple_arithmerics/unsigned_addition.hex delete mode 100644 test_programs/riscv_instructions/simple_arithmerics/unsigned_addition.o create mode 100644 test_programs/riscv_instructions/simple_arithmetics/Makefile rename test_programs/riscv_instructions/{simple_arithmerics => simple_arithmetics}/README.md (100%) rename test_programs/riscv_instructions/{simple_arithmerics => simple_arithmetics}/unsigned_addition.c (100%) rename test_programs/riscv_instructions/{simple_arithmerics => simple_arithmetics}/unsigned_division.c (100%) rename test_programs/riscv_instructions/{simple_arithmerics => simple_arithmetics}/unsigned_multiplication.c (100%) rename test_programs/riscv_instructions/{simple_arithmerics => simple_arithmetics}/unsigned_substraction.c (100%) diff --git a/test_programs/.gitignore b/test_programs/.gitignore new file mode 100644 index 0000000..0a0178a --- /dev/null +++ b/test_programs/.gitignore @@ -0,0 +1,4 @@ +# Ignoring dump files +*.dump +*.o +./target \ No newline at end of file diff --git a/test_programs/Makefile b/test_programs/Makefile index e15867e..662a888 100644 --- a/test_programs/Makefile +++ b/test_programs/Makefile @@ -4,11 +4,10 @@ include $(TOPDIR)/Makefile.config # # Main targets # -objdumps: - $(MAKE) -C riscv_instructions - -programs: - $(MAKE) -C programs +dumps: + $(MAKE) dumps -C riscv_instructions/ + mkdir -p ${TOPDIR}/target + find . -name '*.dump' -exec mv {} ${TOPDIR}/target \; clean: rm -rf $(TOPDIR)/target \ No newline at end of file diff --git a/test_programs/Makefile.config b/test_programs/Makefile.config index fca5849..47436e8 100644 --- a/test_programs/Makefile.config +++ b/test_programs/Makefile.config @@ -11,8 +11,9 @@ RISCV_PREFIX=/opt/riscv/bin/ RISCV_AS = $(RISCV_PREFIX)riscv64-unknown-elf-gcc -x assembler-with-cpp -march=rv64imfd RISCV_GCC = $(RISCV_PREFIX)riscv64-unknown-elf-gcc RISCV_LD = $(RISCV_PREFIX)riscv64-unknown-elf-ld -RISCV_OBJDUMP = $(RISCV_PREFIX)riscv64-unknown-elf-objdump +RISCV_OBJCOPY = $(RISCV_PREFIX)riscv64-unknown-elf-objcopy +DUMP_FORMAT = ihex RISCV_ASFLAGS = $(RISCV_CPPFLAGS) RISCV_CPPFLAGS = #nil RISCV_CFLAGS = -Wall $(RISCV_CPPFLAGS) -march=rv64imfd -RISCV_LDFLAGS = #nil +RISCV_LDFLAGS = #nil \ No newline at end of file diff --git a/test_programs/Makefile.dumps b/test_programs/Makefile.dumps new file mode 100644 index 0000000..a9824c1 --- /dev/null +++ b/test_programs/Makefile.dumps @@ -0,0 +1,12 @@ +include $(TOPDIR)/Makefile.config + +%.o: %.c + $(RISCV_GCC) $(RISCV_CFLAGS) -c $< + + +%.dump: %.o + $(RISCV_OBJCOPY) -j .text -O $(DUMP_FORMAT) $< $@ + +clean: + rm -rf *.o 2> /dev/null + rm -rf *.dump 2> /dev/null \ No newline at end of file diff --git a/test_programs/Makefile.objdumps b/test_programs/Makefile.objdumps deleted file mode 100644 index 78a4520..0000000 --- a/test_programs/Makefile.objdumps +++ /dev/null @@ -1,24 +0,0 @@ -include $(TOPDIR)/Makefile.config - -COVERAGE = $(TOPDIR)/riscv_instructions - -AS = $(RISCV_AS) -c -GCC = $(RISCV_GCC) -LD = $(RISCV_LD) - -INCPATH += -I$(TOPDIR) -I$(COVERAGE) -ASFLAGS = $(RISCV_ASFLAGS) $(INCPATH) -CFLAGS = $(RISCV_CFLAGS) $(INCPATH) - -# Rules -%.a: - $(AR) rcv $@ $^ - -%.o: %.c - $(GCC) $(CFLAGS) -c $< - -%.o: %.s - $(AS) $(ASFLAGS) -c $< - -$(PROGRAMS): - $(LD) $+ -o $@ \ No newline at end of file diff --git a/test_programs/riscv_instructions/Makefile b/test_programs/riscv_instructions/Makefile index 29df4bd..c134d5f 100644 --- a/test_programs/riscv_instructions/Makefile +++ b/test_programs/riscv_instructions/Makefile @@ -1,2 +1,4 @@ -TOPDIR = ../ -include $(TOPDIR)/Makefile.objdumps +dumps: + make dumps -C boolean_logic/ + make dumps -C jump_instructions/ + make dumps -C simple_arithmetics/ \ No newline at end of file diff --git a/test_programs/riscv_instructions/boolean_logic/Makefile b/test_programs/riscv_instructions/boolean_logic/Makefile new file mode 100644 index 0000000..2150f14 --- /dev/null +++ b/test_programs/riscv_instructions/boolean_logic/Makefile @@ -0,0 +1,4 @@ +TOPDIR = ../.. +include $(TOPDIR)/Makefile.dumps + +dumps: comparisons.dump if.dump switch.dump \ No newline at end of file diff --git a/test_programs/riscv_instructions/jump_instructions/Makefile b/test_programs/riscv_instructions/jump_instructions/Makefile new file mode 100644 index 0000000..75b887b --- /dev/null +++ b/test_programs/riscv_instructions/jump_instructions/Makefile @@ -0,0 +1,4 @@ +TOPDIR = ../.. +include $(TOPDIR)/Makefile.dumps + +dumps: jump.dump ret.dump \ No newline at end of file diff --git a/test_programs/riscv_instructions/simple_arithmerics/unsigned_addition.hex b/test_programs/riscv_instructions/simple_arithmerics/unsigned_addition.hex deleted file mode 100644 index d5a8502..0000000 --- a/test_programs/riscv_instructions/simple_arithmerics/unsigned_addition.hex +++ /dev/null @@ -1,15 +0,0 @@ -fe010113 -00813c23 -02010413 -fe042623 -00100793 -fef42423 -fec42783 -00078713 -fe842783 -00f707bb -fef42623 -00000013 -01813403 -02010113 -00008067 \ No newline at end of file diff --git a/test_programs/riscv_instructions/simple_arithmerics/unsigned_addition.o b/test_programs/riscv_instructions/simple_arithmerics/unsigned_addition.o deleted file mode 100644 index 3d69445f952a67be3ab705cbfff4767457813b8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1088 zcmbtTPfG$(5TE^H>dlfOs6bJ)ARen}M0hZyy!0Jp)y4L(tGG`w2uck40A2hdow{`B zL-aKwq1)CxdoLd^>EgidZ{|1id-G=4y*g?AqtcHefS*xgiLN0CQ)aU#u{q$&K(BzTJ1Eo-zhpy z*(n`aR^j9zRVb1ovEVF)`Mw*phM;YsYbGN7;c>|=_N<17FQoo8HiHT8U(1S&F4UDh7Vwc6_JZu-k2yx?P{NAUgujc6|U6 zTzk}RBGUd3UI~vnBMPK#QyWM#2!OP@p6B?;&9_NxO8aheK%GEzS_yYh&9<szKHD3M2@Ol;0jpwl-wu1f;wd_pwgA)CBF(;eoFR+YByn9csVg8g8X(b_a zf@ZPwYY7@&xc9~}ipb_<4>R`NFpJ}(?vC+O-e`{nlBxaIF}FpF diff --git a/test_programs/riscv_instructions/simple_arithmetics/Makefile b/test_programs/riscv_instructions/simple_arithmetics/Makefile new file mode 100644 index 0000000..d775b97 --- /dev/null +++ b/test_programs/riscv_instructions/simple_arithmetics/Makefile @@ -0,0 +1,4 @@ +TOPDIR = ../.. +include $(TOPDIR)/Makefile.dumps + +dumps: unsigned_addition.dump unsigned_division.dump unsigned_multiplication.dump unsigned_substraction.dump \ No newline at end of file diff --git a/test_programs/riscv_instructions/simple_arithmerics/README.md b/test_programs/riscv_instructions/simple_arithmetics/README.md similarity index 100% rename from test_programs/riscv_instructions/simple_arithmerics/README.md rename to test_programs/riscv_instructions/simple_arithmetics/README.md diff --git a/test_programs/riscv_instructions/simple_arithmerics/unsigned_addition.c b/test_programs/riscv_instructions/simple_arithmetics/unsigned_addition.c similarity index 100% rename from test_programs/riscv_instructions/simple_arithmerics/unsigned_addition.c rename to test_programs/riscv_instructions/simple_arithmetics/unsigned_addition.c diff --git a/test_programs/riscv_instructions/simple_arithmerics/unsigned_division.c b/test_programs/riscv_instructions/simple_arithmetics/unsigned_division.c similarity index 100% rename from test_programs/riscv_instructions/simple_arithmerics/unsigned_division.c rename to test_programs/riscv_instructions/simple_arithmetics/unsigned_division.c diff --git a/test_programs/riscv_instructions/simple_arithmerics/unsigned_multiplication.c b/test_programs/riscv_instructions/simple_arithmetics/unsigned_multiplication.c similarity index 100% rename from test_programs/riscv_instructions/simple_arithmerics/unsigned_multiplication.c rename to test_programs/riscv_instructions/simple_arithmetics/unsigned_multiplication.c diff --git a/test_programs/riscv_instructions/simple_arithmerics/unsigned_substraction.c b/test_programs/riscv_instructions/simple_arithmetics/unsigned_substraction.c similarity index 100% rename from test_programs/riscv_instructions/simple_arithmerics/unsigned_substraction.c rename to test_programs/riscv_instructions/simple_arithmetics/unsigned_substraction.c From 8c737f4c42ac0a7ca0689d77eddd3bfb9f5c29c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Wed, 1 Mar 2023 13:46:19 +0100 Subject: [PATCH 011/115] Updated README.md --- test_programs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test_programs/README.md b/test_programs/README.md index 6e73dba..018ecb2 100644 --- a/test_programs/README.md +++ b/test_programs/README.md @@ -11,7 +11,7 @@ Set the variables to the correct paths for the [RISCV Newlib compilation toolcha ### Exporting objdumps ``` -$ make objdumps +$ make dumps ``` ### Compiling programs From f6ff30b63caa4ec17d6f1ec5729fd961a3bda6cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Wed, 1 Mar 2023 13:56:12 +0100 Subject: [PATCH 012/115] Fixed compilation warnings --- test_programs/riscv_instructions/boolean_logic/comparisons.c | 2 +- test_programs/riscv_instructions/boolean_logic/switch.c | 4 ++-- test_programs/riscv_instructions/jump_instructions/jump.c | 3 ++- .../riscv_instructions/simple_arithmetics/unsigned_addition.c | 2 +- .../riscv_instructions/simple_arithmetics/unsigned_division.c | 2 +- .../simple_arithmetics/unsigned_multiplication.c | 2 +- .../simple_arithmetics/unsigned_substraction.c | 2 +- 7 files changed, 9 insertions(+), 8 deletions(-) diff --git a/test_programs/riscv_instructions/boolean_logic/comparisons.c b/test_programs/riscv_instructions/boolean_logic/comparisons.c index f653fff..ec42461 100644 --- a/test_programs/riscv_instructions/boolean_logic/comparisons.c +++ b/test_programs/riscv_instructions/boolean_logic/comparisons.c @@ -9,7 +9,7 @@ int main() { } else if (x < y) { y += 1; } else { - return; + return 0; } } } \ No newline at end of file diff --git a/test_programs/riscv_instructions/boolean_logic/switch.c b/test_programs/riscv_instructions/boolean_logic/switch.c index 86a181c..4ad23b2 100644 --- a/test_programs/riscv_instructions/boolean_logic/switch.c +++ b/test_programs/riscv_instructions/boolean_logic/switch.c @@ -1,7 +1,7 @@ int main() { int x = 0; - switch(1) { + switch(x) { case 1: x = 1; break; - default: return; + default: return 0; } } \ No newline at end of file diff --git a/test_programs/riscv_instructions/jump_instructions/jump.c b/test_programs/riscv_instructions/jump_instructions/jump.c index c4fd641..99f98b8 100644 --- a/test_programs/riscv_instructions/jump_instructions/jump.c +++ b/test_programs/riscv_instructions/jump_instructions/jump.c @@ -1,7 +1,8 @@ int test() { - return 1; + return 0; } int main() { int x = test(); + return x; } \ No newline at end of file diff --git a/test_programs/riscv_instructions/simple_arithmetics/unsigned_addition.c b/test_programs/riscv_instructions/simple_arithmetics/unsigned_addition.c index 2881ac7..05a7829 100644 --- a/test_programs/riscv_instructions/simple_arithmetics/unsigned_addition.c +++ b/test_programs/riscv_instructions/simple_arithmetics/unsigned_addition.c @@ -1,5 +1,5 @@ // EXPECTS TWO VARIABLES WITH A VALUE OF UNSIGNED 1 -void main() { +int main() { unsigned int x = 0; unsigned int y = 1; x = x + y; diff --git a/test_programs/riscv_instructions/simple_arithmetics/unsigned_division.c b/test_programs/riscv_instructions/simple_arithmetics/unsigned_division.c index 729f889..8e71c25 100644 --- a/test_programs/riscv_instructions/simple_arithmetics/unsigned_division.c +++ b/test_programs/riscv_instructions/simple_arithmetics/unsigned_division.c @@ -1,5 +1,5 @@ // Expecting two variables with a value of two -void main() { +int main() { unsigned int x = 4; unsigned int y = 2; x = x / y; diff --git a/test_programs/riscv_instructions/simple_arithmetics/unsigned_multiplication.c b/test_programs/riscv_instructions/simple_arithmetics/unsigned_multiplication.c index c79294d..f83e4f0 100644 --- a/test_programs/riscv_instructions/simple_arithmetics/unsigned_multiplication.c +++ b/test_programs/riscv_instructions/simple_arithmetics/unsigned_multiplication.c @@ -1,5 +1,5 @@ // EXPECTS TWO VARIABLES WITH A VALUE OF UNSIGNED 2 -void main() { +int main() { unsigned int x = 1; unsigned int y = 2; x = x * y; diff --git a/test_programs/riscv_instructions/simple_arithmetics/unsigned_substraction.c b/test_programs/riscv_instructions/simple_arithmetics/unsigned_substraction.c index dd4e09b..e2b7ec4 100644 --- a/test_programs/riscv_instructions/simple_arithmetics/unsigned_substraction.c +++ b/test_programs/riscv_instructions/simple_arithmetics/unsigned_substraction.c @@ -1,5 +1,5 @@ // EXPECTS TWO VARIABLES WITH A VALUE OF UNSIGNED 1 -void main() { +int main() { unsigned int x = 1; unsigned int y = 1; x = x - y; From 73c49414ff120b549005d607fa444268d483728b Mon Sep 17 00:00:00 2001 From: Baptiste Date: Wed, 1 Mar 2023 15:11:35 +0100 Subject: [PATCH 013/115] print_memory dans Machine --- src/main.rs | 8 +++----- src/simulator/loader.rs | 2 +- src/simulator/machine.rs | 11 +++++++++++ src/simulator/mem_cmp.rs | 6 +++--- src/simulator/print.rs | 2 +- 5 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/main.rs b/src/main.rs index 41ec194..b245e37 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,13 +1,11 @@ mod simulator; use simulator::machine::Machine; -use simulator::mem_cmp; +use simulator::{mem_cmp, loader}; fn main() { - let mut m = Machine::_init_machine(); let path = "test_file_section.txt".to_string(); - let checker = mem_cmp::Mem_Checker::from(&path); - mem_cmp::Mem_Checker::fill_memory_from_Mem_Checker(&checker, &mut m); + let mut m = loader::load(&path, 4); + Machine::print_memory(&mut m); Machine::run(m); - mem_cmp::Mem_Checker::print_Mem_Checker(&checker); } diff --git a/src/simulator/loader.rs b/src/simulator/loader.rs index 5659003..7d31d18 100644 --- a/src/simulator/loader.rs +++ b/src/simulator/loader.rs @@ -24,7 +24,7 @@ pub fn load(path : &str, instruction_size: i32) -> Machine { let res = u64::from_str_radix(&line.unwrap(), 16); match res { Ok(value) => { - Machine::write_memory(&mut machine, instruction_size, i, value); + Machine::write_memory(&mut machine, instruction_size, i*instruction_size as usize, value); }, _ => panic!() } diff --git a/src/simulator/machine.rs b/src/simulator/machine.rs index 662ae2d..e7af292 100644 --- a/src/simulator/machine.rs +++ b/src/simulator/machine.rs @@ -609,6 +609,17 @@ impl Machine { machine.pc += 4; // Possible bug avec jump } + + pub fn print_memory(machine : &mut Machine) { + for i in 0..MEM_SIZE { + if i%16 == 0 { + print!("\n@{:04x} ", i); + } + print!("{:02x}", machine.main_memory[i]); + } + println!(); + } + } #[cfg(test)] diff --git a/src/simulator/mem_cmp.rs b/src/simulator/mem_cmp.rs index 8b3bed4..5c81029 100644 --- a/src/simulator/mem_cmp.rs +++ b/src/simulator/mem_cmp.rs @@ -232,11 +232,11 @@ fn one_hex_to_dec(c: char) -> u8 { 'E' | 'e' => 14, 'F' | 'f' => 15, _ => { - let ret : u8 = c.to_digit(10).unwrap() as u8; + let ret : u8 = c.to_digit(10).unwrap() as u8; return ret; - }, - } + }, } +} diff --git a/src/simulator/print.rs b/src/simulator/print.rs index 4cf103b..0539a43 100644 --- a/src/simulator/print.rs +++ b/src/simulator/print.rs @@ -217,7 +217,7 @@ pub fn print(ins: Instruction, pc: i32) -> String { //TODO pc should be u64 RISCV_SYSTEM => { "ecall".to_string() }, - _ => todo!("Unknown or currently unsupported opcode") // Change todo! to panic! in the future, I put todo! because there's a lot of opcode currently not implemented + _ => todo!("{:x} opcode non géré pc : {:x}, value : {:x}", ins.opcode, pc, ins.value) // Change todo! to panic! in the future, I put todo! because there's a lot of opcode currently not implemented } } From e82af4ae67eb1ed46b7517f6f9f8849d7356f2f5 Mon Sep 17 00:00:00 2001 From: amaury Date: Wed, 1 Mar 2023 15:21:18 +0100 Subject: [PATCH 014/115] ajout du fichier memoire --- memory.txt | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 memory.txt diff --git a/memory.txt b/memory.txt new file mode 100644 index 0000000..41a6de2 --- /dev/null +++ b/memory.txt @@ -0,0 +1,8 @@ +4000 1b8 +ffffff97 ffffffd0 3f 0 ffffffe7 ffffff80 0 41 13 5 0 0 ffffffef 0 40 1 67 ffffff80 0 0 ffffff93 8 0 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 10 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 20 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 30 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 40 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 50 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 60 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 70 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffff80 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffff90 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 fffffff0 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffa0 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffe0 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffb0 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffc0 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffd0 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffe0 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 fffffff0 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 0 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 0 2 73 0 0 0 67 ffffff80 0 0 ffffff93 8 10 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 20 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 30 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 40 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 50 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 60 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 70 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffff80 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffff90 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffa0 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffb0 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffc0 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffd0 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 10 2 73 0 0 0 67 ffffff80 0 0 ffffff93 8 20 2 73 0 0 0 67 ffffff80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +400000 1444 +13 1 1 fffffffd 23 34 11 2 23 30 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc ffffff83 37 ffffff84 fffffffd 23 34 fffffff4 fffffffe ffffff83 37 ffffff84 fffffffe ffffffe7 ffffff80 7 0 13 5 0 0 ffffff97 40 ffffffc0 ffffffff ffffffe7 ffffff80 ffffff80 ffffffff 13 0 0 0 ffffff83 30 ffffff81 2 3 34 1 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffe 23 3c 11 0 23 38 ffffff81 0 13 4 1 2 23 34 ffffffa4 fffffffe 23 30 ffffffb4 fffffffe ffffffb7 7 40 0 ffffff93 ffffff87 7 0 ffffff9b ffffff87 7 0 3 37 4 fffffffe 1b 7 7 0 13 6 7 0 ffffff93 ffffff85 7 0 3 35 ffffff84 fffffffe ffffff97 40 ffffffc0 ffffffff ffffffe7 ffffff80 ffffffc0 1 ffffff93 7 5 0 13 ffffff85 7 0 ffffff83 30 ffffff81 1 3 34 1 1 13 1 1 2 67 ffffff80 0 0 13 1 1 fffffffd 23 34 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc 23 38 ffffffb4 fffffffc 23 24 4 fffffffe 23 22 4 fffffffe 6f 0 40 b ffffff83 27 44 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 63 ffffff92 7 2 ffffff83 27 44 fffffffe 3 37 4 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 63 ffffff98 7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe 23 26 4 fffffffe ffffff83 27 44 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc6 7 0 ffffff83 27 44 fffffffe 3 37 4 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 6 0 63 7a fffffff7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe ffffff93 7 fffffff0 ffffffff 23 26 fffffff4 fffffffe ffffff83 27 44 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc6 7 0 ffffff83 27 44 fffffffe 3 37 4 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 6 0 63 fffffffa ffffffe7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe ffffff93 7 10 0 23 26 fffffff4 fffffffe ffffff83 27 44 fffffffe ffffff9b ffffff87 17 0 23 22 fffffff4 fffffffe ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 ffffffe3 ffffff84 7 fffffff4 ffffff83 27 ffffffc4 fffffffe 13 ffffff85 7 0 3 34 ffffff81 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffd 23 34 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc 23 38 ffffffb4 fffffffc 23 26 4 fffffffe 23 24 4 fffffffe ffffff83 37 ffffff84 fffffffd 63 ffffff86 7 6 ffffff83 37 4 fffffffd 63 ffffff82 7 6 6f 0 ffffffc0 4 ffffff83 27 ffffffc4 fffffffe 3 37 4 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 63 ffffff96 7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 4 fffffffd 33 7 fffffff7 0 ffffff83 27 ffffffc4 fffffffe ffffff83 36 ffffff84 fffffffd ffffffb3 ffffff87 fffffff6 0 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 ffffffe3 ffffff88 7 fffffffa ffffff83 37 ffffff84 fffffffd 6f 0 ffffff80 0 ffffff93 7 0 0 13 ffffff85 7 0 3 34 ffffff81 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffd 23 34 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc 23 26 4 fffffffe 6f 0 0 1 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 67 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 ffffffe3 ffffff92 7 fffffffe ffffff83 27 ffffffc4 fffffffe 13 ffffff85 7 0 3 34 ffffff81 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffd 23 34 11 2 23 30 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc 23 38 ffffffb4 fffffffc 3 35 ffffff84 fffffffd ffffffef fffffff0 ffffff9f fffffff9 ffffff93 7 5 0 ffffff9b ffffff87 7 0 23 24 fffffff4 fffffffe 3 35 4 fffffffd ffffffef fffffff0 5f fffffff8 ffffff93 7 5 0 ffffff9b ffffff87 7 0 23 22 fffffff4 fffffffe ffffff83 27 ffffff84 fffffffe 23 26 fffffff4 fffffffe 6f 0 40 4 ffffff83 27 ffffffc4 fffffffe 13 ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffffbb 7 fffffff7 40 ffffff9b ffffff87 7 0 13 ffffff87 7 0 ffffff83 37 4 fffffffd 33 ffffff87 ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff83 36 ffffff84 fffffffd ffffffb3 ffffff87 fffffff6 0 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 44 fffffffe 13 ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffffbb 7 fffffff7 0 1b ffffff87 7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 7 0 ffffffe3 52 fffffff7 fffffffa ffffff83 37 ffffff84 fffffffd 13 ffffff85 7 0 ffffff83 30 ffffff81 2 3 34 1 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffe 23 3c ffffff81 0 13 4 1 2 ffffff93 7 5 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 1b ffffff87 7 0 ffffff93 7 0 6 63 ffffffd2 ffffffe7 2 ffffff83 27 ffffffc4 fffffffe 1b ffffff87 7 0 ffffff93 7 ffffffa0 7 63 ffffffca ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 7 fffffffe ffffff9b ffffff87 7 0 6f 0 ffffff80 0 ffffff83 27 ffffffc4 fffffffe 13 ffffff85 7 0 3 34 ffffff81 1 13 1 1 2 67 ffffff80 0 0 13 1 1 fffffffe 23 3c ffffff81 0 13 4 1 2 ffffff93 7 5 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 1b ffffff87 7 0 ffffff93 7 ffffffa0 5 63 ffffffc2 ffffffe7 2 ffffff83 27 ffffffc4 fffffffe 1b ffffff87 7 0 ffffff93 7 0 4 63 ffffffda ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 7 2 ffffff9b ffffff87 7 0 6f 0 ffffff80 0 ffffff83 27 ffffffc4 fffffffe 13 ffffff85 7 0 3 34 ffffff81 1 13 1 1 2 67 ffffff80 0 0 13 1 1 fffffffd 23 34 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc 23 26 4 fffffffe 23 24 4 fffffffe 23 22 4 fffffffe 23 20 4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 7 0 ffffff93 7 ffffffd0 2 63 10 fffffff7 c ffffff93 7 10 0 23 20 fffffff4 fffffffe ffffff93 7 10 0 23 26 fffffff4 fffffffe 6f 0 ffffffc0 a ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 63 ffffff8e 7 2 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 7 0 ffffff93 7 fffffff0 2 63 fffffff0 ffffffe7 2 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 7 0 ffffff93 7 ffffff90 3 63 fffffff8 ffffffe7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe 6f 0 40 5 ffffff83 27 44 fffffffe 13 ffffff87 7 0 ffffff93 7 7 0 ffffff9b ffffff97 27 0 ffffffbb ffffff87 ffffffe7 0 ffffff9b ffffff97 17 0 23 22 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 ffffff9b ffffff87 7 0 ffffff9b ffffff87 7 fffffffd ffffff9b ffffff87 7 0 3 27 44 fffffffe ffffffbb 7 fffffff7 0 23 22 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 ffffffe3 ffffff88 7 fffffff4 ffffff83 27 4 fffffffe ffffff9b ffffff87 7 0 63 ffffff8a 7 0 ffffff83 27 44 fffffffe ffffffbb 7 fffffff0 40 ffffff9b ffffff87 7 0 6f 0 ffffff80 0 ffffff83 27 44 fffffffe 13 ffffff85 7 0 3 34 ffffff81 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffb 23 34 ffffff81 4 13 4 1 5 23 34 ffffffa4 fffffffc 23 30 ffffffb4 fffffffc ffffff93 7 6 0 23 2e fffffff4 fffffffa ffffff83 37 ffffff84 fffffffc 23 3c fffffff4 fffffffc ffffff83 37 4 fffffffc 23 38 fffffff4 fffffffc 23 26 4 fffffffe 23 24 4 fffffffe 23 22 4 fffffffe 6f 0 0 8 ffffff83 27 44 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc6 7 0 ffffff83 27 44 fffffffe 3 37 4 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 6 0 63 7a fffffff7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe ffffff93 7 fffffff0 ffffffff 23 26 fffffff4 fffffffe ffffff83 27 44 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc6 7 0 ffffff83 27 44 fffffffe 3 37 4 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 6 0 63 fffffffa ffffffe7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe ffffff93 7 10 0 23 26 fffffff4 fffffffe ffffff83 27 44 fffffffe ffffff9b ffffff87 17 0 23 22 fffffff4 fffffffe ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffff9a 7 0 3 27 44 fffffffe ffffff83 27 ffffffc4 fffffffb ffffff9b ffffff87 7 0 ffffffe3 66 fffffff7 fffffff6 ffffff83 27 ffffffc4 fffffffe 13 ffffff85 7 0 3 34 ffffff81 4 13 1 1 5 67 ffffff80 0 0 13 1 1 fffffffb 23 34 ffffff81 4 13 4 1 5 23 34 ffffffa4 fffffffc 23 30 ffffffb4 fffffffc ffffff93 7 6 0 23 2e fffffff4 fffffffa ffffff83 37 ffffff84 fffffffc 23 30 fffffff4 fffffffe ffffff83 37 4 fffffffc 23 3c fffffff4 fffffffc 23 26 4 fffffffe ffffff83 37 4 fffffffe 63 ffffff8a 7 4 ffffff83 37 ffffff84 fffffffd 63 ffffff86 7 4 6f 0 0 3 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd 33 7 fffffff7 0 ffffff83 27 ffffffc4 fffffffe ffffff83 36 4 fffffffe ffffffb3 ffffff87 fffffff6 0 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe 3 27 ffffffc4 fffffffe ffffff83 27 ffffffc4 fffffffb ffffff9b ffffff87 7 0 ffffffe3 64 fffffff7 fffffffc ffffff83 37 4 fffffffe 6f 0 ffffff80 0 ffffff93 7 0 0 13 ffffff85 7 0 3 34 ffffff81 4 13 1 1 5 67 ffffff80 0 0 13 1 1 fffffffd 23 34 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc ffffff93 ffffff87 5 0 13 7 6 0 23 2a fffffff4 fffffffc ffffff93 7 7 0 23 28 fffffff4 fffffffc ffffff83 37 ffffff84 fffffffd 23 30 fffffff4 fffffffe 23 26 4 fffffffe 6f 0 ffffff80 2 ffffff83 27 ffffffc4 fffffffe 3 37 4 fffffffe ffffffb3 7 fffffff7 0 3 27 44 fffffffd 13 77 fffffff7 f 23 ffffff80 ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe 3 27 ffffffc4 fffffffe ffffff83 27 4 fffffffd ffffff9b ffffff87 7 0 ffffffe3 68 fffffff7 fffffffc ffffff83 37 4 fffffffe 13 ffffff85 7 0 3 34 ffffff81 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffd 23 34 11 2 23 30 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc ffffff93 ffffff87 5 0 23 2a fffffff4 fffffffc 23 26 4 fffffffe 6f 0 ffffffc0 14 ffffff83 27 ffffffc4 fffffffe ffffff93 fffffff7 fffffff7 0 ffffff9b ffffff87 7 0 63 ffffff92 7 2 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff93 ffffff85 7 0 ffffffb7 47 40 0 13 ffffff85 7 0 ffffffef 0 ffffffd0 39 6f 0 0 2 ffffff83 27 ffffffc4 fffffffe ffffff93 fffffff7 77 0 ffffff9b ffffff87 7 0 63 ffffff98 7 0 ffffffb7 47 40 0 13 ffffff85 ffffff87 0 ffffffef 0 ffffffd0 37 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 ffffff9b ffffffd7 47 0 ffffffa3 5 fffffff4 fffffffe ffffff83 47 ffffffb4 fffffffe 13 fffffff7 fffffff7 f ffffff93 7 ffffff90 0 63 ffffffea ffffffe7 0 ffffff83 47 ffffffb4 fffffffe ffffff9b ffffff87 7 3 ffffffa3 5 fffffff4 fffffffe 6f 0 0 1 ffffff83 47 ffffffb4 fffffffe ffffff9b ffffff87 77 5 ffffffa3 5 fffffff4 fffffffe ffffff83 47 ffffffb4 fffffffe 23 0 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 ffffff93 fffffff7 fffffff7 0 23 5 fffffff4 fffffffe ffffff83 47 ffffffa4 fffffffe 13 fffffff7 fffffff7 f ffffff93 7 ffffff90 0 63 ffffffea ffffffe7 0 ffffff83 47 ffffffa4 fffffffe ffffff9b ffffff87 7 3 23 5 fffffff4 fffffffe 6f 0 0 1 ffffff83 47 ffffffa4 fffffffe ffffff9b ffffff87 77 5 23 5 fffffff4 fffffffe ffffff83 47 ffffffa4 fffffffe ffffffa3 0 fffffff4 fffffffe 23 1 4 fffffffe ffffff93 7 4 fffffffe ffffff93 ffffff85 7 0 ffffffb7 47 40 0 13 ffffff85 7 1 ffffffef 0 ffffffd0 2c ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 ffffff9b ffffff87 7 0 ffffff9b ffffff87 7 0 ffffff93 fffffff7 fffffff7 0 ffffff9b ffffff87 7 0 63 ffffff8e 7 0 ffffff83 27 44 fffffffd ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 7 0 63 ffffff98 ffffffe7 0 ffffffb7 47 40 0 13 ffffff85 ffffff87 1 ffffffef 0 ffffffd0 28 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 13 ffffff87 7 0 ffffff83 27 44 fffffffd 1b 7 7 0 ffffff9b ffffff87 7 0 ffffffe3 42 fffffff7 ffffffea 13 0 0 0 13 0 0 0 ffffff83 30 ffffff81 2 3 34 1 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffff5 23 34 ffffff81 a 13 4 1 b 23 34 ffffffa4 fffffff6 ffffff93 ffffff87 5 0 23 3c ffffffc4 fffffff4 23 38 ffffffd4 fffffff4 23 22 fffffff4 fffffff6 ffffff83 37 ffffff84 fffffff6 63 ffffff8c 7 0 ffffff83 37 ffffff84 fffffff5 63 ffffff88 7 0 ffffff83 27 44 fffffff6 ffffff9b ffffff87 7 0 63 ffffffd6 7 0 ffffff93 7 fffffff0 ffffffff 6f 0 ffffff90 17 23 24 4 fffffffe 23 26 4 fffffffe 6f 0 ffffffd0 14 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 ffffff9b ffffff87 7 0 13 ffffff87 7 0 ffffff93 7 50 2 ffffffe3 1e fffffff7 c ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 ffffff9b ffffff87 7 0 ffffff93 ffffff86 7 0 13 7 50 2 63 ffffff8c ffffffe6 4 ffffff93 ffffff86 7 0 13 7 50 2 ffffffe3 ffffffce ffffffe6 0 ffffff93 ffffff86 7 0 13 7 ffffff80 7 ffffffe3 48 ffffffd7 0 ffffff93 ffffff86 7 0 13 7 30 6 ffffffe3 ffffffc2 ffffffe6 0 ffffff9b ffffff86 ffffffd7 fffffff9 1b ffffff87 6 0 ffffff93 7 50 1 63 ffffffea ffffffe7 7e ffffff93 ffffff97 6 2 ffffff93 ffffffd7 7 2 13 ffffff97 27 0 ffffffb7 47 40 0 ffffff93 ffffff87 ffffff87 2 ffffffb3 7 fffffff7 0 ffffff83 ffffffa7 7 0 67 ffffff80 7 0 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 50 2 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffffd0 1 ffffff83 37 4 fffffff5 13 ffffff87 ffffff87 0 23 38 ffffffe4 fffffff4 ffffff83 ffffffa7 7 0 23 22 fffffff4 fffffffe 23 20 4 fffffffe ffffff83 27 44 fffffffe ffffff9b ffffff87 7 0 63 ffffffde 7 2 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 ffffffd0 2 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 44 fffffffe 13 ffffff87 7 0 ffffff93 7 ffffffa0 0 ffffffbb 67 fffffff7 2 23 2c fffffff4 fffffff8 ffffff83 27 ffffff84 fffffff9 ffffff9b ffffffd7 fffffff7 41 3 27 ffffff84 fffffff9 33 ffffffc7 ffffffe7 0 ffffffbb 7 fffffff7 40 23 2c fffffff4 fffffff8 ffffff83 27 ffffff84 fffffff9 13 fffffff7 fffffff7 f ffffff83 27 4 fffffffe ffffff9b ffffff86 17 0 23 20 ffffffd4 fffffffe 1b 7 7 3 13 77 fffffff7 f ffffff93 ffffff87 7 ffffffff ffffffb3 ffffff87 ffffff87 0 23 ffffff8c ffffffe7 fffffff8 ffffff83 27 44 fffffffe 13 ffffff87 7 0 ffffff93 7 ffffffa0 0 ffffffbb 47 fffffff7 2 23 22 fffffff4 fffffffe ffffff83 27 44 fffffffe ffffff9b ffffff87 7 0 ffffffe3 ffffff98 7 fffffff8 ffffff83 27 4 fffffffe ffffff9b ffffff87 fffffff7 ffffffff 23 20 fffffff4 fffffffe 6f 0 40 5 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 3 27 4 fffffffe 13 7 7 ffffffff 33 7 ffffff87 0 3 47 ffffff87 fffffff9 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 4 fffffffe ffffff9b ffffff87 fffffff7 ffffffff 23 20 fffffff4 fffffffe ffffff83 27 4 fffffffe ffffff9b ffffff87 7 0 ffffffe3 ffffffd4 7 fffffffa 6f 0 ffffffc0 6d ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 1b ffffff87 7 0 ffffff93 6 7 0 ffffff93 7 40 6 63 ffffff88 fffffff6 0 ffffff93 7 ffffff80 7 63 c fffffff7 12 6f 0 ffffffc0 2d ffffff83 37 4 fffffff5 13 ffffff87 ffffff87 0 23 38 ffffffe4 fffffff4 ffffff83 ffffffb7 7 0 23 3c fffffff4 fffffffc 23 2a 4 fffffffc ffffff83 37 ffffff84 fffffffd 63 ffffffde 7 2 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 ffffffd0 2 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 3 37 ffffff84 fffffffd ffffff93 7 ffffffa0 0 ffffffb3 67 fffffff7 2 23 2e fffffff4 fffffff8 ffffff83 27 ffffffc4 fffffff9 ffffff9b ffffffd7 fffffff7 41 3 27 ffffffc4 fffffff9 33 ffffffc7 ffffffe7 0 ffffffbb 7 fffffff7 40 23 2e fffffff4 fffffff8 ffffff83 27 ffffffc4 fffffff9 13 fffffff7 fffffff7 f ffffff83 27 44 fffffffd ffffff9b ffffff86 17 0 23 2a ffffffd4 fffffffc 1b 7 7 3 13 77 fffffff7 f ffffff93 ffffff87 7 ffffffff ffffffb3 ffffff87 ffffff87 0 23 ffffff80 ffffffe7 fffffff8 3 37 ffffff84 fffffffd ffffff93 7 ffffffa0 0 ffffffb3 47 fffffff7 2 23 3c fffffff4 fffffffc ffffff83 37 ffffff84 fffffffd ffffffe3 ffffff9e 7 fffffff8 ffffff83 27 44 fffffffd ffffff9b ffffff87 fffffff7 ffffffff 23 2a fffffff4 fffffffc 6f 0 40 5 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 3 27 44 fffffffd 13 7 7 ffffffff 33 7 ffffff87 0 3 47 7 fffffff8 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 44 fffffffd ffffff9b ffffff87 fffffff7 ffffffff 23 2a fffffff4 fffffffc ffffff83 27 44 fffffffd ffffff9b ffffff87 7 0 ffffffe3 ffffffd4 7 fffffffa 6f 0 ffffff80 26 ffffff83 37 4 fffffff5 13 ffffff87 ffffff87 0 23 38 ffffffe4 fffffff4 ffffff83 ffffffb7 7 0 23 34 fffffff4 fffffffa 23 26 4 fffffffc 23 28 4 fffffffc 6f 0 40 13 ffffff83 27 4 fffffffd ffffff9b ffffff97 27 0 ffffff9b ffffff87 7 0 13 ffffff87 7 0 ffffff83 37 ffffff84 fffffffa ffffffb3 ffffff97 ffffffe7 0 23 30 fffffff4 fffffffa ffffff83 37 4 fffffffa ffffff93 ffffffd7 ffffffc7 3 23 30 fffffff4 fffffffa ffffff83 37 4 fffffffa ffffff93 fffffff7 fffffff7 0 23 30 fffffff4 fffffffa ffffff83 37 4 fffffffa 63 ffffff96 7 4 ffffff83 27 ffffffc4 fffffffc ffffff9b ffffff87 7 0 63 ffffff80 7 e ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 0 3 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 40 a ffffff93 7 10 0 23 26 fffffff4 fffffffc 3 37 4 fffffffa ffffff93 7 ffffff90 0 63 ffffffe6 ffffffe7 4 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 37 4 fffffffa 13 fffffff7 fffffff7 f ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 1b 7 7 3 13 77 fffffff7 f 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffff80 4 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 37 4 fffffffa 13 fffffff7 fffffff7 f ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 1b 7 77 5 13 77 fffffff7 f 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 4 fffffffd ffffff9b ffffff87 17 0 23 28 fffffff4 fffffffc ffffff83 27 4 fffffffd 1b ffffff87 7 0 ffffff93 7 fffffff0 0 ffffffe3 fffffff2 ffffffe7 ffffffec ffffff83 27 ffffffc4 fffffffc ffffff9b ffffff87 7 0 63 ffffff9c 7 e ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 0 3 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffffc0 b ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 50 2 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 ffffffc0 6 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 33 7 fffffff7 0 ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffff80 0 13 0 0 0 6f 0 ffffffc0 30 ffffff83 37 4 fffffff5 13 ffffff87 ffffff87 0 23 38 ffffffe4 fffffff4 ffffff83 ffffffa7 7 0 23 2a fffffff4 fffffff8 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffde ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 3 27 44 fffffff9 13 77 fffffff7 f 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffff80 2b ffffff83 37 4 fffffff5 13 ffffff87 ffffff87 0 23 38 ffffffe4 fffffff4 ffffff83 ffffffb7 7 0 23 30 fffffff4 fffffffc ffffff83 37 4 fffffffc 63 ffffff9e 7 4 ffffffb7 47 40 0 ffffff93 ffffff87 7 2 23 30 fffffff4 fffffffc 6f 0 ffffffc0 4 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffde ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 3 37 4 fffffffc 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 37 4 fffffffc ffffff93 ffffff87 17 0 23 30 fffffff4 fffffffc ffffff83 37 4 fffffffc ffffff83 ffffffc7 7 0 ffffffe3 ffffff98 7 fffffffa 6f 0 40 23 ffffff83 37 4 fffffff5 13 ffffff87 ffffff87 0 23 38 ffffffe4 fffffff4 ffffff83 ffffffa7 7 0 23 2a fffffff4 fffffffa 23 2c 4 fffffffa 23 2e 4 fffffffa 6f 0 ffffff80 13 ffffff83 27 ffffffc4 fffffffb ffffff9b ffffff97 27 0 ffffff9b ffffff87 7 0 3 27 44 fffffffb ffffffbb 17 fffffff7 0 23 28 fffffff4 fffffffa ffffff83 27 4 fffffffb ffffff9b ffffffd7 ffffffc7 1 23 28 fffffff4 fffffffa ffffff83 27 4 fffffffb ffffff93 fffffff7 fffffff7 0 23 28 fffffff4 fffffffa ffffff83 27 4 fffffffb ffffff9b ffffff87 7 0 63 ffffff96 7 4 ffffff83 27 ffffff84 fffffffb ffffff9b ffffff87 7 0 63 ffffff82 7 e ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 0 3 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffff80 a ffffff93 7 10 0 23 2c fffffff4 fffffffa ffffff83 27 4 fffffffb 1b ffffff87 7 0 ffffff93 7 ffffff90 0 63 ffffffe6 ffffffe7 4 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 27 4 fffffffb 13 fffffff7 fffffff7 f ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 1b 7 7 3 13 77 fffffff7 f 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffff80 4 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 27 4 fffffffb 13 fffffff7 fffffff7 f ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 1b 7 77 5 13 77 fffffff7 f 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffb ffffff9b ffffff87 17 0 23 2e fffffff4 fffffffa ffffff83 27 ffffffc4 fffffffb 1b ffffff87 7 0 ffffff93 7 70 0 ffffffe3 fffffff0 ffffffe7 ffffffec ffffff83 27 ffffff84 fffffffb ffffff9b ffffff87 7 0 63 ffffff90 7 c ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 0 3 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 40 8 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 50 2 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 33 7 fffffff7 0 ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 0 5 13 0 0 0 6f 0 ffffff80 4 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 33 7 fffffff7 0 ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 63 ffffff94 7 ffffffea ffffff83 37 ffffff84 fffffff6 23 ffffff80 7 0 ffffff83 27 ffffff84 fffffffe 13 ffffff85 7 0 3 34 ffffff81 a 13 1 1 b 67 ffffff80 0 0 13 1 1 fffffff9 23 3c 11 2 23 38 ffffff81 2 13 4 1 4 23 3c ffffffa4 fffffffc 23 34 ffffffc4 fffffffc 23 34 ffffffd4 0 23 38 ffffffe4 0 23 3c fffffff4 0 23 30 4 3 23 34 14 3 ffffff93 ffffff87 5 0 23 2a fffffff4 fffffffc ffffff93 7 4 3 23 30 fffffff4 fffffffc ffffff83 37 4 fffffffc ffffff93 ffffff87 ffffff87 fffffffd 23 34 fffffff4 fffffffe 3 37 ffffff84 fffffffe ffffff83 27 44 fffffffd ffffff93 6 7 0 3 36 ffffff84 fffffffc ffffff93 ffffff85 7 0 3 35 ffffff84 fffffffd ffffffef fffffff0 ffffff8f ffffffdd ffffff93 7 5 0 23 2a fffffff4 fffffffc ffffff83 27 44 fffffffd 13 ffffff85 7 0 ffffff83 30 ffffff81 3 3 34 1 3 13 1 1 7 67 ffffff80 0 0 13 1 1 ffffffec 23 3c 11 e 23 38 ffffff81 e 13 4 1 10 23 34 ffffffa4 fffffff0 23 34 ffffffb4 0 23 38 ffffffc4 0 23 3c ffffffd4 0 23 30 ffffffe4 2 23 34 fffffff4 2 23 38 4 3 23 3c 14 3 ffffff93 7 4 4 23 30 fffffff4 fffffff0 ffffff83 37 4 fffffff0 ffffff93 ffffff87 ffffff87 fffffffc 23 30 fffffff4 fffffffe 3 37 4 fffffffe ffffff93 7 ffffff84 fffffff1 ffffff93 6 7 0 3 36 ffffff84 fffffff0 ffffff93 5 ffffff80 c 13 ffffff85 7 0 ffffffef fffffff0 ffffff8f ffffffd5 ffffff93 7 5 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 13 ffffff87 7 0 ffffff93 7 70 c 63 fffffff6 ffffffe7 0 ffffff93 7 70 c 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 7 0 63 50 fffffff0 2 3 27 ffffffc4 fffffffe ffffff93 7 ffffff84 fffffff1 13 6 10 0 ffffff93 5 7 0 13 ffffff85 7 0 ffffff97 30 ffffffc0 ffffffff ffffffe7 ffffff80 0 ffffffcc 13 0 0 0 ffffff83 30 ffffff81 f 3 34 1 f 13 1 1 14 67 ffffff80 0 0 13 1 1 fffffff2 23 3c 11 c 23 38 ffffff81 c 13 4 1 e ffffff93 7 ffffff84 fffffff2 13 6 0 0 ffffff93 5 ffffff80 c 13 ffffff85 7 0 ffffff97 30 ffffffc0 ffffffff ffffffe7 ffffff80 ffffff80 ffffffc7 ffffff93 7 ffffff84 fffffff2 13 ffffff85 7 0 ffffffef ffffffe0 ffffff9f ffffffff ffffff93 7 5 0 13 ffffff85 7 0 ffffff83 30 ffffff81 d 3 34 1 d 13 1 1 e 67 ffffff80 0 0 13 1 1 ffffffff 23 34 11 0 23 30 ffffff81 0 13 4 1 1 ffffffb7 47 40 0 13 ffffff85 7 8 ffffffef fffffff0 1f ffffffee ffffff93 7 0 0 13 ffffff85 7 0 ffffff83 30 ffffff81 0 3 34 1 0 13 1 1 1 67 ffffff80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +404000 a4 +25 78 9 0 0 0 0 0 20 20 20 0 0 0 0 0 25 73 20 0 0 0 0 0 a 0 0 0 0 0 0 0 28 6e 75 6c 6c 29 0 0 fffffff8 e 40 0 ffffffe8 9 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 ffffffe8 9 40 0 7c 11 40 0 7c 11 40 0 28 b 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 4c f 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 ffffffd0 f 40 0 2a 2a 20 2a 2a 20 2a 2a 20 42 6f 6e 6a 6f 75 72 20 6c 65 20 6d 6f 6e 64 65 20 2a 2a 20 2a 2a 20 2a 2a a 0 41 2a 0 0 0 72 69 73 63 76 0 1 20 0 0 0 4 10 5 72 76 36 34 69 32 70 30 5f 6d 32 70 30 5f 66 32 70 30 5f 64 32 70 30 0 47 43 43 3a 20 28 29 20 31 32 2e 32 2e 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 1 0 +4000 +4052f0 \ No newline at end of file From 5a90419ebb788da1f07d66af21afeff6cebca647 Mon Sep 17 00:00:00 2001 From: Baptiste Date: Wed, 1 Mar 2023 16:12:46 +0100 Subject: [PATCH 015/115] change memory to a vector, it can now be fill --- src/main.rs | 11 +++++++---- src/simulator/machine.rs | 24 +++++++++++++----------- src/simulator/mem_cmp.rs | 10 +++++----- test_file_section.txt | 19 ++----------------- 4 files changed, 27 insertions(+), 37 deletions(-) diff --git a/src/main.rs b/src/main.rs index b245e37..6e4d2c7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,11 +1,14 @@ mod simulator; use simulator::machine::Machine; -use simulator::{mem_cmp, loader}; +use simulator::mem_cmp; fn main() { - let path = "test_file_section.txt".to_string(); - let mut m = loader::load(&path, 4); - Machine::print_memory(&mut m); + let mut m = Machine::_init_machine(); + let path = "memory.txt".to_string(); + let checker = mem_cmp::Mem_Checker::from(&path); + mem_cmp::Mem_Checker::fill_memory_from_Mem_Checker(&checker, &mut m); + mem_cmp::Mem_Checker::print_Mem_Checker(&checker); + Machine::print_memory(&mut m, 0x400000, 0x405000); Machine::run(m); } diff --git a/src/simulator/machine.rs b/src/simulator/machine.rs index e7af292..bd5617a 100644 --- a/src/simulator/machine.rs +++ b/src/simulator/machine.rs @@ -5,7 +5,7 @@ use super::global::*; use std::fs::File; /// doit disparaitre -const MEM_SIZE : usize = 4096; +const MEM_SIZE : usize = 0x500000; pub trait RegisterNum: Add + Sub + PartialEq + Copy {} @@ -65,7 +65,7 @@ pub struct Machine { pub sp: usize, pub int_reg : Register, pub fp_reg : Register, - pub main_memory : [u8 ; MEM_SIZE], + pub main_memory : Vec, pub shiftmask : [u64 ; 64] // futur taille à calculer int memSize = g_cfg->NumPhysPages * g_cfg->PageSize; //creer une struct cfg(configuration) qui s'initialise avec valeur dans un fichier cfg @@ -89,7 +89,7 @@ impl Machine { sp: 0, int_reg : Register::::init(), fp_reg : Register::::init(), - main_memory : [0 ; MEM_SIZE], + main_memory : vec![0; MEM_SIZE], shiftmask } @@ -180,17 +180,16 @@ impl Machine { uint64_t value;*/ if machine.main_memory.len() <= machine.pc as usize { - println!("ERROR : number max of instructions rushed"); - return ; + panic!("ERROR : number max of instructions rushed"); } - let mut val: [u8; 4] = [0; 4]; - for i in 0..4 { + let mut val: [u8; 8] = [0; 8]; + for i in 0..8 { val[i] = machine.main_memory[machine.pc as usize + i]; } - let val = u32::from_be_bytes(val); + let val = u64::from_be_bytes(val); println!("{:x}", val); - let inst : Instruction = decode(val as u64); + let inst : Instruction = decode(val); match inst.opcode { @@ -610,8 +609,11 @@ impl Machine { } - pub fn print_memory(machine : &mut Machine) { - for i in 0..MEM_SIZE { + /// print memory FOR DEBUG + /// + /// "@"adresse [16 bytes] + pub fn print_memory(machine : &mut Machine, from: usize, to: usize) { + for i in from..to { if i%16 == 0 { print!("\n@{:04x} ", i); } diff --git a/src/simulator/mem_cmp.rs b/src/simulator/mem_cmp.rs index 5c81029..e90fec7 100644 --- a/src/simulator/mem_cmp.rs +++ b/src/simulator/mem_cmp.rs @@ -106,7 +106,7 @@ impl Mem_Checker{ pub fn from(path: &String) -> Mem_Checker { - let file = fs::File::open("test_file_section.txt").expect("Wrong filename"); + let file = fs::File::open(path).expect("Wrong filename"); let reader = io::BufReader::new(file); let mut lines = reader.lines(); @@ -124,7 +124,7 @@ impl Mem_Checker{ let current_line = vector.get(i).unwrap_or(&default); //Lecture des sections - if current_line.contains(' ') { + if i % 2 == 0 { //lecture ligne ADDR LEN let next_word_index = current_line.find(' ').unwrap(); tmp_addr_str = String::from(¤t_line[0..next_word_index]); @@ -135,7 +135,7 @@ impl Mem_Checker{ let section_f = SectionFormat{ addr: tmp_addr_str.clone(), len: tmp_len_str.clone(), - content: current_line.clone(), + content: current_line.clone().replace(" ", ""), }; sections.push(Section::from(§ion_f)); } @@ -147,8 +147,8 @@ impl Mem_Checker{ pub fn print_Mem_Checker(m_c: &Mem_Checker){ - println!("PC :: {}", m_c.pc); - println!("SP :: {}", m_c.sp); + println!("PC :: {:x}", m_c.pc); + println!("SP :: {:x}", m_c.sp); for(i,s) in m_c.sections.iter().enumerate() { println!("\nSection {}\n", i); diff --git a/test_file_section.txt b/test_file_section.txt index 21571c8..81b6acd 100644 --- a/test_file_section.txt +++ b/test_file_section.txt @@ -1,17 +1,2 @@ -fe010113 -00813c23 -02010413 -fe042623 -00100793 -fef42423 -fec42783 -00078713 -fe842783 -00f707bb -fef42623 -00000013 -01813403 -02010113 -00008067 -0 -0 \ No newline at end of file +130101FE233C8100 +13040102232604FE From 45f9d9c0e091e347d83f16b5d1b40c72ea401543 Mon Sep 17 00:00:00 2001 From: amaury Date: Wed, 1 Mar 2023 16:26:55 +0100 Subject: [PATCH 016/115] nouveau memory.txt avec unsigned_addition --- memory.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/memory.txt b/memory.txt index 41a6de2..0a6fca8 100644 --- a/memory.txt +++ b/memory.txt @@ -1,8 +1,8 @@ 4000 1b8 ffffff97 ffffffd0 3f 0 ffffffe7 ffffff80 0 41 13 5 0 0 ffffffef 0 40 1 67 ffffff80 0 0 ffffff93 8 0 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 10 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 20 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 30 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 40 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 50 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 60 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 70 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffff80 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffff90 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 fffffff0 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffa0 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffe0 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffb0 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffc0 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffd0 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffe0 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 fffffff0 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 0 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 0 2 73 0 0 0 67 ffffff80 0 0 ffffff93 8 10 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 20 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 30 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 40 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 50 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 60 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 70 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffff80 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffff90 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffa0 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffb0 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffc0 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffd0 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 10 2 73 0 0 0 67 ffffff80 0 0 ffffff93 8 20 2 73 0 0 0 67 ffffff80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -400000 1444 -13 1 1 fffffffd 23 34 11 2 23 30 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc ffffff83 37 ffffff84 fffffffd 23 34 fffffff4 fffffffe ffffff83 37 ffffff84 fffffffe ffffffe7 ffffff80 7 0 13 5 0 0 ffffff97 40 ffffffc0 ffffffff ffffffe7 ffffff80 ffffff80 ffffffff 13 0 0 0 ffffff83 30 ffffff81 2 3 34 1 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffe 23 3c 11 0 23 38 ffffff81 0 13 4 1 2 23 34 ffffffa4 fffffffe 23 30 ffffffb4 fffffffe ffffffb7 7 40 0 ffffff93 ffffff87 7 0 ffffff9b ffffff87 7 0 3 37 4 fffffffe 1b 7 7 0 13 6 7 0 ffffff93 ffffff85 7 0 3 35 ffffff84 fffffffe ffffff97 40 ffffffc0 ffffffff ffffffe7 ffffff80 ffffffc0 1 ffffff93 7 5 0 13 ffffff85 7 0 ffffff83 30 ffffff81 1 3 34 1 1 13 1 1 2 67 ffffff80 0 0 13 1 1 fffffffd 23 34 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc 23 38 ffffffb4 fffffffc 23 24 4 fffffffe 23 22 4 fffffffe 6f 0 40 b ffffff83 27 44 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 63 ffffff92 7 2 ffffff83 27 44 fffffffe 3 37 4 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 63 ffffff98 7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe 23 26 4 fffffffe ffffff83 27 44 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc6 7 0 ffffff83 27 44 fffffffe 3 37 4 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 6 0 63 7a fffffff7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe ffffff93 7 fffffff0 ffffffff 23 26 fffffff4 fffffffe ffffff83 27 44 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc6 7 0 ffffff83 27 44 fffffffe 3 37 4 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 6 0 63 fffffffa ffffffe7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe ffffff93 7 10 0 23 26 fffffff4 fffffffe ffffff83 27 44 fffffffe ffffff9b ffffff87 17 0 23 22 fffffff4 fffffffe ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 ffffffe3 ffffff84 7 fffffff4 ffffff83 27 ffffffc4 fffffffe 13 ffffff85 7 0 3 34 ffffff81 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffd 23 34 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc 23 38 ffffffb4 fffffffc 23 26 4 fffffffe 23 24 4 fffffffe ffffff83 37 ffffff84 fffffffd 63 ffffff86 7 6 ffffff83 37 4 fffffffd 63 ffffff82 7 6 6f 0 ffffffc0 4 ffffff83 27 ffffffc4 fffffffe 3 37 4 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 63 ffffff96 7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 4 fffffffd 33 7 fffffff7 0 ffffff83 27 ffffffc4 fffffffe ffffff83 36 ffffff84 fffffffd ffffffb3 ffffff87 fffffff6 0 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 ffffffe3 ffffff88 7 fffffffa ffffff83 37 ffffff84 fffffffd 6f 0 ffffff80 0 ffffff93 7 0 0 13 ffffff85 7 0 3 34 ffffff81 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffd 23 34 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc 23 26 4 fffffffe 6f 0 0 1 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 67 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 ffffffe3 ffffff92 7 fffffffe ffffff83 27 ffffffc4 fffffffe 13 ffffff85 7 0 3 34 ffffff81 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffd 23 34 11 2 23 30 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc 23 38 ffffffb4 fffffffc 3 35 ffffff84 fffffffd ffffffef fffffff0 ffffff9f fffffff9 ffffff93 7 5 0 ffffff9b ffffff87 7 0 23 24 fffffff4 fffffffe 3 35 4 fffffffd ffffffef fffffff0 5f fffffff8 ffffff93 7 5 0 ffffff9b ffffff87 7 0 23 22 fffffff4 fffffffe ffffff83 27 ffffff84 fffffffe 23 26 fffffff4 fffffffe 6f 0 40 4 ffffff83 27 ffffffc4 fffffffe 13 ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffffbb 7 fffffff7 40 ffffff9b ffffff87 7 0 13 ffffff87 7 0 ffffff83 37 4 fffffffd 33 ffffff87 ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff83 36 ffffff84 fffffffd ffffffb3 ffffff87 fffffff6 0 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 44 fffffffe 13 ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffffbb 7 fffffff7 0 1b ffffff87 7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 7 0 ffffffe3 52 fffffff7 fffffffa ffffff83 37 ffffff84 fffffffd 13 ffffff85 7 0 ffffff83 30 ffffff81 2 3 34 1 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffe 23 3c ffffff81 0 13 4 1 2 ffffff93 7 5 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 1b ffffff87 7 0 ffffff93 7 0 6 63 ffffffd2 ffffffe7 2 ffffff83 27 ffffffc4 fffffffe 1b ffffff87 7 0 ffffff93 7 ffffffa0 7 63 ffffffca ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 7 fffffffe ffffff9b ffffff87 7 0 6f 0 ffffff80 0 ffffff83 27 ffffffc4 fffffffe 13 ffffff85 7 0 3 34 ffffff81 1 13 1 1 2 67 ffffff80 0 0 13 1 1 fffffffe 23 3c ffffff81 0 13 4 1 2 ffffff93 7 5 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 1b ffffff87 7 0 ffffff93 7 ffffffa0 5 63 ffffffc2 ffffffe7 2 ffffff83 27 ffffffc4 fffffffe 1b ffffff87 7 0 ffffff93 7 0 4 63 ffffffda ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 7 2 ffffff9b ffffff87 7 0 6f 0 ffffff80 0 ffffff83 27 ffffffc4 fffffffe 13 ffffff85 7 0 3 34 ffffff81 1 13 1 1 2 67 ffffff80 0 0 13 1 1 fffffffd 23 34 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc 23 26 4 fffffffe 23 24 4 fffffffe 23 22 4 fffffffe 23 20 4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 7 0 ffffff93 7 ffffffd0 2 63 10 fffffff7 c ffffff93 7 10 0 23 20 fffffff4 fffffffe ffffff93 7 10 0 23 26 fffffff4 fffffffe 6f 0 ffffffc0 a ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 63 ffffff8e 7 2 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 7 0 ffffff93 7 fffffff0 2 63 fffffff0 ffffffe7 2 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 7 0 ffffff93 7 ffffff90 3 63 fffffff8 ffffffe7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe 6f 0 40 5 ffffff83 27 44 fffffffe 13 ffffff87 7 0 ffffff93 7 7 0 ffffff9b ffffff97 27 0 ffffffbb ffffff87 ffffffe7 0 ffffff9b ffffff97 17 0 23 22 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 ffffff9b ffffff87 7 0 ffffff9b ffffff87 7 fffffffd ffffff9b ffffff87 7 0 3 27 44 fffffffe ffffffbb 7 fffffff7 0 23 22 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 ffffffe3 ffffff88 7 fffffff4 ffffff83 27 4 fffffffe ffffff9b ffffff87 7 0 63 ffffff8a 7 0 ffffff83 27 44 fffffffe ffffffbb 7 fffffff0 40 ffffff9b ffffff87 7 0 6f 0 ffffff80 0 ffffff83 27 44 fffffffe 13 ffffff85 7 0 3 34 ffffff81 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffb 23 34 ffffff81 4 13 4 1 5 23 34 ffffffa4 fffffffc 23 30 ffffffb4 fffffffc ffffff93 7 6 0 23 2e fffffff4 fffffffa ffffff83 37 ffffff84 fffffffc 23 3c fffffff4 fffffffc ffffff83 37 4 fffffffc 23 38 fffffff4 fffffffc 23 26 4 fffffffe 23 24 4 fffffffe 23 22 4 fffffffe 6f 0 0 8 ffffff83 27 44 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc6 7 0 ffffff83 27 44 fffffffe 3 37 4 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 6 0 63 7a fffffff7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe ffffff93 7 fffffff0 ffffffff 23 26 fffffff4 fffffffe ffffff83 27 44 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc6 7 0 ffffff83 27 44 fffffffe 3 37 4 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 6 0 63 fffffffa ffffffe7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe ffffff93 7 10 0 23 26 fffffff4 fffffffe ffffff83 27 44 fffffffe ffffff9b ffffff87 17 0 23 22 fffffff4 fffffffe ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffff9a 7 0 3 27 44 fffffffe ffffff83 27 ffffffc4 fffffffb ffffff9b ffffff87 7 0 ffffffe3 66 fffffff7 fffffff6 ffffff83 27 ffffffc4 fffffffe 13 ffffff85 7 0 3 34 ffffff81 4 13 1 1 5 67 ffffff80 0 0 13 1 1 fffffffb 23 34 ffffff81 4 13 4 1 5 23 34 ffffffa4 fffffffc 23 30 ffffffb4 fffffffc ffffff93 7 6 0 23 2e fffffff4 fffffffa ffffff83 37 ffffff84 fffffffc 23 30 fffffff4 fffffffe ffffff83 37 4 fffffffc 23 3c fffffff4 fffffffc 23 26 4 fffffffe ffffff83 37 4 fffffffe 63 ffffff8a 7 4 ffffff83 37 ffffff84 fffffffd 63 ffffff86 7 4 6f 0 0 3 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd 33 7 fffffff7 0 ffffff83 27 ffffffc4 fffffffe ffffff83 36 4 fffffffe ffffffb3 ffffff87 fffffff6 0 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe 3 27 ffffffc4 fffffffe ffffff83 27 ffffffc4 fffffffb ffffff9b ffffff87 7 0 ffffffe3 64 fffffff7 fffffffc ffffff83 37 4 fffffffe 6f 0 ffffff80 0 ffffff93 7 0 0 13 ffffff85 7 0 3 34 ffffff81 4 13 1 1 5 67 ffffff80 0 0 13 1 1 fffffffd 23 34 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc ffffff93 ffffff87 5 0 13 7 6 0 23 2a fffffff4 fffffffc ffffff93 7 7 0 23 28 fffffff4 fffffffc ffffff83 37 ffffff84 fffffffd 23 30 fffffff4 fffffffe 23 26 4 fffffffe 6f 0 ffffff80 2 ffffff83 27 ffffffc4 fffffffe 3 37 4 fffffffe ffffffb3 7 fffffff7 0 3 27 44 fffffffd 13 77 fffffff7 f 23 ffffff80 ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe 3 27 ffffffc4 fffffffe ffffff83 27 4 fffffffd ffffff9b ffffff87 7 0 ffffffe3 68 fffffff7 fffffffc ffffff83 37 4 fffffffe 13 ffffff85 7 0 3 34 ffffff81 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffd 23 34 11 2 23 30 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc ffffff93 ffffff87 5 0 23 2a fffffff4 fffffffc 23 26 4 fffffffe 6f 0 ffffffc0 14 ffffff83 27 ffffffc4 fffffffe ffffff93 fffffff7 fffffff7 0 ffffff9b ffffff87 7 0 63 ffffff92 7 2 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff93 ffffff85 7 0 ffffffb7 47 40 0 13 ffffff85 7 0 ffffffef 0 ffffffd0 39 6f 0 0 2 ffffff83 27 ffffffc4 fffffffe ffffff93 fffffff7 77 0 ffffff9b ffffff87 7 0 63 ffffff98 7 0 ffffffb7 47 40 0 13 ffffff85 ffffff87 0 ffffffef 0 ffffffd0 37 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 ffffff9b ffffffd7 47 0 ffffffa3 5 fffffff4 fffffffe ffffff83 47 ffffffb4 fffffffe 13 fffffff7 fffffff7 f ffffff93 7 ffffff90 0 63 ffffffea ffffffe7 0 ffffff83 47 ffffffb4 fffffffe ffffff9b ffffff87 7 3 ffffffa3 5 fffffff4 fffffffe 6f 0 0 1 ffffff83 47 ffffffb4 fffffffe ffffff9b ffffff87 77 5 ffffffa3 5 fffffff4 fffffffe ffffff83 47 ffffffb4 fffffffe 23 0 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 ffffff93 fffffff7 fffffff7 0 23 5 fffffff4 fffffffe ffffff83 47 ffffffa4 fffffffe 13 fffffff7 fffffff7 f ffffff93 7 ffffff90 0 63 ffffffea ffffffe7 0 ffffff83 47 ffffffa4 fffffffe ffffff9b ffffff87 7 3 23 5 fffffff4 fffffffe 6f 0 0 1 ffffff83 47 ffffffa4 fffffffe ffffff9b ffffff87 77 5 23 5 fffffff4 fffffffe ffffff83 47 ffffffa4 fffffffe ffffffa3 0 fffffff4 fffffffe 23 1 4 fffffffe ffffff93 7 4 fffffffe ffffff93 ffffff85 7 0 ffffffb7 47 40 0 13 ffffff85 7 1 ffffffef 0 ffffffd0 2c ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 ffffff9b ffffff87 7 0 ffffff9b ffffff87 7 0 ffffff93 fffffff7 fffffff7 0 ffffff9b ffffff87 7 0 63 ffffff8e 7 0 ffffff83 27 44 fffffffd ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 7 0 63 ffffff98 ffffffe7 0 ffffffb7 47 40 0 13 ffffff85 ffffff87 1 ffffffef 0 ffffffd0 28 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 13 ffffff87 7 0 ffffff83 27 44 fffffffd 1b 7 7 0 ffffff9b ffffff87 7 0 ffffffe3 42 fffffff7 ffffffea 13 0 0 0 13 0 0 0 ffffff83 30 ffffff81 2 3 34 1 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffff5 23 34 ffffff81 a 13 4 1 b 23 34 ffffffa4 fffffff6 ffffff93 ffffff87 5 0 23 3c ffffffc4 fffffff4 23 38 ffffffd4 fffffff4 23 22 fffffff4 fffffff6 ffffff83 37 ffffff84 fffffff6 63 ffffff8c 7 0 ffffff83 37 ffffff84 fffffff5 63 ffffff88 7 0 ffffff83 27 44 fffffff6 ffffff9b ffffff87 7 0 63 ffffffd6 7 0 ffffff93 7 fffffff0 ffffffff 6f 0 ffffff90 17 23 24 4 fffffffe 23 26 4 fffffffe 6f 0 ffffffd0 14 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 ffffff9b ffffff87 7 0 13 ffffff87 7 0 ffffff93 7 50 2 ffffffe3 1e fffffff7 c ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 ffffff9b ffffff87 7 0 ffffff93 ffffff86 7 0 13 7 50 2 63 ffffff8c ffffffe6 4 ffffff93 ffffff86 7 0 13 7 50 2 ffffffe3 ffffffce ffffffe6 0 ffffff93 ffffff86 7 0 13 7 ffffff80 7 ffffffe3 48 ffffffd7 0 ffffff93 ffffff86 7 0 13 7 30 6 ffffffe3 ffffffc2 ffffffe6 0 ffffff9b ffffff86 ffffffd7 fffffff9 1b ffffff87 6 0 ffffff93 7 50 1 63 ffffffea ffffffe7 7e ffffff93 ffffff97 6 2 ffffff93 ffffffd7 7 2 13 ffffff97 27 0 ffffffb7 47 40 0 ffffff93 ffffff87 ffffff87 2 ffffffb3 7 fffffff7 0 ffffff83 ffffffa7 7 0 67 ffffff80 7 0 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 50 2 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffffd0 1 ffffff83 37 4 fffffff5 13 ffffff87 ffffff87 0 23 38 ffffffe4 fffffff4 ffffff83 ffffffa7 7 0 23 22 fffffff4 fffffffe 23 20 4 fffffffe ffffff83 27 44 fffffffe ffffff9b ffffff87 7 0 63 ffffffde 7 2 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 ffffffd0 2 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 44 fffffffe 13 ffffff87 7 0 ffffff93 7 ffffffa0 0 ffffffbb 67 fffffff7 2 23 2c fffffff4 fffffff8 ffffff83 27 ffffff84 fffffff9 ffffff9b ffffffd7 fffffff7 41 3 27 ffffff84 fffffff9 33 ffffffc7 ffffffe7 0 ffffffbb 7 fffffff7 40 23 2c fffffff4 fffffff8 ffffff83 27 ffffff84 fffffff9 13 fffffff7 fffffff7 f ffffff83 27 4 fffffffe ffffff9b ffffff86 17 0 23 20 ffffffd4 fffffffe 1b 7 7 3 13 77 fffffff7 f ffffff93 ffffff87 7 ffffffff ffffffb3 ffffff87 ffffff87 0 23 ffffff8c ffffffe7 fffffff8 ffffff83 27 44 fffffffe 13 ffffff87 7 0 ffffff93 7 ffffffa0 0 ffffffbb 47 fffffff7 2 23 22 fffffff4 fffffffe ffffff83 27 44 fffffffe ffffff9b ffffff87 7 0 ffffffe3 ffffff98 7 fffffff8 ffffff83 27 4 fffffffe ffffff9b ffffff87 fffffff7 ffffffff 23 20 fffffff4 fffffffe 6f 0 40 5 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 3 27 4 fffffffe 13 7 7 ffffffff 33 7 ffffff87 0 3 47 ffffff87 fffffff9 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 4 fffffffe ffffff9b ffffff87 fffffff7 ffffffff 23 20 fffffff4 fffffffe ffffff83 27 4 fffffffe ffffff9b ffffff87 7 0 ffffffe3 ffffffd4 7 fffffffa 6f 0 ffffffc0 6d ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 1b ffffff87 7 0 ffffff93 6 7 0 ffffff93 7 40 6 63 ffffff88 fffffff6 0 ffffff93 7 ffffff80 7 63 c fffffff7 12 6f 0 ffffffc0 2d ffffff83 37 4 fffffff5 13 ffffff87 ffffff87 0 23 38 ffffffe4 fffffff4 ffffff83 ffffffb7 7 0 23 3c fffffff4 fffffffc 23 2a 4 fffffffc ffffff83 37 ffffff84 fffffffd 63 ffffffde 7 2 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 ffffffd0 2 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 3 37 ffffff84 fffffffd ffffff93 7 ffffffa0 0 ffffffb3 67 fffffff7 2 23 2e fffffff4 fffffff8 ffffff83 27 ffffffc4 fffffff9 ffffff9b ffffffd7 fffffff7 41 3 27 ffffffc4 fffffff9 33 ffffffc7 ffffffe7 0 ffffffbb 7 fffffff7 40 23 2e fffffff4 fffffff8 ffffff83 27 ffffffc4 fffffff9 13 fffffff7 fffffff7 f ffffff83 27 44 fffffffd ffffff9b ffffff86 17 0 23 2a ffffffd4 fffffffc 1b 7 7 3 13 77 fffffff7 f ffffff93 ffffff87 7 ffffffff ffffffb3 ffffff87 ffffff87 0 23 ffffff80 ffffffe7 fffffff8 3 37 ffffff84 fffffffd ffffff93 7 ffffffa0 0 ffffffb3 47 fffffff7 2 23 3c fffffff4 fffffffc ffffff83 37 ffffff84 fffffffd ffffffe3 ffffff9e 7 fffffff8 ffffff83 27 44 fffffffd ffffff9b ffffff87 fffffff7 ffffffff 23 2a fffffff4 fffffffc 6f 0 40 5 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 3 27 44 fffffffd 13 7 7 ffffffff 33 7 ffffff87 0 3 47 7 fffffff8 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 44 fffffffd ffffff9b ffffff87 fffffff7 ffffffff 23 2a fffffff4 fffffffc ffffff83 27 44 fffffffd ffffff9b ffffff87 7 0 ffffffe3 ffffffd4 7 fffffffa 6f 0 ffffff80 26 ffffff83 37 4 fffffff5 13 ffffff87 ffffff87 0 23 38 ffffffe4 fffffff4 ffffff83 ffffffb7 7 0 23 34 fffffff4 fffffffa 23 26 4 fffffffc 23 28 4 fffffffc 6f 0 40 13 ffffff83 27 4 fffffffd ffffff9b ffffff97 27 0 ffffff9b ffffff87 7 0 13 ffffff87 7 0 ffffff83 37 ffffff84 fffffffa ffffffb3 ffffff97 ffffffe7 0 23 30 fffffff4 fffffffa ffffff83 37 4 fffffffa ffffff93 ffffffd7 ffffffc7 3 23 30 fffffff4 fffffffa ffffff83 37 4 fffffffa ffffff93 fffffff7 fffffff7 0 23 30 fffffff4 fffffffa ffffff83 37 4 fffffffa 63 ffffff96 7 4 ffffff83 27 ffffffc4 fffffffc ffffff9b ffffff87 7 0 63 ffffff80 7 e ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 0 3 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 40 a ffffff93 7 10 0 23 26 fffffff4 fffffffc 3 37 4 fffffffa ffffff93 7 ffffff90 0 63 ffffffe6 ffffffe7 4 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 37 4 fffffffa 13 fffffff7 fffffff7 f ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 1b 7 7 3 13 77 fffffff7 f 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffff80 4 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 37 4 fffffffa 13 fffffff7 fffffff7 f ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 1b 7 77 5 13 77 fffffff7 f 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 4 fffffffd ffffff9b ffffff87 17 0 23 28 fffffff4 fffffffc ffffff83 27 4 fffffffd 1b ffffff87 7 0 ffffff93 7 fffffff0 0 ffffffe3 fffffff2 ffffffe7 ffffffec ffffff83 27 ffffffc4 fffffffc ffffff9b ffffff87 7 0 63 ffffff9c 7 e ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 0 3 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffffc0 b ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 50 2 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 ffffffc0 6 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 33 7 fffffff7 0 ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffff80 0 13 0 0 0 6f 0 ffffffc0 30 ffffff83 37 4 fffffff5 13 ffffff87 ffffff87 0 23 38 ffffffe4 fffffff4 ffffff83 ffffffa7 7 0 23 2a fffffff4 fffffff8 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffde ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 3 27 44 fffffff9 13 77 fffffff7 f 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffff80 2b ffffff83 37 4 fffffff5 13 ffffff87 ffffff87 0 23 38 ffffffe4 fffffff4 ffffff83 ffffffb7 7 0 23 30 fffffff4 fffffffc ffffff83 37 4 fffffffc 63 ffffff9e 7 4 ffffffb7 47 40 0 ffffff93 ffffff87 7 2 23 30 fffffff4 fffffffc 6f 0 ffffffc0 4 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffde ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 3 37 4 fffffffc 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 37 4 fffffffc ffffff93 ffffff87 17 0 23 30 fffffff4 fffffffc ffffff83 37 4 fffffffc ffffff83 ffffffc7 7 0 ffffffe3 ffffff98 7 fffffffa 6f 0 40 23 ffffff83 37 4 fffffff5 13 ffffff87 ffffff87 0 23 38 ffffffe4 fffffff4 ffffff83 ffffffa7 7 0 23 2a fffffff4 fffffffa 23 2c 4 fffffffa 23 2e 4 fffffffa 6f 0 ffffff80 13 ffffff83 27 ffffffc4 fffffffb ffffff9b ffffff97 27 0 ffffff9b ffffff87 7 0 3 27 44 fffffffb ffffffbb 17 fffffff7 0 23 28 fffffff4 fffffffa ffffff83 27 4 fffffffb ffffff9b ffffffd7 ffffffc7 1 23 28 fffffff4 fffffffa ffffff83 27 4 fffffffb ffffff93 fffffff7 fffffff7 0 23 28 fffffff4 fffffffa ffffff83 27 4 fffffffb ffffff9b ffffff87 7 0 63 ffffff96 7 4 ffffff83 27 ffffff84 fffffffb ffffff9b ffffff87 7 0 63 ffffff82 7 e ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 0 3 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffff80 a ffffff93 7 10 0 23 2c fffffff4 fffffffa ffffff83 27 4 fffffffb 1b ffffff87 7 0 ffffff93 7 ffffff90 0 63 ffffffe6 ffffffe7 4 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 27 4 fffffffb 13 fffffff7 fffffff7 f ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 1b 7 7 3 13 77 fffffff7 f 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffff80 4 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 27 4 fffffffb 13 fffffff7 fffffff7 f ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 1b 7 77 5 13 77 fffffff7 f 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffb ffffff9b ffffff87 17 0 23 2e fffffff4 fffffffa ffffff83 27 ffffffc4 fffffffb 1b ffffff87 7 0 ffffff93 7 70 0 ffffffe3 fffffff0 ffffffe7 ffffffec ffffff83 27 ffffff84 fffffffb ffffff9b ffffff87 7 0 63 ffffff90 7 c ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 0 3 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 40 8 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 50 2 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 33 7 fffffff7 0 ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 0 5 13 0 0 0 6f 0 ffffff80 4 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 33 7 fffffff7 0 ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 63 ffffff94 7 ffffffea ffffff83 37 ffffff84 fffffff6 23 ffffff80 7 0 ffffff83 27 ffffff84 fffffffe 13 ffffff85 7 0 3 34 ffffff81 a 13 1 1 b 67 ffffff80 0 0 13 1 1 fffffff9 23 3c 11 2 23 38 ffffff81 2 13 4 1 4 23 3c ffffffa4 fffffffc 23 34 ffffffc4 fffffffc 23 34 ffffffd4 0 23 38 ffffffe4 0 23 3c fffffff4 0 23 30 4 3 23 34 14 3 ffffff93 ffffff87 5 0 23 2a fffffff4 fffffffc ffffff93 7 4 3 23 30 fffffff4 fffffffc ffffff83 37 4 fffffffc ffffff93 ffffff87 ffffff87 fffffffd 23 34 fffffff4 fffffffe 3 37 ffffff84 fffffffe ffffff83 27 44 fffffffd ffffff93 6 7 0 3 36 ffffff84 fffffffc ffffff93 ffffff85 7 0 3 35 ffffff84 fffffffd ffffffef fffffff0 ffffff8f ffffffdd ffffff93 7 5 0 23 2a fffffff4 fffffffc ffffff83 27 44 fffffffd 13 ffffff85 7 0 ffffff83 30 ffffff81 3 3 34 1 3 13 1 1 7 67 ffffff80 0 0 13 1 1 ffffffec 23 3c 11 e 23 38 ffffff81 e 13 4 1 10 23 34 ffffffa4 fffffff0 23 34 ffffffb4 0 23 38 ffffffc4 0 23 3c ffffffd4 0 23 30 ffffffe4 2 23 34 fffffff4 2 23 38 4 3 23 3c 14 3 ffffff93 7 4 4 23 30 fffffff4 fffffff0 ffffff83 37 4 fffffff0 ffffff93 ffffff87 ffffff87 fffffffc 23 30 fffffff4 fffffffe 3 37 4 fffffffe ffffff93 7 ffffff84 fffffff1 ffffff93 6 7 0 3 36 ffffff84 fffffff0 ffffff93 5 ffffff80 c 13 ffffff85 7 0 ffffffef fffffff0 ffffff8f ffffffd5 ffffff93 7 5 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 13 ffffff87 7 0 ffffff93 7 70 c 63 fffffff6 ffffffe7 0 ffffff93 7 70 c 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 7 0 63 50 fffffff0 2 3 27 ffffffc4 fffffffe ffffff93 7 ffffff84 fffffff1 13 6 10 0 ffffff93 5 7 0 13 ffffff85 7 0 ffffff97 30 ffffffc0 ffffffff ffffffe7 ffffff80 0 ffffffcc 13 0 0 0 ffffff83 30 ffffff81 f 3 34 1 f 13 1 1 14 67 ffffff80 0 0 13 1 1 fffffff2 23 3c 11 c 23 38 ffffff81 c 13 4 1 e ffffff93 7 ffffff84 fffffff2 13 6 0 0 ffffff93 5 ffffff80 c 13 ffffff85 7 0 ffffff97 30 ffffffc0 ffffffff ffffffe7 ffffff80 ffffff80 ffffffc7 ffffff93 7 ffffff84 fffffff2 13 ffffff85 7 0 ffffffef ffffffe0 ffffff9f ffffffff ffffff93 7 5 0 13 ffffff85 7 0 ffffff83 30 ffffff81 d 3 34 1 d 13 1 1 e 67 ffffff80 0 0 13 1 1 ffffffff 23 34 11 0 23 30 ffffff81 0 13 4 1 1 ffffffb7 47 40 0 13 ffffff85 7 8 ffffffef fffffff0 1f ffffffee ffffff93 7 0 0 13 ffffff85 7 0 ffffff83 30 ffffff81 0 3 34 1 0 13 1 1 1 67 ffffff80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -404000 a4 -25 78 9 0 0 0 0 0 20 20 20 0 0 0 0 0 25 73 20 0 0 0 0 0 a 0 0 0 0 0 0 0 28 6e 75 6c 6c 29 0 0 fffffff8 e 40 0 ffffffe8 9 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 ffffffe8 9 40 0 7c 11 40 0 7c 11 40 0 28 b 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 4c f 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 ffffffd0 f 40 0 2a 2a 20 2a 2a 20 2a 2a 20 42 6f 6e 6a 6f 75 72 20 6c 65 20 6d 6f 6e 64 65 20 2a 2a 20 2a 2a 20 2a 2a a 0 41 2a 0 0 0 72 69 73 63 76 0 1 20 0 0 0 4 10 5 72 76 36 34 69 32 70 30 5f 6d 32 70 30 5f 66 32 70 30 5f 64 32 70 30 0 47 43 43 3a 20 28 29 20 31 32 2e 32 2e 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 1 0 +400000 1450 +13 1 1 fffffffd 23 34 11 2 23 30 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc ffffff83 37 ffffff84 fffffffd 23 34 fffffff4 fffffffe ffffff83 37 ffffff84 fffffffe ffffffe7 ffffff80 7 0 13 5 0 0 ffffff97 40 ffffffc0 ffffffff ffffffe7 ffffff80 ffffff80 ffffffff 13 0 0 0 ffffff83 30 ffffff81 2 3 34 1 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffe 23 3c 11 0 23 38 ffffff81 0 13 4 1 2 23 34 ffffffa4 fffffffe 23 30 ffffffb4 fffffffe ffffffb7 7 40 0 ffffff93 ffffff87 7 0 ffffff9b ffffff87 7 0 3 37 4 fffffffe 1b 7 7 0 13 6 7 0 ffffff93 ffffff85 7 0 3 35 ffffff84 fffffffe ffffff97 40 ffffffc0 ffffffff ffffffe7 ffffff80 ffffffc0 1 ffffff93 7 5 0 13 ffffff85 7 0 ffffff83 30 ffffff81 1 3 34 1 1 13 1 1 2 67 ffffff80 0 0 13 1 1 fffffffd 23 34 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc 23 38 ffffffb4 fffffffc 23 24 4 fffffffe 23 22 4 fffffffe 6f 0 40 b ffffff83 27 44 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 63 ffffff92 7 2 ffffff83 27 44 fffffffe 3 37 4 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 63 ffffff98 7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe 23 26 4 fffffffe ffffff83 27 44 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc6 7 0 ffffff83 27 44 fffffffe 3 37 4 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 6 0 63 7a fffffff7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe ffffff93 7 fffffff0 ffffffff 23 26 fffffff4 fffffffe ffffff83 27 44 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc6 7 0 ffffff83 27 44 fffffffe 3 37 4 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 6 0 63 fffffffa ffffffe7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe ffffff93 7 10 0 23 26 fffffff4 fffffffe ffffff83 27 44 fffffffe ffffff9b ffffff87 17 0 23 22 fffffff4 fffffffe ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 ffffffe3 ffffff84 7 fffffff4 ffffff83 27 ffffffc4 fffffffe 13 ffffff85 7 0 3 34 ffffff81 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffd 23 34 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc 23 38 ffffffb4 fffffffc 23 26 4 fffffffe 23 24 4 fffffffe ffffff83 37 ffffff84 fffffffd 63 ffffff86 7 6 ffffff83 37 4 fffffffd 63 ffffff82 7 6 6f 0 ffffffc0 4 ffffff83 27 ffffffc4 fffffffe 3 37 4 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 63 ffffff96 7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 4 fffffffd 33 7 fffffff7 0 ffffff83 27 ffffffc4 fffffffe ffffff83 36 ffffff84 fffffffd ffffffb3 ffffff87 fffffff6 0 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 ffffffe3 ffffff88 7 fffffffa ffffff83 37 ffffff84 fffffffd 6f 0 ffffff80 0 ffffff93 7 0 0 13 ffffff85 7 0 3 34 ffffff81 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffd 23 34 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc 23 26 4 fffffffe 6f 0 0 1 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 67 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 ffffffe3 ffffff92 7 fffffffe ffffff83 27 ffffffc4 fffffffe 13 ffffff85 7 0 3 34 ffffff81 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffd 23 34 11 2 23 30 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc 23 38 ffffffb4 fffffffc 3 35 ffffff84 fffffffd ffffffef fffffff0 ffffff9f fffffff9 ffffff93 7 5 0 ffffff9b ffffff87 7 0 23 24 fffffff4 fffffffe 3 35 4 fffffffd ffffffef fffffff0 5f fffffff8 ffffff93 7 5 0 ffffff9b ffffff87 7 0 23 22 fffffff4 fffffffe ffffff83 27 ffffff84 fffffffe 23 26 fffffff4 fffffffe 6f 0 40 4 ffffff83 27 ffffffc4 fffffffe 13 ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffffbb 7 fffffff7 40 ffffff9b ffffff87 7 0 13 ffffff87 7 0 ffffff83 37 4 fffffffd 33 ffffff87 ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff83 36 ffffff84 fffffffd ffffffb3 ffffff87 fffffff6 0 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 44 fffffffe 13 ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffffbb 7 fffffff7 0 1b ffffff87 7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 7 0 ffffffe3 52 fffffff7 fffffffa ffffff83 37 ffffff84 fffffffd 13 ffffff85 7 0 ffffff83 30 ffffff81 2 3 34 1 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffe 23 3c ffffff81 0 13 4 1 2 ffffff93 7 5 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 1b ffffff87 7 0 ffffff93 7 0 6 63 ffffffd2 ffffffe7 2 ffffff83 27 ffffffc4 fffffffe 1b ffffff87 7 0 ffffff93 7 ffffffa0 7 63 ffffffca ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 7 fffffffe ffffff9b ffffff87 7 0 6f 0 ffffff80 0 ffffff83 27 ffffffc4 fffffffe 13 ffffff85 7 0 3 34 ffffff81 1 13 1 1 2 67 ffffff80 0 0 13 1 1 fffffffe 23 3c ffffff81 0 13 4 1 2 ffffff93 7 5 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 1b ffffff87 7 0 ffffff93 7 ffffffa0 5 63 ffffffc2 ffffffe7 2 ffffff83 27 ffffffc4 fffffffe 1b ffffff87 7 0 ffffff93 7 0 4 63 ffffffda ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 7 2 ffffff9b ffffff87 7 0 6f 0 ffffff80 0 ffffff83 27 ffffffc4 fffffffe 13 ffffff85 7 0 3 34 ffffff81 1 13 1 1 2 67 ffffff80 0 0 13 1 1 fffffffd 23 34 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc 23 26 4 fffffffe 23 24 4 fffffffe 23 22 4 fffffffe 23 20 4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 7 0 ffffff93 7 ffffffd0 2 63 10 fffffff7 c ffffff93 7 10 0 23 20 fffffff4 fffffffe ffffff93 7 10 0 23 26 fffffff4 fffffffe 6f 0 ffffffc0 a ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 63 ffffff8e 7 2 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 7 0 ffffff93 7 fffffff0 2 63 fffffff0 ffffffe7 2 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 7 0 ffffff93 7 ffffff90 3 63 fffffff8 ffffffe7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe 6f 0 40 5 ffffff83 27 44 fffffffe 13 ffffff87 7 0 ffffff93 7 7 0 ffffff9b ffffff97 27 0 ffffffbb ffffff87 ffffffe7 0 ffffff9b ffffff97 17 0 23 22 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 ffffff9b ffffff87 7 0 ffffff9b ffffff87 7 fffffffd ffffff9b ffffff87 7 0 3 27 44 fffffffe ffffffbb 7 fffffff7 0 23 22 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 ffffffe3 ffffff88 7 fffffff4 ffffff83 27 4 fffffffe ffffff9b ffffff87 7 0 63 ffffff8a 7 0 ffffff83 27 44 fffffffe ffffffbb 7 fffffff0 40 ffffff9b ffffff87 7 0 6f 0 ffffff80 0 ffffff83 27 44 fffffffe 13 ffffff85 7 0 3 34 ffffff81 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffb 23 34 ffffff81 4 13 4 1 5 23 34 ffffffa4 fffffffc 23 30 ffffffb4 fffffffc ffffff93 7 6 0 23 2e fffffff4 fffffffa ffffff83 37 ffffff84 fffffffc 23 3c fffffff4 fffffffc ffffff83 37 4 fffffffc 23 38 fffffff4 fffffffc 23 26 4 fffffffe 23 24 4 fffffffe 23 22 4 fffffffe 6f 0 0 8 ffffff83 27 44 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc6 7 0 ffffff83 27 44 fffffffe 3 37 4 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 6 0 63 7a fffffff7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe ffffff93 7 fffffff0 ffffffff 23 26 fffffff4 fffffffe ffffff83 27 44 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc6 7 0 ffffff83 27 44 fffffffe 3 37 4 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 6 0 63 fffffffa ffffffe7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe ffffff93 7 10 0 23 26 fffffff4 fffffffe ffffff83 27 44 fffffffe ffffff9b ffffff87 17 0 23 22 fffffff4 fffffffe ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffff9a 7 0 3 27 44 fffffffe ffffff83 27 ffffffc4 fffffffb ffffff9b ffffff87 7 0 ffffffe3 66 fffffff7 fffffff6 ffffff83 27 ffffffc4 fffffffe 13 ffffff85 7 0 3 34 ffffff81 4 13 1 1 5 67 ffffff80 0 0 13 1 1 fffffffb 23 34 ffffff81 4 13 4 1 5 23 34 ffffffa4 fffffffc 23 30 ffffffb4 fffffffc ffffff93 7 6 0 23 2e fffffff4 fffffffa ffffff83 37 ffffff84 fffffffc 23 30 fffffff4 fffffffe ffffff83 37 4 fffffffc 23 3c fffffff4 fffffffc 23 26 4 fffffffe ffffff83 37 4 fffffffe 63 ffffff8a 7 4 ffffff83 37 ffffff84 fffffffd 63 ffffff86 7 4 6f 0 0 3 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd 33 7 fffffff7 0 ffffff83 27 ffffffc4 fffffffe ffffff83 36 4 fffffffe ffffffb3 ffffff87 fffffff6 0 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe 3 27 ffffffc4 fffffffe ffffff83 27 ffffffc4 fffffffb ffffff9b ffffff87 7 0 ffffffe3 64 fffffff7 fffffffc ffffff83 37 4 fffffffe 6f 0 ffffff80 0 ffffff93 7 0 0 13 ffffff85 7 0 3 34 ffffff81 4 13 1 1 5 67 ffffff80 0 0 13 1 1 fffffffd 23 34 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc ffffff93 ffffff87 5 0 13 7 6 0 23 2a fffffff4 fffffffc ffffff93 7 7 0 23 28 fffffff4 fffffffc ffffff83 37 ffffff84 fffffffd 23 30 fffffff4 fffffffe 23 26 4 fffffffe 6f 0 ffffff80 2 ffffff83 27 ffffffc4 fffffffe 3 37 4 fffffffe ffffffb3 7 fffffff7 0 3 27 44 fffffffd 13 77 fffffff7 f 23 ffffff80 ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe 3 27 ffffffc4 fffffffe ffffff83 27 4 fffffffd ffffff9b ffffff87 7 0 ffffffe3 68 fffffff7 fffffffc ffffff83 37 4 fffffffe 13 ffffff85 7 0 3 34 ffffff81 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffd 23 34 11 2 23 30 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc ffffff93 ffffff87 5 0 23 2a fffffff4 fffffffc 23 26 4 fffffffe 6f 0 ffffffc0 14 ffffff83 27 ffffffc4 fffffffe ffffff93 fffffff7 fffffff7 0 ffffff9b ffffff87 7 0 63 ffffff92 7 2 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff93 ffffff85 7 0 ffffffb7 47 40 0 13 ffffff85 7 0 ffffffef 0 ffffffd0 39 6f 0 0 2 ffffff83 27 ffffffc4 fffffffe ffffff93 fffffff7 77 0 ffffff9b ffffff87 7 0 63 ffffff98 7 0 ffffffb7 47 40 0 13 ffffff85 ffffff87 0 ffffffef 0 ffffffd0 37 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 ffffff9b ffffffd7 47 0 ffffffa3 5 fffffff4 fffffffe ffffff83 47 ffffffb4 fffffffe 13 fffffff7 fffffff7 f ffffff93 7 ffffff90 0 63 ffffffea ffffffe7 0 ffffff83 47 ffffffb4 fffffffe ffffff9b ffffff87 7 3 ffffffa3 5 fffffff4 fffffffe 6f 0 0 1 ffffff83 47 ffffffb4 fffffffe ffffff9b ffffff87 77 5 ffffffa3 5 fffffff4 fffffffe ffffff83 47 ffffffb4 fffffffe 23 0 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 ffffff93 fffffff7 fffffff7 0 23 5 fffffff4 fffffffe ffffff83 47 ffffffa4 fffffffe 13 fffffff7 fffffff7 f ffffff93 7 ffffff90 0 63 ffffffea ffffffe7 0 ffffff83 47 ffffffa4 fffffffe ffffff9b ffffff87 7 3 23 5 fffffff4 fffffffe 6f 0 0 1 ffffff83 47 ffffffa4 fffffffe ffffff9b ffffff87 77 5 23 5 fffffff4 fffffffe ffffff83 47 ffffffa4 fffffffe ffffffa3 0 fffffff4 fffffffe 23 1 4 fffffffe ffffff93 7 4 fffffffe ffffff93 ffffff85 7 0 ffffffb7 47 40 0 13 ffffff85 7 1 ffffffef 0 ffffffd0 2c ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 ffffff9b ffffff87 7 0 ffffff9b ffffff87 7 0 ffffff93 fffffff7 fffffff7 0 ffffff9b ffffff87 7 0 63 ffffff8e 7 0 ffffff83 27 44 fffffffd ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 7 0 63 ffffff98 ffffffe7 0 ffffffb7 47 40 0 13 ffffff85 ffffff87 1 ffffffef 0 ffffffd0 28 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 13 ffffff87 7 0 ffffff83 27 44 fffffffd 1b 7 7 0 ffffff9b ffffff87 7 0 ffffffe3 42 fffffff7 ffffffea 13 0 0 0 13 0 0 0 ffffff83 30 ffffff81 2 3 34 1 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffff5 23 34 ffffff81 a 13 4 1 b 23 34 ffffffa4 fffffff6 ffffff93 ffffff87 5 0 23 3c ffffffc4 fffffff4 23 38 ffffffd4 fffffff4 23 22 fffffff4 fffffff6 ffffff83 37 ffffff84 fffffff6 63 ffffff8c 7 0 ffffff83 37 ffffff84 fffffff5 63 ffffff88 7 0 ffffff83 27 44 fffffff6 ffffff9b ffffff87 7 0 63 ffffffd6 7 0 ffffff93 7 fffffff0 ffffffff 6f 0 ffffff90 17 23 24 4 fffffffe 23 26 4 fffffffe 6f 0 ffffffd0 14 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 ffffff9b ffffff87 7 0 13 ffffff87 7 0 ffffff93 7 50 2 ffffffe3 1e fffffff7 c ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 ffffff9b ffffff87 7 0 ffffff93 ffffff86 7 0 13 7 50 2 63 ffffff8c ffffffe6 4 ffffff93 ffffff86 7 0 13 7 50 2 ffffffe3 ffffffce ffffffe6 0 ffffff93 ffffff86 7 0 13 7 ffffff80 7 ffffffe3 48 ffffffd7 0 ffffff93 ffffff86 7 0 13 7 30 6 ffffffe3 ffffffc2 ffffffe6 0 ffffff9b ffffff86 ffffffd7 fffffff9 1b ffffff87 6 0 ffffff93 7 50 1 63 ffffffea ffffffe7 7e ffffff93 ffffff97 6 2 ffffff93 ffffffd7 7 2 13 ffffff97 27 0 ffffffb7 47 40 0 ffffff93 ffffff87 ffffff87 2 ffffffb3 7 fffffff7 0 ffffff83 ffffffa7 7 0 67 ffffff80 7 0 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 50 2 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffffd0 1 ffffff83 37 4 fffffff5 13 ffffff87 ffffff87 0 23 38 ffffffe4 fffffff4 ffffff83 ffffffa7 7 0 23 22 fffffff4 fffffffe 23 20 4 fffffffe ffffff83 27 44 fffffffe ffffff9b ffffff87 7 0 63 ffffffde 7 2 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 ffffffd0 2 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 44 fffffffe 13 ffffff87 7 0 ffffff93 7 ffffffa0 0 ffffffbb 67 fffffff7 2 23 2c fffffff4 fffffff8 ffffff83 27 ffffff84 fffffff9 ffffff9b ffffffd7 fffffff7 41 3 27 ffffff84 fffffff9 33 ffffffc7 ffffffe7 0 ffffffbb 7 fffffff7 40 23 2c fffffff4 fffffff8 ffffff83 27 ffffff84 fffffff9 13 fffffff7 fffffff7 f ffffff83 27 4 fffffffe ffffff9b ffffff86 17 0 23 20 ffffffd4 fffffffe 1b 7 7 3 13 77 fffffff7 f ffffff93 ffffff87 7 ffffffff ffffffb3 ffffff87 ffffff87 0 23 ffffff8c ffffffe7 fffffff8 ffffff83 27 44 fffffffe 13 ffffff87 7 0 ffffff93 7 ffffffa0 0 ffffffbb 47 fffffff7 2 23 22 fffffff4 fffffffe ffffff83 27 44 fffffffe ffffff9b ffffff87 7 0 ffffffe3 ffffff98 7 fffffff8 ffffff83 27 4 fffffffe ffffff9b ffffff87 fffffff7 ffffffff 23 20 fffffff4 fffffffe 6f 0 40 5 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 3 27 4 fffffffe 13 7 7 ffffffff 33 7 ffffff87 0 3 47 ffffff87 fffffff9 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 4 fffffffe ffffff9b ffffff87 fffffff7 ffffffff 23 20 fffffff4 fffffffe ffffff83 27 4 fffffffe ffffff9b ffffff87 7 0 ffffffe3 ffffffd4 7 fffffffa 6f 0 ffffffc0 6d ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 1b ffffff87 7 0 ffffff93 6 7 0 ffffff93 7 40 6 63 ffffff88 fffffff6 0 ffffff93 7 ffffff80 7 63 c fffffff7 12 6f 0 ffffffc0 2d ffffff83 37 4 fffffff5 13 ffffff87 ffffff87 0 23 38 ffffffe4 fffffff4 ffffff83 ffffffb7 7 0 23 3c fffffff4 fffffffc 23 2a 4 fffffffc ffffff83 37 ffffff84 fffffffd 63 ffffffde 7 2 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 ffffffd0 2 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 3 37 ffffff84 fffffffd ffffff93 7 ffffffa0 0 ffffffb3 67 fffffff7 2 23 2e fffffff4 fffffff8 ffffff83 27 ffffffc4 fffffff9 ffffff9b ffffffd7 fffffff7 41 3 27 ffffffc4 fffffff9 33 ffffffc7 ffffffe7 0 ffffffbb 7 fffffff7 40 23 2e fffffff4 fffffff8 ffffff83 27 ffffffc4 fffffff9 13 fffffff7 fffffff7 f ffffff83 27 44 fffffffd ffffff9b ffffff86 17 0 23 2a ffffffd4 fffffffc 1b 7 7 3 13 77 fffffff7 f ffffff93 ffffff87 7 ffffffff ffffffb3 ffffff87 ffffff87 0 23 ffffff80 ffffffe7 fffffff8 3 37 ffffff84 fffffffd ffffff93 7 ffffffa0 0 ffffffb3 47 fffffff7 2 23 3c fffffff4 fffffffc ffffff83 37 ffffff84 fffffffd ffffffe3 ffffff9e 7 fffffff8 ffffff83 27 44 fffffffd ffffff9b ffffff87 fffffff7 ffffffff 23 2a fffffff4 fffffffc 6f 0 40 5 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 3 27 44 fffffffd 13 7 7 ffffffff 33 7 ffffff87 0 3 47 7 fffffff8 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 44 fffffffd ffffff9b ffffff87 fffffff7 ffffffff 23 2a fffffff4 fffffffc ffffff83 27 44 fffffffd ffffff9b ffffff87 7 0 ffffffe3 ffffffd4 7 fffffffa 6f 0 ffffff80 26 ffffff83 37 4 fffffff5 13 ffffff87 ffffff87 0 23 38 ffffffe4 fffffff4 ffffff83 ffffffb7 7 0 23 34 fffffff4 fffffffa 23 26 4 fffffffc 23 28 4 fffffffc 6f 0 40 13 ffffff83 27 4 fffffffd ffffff9b ffffff97 27 0 ffffff9b ffffff87 7 0 13 ffffff87 7 0 ffffff83 37 ffffff84 fffffffa ffffffb3 ffffff97 ffffffe7 0 23 30 fffffff4 fffffffa ffffff83 37 4 fffffffa ffffff93 ffffffd7 ffffffc7 3 23 30 fffffff4 fffffffa ffffff83 37 4 fffffffa ffffff93 fffffff7 fffffff7 0 23 30 fffffff4 fffffffa ffffff83 37 4 fffffffa 63 ffffff96 7 4 ffffff83 27 ffffffc4 fffffffc ffffff9b ffffff87 7 0 63 ffffff80 7 e ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 0 3 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 40 a ffffff93 7 10 0 23 26 fffffff4 fffffffc 3 37 4 fffffffa ffffff93 7 ffffff90 0 63 ffffffe6 ffffffe7 4 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 37 4 fffffffa 13 fffffff7 fffffff7 f ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 1b 7 7 3 13 77 fffffff7 f 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffff80 4 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 37 4 fffffffa 13 fffffff7 fffffff7 f ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 1b 7 77 5 13 77 fffffff7 f 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 4 fffffffd ffffff9b ffffff87 17 0 23 28 fffffff4 fffffffc ffffff83 27 4 fffffffd 1b ffffff87 7 0 ffffff93 7 fffffff0 0 ffffffe3 fffffff2 ffffffe7 ffffffec ffffff83 27 ffffffc4 fffffffc ffffff9b ffffff87 7 0 63 ffffff9c 7 e ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 0 3 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffffc0 b ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 50 2 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 ffffffc0 6 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 33 7 fffffff7 0 ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffff80 0 13 0 0 0 6f 0 ffffffc0 30 ffffff83 37 4 fffffff5 13 ffffff87 ffffff87 0 23 38 ffffffe4 fffffff4 ffffff83 ffffffa7 7 0 23 2a fffffff4 fffffff8 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffde ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 3 27 44 fffffff9 13 77 fffffff7 f 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffff80 2b ffffff83 37 4 fffffff5 13 ffffff87 ffffff87 0 23 38 ffffffe4 fffffff4 ffffff83 ffffffb7 7 0 23 30 fffffff4 fffffffc ffffff83 37 4 fffffffc 63 ffffff9e 7 4 ffffffb7 47 40 0 ffffff93 ffffff87 7 2 23 30 fffffff4 fffffffc 6f 0 ffffffc0 4 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffde ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 3 37 4 fffffffc 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 37 4 fffffffc ffffff93 ffffff87 17 0 23 30 fffffff4 fffffffc ffffff83 37 4 fffffffc ffffff83 ffffffc7 7 0 ffffffe3 ffffff98 7 fffffffa 6f 0 40 23 ffffff83 37 4 fffffff5 13 ffffff87 ffffff87 0 23 38 ffffffe4 fffffff4 ffffff83 ffffffa7 7 0 23 2a fffffff4 fffffffa 23 2c 4 fffffffa 23 2e 4 fffffffa 6f 0 ffffff80 13 ffffff83 27 ffffffc4 fffffffb ffffff9b ffffff97 27 0 ffffff9b ffffff87 7 0 3 27 44 fffffffb ffffffbb 17 fffffff7 0 23 28 fffffff4 fffffffa ffffff83 27 4 fffffffb ffffff9b ffffffd7 ffffffc7 1 23 28 fffffff4 fffffffa ffffff83 27 4 fffffffb ffffff93 fffffff7 fffffff7 0 23 28 fffffff4 fffffffa ffffff83 27 4 fffffffb ffffff9b ffffff87 7 0 63 ffffff96 7 4 ffffff83 27 ffffff84 fffffffb ffffff9b ffffff87 7 0 63 ffffff82 7 e ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 0 3 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffff80 a ffffff93 7 10 0 23 2c fffffff4 fffffffa ffffff83 27 4 fffffffb 1b ffffff87 7 0 ffffff93 7 ffffff90 0 63 ffffffe6 ffffffe7 4 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 27 4 fffffffb 13 fffffff7 fffffff7 f ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 1b 7 7 3 13 77 fffffff7 f 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffff80 4 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 27 4 fffffffb 13 fffffff7 fffffff7 f ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 1b 7 77 5 13 77 fffffff7 f 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffb ffffff9b ffffff87 17 0 23 2e fffffff4 fffffffa ffffff83 27 ffffffc4 fffffffb 1b ffffff87 7 0 ffffff93 7 70 0 ffffffe3 fffffff0 ffffffe7 ffffffec ffffff83 27 ffffff84 fffffffb ffffff9b ffffff87 7 0 63 ffffff90 7 c ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 0 3 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 40 8 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 50 2 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 33 7 fffffff7 0 ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 0 5 13 0 0 0 6f 0 ffffff80 4 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 33 7 fffffff7 0 ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 63 ffffff94 7 ffffffea ffffff83 37 ffffff84 fffffff6 23 ffffff80 7 0 ffffff83 27 ffffff84 fffffffe 13 ffffff85 7 0 3 34 ffffff81 a 13 1 1 b 67 ffffff80 0 0 13 1 1 fffffff9 23 3c 11 2 23 38 ffffff81 2 13 4 1 4 23 3c ffffffa4 fffffffc 23 34 ffffffc4 fffffffc 23 34 ffffffd4 0 23 38 ffffffe4 0 23 3c fffffff4 0 23 30 4 3 23 34 14 3 ffffff93 ffffff87 5 0 23 2a fffffff4 fffffffc ffffff93 7 4 3 23 30 fffffff4 fffffffc ffffff83 37 4 fffffffc ffffff93 ffffff87 ffffff87 fffffffd 23 34 fffffff4 fffffffe 3 37 ffffff84 fffffffe ffffff83 27 44 fffffffd ffffff93 6 7 0 3 36 ffffff84 fffffffc ffffff93 ffffff85 7 0 3 35 ffffff84 fffffffd ffffffef fffffff0 ffffff8f ffffffdd ffffff93 7 5 0 23 2a fffffff4 fffffffc ffffff83 27 44 fffffffd 13 ffffff85 7 0 ffffff83 30 ffffff81 3 3 34 1 3 13 1 1 7 67 ffffff80 0 0 13 1 1 ffffffec 23 3c 11 e 23 38 ffffff81 e 13 4 1 10 23 34 ffffffa4 fffffff0 23 34 ffffffb4 0 23 38 ffffffc4 0 23 3c ffffffd4 0 23 30 ffffffe4 2 23 34 fffffff4 2 23 38 4 3 23 3c 14 3 ffffff93 7 4 4 23 30 fffffff4 fffffff0 ffffff83 37 4 fffffff0 ffffff93 ffffff87 ffffff87 fffffffc 23 30 fffffff4 fffffffe 3 37 4 fffffffe ffffff93 7 ffffff84 fffffff1 ffffff93 6 7 0 3 36 ffffff84 fffffff0 ffffff93 5 ffffff80 c 13 ffffff85 7 0 ffffffef fffffff0 ffffff8f ffffffd5 ffffff93 7 5 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 13 ffffff87 7 0 ffffff93 7 70 c 63 fffffff6 ffffffe7 0 ffffff93 7 70 c 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 7 0 63 50 fffffff0 2 3 27 ffffffc4 fffffffe ffffff93 7 ffffff84 fffffff1 13 6 10 0 ffffff93 5 7 0 13 ffffff85 7 0 ffffff97 30 ffffffc0 ffffffff ffffffe7 ffffff80 0 ffffffcc 13 0 0 0 ffffff83 30 ffffff81 f 3 34 1 f 13 1 1 14 67 ffffff80 0 0 13 1 1 fffffff2 23 3c 11 c 23 38 ffffff81 c 13 4 1 e ffffff93 7 ffffff84 fffffff2 13 6 0 0 ffffff93 5 ffffff80 c 13 ffffff85 7 0 ffffff97 30 ffffffc0 ffffffff ffffffe7 ffffff80 ffffff80 ffffffc7 ffffff93 7 ffffff84 fffffff2 13 ffffff85 7 0 ffffffef ffffffe0 ffffff9f ffffffff ffffff93 7 5 0 13 ffffff85 7 0 ffffff83 30 ffffff81 d 3 34 1 d 13 1 1 e 67 ffffff80 0 0 13 1 1 fffffffe 23 3c ffffff81 0 13 4 1 2 23 26 4 fffffffe ffffff93 7 10 0 23 24 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 13 ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffffbb 7 fffffff7 0 23 26 fffffff4 fffffffe ffffff93 7 0 0 13 ffffff85 7 0 3 34 ffffff81 1 13 1 1 2 67 ffffff80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +404000 80 +25 78 9 0 0 0 0 0 20 20 20 0 0 0 0 0 25 73 20 0 0 0 0 0 a 0 0 0 0 0 0 0 28 6e 75 6c 6c 29 0 0 fffffff8 e 40 0 ffffffe8 9 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 ffffffe8 9 40 0 7c 11 40 0 7c 11 40 0 28 b 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 4c f 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 ffffffd0 f 40 0 4000 -4052f0 \ No newline at end of file +S405270 \ No newline at end of file From d34b5b0067e20bd45355bee0bd3dc15fd54c2ecf Mon Sep 17 00:00:00 2001 From: amaury Date: Wed, 1 Mar 2023 17:19:18 +0100 Subject: [PATCH 017/115] memory.txt en hexa complet --- memory.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/memory.txt b/memory.txt index 0a6fca8..905bcdb 100644 --- a/memory.txt +++ b/memory.txt @@ -1,8 +1,8 @@ 4000 1b8 -ffffff97 ffffffd0 3f 0 ffffffe7 ffffff80 0 41 13 5 0 0 ffffffef 0 40 1 67 ffffff80 0 0 ffffff93 8 0 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 10 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 20 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 30 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 40 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 50 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 60 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 70 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffff80 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffff90 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 fffffff0 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffa0 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffe0 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffb0 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffc0 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffd0 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffe0 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 fffffff0 0 73 0 0 0 67 ffffff80 0 0 ffffff93 8 0 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 0 2 73 0 0 0 67 ffffff80 0 0 ffffff93 8 10 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 20 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 30 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 40 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 50 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 60 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 70 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffff80 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffff90 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffa0 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffb0 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffc0 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 ffffffd0 1 73 0 0 0 67 ffffff80 0 0 ffffff93 8 10 2 73 0 0 0 67 ffffff80 0 0 ffffff93 8 20 2 73 0 0 0 67 ffffff80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +ffffff97 ffffffd0 0000003f 00000000 ffffffe7 ffffff80 00000000 00000041 00000013 00000005 00000000 00000000 ffffffef 00000000 00000040 00000001 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000000 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000010 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000020 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000030 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000040 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000050 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000060 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000070 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffff80 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffff90 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 fffffff0 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffa0 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffe0 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffb0 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffc0 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffd0 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffe0 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 fffffff0 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000000 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000000 00000002 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000010 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000020 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000030 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000040 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000050 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000060 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000070 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffff80 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffff90 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffa0 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffb0 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffc0 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffd0 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000010 00000002 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000020 00000002 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 400000 1450 -13 1 1 fffffffd 23 34 11 2 23 30 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc ffffff83 37 ffffff84 fffffffd 23 34 fffffff4 fffffffe ffffff83 37 ffffff84 fffffffe ffffffe7 ffffff80 7 0 13 5 0 0 ffffff97 40 ffffffc0 ffffffff ffffffe7 ffffff80 ffffff80 ffffffff 13 0 0 0 ffffff83 30 ffffff81 2 3 34 1 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffe 23 3c 11 0 23 38 ffffff81 0 13 4 1 2 23 34 ffffffa4 fffffffe 23 30 ffffffb4 fffffffe ffffffb7 7 40 0 ffffff93 ffffff87 7 0 ffffff9b ffffff87 7 0 3 37 4 fffffffe 1b 7 7 0 13 6 7 0 ffffff93 ffffff85 7 0 3 35 ffffff84 fffffffe ffffff97 40 ffffffc0 ffffffff ffffffe7 ffffff80 ffffffc0 1 ffffff93 7 5 0 13 ffffff85 7 0 ffffff83 30 ffffff81 1 3 34 1 1 13 1 1 2 67 ffffff80 0 0 13 1 1 fffffffd 23 34 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc 23 38 ffffffb4 fffffffc 23 24 4 fffffffe 23 22 4 fffffffe 6f 0 40 b ffffff83 27 44 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 63 ffffff92 7 2 ffffff83 27 44 fffffffe 3 37 4 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 63 ffffff98 7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe 23 26 4 fffffffe ffffff83 27 44 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc6 7 0 ffffff83 27 44 fffffffe 3 37 4 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 6 0 63 7a fffffff7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe ffffff93 7 fffffff0 ffffffff 23 26 fffffff4 fffffffe ffffff83 27 44 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc6 7 0 ffffff83 27 44 fffffffe 3 37 4 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 6 0 63 fffffffa ffffffe7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe ffffff93 7 10 0 23 26 fffffff4 fffffffe ffffff83 27 44 fffffffe ffffff9b ffffff87 17 0 23 22 fffffff4 fffffffe ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 ffffffe3 ffffff84 7 fffffff4 ffffff83 27 ffffffc4 fffffffe 13 ffffff85 7 0 3 34 ffffff81 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffd 23 34 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc 23 38 ffffffb4 fffffffc 23 26 4 fffffffe 23 24 4 fffffffe ffffff83 37 ffffff84 fffffffd 63 ffffff86 7 6 ffffff83 37 4 fffffffd 63 ffffff82 7 6 6f 0 ffffffc0 4 ffffff83 27 ffffffc4 fffffffe 3 37 4 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 63 ffffff96 7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 4 fffffffd 33 7 fffffff7 0 ffffff83 27 ffffffc4 fffffffe ffffff83 36 ffffff84 fffffffd ffffffb3 ffffff87 fffffff6 0 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 ffffffe3 ffffff88 7 fffffffa ffffff83 37 ffffff84 fffffffd 6f 0 ffffff80 0 ffffff93 7 0 0 13 ffffff85 7 0 3 34 ffffff81 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffd 23 34 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc 23 26 4 fffffffe 6f 0 0 1 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 67 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 ffffffe3 ffffff92 7 fffffffe ffffff83 27 ffffffc4 fffffffe 13 ffffff85 7 0 3 34 ffffff81 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffd 23 34 11 2 23 30 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc 23 38 ffffffb4 fffffffc 3 35 ffffff84 fffffffd ffffffef fffffff0 ffffff9f fffffff9 ffffff93 7 5 0 ffffff9b ffffff87 7 0 23 24 fffffff4 fffffffe 3 35 4 fffffffd ffffffef fffffff0 5f fffffff8 ffffff93 7 5 0 ffffff9b ffffff87 7 0 23 22 fffffff4 fffffffe ffffff83 27 ffffff84 fffffffe 23 26 fffffff4 fffffffe 6f 0 40 4 ffffff83 27 ffffffc4 fffffffe 13 ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffffbb 7 fffffff7 40 ffffff9b ffffff87 7 0 13 ffffff87 7 0 ffffff83 37 4 fffffffd 33 ffffff87 ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff83 36 ffffff84 fffffffd ffffffb3 ffffff87 fffffff6 0 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 44 fffffffe 13 ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffffbb 7 fffffff7 0 1b ffffff87 7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 7 0 ffffffe3 52 fffffff7 fffffffa ffffff83 37 ffffff84 fffffffd 13 ffffff85 7 0 ffffff83 30 ffffff81 2 3 34 1 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffe 23 3c ffffff81 0 13 4 1 2 ffffff93 7 5 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 1b ffffff87 7 0 ffffff93 7 0 6 63 ffffffd2 ffffffe7 2 ffffff83 27 ffffffc4 fffffffe 1b ffffff87 7 0 ffffff93 7 ffffffa0 7 63 ffffffca ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 7 fffffffe ffffff9b ffffff87 7 0 6f 0 ffffff80 0 ffffff83 27 ffffffc4 fffffffe 13 ffffff85 7 0 3 34 ffffff81 1 13 1 1 2 67 ffffff80 0 0 13 1 1 fffffffe 23 3c ffffff81 0 13 4 1 2 ffffff93 7 5 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 1b ffffff87 7 0 ffffff93 7 ffffffa0 5 63 ffffffc2 ffffffe7 2 ffffff83 27 ffffffc4 fffffffe 1b ffffff87 7 0 ffffff93 7 0 4 63 ffffffda ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 7 2 ffffff9b ffffff87 7 0 6f 0 ffffff80 0 ffffff83 27 ffffffc4 fffffffe 13 ffffff85 7 0 3 34 ffffff81 1 13 1 1 2 67 ffffff80 0 0 13 1 1 fffffffd 23 34 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc 23 26 4 fffffffe 23 24 4 fffffffe 23 22 4 fffffffe 23 20 4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 7 0 ffffff93 7 ffffffd0 2 63 10 fffffff7 c ffffff93 7 10 0 23 20 fffffff4 fffffffe ffffff93 7 10 0 23 26 fffffff4 fffffffe 6f 0 ffffffc0 a ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 63 ffffff8e 7 2 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 7 0 ffffff93 7 fffffff0 2 63 fffffff0 ffffffe7 2 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 7 0 ffffff93 7 ffffff90 3 63 fffffff8 ffffffe7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe 6f 0 40 5 ffffff83 27 44 fffffffe 13 ffffff87 7 0 ffffff93 7 7 0 ffffff9b ffffff97 27 0 ffffffbb ffffff87 ffffffe7 0 ffffff9b ffffff97 17 0 23 22 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 ffffff9b ffffff87 7 0 ffffff9b ffffff87 7 fffffffd ffffff9b ffffff87 7 0 3 27 44 fffffffe ffffffbb 7 fffffff7 0 23 22 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 ffffffe3 ffffff88 7 fffffff4 ffffff83 27 4 fffffffe ffffff9b ffffff87 7 0 63 ffffff8a 7 0 ffffff83 27 44 fffffffe ffffffbb 7 fffffff0 40 ffffff9b ffffff87 7 0 6f 0 ffffff80 0 ffffff83 27 44 fffffffe 13 ffffff85 7 0 3 34 ffffff81 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffb 23 34 ffffff81 4 13 4 1 5 23 34 ffffffa4 fffffffc 23 30 ffffffb4 fffffffc ffffff93 7 6 0 23 2e fffffff4 fffffffa ffffff83 37 ffffff84 fffffffc 23 3c fffffff4 fffffffc ffffff83 37 4 fffffffc 23 38 fffffff4 fffffffc 23 26 4 fffffffe 23 24 4 fffffffe 23 22 4 fffffffe 6f 0 0 8 ffffff83 27 44 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc6 7 0 ffffff83 27 44 fffffffe 3 37 4 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 6 0 63 7a fffffff7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe ffffff93 7 fffffff0 ffffffff 23 26 fffffff4 fffffffe ffffff83 27 44 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc6 7 0 ffffff83 27 44 fffffffe 3 37 4 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 13 ffffff87 6 0 63 fffffffa ffffffe7 0 ffffff93 7 10 0 23 24 fffffff4 fffffffe ffffff93 7 10 0 23 26 fffffff4 fffffffe ffffff83 27 44 fffffffe ffffff9b ffffff87 17 0 23 22 fffffff4 fffffffe ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffff9a 7 0 3 27 44 fffffffe ffffff83 27 ffffffc4 fffffffb ffffff9b ffffff87 7 0 ffffffe3 66 fffffff7 fffffff6 ffffff83 27 ffffffc4 fffffffe 13 ffffff85 7 0 3 34 ffffff81 4 13 1 1 5 67 ffffff80 0 0 13 1 1 fffffffb 23 34 ffffff81 4 13 4 1 5 23 34 ffffffa4 fffffffc 23 30 ffffffb4 fffffffc ffffff93 7 6 0 23 2e fffffff4 fffffffa ffffff83 37 ffffff84 fffffffc 23 30 fffffff4 fffffffe ffffff83 37 4 fffffffc 23 3c fffffff4 fffffffc 23 26 4 fffffffe ffffff83 37 4 fffffffe 63 ffffff8a 7 4 ffffff83 37 ffffff84 fffffffd 63 ffffff86 7 4 6f 0 0 3 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd 33 7 fffffff7 0 ffffff83 27 ffffffc4 fffffffe ffffff83 36 4 fffffffe ffffffb3 ffffff87 fffffff6 0 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe 3 27 ffffffc4 fffffffe ffffff83 27 ffffffc4 fffffffb ffffff9b ffffff87 7 0 ffffffe3 64 fffffff7 fffffffc ffffff83 37 4 fffffffe 6f 0 ffffff80 0 ffffff93 7 0 0 13 ffffff85 7 0 3 34 ffffff81 4 13 1 1 5 67 ffffff80 0 0 13 1 1 fffffffd 23 34 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc ffffff93 ffffff87 5 0 13 7 6 0 23 2a fffffff4 fffffffc ffffff93 7 7 0 23 28 fffffff4 fffffffc ffffff83 37 ffffff84 fffffffd 23 30 fffffff4 fffffffe 23 26 4 fffffffe 6f 0 ffffff80 2 ffffff83 27 ffffffc4 fffffffe 3 37 4 fffffffe ffffffb3 7 fffffff7 0 3 27 44 fffffffd 13 77 fffffff7 f 23 ffffff80 ffffffe7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe 3 27 ffffffc4 fffffffe ffffff83 27 4 fffffffd ffffff9b ffffff87 7 0 ffffffe3 68 fffffff7 fffffffc ffffff83 37 4 fffffffe 13 ffffff85 7 0 3 34 ffffff81 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffffd 23 34 11 2 23 30 ffffff81 2 13 4 1 3 23 3c ffffffa4 fffffffc ffffff93 ffffff87 5 0 23 2a fffffff4 fffffffc 23 26 4 fffffffe 6f 0 ffffffc0 14 ffffff83 27 ffffffc4 fffffffe ffffff93 fffffff7 fffffff7 0 ffffff9b ffffff87 7 0 63 ffffff92 7 2 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff93 ffffff85 7 0 ffffffb7 47 40 0 13 ffffff85 7 0 ffffffef 0 ffffffd0 39 6f 0 0 2 ffffff83 27 ffffffc4 fffffffe ffffff93 fffffff7 77 0 ffffff9b ffffff87 7 0 63 ffffff98 7 0 ffffffb7 47 40 0 13 ffffff85 ffffff87 0 ffffffef 0 ffffffd0 37 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 ffffff9b ffffffd7 47 0 ffffffa3 5 fffffff4 fffffffe ffffff83 47 ffffffb4 fffffffe 13 fffffff7 fffffff7 f ffffff93 7 ffffff90 0 63 ffffffea ffffffe7 0 ffffff83 47 ffffffb4 fffffffe ffffff9b ffffff87 7 3 ffffffa3 5 fffffff4 fffffffe 6f 0 0 1 ffffff83 47 ffffffb4 fffffffe ffffff9b ffffff87 77 5 ffffffa3 5 fffffff4 fffffffe ffffff83 47 ffffffb4 fffffffe 23 0 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffffd ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 ffffff93 fffffff7 fffffff7 0 23 5 fffffff4 fffffffe ffffff83 47 ffffffa4 fffffffe 13 fffffff7 fffffff7 f ffffff93 7 ffffff90 0 63 ffffffea ffffffe7 0 ffffff83 47 ffffffa4 fffffffe ffffff9b ffffff87 7 3 23 5 fffffff4 fffffffe 6f 0 0 1 ffffff83 47 ffffffa4 fffffffe ffffff9b ffffff87 77 5 23 5 fffffff4 fffffffe ffffff83 47 ffffffa4 fffffffe ffffffa3 0 fffffff4 fffffffe 23 1 4 fffffffe ffffff93 7 4 fffffffe ffffff93 ffffff85 7 0 ffffffb7 47 40 0 13 ffffff85 7 1 ffffffef 0 ffffffd0 2c ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 ffffff9b ffffff87 7 0 ffffff9b ffffff87 7 0 ffffff93 fffffff7 fffffff7 0 ffffff9b ffffff87 7 0 63 ffffff8e 7 0 ffffff83 27 44 fffffffd ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 7 0 63 ffffff98 ffffffe7 0 ffffffb7 47 40 0 13 ffffff85 ffffff87 1 ffffffef 0 ffffffd0 28 ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 13 ffffff87 7 0 ffffff83 27 44 fffffffd 1b 7 7 0 ffffff9b ffffff87 7 0 ffffffe3 42 fffffff7 ffffffea 13 0 0 0 13 0 0 0 ffffff83 30 ffffff81 2 3 34 1 2 13 1 1 3 67 ffffff80 0 0 13 1 1 fffffff5 23 34 ffffff81 a 13 4 1 b 23 34 ffffffa4 fffffff6 ffffff93 ffffff87 5 0 23 3c ffffffc4 fffffff4 23 38 ffffffd4 fffffff4 23 22 fffffff4 fffffff6 ffffff83 37 ffffff84 fffffff6 63 ffffff8c 7 0 ffffff83 37 ffffff84 fffffff5 63 ffffff88 7 0 ffffff83 27 44 fffffff6 ffffff9b ffffff87 7 0 63 ffffffd6 7 0 ffffff93 7 fffffff0 ffffffff 6f 0 ffffff90 17 23 24 4 fffffffe 23 26 4 fffffffe 6f 0 ffffffd0 14 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 ffffff9b ffffff87 7 0 13 ffffff87 7 0 ffffff93 7 50 2 ffffffe3 1e fffffff7 c ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 ffffff9b ffffff87 7 0 ffffff93 ffffff86 7 0 13 7 50 2 63 ffffff8c ffffffe6 4 ffffff93 ffffff86 7 0 13 7 50 2 ffffffe3 ffffffce ffffffe6 0 ffffff93 ffffff86 7 0 13 7 ffffff80 7 ffffffe3 48 ffffffd7 0 ffffff93 ffffff86 7 0 13 7 30 6 ffffffe3 ffffffc2 ffffffe6 0 ffffff9b ffffff86 ffffffd7 fffffff9 1b ffffff87 6 0 ffffff93 7 50 1 63 ffffffea ffffffe7 7e ffffff93 ffffff97 6 2 ffffff93 ffffffd7 7 2 13 ffffff97 27 0 ffffffb7 47 40 0 ffffff93 ffffff87 ffffff87 2 ffffffb3 7 fffffff7 0 ffffff83 ffffffa7 7 0 67 ffffff80 7 0 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 50 2 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffffd0 1 ffffff83 37 4 fffffff5 13 ffffff87 ffffff87 0 23 38 ffffffe4 fffffff4 ffffff83 ffffffa7 7 0 23 22 fffffff4 fffffffe 23 20 4 fffffffe ffffff83 27 44 fffffffe ffffff9b ffffff87 7 0 63 ffffffde 7 2 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 ffffffd0 2 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 44 fffffffe 13 ffffff87 7 0 ffffff93 7 ffffffa0 0 ffffffbb 67 fffffff7 2 23 2c fffffff4 fffffff8 ffffff83 27 ffffff84 fffffff9 ffffff9b ffffffd7 fffffff7 41 3 27 ffffff84 fffffff9 33 ffffffc7 ffffffe7 0 ffffffbb 7 fffffff7 40 23 2c fffffff4 fffffff8 ffffff83 27 ffffff84 fffffff9 13 fffffff7 fffffff7 f ffffff83 27 4 fffffffe ffffff9b ffffff86 17 0 23 20 ffffffd4 fffffffe 1b 7 7 3 13 77 fffffff7 f ffffff93 ffffff87 7 ffffffff ffffffb3 ffffff87 ffffff87 0 23 ffffff8c ffffffe7 fffffff8 ffffff83 27 44 fffffffe 13 ffffff87 7 0 ffffff93 7 ffffffa0 0 ffffffbb 47 fffffff7 2 23 22 fffffff4 fffffffe ffffff83 27 44 fffffffe ffffff9b ffffff87 7 0 ffffffe3 ffffff98 7 fffffff8 ffffff83 27 4 fffffffe ffffff9b ffffff87 fffffff7 ffffffff 23 20 fffffff4 fffffffe 6f 0 40 5 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 3 27 4 fffffffe 13 7 7 ffffffff 33 7 ffffff87 0 3 47 ffffff87 fffffff9 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 4 fffffffe ffffff9b ffffff87 fffffff7 ffffffff 23 20 fffffff4 fffffffe ffffff83 27 4 fffffffe ffffff9b ffffff87 7 0 ffffffe3 ffffffd4 7 fffffffa 6f 0 ffffffc0 6d ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 1b ffffff87 7 0 ffffff93 6 7 0 ffffff93 7 40 6 63 ffffff88 fffffff6 0 ffffff93 7 ffffff80 7 63 c fffffff7 12 6f 0 ffffffc0 2d ffffff83 37 4 fffffff5 13 ffffff87 ffffff87 0 23 38 ffffffe4 fffffff4 ffffff83 ffffffb7 7 0 23 3c fffffff4 fffffffc 23 2a 4 fffffffc ffffff83 37 ffffff84 fffffffd 63 ffffffde 7 2 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 ffffffd0 2 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 3 37 ffffff84 fffffffd ffffff93 7 ffffffa0 0 ffffffb3 67 fffffff7 2 23 2e fffffff4 fffffff8 ffffff83 27 ffffffc4 fffffff9 ffffff9b ffffffd7 fffffff7 41 3 27 ffffffc4 fffffff9 33 ffffffc7 ffffffe7 0 ffffffbb 7 fffffff7 40 23 2e fffffff4 fffffff8 ffffff83 27 ffffffc4 fffffff9 13 fffffff7 fffffff7 f ffffff83 27 44 fffffffd ffffff9b ffffff86 17 0 23 2a ffffffd4 fffffffc 1b 7 7 3 13 77 fffffff7 f ffffff93 ffffff87 7 ffffffff ffffffb3 ffffff87 ffffff87 0 23 ffffff80 ffffffe7 fffffff8 3 37 ffffff84 fffffffd ffffff93 7 ffffffa0 0 ffffffb3 47 fffffff7 2 23 3c fffffff4 fffffffc ffffff83 37 ffffff84 fffffffd ffffffe3 ffffff9e 7 fffffff8 ffffff83 27 44 fffffffd ffffff9b ffffff87 fffffff7 ffffffff 23 2a fffffff4 fffffffc 6f 0 40 5 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 3 27 44 fffffffd 13 7 7 ffffffff 33 7 ffffff87 0 3 47 7 fffffff8 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 44 fffffffd ffffff9b ffffff87 fffffff7 ffffffff 23 2a fffffff4 fffffffc ffffff83 27 44 fffffffd ffffff9b ffffff87 7 0 ffffffe3 ffffffd4 7 fffffffa 6f 0 ffffff80 26 ffffff83 37 4 fffffff5 13 ffffff87 ffffff87 0 23 38 ffffffe4 fffffff4 ffffff83 ffffffb7 7 0 23 34 fffffff4 fffffffa 23 26 4 fffffffc 23 28 4 fffffffc 6f 0 40 13 ffffff83 27 4 fffffffd ffffff9b ffffff97 27 0 ffffff9b ffffff87 7 0 13 ffffff87 7 0 ffffff83 37 ffffff84 fffffffa ffffffb3 ffffff97 ffffffe7 0 23 30 fffffff4 fffffffa ffffff83 37 4 fffffffa ffffff93 ffffffd7 ffffffc7 3 23 30 fffffff4 fffffffa ffffff83 37 4 fffffffa ffffff93 fffffff7 fffffff7 0 23 30 fffffff4 fffffffa ffffff83 37 4 fffffffa 63 ffffff96 7 4 ffffff83 27 ffffffc4 fffffffc ffffff9b ffffff87 7 0 63 ffffff80 7 e ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 0 3 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 40 a ffffff93 7 10 0 23 26 fffffff4 fffffffc 3 37 4 fffffffa ffffff93 7 ffffff90 0 63 ffffffe6 ffffffe7 4 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 37 4 fffffffa 13 fffffff7 fffffff7 f ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 1b 7 7 3 13 77 fffffff7 f 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffff80 4 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 37 4 fffffffa 13 fffffff7 fffffff7 f ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 1b 7 77 5 13 77 fffffff7 f 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 4 fffffffd ffffff9b ffffff87 17 0 23 28 fffffff4 fffffffc ffffff83 27 4 fffffffd 1b ffffff87 7 0 ffffff93 7 fffffff0 0 ffffffe3 fffffff2 ffffffe7 ffffffec ffffff83 27 ffffffc4 fffffffc ffffff9b ffffff87 7 0 63 ffffff9c 7 e ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 0 3 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffffc0 b ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 50 2 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 ffffffc0 6 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 33 7 fffffff7 0 ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffff80 0 13 0 0 0 6f 0 ffffffc0 30 ffffff83 37 4 fffffff5 13 ffffff87 ffffff87 0 23 38 ffffffe4 fffffff4 ffffff83 ffffffa7 7 0 23 2a fffffff4 fffffff8 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffde ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 3 27 44 fffffff9 13 77 fffffff7 f 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffff80 2b ffffff83 37 4 fffffff5 13 ffffff87 ffffff87 0 23 38 ffffffe4 fffffff4 ffffff83 ffffffb7 7 0 23 30 fffffff4 fffffffc ffffff83 37 4 fffffffc 63 ffffff9e 7 4 ffffffb7 47 40 0 ffffff93 ffffff87 7 2 23 30 fffffff4 fffffffc 6f 0 ffffffc0 4 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffde ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 3 37 4 fffffffc 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 37 4 fffffffc ffffff93 ffffff87 17 0 23 30 fffffff4 fffffffc ffffff83 37 4 fffffffc ffffff83 ffffffc7 7 0 ffffffe3 ffffff98 7 fffffffa 6f 0 40 23 ffffff83 37 4 fffffff5 13 ffffff87 ffffff87 0 23 38 ffffffe4 fffffff4 ffffff83 ffffffa7 7 0 23 2a fffffff4 fffffffa 23 2c 4 fffffffa 23 2e 4 fffffffa 6f 0 ffffff80 13 ffffff83 27 ffffffc4 fffffffb ffffff9b ffffff97 27 0 ffffff9b ffffff87 7 0 3 27 44 fffffffb ffffffbb 17 fffffff7 0 23 28 fffffff4 fffffffa ffffff83 27 4 fffffffb ffffff9b ffffffd7 ffffffc7 1 23 28 fffffff4 fffffffa ffffff83 27 4 fffffffb ffffff93 fffffff7 fffffff7 0 23 28 fffffff4 fffffffa ffffff83 27 4 fffffffb ffffff9b ffffff87 7 0 63 ffffff96 7 4 ffffff83 27 ffffff84 fffffffb ffffff9b ffffff87 7 0 63 ffffff82 7 e ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 0 3 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffff80 a ffffff93 7 10 0 23 2c fffffff4 fffffffa ffffff83 27 4 fffffffb 1b ffffff87 7 0 ffffff93 7 ffffff90 0 63 ffffffe6 ffffffe7 4 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 27 4 fffffffb 13 fffffff7 fffffff7 f ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 1b 7 7 3 13 77 fffffff7 f 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 ffffff80 4 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 27 4 fffffffb 13 fffffff7 fffffff7 f ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 1b 7 77 5 13 77 fffffff7 f 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffb ffffff9b ffffff87 17 0 23 2e fffffff4 fffffffa ffffff83 27 ffffffc4 fffffffb 1b ffffff87 7 0 ffffff93 7 70 0 ffffffe3 fffffff0 ffffffe7 ffffffec ffffff83 27 ffffff84 fffffffb ffffff9b ffffff87 7 0 63 ffffff90 7 c ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 0 3 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 40 8 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffdc ffffffe7 0 ffffff83 37 ffffff84 fffffff6 13 ffffff87 17 0 23 34 ffffffe4 fffffff6 13 7 50 2 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 33 7 fffffff7 0 ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe 6f 0 0 5 13 0 0 0 6f 0 ffffff80 4 ffffff83 27 44 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 1b ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 7 0 63 ffffffd2 ffffffe7 2 ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 33 7 fffffff7 0 ffffff83 37 ffffff84 fffffff6 ffffff93 ffffff86 17 0 23 34 ffffffd4 fffffff6 3 47 7 0 23 ffffff80 ffffffe7 0 ffffff83 27 ffffff84 fffffffe ffffff9b ffffff87 17 0 23 24 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 17 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 3 37 ffffff84 fffffff5 ffffffb3 7 fffffff7 0 ffffff83 ffffffc7 7 0 63 ffffff94 7 ffffffea ffffff83 37 ffffff84 fffffff6 23 ffffff80 7 0 ffffff83 27 ffffff84 fffffffe 13 ffffff85 7 0 3 34 ffffff81 a 13 1 1 b 67 ffffff80 0 0 13 1 1 fffffff9 23 3c 11 2 23 38 ffffff81 2 13 4 1 4 23 3c ffffffa4 fffffffc 23 34 ffffffc4 fffffffc 23 34 ffffffd4 0 23 38 ffffffe4 0 23 3c fffffff4 0 23 30 4 3 23 34 14 3 ffffff93 ffffff87 5 0 23 2a fffffff4 fffffffc ffffff93 7 4 3 23 30 fffffff4 fffffffc ffffff83 37 4 fffffffc ffffff93 ffffff87 ffffff87 fffffffd 23 34 fffffff4 fffffffe 3 37 ffffff84 fffffffe ffffff83 27 44 fffffffd ffffff93 6 7 0 3 36 ffffff84 fffffffc ffffff93 ffffff85 7 0 3 35 ffffff84 fffffffd ffffffef fffffff0 ffffff8f ffffffdd ffffff93 7 5 0 23 2a fffffff4 fffffffc ffffff83 27 44 fffffffd 13 ffffff85 7 0 ffffff83 30 ffffff81 3 3 34 1 3 13 1 1 7 67 ffffff80 0 0 13 1 1 ffffffec 23 3c 11 e 23 38 ffffff81 e 13 4 1 10 23 34 ffffffa4 fffffff0 23 34 ffffffb4 0 23 38 ffffffc4 0 23 3c ffffffd4 0 23 30 ffffffe4 2 23 34 fffffff4 2 23 38 4 3 23 3c 14 3 ffffff93 7 4 4 23 30 fffffff4 fffffff0 ffffff83 37 4 fffffff0 ffffff93 ffffff87 ffffff87 fffffffc 23 30 fffffff4 fffffffe 3 37 4 fffffffe ffffff93 7 ffffff84 fffffff1 ffffff93 6 7 0 3 36 ffffff84 fffffff0 ffffff93 5 ffffff80 c 13 ffffff85 7 0 ffffffef fffffff0 ffffff8f ffffffd5 ffffff93 7 5 0 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 13 ffffff87 7 0 ffffff93 7 70 c 63 fffffff6 ffffffe7 0 ffffff93 7 70 c 23 26 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe ffffff9b ffffff87 7 0 63 50 fffffff0 2 3 27 ffffffc4 fffffffe ffffff93 7 ffffff84 fffffff1 13 6 10 0 ffffff93 5 7 0 13 ffffff85 7 0 ffffff97 30 ffffffc0 ffffffff ffffffe7 ffffff80 0 ffffffcc 13 0 0 0 ffffff83 30 ffffff81 f 3 34 1 f 13 1 1 14 67 ffffff80 0 0 13 1 1 fffffff2 23 3c 11 c 23 38 ffffff81 c 13 4 1 e ffffff93 7 ffffff84 fffffff2 13 6 0 0 ffffff93 5 ffffff80 c 13 ffffff85 7 0 ffffff97 30 ffffffc0 ffffffff ffffffe7 ffffff80 ffffff80 ffffffc7 ffffff93 7 ffffff84 fffffff2 13 ffffff85 7 0 ffffffef ffffffe0 ffffff9f ffffffff ffffff93 7 5 0 13 ffffff85 7 0 ffffff83 30 ffffff81 d 3 34 1 d 13 1 1 e 67 ffffff80 0 0 13 1 1 fffffffe 23 3c ffffff81 0 13 4 1 2 23 26 4 fffffffe ffffff93 7 10 0 23 24 fffffff4 fffffffe ffffff83 27 ffffffc4 fffffffe 13 ffffff87 7 0 ffffff83 27 ffffff84 fffffffe ffffffbb 7 fffffff7 0 23 26 fffffff4 fffffffe ffffff93 7 0 0 13 ffffff85 7 0 3 34 ffffff81 1 13 1 1 2 67 ffffff80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +00000013 00000001 00000001 fffffffd 00000023 00000034 00000011 00000002 00000023 00000030 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc ffffff83 00000037 ffffff84 fffffffd 00000023 00000034 fffffff4 fffffffe ffffff83 00000037 ffffff84 fffffffe ffffffe7 ffffff80 00000007 00000000 00000013 00000005 00000000 00000000 ffffff97 00000040 ffffffc0 ffffffff ffffffe7 ffffff80 ffffff80 ffffffff 00000013 00000000 00000000 00000000 ffffff83 00000030 ffffff81 00000002 00000003 00000034 00000001 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffe 00000023 0000003c 00000011 00000000 00000023 00000038 ffffff81 00000000 00000013 00000004 00000001 00000002 00000023 00000034 ffffffa4 fffffffe 00000023 00000030 ffffffb4 fffffffe ffffffb7 00000007 00000040 00000000 ffffff93 ffffff87 00000007 00000000 ffffff9b ffffff87 00000007 00000000 00000003 00000037 00000004 fffffffe 0000001b 00000007 00000007 00000000 00000013 00000006 00000007 00000000 ffffff93 ffffff85 00000007 00000000 00000003 00000035 ffffff84 fffffffe ffffff97 00000040 ffffffc0 ffffffff ffffffe7 ffffff80 ffffffc0 00000001 ffffff93 00000007 00000005 00000000 00000013 ffffff85 00000007 00000000 ffffff83 00000030 ffffff81 00000001 00000003 00000034 00000001 00000001 00000013 00000001 00000001 00000002 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc 00000023 00000038 ffffffb4 fffffffc 00000023 00000024 00000004 fffffffe 00000023 00000022 00000004 fffffffe 0000006f 00000000 00000040 0000000b ffffff83 00000027 00000044 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000063 ffffff92 00000007 00000002 ffffff83 00000027 00000044 fffffffe 00000003 00000037 00000004 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000063 ffffff98 00000007 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe 00000023 00000026 00000004 fffffffe ffffff83 00000027 00000044 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc6 00000007 00000000 ffffff83 00000027 00000044 fffffffe 00000003 00000037 00000004 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000006 00000000 00000063 0000007a fffffff7 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe ffffff93 00000007 fffffff0 ffffffff 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc6 00000007 00000000 ffffff83 00000027 00000044 fffffffe 00000003 00000037 00000004 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000006 00000000 00000063 fffffffa ffffffe7 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe ffffff93 00000007 00000010 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000022 fffffff4 fffffffe ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 ffffffe3 ffffff84 00000007 fffffff4 ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc 00000023 00000038 ffffffb4 fffffffc 00000023 00000026 00000004 fffffffe 00000023 00000024 00000004 fffffffe ffffff83 00000037 ffffff84 fffffffd 00000063 ffffff86 00000007 00000006 ffffff83 00000037 00000004 fffffffd 00000063 ffffff82 00000007 00000006 0000006f 00000000 ffffffc0 00000004 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 00000004 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000063 ffffff96 00000007 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 00000004 fffffffd 00000033 00000007 fffffff7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff83 00000036 ffffff84 fffffffd ffffffb3 ffffff87 fffffff6 00000000 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 ffffffe3 ffffff88 00000007 fffffffa ffffff83 00000037 ffffff84 fffffffd 0000006f 00000000 ffffff80 00000000 ffffff93 00000007 00000000 00000000 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc 00000023 00000026 00000004 fffffffe 0000006f 00000000 00000000 00000001 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000067 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 ffffffe3 ffffff92 00000007 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 00000011 00000002 00000023 00000030 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc 00000023 00000038 ffffffb4 fffffffc 00000003 00000035 ffffff84 fffffffd ffffffef fffffff0 ffffff9f fffffff9 ffffff93 00000007 00000005 00000000 ffffff9b ffffff87 00000007 00000000 00000023 00000024 fffffff4 fffffffe 00000003 00000035 00000004 fffffffd ffffffef fffffff0 0000005f fffffff8 ffffff93 00000007 00000005 00000000 ffffff9b ffffff87 00000007 00000000 00000023 00000022 fffffff4 fffffffe ffffff83 00000027 ffffff84 fffffffe 00000023 00000026 fffffff4 fffffffe 0000006f 00000000 00000040 00000004 ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffffbb 00000007 fffffff7 00000040 ffffff9b ffffff87 00000007 00000000 00000013 ffffff87 00000007 00000000 ffffff83 00000037 00000004 fffffffd 00000033 ffffff87 ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff83 00000036 ffffff84 fffffffd ffffffb3 ffffff87 fffffff6 00000000 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe 00000013 ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffffbb 00000007 fffffff7 00000000 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000007 00000000 ffffffe3 00000052 fffffff7 fffffffa ffffff83 00000037 ffffff84 fffffffd 00000013 ffffff85 00000007 00000000 ffffff83 00000030 ffffff81 00000002 00000003 00000034 00000001 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffe 00000023 0000003c ffffff81 00000000 00000013 00000004 00000001 00000002 ffffff93 00000007 00000005 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 0000001b ffffff87 00000007 00000000 ffffff93 00000007 00000000 00000006 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000027 ffffffc4 fffffffe 0000001b ffffff87 00000007 00000000 ffffff93 00000007 ffffffa0 00000007 00000063 ffffffca ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000007 fffffffe ffffff9b ffffff87 00000007 00000000 0000006f 00000000 ffffff80 00000000 ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000001 00000013 00000001 00000001 00000002 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffe 00000023 0000003c ffffff81 00000000 00000013 00000004 00000001 00000002 ffffff93 00000007 00000005 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 0000001b ffffff87 00000007 00000000 ffffff93 00000007 ffffffa0 00000005 00000063 ffffffc2 ffffffe7 00000002 ffffff83 00000027 ffffffc4 fffffffe 0000001b ffffff87 00000007 00000000 ffffff93 00000007 00000000 00000004 00000063 ffffffda ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000007 00000002 ffffff9b ffffff87 00000007 00000000 0000006f 00000000 ffffff80 00000000 ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000001 00000013 00000001 00000001 00000002 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc 00000023 00000026 00000004 fffffffe 00000023 00000024 00000004 fffffffe 00000023 00000022 00000004 fffffffe 00000023 00000020 00000004 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000007 00000000 ffffff93 00000007 ffffffd0 00000002 00000063 00000010 fffffff7 0000000c ffffff93 00000007 00000010 00000000 00000023 00000020 fffffff4 fffffffe ffffff93 00000007 00000010 00000000 00000023 00000026 fffffff4 fffffffe 0000006f 00000000 ffffffc0 0000000a ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000063 ffffff8e 00000007 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000007 00000000 ffffff93 00000007 fffffff0 00000002 00000063 fffffff0 ffffffe7 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000007 00000000 ffffff93 00000007 ffffff90 00000003 00000063 fffffff8 ffffffe7 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 00000040 00000005 ffffff83 00000027 00000044 fffffffe 00000013 ffffff87 00000007 00000000 ffffff93 00000007 00000007 00000000 ffffff9b ffffff97 00000027 00000000 ffffffbb ffffff87 ffffffe7 00000000 ffffff9b ffffff97 00000017 00000000 00000023 00000022 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 ffffff9b ffffff87 00000007 00000000 ffffff9b ffffff87 00000007 fffffffd ffffff9b ffffff87 00000007 00000000 00000003 00000027 00000044 fffffffe ffffffbb 00000007 fffffff7 00000000 00000023 00000022 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 ffffffe3 ffffff88 00000007 fffffff4 ffffff83 00000027 00000004 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffff8a 00000007 00000000 ffffff83 00000027 00000044 fffffffe ffffffbb 00000007 fffffff0 00000040 ffffff9b ffffff87 00000007 00000000 0000006f 00000000 ffffff80 00000000 ffffff83 00000027 00000044 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffb 00000023 00000034 ffffff81 00000004 00000013 00000004 00000001 00000005 00000023 00000034 ffffffa4 fffffffc 00000023 00000030 ffffffb4 fffffffc ffffff93 00000007 00000006 00000000 00000023 0000002e fffffff4 fffffffa ffffff83 00000037 ffffff84 fffffffc 00000023 0000003c fffffff4 fffffffc ffffff83 00000037 00000004 fffffffc 00000023 00000038 fffffff4 fffffffc 00000023 00000026 00000004 fffffffe 00000023 00000024 00000004 fffffffe 00000023 00000022 00000004 fffffffe 0000006f 00000000 00000000 00000008 ffffff83 00000027 00000044 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc6 00000007 00000000 ffffff83 00000027 00000044 fffffffe 00000003 00000037 00000004 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000006 00000000 00000063 0000007a fffffff7 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe ffffff93 00000007 fffffff0 ffffffff 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc6 00000007 00000000 ffffff83 00000027 00000044 fffffffe 00000003 00000037 00000004 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000006 00000000 00000063 fffffffa ffffffe7 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe ffffff93 00000007 00000010 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000022 fffffff4 fffffffe ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffff9a 00000007 00000000 00000003 00000027 00000044 fffffffe ffffff83 00000027 ffffffc4 fffffffb ffffff9b ffffff87 00000007 00000000 ffffffe3 00000066 fffffff7 fffffff6 ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000004 00000013 00000001 00000001 00000005 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffb 00000023 00000034 ffffff81 00000004 00000013 00000004 00000001 00000005 00000023 00000034 ffffffa4 fffffffc 00000023 00000030 ffffffb4 fffffffc ffffff93 00000007 00000006 00000000 00000023 0000002e fffffff4 fffffffa ffffff83 00000037 ffffff84 fffffffc 00000023 00000030 fffffff4 fffffffe ffffff83 00000037 00000004 fffffffc 00000023 0000003c fffffff4 fffffffc 00000023 00000026 00000004 fffffffe ffffff83 00000037 00000004 fffffffe 00000063 ffffff8a 00000007 00000004 ffffff83 00000037 ffffff84 fffffffd 00000063 ffffff86 00000007 00000004 0000006f 00000000 00000000 00000003 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd 00000033 00000007 fffffff7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff83 00000036 00000004 fffffffe ffffffb3 ffffff87 fffffff6 00000000 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe 00000003 00000027 ffffffc4 fffffffe ffffff83 00000027 ffffffc4 fffffffb ffffff9b ffffff87 00000007 00000000 ffffffe3 00000064 fffffff7 fffffffc ffffff83 00000037 00000004 fffffffe 0000006f 00000000 ffffff80 00000000 ffffff93 00000007 00000000 00000000 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000004 00000013 00000001 00000001 00000005 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc ffffff93 ffffff87 00000005 00000000 00000013 00000007 00000006 00000000 00000023 0000002a fffffff4 fffffffc ffffff93 00000007 00000007 00000000 00000023 00000028 fffffff4 fffffffc ffffff83 00000037 ffffff84 fffffffd 00000023 00000030 fffffff4 fffffffe 00000023 00000026 00000004 fffffffe 0000006f 00000000 ffffff80 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 00000004 fffffffe ffffffb3 00000007 fffffff7 00000000 00000003 00000027 00000044 fffffffd 00000013 00000077 fffffff7 0000000f 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe 00000003 00000027 ffffffc4 fffffffe ffffff83 00000027 00000004 fffffffd ffffff9b ffffff87 00000007 00000000 ffffffe3 00000068 fffffff7 fffffffc ffffff83 00000037 00000004 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 00000011 00000002 00000023 00000030 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc ffffff93 ffffff87 00000005 00000000 00000023 0000002a fffffff4 fffffffc 00000023 00000026 00000004 fffffffe 0000006f 00000000 ffffffc0 00000014 ffffff83 00000027 ffffffc4 fffffffe ffffff93 fffffff7 fffffff7 00000000 ffffff9b ffffff87 00000007 00000000 00000063 ffffff92 00000007 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff93 ffffff85 00000007 00000000 ffffffb7 00000047 00000040 00000000 00000013 ffffff85 00000007 00000000 ffffffef 00000000 ffffffd0 00000039 0000006f 00000000 00000000 00000002 ffffff83 00000027 ffffffc4 fffffffe ffffff93 fffffff7 00000077 00000000 ffffff9b ffffff87 00000007 00000000 00000063 ffffff98 00000007 00000000 ffffffb7 00000047 00000040 00000000 00000013 ffffff85 ffffff87 00000000 ffffffef 00000000 ffffffd0 00000037 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 ffffff9b ffffffd7 00000047 00000000 ffffffa3 00000005 fffffff4 fffffffe ffffff83 00000047 ffffffb4 fffffffe 00000013 fffffff7 fffffff7 0000000f ffffff93 00000007 ffffff90 00000000 00000063 ffffffea ffffffe7 00000000 ffffff83 00000047 ffffffb4 fffffffe ffffff9b ffffff87 00000007 00000003 ffffffa3 00000005 fffffff4 fffffffe 0000006f 00000000 00000000 00000001 ffffff83 00000047 ffffffb4 fffffffe ffffff9b ffffff87 00000077 00000005 ffffffa3 00000005 fffffff4 fffffffe ffffff83 00000047 ffffffb4 fffffffe 00000023 00000000 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 ffffff93 fffffff7 fffffff7 00000000 00000023 00000005 fffffff4 fffffffe ffffff83 00000047 ffffffa4 fffffffe 00000013 fffffff7 fffffff7 0000000f ffffff93 00000007 ffffff90 00000000 00000063 ffffffea ffffffe7 00000000 ffffff83 00000047 ffffffa4 fffffffe ffffff9b ffffff87 00000007 00000003 00000023 00000005 fffffff4 fffffffe 0000006f 00000000 00000000 00000001 ffffff83 00000047 ffffffa4 fffffffe ffffff9b ffffff87 00000077 00000005 00000023 00000005 fffffff4 fffffffe ffffff83 00000047 ffffffa4 fffffffe ffffffa3 00000000 fffffff4 fffffffe 00000023 00000001 00000004 fffffffe ffffff93 00000007 00000004 fffffffe ffffff93 ffffff85 00000007 00000000 ffffffb7 00000047 00000040 00000000 00000013 ffffff85 00000007 00000001 ffffffef 00000000 ffffffd0 0000002c ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 ffffff9b ffffff87 00000007 00000000 ffffff9b ffffff87 00000007 00000000 ffffff93 fffffff7 fffffff7 00000000 ffffff9b ffffff87 00000007 00000000 00000063 ffffff8e 00000007 00000000 ffffff83 00000027 00000044 fffffffd ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffff98 ffffffe7 00000000 ffffffb7 00000047 00000040 00000000 00000013 ffffff85 ffffff87 00000001 ffffffef 00000000 ffffffd0 00000028 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff87 00000007 00000000 ffffff83 00000027 00000044 fffffffd 0000001b 00000007 00000007 00000000 ffffff9b ffffff87 00000007 00000000 ffffffe3 00000042 fffffff7 ffffffea 00000013 00000000 00000000 00000000 00000013 00000000 00000000 00000000 ffffff83 00000030 ffffff81 00000002 00000003 00000034 00000001 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffff5 00000023 00000034 ffffff81 0000000a 00000013 00000004 00000001 0000000b 00000023 00000034 ffffffa4 fffffff6 ffffff93 ffffff87 00000005 00000000 00000023 0000003c ffffffc4 fffffff4 00000023 00000038 ffffffd4 fffffff4 00000023 00000022 fffffff4 fffffff6 ffffff83 00000037 ffffff84 fffffff6 00000063 ffffff8c 00000007 00000000 ffffff83 00000037 ffffff84 fffffff5 00000063 ffffff88 00000007 00000000 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 00000007 00000000 00000063 ffffffd6 00000007 00000000 ffffff93 00000007 fffffff0 ffffffff 0000006f 00000000 ffffff90 00000017 00000023 00000024 00000004 fffffffe 00000023 00000026 00000004 fffffffe 0000006f 00000000 ffffffd0 00000014 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 ffffff9b ffffff87 00000007 00000000 00000013 ffffff87 00000007 00000000 ffffff93 00000007 00000050 00000002 ffffffe3 0000001e fffffff7 0000000c ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 ffffff9b ffffff87 00000007 00000000 ffffff93 ffffff86 00000007 00000000 00000013 00000007 00000050 00000002 00000063 ffffff8c ffffffe6 00000004 ffffff93 ffffff86 00000007 00000000 00000013 00000007 00000050 00000002 ffffffe3 ffffffce ffffffe6 00000000 ffffff93 ffffff86 00000007 00000000 00000013 00000007 ffffff80 00000007 ffffffe3 00000048 ffffffd7 00000000 ffffff93 ffffff86 00000007 00000000 00000013 00000007 00000030 00000006 ffffffe3 ffffffc2 ffffffe6 00000000 ffffff9b ffffff86 ffffffd7 fffffff9 0000001b ffffff87 00000006 00000000 ffffff93 00000007 00000050 00000001 00000063 ffffffea ffffffe7 0000007e ffffff93 ffffff97 00000006 00000002 ffffff93 ffffffd7 00000007 00000002 00000013 ffffff97 00000027 00000000 ffffffb7 00000047 00000040 00000000 ffffff93 ffffff87 ffffff87 00000002 ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffa7 00000007 00000000 00000067 ffffff80 00000007 00000000 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000050 00000002 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffffd0 00000001 ffffff83 00000037 00000004 fffffff5 00000013 ffffff87 ffffff87 00000000 00000023 00000038 ffffffe4 fffffff4 ffffff83 ffffffa7 00000007 00000000 00000023 00000022 fffffff4 fffffffe 00000023 00000020 00000004 fffffffe ffffff83 00000027 00000044 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffde 00000007 00000002 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 ffffffd0 00000002 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe 00000013 ffffff87 00000007 00000000 ffffff93 00000007 ffffffa0 00000000 ffffffbb 00000067 fffffff7 00000002 00000023 0000002c fffffff4 fffffff8 ffffff83 00000027 ffffff84 fffffff9 ffffff9b ffffffd7 fffffff7 00000041 00000003 00000027 ffffff84 fffffff9 00000033 ffffffc7 ffffffe7 00000000 ffffffbb 00000007 fffffff7 00000040 00000023 0000002c fffffff4 fffffff8 ffffff83 00000027 ffffff84 fffffff9 00000013 fffffff7 fffffff7 0000000f ffffff83 00000027 00000004 fffffffe ffffff9b ffffff86 00000017 00000000 00000023 00000020 ffffffd4 fffffffe 0000001b 00000007 00000007 00000003 00000013 00000077 fffffff7 0000000f ffffff93 ffffff87 00000007 ffffffff ffffffb3 ffffff87 ffffff87 00000000 00000023 ffffff8c ffffffe7 fffffff8 ffffff83 00000027 00000044 fffffffe 00000013 ffffff87 00000007 00000000 ffffff93 00000007 ffffffa0 00000000 ffffffbb 00000047 fffffff7 00000002 00000023 00000022 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe ffffff9b ffffff87 00000007 00000000 ffffffe3 ffffff98 00000007 fffffff8 ffffff83 00000027 00000004 fffffffe ffffff9b ffffff87 fffffff7 ffffffff 00000023 00000020 fffffff4 fffffffe 0000006f 00000000 00000040 00000005 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000003 00000027 00000004 fffffffe 00000013 00000007 00000007 ffffffff 00000033 00000007 ffffff87 00000000 00000003 00000047 ffffff87 fffffff9 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000004 fffffffe ffffff9b ffffff87 fffffff7 ffffffff 00000023 00000020 fffffff4 fffffffe ffffff83 00000027 00000004 fffffffe ffffff9b ffffff87 00000007 00000000 ffffffe3 ffffffd4 00000007 fffffffa 0000006f 00000000 ffffffc0 0000006d ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 0000001b ffffff87 00000007 00000000 ffffff93 00000006 00000007 00000000 ffffff93 00000007 00000040 00000006 00000063 ffffff88 fffffff6 00000000 ffffff93 00000007 ffffff80 00000007 00000063 0000000c fffffff7 00000012 0000006f 00000000 ffffffc0 0000002d ffffff83 00000037 00000004 fffffff5 00000013 ffffff87 ffffff87 00000000 00000023 00000038 ffffffe4 fffffff4 ffffff83 ffffffb7 00000007 00000000 00000023 0000003c fffffff4 fffffffc 00000023 0000002a 00000004 fffffffc ffffff83 00000037 ffffff84 fffffffd 00000063 ffffffde 00000007 00000002 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 ffffffd0 00000002 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffff93 00000007 ffffffa0 00000000 ffffffb3 00000067 fffffff7 00000002 00000023 0000002e fffffff4 fffffff8 ffffff83 00000027 ffffffc4 fffffff9 ffffff9b ffffffd7 fffffff7 00000041 00000003 00000027 ffffffc4 fffffff9 00000033 ffffffc7 ffffffe7 00000000 ffffffbb 00000007 fffffff7 00000040 00000023 0000002e fffffff4 fffffff8 ffffff83 00000027 ffffffc4 fffffff9 00000013 fffffff7 fffffff7 0000000f ffffff83 00000027 00000044 fffffffd ffffff9b ffffff86 00000017 00000000 00000023 0000002a ffffffd4 fffffffc 0000001b 00000007 00000007 00000003 00000013 00000077 fffffff7 0000000f ffffff93 ffffff87 00000007 ffffffff ffffffb3 ffffff87 ffffff87 00000000 00000023 ffffff80 ffffffe7 fffffff8 00000003 00000037 ffffff84 fffffffd ffffff93 00000007 ffffffa0 00000000 ffffffb3 00000047 fffffff7 00000002 00000023 0000003c fffffff4 fffffffc ffffff83 00000037 ffffff84 fffffffd ffffffe3 ffffff9e 00000007 fffffff8 ffffff83 00000027 00000044 fffffffd ffffff9b ffffff87 fffffff7 ffffffff 00000023 0000002a fffffff4 fffffffc 0000006f 00000000 00000040 00000005 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000003 00000027 00000044 fffffffd 00000013 00000007 00000007 ffffffff 00000033 00000007 ffffff87 00000000 00000003 00000047 00000007 fffffff8 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffd ffffff9b ffffff87 fffffff7 ffffffff 00000023 0000002a fffffff4 fffffffc ffffff83 00000027 00000044 fffffffd ffffff9b ffffff87 00000007 00000000 ffffffe3 ffffffd4 00000007 fffffffa 0000006f 00000000 ffffff80 00000026 ffffff83 00000037 00000004 fffffff5 00000013 ffffff87 ffffff87 00000000 00000023 00000038 ffffffe4 fffffff4 ffffff83 ffffffb7 00000007 00000000 00000023 00000034 fffffff4 fffffffa 00000023 00000026 00000004 fffffffc 00000023 00000028 00000004 fffffffc 0000006f 00000000 00000040 00000013 ffffff83 00000027 00000004 fffffffd ffffff9b ffffff97 00000027 00000000 ffffff9b ffffff87 00000007 00000000 00000013 ffffff87 00000007 00000000 ffffff83 00000037 ffffff84 fffffffa ffffffb3 ffffff97 ffffffe7 00000000 00000023 00000030 fffffff4 fffffffa ffffff83 00000037 00000004 fffffffa ffffff93 ffffffd7 ffffffc7 00000003 00000023 00000030 fffffff4 fffffffa ffffff83 00000037 00000004 fffffffa ffffff93 fffffff7 fffffff7 00000000 00000023 00000030 fffffff4 fffffffa ffffff83 00000037 00000004 fffffffa 00000063 ffffff96 00000007 00000004 ffffff83 00000027 ffffffc4 fffffffc ffffff9b ffffff87 00000007 00000000 00000063 ffffff80 00000007 0000000e ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000000 00000003 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 00000040 0000000a ffffff93 00000007 00000010 00000000 00000023 00000026 fffffff4 fffffffc 00000003 00000037 00000004 fffffffa ffffff93 00000007 ffffff90 00000000 00000063 ffffffe6 ffffffe7 00000004 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000037 00000004 fffffffa 00000013 fffffff7 fffffff7 0000000f ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 0000001b 00000007 00000007 00000003 00000013 00000077 fffffff7 0000000f 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffff80 00000004 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000037 00000004 fffffffa 00000013 fffffff7 fffffff7 0000000f ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 0000001b 00000007 00000077 00000005 00000013 00000077 fffffff7 0000000f 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000004 fffffffd ffffff9b ffffff87 00000017 00000000 00000023 00000028 fffffff4 fffffffc ffffff83 00000027 00000004 fffffffd 0000001b ffffff87 00000007 00000000 ffffff93 00000007 fffffff0 00000000 ffffffe3 fffffff2 ffffffe7 ffffffec ffffff83 00000027 ffffffc4 fffffffc ffffff9b ffffff87 00000007 00000000 00000063 ffffff9c 00000007 0000000e ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000000 00000003 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffffc0 0000000b ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000050 00000002 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 ffffffc0 00000006 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 00000033 00000007 fffffff7 00000000 ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffff80 00000000 00000013 00000000 00000000 00000000 0000006f 00000000 ffffffc0 00000030 ffffff83 00000037 00000004 fffffff5 00000013 ffffff87 ffffff87 00000000 00000023 00000038 ffffffe4 fffffff4 ffffff83 ffffffa7 00000007 00000000 00000023 0000002a fffffff4 fffffff8 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffde ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000003 00000027 00000044 fffffff9 00000013 00000077 fffffff7 0000000f 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffff80 0000002b ffffff83 00000037 00000004 fffffff5 00000013 ffffff87 ffffff87 00000000 00000023 00000038 ffffffe4 fffffff4 ffffff83 ffffffb7 00000007 00000000 00000023 00000030 fffffff4 fffffffc ffffff83 00000037 00000004 fffffffc 00000063 ffffff9e 00000007 00000004 ffffffb7 00000047 00000040 00000000 ffffff93 ffffff87 00000007 00000002 00000023 00000030 fffffff4 fffffffc 0000006f 00000000 ffffffc0 00000004 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffde ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000003 00000037 00000004 fffffffc 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000037 00000004 fffffffc ffffff93 ffffff87 00000017 00000000 00000023 00000030 fffffff4 fffffffc ffffff83 00000037 00000004 fffffffc ffffff83 ffffffc7 00000007 00000000 ffffffe3 ffffff98 00000007 fffffffa 0000006f 00000000 00000040 00000023 ffffff83 00000037 00000004 fffffff5 00000013 ffffff87 ffffff87 00000000 00000023 00000038 ffffffe4 fffffff4 ffffff83 ffffffa7 00000007 00000000 00000023 0000002a fffffff4 fffffffa 00000023 0000002c 00000004 fffffffa 00000023 0000002e 00000004 fffffffa 0000006f 00000000 ffffff80 00000013 ffffff83 00000027 ffffffc4 fffffffb ffffff9b ffffff97 00000027 00000000 ffffff9b ffffff87 00000007 00000000 00000003 00000027 00000044 fffffffb ffffffbb 00000017 fffffff7 00000000 00000023 00000028 fffffff4 fffffffa ffffff83 00000027 00000004 fffffffb ffffff9b ffffffd7 ffffffc7 00000001 00000023 00000028 fffffff4 fffffffa ffffff83 00000027 00000004 fffffffb ffffff93 fffffff7 fffffff7 00000000 00000023 00000028 fffffff4 fffffffa ffffff83 00000027 00000004 fffffffb ffffff9b ffffff87 00000007 00000000 00000063 ffffff96 00000007 00000004 ffffff83 00000027 ffffff84 fffffffb ffffff9b ffffff87 00000007 00000000 00000063 ffffff82 00000007 0000000e ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000000 00000003 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffff80 0000000a ffffff93 00000007 00000010 00000000 00000023 0000002c fffffff4 fffffffa ffffff83 00000027 00000004 fffffffb 0000001b ffffff87 00000007 00000000 ffffff93 00000007 ffffff90 00000000 00000063 ffffffe6 ffffffe7 00000004 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000027 00000004 fffffffb 00000013 fffffff7 fffffff7 0000000f ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 0000001b 00000007 00000007 00000003 00000013 00000077 fffffff7 0000000f 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffff80 00000004 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000027 00000004 fffffffb 00000013 fffffff7 fffffff7 0000000f ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 0000001b 00000007 00000077 00000005 00000013 00000077 fffffff7 0000000f 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffb ffffff9b ffffff87 00000017 00000000 00000023 0000002e fffffff4 fffffffa ffffff83 00000027 ffffffc4 fffffffb 0000001b ffffff87 00000007 00000000 ffffff93 00000007 00000070 00000000 ffffffe3 fffffff0 ffffffe7 ffffffec ffffff83 00000027 ffffff84 fffffffb ffffff9b ffffff87 00000007 00000000 00000063 ffffff90 00000007 0000000c ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000000 00000003 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 00000040 00000008 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000050 00000002 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 00000033 00000007 fffffff7 00000000 ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 00000000 00000005 00000013 00000000 00000000 00000000 0000006f 00000000 ffffff80 00000004 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 00000033 00000007 fffffff7 00000000 ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000063 ffffff94 00000007 ffffffea ffffff83 00000037 ffffff84 fffffff6 00000023 ffffff80 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 0000000a 00000013 00000001 00000001 0000000b 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffff9 00000023 0000003c 00000011 00000002 00000023 00000038 ffffff81 00000002 00000013 00000004 00000001 00000004 00000023 0000003c ffffffa4 fffffffc 00000023 00000034 ffffffc4 fffffffc 00000023 00000034 ffffffd4 00000000 00000023 00000038 ffffffe4 00000000 00000023 0000003c fffffff4 00000000 00000023 00000030 00000004 00000003 00000023 00000034 00000014 00000003 ffffff93 ffffff87 00000005 00000000 00000023 0000002a fffffff4 fffffffc ffffff93 00000007 00000004 00000003 00000023 00000030 fffffff4 fffffffc ffffff83 00000037 00000004 fffffffc ffffff93 ffffff87 ffffff87 fffffffd 00000023 00000034 fffffff4 fffffffe 00000003 00000037 ffffff84 fffffffe ffffff83 00000027 00000044 fffffffd ffffff93 00000006 00000007 00000000 00000003 00000036 ffffff84 fffffffc ffffff93 ffffff85 00000007 00000000 00000003 00000035 ffffff84 fffffffd ffffffef fffffff0 ffffff8f ffffffdd ffffff93 00000007 00000005 00000000 00000023 0000002a fffffff4 fffffffc ffffff83 00000027 00000044 fffffffd 00000013 ffffff85 00000007 00000000 ffffff83 00000030 ffffff81 00000003 00000003 00000034 00000001 00000003 00000013 00000001 00000001 00000007 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 ffffffec 00000023 0000003c 00000011 0000000e 00000023 00000038 ffffff81 0000000e 00000013 00000004 00000001 00000010 00000023 00000034 ffffffa4 fffffff0 00000023 00000034 ffffffb4 00000000 00000023 00000038 ffffffc4 00000000 00000023 0000003c ffffffd4 00000000 00000023 00000030 ffffffe4 00000002 00000023 00000034 fffffff4 00000002 00000023 00000038 00000004 00000003 00000023 0000003c 00000014 00000003 ffffff93 00000007 00000004 00000004 00000023 00000030 fffffff4 fffffff0 ffffff83 00000037 00000004 fffffff0 ffffff93 ffffff87 ffffff87 fffffffc 00000023 00000030 fffffff4 fffffffe 00000003 00000037 00000004 fffffffe ffffff93 00000007 ffffff84 fffffff1 ffffff93 00000006 00000007 00000000 00000003 00000036 ffffff84 fffffff0 ffffff93 00000005 ffffff80 0000000c 00000013 ffffff85 00000007 00000000 ffffffef fffffff0 ffffff8f ffffffd5 ffffff93 00000007 00000005 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff87 00000007 00000000 ffffff93 00000007 00000070 0000000c 00000063 fffffff6 ffffffe7 00000000 ffffff93 00000007 00000070 0000000c 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 00000050 fffffff0 00000002 00000003 00000027 ffffffc4 fffffffe ffffff93 00000007 ffffff84 fffffff1 00000013 00000006 00000010 00000000 ffffff93 00000005 00000007 00000000 00000013 ffffff85 00000007 00000000 ffffff97 00000030 ffffffc0 ffffffff ffffffe7 ffffff80 00000000 ffffffcc 00000013 00000000 00000000 00000000 ffffff83 00000030 ffffff81 0000000f 00000003 00000034 00000001 0000000f 00000013 00000001 00000001 00000014 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffff2 00000023 0000003c 00000011 0000000c 00000023 00000038 ffffff81 0000000c 00000013 00000004 00000001 0000000e ffffff93 00000007 ffffff84 fffffff2 00000013 00000006 00000000 00000000 ffffff93 00000005 ffffff80 0000000c 00000013 ffffff85 00000007 00000000 ffffff97 00000030 ffffffc0 ffffffff ffffffe7 ffffff80 ffffff80 ffffffc7 ffffff93 00000007 ffffff84 fffffff2 00000013 ffffff85 00000007 00000000 ffffffef ffffffe0 ffffff9f ffffffff ffffff93 00000007 00000005 00000000 00000013 ffffff85 00000007 00000000 ffffff83 00000030 ffffff81 0000000d 00000003 00000034 00000001 0000000d 00000013 00000001 00000001 0000000e 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffe 00000023 0000003c ffffff81 00000000 00000013 00000004 00000001 00000002 00000023 00000026 00000004 fffffffe ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffffbb 00000007 fffffff7 00000000 00000023 00000026 fffffff4 fffffffe ffffff93 00000007 00000000 00000000 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000001 00000013 00000001 00000001 00000002 00000067 ffffff80 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 404000 80 -25 78 9 0 0 0 0 0 20 20 20 0 0 0 0 0 25 73 20 0 0 0 0 0 a 0 0 0 0 0 0 0 28 6e 75 6c 6c 29 0 0 fffffff8 e 40 0 ffffffe8 9 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 ffffffe8 9 40 0 7c 11 40 0 7c 11 40 0 28 b 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 4c f 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 7c 11 40 0 ffffffd0 f 40 0 -4000 +00000025 00000078 00000009 00000000 00000000 00000000 00000000 00000000 00000020 00000020 00000020 00000000 00000000 00000000 00000000 00000000 00000025 00000073 00000020 00000000 00000000 00000000 00000000 00000000 0000000a 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000028 0000006e 00000075 0000006c 0000006c 00000029 00000000 00000000 fffffff8 0000000e 00000040 00000000 ffffffe8 00000009 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 ffffffe8 00000009 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 00000028 0000000b 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000004c 0000000f 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 ffffffd0 0000000f 00000040 00000000 +P4000 S405270 \ No newline at end of file From e61a92b490092d90d953acade3ca0064b8108e07 Mon Sep 17 00:00:00 2001 From: amaury Date: Wed, 1 Mar 2023 17:22:20 +0100 Subject: [PATCH 018/115] retrait des id de SP et PC et echange de @ et size --- file.txt | 483 ++++++++++++++++++++++++++++++++++++++++++++++++ memory.txt | 10 +- old_section.txt | 17 ++ 3 files changed, 505 insertions(+), 5 deletions(-) create mode 100644 file.txt create mode 100644 old_section.txt diff --git a/file.txt b/file.txt new file mode 100644 index 0000000..5caa50c --- /dev/null +++ b/file.txt @@ -0,0 +1,483 @@ + +./test_programs/riscv_instructions/simple_arithmetics/unsigned_addition.o: file format elf64-littleriscv + + +Disassembly of section .text: + +00000000000100e8 : + 100e8: ff010113 addi sp,sp,-16 + 100ec: 00000593 li a1,0 + 100f0: 00813023 sd s0,0(sp) + 100f4: 00113423 sd ra,8(sp) + 100f8: 00050413 mv s0,a0 + 100fc: 29c000ef jal ra,10398 <__call_exitprocs> + 10100: f481b503 ld a0,-184(gp) # 11d78 <_global_impure_ptr> + 10104: 05853783 ld a5,88(a0) + 10108: 00078463 beqz a5,10110 + 1010c: 000780e7 jalr a5 + 10110: 00040513 mv a0,s0 + 10114: 4c4000ef jal ra,105d8 <_exit> + +0000000000010118 : + 10118: 00000793 li a5,0 + 1011c: 00078863 beqz a5,1012c + 10120: 00010537 lui a0,0x10 + 10124: 4c050513 addi a0,a0,1216 # 104c0 <__libc_fini_array> + 10128: 3f40006f j 1051c + 1012c: 00008067 ret + +0000000000010130 <_start>: + 10130: 00002197 auipc gp,0x2 + 10134: d0018193 addi gp,gp,-768 # 11e30 <__global_pointer$> + 10138: f6018513 addi a0,gp,-160 # 11d90 + 1013c: f9818613 addi a2,gp,-104 # 11dc8 <__BSS_END__> + 10140: 40a60633 sub a2,a2,a0 + 10144: 00000593 li a1,0 + 10148: 174000ef jal ra,102bc + 1014c: 00000517 auipc a0,0x0 + 10150: 3d050513 addi a0,a0,976 # 1051c + 10154: 00050863 beqz a0,10164 <_start+0x34> + 10158: 00000517 auipc a0,0x0 + 1015c: 36850513 addi a0,a0,872 # 104c0 <__libc_fini_array> + 10160: 3bc000ef jal ra,1051c + 10164: 0bc000ef jal ra,10220 <__libc_init_array> + 10168: 00012503 lw a0,0(sp) + 1016c: 00810593 addi a1,sp,8 + 10170: 00000613 li a2,0 + 10174: 06c000ef jal ra,101e0
+ 10178: f71ff06f j 100e8 + +000000000001017c <__do_global_dtors_aux>: + 1017c: ff010113 addi sp,sp,-16 + 10180: 00813023 sd s0,0(sp) + 10184: f601c783 lbu a5,-160(gp) # 11d90 + 10188: 00113423 sd ra,8(sp) + 1018c: 02079263 bnez a5,101b0 <__do_global_dtors_aux+0x34> + 10190: 00000793 li a5,0 + 10194: 00078a63 beqz a5,101a8 <__do_global_dtors_aux+0x2c> + 10198: 00011537 lui a0,0x11 + 1019c: 61050513 addi a0,a0,1552 # 11610 <__FRAME_END__> + 101a0: 00000097 auipc ra,0x0 + 101a4: 000000e7 jalr zero # 0 + 101a8: 00100793 li a5,1 + 101ac: f6f18023 sb a5,-160(gp) # 11d90 + 101b0: 00813083 ld ra,8(sp) + 101b4: 00013403 ld s0,0(sp) + 101b8: 01010113 addi sp,sp,16 + 101bc: 00008067 ret + +00000000000101c0 : + 101c0: 00000793 li a5,0 + 101c4: 00078c63 beqz a5,101dc + 101c8: 00011537 lui a0,0x11 + 101cc: f6818593 addi a1,gp,-152 # 11d98 + 101d0: 61050513 addi a0,a0,1552 # 11610 <__FRAME_END__> + 101d4: 00000317 auipc t1,0x0 + 101d8: 00000067 jr zero # 0 + 101dc: 00008067 ret + +00000000000101e0
: + 101e0: fe010113 addi sp,sp,-32 + 101e4: 00813c23 sd s0,24(sp) + 101e8: 02010413 addi s0,sp,32 + 101ec: fe042623 sw zero,-20(s0) + 101f0: 00100793 li a5,1 + 101f4: fef42423 sw a5,-24(s0) + 101f8: fec42783 lw a5,-20(s0) + 101fc: 00078713 mv a4,a5 + 10200: fe842783 lw a5,-24(s0) + 10204: 00f707bb addw a5,a4,a5 + 10208: fef42623 sw a5,-20(s0) + 1020c: 00000793 li a5,0 + 10210: 00078513 mv a0,a5 + 10214: 01813403 ld s0,24(sp) + 10218: 02010113 addi sp,sp,32 + 1021c: 00008067 ret + +0000000000010220 <__libc_init_array>: + 10220: fe010113 addi sp,sp,-32 + 10224: 00813823 sd s0,16(sp) + 10228: 000117b7 lui a5,0x11 + 1022c: 00011437 lui s0,0x11 + 10230: 01213023 sd s2,0(sp) + 10234: 61478793 addi a5,a5,1556 # 11614 <__preinit_array_end> + 10238: 61440713 addi a4,s0,1556 # 11614 <__preinit_array_end> + 1023c: 00113c23 sd ra,24(sp) + 10240: 00913423 sd s1,8(sp) + 10244: 40e78933 sub s2,a5,a4 + 10248: 02e78263 beq a5,a4,1026c <__libc_init_array+0x4c> + 1024c: 40395913 srai s2,s2,0x3 + 10250: 61440413 addi s0,s0,1556 + 10254: 00000493 li s1,0 + 10258: 00043783 ld a5,0(s0) + 1025c: 00148493 addi s1,s1,1 + 10260: 00840413 addi s0,s0,8 + 10264: 000780e7 jalr a5 + 10268: ff24e8e3 bltu s1,s2,10258 <__libc_init_array+0x38> + 1026c: 00011437 lui s0,0x11 + 10270: 000117b7 lui a5,0x11 + 10274: 62878793 addi a5,a5,1576 # 11628 <__do_global_dtors_aux_fini_array_entry> + 10278: 61840713 addi a4,s0,1560 # 11618 <__init_array_start> + 1027c: 40e78933 sub s2,a5,a4 + 10280: 40395913 srai s2,s2,0x3 + 10284: 02e78063 beq a5,a4,102a4 <__libc_init_array+0x84> + 10288: 61840413 addi s0,s0,1560 + 1028c: 00000493 li s1,0 + 10290: 00043783 ld a5,0(s0) + 10294: 00148493 addi s1,s1,1 + 10298: 00840413 addi s0,s0,8 + 1029c: 000780e7 jalr a5 + 102a0: ff24e8e3 bltu s1,s2,10290 <__libc_init_array+0x70> + 102a4: 01813083 ld ra,24(sp) + 102a8: 01013403 ld s0,16(sp) + 102ac: 00813483 ld s1,8(sp) + 102b0: 00013903 ld s2,0(sp) + 102b4: 02010113 addi sp,sp,32 + 102b8: 00008067 ret + +00000000000102bc : + 102bc: 00f00313 li t1,15 + 102c0: 00050713 mv a4,a0 + 102c4: 02c37a63 bgeu t1,a2,102f8 + 102c8: 00f77793 andi a5,a4,15 + 102cc: 0a079063 bnez a5,1036c + 102d0: 06059e63 bnez a1,1034c + 102d4: ff067693 andi a3,a2,-16 + 102d8: 00f67613 andi a2,a2,15 + 102dc: 00e686b3 add a3,a3,a4 + 102e0: 00b73023 sd a1,0(a4) + 102e4: 00b73423 sd a1,8(a4) + 102e8: 01070713 addi a4,a4,16 + 102ec: fed76ae3 bltu a4,a3,102e0 + 102f0: 00061463 bnez a2,102f8 + 102f4: 00008067 ret + 102f8: 40c306b3 sub a3,t1,a2 + 102fc: 00269693 slli a3,a3,0x2 + 10300: 00000297 auipc t0,0x0 + 10304: 005686b3 add a3,a3,t0 + 10308: 00c68067 jr 12(a3) + 1030c: 00b70723 sb a1,14(a4) + 10310: 00b706a3 sb a1,13(a4) + 10314: 00b70623 sb a1,12(a4) + 10318: 00b705a3 sb a1,11(a4) + 1031c: 00b70523 sb a1,10(a4) + 10320: 00b704a3 sb a1,9(a4) + 10324: 00b70423 sb a1,8(a4) + 10328: 00b703a3 sb a1,7(a4) + 1032c: 00b70323 sb a1,6(a4) + 10330: 00b702a3 sb a1,5(a4) + 10334: 00b70223 sb a1,4(a4) + 10338: 00b701a3 sb a1,3(a4) + 1033c: 00b70123 sb a1,2(a4) + 10340: 00b700a3 sb a1,1(a4) + 10344: 00b70023 sb a1,0(a4) + 10348: 00008067 ret + 1034c: 0ff5f593 zext.b a1,a1 + 10350: 00859693 slli a3,a1,0x8 + 10354: 00d5e5b3 or a1,a1,a3 + 10358: 01059693 slli a3,a1,0x10 + 1035c: 00d5e5b3 or a1,a1,a3 + 10360: 02059693 slli a3,a1,0x20 + 10364: 00d5e5b3 or a1,a1,a3 + 10368: f6dff06f j 102d4 + 1036c: 00279693 slli a3,a5,0x2 + 10370: 00000297 auipc t0,0x0 + 10374: 005686b3 add a3,a3,t0 + 10378: 00008293 mv t0,ra + 1037c: f98680e7 jalr -104(a3) + 10380: 00028093 mv ra,t0 + 10384: ff078793 addi a5,a5,-16 + 10388: 40f70733 sub a4,a4,a5 + 1038c: 00f60633 add a2,a2,a5 + 10390: f6c374e3 bgeu t1,a2,102f8 + 10394: f3dff06f j 102d0 + +0000000000010398 <__call_exitprocs>: + 10398: fb010113 addi sp,sp,-80 + 1039c: 03413023 sd s4,32(sp) + 103a0: f481ba03 ld s4,-184(gp) # 11d78 <_global_impure_ptr> + 103a4: 03213823 sd s2,48(sp) + 103a8: 04113423 sd ra,72(sp) + 103ac: 1f8a3903 ld s2,504(s4) + 103b0: 04813023 sd s0,64(sp) + 103b4: 02913c23 sd s1,56(sp) + 103b8: 03313423 sd s3,40(sp) + 103bc: 01513c23 sd s5,24(sp) + 103c0: 01613823 sd s6,16(sp) + 103c4: 01713423 sd s7,8(sp) + 103c8: 01813023 sd s8,0(sp) + 103cc: 04090063 beqz s2,1040c <__call_exitprocs+0x74> + 103d0: 00050b13 mv s6,a0 + 103d4: 00058b93 mv s7,a1 + 103d8: 00100a93 li s5,1 + 103dc: fff00993 li s3,-1 + 103e0: 00892483 lw s1,8(s2) + 103e4: fff4841b addiw s0,s1,-1 + 103e8: 02044263 bltz s0,1040c <__call_exitprocs+0x74> + 103ec: 00349493 slli s1,s1,0x3 + 103f0: 009904b3 add s1,s2,s1 + 103f4: 040b8463 beqz s7,1043c <__call_exitprocs+0xa4> + 103f8: 2084b783 ld a5,520(s1) + 103fc: 05778063 beq a5,s7,1043c <__call_exitprocs+0xa4> + 10400: fff4041b addiw s0,s0,-1 + 10404: ff848493 addi s1,s1,-8 + 10408: ff3416e3 bne s0,s3,103f4 <__call_exitprocs+0x5c> + 1040c: 04813083 ld ra,72(sp) + 10410: 04013403 ld s0,64(sp) + 10414: 03813483 ld s1,56(sp) + 10418: 03013903 ld s2,48(sp) + 1041c: 02813983 ld s3,40(sp) + 10420: 02013a03 ld s4,32(sp) + 10424: 01813a83 ld s5,24(sp) + 10428: 01013b03 ld s6,16(sp) + 1042c: 00813b83 ld s7,8(sp) + 10430: 00013c03 ld s8,0(sp) + 10434: 05010113 addi sp,sp,80 + 10438: 00008067 ret + 1043c: 00892783 lw a5,8(s2) + 10440: 0084b703 ld a4,8(s1) + 10444: fff7879b addiw a5,a5,-1 + 10448: 06878263 beq a5,s0,104ac <__call_exitprocs+0x114> + 1044c: 0004b423 sd zero,8(s1) + 10450: fa0708e3 beqz a4,10400 <__call_exitprocs+0x68> + 10454: 31092783 lw a5,784(s2) + 10458: 008a96bb sllw a3,s5,s0 + 1045c: 00892c03 lw s8,8(s2) + 10460: 00d7f7b3 and a5,a5,a3 + 10464: 0007879b sext.w a5,a5 + 10468: 02079263 bnez a5,1048c <__call_exitprocs+0xf4> + 1046c: 000700e7 jalr a4 + 10470: 00892703 lw a4,8(s2) + 10474: 1f8a3783 ld a5,504(s4) + 10478: 01871463 bne a4,s8,10480 <__call_exitprocs+0xe8> + 1047c: f92782e3 beq a5,s2,10400 <__call_exitprocs+0x68> + 10480: f80786e3 beqz a5,1040c <__call_exitprocs+0x74> + 10484: 00078913 mv s2,a5 + 10488: f59ff06f j 103e0 <__call_exitprocs+0x48> + 1048c: 31492783 lw a5,788(s2) + 10490: 1084b583 ld a1,264(s1) + 10494: 00d7f7b3 and a5,a5,a3 + 10498: 0007879b sext.w a5,a5 + 1049c: 00079c63 bnez a5,104b4 <__call_exitprocs+0x11c> + 104a0: 000b0513 mv a0,s6 + 104a4: 000700e7 jalr a4 + 104a8: fc9ff06f j 10470 <__call_exitprocs+0xd8> + 104ac: 00892423 sw s0,8(s2) + 104b0: fa1ff06f j 10450 <__call_exitprocs+0xb8> + 104b4: 00058513 mv a0,a1 + 104b8: 000700e7 jalr a4 + 104bc: fb5ff06f j 10470 <__call_exitprocs+0xd8> + +00000000000104c0 <__libc_fini_array>: + 104c0: fe010113 addi sp,sp,-32 + 104c4: 00813823 sd s0,16(sp) + 104c8: 000117b7 lui a5,0x11 + 104cc: 00011437 lui s0,0x11 + 104d0: 62878793 addi a5,a5,1576 # 11628 <__do_global_dtors_aux_fini_array_entry> + 104d4: 63040413 addi s0,s0,1584 # 11630 + 104d8: 40f40433 sub s0,s0,a5 + 104dc: 00913423 sd s1,8(sp) + 104e0: 00113c23 sd ra,24(sp) + 104e4: 40345493 srai s1,s0,0x3 + 104e8: 02048063 beqz s1,10508 <__libc_fini_array+0x48> + 104ec: ff840413 addi s0,s0,-8 + 104f0: 00f40433 add s0,s0,a5 + 104f4: 00043783 ld a5,0(s0) + 104f8: fff48493 addi s1,s1,-1 + 104fc: ff840413 addi s0,s0,-8 + 10500: 000780e7 jalr a5 + 10504: fe0498e3 bnez s1,104f4 <__libc_fini_array+0x34> + 10508: 01813083 ld ra,24(sp) + 1050c: 01013403 ld s0,16(sp) + 10510: 00813483 ld s1,8(sp) + 10514: 02010113 addi sp,sp,32 + 10518: 00008067 ret + +000000000001051c : + 1051c: 00050593 mv a1,a0 + 10520: 00000693 li a3,0 + 10524: 00000613 li a2,0 + 10528: 00000513 li a0,0 + 1052c: 0040006f j 10530 <__register_exitproc> + +0000000000010530 <__register_exitproc>: + 10530: f481b703 ld a4,-184(gp) # 11d78 <_global_impure_ptr> + 10534: 1f873783 ld a5,504(a4) + 10538: 06078063 beqz a5,10598 <__register_exitproc+0x68> + 1053c: 0087a703 lw a4,8(a5) + 10540: 01f00813 li a6,31 + 10544: 08e84663 blt a6,a4,105d0 <__register_exitproc+0xa0> + 10548: 02050863 beqz a0,10578 <__register_exitproc+0x48> + 1054c: 00371813 slli a6,a4,0x3 + 10550: 01078833 add a6,a5,a6 + 10554: 10c83823 sd a2,272(a6) + 10558: 3107a883 lw a7,784(a5) + 1055c: 00100613 li a2,1 + 10560: 00e6163b sllw a2,a2,a4 + 10564: 00c8e8b3 or a7,a7,a2 + 10568: 3117a823 sw a7,784(a5) + 1056c: 20d83823 sd a3,528(a6) + 10570: 00200693 li a3,2 + 10574: 02d50863 beq a0,a3,105a4 <__register_exitproc+0x74> + 10578: 00270693 addi a3,a4,2 + 1057c: 00369693 slli a3,a3,0x3 + 10580: 0017071b addiw a4,a4,1 + 10584: 00e7a423 sw a4,8(a5) + 10588: 00d787b3 add a5,a5,a3 + 1058c: 00b7b023 sd a1,0(a5) + 10590: 00000513 li a0,0 + 10594: 00008067 ret + 10598: 20070793 addi a5,a4,512 + 1059c: 1ef73c23 sd a5,504(a4) + 105a0: f9dff06f j 1053c <__register_exitproc+0xc> + 105a4: 3147a683 lw a3,788(a5) + 105a8: 00000513 li a0,0 + 105ac: 00c6e6b3 or a3,a3,a2 + 105b0: 30d7aa23 sw a3,788(a5) + 105b4: 00270693 addi a3,a4,2 + 105b8: 00369693 slli a3,a3,0x3 + 105bc: 0017071b addiw a4,a4,1 + 105c0: 00e7a423 sw a4,8(a5) + 105c4: 00d787b3 add a5,a5,a3 + 105c8: 00b7b023 sd a1,0(a5) + 105cc: 00008067 ret + 105d0: fff00513 li a0,-1 + 105d4: 00008067 ret + +00000000000105d8 <_exit>: + 105d8: 05d00893 li a7,93 + 105dc: 00000073 ecall + 105e0: 00054463 bltz a0,105e8 <_exit+0x10> + 105e4: 0000006f j 105e4 <_exit+0xc> + 105e8: ff010113 addi sp,sp,-16 + 105ec: 00813023 sd s0,0(sp) + 105f0: 00050413 mv s0,a0 + 105f4: 00113423 sd ra,8(sp) + 105f8: 4080043b negw s0,s0 + 105fc: 00c000ef jal ra,10608 <__errno> + 10600: 00852023 sw s0,0(a0) + 10604: 0000006f j 10604 <_exit+0x2c> + +0000000000010608 <__errno>: + 10608: f581b503 ld a0,-168(gp) # 11d88 <_impure_ptr> + 1060c: 00008067 ret + +Disassembly of section .eh_frame: + +0000000000011610 <__FRAME_END__>: + 11610: 0000 .2byte 0x0 + ... + +Disassembly of section .init_array: + +0000000000011618 <__init_array_start>: + 11618: 0118 .2byte 0x118 + 1161a: 0001 .2byte 0x1 + 1161c: 0000 .2byte 0x0 + ... + +0000000000011620 <__frame_dummy_init_array_entry>: + 11620: 01c0 .2byte 0x1c0 + 11622: 0001 .2byte 0x1 + 11624: 0000 .2byte 0x0 + ... + +Disassembly of section .fini_array: + +0000000000011628 <__do_global_dtors_aux_fini_array_entry>: + 11628: 017c .2byte 0x17c + 1162a: 0001 .2byte 0x1 + 1162c: 0000 .2byte 0x0 + ... + +Disassembly of section .data: + +0000000000011630 : + ... + 11638: 1b68 .2byte 0x1b68 + 1163a: 0001 .2byte 0x1 + 1163c: 0000 .2byte 0x0 + 1163e: 0000 .2byte 0x0 + 11640: 1c18 .2byte 0x1c18 + 11642: 0001 .2byte 0x1 + 11644: 0000 .2byte 0x0 + 11646: 0000 .2byte 0x0 + 11648: 1cc8 .2byte 0x1cc8 + 1164a: 0001 .2byte 0x1 + ... + 11718: 0001 .2byte 0x1 + 1171a: 0000 .2byte 0x0 + 1171c: 0000 .2byte 0x0 + 1171e: 0000 .2byte 0x0 + 11720: 330e .2byte 0x330e + 11722: abcd .2byte 0xabcd + 11724: 1234 .2byte 0x1234 + 11726: e66d .2byte 0xe66d + 11728: deec .2byte 0xdeec + 1172a: 0005 .2byte 0x5 + 1172c: 0000000b .4byte 0xb + ... + +Disassembly of section .sdata: + +0000000000011d78 <_global_impure_ptr>: + 11d78: 1630 .2byte 0x1630 + 11d7a: 0001 .2byte 0x1 + 11d7c: 0000 .2byte 0x0 + ... + +0000000000011d80 <__dso_handle>: + ... + +0000000000011d88 <_impure_ptr>: + 11d88: 1630 .2byte 0x1630 + 11d8a: 0001 .2byte 0x1 + 11d8c: 0000 .2byte 0x0 + ... + +Disassembly of section .bss: + +0000000000011d90 : + ... + +0000000000011d98 : + ... + +Disassembly of section .comment: + +0000000000000000 <.comment>: + 0: 3a434347 .4byte 0x3a434347 + 4: 2820 .2byte 0x2820 + 6: 2029 .2byte 0x2029 + 8: 3231 .2byte 0x3231 + a: 322e .2byte 0x322e + c: 302e .2byte 0x302e + e: 4700 .2byte 0x4700 + 10: 203a4343 .4byte 0x203a4343 + 14: 4728 .2byte 0x4728 + 16: 554e .2byte 0x554e + 18: 2029 .2byte 0x2029 + 1a: 3231 .2byte 0x3231 + 1c: 322e .2byte 0x322e + 1e: 302e .2byte 0x302e + ... + +Disassembly of section .riscv.attributes: + +0000000000000000 <.riscv.attributes>: + 0: 2041 .2byte 0x2041 + 2: 0000 .2byte 0x0 + 4: 7200 .2byte 0x7200 + 6: 7369 .2byte 0x7369 + 8: 01007663 bgeu zero,a6,14 + c: 0016 .2byte 0x16 + e: 0000 .2byte 0x0 + 10: 1004 .2byte 0x1004 + 12: 7205 .2byte 0x7205 + 14: 3676 .2byte 0x3676 + 16: 6934 .2byte 0x6934 + 18: 7032 .2byte 0x7032 + 1a: 5f30 .2byte 0x5f30 + 1c: 326d .2byte 0x326d + 1e: 3070 .2byte 0x3070 + ... diff --git a/memory.txt b/memory.txt index 905bcdb..d09a7fe 100644 --- a/memory.txt +++ b/memory.txt @@ -1,8 +1,8 @@ -4000 1b8 +1b8 4000 ffffff97 ffffffd0 0000003f 00000000 ffffffe7 ffffff80 00000000 00000041 00000013 00000005 00000000 00000000 ffffffef 00000000 00000040 00000001 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000000 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000010 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000020 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000030 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000040 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000050 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000060 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000070 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffff80 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffff90 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 fffffff0 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffa0 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffe0 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffb0 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffc0 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffd0 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffe0 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 fffffff0 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000000 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000000 00000002 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000010 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000020 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000030 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000040 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000050 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000060 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000070 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffff80 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffff90 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffa0 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffb0 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffc0 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffd0 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000010 00000002 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000020 00000002 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 -400000 1450 +1450 400000 00000013 00000001 00000001 fffffffd 00000023 00000034 00000011 00000002 00000023 00000030 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc ffffff83 00000037 ffffff84 fffffffd 00000023 00000034 fffffff4 fffffffe ffffff83 00000037 ffffff84 fffffffe ffffffe7 ffffff80 00000007 00000000 00000013 00000005 00000000 00000000 ffffff97 00000040 ffffffc0 ffffffff ffffffe7 ffffff80 ffffff80 ffffffff 00000013 00000000 00000000 00000000 ffffff83 00000030 ffffff81 00000002 00000003 00000034 00000001 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffe 00000023 0000003c 00000011 00000000 00000023 00000038 ffffff81 00000000 00000013 00000004 00000001 00000002 00000023 00000034 ffffffa4 fffffffe 00000023 00000030 ffffffb4 fffffffe ffffffb7 00000007 00000040 00000000 ffffff93 ffffff87 00000007 00000000 ffffff9b ffffff87 00000007 00000000 00000003 00000037 00000004 fffffffe 0000001b 00000007 00000007 00000000 00000013 00000006 00000007 00000000 ffffff93 ffffff85 00000007 00000000 00000003 00000035 ffffff84 fffffffe ffffff97 00000040 ffffffc0 ffffffff ffffffe7 ffffff80 ffffffc0 00000001 ffffff93 00000007 00000005 00000000 00000013 ffffff85 00000007 00000000 ffffff83 00000030 ffffff81 00000001 00000003 00000034 00000001 00000001 00000013 00000001 00000001 00000002 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc 00000023 00000038 ffffffb4 fffffffc 00000023 00000024 00000004 fffffffe 00000023 00000022 00000004 fffffffe 0000006f 00000000 00000040 0000000b ffffff83 00000027 00000044 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000063 ffffff92 00000007 00000002 ffffff83 00000027 00000044 fffffffe 00000003 00000037 00000004 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000063 ffffff98 00000007 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe 00000023 00000026 00000004 fffffffe ffffff83 00000027 00000044 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc6 00000007 00000000 ffffff83 00000027 00000044 fffffffe 00000003 00000037 00000004 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000006 00000000 00000063 0000007a fffffff7 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe ffffff93 00000007 fffffff0 ffffffff 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc6 00000007 00000000 ffffff83 00000027 00000044 fffffffe 00000003 00000037 00000004 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000006 00000000 00000063 fffffffa ffffffe7 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe ffffff93 00000007 00000010 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000022 fffffff4 fffffffe ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 ffffffe3 ffffff84 00000007 fffffff4 ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc 00000023 00000038 ffffffb4 fffffffc 00000023 00000026 00000004 fffffffe 00000023 00000024 00000004 fffffffe ffffff83 00000037 ffffff84 fffffffd 00000063 ffffff86 00000007 00000006 ffffff83 00000037 00000004 fffffffd 00000063 ffffff82 00000007 00000006 0000006f 00000000 ffffffc0 00000004 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 00000004 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000063 ffffff96 00000007 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 00000004 fffffffd 00000033 00000007 fffffff7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff83 00000036 ffffff84 fffffffd ffffffb3 ffffff87 fffffff6 00000000 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 ffffffe3 ffffff88 00000007 fffffffa ffffff83 00000037 ffffff84 fffffffd 0000006f 00000000 ffffff80 00000000 ffffff93 00000007 00000000 00000000 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc 00000023 00000026 00000004 fffffffe 0000006f 00000000 00000000 00000001 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000067 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 ffffffe3 ffffff92 00000007 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 00000011 00000002 00000023 00000030 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc 00000023 00000038 ffffffb4 fffffffc 00000003 00000035 ffffff84 fffffffd ffffffef fffffff0 ffffff9f fffffff9 ffffff93 00000007 00000005 00000000 ffffff9b ffffff87 00000007 00000000 00000023 00000024 fffffff4 fffffffe 00000003 00000035 00000004 fffffffd ffffffef fffffff0 0000005f fffffff8 ffffff93 00000007 00000005 00000000 ffffff9b ffffff87 00000007 00000000 00000023 00000022 fffffff4 fffffffe ffffff83 00000027 ffffff84 fffffffe 00000023 00000026 fffffff4 fffffffe 0000006f 00000000 00000040 00000004 ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffffbb 00000007 fffffff7 00000040 ffffff9b ffffff87 00000007 00000000 00000013 ffffff87 00000007 00000000 ffffff83 00000037 00000004 fffffffd 00000033 ffffff87 ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff83 00000036 ffffff84 fffffffd ffffffb3 ffffff87 fffffff6 00000000 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe 00000013 ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffffbb 00000007 fffffff7 00000000 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000007 00000000 ffffffe3 00000052 fffffff7 fffffffa ffffff83 00000037 ffffff84 fffffffd 00000013 ffffff85 00000007 00000000 ffffff83 00000030 ffffff81 00000002 00000003 00000034 00000001 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffe 00000023 0000003c ffffff81 00000000 00000013 00000004 00000001 00000002 ffffff93 00000007 00000005 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 0000001b ffffff87 00000007 00000000 ffffff93 00000007 00000000 00000006 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000027 ffffffc4 fffffffe 0000001b ffffff87 00000007 00000000 ffffff93 00000007 ffffffa0 00000007 00000063 ffffffca ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000007 fffffffe ffffff9b ffffff87 00000007 00000000 0000006f 00000000 ffffff80 00000000 ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000001 00000013 00000001 00000001 00000002 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffe 00000023 0000003c ffffff81 00000000 00000013 00000004 00000001 00000002 ffffff93 00000007 00000005 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 0000001b ffffff87 00000007 00000000 ffffff93 00000007 ffffffa0 00000005 00000063 ffffffc2 ffffffe7 00000002 ffffff83 00000027 ffffffc4 fffffffe 0000001b ffffff87 00000007 00000000 ffffff93 00000007 00000000 00000004 00000063 ffffffda ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000007 00000002 ffffff9b ffffff87 00000007 00000000 0000006f 00000000 ffffff80 00000000 ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000001 00000013 00000001 00000001 00000002 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc 00000023 00000026 00000004 fffffffe 00000023 00000024 00000004 fffffffe 00000023 00000022 00000004 fffffffe 00000023 00000020 00000004 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000007 00000000 ffffff93 00000007 ffffffd0 00000002 00000063 00000010 fffffff7 0000000c ffffff93 00000007 00000010 00000000 00000023 00000020 fffffff4 fffffffe ffffff93 00000007 00000010 00000000 00000023 00000026 fffffff4 fffffffe 0000006f 00000000 ffffffc0 0000000a ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000063 ffffff8e 00000007 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000007 00000000 ffffff93 00000007 fffffff0 00000002 00000063 fffffff0 ffffffe7 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000007 00000000 ffffff93 00000007 ffffff90 00000003 00000063 fffffff8 ffffffe7 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 00000040 00000005 ffffff83 00000027 00000044 fffffffe 00000013 ffffff87 00000007 00000000 ffffff93 00000007 00000007 00000000 ffffff9b ffffff97 00000027 00000000 ffffffbb ffffff87 ffffffe7 00000000 ffffff9b ffffff97 00000017 00000000 00000023 00000022 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 ffffff9b ffffff87 00000007 00000000 ffffff9b ffffff87 00000007 fffffffd ffffff9b ffffff87 00000007 00000000 00000003 00000027 00000044 fffffffe ffffffbb 00000007 fffffff7 00000000 00000023 00000022 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 ffffffe3 ffffff88 00000007 fffffff4 ffffff83 00000027 00000004 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffff8a 00000007 00000000 ffffff83 00000027 00000044 fffffffe ffffffbb 00000007 fffffff0 00000040 ffffff9b ffffff87 00000007 00000000 0000006f 00000000 ffffff80 00000000 ffffff83 00000027 00000044 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffb 00000023 00000034 ffffff81 00000004 00000013 00000004 00000001 00000005 00000023 00000034 ffffffa4 fffffffc 00000023 00000030 ffffffb4 fffffffc ffffff93 00000007 00000006 00000000 00000023 0000002e fffffff4 fffffffa ffffff83 00000037 ffffff84 fffffffc 00000023 0000003c fffffff4 fffffffc ffffff83 00000037 00000004 fffffffc 00000023 00000038 fffffff4 fffffffc 00000023 00000026 00000004 fffffffe 00000023 00000024 00000004 fffffffe 00000023 00000022 00000004 fffffffe 0000006f 00000000 00000000 00000008 ffffff83 00000027 00000044 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc6 00000007 00000000 ffffff83 00000027 00000044 fffffffe 00000003 00000037 00000004 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000006 00000000 00000063 0000007a fffffff7 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe ffffff93 00000007 fffffff0 ffffffff 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc6 00000007 00000000 ffffff83 00000027 00000044 fffffffe 00000003 00000037 00000004 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000006 00000000 00000063 fffffffa ffffffe7 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe ffffff93 00000007 00000010 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000022 fffffff4 fffffffe ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffff9a 00000007 00000000 00000003 00000027 00000044 fffffffe ffffff83 00000027 ffffffc4 fffffffb ffffff9b ffffff87 00000007 00000000 ffffffe3 00000066 fffffff7 fffffff6 ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000004 00000013 00000001 00000001 00000005 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffb 00000023 00000034 ffffff81 00000004 00000013 00000004 00000001 00000005 00000023 00000034 ffffffa4 fffffffc 00000023 00000030 ffffffb4 fffffffc ffffff93 00000007 00000006 00000000 00000023 0000002e fffffff4 fffffffa ffffff83 00000037 ffffff84 fffffffc 00000023 00000030 fffffff4 fffffffe ffffff83 00000037 00000004 fffffffc 00000023 0000003c fffffff4 fffffffc 00000023 00000026 00000004 fffffffe ffffff83 00000037 00000004 fffffffe 00000063 ffffff8a 00000007 00000004 ffffff83 00000037 ffffff84 fffffffd 00000063 ffffff86 00000007 00000004 0000006f 00000000 00000000 00000003 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd 00000033 00000007 fffffff7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff83 00000036 00000004 fffffffe ffffffb3 ffffff87 fffffff6 00000000 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe 00000003 00000027 ffffffc4 fffffffe ffffff83 00000027 ffffffc4 fffffffb ffffff9b ffffff87 00000007 00000000 ffffffe3 00000064 fffffff7 fffffffc ffffff83 00000037 00000004 fffffffe 0000006f 00000000 ffffff80 00000000 ffffff93 00000007 00000000 00000000 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000004 00000013 00000001 00000001 00000005 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc ffffff93 ffffff87 00000005 00000000 00000013 00000007 00000006 00000000 00000023 0000002a fffffff4 fffffffc ffffff93 00000007 00000007 00000000 00000023 00000028 fffffff4 fffffffc ffffff83 00000037 ffffff84 fffffffd 00000023 00000030 fffffff4 fffffffe 00000023 00000026 00000004 fffffffe 0000006f 00000000 ffffff80 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 00000004 fffffffe ffffffb3 00000007 fffffff7 00000000 00000003 00000027 00000044 fffffffd 00000013 00000077 fffffff7 0000000f 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe 00000003 00000027 ffffffc4 fffffffe ffffff83 00000027 00000004 fffffffd ffffff9b ffffff87 00000007 00000000 ffffffe3 00000068 fffffff7 fffffffc ffffff83 00000037 00000004 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 00000011 00000002 00000023 00000030 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc ffffff93 ffffff87 00000005 00000000 00000023 0000002a fffffff4 fffffffc 00000023 00000026 00000004 fffffffe 0000006f 00000000 ffffffc0 00000014 ffffff83 00000027 ffffffc4 fffffffe ffffff93 fffffff7 fffffff7 00000000 ffffff9b ffffff87 00000007 00000000 00000063 ffffff92 00000007 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff93 ffffff85 00000007 00000000 ffffffb7 00000047 00000040 00000000 00000013 ffffff85 00000007 00000000 ffffffef 00000000 ffffffd0 00000039 0000006f 00000000 00000000 00000002 ffffff83 00000027 ffffffc4 fffffffe ffffff93 fffffff7 00000077 00000000 ffffff9b ffffff87 00000007 00000000 00000063 ffffff98 00000007 00000000 ffffffb7 00000047 00000040 00000000 00000013 ffffff85 ffffff87 00000000 ffffffef 00000000 ffffffd0 00000037 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 ffffff9b ffffffd7 00000047 00000000 ffffffa3 00000005 fffffff4 fffffffe ffffff83 00000047 ffffffb4 fffffffe 00000013 fffffff7 fffffff7 0000000f ffffff93 00000007 ffffff90 00000000 00000063 ffffffea ffffffe7 00000000 ffffff83 00000047 ffffffb4 fffffffe ffffff9b ffffff87 00000007 00000003 ffffffa3 00000005 fffffff4 fffffffe 0000006f 00000000 00000000 00000001 ffffff83 00000047 ffffffb4 fffffffe ffffff9b ffffff87 00000077 00000005 ffffffa3 00000005 fffffff4 fffffffe ffffff83 00000047 ffffffb4 fffffffe 00000023 00000000 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 ffffff93 fffffff7 fffffff7 00000000 00000023 00000005 fffffff4 fffffffe ffffff83 00000047 ffffffa4 fffffffe 00000013 fffffff7 fffffff7 0000000f ffffff93 00000007 ffffff90 00000000 00000063 ffffffea ffffffe7 00000000 ffffff83 00000047 ffffffa4 fffffffe ffffff9b ffffff87 00000007 00000003 00000023 00000005 fffffff4 fffffffe 0000006f 00000000 00000000 00000001 ffffff83 00000047 ffffffa4 fffffffe ffffff9b ffffff87 00000077 00000005 00000023 00000005 fffffff4 fffffffe ffffff83 00000047 ffffffa4 fffffffe ffffffa3 00000000 fffffff4 fffffffe 00000023 00000001 00000004 fffffffe ffffff93 00000007 00000004 fffffffe ffffff93 ffffff85 00000007 00000000 ffffffb7 00000047 00000040 00000000 00000013 ffffff85 00000007 00000001 ffffffef 00000000 ffffffd0 0000002c ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 ffffff9b ffffff87 00000007 00000000 ffffff9b ffffff87 00000007 00000000 ffffff93 fffffff7 fffffff7 00000000 ffffff9b ffffff87 00000007 00000000 00000063 ffffff8e 00000007 00000000 ffffff83 00000027 00000044 fffffffd ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffff98 ffffffe7 00000000 ffffffb7 00000047 00000040 00000000 00000013 ffffff85 ffffff87 00000001 ffffffef 00000000 ffffffd0 00000028 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff87 00000007 00000000 ffffff83 00000027 00000044 fffffffd 0000001b 00000007 00000007 00000000 ffffff9b ffffff87 00000007 00000000 ffffffe3 00000042 fffffff7 ffffffea 00000013 00000000 00000000 00000000 00000013 00000000 00000000 00000000 ffffff83 00000030 ffffff81 00000002 00000003 00000034 00000001 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffff5 00000023 00000034 ffffff81 0000000a 00000013 00000004 00000001 0000000b 00000023 00000034 ffffffa4 fffffff6 ffffff93 ffffff87 00000005 00000000 00000023 0000003c ffffffc4 fffffff4 00000023 00000038 ffffffd4 fffffff4 00000023 00000022 fffffff4 fffffff6 ffffff83 00000037 ffffff84 fffffff6 00000063 ffffff8c 00000007 00000000 ffffff83 00000037 ffffff84 fffffff5 00000063 ffffff88 00000007 00000000 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 00000007 00000000 00000063 ffffffd6 00000007 00000000 ffffff93 00000007 fffffff0 ffffffff 0000006f 00000000 ffffff90 00000017 00000023 00000024 00000004 fffffffe 00000023 00000026 00000004 fffffffe 0000006f 00000000 ffffffd0 00000014 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 ffffff9b ffffff87 00000007 00000000 00000013 ffffff87 00000007 00000000 ffffff93 00000007 00000050 00000002 ffffffe3 0000001e fffffff7 0000000c ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 ffffff9b ffffff87 00000007 00000000 ffffff93 ffffff86 00000007 00000000 00000013 00000007 00000050 00000002 00000063 ffffff8c ffffffe6 00000004 ffffff93 ffffff86 00000007 00000000 00000013 00000007 00000050 00000002 ffffffe3 ffffffce ffffffe6 00000000 ffffff93 ffffff86 00000007 00000000 00000013 00000007 ffffff80 00000007 ffffffe3 00000048 ffffffd7 00000000 ffffff93 ffffff86 00000007 00000000 00000013 00000007 00000030 00000006 ffffffe3 ffffffc2 ffffffe6 00000000 ffffff9b ffffff86 ffffffd7 fffffff9 0000001b ffffff87 00000006 00000000 ffffff93 00000007 00000050 00000001 00000063 ffffffea ffffffe7 0000007e ffffff93 ffffff97 00000006 00000002 ffffff93 ffffffd7 00000007 00000002 00000013 ffffff97 00000027 00000000 ffffffb7 00000047 00000040 00000000 ffffff93 ffffff87 ffffff87 00000002 ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffa7 00000007 00000000 00000067 ffffff80 00000007 00000000 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000050 00000002 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffffd0 00000001 ffffff83 00000037 00000004 fffffff5 00000013 ffffff87 ffffff87 00000000 00000023 00000038 ffffffe4 fffffff4 ffffff83 ffffffa7 00000007 00000000 00000023 00000022 fffffff4 fffffffe 00000023 00000020 00000004 fffffffe ffffff83 00000027 00000044 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffde 00000007 00000002 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 ffffffd0 00000002 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe 00000013 ffffff87 00000007 00000000 ffffff93 00000007 ffffffa0 00000000 ffffffbb 00000067 fffffff7 00000002 00000023 0000002c fffffff4 fffffff8 ffffff83 00000027 ffffff84 fffffff9 ffffff9b ffffffd7 fffffff7 00000041 00000003 00000027 ffffff84 fffffff9 00000033 ffffffc7 ffffffe7 00000000 ffffffbb 00000007 fffffff7 00000040 00000023 0000002c fffffff4 fffffff8 ffffff83 00000027 ffffff84 fffffff9 00000013 fffffff7 fffffff7 0000000f ffffff83 00000027 00000004 fffffffe ffffff9b ffffff86 00000017 00000000 00000023 00000020 ffffffd4 fffffffe 0000001b 00000007 00000007 00000003 00000013 00000077 fffffff7 0000000f ffffff93 ffffff87 00000007 ffffffff ffffffb3 ffffff87 ffffff87 00000000 00000023 ffffff8c ffffffe7 fffffff8 ffffff83 00000027 00000044 fffffffe 00000013 ffffff87 00000007 00000000 ffffff93 00000007 ffffffa0 00000000 ffffffbb 00000047 fffffff7 00000002 00000023 00000022 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe ffffff9b ffffff87 00000007 00000000 ffffffe3 ffffff98 00000007 fffffff8 ffffff83 00000027 00000004 fffffffe ffffff9b ffffff87 fffffff7 ffffffff 00000023 00000020 fffffff4 fffffffe 0000006f 00000000 00000040 00000005 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000003 00000027 00000004 fffffffe 00000013 00000007 00000007 ffffffff 00000033 00000007 ffffff87 00000000 00000003 00000047 ffffff87 fffffff9 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000004 fffffffe ffffff9b ffffff87 fffffff7 ffffffff 00000023 00000020 fffffff4 fffffffe ffffff83 00000027 00000004 fffffffe ffffff9b ffffff87 00000007 00000000 ffffffe3 ffffffd4 00000007 fffffffa 0000006f 00000000 ffffffc0 0000006d ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 0000001b ffffff87 00000007 00000000 ffffff93 00000006 00000007 00000000 ffffff93 00000007 00000040 00000006 00000063 ffffff88 fffffff6 00000000 ffffff93 00000007 ffffff80 00000007 00000063 0000000c fffffff7 00000012 0000006f 00000000 ffffffc0 0000002d ffffff83 00000037 00000004 fffffff5 00000013 ffffff87 ffffff87 00000000 00000023 00000038 ffffffe4 fffffff4 ffffff83 ffffffb7 00000007 00000000 00000023 0000003c fffffff4 fffffffc 00000023 0000002a 00000004 fffffffc ffffff83 00000037 ffffff84 fffffffd 00000063 ffffffde 00000007 00000002 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 ffffffd0 00000002 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffff93 00000007 ffffffa0 00000000 ffffffb3 00000067 fffffff7 00000002 00000023 0000002e fffffff4 fffffff8 ffffff83 00000027 ffffffc4 fffffff9 ffffff9b ffffffd7 fffffff7 00000041 00000003 00000027 ffffffc4 fffffff9 00000033 ffffffc7 ffffffe7 00000000 ffffffbb 00000007 fffffff7 00000040 00000023 0000002e fffffff4 fffffff8 ffffff83 00000027 ffffffc4 fffffff9 00000013 fffffff7 fffffff7 0000000f ffffff83 00000027 00000044 fffffffd ffffff9b ffffff86 00000017 00000000 00000023 0000002a ffffffd4 fffffffc 0000001b 00000007 00000007 00000003 00000013 00000077 fffffff7 0000000f ffffff93 ffffff87 00000007 ffffffff ffffffb3 ffffff87 ffffff87 00000000 00000023 ffffff80 ffffffe7 fffffff8 00000003 00000037 ffffff84 fffffffd ffffff93 00000007 ffffffa0 00000000 ffffffb3 00000047 fffffff7 00000002 00000023 0000003c fffffff4 fffffffc ffffff83 00000037 ffffff84 fffffffd ffffffe3 ffffff9e 00000007 fffffff8 ffffff83 00000027 00000044 fffffffd ffffff9b ffffff87 fffffff7 ffffffff 00000023 0000002a fffffff4 fffffffc 0000006f 00000000 00000040 00000005 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000003 00000027 00000044 fffffffd 00000013 00000007 00000007 ffffffff 00000033 00000007 ffffff87 00000000 00000003 00000047 00000007 fffffff8 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffd ffffff9b ffffff87 fffffff7 ffffffff 00000023 0000002a fffffff4 fffffffc ffffff83 00000027 00000044 fffffffd ffffff9b ffffff87 00000007 00000000 ffffffe3 ffffffd4 00000007 fffffffa 0000006f 00000000 ffffff80 00000026 ffffff83 00000037 00000004 fffffff5 00000013 ffffff87 ffffff87 00000000 00000023 00000038 ffffffe4 fffffff4 ffffff83 ffffffb7 00000007 00000000 00000023 00000034 fffffff4 fffffffa 00000023 00000026 00000004 fffffffc 00000023 00000028 00000004 fffffffc 0000006f 00000000 00000040 00000013 ffffff83 00000027 00000004 fffffffd ffffff9b ffffff97 00000027 00000000 ffffff9b ffffff87 00000007 00000000 00000013 ffffff87 00000007 00000000 ffffff83 00000037 ffffff84 fffffffa ffffffb3 ffffff97 ffffffe7 00000000 00000023 00000030 fffffff4 fffffffa ffffff83 00000037 00000004 fffffffa ffffff93 ffffffd7 ffffffc7 00000003 00000023 00000030 fffffff4 fffffffa ffffff83 00000037 00000004 fffffffa ffffff93 fffffff7 fffffff7 00000000 00000023 00000030 fffffff4 fffffffa ffffff83 00000037 00000004 fffffffa 00000063 ffffff96 00000007 00000004 ffffff83 00000027 ffffffc4 fffffffc ffffff9b ffffff87 00000007 00000000 00000063 ffffff80 00000007 0000000e ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000000 00000003 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 00000040 0000000a ffffff93 00000007 00000010 00000000 00000023 00000026 fffffff4 fffffffc 00000003 00000037 00000004 fffffffa ffffff93 00000007 ffffff90 00000000 00000063 ffffffe6 ffffffe7 00000004 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000037 00000004 fffffffa 00000013 fffffff7 fffffff7 0000000f ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 0000001b 00000007 00000007 00000003 00000013 00000077 fffffff7 0000000f 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffff80 00000004 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000037 00000004 fffffffa 00000013 fffffff7 fffffff7 0000000f ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 0000001b 00000007 00000077 00000005 00000013 00000077 fffffff7 0000000f 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000004 fffffffd ffffff9b ffffff87 00000017 00000000 00000023 00000028 fffffff4 fffffffc ffffff83 00000027 00000004 fffffffd 0000001b ffffff87 00000007 00000000 ffffff93 00000007 fffffff0 00000000 ffffffe3 fffffff2 ffffffe7 ffffffec ffffff83 00000027 ffffffc4 fffffffc ffffff9b ffffff87 00000007 00000000 00000063 ffffff9c 00000007 0000000e ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000000 00000003 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffffc0 0000000b ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000050 00000002 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 ffffffc0 00000006 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 00000033 00000007 fffffff7 00000000 ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffff80 00000000 00000013 00000000 00000000 00000000 0000006f 00000000 ffffffc0 00000030 ffffff83 00000037 00000004 fffffff5 00000013 ffffff87 ffffff87 00000000 00000023 00000038 ffffffe4 fffffff4 ffffff83 ffffffa7 00000007 00000000 00000023 0000002a fffffff4 fffffff8 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffde ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000003 00000027 00000044 fffffff9 00000013 00000077 fffffff7 0000000f 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffff80 0000002b ffffff83 00000037 00000004 fffffff5 00000013 ffffff87 ffffff87 00000000 00000023 00000038 ffffffe4 fffffff4 ffffff83 ffffffb7 00000007 00000000 00000023 00000030 fffffff4 fffffffc ffffff83 00000037 00000004 fffffffc 00000063 ffffff9e 00000007 00000004 ffffffb7 00000047 00000040 00000000 ffffff93 ffffff87 00000007 00000002 00000023 00000030 fffffff4 fffffffc 0000006f 00000000 ffffffc0 00000004 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffde ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000003 00000037 00000004 fffffffc 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000037 00000004 fffffffc ffffff93 ffffff87 00000017 00000000 00000023 00000030 fffffff4 fffffffc ffffff83 00000037 00000004 fffffffc ffffff83 ffffffc7 00000007 00000000 ffffffe3 ffffff98 00000007 fffffffa 0000006f 00000000 00000040 00000023 ffffff83 00000037 00000004 fffffff5 00000013 ffffff87 ffffff87 00000000 00000023 00000038 ffffffe4 fffffff4 ffffff83 ffffffa7 00000007 00000000 00000023 0000002a fffffff4 fffffffa 00000023 0000002c 00000004 fffffffa 00000023 0000002e 00000004 fffffffa 0000006f 00000000 ffffff80 00000013 ffffff83 00000027 ffffffc4 fffffffb ffffff9b ffffff97 00000027 00000000 ffffff9b ffffff87 00000007 00000000 00000003 00000027 00000044 fffffffb ffffffbb 00000017 fffffff7 00000000 00000023 00000028 fffffff4 fffffffa ffffff83 00000027 00000004 fffffffb ffffff9b ffffffd7 ffffffc7 00000001 00000023 00000028 fffffff4 fffffffa ffffff83 00000027 00000004 fffffffb ffffff93 fffffff7 fffffff7 00000000 00000023 00000028 fffffff4 fffffffa ffffff83 00000027 00000004 fffffffb ffffff9b ffffff87 00000007 00000000 00000063 ffffff96 00000007 00000004 ffffff83 00000027 ffffff84 fffffffb ffffff9b ffffff87 00000007 00000000 00000063 ffffff82 00000007 0000000e ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000000 00000003 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffff80 0000000a ffffff93 00000007 00000010 00000000 00000023 0000002c fffffff4 fffffffa ffffff83 00000027 00000004 fffffffb 0000001b ffffff87 00000007 00000000 ffffff93 00000007 ffffff90 00000000 00000063 ffffffe6 ffffffe7 00000004 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000027 00000004 fffffffb 00000013 fffffff7 fffffff7 0000000f ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 0000001b 00000007 00000007 00000003 00000013 00000077 fffffff7 0000000f 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffff80 00000004 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000027 00000004 fffffffb 00000013 fffffff7 fffffff7 0000000f ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 0000001b 00000007 00000077 00000005 00000013 00000077 fffffff7 0000000f 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffb ffffff9b ffffff87 00000017 00000000 00000023 0000002e fffffff4 fffffffa ffffff83 00000027 ffffffc4 fffffffb 0000001b ffffff87 00000007 00000000 ffffff93 00000007 00000070 00000000 ffffffe3 fffffff0 ffffffe7 ffffffec ffffff83 00000027 ffffff84 fffffffb ffffff9b ffffff87 00000007 00000000 00000063 ffffff90 00000007 0000000c ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000000 00000003 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 00000040 00000008 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000050 00000002 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 00000033 00000007 fffffff7 00000000 ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 00000000 00000005 00000013 00000000 00000000 00000000 0000006f 00000000 ffffff80 00000004 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 00000033 00000007 fffffff7 00000000 ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000063 ffffff94 00000007 ffffffea ffffff83 00000037 ffffff84 fffffff6 00000023 ffffff80 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 0000000a 00000013 00000001 00000001 0000000b 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffff9 00000023 0000003c 00000011 00000002 00000023 00000038 ffffff81 00000002 00000013 00000004 00000001 00000004 00000023 0000003c ffffffa4 fffffffc 00000023 00000034 ffffffc4 fffffffc 00000023 00000034 ffffffd4 00000000 00000023 00000038 ffffffe4 00000000 00000023 0000003c fffffff4 00000000 00000023 00000030 00000004 00000003 00000023 00000034 00000014 00000003 ffffff93 ffffff87 00000005 00000000 00000023 0000002a fffffff4 fffffffc ffffff93 00000007 00000004 00000003 00000023 00000030 fffffff4 fffffffc ffffff83 00000037 00000004 fffffffc ffffff93 ffffff87 ffffff87 fffffffd 00000023 00000034 fffffff4 fffffffe 00000003 00000037 ffffff84 fffffffe ffffff83 00000027 00000044 fffffffd ffffff93 00000006 00000007 00000000 00000003 00000036 ffffff84 fffffffc ffffff93 ffffff85 00000007 00000000 00000003 00000035 ffffff84 fffffffd ffffffef fffffff0 ffffff8f ffffffdd ffffff93 00000007 00000005 00000000 00000023 0000002a fffffff4 fffffffc ffffff83 00000027 00000044 fffffffd 00000013 ffffff85 00000007 00000000 ffffff83 00000030 ffffff81 00000003 00000003 00000034 00000001 00000003 00000013 00000001 00000001 00000007 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 ffffffec 00000023 0000003c 00000011 0000000e 00000023 00000038 ffffff81 0000000e 00000013 00000004 00000001 00000010 00000023 00000034 ffffffa4 fffffff0 00000023 00000034 ffffffb4 00000000 00000023 00000038 ffffffc4 00000000 00000023 0000003c ffffffd4 00000000 00000023 00000030 ffffffe4 00000002 00000023 00000034 fffffff4 00000002 00000023 00000038 00000004 00000003 00000023 0000003c 00000014 00000003 ffffff93 00000007 00000004 00000004 00000023 00000030 fffffff4 fffffff0 ffffff83 00000037 00000004 fffffff0 ffffff93 ffffff87 ffffff87 fffffffc 00000023 00000030 fffffff4 fffffffe 00000003 00000037 00000004 fffffffe ffffff93 00000007 ffffff84 fffffff1 ffffff93 00000006 00000007 00000000 00000003 00000036 ffffff84 fffffff0 ffffff93 00000005 ffffff80 0000000c 00000013 ffffff85 00000007 00000000 ffffffef fffffff0 ffffff8f ffffffd5 ffffff93 00000007 00000005 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff87 00000007 00000000 ffffff93 00000007 00000070 0000000c 00000063 fffffff6 ffffffe7 00000000 ffffff93 00000007 00000070 0000000c 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 00000050 fffffff0 00000002 00000003 00000027 ffffffc4 fffffffe ffffff93 00000007 ffffff84 fffffff1 00000013 00000006 00000010 00000000 ffffff93 00000005 00000007 00000000 00000013 ffffff85 00000007 00000000 ffffff97 00000030 ffffffc0 ffffffff ffffffe7 ffffff80 00000000 ffffffcc 00000013 00000000 00000000 00000000 ffffff83 00000030 ffffff81 0000000f 00000003 00000034 00000001 0000000f 00000013 00000001 00000001 00000014 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffff2 00000023 0000003c 00000011 0000000c 00000023 00000038 ffffff81 0000000c 00000013 00000004 00000001 0000000e ffffff93 00000007 ffffff84 fffffff2 00000013 00000006 00000000 00000000 ffffff93 00000005 ffffff80 0000000c 00000013 ffffff85 00000007 00000000 ffffff97 00000030 ffffffc0 ffffffff ffffffe7 ffffff80 ffffff80 ffffffc7 ffffff93 00000007 ffffff84 fffffff2 00000013 ffffff85 00000007 00000000 ffffffef ffffffe0 ffffff9f ffffffff ffffff93 00000007 00000005 00000000 00000013 ffffff85 00000007 00000000 ffffff83 00000030 ffffff81 0000000d 00000003 00000034 00000001 0000000d 00000013 00000001 00000001 0000000e 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffe 00000023 0000003c ffffff81 00000000 00000013 00000004 00000001 00000002 00000023 00000026 00000004 fffffffe ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffffbb 00000007 fffffff7 00000000 00000023 00000026 fffffff4 fffffffe ffffff93 00000007 00000000 00000000 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000001 00000013 00000001 00000001 00000002 00000067 ffffff80 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 -404000 80 +80 404000 00000025 00000078 00000009 00000000 00000000 00000000 00000000 00000000 00000020 00000020 00000020 00000000 00000000 00000000 00000000 00000000 00000025 00000073 00000020 00000000 00000000 00000000 00000000 00000000 0000000a 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000028 0000006e 00000075 0000006c 0000006c 00000029 00000000 00000000 fffffff8 0000000e 00000040 00000000 ffffffe8 00000009 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 ffffffe8 00000009 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 00000028 0000000b 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000004c 0000000f 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 ffffffd0 0000000f 00000040 00000000 -P4000 -S405270 \ No newline at end of file +4000 +405270 diff --git a/old_section.txt b/old_section.txt new file mode 100644 index 0000000..21571c8 --- /dev/null +++ b/old_section.txt @@ -0,0 +1,17 @@ +fe010113 +00813c23 +02010413 +fe042623 +00100793 +fef42423 +fec42783 +00078713 +fe842783 +00f707bb +fef42623 +00000013 +01813403 +02010113 +00008067 +0 +0 \ No newline at end of file From fd982583240fda3f42183a93810e06bd5334aaf1 Mon Sep 17 00:00:00 2001 From: amaury Date: Thu, 2 Mar 2023 15:51:00 +0100 Subject: [PATCH 019/115] nouveau fichier memoire avec swap des octets --- memory.txt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/memory.txt b/memory.txt index d09a7fe..114b58f 100644 --- a/memory.txt +++ b/memory.txt @@ -1,8 +1,8 @@ -1b8 4000 -ffffff97 ffffffd0 0000003f 00000000 ffffffe7 ffffff80 00000000 00000041 00000013 00000005 00000000 00000000 ffffffef 00000000 00000040 00000001 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000000 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000010 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000020 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000030 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000040 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000050 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000060 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000070 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffff80 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffff90 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 fffffff0 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffa0 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffe0 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffb0 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffc0 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffd0 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffe0 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 fffffff0 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000000 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000000 00000002 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000010 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000020 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000030 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000040 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000050 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000060 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000070 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffff80 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffff90 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffa0 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffb0 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffc0 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffd0 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000010 00000002 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000020 00000002 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 -1450 400000 -00000013 00000001 00000001 fffffffd 00000023 00000034 00000011 00000002 00000023 00000030 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc ffffff83 00000037 ffffff84 fffffffd 00000023 00000034 fffffff4 fffffffe ffffff83 00000037 ffffff84 fffffffe ffffffe7 ffffff80 00000007 00000000 00000013 00000005 00000000 00000000 ffffff97 00000040 ffffffc0 ffffffff ffffffe7 ffffff80 ffffff80 ffffffff 00000013 00000000 00000000 00000000 ffffff83 00000030 ffffff81 00000002 00000003 00000034 00000001 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffe 00000023 0000003c 00000011 00000000 00000023 00000038 ffffff81 00000000 00000013 00000004 00000001 00000002 00000023 00000034 ffffffa4 fffffffe 00000023 00000030 ffffffb4 fffffffe ffffffb7 00000007 00000040 00000000 ffffff93 ffffff87 00000007 00000000 ffffff9b ffffff87 00000007 00000000 00000003 00000037 00000004 fffffffe 0000001b 00000007 00000007 00000000 00000013 00000006 00000007 00000000 ffffff93 ffffff85 00000007 00000000 00000003 00000035 ffffff84 fffffffe ffffff97 00000040 ffffffc0 ffffffff ffffffe7 ffffff80 ffffffc0 00000001 ffffff93 00000007 00000005 00000000 00000013 ffffff85 00000007 00000000 ffffff83 00000030 ffffff81 00000001 00000003 00000034 00000001 00000001 00000013 00000001 00000001 00000002 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc 00000023 00000038 ffffffb4 fffffffc 00000023 00000024 00000004 fffffffe 00000023 00000022 00000004 fffffffe 0000006f 00000000 00000040 0000000b ffffff83 00000027 00000044 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000063 ffffff92 00000007 00000002 ffffff83 00000027 00000044 fffffffe 00000003 00000037 00000004 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000063 ffffff98 00000007 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe 00000023 00000026 00000004 fffffffe ffffff83 00000027 00000044 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc6 00000007 00000000 ffffff83 00000027 00000044 fffffffe 00000003 00000037 00000004 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000006 00000000 00000063 0000007a fffffff7 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe ffffff93 00000007 fffffff0 ffffffff 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc6 00000007 00000000 ffffff83 00000027 00000044 fffffffe 00000003 00000037 00000004 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000006 00000000 00000063 fffffffa ffffffe7 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe ffffff93 00000007 00000010 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000022 fffffff4 fffffffe ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 ffffffe3 ffffff84 00000007 fffffff4 ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc 00000023 00000038 ffffffb4 fffffffc 00000023 00000026 00000004 fffffffe 00000023 00000024 00000004 fffffffe ffffff83 00000037 ffffff84 fffffffd 00000063 ffffff86 00000007 00000006 ffffff83 00000037 00000004 fffffffd 00000063 ffffff82 00000007 00000006 0000006f 00000000 ffffffc0 00000004 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 00000004 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000063 ffffff96 00000007 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 00000004 fffffffd 00000033 00000007 fffffff7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff83 00000036 ffffff84 fffffffd ffffffb3 ffffff87 fffffff6 00000000 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 ffffffe3 ffffff88 00000007 fffffffa ffffff83 00000037 ffffff84 fffffffd 0000006f 00000000 ffffff80 00000000 ffffff93 00000007 00000000 00000000 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc 00000023 00000026 00000004 fffffffe 0000006f 00000000 00000000 00000001 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000067 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 ffffffe3 ffffff92 00000007 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 00000011 00000002 00000023 00000030 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc 00000023 00000038 ffffffb4 fffffffc 00000003 00000035 ffffff84 fffffffd ffffffef fffffff0 ffffff9f fffffff9 ffffff93 00000007 00000005 00000000 ffffff9b ffffff87 00000007 00000000 00000023 00000024 fffffff4 fffffffe 00000003 00000035 00000004 fffffffd ffffffef fffffff0 0000005f fffffff8 ffffff93 00000007 00000005 00000000 ffffff9b ffffff87 00000007 00000000 00000023 00000022 fffffff4 fffffffe ffffff83 00000027 ffffff84 fffffffe 00000023 00000026 fffffff4 fffffffe 0000006f 00000000 00000040 00000004 ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffffbb 00000007 fffffff7 00000040 ffffff9b ffffff87 00000007 00000000 00000013 ffffff87 00000007 00000000 ffffff83 00000037 00000004 fffffffd 00000033 ffffff87 ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff83 00000036 ffffff84 fffffffd ffffffb3 ffffff87 fffffff6 00000000 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe 00000013 ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffffbb 00000007 fffffff7 00000000 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000007 00000000 ffffffe3 00000052 fffffff7 fffffffa ffffff83 00000037 ffffff84 fffffffd 00000013 ffffff85 00000007 00000000 ffffff83 00000030 ffffff81 00000002 00000003 00000034 00000001 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffe 00000023 0000003c ffffff81 00000000 00000013 00000004 00000001 00000002 ffffff93 00000007 00000005 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 0000001b ffffff87 00000007 00000000 ffffff93 00000007 00000000 00000006 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000027 ffffffc4 fffffffe 0000001b ffffff87 00000007 00000000 ffffff93 00000007 ffffffa0 00000007 00000063 ffffffca ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000007 fffffffe ffffff9b ffffff87 00000007 00000000 0000006f 00000000 ffffff80 00000000 ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000001 00000013 00000001 00000001 00000002 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffe 00000023 0000003c ffffff81 00000000 00000013 00000004 00000001 00000002 ffffff93 00000007 00000005 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 0000001b ffffff87 00000007 00000000 ffffff93 00000007 ffffffa0 00000005 00000063 ffffffc2 ffffffe7 00000002 ffffff83 00000027 ffffffc4 fffffffe 0000001b ffffff87 00000007 00000000 ffffff93 00000007 00000000 00000004 00000063 ffffffda ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000007 00000002 ffffff9b ffffff87 00000007 00000000 0000006f 00000000 ffffff80 00000000 ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000001 00000013 00000001 00000001 00000002 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc 00000023 00000026 00000004 fffffffe 00000023 00000024 00000004 fffffffe 00000023 00000022 00000004 fffffffe 00000023 00000020 00000004 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000007 00000000 ffffff93 00000007 ffffffd0 00000002 00000063 00000010 fffffff7 0000000c ffffff93 00000007 00000010 00000000 00000023 00000020 fffffff4 fffffffe ffffff93 00000007 00000010 00000000 00000023 00000026 fffffff4 fffffffe 0000006f 00000000 ffffffc0 0000000a ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000063 ffffff8e 00000007 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000007 00000000 ffffff93 00000007 fffffff0 00000002 00000063 fffffff0 ffffffe7 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000007 00000000 ffffff93 00000007 ffffff90 00000003 00000063 fffffff8 ffffffe7 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 00000040 00000005 ffffff83 00000027 00000044 fffffffe 00000013 ffffff87 00000007 00000000 ffffff93 00000007 00000007 00000000 ffffff9b ffffff97 00000027 00000000 ffffffbb ffffff87 ffffffe7 00000000 ffffff9b ffffff97 00000017 00000000 00000023 00000022 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 ffffff9b ffffff87 00000007 00000000 ffffff9b ffffff87 00000007 fffffffd ffffff9b ffffff87 00000007 00000000 00000003 00000027 00000044 fffffffe ffffffbb 00000007 fffffff7 00000000 00000023 00000022 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 ffffffe3 ffffff88 00000007 fffffff4 ffffff83 00000027 00000004 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffff8a 00000007 00000000 ffffff83 00000027 00000044 fffffffe ffffffbb 00000007 fffffff0 00000040 ffffff9b ffffff87 00000007 00000000 0000006f 00000000 ffffff80 00000000 ffffff83 00000027 00000044 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffb 00000023 00000034 ffffff81 00000004 00000013 00000004 00000001 00000005 00000023 00000034 ffffffa4 fffffffc 00000023 00000030 ffffffb4 fffffffc ffffff93 00000007 00000006 00000000 00000023 0000002e fffffff4 fffffffa ffffff83 00000037 ffffff84 fffffffc 00000023 0000003c fffffff4 fffffffc ffffff83 00000037 00000004 fffffffc 00000023 00000038 fffffff4 fffffffc 00000023 00000026 00000004 fffffffe 00000023 00000024 00000004 fffffffe 00000023 00000022 00000004 fffffffe 0000006f 00000000 00000000 00000008 ffffff83 00000027 00000044 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc6 00000007 00000000 ffffff83 00000027 00000044 fffffffe 00000003 00000037 00000004 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000006 00000000 00000063 0000007a fffffff7 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe ffffff93 00000007 fffffff0 ffffffff 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc6 00000007 00000000 ffffff83 00000027 00000044 fffffffe 00000003 00000037 00000004 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000006 00000000 00000063 fffffffa ffffffe7 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe ffffff93 00000007 00000010 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000022 fffffff4 fffffffe ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffff9a 00000007 00000000 00000003 00000027 00000044 fffffffe ffffff83 00000027 ffffffc4 fffffffb ffffff9b ffffff87 00000007 00000000 ffffffe3 00000066 fffffff7 fffffff6 ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000004 00000013 00000001 00000001 00000005 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffb 00000023 00000034 ffffff81 00000004 00000013 00000004 00000001 00000005 00000023 00000034 ffffffa4 fffffffc 00000023 00000030 ffffffb4 fffffffc ffffff93 00000007 00000006 00000000 00000023 0000002e fffffff4 fffffffa ffffff83 00000037 ffffff84 fffffffc 00000023 00000030 fffffff4 fffffffe ffffff83 00000037 00000004 fffffffc 00000023 0000003c fffffff4 fffffffc 00000023 00000026 00000004 fffffffe ffffff83 00000037 00000004 fffffffe 00000063 ffffff8a 00000007 00000004 ffffff83 00000037 ffffff84 fffffffd 00000063 ffffff86 00000007 00000004 0000006f 00000000 00000000 00000003 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd 00000033 00000007 fffffff7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff83 00000036 00000004 fffffffe ffffffb3 ffffff87 fffffff6 00000000 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe 00000003 00000027 ffffffc4 fffffffe ffffff83 00000027 ffffffc4 fffffffb ffffff9b ffffff87 00000007 00000000 ffffffe3 00000064 fffffff7 fffffffc ffffff83 00000037 00000004 fffffffe 0000006f 00000000 ffffff80 00000000 ffffff93 00000007 00000000 00000000 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000004 00000013 00000001 00000001 00000005 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc ffffff93 ffffff87 00000005 00000000 00000013 00000007 00000006 00000000 00000023 0000002a fffffff4 fffffffc ffffff93 00000007 00000007 00000000 00000023 00000028 fffffff4 fffffffc ffffff83 00000037 ffffff84 fffffffd 00000023 00000030 fffffff4 fffffffe 00000023 00000026 00000004 fffffffe 0000006f 00000000 ffffff80 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 00000004 fffffffe ffffffb3 00000007 fffffff7 00000000 00000003 00000027 00000044 fffffffd 00000013 00000077 fffffff7 0000000f 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe 00000003 00000027 ffffffc4 fffffffe ffffff83 00000027 00000004 fffffffd ffffff9b ffffff87 00000007 00000000 ffffffe3 00000068 fffffff7 fffffffc ffffff83 00000037 00000004 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 00000011 00000002 00000023 00000030 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc ffffff93 ffffff87 00000005 00000000 00000023 0000002a fffffff4 fffffffc 00000023 00000026 00000004 fffffffe 0000006f 00000000 ffffffc0 00000014 ffffff83 00000027 ffffffc4 fffffffe ffffff93 fffffff7 fffffff7 00000000 ffffff9b ffffff87 00000007 00000000 00000063 ffffff92 00000007 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff93 ffffff85 00000007 00000000 ffffffb7 00000047 00000040 00000000 00000013 ffffff85 00000007 00000000 ffffffef 00000000 ffffffd0 00000039 0000006f 00000000 00000000 00000002 ffffff83 00000027 ffffffc4 fffffffe ffffff93 fffffff7 00000077 00000000 ffffff9b ffffff87 00000007 00000000 00000063 ffffff98 00000007 00000000 ffffffb7 00000047 00000040 00000000 00000013 ffffff85 ffffff87 00000000 ffffffef 00000000 ffffffd0 00000037 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 ffffff9b ffffffd7 00000047 00000000 ffffffa3 00000005 fffffff4 fffffffe ffffff83 00000047 ffffffb4 fffffffe 00000013 fffffff7 fffffff7 0000000f ffffff93 00000007 ffffff90 00000000 00000063 ffffffea ffffffe7 00000000 ffffff83 00000047 ffffffb4 fffffffe ffffff9b ffffff87 00000007 00000003 ffffffa3 00000005 fffffff4 fffffffe 0000006f 00000000 00000000 00000001 ffffff83 00000047 ffffffb4 fffffffe ffffff9b ffffff87 00000077 00000005 ffffffa3 00000005 fffffff4 fffffffe ffffff83 00000047 ffffffb4 fffffffe 00000023 00000000 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 ffffff93 fffffff7 fffffff7 00000000 00000023 00000005 fffffff4 fffffffe ffffff83 00000047 ffffffa4 fffffffe 00000013 fffffff7 fffffff7 0000000f ffffff93 00000007 ffffff90 00000000 00000063 ffffffea ffffffe7 00000000 ffffff83 00000047 ffffffa4 fffffffe ffffff9b ffffff87 00000007 00000003 00000023 00000005 fffffff4 fffffffe 0000006f 00000000 00000000 00000001 ffffff83 00000047 ffffffa4 fffffffe ffffff9b ffffff87 00000077 00000005 00000023 00000005 fffffff4 fffffffe ffffff83 00000047 ffffffa4 fffffffe ffffffa3 00000000 fffffff4 fffffffe 00000023 00000001 00000004 fffffffe ffffff93 00000007 00000004 fffffffe ffffff93 ffffff85 00000007 00000000 ffffffb7 00000047 00000040 00000000 00000013 ffffff85 00000007 00000001 ffffffef 00000000 ffffffd0 0000002c ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 ffffff9b ffffff87 00000007 00000000 ffffff9b ffffff87 00000007 00000000 ffffff93 fffffff7 fffffff7 00000000 ffffff9b ffffff87 00000007 00000000 00000063 ffffff8e 00000007 00000000 ffffff83 00000027 00000044 fffffffd ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffff98 ffffffe7 00000000 ffffffb7 00000047 00000040 00000000 00000013 ffffff85 ffffff87 00000001 ffffffef 00000000 ffffffd0 00000028 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff87 00000007 00000000 ffffff83 00000027 00000044 fffffffd 0000001b 00000007 00000007 00000000 ffffff9b ffffff87 00000007 00000000 ffffffe3 00000042 fffffff7 ffffffea 00000013 00000000 00000000 00000000 00000013 00000000 00000000 00000000 ffffff83 00000030 ffffff81 00000002 00000003 00000034 00000001 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffff5 00000023 00000034 ffffff81 0000000a 00000013 00000004 00000001 0000000b 00000023 00000034 ffffffa4 fffffff6 ffffff93 ffffff87 00000005 00000000 00000023 0000003c ffffffc4 fffffff4 00000023 00000038 ffffffd4 fffffff4 00000023 00000022 fffffff4 fffffff6 ffffff83 00000037 ffffff84 fffffff6 00000063 ffffff8c 00000007 00000000 ffffff83 00000037 ffffff84 fffffff5 00000063 ffffff88 00000007 00000000 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 00000007 00000000 00000063 ffffffd6 00000007 00000000 ffffff93 00000007 fffffff0 ffffffff 0000006f 00000000 ffffff90 00000017 00000023 00000024 00000004 fffffffe 00000023 00000026 00000004 fffffffe 0000006f 00000000 ffffffd0 00000014 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 ffffff9b ffffff87 00000007 00000000 00000013 ffffff87 00000007 00000000 ffffff93 00000007 00000050 00000002 ffffffe3 0000001e fffffff7 0000000c ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 ffffff9b ffffff87 00000007 00000000 ffffff93 ffffff86 00000007 00000000 00000013 00000007 00000050 00000002 00000063 ffffff8c ffffffe6 00000004 ffffff93 ffffff86 00000007 00000000 00000013 00000007 00000050 00000002 ffffffe3 ffffffce ffffffe6 00000000 ffffff93 ffffff86 00000007 00000000 00000013 00000007 ffffff80 00000007 ffffffe3 00000048 ffffffd7 00000000 ffffff93 ffffff86 00000007 00000000 00000013 00000007 00000030 00000006 ffffffe3 ffffffc2 ffffffe6 00000000 ffffff9b ffffff86 ffffffd7 fffffff9 0000001b ffffff87 00000006 00000000 ffffff93 00000007 00000050 00000001 00000063 ffffffea ffffffe7 0000007e ffffff93 ffffff97 00000006 00000002 ffffff93 ffffffd7 00000007 00000002 00000013 ffffff97 00000027 00000000 ffffffb7 00000047 00000040 00000000 ffffff93 ffffff87 ffffff87 00000002 ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffa7 00000007 00000000 00000067 ffffff80 00000007 00000000 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000050 00000002 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffffd0 00000001 ffffff83 00000037 00000004 fffffff5 00000013 ffffff87 ffffff87 00000000 00000023 00000038 ffffffe4 fffffff4 ffffff83 ffffffa7 00000007 00000000 00000023 00000022 fffffff4 fffffffe 00000023 00000020 00000004 fffffffe ffffff83 00000027 00000044 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffde 00000007 00000002 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 ffffffd0 00000002 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe 00000013 ffffff87 00000007 00000000 ffffff93 00000007 ffffffa0 00000000 ffffffbb 00000067 fffffff7 00000002 00000023 0000002c fffffff4 fffffff8 ffffff83 00000027 ffffff84 fffffff9 ffffff9b ffffffd7 fffffff7 00000041 00000003 00000027 ffffff84 fffffff9 00000033 ffffffc7 ffffffe7 00000000 ffffffbb 00000007 fffffff7 00000040 00000023 0000002c fffffff4 fffffff8 ffffff83 00000027 ffffff84 fffffff9 00000013 fffffff7 fffffff7 0000000f ffffff83 00000027 00000004 fffffffe ffffff9b ffffff86 00000017 00000000 00000023 00000020 ffffffd4 fffffffe 0000001b 00000007 00000007 00000003 00000013 00000077 fffffff7 0000000f ffffff93 ffffff87 00000007 ffffffff ffffffb3 ffffff87 ffffff87 00000000 00000023 ffffff8c ffffffe7 fffffff8 ffffff83 00000027 00000044 fffffffe 00000013 ffffff87 00000007 00000000 ffffff93 00000007 ffffffa0 00000000 ffffffbb 00000047 fffffff7 00000002 00000023 00000022 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe ffffff9b ffffff87 00000007 00000000 ffffffe3 ffffff98 00000007 fffffff8 ffffff83 00000027 00000004 fffffffe ffffff9b ffffff87 fffffff7 ffffffff 00000023 00000020 fffffff4 fffffffe 0000006f 00000000 00000040 00000005 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000003 00000027 00000004 fffffffe 00000013 00000007 00000007 ffffffff 00000033 00000007 ffffff87 00000000 00000003 00000047 ffffff87 fffffff9 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000004 fffffffe ffffff9b ffffff87 fffffff7 ffffffff 00000023 00000020 fffffff4 fffffffe ffffff83 00000027 00000004 fffffffe ffffff9b ffffff87 00000007 00000000 ffffffe3 ffffffd4 00000007 fffffffa 0000006f 00000000 ffffffc0 0000006d ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 0000001b ffffff87 00000007 00000000 ffffff93 00000006 00000007 00000000 ffffff93 00000007 00000040 00000006 00000063 ffffff88 fffffff6 00000000 ffffff93 00000007 ffffff80 00000007 00000063 0000000c fffffff7 00000012 0000006f 00000000 ffffffc0 0000002d ffffff83 00000037 00000004 fffffff5 00000013 ffffff87 ffffff87 00000000 00000023 00000038 ffffffe4 fffffff4 ffffff83 ffffffb7 00000007 00000000 00000023 0000003c fffffff4 fffffffc 00000023 0000002a 00000004 fffffffc ffffff83 00000037 ffffff84 fffffffd 00000063 ffffffde 00000007 00000002 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 ffffffd0 00000002 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffff93 00000007 ffffffa0 00000000 ffffffb3 00000067 fffffff7 00000002 00000023 0000002e fffffff4 fffffff8 ffffff83 00000027 ffffffc4 fffffff9 ffffff9b ffffffd7 fffffff7 00000041 00000003 00000027 ffffffc4 fffffff9 00000033 ffffffc7 ffffffe7 00000000 ffffffbb 00000007 fffffff7 00000040 00000023 0000002e fffffff4 fffffff8 ffffff83 00000027 ffffffc4 fffffff9 00000013 fffffff7 fffffff7 0000000f ffffff83 00000027 00000044 fffffffd ffffff9b ffffff86 00000017 00000000 00000023 0000002a ffffffd4 fffffffc 0000001b 00000007 00000007 00000003 00000013 00000077 fffffff7 0000000f ffffff93 ffffff87 00000007 ffffffff ffffffb3 ffffff87 ffffff87 00000000 00000023 ffffff80 ffffffe7 fffffff8 00000003 00000037 ffffff84 fffffffd ffffff93 00000007 ffffffa0 00000000 ffffffb3 00000047 fffffff7 00000002 00000023 0000003c fffffff4 fffffffc ffffff83 00000037 ffffff84 fffffffd ffffffe3 ffffff9e 00000007 fffffff8 ffffff83 00000027 00000044 fffffffd ffffff9b ffffff87 fffffff7 ffffffff 00000023 0000002a fffffff4 fffffffc 0000006f 00000000 00000040 00000005 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000003 00000027 00000044 fffffffd 00000013 00000007 00000007 ffffffff 00000033 00000007 ffffff87 00000000 00000003 00000047 00000007 fffffff8 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffd ffffff9b ffffff87 fffffff7 ffffffff 00000023 0000002a fffffff4 fffffffc ffffff83 00000027 00000044 fffffffd ffffff9b ffffff87 00000007 00000000 ffffffe3 ffffffd4 00000007 fffffffa 0000006f 00000000 ffffff80 00000026 ffffff83 00000037 00000004 fffffff5 00000013 ffffff87 ffffff87 00000000 00000023 00000038 ffffffe4 fffffff4 ffffff83 ffffffb7 00000007 00000000 00000023 00000034 fffffff4 fffffffa 00000023 00000026 00000004 fffffffc 00000023 00000028 00000004 fffffffc 0000006f 00000000 00000040 00000013 ffffff83 00000027 00000004 fffffffd ffffff9b ffffff97 00000027 00000000 ffffff9b ffffff87 00000007 00000000 00000013 ffffff87 00000007 00000000 ffffff83 00000037 ffffff84 fffffffa ffffffb3 ffffff97 ffffffe7 00000000 00000023 00000030 fffffff4 fffffffa ffffff83 00000037 00000004 fffffffa ffffff93 ffffffd7 ffffffc7 00000003 00000023 00000030 fffffff4 fffffffa ffffff83 00000037 00000004 fffffffa ffffff93 fffffff7 fffffff7 00000000 00000023 00000030 fffffff4 fffffffa ffffff83 00000037 00000004 fffffffa 00000063 ffffff96 00000007 00000004 ffffff83 00000027 ffffffc4 fffffffc ffffff9b ffffff87 00000007 00000000 00000063 ffffff80 00000007 0000000e ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000000 00000003 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 00000040 0000000a ffffff93 00000007 00000010 00000000 00000023 00000026 fffffff4 fffffffc 00000003 00000037 00000004 fffffffa ffffff93 00000007 ffffff90 00000000 00000063 ffffffe6 ffffffe7 00000004 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000037 00000004 fffffffa 00000013 fffffff7 fffffff7 0000000f ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 0000001b 00000007 00000007 00000003 00000013 00000077 fffffff7 0000000f 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffff80 00000004 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000037 00000004 fffffffa 00000013 fffffff7 fffffff7 0000000f ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 0000001b 00000007 00000077 00000005 00000013 00000077 fffffff7 0000000f 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000004 fffffffd ffffff9b ffffff87 00000017 00000000 00000023 00000028 fffffff4 fffffffc ffffff83 00000027 00000004 fffffffd 0000001b ffffff87 00000007 00000000 ffffff93 00000007 fffffff0 00000000 ffffffe3 fffffff2 ffffffe7 ffffffec ffffff83 00000027 ffffffc4 fffffffc ffffff9b ffffff87 00000007 00000000 00000063 ffffff9c 00000007 0000000e ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000000 00000003 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffffc0 0000000b ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000050 00000002 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 ffffffc0 00000006 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 00000033 00000007 fffffff7 00000000 ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffff80 00000000 00000013 00000000 00000000 00000000 0000006f 00000000 ffffffc0 00000030 ffffff83 00000037 00000004 fffffff5 00000013 ffffff87 ffffff87 00000000 00000023 00000038 ffffffe4 fffffff4 ffffff83 ffffffa7 00000007 00000000 00000023 0000002a fffffff4 fffffff8 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffde ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000003 00000027 00000044 fffffff9 00000013 00000077 fffffff7 0000000f 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffff80 0000002b ffffff83 00000037 00000004 fffffff5 00000013 ffffff87 ffffff87 00000000 00000023 00000038 ffffffe4 fffffff4 ffffff83 ffffffb7 00000007 00000000 00000023 00000030 fffffff4 fffffffc ffffff83 00000037 00000004 fffffffc 00000063 ffffff9e 00000007 00000004 ffffffb7 00000047 00000040 00000000 ffffff93 ffffff87 00000007 00000002 00000023 00000030 fffffff4 fffffffc 0000006f 00000000 ffffffc0 00000004 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffde ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000003 00000037 00000004 fffffffc 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000037 00000004 fffffffc ffffff93 ffffff87 00000017 00000000 00000023 00000030 fffffff4 fffffffc ffffff83 00000037 00000004 fffffffc ffffff83 ffffffc7 00000007 00000000 ffffffe3 ffffff98 00000007 fffffffa 0000006f 00000000 00000040 00000023 ffffff83 00000037 00000004 fffffff5 00000013 ffffff87 ffffff87 00000000 00000023 00000038 ffffffe4 fffffff4 ffffff83 ffffffa7 00000007 00000000 00000023 0000002a fffffff4 fffffffa 00000023 0000002c 00000004 fffffffa 00000023 0000002e 00000004 fffffffa 0000006f 00000000 ffffff80 00000013 ffffff83 00000027 ffffffc4 fffffffb ffffff9b ffffff97 00000027 00000000 ffffff9b ffffff87 00000007 00000000 00000003 00000027 00000044 fffffffb ffffffbb 00000017 fffffff7 00000000 00000023 00000028 fffffff4 fffffffa ffffff83 00000027 00000004 fffffffb ffffff9b ffffffd7 ffffffc7 00000001 00000023 00000028 fffffff4 fffffffa ffffff83 00000027 00000004 fffffffb ffffff93 fffffff7 fffffff7 00000000 00000023 00000028 fffffff4 fffffffa ffffff83 00000027 00000004 fffffffb ffffff9b ffffff87 00000007 00000000 00000063 ffffff96 00000007 00000004 ffffff83 00000027 ffffff84 fffffffb ffffff9b ffffff87 00000007 00000000 00000063 ffffff82 00000007 0000000e ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000000 00000003 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffff80 0000000a ffffff93 00000007 00000010 00000000 00000023 0000002c fffffff4 fffffffa ffffff83 00000027 00000004 fffffffb 0000001b ffffff87 00000007 00000000 ffffff93 00000007 ffffff90 00000000 00000063 ffffffe6 ffffffe7 00000004 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000027 00000004 fffffffb 00000013 fffffff7 fffffff7 0000000f ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 0000001b 00000007 00000007 00000003 00000013 00000077 fffffff7 0000000f 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffff80 00000004 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000027 00000004 fffffffb 00000013 fffffff7 fffffff7 0000000f ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 0000001b 00000007 00000077 00000005 00000013 00000077 fffffff7 0000000f 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffb ffffff9b ffffff87 00000017 00000000 00000023 0000002e fffffff4 fffffffa ffffff83 00000027 ffffffc4 fffffffb 0000001b ffffff87 00000007 00000000 ffffff93 00000007 00000070 00000000 ffffffe3 fffffff0 ffffffe7 ffffffec ffffff83 00000027 ffffff84 fffffffb ffffff9b ffffff87 00000007 00000000 00000063 ffffff90 00000007 0000000c ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000000 00000003 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 00000040 00000008 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000050 00000002 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 00000033 00000007 fffffff7 00000000 ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 00000000 00000005 00000013 00000000 00000000 00000000 0000006f 00000000 ffffff80 00000004 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 00000033 00000007 fffffff7 00000000 ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000063 ffffff94 00000007 ffffffea ffffff83 00000037 ffffff84 fffffff6 00000023 ffffff80 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 0000000a 00000013 00000001 00000001 0000000b 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffff9 00000023 0000003c 00000011 00000002 00000023 00000038 ffffff81 00000002 00000013 00000004 00000001 00000004 00000023 0000003c ffffffa4 fffffffc 00000023 00000034 ffffffc4 fffffffc 00000023 00000034 ffffffd4 00000000 00000023 00000038 ffffffe4 00000000 00000023 0000003c fffffff4 00000000 00000023 00000030 00000004 00000003 00000023 00000034 00000014 00000003 ffffff93 ffffff87 00000005 00000000 00000023 0000002a fffffff4 fffffffc ffffff93 00000007 00000004 00000003 00000023 00000030 fffffff4 fffffffc ffffff83 00000037 00000004 fffffffc ffffff93 ffffff87 ffffff87 fffffffd 00000023 00000034 fffffff4 fffffffe 00000003 00000037 ffffff84 fffffffe ffffff83 00000027 00000044 fffffffd ffffff93 00000006 00000007 00000000 00000003 00000036 ffffff84 fffffffc ffffff93 ffffff85 00000007 00000000 00000003 00000035 ffffff84 fffffffd ffffffef fffffff0 ffffff8f ffffffdd ffffff93 00000007 00000005 00000000 00000023 0000002a fffffff4 fffffffc ffffff83 00000027 00000044 fffffffd 00000013 ffffff85 00000007 00000000 ffffff83 00000030 ffffff81 00000003 00000003 00000034 00000001 00000003 00000013 00000001 00000001 00000007 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 ffffffec 00000023 0000003c 00000011 0000000e 00000023 00000038 ffffff81 0000000e 00000013 00000004 00000001 00000010 00000023 00000034 ffffffa4 fffffff0 00000023 00000034 ffffffb4 00000000 00000023 00000038 ffffffc4 00000000 00000023 0000003c ffffffd4 00000000 00000023 00000030 ffffffe4 00000002 00000023 00000034 fffffff4 00000002 00000023 00000038 00000004 00000003 00000023 0000003c 00000014 00000003 ffffff93 00000007 00000004 00000004 00000023 00000030 fffffff4 fffffff0 ffffff83 00000037 00000004 fffffff0 ffffff93 ffffff87 ffffff87 fffffffc 00000023 00000030 fffffff4 fffffffe 00000003 00000037 00000004 fffffffe ffffff93 00000007 ffffff84 fffffff1 ffffff93 00000006 00000007 00000000 00000003 00000036 ffffff84 fffffff0 ffffff93 00000005 ffffff80 0000000c 00000013 ffffff85 00000007 00000000 ffffffef fffffff0 ffffff8f ffffffd5 ffffff93 00000007 00000005 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff87 00000007 00000000 ffffff93 00000007 00000070 0000000c 00000063 fffffff6 ffffffe7 00000000 ffffff93 00000007 00000070 0000000c 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 00000050 fffffff0 00000002 00000003 00000027 ffffffc4 fffffffe ffffff93 00000007 ffffff84 fffffff1 00000013 00000006 00000010 00000000 ffffff93 00000005 00000007 00000000 00000013 ffffff85 00000007 00000000 ffffff97 00000030 ffffffc0 ffffffff ffffffe7 ffffff80 00000000 ffffffcc 00000013 00000000 00000000 00000000 ffffff83 00000030 ffffff81 0000000f 00000003 00000034 00000001 0000000f 00000013 00000001 00000001 00000014 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffff2 00000023 0000003c 00000011 0000000c 00000023 00000038 ffffff81 0000000c 00000013 00000004 00000001 0000000e ffffff93 00000007 ffffff84 fffffff2 00000013 00000006 00000000 00000000 ffffff93 00000005 ffffff80 0000000c 00000013 ffffff85 00000007 00000000 ffffff97 00000030 ffffffc0 ffffffff ffffffe7 ffffff80 ffffff80 ffffffc7 ffffff93 00000007 ffffff84 fffffff2 00000013 ffffff85 00000007 00000000 ffffffef ffffffe0 ffffff9f ffffffff ffffff93 00000007 00000005 00000000 00000013 ffffff85 00000007 00000000 ffffff83 00000030 ffffff81 0000000d 00000003 00000034 00000001 0000000d 00000013 00000001 00000001 0000000e 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffe 00000023 0000003c ffffff81 00000000 00000013 00000004 00000001 00000002 00000023 00000026 00000004 fffffffe ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffffbb 00000007 fffffff7 00000000 00000023 00000026 fffffff4 fffffffe ffffff93 00000007 00000000 00000000 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000001 00000013 00000001 00000001 00000002 00000067 ffffff80 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 -80 404000 -00000025 00000078 00000009 00000000 00000000 00000000 00000000 00000000 00000020 00000020 00000020 00000000 00000000 00000000 00000000 00000000 00000025 00000073 00000020 00000000 00000000 00000000 00000000 00000000 0000000a 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000028 0000006e 00000075 0000006c 0000006c 00000029 00000000 00000000 fffffff8 0000000e 00000040 00000000 ffffffe8 00000009 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 ffffffe8 00000009 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 00000028 0000000b 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000004c 0000000f 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 ffffffd0 0000000f 00000040 00000000 +4000 1b8 +00 3f d0 97 41 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +400000 1450 +fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 fe 04 26 23 00 10 07 93 fe f4 24 23 fe c4 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb fe f4 26 23 00 00 07 93 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +404000 80 +00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 4000 -405270 +405270 \ No newline at end of file From 6072ba97d60da524c99d905db201d50f6df8550a Mon Sep 17 00:00:00 2001 From: Baptiste Date: Fri, 3 Mar 2023 12:21:37 +0100 Subject: [PATCH 020/115] update memory --- memory.txt | 6 +++--- src/simulator/mem_cmp.rs | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/memory.txt b/memory.txt index d09a7fe..6eeebc3 100644 --- a/memory.txt +++ b/memory.txt @@ -1,8 +1,8 @@ -1b8 4000 +4000 1b8 ffffff97 ffffffd0 0000003f 00000000 ffffffe7 ffffff80 00000000 00000041 00000013 00000005 00000000 00000000 ffffffef 00000000 00000040 00000001 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000000 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000010 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000020 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000030 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000040 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000050 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000060 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000070 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffff80 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffff90 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 fffffff0 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffa0 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffe0 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffb0 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffc0 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffd0 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffe0 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 fffffff0 00000000 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000000 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000000 00000002 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000010 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000020 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000030 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000040 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000050 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000060 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000070 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffff80 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffff90 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffa0 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffb0 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffc0 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 ffffffd0 00000001 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000010 00000002 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 ffffff93 00000008 00000020 00000002 00000073 00000000 00000000 00000000 00000067 ffffff80 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 -1450 400000 +400000 1450 00000013 00000001 00000001 fffffffd 00000023 00000034 00000011 00000002 00000023 00000030 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc ffffff83 00000037 ffffff84 fffffffd 00000023 00000034 fffffff4 fffffffe ffffff83 00000037 ffffff84 fffffffe ffffffe7 ffffff80 00000007 00000000 00000013 00000005 00000000 00000000 ffffff97 00000040 ffffffc0 ffffffff ffffffe7 ffffff80 ffffff80 ffffffff 00000013 00000000 00000000 00000000 ffffff83 00000030 ffffff81 00000002 00000003 00000034 00000001 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffe 00000023 0000003c 00000011 00000000 00000023 00000038 ffffff81 00000000 00000013 00000004 00000001 00000002 00000023 00000034 ffffffa4 fffffffe 00000023 00000030 ffffffb4 fffffffe ffffffb7 00000007 00000040 00000000 ffffff93 ffffff87 00000007 00000000 ffffff9b ffffff87 00000007 00000000 00000003 00000037 00000004 fffffffe 0000001b 00000007 00000007 00000000 00000013 00000006 00000007 00000000 ffffff93 ffffff85 00000007 00000000 00000003 00000035 ffffff84 fffffffe ffffff97 00000040 ffffffc0 ffffffff ffffffe7 ffffff80 ffffffc0 00000001 ffffff93 00000007 00000005 00000000 00000013 ffffff85 00000007 00000000 ffffff83 00000030 ffffff81 00000001 00000003 00000034 00000001 00000001 00000013 00000001 00000001 00000002 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc 00000023 00000038 ffffffb4 fffffffc 00000023 00000024 00000004 fffffffe 00000023 00000022 00000004 fffffffe 0000006f 00000000 00000040 0000000b ffffff83 00000027 00000044 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000063 ffffff92 00000007 00000002 ffffff83 00000027 00000044 fffffffe 00000003 00000037 00000004 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000063 ffffff98 00000007 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe 00000023 00000026 00000004 fffffffe ffffff83 00000027 00000044 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc6 00000007 00000000 ffffff83 00000027 00000044 fffffffe 00000003 00000037 00000004 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000006 00000000 00000063 0000007a fffffff7 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe ffffff93 00000007 fffffff0 ffffffff 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc6 00000007 00000000 ffffff83 00000027 00000044 fffffffe 00000003 00000037 00000004 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000006 00000000 00000063 fffffffa ffffffe7 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe ffffff93 00000007 00000010 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000022 fffffff4 fffffffe ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 ffffffe3 ffffff84 00000007 fffffff4 ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc 00000023 00000038 ffffffb4 fffffffc 00000023 00000026 00000004 fffffffe 00000023 00000024 00000004 fffffffe ffffff83 00000037 ffffff84 fffffffd 00000063 ffffff86 00000007 00000006 ffffff83 00000037 00000004 fffffffd 00000063 ffffff82 00000007 00000006 0000006f 00000000 ffffffc0 00000004 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 00000004 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000063 ffffff96 00000007 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 00000004 fffffffd 00000033 00000007 fffffff7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff83 00000036 ffffff84 fffffffd ffffffb3 ffffff87 fffffff6 00000000 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 ffffffe3 ffffff88 00000007 fffffffa ffffff83 00000037 ffffff84 fffffffd 0000006f 00000000 ffffff80 00000000 ffffff93 00000007 00000000 00000000 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc 00000023 00000026 00000004 fffffffe 0000006f 00000000 00000000 00000001 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000067 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 ffffffe3 ffffff92 00000007 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 00000011 00000002 00000023 00000030 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc 00000023 00000038 ffffffb4 fffffffc 00000003 00000035 ffffff84 fffffffd ffffffef fffffff0 ffffff9f fffffff9 ffffff93 00000007 00000005 00000000 ffffff9b ffffff87 00000007 00000000 00000023 00000024 fffffff4 fffffffe 00000003 00000035 00000004 fffffffd ffffffef fffffff0 0000005f fffffff8 ffffff93 00000007 00000005 00000000 ffffff9b ffffff87 00000007 00000000 00000023 00000022 fffffff4 fffffffe ffffff83 00000027 ffffff84 fffffffe 00000023 00000026 fffffff4 fffffffe 0000006f 00000000 00000040 00000004 ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffffbb 00000007 fffffff7 00000040 ffffff9b ffffff87 00000007 00000000 00000013 ffffff87 00000007 00000000 ffffff83 00000037 00000004 fffffffd 00000033 ffffff87 ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff83 00000036 ffffff84 fffffffd ffffffb3 ffffff87 fffffff6 00000000 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe 00000013 ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffffbb 00000007 fffffff7 00000000 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000007 00000000 ffffffe3 00000052 fffffff7 fffffffa ffffff83 00000037 ffffff84 fffffffd 00000013 ffffff85 00000007 00000000 ffffff83 00000030 ffffff81 00000002 00000003 00000034 00000001 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffe 00000023 0000003c ffffff81 00000000 00000013 00000004 00000001 00000002 ffffff93 00000007 00000005 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 0000001b ffffff87 00000007 00000000 ffffff93 00000007 00000000 00000006 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000027 ffffffc4 fffffffe 0000001b ffffff87 00000007 00000000 ffffff93 00000007 ffffffa0 00000007 00000063 ffffffca ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000007 fffffffe ffffff9b ffffff87 00000007 00000000 0000006f 00000000 ffffff80 00000000 ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000001 00000013 00000001 00000001 00000002 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffe 00000023 0000003c ffffff81 00000000 00000013 00000004 00000001 00000002 ffffff93 00000007 00000005 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 0000001b ffffff87 00000007 00000000 ffffff93 00000007 ffffffa0 00000005 00000063 ffffffc2 ffffffe7 00000002 ffffff83 00000027 ffffffc4 fffffffe 0000001b ffffff87 00000007 00000000 ffffff93 00000007 00000000 00000004 00000063 ffffffda ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000007 00000002 ffffff9b ffffff87 00000007 00000000 0000006f 00000000 ffffff80 00000000 ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000001 00000013 00000001 00000001 00000002 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc 00000023 00000026 00000004 fffffffe 00000023 00000024 00000004 fffffffe 00000023 00000022 00000004 fffffffe 00000023 00000020 00000004 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000007 00000000 ffffff93 00000007 ffffffd0 00000002 00000063 00000010 fffffff7 0000000c ffffff93 00000007 00000010 00000000 00000023 00000020 fffffff4 fffffffe ffffff93 00000007 00000010 00000000 00000023 00000026 fffffff4 fffffffe 0000006f 00000000 ffffffc0 0000000a ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000063 ffffff8e 00000007 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000007 00000000 ffffff93 00000007 fffffff0 00000002 00000063 fffffff0 ffffffe7 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000007 00000000 ffffff93 00000007 ffffff90 00000003 00000063 fffffff8 ffffffe7 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 00000040 00000005 ffffff83 00000027 00000044 fffffffe 00000013 ffffff87 00000007 00000000 ffffff93 00000007 00000007 00000000 ffffff9b ffffff97 00000027 00000000 ffffffbb ffffff87 ffffffe7 00000000 ffffff9b ffffff97 00000017 00000000 00000023 00000022 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 ffffff9b ffffff87 00000007 00000000 ffffff9b ffffff87 00000007 fffffffd ffffff9b ffffff87 00000007 00000000 00000003 00000027 00000044 fffffffe ffffffbb 00000007 fffffff7 00000000 00000023 00000022 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 ffffffe3 ffffff88 00000007 fffffff4 ffffff83 00000027 00000004 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffff8a 00000007 00000000 ffffff83 00000027 00000044 fffffffe ffffffbb 00000007 fffffff0 00000040 ffffff9b ffffff87 00000007 00000000 0000006f 00000000 ffffff80 00000000 ffffff83 00000027 00000044 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffb 00000023 00000034 ffffff81 00000004 00000013 00000004 00000001 00000005 00000023 00000034 ffffffa4 fffffffc 00000023 00000030 ffffffb4 fffffffc ffffff93 00000007 00000006 00000000 00000023 0000002e fffffff4 fffffffa ffffff83 00000037 ffffff84 fffffffc 00000023 0000003c fffffff4 fffffffc ffffff83 00000037 00000004 fffffffc 00000023 00000038 fffffff4 fffffffc 00000023 00000026 00000004 fffffffe 00000023 00000024 00000004 fffffffe 00000023 00000022 00000004 fffffffe 0000006f 00000000 00000000 00000008 ffffff83 00000027 00000044 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc6 00000007 00000000 ffffff83 00000027 00000044 fffffffe 00000003 00000037 00000004 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000006 00000000 00000063 0000007a fffffff7 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe ffffff93 00000007 fffffff0 ffffffff 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc6 00000007 00000000 ffffff83 00000027 00000044 fffffffe 00000003 00000037 00000004 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000013 ffffff87 00000006 00000000 00000063 fffffffa ffffffe7 00000000 ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe ffffff93 00000007 00000010 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000022 fffffff4 fffffffe ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffff9a 00000007 00000000 00000003 00000027 00000044 fffffffe ffffff83 00000027 ffffffc4 fffffffb ffffff9b ffffff87 00000007 00000000 ffffffe3 00000066 fffffff7 fffffff6 ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000004 00000013 00000001 00000001 00000005 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffb 00000023 00000034 ffffff81 00000004 00000013 00000004 00000001 00000005 00000023 00000034 ffffffa4 fffffffc 00000023 00000030 ffffffb4 fffffffc ffffff93 00000007 00000006 00000000 00000023 0000002e fffffff4 fffffffa ffffff83 00000037 ffffff84 fffffffc 00000023 00000030 fffffff4 fffffffe ffffff83 00000037 00000004 fffffffc 00000023 0000003c fffffff4 fffffffc 00000023 00000026 00000004 fffffffe ffffff83 00000037 00000004 fffffffe 00000063 ffffff8a 00000007 00000004 ffffff83 00000037 ffffff84 fffffffd 00000063 ffffff86 00000007 00000004 0000006f 00000000 00000000 00000003 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd 00000033 00000007 fffffff7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff83 00000036 00000004 fffffffe ffffffb3 ffffff87 fffffff6 00000000 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe 00000003 00000027 ffffffc4 fffffffe ffffff83 00000027 ffffffc4 fffffffb ffffff9b ffffff87 00000007 00000000 ffffffe3 00000064 fffffff7 fffffffc ffffff83 00000037 00000004 fffffffe 0000006f 00000000 ffffff80 00000000 ffffff93 00000007 00000000 00000000 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000004 00000013 00000001 00000001 00000005 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc ffffff93 ffffff87 00000005 00000000 00000013 00000007 00000006 00000000 00000023 0000002a fffffff4 fffffffc ffffff93 00000007 00000007 00000000 00000023 00000028 fffffff4 fffffffc ffffff83 00000037 ffffff84 fffffffd 00000023 00000030 fffffff4 fffffffe 00000023 00000026 00000004 fffffffe 0000006f 00000000 ffffff80 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 00000004 fffffffe ffffffb3 00000007 fffffff7 00000000 00000003 00000027 00000044 fffffffd 00000013 00000077 fffffff7 0000000f 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe 00000003 00000027 ffffffc4 fffffffe ffffff83 00000027 00000004 fffffffd ffffff9b ffffff87 00000007 00000000 ffffffe3 00000068 fffffff7 fffffffc ffffff83 00000037 00000004 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffd 00000023 00000034 00000011 00000002 00000023 00000030 ffffff81 00000002 00000013 00000004 00000001 00000003 00000023 0000003c ffffffa4 fffffffc ffffff93 ffffff87 00000005 00000000 00000023 0000002a fffffff4 fffffffc 00000023 00000026 00000004 fffffffe 0000006f 00000000 ffffffc0 00000014 ffffff83 00000027 ffffffc4 fffffffe ffffff93 fffffff7 fffffff7 00000000 ffffff9b ffffff87 00000007 00000000 00000063 ffffff92 00000007 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff93 ffffff85 00000007 00000000 ffffffb7 00000047 00000040 00000000 00000013 ffffff85 00000007 00000000 ffffffef 00000000 ffffffd0 00000039 0000006f 00000000 00000000 00000002 ffffff83 00000027 ffffffc4 fffffffe ffffff93 fffffff7 00000077 00000000 ffffff9b ffffff87 00000007 00000000 00000063 ffffff98 00000007 00000000 ffffffb7 00000047 00000040 00000000 00000013 ffffff85 ffffff87 00000000 ffffffef 00000000 ffffffd0 00000037 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 ffffff9b ffffffd7 00000047 00000000 ffffffa3 00000005 fffffff4 fffffffe ffffff83 00000047 ffffffb4 fffffffe 00000013 fffffff7 fffffff7 0000000f ffffff93 00000007 ffffff90 00000000 00000063 ffffffea ffffffe7 00000000 ffffff83 00000047 ffffffb4 fffffffe ffffff9b ffffff87 00000007 00000003 ffffffa3 00000005 fffffff4 fffffffe 0000006f 00000000 00000000 00000001 ffffff83 00000047 ffffffb4 fffffffe ffffff9b ffffff87 00000077 00000005 ffffffa3 00000005 fffffff4 fffffffe ffffff83 00000047 ffffffb4 fffffffe 00000023 00000000 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 ffffff93 fffffff7 fffffff7 00000000 00000023 00000005 fffffff4 fffffffe ffffff83 00000047 ffffffa4 fffffffe 00000013 fffffff7 fffffff7 0000000f ffffff93 00000007 ffffff90 00000000 00000063 ffffffea ffffffe7 00000000 ffffff83 00000047 ffffffa4 fffffffe ffffff9b ffffff87 00000007 00000003 00000023 00000005 fffffff4 fffffffe 0000006f 00000000 00000000 00000001 ffffff83 00000047 ffffffa4 fffffffe ffffff9b ffffff87 00000077 00000005 00000023 00000005 fffffff4 fffffffe ffffff83 00000047 ffffffa4 fffffffe ffffffa3 00000000 fffffff4 fffffffe 00000023 00000001 00000004 fffffffe ffffff93 00000007 00000004 fffffffe ffffff93 ffffff85 00000007 00000000 ffffffb7 00000047 00000040 00000000 00000013 ffffff85 00000007 00000001 ffffffef 00000000 ffffffd0 0000002c ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 ffffff9b ffffff87 00000007 00000000 ffffff9b ffffff87 00000007 00000000 ffffff93 fffffff7 fffffff7 00000000 ffffff9b ffffff87 00000007 00000000 00000063 ffffff8e 00000007 00000000 ffffff83 00000027 00000044 fffffffd ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffff98 ffffffe7 00000000 ffffffb7 00000047 00000040 00000000 00000013 ffffff85 ffffff87 00000001 ffffffef 00000000 ffffffd0 00000028 ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff87 00000007 00000000 ffffff83 00000027 00000044 fffffffd 0000001b 00000007 00000007 00000000 ffffff9b ffffff87 00000007 00000000 ffffffe3 00000042 fffffff7 ffffffea 00000013 00000000 00000000 00000000 00000013 00000000 00000000 00000000 ffffff83 00000030 ffffff81 00000002 00000003 00000034 00000001 00000002 00000013 00000001 00000001 00000003 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffff5 00000023 00000034 ffffff81 0000000a 00000013 00000004 00000001 0000000b 00000023 00000034 ffffffa4 fffffff6 ffffff93 ffffff87 00000005 00000000 00000023 0000003c ffffffc4 fffffff4 00000023 00000038 ffffffd4 fffffff4 00000023 00000022 fffffff4 fffffff6 ffffff83 00000037 ffffff84 fffffff6 00000063 ffffff8c 00000007 00000000 ffffff83 00000037 ffffff84 fffffff5 00000063 ffffff88 00000007 00000000 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 00000007 00000000 00000063 ffffffd6 00000007 00000000 ffffff93 00000007 fffffff0 ffffffff 0000006f 00000000 ffffff90 00000017 00000023 00000024 00000004 fffffffe 00000023 00000026 00000004 fffffffe 0000006f 00000000 ffffffd0 00000014 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 ffffff9b ffffff87 00000007 00000000 00000013 ffffff87 00000007 00000000 ffffff93 00000007 00000050 00000002 ffffffe3 0000001e fffffff7 0000000c ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 ffffff9b ffffff87 00000007 00000000 ffffff93 ffffff86 00000007 00000000 00000013 00000007 00000050 00000002 00000063 ffffff8c ffffffe6 00000004 ffffff93 ffffff86 00000007 00000000 00000013 00000007 00000050 00000002 ffffffe3 ffffffce ffffffe6 00000000 ffffff93 ffffff86 00000007 00000000 00000013 00000007 ffffff80 00000007 ffffffe3 00000048 ffffffd7 00000000 ffffff93 ffffff86 00000007 00000000 00000013 00000007 00000030 00000006 ffffffe3 ffffffc2 ffffffe6 00000000 ffffff9b ffffff86 ffffffd7 fffffff9 0000001b ffffff87 00000006 00000000 ffffff93 00000007 00000050 00000001 00000063 ffffffea ffffffe7 0000007e ffffff93 ffffff97 00000006 00000002 ffffff93 ffffffd7 00000007 00000002 00000013 ffffff97 00000027 00000000 ffffffb7 00000047 00000040 00000000 ffffff93 ffffff87 ffffff87 00000002 ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffa7 00000007 00000000 00000067 ffffff80 00000007 00000000 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000050 00000002 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffffd0 00000001 ffffff83 00000037 00000004 fffffff5 00000013 ffffff87 ffffff87 00000000 00000023 00000038 ffffffe4 fffffff4 ffffff83 ffffffa7 00000007 00000000 00000023 00000022 fffffff4 fffffffe 00000023 00000020 00000004 fffffffe ffffff83 00000027 00000044 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffde 00000007 00000002 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 ffffffd0 00000002 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe 00000013 ffffff87 00000007 00000000 ffffff93 00000007 ffffffa0 00000000 ffffffbb 00000067 fffffff7 00000002 00000023 0000002c fffffff4 fffffff8 ffffff83 00000027 ffffff84 fffffff9 ffffff9b ffffffd7 fffffff7 00000041 00000003 00000027 ffffff84 fffffff9 00000033 ffffffc7 ffffffe7 00000000 ffffffbb 00000007 fffffff7 00000040 00000023 0000002c fffffff4 fffffff8 ffffff83 00000027 ffffff84 fffffff9 00000013 fffffff7 fffffff7 0000000f ffffff83 00000027 00000004 fffffffe ffffff9b ffffff86 00000017 00000000 00000023 00000020 ffffffd4 fffffffe 0000001b 00000007 00000007 00000003 00000013 00000077 fffffff7 0000000f ffffff93 ffffff87 00000007 ffffffff ffffffb3 ffffff87 ffffff87 00000000 00000023 ffffff8c ffffffe7 fffffff8 ffffff83 00000027 00000044 fffffffe 00000013 ffffff87 00000007 00000000 ffffff93 00000007 ffffffa0 00000000 ffffffbb 00000047 fffffff7 00000002 00000023 00000022 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffe ffffff9b ffffff87 00000007 00000000 ffffffe3 ffffff98 00000007 fffffff8 ffffff83 00000027 00000004 fffffffe ffffff9b ffffff87 fffffff7 ffffffff 00000023 00000020 fffffff4 fffffffe 0000006f 00000000 00000040 00000005 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000003 00000027 00000004 fffffffe 00000013 00000007 00000007 ffffffff 00000033 00000007 ffffff87 00000000 00000003 00000047 ffffff87 fffffff9 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000004 fffffffe ffffff9b ffffff87 fffffff7 ffffffff 00000023 00000020 fffffff4 fffffffe ffffff83 00000027 00000004 fffffffe ffffff9b ffffff87 00000007 00000000 ffffffe3 ffffffd4 00000007 fffffffa 0000006f 00000000 ffffffc0 0000006d ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 0000001b ffffff87 00000007 00000000 ffffff93 00000006 00000007 00000000 ffffff93 00000007 00000040 00000006 00000063 ffffff88 fffffff6 00000000 ffffff93 00000007 ffffff80 00000007 00000063 0000000c fffffff7 00000012 0000006f 00000000 ffffffc0 0000002d ffffff83 00000037 00000004 fffffff5 00000013 ffffff87 ffffff87 00000000 00000023 00000038 ffffffe4 fffffff4 ffffff83 ffffffb7 00000007 00000000 00000023 0000003c fffffff4 fffffffc 00000023 0000002a 00000004 fffffffc ffffff83 00000037 ffffff84 fffffffd 00000063 ffffffde 00000007 00000002 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 ffffffd0 00000002 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 00000003 00000037 ffffff84 fffffffd ffffff93 00000007 ffffffa0 00000000 ffffffb3 00000067 fffffff7 00000002 00000023 0000002e fffffff4 fffffff8 ffffff83 00000027 ffffffc4 fffffff9 ffffff9b ffffffd7 fffffff7 00000041 00000003 00000027 ffffffc4 fffffff9 00000033 ffffffc7 ffffffe7 00000000 ffffffbb 00000007 fffffff7 00000040 00000023 0000002e fffffff4 fffffff8 ffffff83 00000027 ffffffc4 fffffff9 00000013 fffffff7 fffffff7 0000000f ffffff83 00000027 00000044 fffffffd ffffff9b ffffff86 00000017 00000000 00000023 0000002a ffffffd4 fffffffc 0000001b 00000007 00000007 00000003 00000013 00000077 fffffff7 0000000f ffffff93 ffffff87 00000007 ffffffff ffffffb3 ffffff87 ffffff87 00000000 00000023 ffffff80 ffffffe7 fffffff8 00000003 00000037 ffffff84 fffffffd ffffff93 00000007 ffffffa0 00000000 ffffffb3 00000047 fffffff7 00000002 00000023 0000003c fffffff4 fffffffc ffffff83 00000037 ffffff84 fffffffd ffffffe3 ffffff9e 00000007 fffffff8 ffffff83 00000027 00000044 fffffffd ffffff9b ffffff87 fffffff7 ffffffff 00000023 0000002a fffffff4 fffffffc 0000006f 00000000 00000040 00000005 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000003 00000027 00000044 fffffffd 00000013 00000007 00000007 ffffffff 00000033 00000007 ffffff87 00000000 00000003 00000047 00000007 fffffff8 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000044 fffffffd ffffff9b ffffff87 fffffff7 ffffffff 00000023 0000002a fffffff4 fffffffc ffffff83 00000027 00000044 fffffffd ffffff9b ffffff87 00000007 00000000 ffffffe3 ffffffd4 00000007 fffffffa 0000006f 00000000 ffffff80 00000026 ffffff83 00000037 00000004 fffffff5 00000013 ffffff87 ffffff87 00000000 00000023 00000038 ffffffe4 fffffff4 ffffff83 ffffffb7 00000007 00000000 00000023 00000034 fffffff4 fffffffa 00000023 00000026 00000004 fffffffc 00000023 00000028 00000004 fffffffc 0000006f 00000000 00000040 00000013 ffffff83 00000027 00000004 fffffffd ffffff9b ffffff97 00000027 00000000 ffffff9b ffffff87 00000007 00000000 00000013 ffffff87 00000007 00000000 ffffff83 00000037 ffffff84 fffffffa ffffffb3 ffffff97 ffffffe7 00000000 00000023 00000030 fffffff4 fffffffa ffffff83 00000037 00000004 fffffffa ffffff93 ffffffd7 ffffffc7 00000003 00000023 00000030 fffffff4 fffffffa ffffff83 00000037 00000004 fffffffa ffffff93 fffffff7 fffffff7 00000000 00000023 00000030 fffffff4 fffffffa ffffff83 00000037 00000004 fffffffa 00000063 ffffff96 00000007 00000004 ffffff83 00000027 ffffffc4 fffffffc ffffff9b ffffff87 00000007 00000000 00000063 ffffff80 00000007 0000000e ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000000 00000003 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 00000040 0000000a ffffff93 00000007 00000010 00000000 00000023 00000026 fffffff4 fffffffc 00000003 00000037 00000004 fffffffa ffffff93 00000007 ffffff90 00000000 00000063 ffffffe6 ffffffe7 00000004 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000037 00000004 fffffffa 00000013 fffffff7 fffffff7 0000000f ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 0000001b 00000007 00000007 00000003 00000013 00000077 fffffff7 0000000f 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffff80 00000004 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000037 00000004 fffffffa 00000013 fffffff7 fffffff7 0000000f ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 0000001b 00000007 00000077 00000005 00000013 00000077 fffffff7 0000000f 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000004 fffffffd ffffff9b ffffff87 00000017 00000000 00000023 00000028 fffffff4 fffffffc ffffff83 00000027 00000004 fffffffd 0000001b ffffff87 00000007 00000000 ffffff93 00000007 fffffff0 00000000 ffffffe3 fffffff2 ffffffe7 ffffffec ffffff83 00000027 ffffffc4 fffffffc ffffff9b ffffff87 00000007 00000000 00000063 ffffff9c 00000007 0000000e ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000000 00000003 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffffc0 0000000b ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000050 00000002 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 ffffffc0 00000006 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 00000033 00000007 fffffff7 00000000 ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffff80 00000000 00000013 00000000 00000000 00000000 0000006f 00000000 ffffffc0 00000030 ffffff83 00000037 00000004 fffffff5 00000013 ffffff87 ffffff87 00000000 00000023 00000038 ffffffe4 fffffff4 ffffff83 ffffffa7 00000007 00000000 00000023 0000002a fffffff4 fffffff8 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffde ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000003 00000027 00000044 fffffff9 00000013 00000077 fffffff7 0000000f 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffff80 0000002b ffffff83 00000037 00000004 fffffff5 00000013 ffffff87 ffffff87 00000000 00000023 00000038 ffffffe4 fffffff4 ffffff83 ffffffb7 00000007 00000000 00000023 00000030 fffffff4 fffffffc ffffff83 00000037 00000004 fffffffc 00000063 ffffff9e 00000007 00000004 ffffffb7 00000047 00000040 00000000 ffffff93 ffffff87 00000007 00000002 00000023 00000030 fffffff4 fffffffc 0000006f 00000000 ffffffc0 00000004 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffde ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000003 00000037 00000004 fffffffc 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000037 00000004 fffffffc ffffff93 ffffff87 00000017 00000000 00000023 00000030 fffffff4 fffffffc ffffff83 00000037 00000004 fffffffc ffffff83 ffffffc7 00000007 00000000 ffffffe3 ffffff98 00000007 fffffffa 0000006f 00000000 00000040 00000023 ffffff83 00000037 00000004 fffffff5 00000013 ffffff87 ffffff87 00000000 00000023 00000038 ffffffe4 fffffff4 ffffff83 ffffffa7 00000007 00000000 00000023 0000002a fffffff4 fffffffa 00000023 0000002c 00000004 fffffffa 00000023 0000002e 00000004 fffffffa 0000006f 00000000 ffffff80 00000013 ffffff83 00000027 ffffffc4 fffffffb ffffff9b ffffff97 00000027 00000000 ffffff9b ffffff87 00000007 00000000 00000003 00000027 00000044 fffffffb ffffffbb 00000017 fffffff7 00000000 00000023 00000028 fffffff4 fffffffa ffffff83 00000027 00000004 fffffffb ffffff9b ffffffd7 ffffffc7 00000001 00000023 00000028 fffffff4 fffffffa ffffff83 00000027 00000004 fffffffb ffffff93 fffffff7 fffffff7 00000000 00000023 00000028 fffffff4 fffffffa ffffff83 00000027 00000004 fffffffb ffffff9b ffffff87 00000007 00000000 00000063 ffffff96 00000007 00000004 ffffff83 00000027 ffffff84 fffffffb ffffff9b ffffff87 00000007 00000000 00000063 ffffff82 00000007 0000000e ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000000 00000003 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffff80 0000000a ffffff93 00000007 00000010 00000000 00000023 0000002c fffffff4 fffffffa ffffff83 00000027 00000004 fffffffb 0000001b ffffff87 00000007 00000000 ffffff93 00000007 ffffff90 00000000 00000063 ffffffe6 ffffffe7 00000004 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000027 00000004 fffffffb 00000013 fffffff7 fffffff7 0000000f ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 0000001b 00000007 00000007 00000003 00000013 00000077 fffffff7 0000000f 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 ffffff80 00000004 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000027 00000004 fffffffb 00000013 fffffff7 fffffff7 0000000f ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 0000001b 00000007 00000077 00000005 00000013 00000077 fffffff7 0000000f 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffb ffffff9b ffffff87 00000017 00000000 00000023 0000002e fffffff4 fffffffa ffffff83 00000027 ffffffc4 fffffffb 0000001b ffffff87 00000007 00000000 ffffff93 00000007 00000070 00000000 ffffffe3 fffffff0 ffffffe7 ffffffec ffffff83 00000027 ffffff84 fffffffb ffffff9b ffffff87 00000007 00000000 00000063 ffffff90 00000007 0000000c ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000000 00000003 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 00000040 00000008 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffdc ffffffe7 00000000 ffffff83 00000037 ffffff84 fffffff6 00000013 ffffff87 00000017 00000000 00000023 00000034 ffffffe4 fffffff6 00000013 00000007 00000050 00000002 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 00000033 00000007 fffffff7 00000000 ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe 0000006f 00000000 00000000 00000005 00000013 00000000 00000000 00000000 0000006f 00000000 ffffff80 00000004 ffffff83 00000027 00000044 fffffff6 ffffff9b ffffff87 fffffff7 ffffffff 0000001b ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 ffffffd2 ffffffe7 00000002 ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 00000033 00000007 fffffff7 00000000 ffffff83 00000037 ffffff84 fffffff6 ffffff93 ffffff86 00000017 00000000 00000023 00000034 ffffffd4 fffffff6 00000003 00000047 00000007 00000000 00000023 ffffff80 ffffffe7 00000000 ffffff83 00000027 ffffff84 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000017 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000003 00000037 ffffff84 fffffff5 ffffffb3 00000007 fffffff7 00000000 ffffff83 ffffffc7 00000007 00000000 00000063 ffffff94 00000007 ffffffea ffffff83 00000037 ffffff84 fffffff6 00000023 ffffff80 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 0000000a 00000013 00000001 00000001 0000000b 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffff9 00000023 0000003c 00000011 00000002 00000023 00000038 ffffff81 00000002 00000013 00000004 00000001 00000004 00000023 0000003c ffffffa4 fffffffc 00000023 00000034 ffffffc4 fffffffc 00000023 00000034 ffffffd4 00000000 00000023 00000038 ffffffe4 00000000 00000023 0000003c fffffff4 00000000 00000023 00000030 00000004 00000003 00000023 00000034 00000014 00000003 ffffff93 ffffff87 00000005 00000000 00000023 0000002a fffffff4 fffffffc ffffff93 00000007 00000004 00000003 00000023 00000030 fffffff4 fffffffc ffffff83 00000037 00000004 fffffffc ffffff93 ffffff87 ffffff87 fffffffd 00000023 00000034 fffffff4 fffffffe 00000003 00000037 ffffff84 fffffffe ffffff83 00000027 00000044 fffffffd ffffff93 00000006 00000007 00000000 00000003 00000036 ffffff84 fffffffc ffffff93 ffffff85 00000007 00000000 00000003 00000035 ffffff84 fffffffd ffffffef fffffff0 ffffff8f ffffffdd ffffff93 00000007 00000005 00000000 00000023 0000002a fffffff4 fffffffc ffffff83 00000027 00000044 fffffffd 00000013 ffffff85 00000007 00000000 ffffff83 00000030 ffffff81 00000003 00000003 00000034 00000001 00000003 00000013 00000001 00000001 00000007 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 ffffffec 00000023 0000003c 00000011 0000000e 00000023 00000038 ffffff81 0000000e 00000013 00000004 00000001 00000010 00000023 00000034 ffffffa4 fffffff0 00000023 00000034 ffffffb4 00000000 00000023 00000038 ffffffc4 00000000 00000023 0000003c ffffffd4 00000000 00000023 00000030 ffffffe4 00000002 00000023 00000034 fffffff4 00000002 00000023 00000038 00000004 00000003 00000023 0000003c 00000014 00000003 ffffff93 00000007 00000004 00000004 00000023 00000030 fffffff4 fffffff0 ffffff83 00000037 00000004 fffffff0 ffffff93 ffffff87 ffffff87 fffffffc 00000023 00000030 fffffff4 fffffffe 00000003 00000037 00000004 fffffffe ffffff93 00000007 ffffff84 fffffff1 ffffff93 00000006 00000007 00000000 00000003 00000036 ffffff84 fffffff0 ffffff93 00000005 ffffff80 0000000c 00000013 ffffff85 00000007 00000000 ffffffef fffffff0 ffffff8f ffffffd5 ffffff93 00000007 00000005 00000000 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff87 00000007 00000000 ffffff93 00000007 00000070 0000000c 00000063 fffffff6 ffffffe7 00000000 ffffff93 00000007 00000070 0000000c 00000023 00000026 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe ffffff9b ffffff87 00000007 00000000 00000063 00000050 fffffff0 00000002 00000003 00000027 ffffffc4 fffffffe ffffff93 00000007 ffffff84 fffffff1 00000013 00000006 00000010 00000000 ffffff93 00000005 00000007 00000000 00000013 ffffff85 00000007 00000000 ffffff97 00000030 ffffffc0 ffffffff ffffffe7 ffffff80 00000000 ffffffcc 00000013 00000000 00000000 00000000 ffffff83 00000030 ffffff81 0000000f 00000003 00000034 00000001 0000000f 00000013 00000001 00000001 00000014 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffff2 00000023 0000003c 00000011 0000000c 00000023 00000038 ffffff81 0000000c 00000013 00000004 00000001 0000000e ffffff93 00000007 ffffff84 fffffff2 00000013 00000006 00000000 00000000 ffffff93 00000005 ffffff80 0000000c 00000013 ffffff85 00000007 00000000 ffffff97 00000030 ffffffc0 ffffffff ffffffe7 ffffff80 ffffff80 ffffffc7 ffffff93 00000007 ffffff84 fffffff2 00000013 ffffff85 00000007 00000000 ffffffef ffffffe0 ffffff9f ffffffff ffffff93 00000007 00000005 00000000 00000013 ffffff85 00000007 00000000 ffffff83 00000030 ffffff81 0000000d 00000003 00000034 00000001 0000000d 00000013 00000001 00000001 0000000e 00000067 ffffff80 00000000 00000000 00000013 00000001 00000001 fffffffe 00000023 0000003c ffffff81 00000000 00000013 00000004 00000001 00000002 00000023 00000026 00000004 fffffffe ffffff93 00000007 00000010 00000000 00000023 00000024 fffffff4 fffffffe ffffff83 00000027 ffffffc4 fffffffe 00000013 ffffff87 00000007 00000000 ffffff83 00000027 ffffff84 fffffffe ffffffbb 00000007 fffffff7 00000000 00000023 00000026 fffffff4 fffffffe ffffff93 00000007 00000000 00000000 00000013 ffffff85 00000007 00000000 00000003 00000034 ffffff81 00000001 00000013 00000001 00000001 00000002 00000067 ffffff80 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 -80 404000 +404000 80 00000025 00000078 00000009 00000000 00000000 00000000 00000000 00000000 00000020 00000020 00000020 00000000 00000000 00000000 00000000 00000000 00000025 00000073 00000020 00000000 00000000 00000000 00000000 00000000 0000000a 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000028 0000006e 00000075 0000006c 0000006c 00000029 00000000 00000000 fffffff8 0000000e 00000040 00000000 ffffffe8 00000009 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 ffffffe8 00000009 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 00000028 0000000b 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000004c 0000000f 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 0000007c 00000011 00000040 00000000 ffffffd0 0000000f 00000040 00000000 4000 405270 diff --git a/src/simulator/mem_cmp.rs b/src/simulator/mem_cmp.rs index e90fec7..94aac44 100644 --- a/src/simulator/mem_cmp.rs +++ b/src/simulator/mem_cmp.rs @@ -75,8 +75,8 @@ impl Section{ fn print_Section(s: &Section){ - println!("ADDR :: {}", s.addr); - println!("LEN :: {}", s.len); + println!("ADDR :: {:x}", s.addr); + println!("LEN :: {:x}", s.len); println!("CONTENT :: {:?}", s.content); } } From 6f6191ea3ccf79b48e55dd402536853f4fdf2810 Mon Sep 17 00:00:00 2001 From: Baptiste Date: Sun, 5 Mar 2023 23:49:28 +0100 Subject: [PATCH 021/115] memory.txt can be execute --- src/main.rs | 4 ++-- src/simulator/machine.rs | 24 ++++++++++++++++++------ src/simulator/mem_cmp.rs | 1 + src/simulator/print.rs | 4 ++-- 4 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/main.rs b/src/main.rs index 6e4d2c7..bc3da12 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,7 +8,7 @@ fn main() { let path = "memory.txt".to_string(); let checker = mem_cmp::Mem_Checker::from(&path); mem_cmp::Mem_Checker::fill_memory_from_Mem_Checker(&checker, &mut m); - mem_cmp::Mem_Checker::print_Mem_Checker(&checker); - Machine::print_memory(&mut m, 0x400000, 0x405000); + //mem_cmp::Mem_Checker::print_Mem_Checker(&checker); + //Machine::print_memory(&mut m, 0x400000, 0x405000); Machine::run(m); } diff --git a/src/simulator/machine.rs b/src/simulator/machine.rs index bd5617a..c3a5659 100644 --- a/src/simulator/machine.rs +++ b/src/simulator/machine.rs @@ -1,5 +1,7 @@ use std::{ops::{Add, Sub}, io::Write}; +use crate::simulator::print; + use super::{decode::{Instruction, decode}}; use super::global::*; use std::fs::File; @@ -40,7 +42,7 @@ impl Register { self.register[position] = value; } else { // Panic ou rien ? (dans le doute pour le moment panic) - unreachable!("You can't write to zero register") + // unreachable!("You can't write to zero register") } } @@ -148,6 +150,14 @@ impl Machine { file.write(&machine.main_memory); } + pub fn print_machine_status(machine: &mut Machine) { + println!("######### Machine status #########"); + for i in 0..32 { + println!(">{} : {:x}", print::REG_X[i], machine.int_reg.get_reg(i)); + } + println!("##################################"); + } + /// Execute the instructions table of a machine putted in param /// /// ### Parameters @@ -182,13 +192,15 @@ impl Machine { if machine.main_memory.len() <= machine.pc as usize { panic!("ERROR : number max of instructions rushed"); } - let mut val: [u8; 8] = [0; 8]; - for i in 0..8 { + let mut val: [u8; 4] = [0; 4]; + for i in 0..4 { val[i] = machine.main_memory[machine.pc as usize + i]; } - let val = u64::from_be_bytes(val); - println!("{:x}", val); + let val = u32::from_be_bytes(val) as u64; + Self::print_machine_status(machine); + println!("executing instruction : {:016x} at pc {:x}", val, machine.pc); + println!("{}", print::print(decode(val), machine.pc as i32)); let inst : Instruction = decode(val); @@ -602,7 +614,7 @@ impl Machine { } } } - _ => { panic!("{:x} opcode non géré pc : {:x}", inst.opcode, machine.pc)}, + _ => { panic!("{:x} opcode non géré pc : {:x}", inst.opcode, machine.pc)}, } machine.pc += 4; // Possible bug avec jump diff --git a/src/simulator/mem_cmp.rs b/src/simulator/mem_cmp.rs index 94aac44..316df70 100644 --- a/src/simulator/mem_cmp.rs +++ b/src/simulator/mem_cmp.rs @@ -160,6 +160,7 @@ impl Mem_Checker{ pub fn fill_memory_from_Mem_Checker(m_c: &Mem_Checker, machine: &mut Machine){ machine.sp = m_c.sp; + machine.int_reg.set_reg(2, m_c.pc as i64); machine.pc = m_c.pc as u64; diff --git a/src/simulator/print.rs b/src/simulator/print.rs index 0539a43..60a2936 100644 --- a/src/simulator/print.rs +++ b/src/simulator/print.rs @@ -13,7 +13,7 @@ const NAMES_OPIW: [&str; 8] = ["addiw", "slliw", "", "", "", "sri", "", ""]; // Register name mapping -const REG_X: [&str; 32] = ["zero", "ra", "sp", "gp", "tp", "t0", "t1", "t2", "s0", "s1", +pub const REG_X: [&str; 32] = ["zero", "ra", "sp", "gp", "tp", "t0", "t1", "t2", "s0", "s1", "a0", "a1", "a2", "a3", "a4", "a5", "a6", "a7", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "s11", "t3", "t4", "t5", "t6"]; @@ -78,7 +78,7 @@ pub fn print(ins: Instruction, pc: i32) -> String { //TODO pc should be u64 format!("jal\t{},{:x}", REG_X[rd], (pc + ins.imm21_1_signed)) }, RISCV_JALR => { - format!("jalr\t{},{}({})", REG_X[rd], ins.imm12_I_signed, REG_X[rs1]) + format!("jalr\t{},{:x}({})", REG_X[rd], ins.imm12_I_signed, REG_X[rs1]) }, RISCV_BR => { format!("{}\t{},{},{:x}", NAMES_BR[ins.funct3 as usize], REG_X[rs1], REG_X[rs2], pc + (ins.imm13_signed as i32)) From cef082bfd5c015b206724e64ae0fe9fd5a2bb1dd Mon Sep 17 00:00:00 2001 From: amaury Date: Mon, 6 Mar 2023 11:19:00 +0100 Subject: [PATCH 022/115] =?UTF-8?q?ajout=20des=20m=C3=A9moires=20nachos=20?= =?UTF-8?q?de=20tous=20les=20tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- memoryComp.txt | 8 ++++++++ memoryDiv.txt | 8 ++++++++ memoryIf.txt | 8 ++++++++ memoryJump.txt | 8 ++++++++ memoryMul.txt | 8 ++++++++ memoryRet.txt | 8 ++++++++ memorySub.txt | 8 ++++++++ memorySwitch.txt | 8 ++++++++ src/main.rs | 2 +- 9 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 memoryComp.txt create mode 100644 memoryDiv.txt create mode 100644 memoryIf.txt create mode 100644 memoryJump.txt create mode 100644 memoryMul.txt create mode 100644 memoryRet.txt create mode 100644 memorySub.txt create mode 100644 memorySwitch.txt diff --git a/memoryComp.txt b/memoryComp.txt new file mode 100644 index 0000000..0d30a7a --- /dev/null +++ b/memoryComp.txt @@ -0,0 +1,8 @@ +4000 1b8 +00 3f d0 97 41 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +400000 14d8 +fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 fe 04 26 23 00 10 07 93 fe f4 24 23 08 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 00 07 07 1b 00 07 87 9b 00 e7 d8 63 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 07 87 13 fe 84 27 83 00 07 07 1b 00 07 87 9b 00 f7 1c 63 fe c4 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb fe f4 26 23 fe c4 27 83 00 07 87 13 fe 84 27 83 00 07 07 1b 00 07 87 9b 00 f7 5a 63 fe c4 27 83 00 17 87 9b fe f4 26 23 00 c0 00 6f 00 00 07 93 02 00 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 00 07 07 1b 00 07 87 9b f6 e7 d6 e3 00 00 07 93 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +404000 80 +00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 +4000 +405270 \ No newline at end of file diff --git a/memoryDiv.txt b/memoryDiv.txt new file mode 100644 index 0000000..682294e --- /dev/null +++ b/memoryDiv.txt @@ -0,0 +1,8 @@ +4000 1b8 +00 3f d0 97 41 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +400000 1454 +fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 40 07 93 fe f4 26 23 00 20 07 93 fe f4 24 23 fe c4 27 83 00 07 87 13 fe 84 27 83 02 f7 57 bb fe f4 26 23 00 00 07 93 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +404000 80 +00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 +4000 +405270 \ No newline at end of file diff --git a/memoryIf.txt b/memoryIf.txt new file mode 100644 index 0000000..8b0da1e --- /dev/null +++ b/memoryIf.txt @@ -0,0 +1,8 @@ +4000 1b8 +00 3f d0 97 41 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +400000 1488 +fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 10 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 00 10 07 93 00 f7 1e 63 fe c4 27 83 00 07 87 9b 00 f0 58 63 00 20 07 93 fe f4 26 23 02 c0 00 6f fe c4 27 83 00 07 87 9b 00 07 98 63 fe c4 27 83 00 07 87 9b 00 07 98 63 00 30 07 93 fe f4 26 23 00 80 00 6f fe 04 26 23 00 00 07 93 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +404000 80 +00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 +4000 +405270 \ No newline at end of file diff --git a/memoryJump.txt b/memoryJump.txt new file mode 100644 index 0000000..86ec072 --- /dev/null +++ b/memoryJump.txt @@ -0,0 +1,8 @@ +4000 1b8 +00 3f d0 97 43 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +400000 1464 +fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 ff 01 01 13 00 81 34 23 01 01 04 13 00 00 07 93 00 07 85 13 00 81 34 03 01 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fd 1f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +404000 80 +00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 +4000 +405270 \ No newline at end of file diff --git a/memoryMul.txt b/memoryMul.txt new file mode 100644 index 0000000..b8b038c --- /dev/null +++ b/memoryMul.txt @@ -0,0 +1,8 @@ +4000 1b8 +00 3f d0 97 41 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +400000 1454 +fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 10 07 93 fe f4 26 23 00 20 07 93 fe f4 24 23 fe c4 27 83 00 07 87 13 fe 84 27 83 02 f7 07 bb fe f4 26 23 00 00 07 93 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +404000 80 +00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 +4000 +405270 \ No newline at end of file diff --git a/memoryRet.txt b/memoryRet.txt new file mode 100644 index 0000000..2046f06 --- /dev/null +++ b/memoryRet.txt @@ -0,0 +1,8 @@ +4000 1b8 +00 3f d0 97 41 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +400000 1430 +fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 ff 01 01 13 00 81 34 23 01 01 04 13 00 10 07 93 00 07 85 13 00 81 34 03 01 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +404000 80 +00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 +4000 +405270 \ No newline at end of file diff --git a/memorySub.txt b/memorySub.txt new file mode 100644 index 0000000..9cf1238 --- /dev/null +++ b/memorySub.txt @@ -0,0 +1,8 @@ +4000 1b8 +00 3f d0 97 41 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +400000 1454 +fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 10 07 93 fe f4 26 23 00 10 07 93 fe f4 24 23 fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb fe f4 26 23 00 00 07 93 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +404000 80 +00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 +4000 +405270 \ No newline at end of file diff --git a/memorySwitch.txt b/memorySwitch.txt new file mode 100644 index 0000000..3bd6096 --- /dev/null +++ b/memorySwitch.txt @@ -0,0 +1,8 @@ +4000 1b8 +00 3f d0 97 41 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +400000 1458 +fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 fe 04 26 23 fe c4 27 83 00 07 87 1b 00 10 07 93 00 f7 1c 63 00 10 07 93 fe f4 26 23 00 00 00 13 00 00 07 93 00 80 00 6f 00 00 07 93 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +404000 80 +00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 +4000 +405270 \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index bc3da12..d33c4dc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,7 +5,7 @@ use simulator::mem_cmp; fn main() { let mut m = Machine::_init_machine(); - let path = "memory.txt".to_string(); + let path = "memoryComp.txt".to_string(); let checker = mem_cmp::Mem_Checker::from(&path); mem_cmp::Mem_Checker::fill_memory_from_Mem_Checker(&checker, &mut m); //mem_cmp::Mem_Checker::print_Mem_Checker(&checker); From abff8966b5e033159cee940db55763d9d8c0370c Mon Sep 17 00:00:00 2001 From: amaury Date: Mon, 6 Mar 2023 11:37:16 +0100 Subject: [PATCH 023/115] nouveau fichier de comparaisons --- .../boolean_logic/new_comparisons.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 test_programs/riscv_instructions/boolean_logic/new_comparisons.c diff --git a/test_programs/riscv_instructions/boolean_logic/new_comparisons.c b/test_programs/riscv_instructions/boolean_logic/new_comparisons.c new file mode 100644 index 0000000..54bd275 --- /dev/null +++ b/test_programs/riscv_instructions/boolean_logic/new_comparisons.c @@ -0,0 +1,17 @@ +int main() { + int x = 0; + int y = 1; + while (x <= y) { + if (x > y) { + y += 1; + } + if (x == y) { + x += y; + } + if (x < y) { + x += 1; + } else { + return 0; + } + } +} \ No newline at end of file From d352f5dcd2f0dfa1cc698d452e9e0c00fd896692 Mon Sep 17 00:00:00 2001 From: Baptiste Date: Mon, 6 Mar 2023 13:50:45 +0100 Subject: [PATCH 024/115] fix jal, branch instr & LD. + better print for machine status --- src/main.rs | 2 +- src/simulator/machine.rs | 34 +++++++++++++++++++++++----------- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/main.rs b/src/main.rs index d33c4dc..2acab96 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,7 +5,7 @@ use simulator::mem_cmp; fn main() { let mut m = Machine::_init_machine(); - let path = "memoryComp.txt".to_string(); + let path = "memoryJump.txt".to_string(); let checker = mem_cmp::Mem_Checker::from(&path); mem_cmp::Mem_Checker::fill_memory_from_Mem_Checker(&checker, &mut m); //mem_cmp::Mem_Checker::print_Mem_Checker(&checker); diff --git a/src/simulator/machine.rs b/src/simulator/machine.rs index c3a5659..2baf432 100644 --- a/src/simulator/machine.rs +++ b/src/simulator/machine.rs @@ -152,9 +152,21 @@ impl Machine { pub fn print_machine_status(machine: &mut Machine) { println!("######### Machine status #########"); - for i in 0..32 { - println!(">{} : {:x}", print::REG_X[i], machine.int_reg.get_reg(i)); + for i in (0..32).step_by(3) { + print!(">{0: <4} : {1:<8x}", print::REG_X[i], machine.int_reg.get_reg(i)); + print!("\t"); + print!(">{0: <4} : {1:<8x}", print::REG_X[i+1], machine.int_reg.get_reg(i+1)); + print!("\t"); + if i+2 < 32 { + print!(">{0: <4} : {1:<8x}", print::REG_X[i+2], machine.int_reg.get_reg(i+2)); + } + println!(); } + println!("________________SP________________"); + let sp_index = machine.int_reg.get_reg(2); + for i in 0..5 { + println!("SP+{:<2} : {:16x}", i*8, Self::read_memory(machine, 8, (sp_index + i*8) as usize)); + } println!("##################################"); } @@ -213,11 +225,11 @@ impl Machine { }, RISCV_JAL => { machine.int_reg.set_reg(inst.rd as usize, machine.pc as i64); - machine.pc += inst.imm21_1_signed as u64 - 4; + machine.pc = (machine.pc as i64 + inst.imm21_1_signed as i64 - 4) as u64; }, RISCV_JALR => { let tmp = machine.pc; - machine.pc = (machine.int_reg.get_reg(inst.rs1 as usize) as u64 + inst.imm12_I_signed as u64) & 0xfffffffe; + machine.pc = (machine.int_reg.get_reg(inst.rs1 as usize) + inst.imm12_I_signed as i64) as u64 & 0xfffffffe; machine.int_reg.set_reg(inst.rd as usize, tmp as i64); }, @@ -227,32 +239,32 @@ impl Machine { match inst.funct3 { RISCV_BR_BEQ => { if machine.int_reg.get_reg(inst.rs1 as usize) == machine.int_reg.get_reg(inst.rs2 as usize) { - machine.pc += inst.imm13_signed as u64 - 4; + machine.pc = (machine.pc as i64 + inst.imm13_signed as i64 - 4) as u64; } }, RISCV_BR_BNE => { if machine.int_reg.get_reg(inst.rs1 as usize) != machine.int_reg.get_reg(inst.rs2 as usize) { - machine.pc += inst.imm13_signed as u64 - 4; + machine.pc = (machine.pc as i64 + inst.imm13_signed as i64 - 4) as u64; } }, RISCV_BR_BLT => { if machine.int_reg.get_reg(inst.rs1 as usize) < machine.int_reg.get_reg(inst.rs2 as usize) { - machine.pc += inst.imm13_signed as u64 - 4; + machine.pc = (machine.pc as i64 + inst.imm13_signed as i64 - 4) as u64; } }, RISCV_BR_BGE => { if machine.int_reg.get_reg(inst.rs1 as usize) >= machine.int_reg.get_reg(inst.rs2 as usize) { - machine.pc += inst.imm13_signed as u64 - 4; + machine.pc = (machine.pc as i64 + inst.imm13_signed as i64 - 4) as u64; } }, RISCV_BR_BLTU => { if machine.int_reg.get_reg(inst.rs1 as usize) < machine.int_reg.get_reg(inst.rs2 as usize) { - machine.pc += inst.imm13_signed as u64 - 4; + machine.pc = (machine.pc as i64 + inst.imm13_signed as i64 - 4) as u64; } }, RISCV_BR_BGEU => { if machine.int_reg.get_reg(inst.rs1 as usize) >= machine.int_reg.get_reg(inst.rs2 as usize) { - machine.pc += inst.imm13_signed as u64 - 4; + machine.pc = (machine.pc as i64 + inst.imm13_signed as i64 - 4) as u64; } }, _ => { @@ -278,7 +290,7 @@ impl Machine { machine.int_reg.set_reg(inst.rd as usize, tmp); }, RISCV_LD_LD => { - let tmp = Self::read_memory(machine, 1, (machine.int_reg.get_reg(inst.rs1 as usize) + inst.imm12_I_signed as i64) as usize) as i64; + let tmp = Self::read_memory(machine, 8, (machine.int_reg.get_reg(inst.rs1 as usize) + inst.imm12_I_signed as i64) as usize) as i64; machine.int_reg.set_reg(inst.rd as usize, tmp); }, _ => { From 1e2e537ec99bc0d8babb3e7720598b990a260ae2 Mon Sep 17 00:00:00 2001 From: Baptiste Date: Tue, 7 Mar 2023 17:32:59 +0100 Subject: [PATCH 025/115] compare mem_checker and machine --- src/main.rs | 2 +- src/simulator/machine.rs | 17 +++++++++++------ src/simulator/mem_cmp.rs | 13 +++++++++++++ 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/main.rs b/src/main.rs index 2acab96..97c0ec1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -10,5 +10,5 @@ fn main() { mem_cmp::Mem_Checker::fill_memory_from_Mem_Checker(&checker, &mut m); //mem_cmp::Mem_Checker::print_Mem_Checker(&checker); //Machine::print_memory(&mut m, 0x400000, 0x405000); - Machine::run(m); + //Machine::run(m); } diff --git a/src/simulator/machine.rs b/src/simulator/machine.rs index 2baf432..47ee672 100644 --- a/src/simulator/machine.rs +++ b/src/simulator/machine.rs @@ -177,9 +177,7 @@ impl Machine { /// - **machine** which contains a table of instructions pub fn run(machine : Machine){ let mut m = machine; - for i in 0..MEM_SIZE{ - Machine::one_instruction(&mut m); - } + while Machine::one_instruction(&mut m) == 0 {} } /// execute the current instruction @@ -187,7 +185,7 @@ impl Machine { /// ### Parameters /// /// - **machine** which contains a table of instructions and a pc to the actual instruction - pub fn one_instruction(machine :&mut Machine) { + pub fn one_instruction(machine :&mut Machine) -> i32 { let unsigned_reg1 : u64; let unsigned_reg2 : u64; @@ -210,10 +208,11 @@ impl Machine { } let val = u32::from_be_bytes(val) as u64; + let inst : Instruction = decode(val); Self::print_machine_status(machine); println!("executing instruction : {:016x} at pc {:x}", val, machine.pc); println!("{}", print::print(decode(val), machine.pc as i32)); - let inst : Instruction = decode(val); + match inst.opcode { @@ -626,10 +625,16 @@ impl Machine { } } } + RISCV_SYSTEM => { + // temporary return value to stop the loop of run + // before we can use system call + return 1; + } _ => { panic!("{:x} opcode non géré pc : {:x}", inst.opcode, machine.pc)}, } - machine.pc += 4; // Possible bug avec jump + machine.pc += 4; + return 0; } diff --git a/src/simulator/mem_cmp.rs b/src/simulator/mem_cmp.rs index 316df70..e1cb7e4 100644 --- a/src/simulator/mem_cmp.rs +++ b/src/simulator/mem_cmp.rs @@ -194,6 +194,19 @@ impl Mem_Checker{ } + pub fn compare_machine_memory(m_c: &Mem_Checker, machine: &Machine) -> bool { + + for section in m_c.sections.iter() { + for i in 0..section.len { + if machine.main_memory[section.addr + i] != section.content[i] { + return false; + } + } + } + + return true; + } + } From da30122c87126f0068fa4702d5b7577418998119 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Rativel?= Date: Wed, 8 Mar 2023 11:15:13 +0100 Subject: [PATCH 026/115] Added documentation for from function --- src/simulator/mem_cmp.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/simulator/mem_cmp.rs b/src/simulator/mem_cmp.rs index e1cb7e4..febe371 100644 --- a/src/simulator/mem_cmp.rs +++ b/src/simulator/mem_cmp.rs @@ -93,6 +93,15 @@ pub struct Mem_Checker{ impl Mem_Checker{ + ///Translate lines of a file in e Vector of String + ///We need this method to parse the memory we received + /// + /// ### Parameters + /// + /// - **Lines** The file to parse + /// + /// ### Return + /// - A vector of String where each line of the file os an element of the vector fn vect_from_lines(lines: &mut Lines>, pc: &mut usize, sp: &mut usize) -> Vec{ let mut vector = Vec::new(); for (i,line) in lines.enumerate() { @@ -104,6 +113,14 @@ impl Mem_Checker{ vector } + /// Fill a mem checker from a file (here the mock memory) + /// Extract the values of pc, sp and sections + /// + /// ### Parameter + /// -**path** addr to the file + /// + /// ### Return + /// Mem-checker filled pub fn from(path: &String) -> Mem_Checker { let file = fs::File::open(path).expect("Wrong filename"); @@ -146,6 +163,11 @@ impl Mem_Checker{ } + /// Print the content of a Mem_Checker + /// + /// ### Parameter + /// + /// - **m_c** Contains the data we want to print pub fn print_Mem_Checker(m_c: &Mem_Checker){ println!("PC :: {:x}", m_c.pc); println!("SP :: {:x}", m_c.sp); @@ -157,6 +179,12 @@ impl Mem_Checker{ } + /// Fill a machine's memory from a Mem Chacker + /// + /// ### Parameters + /// + /// - **m_c** contains the data + /// - **machine** contains the memry to fill pub fn fill_memory_from_Mem_Checker(m_c: &Mem_Checker, machine: &mut Machine){ machine.sp = m_c.sp; From 90e51149af1be0b8f4584cd705cd04213e4f5a3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Wed, 8 Mar 2023 13:00:38 +0100 Subject: [PATCH 027/115] Added libnachos --- test_programs/userlib/Makefile | 4 + test_programs/userlib/ldscript.lds | 61 +++ test_programs/userlib/libnachos.c | 630 +++++++++++++++++++++++++++++ test_programs/userlib/libnachos.h | 87 ++++ test_programs/userlib/sys.s | 343 ++++++++++++++++ test_programs/userlib/syscall.h | 287 +++++++++++++ 6 files changed, 1412 insertions(+) create mode 100644 test_programs/userlib/Makefile create mode 100644 test_programs/userlib/ldscript.lds create mode 100644 test_programs/userlib/libnachos.c create mode 100644 test_programs/userlib/libnachos.h create mode 100644 test_programs/userlib/sys.s create mode 100644 test_programs/userlib/syscall.h diff --git a/test_programs/userlib/Makefile b/test_programs/userlib/Makefile new file mode 100644 index 0000000..903f3b5 --- /dev/null +++ b/test_programs/userlib/Makefile @@ -0,0 +1,4 @@ +TOPDIR = ../ +include $(TOPDIR)/Makefile.tests + +default: sys.o libnachos.o \ No newline at end of file diff --git a/test_programs/userlib/ldscript.lds b/test_programs/userlib/ldscript.lds new file mode 100644 index 0000000..7bc9ebf --- /dev/null +++ b/test_programs/userlib/ldscript.lds @@ -0,0 +1,61 @@ +/* + ldscript for running user programs under Nachos + + Sections should be aligned on page boundaries. Here an alignement of + at least 0x2000 is selected, thus supporting pages up to 8KB + large. See addrspace.cc for details. +*/ + +ENTRY(__start) +SECTIONS +{ + + /* Skip an area of about 8k, so that NULL pointer dereferences can + be detected */ + . += 0x2000; + + .sys ALIGN(0x4000) : { + *(.init) + *(.sys) + } + + /* Code is aligned on a 16k boundary + Due to the size of the .sys section, the code start address will + presumably be at address 0x4000 */ + .text ALIGN(0x400000) : { + _ftext = .; + eprol = .; + *(.text) + *(.fini) + } + etext = .; + _etext = .; + + /* Initialized data is aligned on a 16k boundary */ + .data ALIGN(0x4000) : { + _fdata = .; + *(.data) + *(.sdata) + } + .rodata ALIGN(0x4000) : + { + *(.rdata) + *(.srodata) + *(.rodata) + } + edata = .; + _edata = .; + + /* Non-initialized data is aligned on a 16k boundary */ + /* Bss = Block Started by Symbol */ + .bss ALIGN(0x4000) : { + *(.bss) + *(.sbss) + *(.scommon) + *(COMMON) + } + + end = .; + _end = .; + +} diff --git a/test_programs/userlib/libnachos.c b/test_programs/userlib/libnachos.c new file mode 100644 index 0000000..32bb273 --- /dev/null +++ b/test_programs/userlib/libnachos.c @@ -0,0 +1,630 @@ +/*! \file libnachos.c + * \brief Functions of our library, for user programs. + * + * This library only provides some usefull functions for + * programming. + * + * ----------------------------------------------------- + * This file is part of the Nachos-RiscV distribution + * Copyright (c) 2022 University of Rennes 1. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details + * (see see ). + * ----------------------------------------------------- + */ + +#include "libnachos.h" +#include +#include + +//---------------------------------------------------------------------- +// threadStart() +/*! Makes a thread execute a function or program. This function +// is static, it is called internally by library function threadCreate +// and should not be called directly by user programs. The interest +// of this function is to be able to terminate threads correctly, +// even when the thread to be terminated does not explicitly call +// Exit. threadStart provides the mechanism by which Exit +// is called automatically +// +// \param func is the identificator of the function to execute. +*/ +//---------------------------------------------------------------------- + +static void threadStart(uint64_t func) +{ + VoidNoArgFunctionPtr func2; + func2=(VoidNoArgFunctionPtr)func; + // Call the function that actually contains the thread code + (*func2)(); + // Call exit, such that there is no return using an empty stack + Exit(0); +} + +//---------------------------------------------------------------------- +// threadCreate() +/*! Creates a thread and makes it execute a function. +// +// NB : instead of directly executing the required function, +// function threadStart is called so as to ensure +// that the thread will properly exit +// This function must be called instead of calling directly +// the system call newThread +// +// \param name the name of the thread (for debugging purpose) +// \param func is the address of the function to execute. +*/ +//---------------------------------------------------------------------- +ThreadId threadCreate(char *debug_name, VoidNoArgFunctionPtr func) +{ + return newThread(debug_name, (uint64_t)threadStart,(uint64_t)func); +} + +//---------------------------------------------------------------------- +// n_strcmp() +/*! String comparison +// +// \param s1 is the first string, +// \param s2 is the second one. +// \return an integer greater than, equal to, or less than 0, +// if the first string is greater than, equal to, or less than +// the the second string. +*/ +//---------------------------------------------------------------------- +int n_strcmp(const char *s1, const char *s2) +{ + int comparaison; + int fini=0; + int i=0; + while(!fini) { + if ((s1[i]==0)&&(s2[i]==0)) { + fini=1; + comparaison=0; + } + if (s1[i]s2[i]) { + fini=1; + comparaison=1; + } + i++; + } + return comparaison; +} + +//---------------------------------------------------------------------- +// n_strcpy() +/*! String copy +// +// \param dst is where the string is to be copied, +// \param src is where the string to copy is. +// \return dst, if the copy successes, 0 otherwise +*/ +//---------------------------------------------------------------------- +char *n_strcpy(char *dst, const char *src) +{ + int i=0; + int fini=0; + if ((dst!=0)&&(src!=0)) { + while(fini==0) { + if(src[i]=='\0') fini=1; + dst[i]=src[i]; + i++; + } + return dst; + } + else return 0; +} + +//---------------------------------------------------------------------- +// n_strlen() +/*! Gives the number of bytes in a string, not including the +// terminating null character. +// +// \param c is a pointer onto a string. +// \return the length of the string. +*/ +//---------------------------------------------------------------------- +size_t n_strlen(const char *s) +{ + size_t i=0; + while (s[i] != 0) i++; + return i; +} + + +//---------------------------------------------------------------------- +// n_strcat() +/*! Appends a copy of a string, including null character, to the end +// of another string. Enough memory has to be available in the +// destination string. +// +// \param dst is a pointer onto the string where the other string +// will be appended. +// \param src is the string to append. +// \return the pointer string dst. +*/ +//---------------------------------------------------------------------- +char *n_strcat(char *dst, const char *src) +{ + int i,j,k; + i=(int)n_strlen(dst); + j=(int)n_strlen(src); + for(k=i;k<=j+i;k++) { + dst[k]=src[k-i]; + } + return dst; +} + + +//---------------------------------------------------------------------- +// n_toupper() +/*! Gives the upper-case letter corresponding to the lower-case +// letter passed as parameter. +// +// \param c is the ASCII code of the letter to transform. +// \return the corresponding upper-case letter +*/ +//---------------------------------------------------------------------- +int n_toupper(int c) +{ + if((c>='a')&&(c<='z')) + return c+('A'-'a'); + else return c; +} + +//---------------------------------------------------------------------- +// n_tolower() +/*! Gives the lower-case letter corresponding to the upper-case +// letter passed as parameter +// +// \param c is the ASCII code of the letter to transform. +// \return the corresponding lower-case letter +*/ +//---------------------------------------------------------------------- +int n_tolower(int c) +{ + if((c<='Z')&&(c>='A')) + return c+('a'-'A'); + else return c; +} + +//---------------------------------------------------------------------- +// n_atoi() +/*! String to integer conversion. +// +// \param c is a pointer onto a string. +// \return the corresponding value +*/ +//---------------------------------------------------------------------- +int n_atoi(const char *str) +{ + int i=0; + int fini=0; + int val=0; + int negative = 0; + if (str[i] == '-') { + negative = 1; i=1; + } + while(!fini) + { + if(str[i]==0 || str[i]<'0' || str[i]>'9') + fini=1; + else + { + val*=10; + val+=str[i]-'0'; + i++; + } + } + if (negative) return(-val); else return val; +} + +//---------------------------------------------------------------------- +// n_memcmp() +/*! Memory comparison. +// +// \param s1 is the first memory area, +// \param s2 is the second memory area. +// \param n size in bytes of the area to be compared. +// \return an integer less than, equal to, or greater than 0, +// according as s1 is lexicographically less than, equal to, +// or greater than s2 when taken to be unsigned characters. +// +*/ +//---------------------------------------------------------------------- +int n_memcmp(const void *s1, const void *s2, size_t n) +{ + unsigned char* c1=(unsigned char*)s1; + unsigned char* c2=(unsigned char*)s2; + + int comparaison=0; + int fini=0; + int i=0; + while ((!fini)&&(ic2[i]) { + fini=1; + comparaison=1; + } + i++; + } + return comparaison; +} + +//---------------------------------------------------------------------- +// n_memcpy() +/*! Memory copy. +// +// \param s1 is where the elements are to be copied, +// \param s2 is the memory area to copy. +// \param n size in bytes of the area to be copied. +// \return the memory area where the copy has been done. +*/ +//---------------------------------------------------------------------- +void *n_memcpy(void *s1, const void *s2, size_t n) +{ + + unsigned char* c1=(unsigned char*)s1; + unsigned char* c2=(unsigned char*)s2; + + int i=0; + if ((c1!=0)&&(c2!=0)) { + while(i> 4) & 0xf); + s[1] = TOHEX(addr[i] & 0xf); + s[2] = '\0'; + n_printf("%s ", s); + if ((((i+1)%16) == 0) || (i == len-1)) + n_printf("\n"); + } +} + +#define PUTCHAR(carac) \ + do { \ + if (result < len-1) *buff++ = carac;\ + result++; \ + } while (0) + + +//---------------------------------------------------------------------- +// n_vsnprintf() +/*! Build a string according to a specified format (internal function) +// +// Nachos vsnprintf accepts: +// %c to print a character, +// %s, to print a string, +// %d, to print an integer, +// %x, to print an integer in hexa +// %lx %ld same for 64-bit values +// %f, to print a floating point value +// +// \param buff the destination buffer to generate the string to +// \param len the size of buff, determines the number max of +// characters copied to buff (taking the final \0 into account) +// \param format the string to parse +// \param ap parameters to print +// +// \return the number of characters formatted (NOT including \0), +// that is, the number of characters that would have been written +// to the buffer if it were large enough. -1 on error. +*/ +//---------------------------------------------------------------------- +static int n_vsnprintf(char *buff, int len, const char *format, va_list ap) +{ + int i, result; + + if (!buff || !format || (len < 0)) { + return -1; + } + result = 0; + + for (i=0 ; format[i] != '\0' ; i++) { + switch (format[i]) { + case '%': + i++; + switch(format[i]) { + case '%': { + PUTCHAR('%'); + break; + } + case 'i': + case'd': { + int integer = (int) va_arg(ap,int); + int cpt2 = 0; + char buff_int[11]; + if (integer<0) {PUTCHAR('-'); + } + do { + int m10 = integer%10; + m10 = (m10 < 0)? -m10:m10; + buff_int[cpt2++]=(char)('0'+ m10); + integer=integer/10; + } while(integer!=0); + for (cpt2 = cpt2 - 1 ; cpt2 >= 0 ; cpt2--) { + PUTCHAR(buff_int[cpt2]); + } + break; + } + case 'l': { + i++; + switch(format[i]) { + case 'd': { + long longer = va_arg(ap,long); + int cpt2 = 0; + char buff_long[20]; + if (longer<0) { + PUTCHAR('-'); + } + do { + int m10 = longer%10; + m10 = (m10 < 0)? -m10:m10; + buff_long[cpt2++]=(char)('0'+ m10); + longer=longer/10; + } while(longer!=0); + for (cpt2 = cpt2 - 1 ; cpt2 >= 0 ; cpt2--) { + PUTCHAR(buff_long[cpt2]); + } + break; + } + case 'x': { + uint64_t hexa = va_arg(ap,long); + uint64_t nb; + uint32_t i, had_nonzero = 0; + for (i=0 ; i < 16 ; i++) { + nb = (hexa << (i*4)); + nb = (nb >> 60); + nb = nb & 0x000000000000000f; + // Skip the leading zeros + if (nb == 0) { + if (had_nonzero) { + PUTCHAR((uint8_t)'0'); + } + } + else { + had_nonzero = 1; + if (nb < 10) + PUTCHAR((uint8_t)'0'+(uint8_t)nb); + else + PUTCHAR((uint8_t)'a'+(uint8_t)(nb-10)); + } + } + if (! had_nonzero) + PUTCHAR((uint8_t)'0'); + break; + } + default: { + PUTCHAR('%'); + PUTCHAR('l'); + PUTCHAR(format[i]); + break; + } + } + + break; + } + case 'c': { + int value = va_arg(ap,int); + PUTCHAR((char)value); + break; + } + case 's': { + char *string = va_arg(ap,char *); + if (! string) + string = "(null)"; + for( ; *string != '\0' ; string++) + PUTCHAR(*string); + break; + } + case 'x': { + uint32_t hexa = va_arg(ap,int); + uint32_t nb; + uint32_t i, had_nonzero = 0; + for (i=0 ; i < 8 ; i++) { + nb = (hexa << (i*4)); + nb = (nb >> 28); + nb = nb & 0x0000000f; + // Skip the leading zeros + if (nb == 0) { + if (had_nonzero) + PUTCHAR((uint8_t)'0'); + } + else { + had_nonzero = 1; + if (nb < 10) + PUTCHAR((uint8_t)'0'+(uint8_t)nb); + else + PUTCHAR((uint8_t)'a'+(uint8_t)(nb-10)); + } + } + if (! had_nonzero) + PUTCHAR((uint8_t)'0'); + break; + } + /*case 'f': { + // Very simple routine to print floats as xxxx.yyyyy + // Not very good (unable to print large numbers) + // If anyone wants to re-write it, feel free ... + double f = (double) va_arg(ap,double); + int cpt2, j; + char buff_float[200]; + long ient,idec; + if (f<0) { + PUTCHAR('-'); + f = -f; + } + ient = (int)f; + // 100000 = print 5 digits max + idec = (int)((f - ((double)ient))*100000); + // Round up + if ( f - ((double)ient) - ((double)idec)/100000.0 >= 0.5E-5) + idec ++; + cpt2 = 0; + // Print digits after the '.' + for (j=0 ; j<5 ; j++) { + buff_float[cpt2++]=(char)('0'+(idec%10)); + idec=idec/10; + } + buff_float[cpt2++] = '.'; + // Print digits before the '.' + do { + buff_float[cpt2++]=(char)('0'+ (ient%10)); + ient=ient/10; + } while (ient!=0); + for(j = cpt2 - 1 ; j >= 0 ; j--) + PUTCHAR(buff_float[j]); + break; + } + */ + default: + PUTCHAR('%'); + PUTCHAR(format[i]); + } + break; + default: + PUTCHAR(format[i]); + } + } + *buff = '\0'; + return result; +} + +//---------------------------------------------------------------------- +// n_snprintf() +/*! Build a string according to a specified format +// +// Nachos snprintf accepts: +// %c to print a character, +// %s, to print a string, +// %d, to print an integer, +// %x, to print a string in hexa +// %f, to print a floating point value +// +// \param buff the destination buffer to generate the string to +// \param len the size of buff, determines the number max of +// characters copied to buff (taking the final \0 into account) +// \param format the string to parse +// \param ... the (variable number of) arguments +// +// \return the number of characters formatted (NOT including \0), +// that is, the number of characters that would have been written +// to the buffer if it were large enough. -1 on error. +*/ +//---------------------------------------------------------------------- +int n_snprintf(char * buff, int len, const char *format, ...){ + va_list ap; + va_start(ap, format); + len = n_vsnprintf(buff, len, format, ap); + va_end(ap); + return len; +} + +//---------------------------------------------------------------------- +// n_printf() +/*! Print to the standard output parameters. +// +// Nachos printf accepts: +// %c to print a character, +// %s, to print a string, +// %d, to print an integer, +// %x, to print a string in hexa +// %ld, %lx, same for 64-bit values +// %f, to print a floating point value +// +// \param parameters to print, +// \param type of print. +*/ +//---------------------------------------------------------------------- +void n_printf(const char *format, ...){ + + va_list ap; + char buff[200]; + int len; + + va_start(ap, format); + len = n_vsnprintf(buff, sizeof(buff), format, ap); + va_end(ap); + + if (len >= sizeof(buff)) { + len = sizeof(buff) - 1; + } + if (len > 0) { + Write(buff,len,CONSOLE_OUTPUT); + } +} + +//---------------------------------------------------------------------- +// n_read_int() +/*! +// Very basic minimalist read integer function, no error +// checking... +*/ +//---------------------------------------------------------------------- +int n_read_int(void) { + char buff[200]; + Read(buff,200,CONSOLE_INPUT); + return n_atoi(buff); +} diff --git a/test_programs/userlib/libnachos.h b/test_programs/userlib/libnachos.h new file mode 100644 index 0000000..f033ed5 --- /dev/null +++ b/test_programs/userlib/libnachos.h @@ -0,0 +1,87 @@ +/*! \file libnachos.h + \brief Function structures for programs + + Libnachos proposes several 'libc-like' functions + for: + Input-Output operations, + String operations, + Memory operations, + System calls are defined in kernel/syscalls.h + + Nachos-libc functions are prefixed by 'n' to avoid + any confusion with standard libc functions. + + * ----------------------------------------------------- + * This file is part of the Nachos-RiscV distribution + * Copyright (c) 2022 University of Rennes 1. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details + * (see see ). + * ----------------------------------------------------- +*/ + +#include "userlib/syscall.h" + +typedef void (*VoidNoArgFunctionPtr)(); +typedef unsigned int size_t; + +// Thread management +// ---------------------------- +ThreadId threadCreate(char * debug_name, VoidNoArgFunctionPtr func); + +// Input/Output operations : +// ------------------------------------ + +// Print on the standard output specified parameters. +void n_printf(const char *format, ...); + +// Format (of max length ) according to the format +int n_snprintf(char * buff, int len, const char *format, ...); + +// Read an integer on the standard input +int n_read_int(void); + +// String operations : +// ------------------- + +// Compare two strings byte by byte. +int n_strcmp(const char *s1, const char *s2); + +// Copy a string. +char* n_strcpy(char *dst, const char *src); + +// Return the number of bytes in a string. +size_t n_strlen(const char *s); + +// appends a copy of a string, to the end of another string. +char* n_strcat(char *dst, const char *src); + +// Return a upper-case letter, +// equivalent to the lower-case letter given. +int n_toupper(int c); + +// Return a lower-case letter, +// equivalent to the upper-case letter given. +int n_tolower(int c); + +// Convert a string in integer. +int n_atoi(const char *str); + +// Concerning memory area operations : +// ----------------------------------- + +// Compare two memory area, looking at the first n bytes . +int n_memcmp(const void *s1, const void *s2, size_t n); + +// Copy n byte from an memory area to another. +void* n_memcpy(void *s1, const void *s2, size_t n); + +// Set the first n bytes in a memory area to a specified value. +void* n_memset(void *s, int c, size_t n); diff --git a/test_programs/userlib/sys.s b/test_programs/userlib/sys.s new file mode 100644 index 0000000..64c3069 --- /dev/null +++ b/test_programs/userlib/sys.s @@ -0,0 +1,343 @@ +/* Start.s + * Assembly language assist for user programs running on top of Nachos. + * + * Since we don't want to pull in the entire C library, we define + * what we need for a user program here, namely Start and the system + * calls. + * + * ----------------------------------------------------- + * This file is part of the BurritOS distribution + * Copyright (c) 2022 University of Rennes 1. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details + * (see see ). + * ----------------------------------------------------- + */ + +#define IN_ASM +#include "userlib/syscall.h" + + // Equivalent to ".text", but with a different name, in order + // to be correctly handled by the ldscript + .section .sys,"ax",@progbits + + .align 2 + +/* ------------------------------------------------------------- + * __start + * Initialize running a C program, by calling "main". + * + * NOTE: This has to be first, so that it gets loaded at location 0. + * The Nachos kernel always starts a program by jumping to location 0. + * ------------------------------------------------------------- + */ + + .globl __start + .type __start, @function +__start: + +/* Call the program entry point */ + call main + li a0, 0 + call Exit + jr ra /* if we return from main, exit(0) */ + + +/* ------------------------------------------------------------- + * System call stubs: + * Assembly language assist to make system calls to the Nachos kernel. + * There is one stub per system call, that places the code for the + * system call into register r10, and leaves the arguments to the + * system call alone (in other words, arg1 is in r12, arg2 is + * in r13, arg3 is in r14, arg4 is in r15) + * + * The return value is in r10. This follows the standard C calling + * convention on the RISC-V. + * ------------------------------------------------------------- + */ + + .globl Halt + .type __Halt, @function +Halt: + addi a7,zero,SC_HALT + ecall + jr ra + + + .globl Exit + .type __Exit, @function +Exit: + addi a7,zero,SC_EXIT + ecall + jr ra + + + .globl Exec + .type __Exec, @function +Exec: + addi a7,zero,SC_EXEC + ecall + jr ra + + + .globl Join + .type __Join, @function +Join: + addi a7,zero,SC_JOIN + ecall + jr ra + + + .globl Create + .type __Create, @function +Create: + addi a7,zero,SC_CREATE + ecall + jr ra + + + .globl Open + .type __Open, @function +Open: + addi a7,zero,SC_OPEN + ecall + jr ra + + + .globl Read + .type __Read, @function +Read: + addi a7,zero,SC_READ + ecall + jr ra + + + + .globl Write + .type __Write, @function +Write: + addi a7,zero,SC_WRITE + ecall + jr ra + + + .globl Seek + .type __Seek, @function +Seek: + addi a7,zero,SC_SEEK + ecall + jr ra + + + .globl Close + .type __Close, @function +Close: + addi a7,zero,SC_CLOSE + ecall + jr ra + + + .globl FSList + .type __FSList, @function +FSList: + addi a7,zero,SC_FSLIST + ecall + jr ra + + + .globl newThread + .type __newThread, @function +newThread: + addi a7,zero,SC_NEW_THREAD + ecall + jr ra + + + .globl Remove + .type __Remove, @function +Remove: + addi a7,zero,SC_REMOVE + ecall + jr ra + + + .globl Yield + .type __Yield, @function +Yield: + addi a7,zero,SC_YIELD + ecall + jr ra + + + .globl PError + .type __PError, @function +PError: + addi a7,zero,SC_PERROR + ecall + jr ra + + + .globl P + .type __P, @function +P: + addi a7,zero,SC_P + ecall + jr ra + + + .globl V + .type __V, @function +V: + addi a7,zero,SC_V + ecall + jr ra + + .globl SemCreate + .type __SemCreate, @function +SemCreate: + addi a7,zero,SC_SEM_CREATE + ecall + jr ra + + + .globl SemDestroy + .type __SemDestroy, @function +SemDestroy: + addi a7,zero,SC_SEM_DESTROY + ecall + jr ra + + + .globl SysTime + .type __SysTime, @function +SysTime: + addi a7,zero,SC_SYS_TIME + ecall + jr ra + + + .globl LockCreate + .type __LockCreate, @function +LockCreate: + addi a7,zero,SC_LOCK_CREATE + ecall + jr ra + + .globl LockDestroy + .type __LockDestroy, @function +LockDestroy: + addi a7,zero,SC_LOCK_DESTROY + ecall + jr ra + + + .globl LockAcquire + .type __LockAquire, @function +LockAcquire: + addi a7,zero,SC_LOCK_ACQUIRE + ecall + jr ra + + + .globl LockRelease + .type __LockRelease, @function +LockRelease: + addi a7,zero,SC_LOCK_RELEASE + ecall + jr ra + + + .globl CondCreate + .type __CondCreate, @function +CondCreate: + addi a7,zero,SC_COND_CREATE + ecall + jr ra + + + .globl CondDestroy + .type __CondDestroy, @function +CondDestroy: + addi a7,zero,SC_COND_DESTROY + ecall + jr ra + + + .globl CondWait + .type __CondWait, @function +CondWait: + addi a7,zero,SC_COND_WAIT + ecall + jr ra + + + .globl CondSignal + .type __CondSignal, @function +CondSignal: + addi a7,zero,SC_COND_SIGNAL + ecall + jr ra + + + .globl CondBroadcast + .type __CondBroadcast, @function +CondBroadcast: + addi a7,zero,SC_COND_BROADCAST + ecall + jr ra + + + .globl TtySend + .type __TtySend, @function +TtySend: + addi a7,zero,SC_TTY_SEND + ecall + jr ra + + + .globl TtyReceive + .type __TtyReceive, @function +TtyReceive: + addi a7,zero,SC_TTY_RECEIVE + ecall + jr ra + + + .globl Mkdir + .type __Mkdir, @function +Mkdir: + addi a7,zero,SC_MKDIR + ecall + jr ra + + + .globl Rmdir + .type __Rmdir, @function +Rmdir: + addi a7,zero,SC_RMDIR + ecall + jr ra + + + .globl Mmap + .type __Mmap, @function +Mmap: + addi a7,zero,SC_MMAP + ecall + jr ra + + .globl Debug + .type __Debug, @function +Debug: + addi a7,zero,SC_DEBUG + ecall + jr ra + + diff --git a/test_programs/userlib/syscall.h b/test_programs/userlib/syscall.h new file mode 100644 index 0000000..e650db1 --- /dev/null +++ b/test_programs/userlib/syscall.h @@ -0,0 +1,287 @@ +/*! \file syscall.h + \brief Nachos system call interface. + + These are Nachos kernel operations + that can be invoked from user programs, by trapping to the kernel + via the "syscall" instruction. + + This file is included by user programs and by the Nachos kernel. + + Each of these is invoked by a user program by simply calling the + procedure; an assembly language stub stuffs the system call code + into a register, and traps to the kernel. The kernel procedures + are then invoked in the Nachos kernel, after appropriate error checking, + from the system call entry point in exception.cc. + + * ----------------------------------------------------- + * This file is part of the Nachos-RiscV distribution + * Copyright (c) 2022 University of Rennes 1. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details + * (see see ). + * ----------------------------------------------------- + */ + + +#ifndef SYSCALLS_H +#define SYSCALLS_H + +//#include "kernel/copyright.h" + +/* system call codes -- used by the stubs to tell the kernel which system call + * is being asked for + */ +#define SC_HALT 0 +#define SC_EXIT 1 +#define SC_EXEC 2 +#define SC_JOIN 3 +#define SC_CREATE 4 +#define SC_OPEN 5 +#define SC_READ 6 +#define SC_WRITE 7 +#define SC_SEEK 8 +#define SC_CLOSE 9 +#define SC_NEW_THREAD 10 +#define SC_YIELD 11 +#define SC_PERROR 12 +#define SC_P 13 +#define SC_V 14 +#define SC_SEM_CREATE 15 +#define SC_SEM_DESTROY 16 +#define SC_LOCK_CREATE 17 +#define SC_LOCK_DESTROY 18 +#define SC_LOCK_ACQUIRE 19 +#define SC_LOCK_RELEASE 20 +#define SC_COND_CREATE 21 +#define SC_COND_DESTROY 22 +#define SC_COND_WAIT 23 +#define SC_COND_SIGNAL 24 +#define SC_COND_BROADCAST 25 +#define SC_TTY_SEND 26 +#define SC_TTY_RECEIVE 27 +#define SC_MKDIR 28 +#define SC_RMDIR 29 +#define SC_REMOVE 30 +#define SC_FSLIST 31 +#define SC_SYS_TIME 32 +#define SC_MMAP 33 +#define SC_DEBUG 34 + +#ifndef IN_ASM + +/* The system call interface. These are the operations the Nachos + * kernel needs to support, to be able to run user programs. + * + */ + +typedef int t_error; + +/* Stop Nachos, and print out performance stats */ +void Halt(); + + +/* Return the time spent running Nachos */ + +/*! \brief Defines the Nachos basic time unit */ +typedef struct { + long seconds; + long nanos; +} Nachos_Time; +void SysTime(Nachos_Time *t); + +/* Address space control operations: Exit, Exec, and Join */ + +/* This user program is done (status = 0 means exited normally). */ +void Exit(int status); + +/* A unique identifier for a thread executed within a user program */ +typedef unsigned long ThreadId; + +/* Run the executable, stored in the Nachos file "name", and return the + * master thread identifier + */ +ThreadId Exec(char *name); + +/* Create a new thread in the current process + * Return thread identifier + */ +ThreadId newThread(char * debug_name, int func, int arg); + +/* Only return once the the thread "id" has finished. + */ +t_error Join(ThreadId id); + +/* Yield the CPU to another runnable thread, whether in this address space + * or not. + */ +void Yield(); + +/*! Print the last error message with the personalized one "mess" */ +void PError(char *mess); + +/* File system operations: Create, Open, Read, Write, Seek, Close + * These functions are patterned after UNIX -- files represent + * both files *and* hardware I/O devices. + * + * If this assignment is done before doing the file system assignment, + * note that the Nachos file system has a stub implementation, which + * will work for the purposes of testing out these routines. + */ + +/* A unique identifier for an open Nachos file. */ +typedef unsigned long OpenFileId; + +/* when an address space starts up, it has two open files, representing + * keyboard input and display output (in UNIX terms, stdin and stdout). + * Read and Write can be used directly on these, without first opening + * the console device. + */ +#define CONSOLE_INPUT 0 +#define CONSOLE_OUTPUT 1 + +/* Create a Nachos file, with "name" */ +t_error Create(char *name,int size); + +/* Open the Nachos file "name", and return an "OpenFileId" that can + * be used to read and write to the file. + */ +OpenFileId Open(char *name); + +/* Write "size" bytes from "buffer" to the open file. */ +t_error Write(char *buffer, int size, OpenFileId id); + +/* Read "size" bytes from the open file into "buffer". + * Return the number of bytes actually read -- if the open file isn't + * long enough, or if it is an I/O device, and there aren't enough + * characters to read, return whatever is available (for I/O devices, + * you should always wait until you can return at least one character). + */ +t_error Read(char *buffer, int size, OpenFileId id); + +/* Seek to a specified offset into an opened file */ +t_error Seek(int offset, OpenFileId id); + +#ifndef SYSDEP_H +/* Close the file, we're done reading and writing to it. */ +t_error Close(OpenFileId id); +#endif // SYSDEP_H + +/* Remove the file */ +t_error Remove(char* name); + +/******************************************************************/ +/* system calls concerning directory management */ + +/* Create a new repertory + Return a negative number if an error ocurred. +*/ +t_error Mkdir(char* name); + +/* Destroy a repertory, which must be empty. + Return a negative number if an error ocurred. +*/ +t_error Rmdir(char* name); + +/* List the content of NachOS FileSystem */ +t_error FSList(); + +/******************************************************************/ +/* User-level synchronization operations : */ + +/* System calls concerning semaphores management */ + +typedef unsigned long SemId; + +/* Create a semaphore, initialising it at count. + Return a Semid, which will enable to do operations on this + semaphore */ +SemId SemCreate(char * debug_name, int count); + +/* Destroy a semaphore identified by sema. + Return a negative number if an error occured during the destruction */ +t_error SemDestroy(SemId sema); + +/* Do the operation P() on the semaphore sema */ +t_error P(SemId sema); + +/* Do the operation V() on the semaphore sema */ +t_error V(SemId sema); + +/* System calls concerning locks management */ +typedef unsigned long LockId; + +/* Create a lock. + Return an identifier */ +LockId LockCreate(char * debug_name); + +/* Destroy a lock. + Return a negative number if an error ocurred + during the destruction. */ +t_error LockDestroy(LockId id); + +/* Do the operation Acquire on the lock id. + Return a negative number if an error ocurred. */ +t_error LockAcquire(LockId id); + +/* Do the operation Release on the lock id. + Return a negative number if an error ocurred. +*/ +t_error LockRelease(LockId id); + +/* System calls concerning conditions variables. */ +typedef unsigned long CondId; + +/* Create a new condition variable */ +CondId CondCreate(char * debug_name); + +/* Destroy a condition variable. + Return a negative number if an error ocurred. +*/ +t_error CondDestroy(CondId id); + +/* Do the operation Wait on a condition variable. + Returns a negative number if an error ocurred. +*/ +t_error CondWait(CondId cond); + +/* Do the operation Signal on a condition variable (wake up only one thread). + Return a negative number if an error ocurred. +*/ +t_error CondSignal(CondId cond); + +/* Do the operation Signal on a condition variable (wake up all threads). + Return a negative number if an error ocurred. +*/ +t_error CondBroadcast(CondId cond); + +/******************************************************************/ +/* System calls concerning serial port and console */ + +/* Send the message on the serial communication link. + Returns the number of bytes successfully sent. +*/ +int TtySend(char *mess); + +/* Wait for a message comming from the serial communication link. + The length of the buffer where the bytes will be copied is given as a parameter. + Returns the number of characters actually received. +*/ +int TtyReceive(char *mess,int length); + +/* Map an opened file in memory. Size is the size to be mapped in bytes. +*/ +void *Mmap(OpenFileId f, int size); + +/* For debug purpose +*/ +void Debug(int param); + +#endif // IN_ASM +#endif // SYSCALL_H From f1a03b96a32d09bfff0a3e3377a29c9d5a9a2dda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Wed, 8 Mar 2023 13:01:36 +0100 Subject: [PATCH 028/115] Updated gitignore --- test_programs/.gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test_programs/.gitignore b/test_programs/.gitignore index 0a0178a..f7e49da 100644 --- a/test_programs/.gitignore +++ b/test_programs/.gitignore @@ -1,4 +1,4 @@ # Ignoring dump files *.dump *.o -./target \ No newline at end of file +target \ No newline at end of file From 765f5b83284087dfec2f7cb31bc749a71e90c529 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Wed, 8 Mar 2023 13:02:03 +0100 Subject: [PATCH 029/115] Updated makefile --- test_programs/Makefile | 12 +++++- test_programs/Makefile.tests | 38 +++++++++++++++++++ test_programs/riscv_instructions/Makefile | 7 +++- .../riscv_instructions/boolean_logic/Makefile | 9 ++++- .../jump_instructions/Makefile | 6 ++- .../simple_arithmetics/Makefile | 6 ++- .../simple_arithmetics/unsigned_addition.c | 3 ++ 7 files changed, 72 insertions(+), 9 deletions(-) create mode 100644 test_programs/Makefile.tests diff --git a/test_programs/Makefile b/test_programs/Makefile index 662a888..ad2c039 100644 --- a/test_programs/Makefile +++ b/test_programs/Makefile @@ -6,8 +6,16 @@ include $(TOPDIR)/Makefile.config # dumps: $(MAKE) dumps -C riscv_instructions/ - mkdir -p ${TOPDIR}/target - find . -name '*.dump' -exec mv {} ${TOPDIR}/target \; + mkdir -p ${TOPDIR}/target/dumps/ + find . -name '*.dump' -exec mv {} ${TOPDIR}/target/dumps/ \; + +user_lib: + $(MAKE) -C userlib/ + +tests: user_lib + $(MAKE) tests -C riscv_instructions/ + mkdir -p ${TOPDIR}/target/guac/ + find . -name '*.guac' -exec mv {} ${TOPDIR}/target/guac/ \; clean: rm -rf $(TOPDIR)/target \ No newline at end of file diff --git a/test_programs/Makefile.tests b/test_programs/Makefile.tests new file mode 100644 index 0000000..681d31f --- /dev/null +++ b/test_programs/Makefile.tests @@ -0,0 +1,38 @@ +include $(TOPDIR)/Makefile.config +USERLIB = $(TOPDIR)/userlib +INCPATH += -I$(TOPDIR) -I$(USERLIB) +LDFLAGS = $(RISCV_LDFLAGS) -T $(USERLIB)/ldscript.lds +ASFLAGS = $(RISCV_ASFLAGS) $(INCPATH) +CFLAGS = $(RISCV_CFLAGS) $(INCPATH) + +# Rules +%.o: %.s + $(RISCV_AS) $(ASFLAGS) -c $< + +%.o: %.c + $(RISCV_GCC) $(CFLAGS) -c $< + +%.dump: %.o + $(RISCV_OBJCOPY) -j .text -O $(DUMP_FORMAT) $< $@ + +%.guac: %.o + $(RISCV_LD) $(LDFLAGS) $+ -o $@ + +# Dependencies +.%.d: %.s + @echo Generating dependencies for $< + @$(SHELL) -ec '$(GCC) -x assembler-with-cpp -M $(ASFLAGS) $< \ + | sed '\''s/\($*\)\.o[ :]*/\1.o $@ : /g'\'' > $@; \ + [ -s $@ ] || rm -f $@' + +.%.d: %.c + @echo Generating dependencies for $< + @$(SHELL) -ec '$(GCC) -M $(CFLAGS) $< \ + | sed '\''s/\($*\)\.o[ :]*/\1.o $@ : /g'\'' > $@; \ + [ -s $@ ] || rm -f $@' + +# Targets +#clean: +# rm -rf *.o 2> /dev/null +# rm -rf *.dump 2> /dev/null +# rm -rf *.guac 2> /dev/null \ No newline at end of file diff --git a/test_programs/riscv_instructions/Makefile b/test_programs/riscv_instructions/Makefile index c134d5f..22a1303 100644 --- a/test_programs/riscv_instructions/Makefile +++ b/test_programs/riscv_instructions/Makefile @@ -1,4 +1,9 @@ dumps: make dumps -C boolean_logic/ make dumps -C jump_instructions/ - make dumps -C simple_arithmetics/ \ No newline at end of file + make dumps -C simple_arithmetics/ + +tests: + make tests -C boolean_logic/ + make tests -C jump_instructions/ + make tests -C simple_arithmetics/ \ No newline at end of file diff --git a/test_programs/riscv_instructions/boolean_logic/Makefile b/test_programs/riscv_instructions/boolean_logic/Makefile index 2150f14..5f738e9 100644 --- a/test_programs/riscv_instructions/boolean_logic/Makefile +++ b/test_programs/riscv_instructions/boolean_logic/Makefile @@ -1,4 +1,9 @@ TOPDIR = ../.. -include $(TOPDIR)/Makefile.dumps +include $(TOPDIR)/Makefile.tests -dumps: comparisons.dump if.dump switch.dump \ No newline at end of file +dumps: comparisons.dump if.dump switch.dump + +tests: comparisons.guac if.guac switch.guac + +# Dependances +$(PROGRAMS): % : $(USERLIB)/sys.o $(USERLIB)/libnachos.o %.o \ No newline at end of file diff --git a/test_programs/riscv_instructions/jump_instructions/Makefile b/test_programs/riscv_instructions/jump_instructions/Makefile index 75b887b..ce69447 100644 --- a/test_programs/riscv_instructions/jump_instructions/Makefile +++ b/test_programs/riscv_instructions/jump_instructions/Makefile @@ -1,4 +1,6 @@ TOPDIR = ../.. -include $(TOPDIR)/Makefile.dumps +include $(TOPDIR)/Makefile.tests -dumps: jump.dump ret.dump \ No newline at end of file +dumps: jump.dump ret.dump + +tests: jump.guac ret.guac \ No newline at end of file diff --git a/test_programs/riscv_instructions/simple_arithmetics/Makefile b/test_programs/riscv_instructions/simple_arithmetics/Makefile index d775b97..623b297 100644 --- a/test_programs/riscv_instructions/simple_arithmetics/Makefile +++ b/test_programs/riscv_instructions/simple_arithmetics/Makefile @@ -1,4 +1,6 @@ TOPDIR = ../.. -include $(TOPDIR)/Makefile.dumps +include $(TOPDIR)/Makefile.tests -dumps: unsigned_addition.dump unsigned_division.dump unsigned_multiplication.dump unsigned_substraction.dump \ No newline at end of file +dumps: unsigned_addition.dump unsigned_division.dump unsigned_multiplication.dump unsigned_substraction.dump + +tests: unsigned_addition.guac unsigned_division.guac unsigned_multiplication.guac unsigned_substraction.guac \ No newline at end of file diff --git a/test_programs/riscv_instructions/simple_arithmetics/unsigned_addition.c b/test_programs/riscv_instructions/simple_arithmetics/unsigned_addition.c index 05a7829..f1c005a 100644 --- a/test_programs/riscv_instructions/simple_arithmetics/unsigned_addition.c +++ b/test_programs/riscv_instructions/simple_arithmetics/unsigned_addition.c @@ -1,3 +1,6 @@ +#include "userlib/syscall.h" +#include "userlib/libnachos.h" + // EXPECTS TWO VARIABLES WITH A VALUE OF UNSIGNED 1 int main() { unsigned int x = 0; From e60ca57bc75eb6cf3e94f51fd0e05c9d444af2cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Rativel?= Date: Wed, 8 Mar 2023 13:04:03 +0100 Subject: [PATCH 030/115] Warning fix --- src/simulator/mem_cmp.rs | 47 ++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/src/simulator/mem_cmp.rs b/src/simulator/mem_cmp.rs index febe371..7e7e8f5 100644 --- a/src/simulator/mem_cmp.rs +++ b/src/simulator/mem_cmp.rs @@ -1,5 +1,4 @@ use std::fs; -use std::io; use std::io::BufRead; use std::io::BufReader; use std::io::Lines; @@ -70,11 +69,11 @@ impl Section{ } } - Section{addr:addr, len:len, content:content} + Section{addr, len, content} } - fn print_Section(s: &Section){ + fn print_section(s: &Section){ println!("ADDR :: {:x}", s.addr); println!("LEN :: {:x}", s.len); println!("CONTENT :: {:?}", s.content); @@ -84,14 +83,14 @@ impl Section{ /* * Representation de l'etat de la mémoire (apres execution.... a confirmer), sous forme de sections */ -pub struct Mem_Checker{ +pub struct MemChecker{ pc: usize, sp: usize, sections: Vec
, } -impl Mem_Checker{ +impl MemChecker{ ///Translate lines of a file in e Vector of String ///We need this method to parse the memory we received @@ -104,7 +103,7 @@ impl Mem_Checker{ /// - A vector of String where each line of the file os an element of the vector fn vect_from_lines(lines: &mut Lines>, pc: &mut usize, sp: &mut usize) -> Vec{ let mut vector = Vec::new(); - for (i,line) in lines.enumerate() { + for (_,line) in lines.enumerate() { vector.push(line.unwrap()); } let size = vector.len(); @@ -121,16 +120,16 @@ impl Mem_Checker{ /// /// ### Return /// Mem-checker filled - pub fn from(path: &String) -> Mem_Checker { + pub fn from(path: &String) -> MemChecker { let file = fs::File::open(path).expect("Wrong filename"); - let reader = io::BufReader::new(file); + let reader = BufReader::new(file); let mut lines = reader.lines(); let mut pc: usize = 0; let mut sp: usize = 0; - let vector = Mem_Checker::vect_from_lines(&mut lines, &mut pc, &mut sp); + let vector = MemChecker::vect_from_lines(&mut lines, &mut pc, &mut sp); let mut sections: Vec
= Vec::new(); let mut tmp_addr_str: String = String::new(); @@ -159,7 +158,7 @@ impl Mem_Checker{ } - Mem_Checker{pc:pc, sp:sp, sections:sections} + MemChecker{pc, sp, sections} } @@ -168,13 +167,13 @@ impl Mem_Checker{ /// ### Parameter /// /// - **m_c** Contains the data we want to print - pub fn print_Mem_Checker(m_c: &Mem_Checker){ + pub fn print_mem_checker(m_c: &MemChecker){ println!("PC :: {:x}", m_c.pc); println!("SP :: {:x}", m_c.sp); for(i,s) in m_c.sections.iter().enumerate() { println!("\nSection {}\n", i); - Section::print_Section(&s); + Section::print_section(&s); } } @@ -185,7 +184,7 @@ impl Mem_Checker{ /// /// - **m_c** contains the data /// - **machine** contains the memry to fill - pub fn fill_memory_from_Mem_Checker(m_c: &Mem_Checker, machine: &mut Machine){ + pub fn fill_memory_from_mem_checker(m_c: &MemChecker, machine: &mut Machine){ machine.sp = m_c.sp; machine.int_reg.set_reg(2, m_c.pc as i64); @@ -204,9 +203,9 @@ impl Mem_Checker{ /* * FOR DEBUG */ - fn compare_print_m_c_machine(m_c: &Mem_Checker, machine: &mut Machine){ + fn compare_print_m_c_machine(m_c: &MemChecker, machine: &mut Machine){ - Mem_Checker::print_Mem_Checker(m_c); + MemChecker::print_mem_checker(m_c); for section in m_c.sections.iter() { @@ -222,7 +221,7 @@ impl Mem_Checker{ } - pub fn compare_machine_memory(m_c: &Mem_Checker, machine: &Machine) -> bool { + pub fn compare_machine_memory(m_c: &MemChecker, machine: &Machine) -> bool { for section in m_c.sections.iter() { for i in 0..section.len { @@ -252,7 +251,7 @@ fn string_hex_to_usize(s: &String) -> usize { for (i,c )in s.chars().enumerate(){ //println!("Current char :: {} :: Current pow :: {} ::", c, max_pow - (i as u32)); - let tmp: usize = (one_hex_to_dec(c) as usize); + let tmp: usize = one_hex_to_dec(c) as usize; ret_value += base.pow(max_pow - (i as u32))*tmp; } @@ -297,7 +296,7 @@ fn two_hex_to_u8(c1: char, c2: char) -> u8 { */ fn test_show_sections_file(){ let file = fs::File::open("test_file_section.txt").expect("Wrong filename"); - let reader = io::BufReader::new(file); + let reader = BufReader::new(file); for line in reader.lines() { //println!("Tailles de la ligne : {}", @@ -318,14 +317,14 @@ mod tests { #[test] fn test_fill_memory(){ let path = "osef".to_string(); - let m_c = Mem_Checker::from(&path); + let m_c = MemChecker::from(&path); let mut machine = Machine::_init_machine(); - Mem_Checker::fill_memory_from_Mem_Checker(&m_c, &mut machine); + MemChecker::fill_memory_from_mem_checker(&m_c, &mut machine); print!("\n Comparing memory from loaded context\n\n"); - Mem_Checker::compare_print_m_c_machine(&m_c, &mut machine); + MemChecker::compare_print_m_c_machine(&m_c, &mut machine); } @@ -339,10 +338,10 @@ mod tests { } #[test] - fn test_create_Mem_Checker(){ + fn test_create_mem_checker(){ let path: String = "osef".to_string(); - let m_c = Mem_Checker::from(&path); - Mem_Checker::print_Mem_Checker(&m_c); + let m_c = MemChecker::from(&path); + MemChecker::print_mem_checker(&m_c); } From f37820ab5be7f402e5a445196b6c7473855031bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Wed, 8 Mar 2023 13:04:13 +0100 Subject: [PATCH 031/115] Removed makefile.dumps --- test_programs/Makefile.dumps | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 test_programs/Makefile.dumps diff --git a/test_programs/Makefile.dumps b/test_programs/Makefile.dumps deleted file mode 100644 index a9824c1..0000000 --- a/test_programs/Makefile.dumps +++ /dev/null @@ -1,12 +0,0 @@ -include $(TOPDIR)/Makefile.config - -%.o: %.c - $(RISCV_GCC) $(RISCV_CFLAGS) -c $< - - -%.dump: %.o - $(RISCV_OBJCOPY) -j .text -O $(DUMP_FORMAT) $< $@ - -clean: - rm -rf *.o 2> /dev/null - rm -rf *.dump 2> /dev/null \ No newline at end of file From 58890d85d1e524a99989698bfaf63bfc4811e57d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Wed, 8 Mar 2023 13:05:59 +0100 Subject: [PATCH 032/115] Fixed naming conventions not followed --- src/main.rs | 4 ++-- src/simulator/mem_cmp.rs | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main.rs b/src/main.rs index 97c0ec1..64f37a3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,8 +6,8 @@ use simulator::mem_cmp; fn main() { let mut m = Machine::_init_machine(); let path = "memoryJump.txt".to_string(); - let checker = mem_cmp::Mem_Checker::from(&path); - mem_cmp::Mem_Checker::fill_memory_from_Mem_Checker(&checker, &mut m); + let checker = mem_cmp::MemChecker::from(&path); + mem_cmp::MemChecker::fill_memory_from_mem_checker(&checker, &mut m); //mem_cmp::Mem_Checker::print_Mem_Checker(&checker); //Machine::print_memory(&mut m, 0x400000, 0x405000); //Machine::run(m); diff --git a/src/simulator/mem_cmp.rs b/src/simulator/mem_cmp.rs index 7e7e8f5..cbc77fe 100644 --- a/src/simulator/mem_cmp.rs +++ b/src/simulator/mem_cmp.rs @@ -7,7 +7,6 @@ use crate::Machine; const MEM_SIZE : usize = 4096; - /* TRUCS MANQUANTS * Verifier qu'il y a un nombre pair de caractere hexa dans la ligne correspondante d'une section du fichier source * Sinon on ne peut pas automatiquement remplir chaque octect car 2 hexa = 1 octet From de0013ad3ee22e2cfd12c38cb673d8e998c36ea2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Rativel?= Date: Wed, 8 Mar 2023 13:34:12 +0100 Subject: [PATCH 033/115] remade compare_machine_memory --- src/simulator/mem_cmp.rs | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/simulator/mem_cmp.rs b/src/simulator/mem_cmp.rs index cbc77fe..9c4d1da 100644 --- a/src/simulator/mem_cmp.rs +++ b/src/simulator/mem_cmp.rs @@ -220,17 +220,16 @@ impl MemChecker{ } + /// Compare sections of a memChecker and a machine memory + /// + /// ### Parameters + /// + /// - **m_c** contains section of the memory checker + /// - **machine** contains the main memory pub fn compare_machine_memory(m_c: &MemChecker, machine: &Machine) -> bool { - - for section in m_c.sections.iter() { - for i in 0..section.len { - if machine.main_memory[section.addr + i] != section.content[i] { - return false; - } - } - } - - return true; + m_c.sections.iter().map(|section| { + !(0..section.len).into_iter().all(|i| machine.main_memory[section.addr + i] == section.content[i]) + }).all(|e| e == true) } From 75734b9e913de44ad7d5db7ed673e97ac8fe915d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Wed, 8 Mar 2023 12:42:20 +0000 Subject: [PATCH 034/115] Update .gitlab-ci.yml file --- .gitlab-ci.yml | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..b954b98 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,45 @@ +# This file is a template, and might need editing before it works on your project. +# This is a sample GitLab CI/CD configuration file that should run without any modifications. +# It demonstrates a basic 3 stage CI/CD pipeline. Instead of real tests or scripts, +# it uses echo commands to simulate the pipeline execution. +# +# A pipeline is composed of independent jobs that run scripts, grouped into stages. +# Stages run in sequential order, but jobs within stages run in parallel. +# +# For more information, see: https://docs.gitlab.com/ee/ci/yaml/index.html#stages +# +# You can copy and paste this template into a new `.gitlab-ci.yml` file. +# You should not add this template to an existing `.gitlab-ci.yml` file by using the `include:` keyword. +# +# To contribute improvements to CI/CD templates, please follow the Development guide at: +# https://docs.gitlab.com/ee/development/cicd/templates.html +# This specific template is located at: +# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Getting-Started.gitlab-ci.yml + +stages: # List of stages for jobs, and their order of execution + - build + - test + +build-job: # This job runs in the build stage, which runs first. + stage: build + image: rust:latest + script: + - echo "Compiling the code..." + - cargo build + - echo "Compile complete." + +unit-test-job: # This job runs in the test stage. + stage: test # It only starts when the job in the build stage completes successfully. + image: rust:latest + script: + - echo "Running unit tests..." + - cargo test + - echo "Code coverage is 90%" + +lint-test-job: # This job also runs in the test stage. + stage: test # It can run at the same time as unit-test-job (in parallel). + image: rust:latest + script: + - echo "Linting code... This will take about 10 seconds." + - cargo clippy + - echo "No lint issues found." \ No newline at end of file From 148664e2cdcbf29952de02b10ca816c9c8aa3ac9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Wed, 8 Mar 2023 12:45:36 +0000 Subject: [PATCH 035/115] Update .gitlab-ci.yml file --- .gitlab-ci.yml | 34 ++++++++-------------------------- 1 file changed, 8 insertions(+), 26 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b954b98..246ad21 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,44 +1,26 @@ -# This file is a template, and might need editing before it works on your project. -# This is a sample GitLab CI/CD configuration file that should run without any modifications. -# It demonstrates a basic 3 stage CI/CD pipeline. Instead of real tests or scripts, -# it uses echo commands to simulate the pipeline execution. -# -# A pipeline is composed of independent jobs that run scripts, grouped into stages. -# Stages run in sequential order, but jobs within stages run in parallel. -# -# For more information, see: https://docs.gitlab.com/ee/ci/yaml/index.html#stages -# -# You can copy and paste this template into a new `.gitlab-ci.yml` file. -# You should not add this template to an existing `.gitlab-ci.yml` file by using the `include:` keyword. -# -# To contribute improvements to CI/CD templates, please follow the Development guide at: -# https://docs.gitlab.com/ee/development/cicd/templates.html -# This specific template is located at: -# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Getting-Started.gitlab-ci.yml +default: + image: rust:latest -stages: # List of stages for jobs, and their order of execution +stages: - build - test -build-job: # This job runs in the build stage, which runs first. +build-job: stage: build - image: rust:latest script: - echo "Compiling the code..." - cargo build - echo "Compile complete." -unit-test-job: # This job runs in the test stage. - stage: test # It only starts when the job in the build stage completes successfully. - image: rust:latest +unit-test-job: + stage: test script: - echo "Running unit tests..." - cargo test - echo "Code coverage is 90%" -lint-test-job: # This job also runs in the test stage. - stage: test # It can run at the same time as unit-test-job (in parallel). - image: rust:latest +lint-test-job: + stage: test script: - echo "Linting code... This will take about 10 seconds." - cargo clippy From 2cd7980cd035b5100148b55c075fb627a2f8344a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Wed, 8 Mar 2023 12:51:31 +0000 Subject: [PATCH 036/115] Update .gitlab-ci.yml file --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 246ad21..7efbdeb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,5 +1,7 @@ default: image: rust:latest + before_script: + - curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain none stages: - build From 8889d43f9d7f0a81846a74a6ae6497cfb8b8c465 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Wed, 8 Mar 2023 14:09:07 +0100 Subject: [PATCH 037/115] Fixed ucontext & libc --- src/kernel/ucontext.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/kernel/ucontext.rs b/src/kernel/ucontext.rs index 6217a1d..16c29f1 100644 --- a/src/kernel/ucontext.rs +++ b/src/kernel/ucontext.rs @@ -11,7 +11,7 @@ use std::mem::MaybeUninit; #[derive(PartialEq)] pub struct UContextT { #[cfg(not(target_os = "windows"))] // struct non disponible sur la libc sur windows - pub buf: lib::ucontext_t, + pub buf: libc::ucontext_t, pub stackBottom: Vec } @@ -19,8 +19,8 @@ pub struct UContextT { impl UContextT { pub fn new() -> Self { - let mut context = MaybeUninit::::uninit(); - unsafe { lib::getcontext(context.as_mut_ptr()) }; + let mut context = MaybeUninit::::uninit(); + unsafe { libc::getcontext(context.as_mut_ptr()) }; Self { buf: unsafe { context.assume_init() }, stackBottom: Vec::default(), @@ -32,7 +32,7 @@ impl UContextT { /// Use `man getcontext` for more informations pub fn get_context(&mut self) -> i32 { unsafe { - lib::getcontext(&mut self.buf) + libc::getcontext(&mut self.buf) } } @@ -41,13 +41,13 @@ impl UContextT { /// Use `man setcontext` for more informations pub fn set_context(&mut self) -> i32 { unsafe { - lib::setcontext(&self.buf) + libc::setcontext(&self.buf) } } pub fn make_context(&mut self, func: extern "C" fn(), args: i32) { unsafe { - lib::makecontext(&mut self.buf, func, args) + libc::makecontext(&mut self.buf, func, args) } } From 4c79f86b89b599c9e104413df0d5e923714a3a69 Mon Sep 17 00:00:00 2001 From: Moysan Gabriel Date: Wed, 8 Mar 2023 14:38:02 +0100 Subject: [PATCH 038/115] dataTypes definition --- src/kernel/elf.rs | 143 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 src/kernel/elf.rs diff --git a/src/kernel/elf.rs b/src/kernel/elf.rs new file mode 100644 index 0000000..84dce69 --- /dev/null +++ b/src/kernel/elf.rs @@ -0,0 +1,143 @@ +//Declaration des alias + +/* + Def ELF : + + The header file defines the format of ELF executable binary + files. Amongst these files are normal executable files, relocatable + object files, core files and shared libraries. + + An executable file using the ELF file format consists of an ELF header, + followed by a program header table or a section header table, or both. + The ELF header is always at offset zero of the file. The program + header table and the section header table's offset in the file are + defined in the ELF header. The two tables describe the rest of the + particularities of the file + */ + + +/* Type for a 16-bit quantity. */ + +type Elf32_Half = u16; + +type Elf64_Half = u16; + +/* Types for signed and unsigned 32-bit quantities. */ + +type Elf32_Word = u32; + +type Elf32_Sword = i32; + +type Elf64_Word = u32; + +type Elf64_Sword = i32; + +/* Types for signed and unsigned 64-bit quantities. */ + +type Elf32_Xword = u64; + +type Elf32_Sxword = i64; + +type Elf64_Xword = u64; + +type Elf64_Sxword = i64; + +/* Type of addresses. */ + +type Elf32_Addr = u32; + +type Elf64_Addr = u64; + +/* Type of file offsets. */ + +type Elf32_Off = u32; + +type Elf64_Off = u64; + +//role de ce truc ? +const EI_NIDENT : u8 = 16; + +//ELF file header 32 bits +struct Elf32Ehdr{ + e_ident : [u8;EI_NIDENT],//16 octects décrivant comment le fichier doit etre parsé + //e_ident must starts with magice number : 0x 7f 45 4c 46 + e_type : Elf32_Half,//type of the file + e_machine : Elf32_Half,//type architecture machine + e_version : Elf32_Word,//always 1 + e_entry : Elf32_Addr,//entry point @ for executable + e_phoff : Elf32_Off,//Offset of the program header table + e_shoff : Elf32_Off,//Offset of the section header table + e_flags : Elf32_Word,//des flags ? + e_ehsize : Elf32_Half,//size of this (the header), redundant + e_phentsize : Elf32_Half,//size per program header + e_phnum : Elf32_Half,//number of program header + e_shentsize : Elf32_Half,//size per section header + e_shnum : Elf32_Half,//number of section header + e_shstrndx : Elf32_Half//section header string table index +} + + +//ELF file header 64 bits +//les champs ont le meme rôle que dans le header 32 bits +struct Elf64Ehdr{ + e_ident : [u8;EI_NIDENT], + e_type : Elf64_Half, + e_machine : Elf64_Half, + e_version : Elf64_Word, + e_entry : Elf64_Addr, + e_phoff : Elf64_Off, + e_shoff : Elf64_Off, + e_flags : Elf64_Word, + e_ehsize : Elf64_Half, + e_phentsize : Elf64_Half, + e_phnum : Elf64_Half, + e_shentsize : Elf64_Half, + e_shnum : Elf64_Half, + e_shstrndx : Elf64_Half +} + + + +/* e_ident offsets */ +const EI_MAG0 : u32 = 0; +const EI_MAG1 : u32 = 1; +const EI_MAG2 : u32 = 2; +const EI_MAG3 : u32 = 3; +const EI_CLASS : u32 = 4; +const EI_DATA : u32 = 5; +const EI_VERSION : u32 = 6; +const EI_PAD : u32 = 7; + +/* e_ident[EI_CLASS] */ +const ELFCLASSNONE : u32 = 0; +const ELFCLASS32 : u32 = 1; +const ELFCLASS64 : u32 = 2; + +/* e_ident[EI_DATA] */ +const ELFDATANONE : u32 = 0; +const ELFDATA2LSB : u32 = 1; +const ELFDATA2MSB : u32 = 2; + +/* e_type */ +const ET_NONE : u32 = 0; /* No file type */ +const ET_REL : u32 = 1; /* Relocatable file */ +const ET_EXEC : u32 = 2; /* Executable file */ +const ET_DYN : u32 = 3; /* Shared object file */ +const ET_CORE : u32 = 4; /* Core file */ +const ET_LOPROC : u32 = 0xff00; /* Processor-specific */ +const ET_HIPROC : u32 = 0xffff; /* Processor-specific */ + +/* e_machine */ +const EM_NONE : u32 = 0; /* No machine */ +const EM_M32 : u32 = 1; /* AT&T WE 32100 */ +const EM_SPARC : u32 = 2; /* SPARC */ +const EM_386 : u32 = 3; /* Intel 80386 */ +const EM_68K : u32 = 4; /* Motorola 68000 */ +const EM_88K : u32 = 5; /* Motorola 88000 */ +const EM_860 : u32 = 7; /* Intel 80860 */ +const EM_MIPS : u32 = 8; /* MIPS R3000 */ +const EM_RISC : u32 = 243; /* RISCV */ + +/* e_version */ + const EV_NONE : u32 = 0; /* invalid version */ + const EV_CURRENT : u32 = 1; /* current version */ From 0309614396de7d10547326ba756513f56514f4c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Wed, 8 Mar 2023 15:16:10 +0100 Subject: [PATCH 039/115] New system structure --- Cargo.lock | 7 ---- Cargo.toml | 1 - src/kernel/system.rs | 94 ++++++++++++++++++++++++++++++++++++++------ 3 files changed, 81 insertions(+), 21 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9898199..e3bcbe3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6,16 +6,9 @@ version = 3 name = "burritos" version = "0.1.0" dependencies = [ - "lazy_static", "libc", ] -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - [[package]] name = "libc" version = "0.2.139" diff --git a/Cargo.toml b/Cargo.toml index d9e3b00..1d66884 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,5 +4,4 @@ version = "0.1.0" edition = "2021" [dependencies] -lazy_static = "1.4.0" libc = { version = "0.2.139", features = ["extra_traits"] } diff --git a/src/kernel/system.rs b/src/kernel/system.rs index 1fd2de9..b0f54c8 100644 --- a/src/kernel/system.rs +++ b/src/kernel/system.rs @@ -1,19 +1,87 @@ -use std::{sync::{RwLock, Arc}}; +use std::rc::Rc; +use crate::{ + kernel::{ + thread::Thread, + scheduler::Scheduler + }, + utility::list::List, + simulator::machine::Machine +}; -use lazy_static::lazy_static; - -use crate::{kernel::{thread::Thread, scheduler::Scheduler}, utility::list::List, simulator::machine::Machine}; - -extern crate lazy_static; - -lazy_static! { - pub static ref G_MACHINE: RwLock = RwLock::new(Machine::_init_machine()); - pub static ref G_CURRENT_THREAD: RwLock> = RwLock::new(Option::None); - pub static ref G_THREAD_TO_BE_DESTROYED: RwLock> = RwLock::new(Option::None); - pub static ref G_ALIVE: RwLock>> = RwLock::new(List::new()); - pub static ref G_SCHEDULER: RwLock = RwLock::new(Scheduler::new()); +/// # System +/// +/// This structure represents the state of the threads running on the operating system. +/// It contains references to the following: +/// +/// - The simulated machine +/// - The current running thread +/// - The list of active threads +/// - The thread to be destroyed next +/// - The scheduler which acts upon these threads +pub struct System { + g_machine: Machine, + g_current_thread: Option, + g_thread_to_be_destroyed: Option, + g_alive: List>, + g_scheduler: Scheduler } +impl System { + + // GETTERS + + /// Returns the Machine + /// + /// Useful to access RAM, devices, ... + pub fn get_g_machine(&mut self) -> &mut Machine { + &mut self.g_machine + } + + /// Currently running thread + pub fn get_g_current_thread(&mut self) -> &mut Option { + &mut self.g_current_thread + } + + /// Thread to be destroyed by [...] + /// + /// TODO: Finish the comment with the relevant value + pub fn get_g_thread_to_be_destroyed(&mut self) -> &mut Option { + &mut self.g_thread_to_be_destroyed + } + + /// List of alive threads + pub fn get_g_alive(&mut self) -> &mut List> { + &mut self.g_alive + } + + /// Current scheduler + pub fn g_scheduler(&mut self) -> &mut Scheduler { + &mut self.g_scheduler + } + + // Setters + + /// Assign a machine to the system + pub fn set_g_machine(&mut self, machine: Machine) { + self.g_machine = machine + } + + /// Set currently running thread + pub fn set_g_current_thread(&mut self, thread: Option) { + self.g_current_thread = thread + } + + /// Set thread to be destroyed next + pub fn set_g_thread_to_be_destroyed(&mut self, thread: Option) { + self.g_thread_to_be_destroyed = thread + } + + /// Set Scheduler which will manage the threads + pub fn set_g_scheduler(&mut self, scheduler: Scheduler) { + self.g_scheduler = scheduler + } + +} #[derive(PartialEq)] pub enum ObjectType { From de502973c77a81833b286391a70cea4f1da469d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Wed, 8 Mar 2023 15:34:13 +0100 Subject: [PATCH 040/115] Added System initializer method --- src/kernel/system.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/kernel/system.rs b/src/kernel/system.rs index b0f54c8..e650097 100644 --- a/src/kernel/system.rs +++ b/src/kernel/system.rs @@ -28,6 +28,17 @@ pub struct System { impl System { + /// System constructor + pub fn new(machine: Machine, scheduler: Scheduler) -> Self { + Self { + g_machine: machine, + g_current_thread: None, + g_thread_to_be_destroyed: None, + g_alive: List::new(), + g_scheduler: scheduler + } + } + // GETTERS /// Returns the Machine From a11ca01368282787ecab5f1b7814f9488f9ca2ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Wed, 8 Mar 2023 15:38:19 +0100 Subject: [PATCH 041/115] Main now initializes System object --- src/main.rs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/main.rs b/src/main.rs index 986cf3b..9e6d750 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,15 +2,14 @@ mod simulator; mod kernel; pub mod utility; +use kernel::{ + scheduler::Scheduler, + system::System +}; use simulator::machine::Machine; fn main() { - let mut m = Machine::_init_machine(); - m.main_memory[4] = 43; - m.main_memory[5] = 150; - let a : u8 = 128; - let b : i8 = a as i8; - let c : u8 = b as u8; - println!("aaa {c}"); - println!("read_memory : {}", Machine::read_memory(&mut m, 2, 4)); + let machine = Machine::_init_machine(); + let scheduler = Scheduler::new(); + let system = System::new(machine, scheduler); } From cf65688566a91af5fb0df795432c8eb8ce591caa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Rativel?= Date: Wed, 8 Mar 2023 15:45:35 +0100 Subject: [PATCH 042/115] Sarting synch.rs implementation --- src/kernel/mod.rs | 3 ++- src/kernel/synch.rs | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 src/kernel/synch.rs diff --git a/src/kernel/mod.rs b/src/kernel/mod.rs index e061a2a..f1abafa 100644 --- a/src/kernel/mod.rs +++ b/src/kernel/mod.rs @@ -3,4 +3,5 @@ pub mod thread; pub mod scheduler; pub mod mgerror; pub mod system; -mod ucontext; \ No newline at end of file +mod ucontext; +mod synch; \ No newline at end of file diff --git a/src/kernel/synch.rs b/src/kernel/synch.rs new file mode 100644 index 0000000..8a7fe98 --- /dev/null +++ b/src/kernel/synch.rs @@ -0,0 +1,43 @@ +use crate::utility::list::List; +use crate::kernel::thread::Thread; +use std::rc::Rc; +use crate::simulator::interrupt::InterruptStatus::InterruptOff; +use crate::simulator::machine::Machine; + +pub struct Semaphore{ + + counter:i32, + waiting_queue:List> + +} + +impl Semaphore{ + + pub fn p(&mut self, current_thread:Rc, machine: &mut Machine){ + let old_status = machine.interrupt.set_status(InterruptOff); + self.counter-=1; + if self.counter < 0 { + self.waiting_queue.push(Rc::clone(¤t_thread)); + current_thread.sleep(); + } + machine.interrupt.set_status(old_status); + } + + pub fn v(&mut self, current_thread:Rc, machine: &mut Machine){ + let old_status = machine.interrupt.set_status(InterruptOff); + self.counter-=1; + if self.waiting_queue.peek == None { + self.waiting_queue.push(Rc::clone(¤t_thread)); + current_thread.sleep(); + } + machine.interrupt.set_status(old_status); + } +} + +pub struct Lock{ + +} + +pub struct Condition{ + +} \ No newline at end of file From a29f410a6637c7eedb942b2a4cd1016a8fc35042 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Rativel?= Date: Wed, 8 Mar 2023 15:46:27 +0100 Subject: [PATCH 043/115] small fix --- src/kernel/synch.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/kernel/synch.rs b/src/kernel/synch.rs index 8a7fe98..a2038e6 100644 --- a/src/kernel/synch.rs +++ b/src/kernel/synch.rs @@ -26,7 +26,7 @@ impl Semaphore{ pub fn v(&mut self, current_thread:Rc, machine: &mut Machine){ let old_status = machine.interrupt.set_status(InterruptOff); self.counter-=1; - if self.waiting_queue.peek == None { + if self.waiting_queue.peek() == None { self.waiting_queue.push(Rc::clone(¤t_thread)); current_thread.sleep(); } From 62b60186e97d29fe201e619239bdaa66820c2f79 Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Wed, 8 Mar 2023 15:46:53 +0100 Subject: [PATCH 044/115] Add list.remove(T) --- src/utility/list.rs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/utility/list.rs b/src/utility/list.rs index a90ec2b..e750b17 100644 --- a/src/utility/list.rs +++ b/src/utility/list.rs @@ -69,6 +69,33 @@ impl List { false } + /// Remove the item from the list + /// + /// Return true if the item has been found, otherwise return false + /// + /// Worst-case complexity is O(n) + pub fn remove(&mut self, item: T)-> bool { + let mut found = false; + let mut tmp_list: List = List::new(); + while !self.is_empty() { + let current = self.pop().unwrap(); + if current != item { + tmp_list.push(current); + } else { + found = true; + break; + } + } + while !tmp_list.is_empty() { + self.push(tmp_list.pop().unwrap()); + } + found + } + + pub fn is_empty(&self) -> bool { + self.head.is_none() + } + pub fn into_iter(self) -> IntoIter { IntoIter(self) } From 7520fd4458556bdba75a2ad0a60833a0e9f34dec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Wed, 8 Mar 2023 15:48:03 +0100 Subject: [PATCH 045/115] Added partialeq trait to List struct --- src/utility/list.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/utility/list.rs b/src/utility/list.rs index a90ec2b..88962c4 100644 --- a/src/utility/list.rs +++ b/src/utility/list.rs @@ -1,4 +1,5 @@ +#[derive(PartialEq)] pub struct List { head: Link, } From 5e265ab27b309cffbc8e5ab46ec688bb95b44726 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Wed, 8 Mar 2023 15:48:33 +0100 Subject: [PATCH 046/115] Added partialeq trait where relevant --- src/kernel/scheduler.rs | 1 + src/kernel/system.rs | 1 + src/kernel/thread.rs | 44 +++++++++----------------------------- src/simulator/interrupt.rs | 2 +- src/simulator/machine.rs | 3 ++- 5 files changed, 15 insertions(+), 36 deletions(-) diff --git a/src/kernel/scheduler.rs b/src/kernel/scheduler.rs index 3500f65..9753cdf 100644 --- a/src/kernel/scheduler.rs +++ b/src/kernel/scheduler.rs @@ -5,6 +5,7 @@ use crate::kernel::thread::Thread; use super::system::{G_CURRENT_THREAD, G_THREAD_TO_BE_DESTROYED}; +#[derive(PartialEq)] pub struct Scheduler { ready_list: List> } diff --git a/src/kernel/system.rs b/src/kernel/system.rs index e650097..8ef7ecb 100644 --- a/src/kernel/system.rs +++ b/src/kernel/system.rs @@ -18,6 +18,7 @@ use crate::{ /// - The list of active threads /// - The thread to be destroyed next /// - The scheduler which acts upon these threads +#[derive(PartialEq)] pub struct System { g_machine: Machine, g_current_thread: Option, diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index 0a163d0..ce4aec8 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -1,7 +1,7 @@ -use std::{sync::Arc}; +use std::{sync::Arc, rc::Rc}; -use super::{process::Process, mgerror::ErrorCode, system::{ObjectType, G_ALIVE, G_SCHEDULER}, ucontext::UContextT}; -use crate::{simulator::machine::{NUM_INT_REGS, NUM_FP_REGS, STACK_REG}, kernel::system::{G_MACHINE, G_THREAD_TO_BE_DESTROYED}}; +use super::{process::Process, mgerror::ErrorCode, system::{ObjectType, System}, ucontext::UContextT}; +use crate::{simulator::machine::{NUM_INT_REGS, NUM_FP_REGS, STACK_REG}}; const SIMULATORSTACKSIZE: usize = 32 * 1024; const STACK_FENCEPOST: u32 = 0xdeadbeef; @@ -20,12 +20,14 @@ pub struct Thread { // simulation_context: UContextT, thread_context: ThreadContext, stack_pointer: i32, - object_type: ObjectType + object_type: ObjectType, + system: Rc } impl Thread { - pub fn new(name: String) -> Self { + /// Thread constructor + pub fn new(name: String, system: Rc) -> Self { Self { name, process: None, @@ -36,7 +38,8 @@ impl Thread { pc: 0 }, stack_pointer: 0, - object_type: ObjectType::ThreadType + object_type: ObjectType::ThreadType, + system } } @@ -116,34 +119,7 @@ impl Thread { } /// Finish the execution of the thread and prepare its deallocation - pub fn finish(mut self) { - match G_MACHINE.write() { - Ok(mut machine) => { - let old_status = machine.interrupt.set_status(crate::simulator::interrupt::InterruptStatus::InterruptOff); - match G_ALIVE.write() { - Ok(alive) => { - // todo alive.remove(T) à implémenter dans List - }, - Err(err) => { - panic!("RwLock is poisoned: {}", err); - } - } - match G_THREAD_TO_BE_DESTROYED.write() { - Ok(mut thread_to_be_destroyed) => { - thread_to_be_destroyed.replace(self); - }, - Err(err) => { - panic!("RwLock is poisoned: {}", err); - } - } - // self.sleep(); - machine.interrupt.set_status(old_status); - }, - Err(err) => { - panic!("RwLock is poisoned: {}", err); - } - } - + pub fn finish(&self) { todo!(); } diff --git a/src/simulator/interrupt.rs b/src/simulator/interrupt.rs index 8f08312..9cede5b 100644 --- a/src/simulator/interrupt.rs +++ b/src/simulator/interrupt.rs @@ -1,5 +1,5 @@ - +#[derive(PartialEq)] pub struct Interrupt { level: InterruptStatus } diff --git a/src/simulator/machine.rs b/src/simulator/machine.rs index 59ab1b8..73dc8b5 100644 --- a/src/simulator/machine.rs +++ b/src/simulator/machine.rs @@ -19,7 +19,7 @@ impl RegisterNum for i64 {} impl RegisterNum for f32 {} - +#[derive(PartialEq)] pub struct Register { register: [U; 32] } @@ -65,6 +65,7 @@ impl Register { } +#[derive(PartialEq)] pub struct Machine { pub pc : u64, pub sp: usize, From f4edac230eb91c233479c3aafb84ee75d86f341d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Wed, 8 Mar 2023 15:49:31 +0100 Subject: [PATCH 047/115] Added partialeq trait to Node --- src/utility/list.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/utility/list.rs b/src/utility/list.rs index 024606c..f6efb50 100644 --- a/src/utility/list.rs +++ b/src/utility/list.rs @@ -6,6 +6,7 @@ pub struct List { type Link = Option>>; +#[derive(PartialEq)] struct Node { elem: T, next: Link, From f15d782916931d99e25d915a02ee0c1093a52cf1 Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Wed, 8 Mar 2023 15:54:10 +0100 Subject: [PATCH 048/115] Fix thread --- src/kernel/scheduler.rs | 10 ++++------ src/kernel/thread.rs | 33 ++++++--------------------------- 2 files changed, 10 insertions(+), 33 deletions(-) diff --git a/src/kernel/scheduler.rs b/src/kernel/scheduler.rs index 9753cdf..670f0fa 100644 --- a/src/kernel/scheduler.rs +++ b/src/kernel/scheduler.rs @@ -1,13 +1,11 @@ -use std::sync::Arc; +use std::{sync::Arc, rc::Rc}; use crate::utility::list::List; use crate::kernel::thread::Thread; -use super::system::{G_CURRENT_THREAD, G_THREAD_TO_BE_DESTROYED}; - #[derive(PartialEq)] pub struct Scheduler { - ready_list: List> + ready_list: List> } impl Scheduler { @@ -28,7 +26,7 @@ impl Scheduler { /// ## Pamameter /// /// **thread** is the thread to be put on the read list - pub fn ready_to_run(&mut self, thread: Arc) { + pub fn ready_to_run(&mut self, thread: Rc) { self.ready_list.push(thread); } @@ -38,7 +36,7 @@ impl Scheduler { /// Thread is removed from the ready list. /// /// **return** Thread thread to be scheduled - pub fn find_next_to_run(&mut self) -> Option> { + pub fn find_next_to_run(&mut self) -> Option> { self.ready_list.pop() } diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index ce4aec8..3ffbba6 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -51,23 +51,9 @@ impl Thread { let base_stack_addr: [i8; SIMULATORSTACKSIZE] = [0; SIMULATORSTACKSIZE]; // todo AllocBoundedArray self.init_simulator_context(base_stack_addr); self.process.as_mut().unwrap().num_thread += 1; - match G_ALIVE.write() { - Ok(mut alive) => { - let this = Arc::new(self); - alive.push(Arc::clone(&this)); - match G_SCHEDULER.write() { - Ok(mut scheduler) => { - scheduler.ready_to_run(Arc::clone(&this)); - }, - Err(err) => { - panic!("RwLock poisonned, {}", err); - } - } - }, - Err(err) => { - panic!("RwLock poisonned, {}", err); - } - } + let this = Rc::new(self); + self.system.get_g_alive().push(Rc::clone(&this)); + self.system.g_scheduler().ready_to_run(Rc::clone(&this)); Result::Ok(()) } @@ -93,16 +79,9 @@ impl Thread { } /// Wait for another thread to finish its execution - pub fn join(&self, id_thread: Arc) { - match G_ALIVE.write() { - Ok(alive) => { - while alive.contains(&Arc::clone(&id_thread)) { - self.t_yield(); - } - }, - Err(err) => { - panic!("RwLock poisonned, {}", err) - } + pub fn join(&self, id_thread: Rc) { + while self.system.get_g_alive().contains(&Rc::clone(&id_thread)) { + self.t_yield(); } } From 0f5eb84c7b03d5f52b21daf7aa6d064551bd182a Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Wed, 8 Mar 2023 16:05:05 +0100 Subject: [PATCH 049/115] Remove old static vars in scheduler, doesn't work --- src/kernel/scheduler.rs | 40 ++++++++++++---------------------------- 1 file changed, 12 insertions(+), 28 deletions(-) diff --git a/src/kernel/scheduler.rs b/src/kernel/scheduler.rs index 670f0fa..0398799 100644 --- a/src/kernel/scheduler.rs +++ b/src/kernel/scheduler.rs @@ -1,8 +1,10 @@ -use std::{sync::Arc, rc::Rc}; +use std::rc::Rc; use crate::utility::list::List; use crate::kernel::thread::Thread; +use super::system::System; + #[derive(PartialEq)] pub struct Scheduler { ready_list: List> @@ -50,34 +52,16 @@ impl Scheduler { /// ## Parameter /// /// **next_thread** thread to dispatch to the CPU - pub fn switch_to(&self, next_thread: Thread) { - match G_CURRENT_THREAD.write() { - Ok(mut current_thread) => { - let old_thread = current_thread.as_mut().unwrap(); + pub fn switch_to(&self, system: Rc, next_thread: Thread) { + /* if let Some(old_thread) = system.get_g_current_thread() { + old_thread.save_processor_state(); + old_thread.save_simulator_state(); - old_thread.save_processor_state(); - old_thread.save_simulator_state(); - - if old_thread != &next_thread { - next_thread.restore_processor_state(); - next_thread.restore_simulator_state(); - current_thread.replace(next_thread); - } - - match G_THREAD_TO_BE_DESTROYED.write() { - Ok(mut thread_to_be_destroyed) => { - if thread_to_be_destroyed.is_some() { - drop(thread_to_be_destroyed.take()); - } - }, - Err(err) => { - panic!("RwLock is poisonned: {}", err); - } - } - }, - Err(err) => { - panic!("RwLock is poisonned: {}", err); + if old_thread != &next_thread { + next_thread.restore_processor_state(); + next_thread.restore_simulator_state(); + system.set_g_current_thread(Option::Some(next_thread)); } - } + } */ } } \ No newline at end of file From 82731cabcf5205c21c425320f8082c44cc775a9f Mon Sep 17 00:00:00 2001 From: Samy Solhi Date: Wed, 8 Mar 2023 16:39:00 +0100 Subject: [PATCH 050/115] synch.rs implemented --- src/kernel/synch.rs | 93 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 85 insertions(+), 8 deletions(-) diff --git a/src/kernel/synch.rs b/src/kernel/synch.rs index a2038e6..98a1f76 100644 --- a/src/kernel/synch.rs +++ b/src/kernel/synch.rs @@ -1,8 +1,11 @@ use crate::utility::list::List; use crate::kernel::thread::Thread; -use std::rc::Rc; use crate::simulator::interrupt::InterruptStatus::InterruptOff; use crate::simulator::machine::Machine; +use std::rc::Rc; + + +use super::scheduler::Scheduler; pub struct Semaphore{ @@ -13,9 +16,9 @@ pub struct Semaphore{ impl Semaphore{ - pub fn p(&mut self, current_thread:Rc, machine: &mut Machine){ + pub fn p(&mut self, current_thread: Rc, machine: &mut Machine){ let old_status = machine.interrupt.set_status(InterruptOff); - self.counter-=1; + self.counter -= 1; if self.counter < 0 { self.waiting_queue.push(Rc::clone(¤t_thread)); current_thread.sleep(); @@ -23,12 +26,11 @@ impl Semaphore{ machine.interrupt.set_status(old_status); } - pub fn v(&mut self, current_thread:Rc, machine: &mut Machine){ + pub fn v(&mut self, machine: &mut Machine, scheduler: &mut Scheduler){ let old_status = machine.interrupt.set_status(InterruptOff); - self.counter-=1; - if self.waiting_queue.peek() == None { - self.waiting_queue.push(Rc::clone(¤t_thread)); - current_thread.sleep(); + self.counter -= 1; + if self.waiting_queue.peek() != None { + scheduler.ready_to_run(self.waiting_queue.pop().unwrap()); } machine.interrupt.set_status(old_status); } @@ -36,8 +38,83 @@ impl Semaphore{ pub struct Lock{ + owner: Rc, + waiting_queue:List>, + free: bool + +} + +impl Lock { + pub fn acquire(&mut self, machine: &mut Machine, current_thread: Rc) { + let old_status = machine.interrupt.set_status(InterruptOff); + + if self.free { + self.free = false; + self.owner = current_thread; + } else { + self.waiting_queue.push(Rc::clone(¤t_thread)); + current_thread.sleep(); + } + + machine.interrupt.set_status(old_status); + } + + pub fn release(&mut self, machine: &mut Machine, scheduler: &mut Scheduler, current_thread: Rc) { + let old_status = machine.interrupt.set_status(InterruptOff); + + if self.is_held_by_current_thread(current_thread) { + if self.waiting_queue.peek() != None { + self.owner = self.waiting_queue.pop().unwrap(); + scheduler.ready_to_run(Rc::clone(&self.owner)); + } else { + self.free = true; + } + } + + machine.interrupt.set_status(old_status); + } + + pub fn is_held_by_current_thread(&mut self, current_thread: Rc) -> bool { + Rc::ptr_eq(&self.owner, ¤t_thread) + } } pub struct Condition{ + waiting_queue:List> + +} + +impl Condition { + + pub fn wait(&mut self, machine: &mut Machine, current_thread: Rc) { + let old_status = machine.interrupt.set_status(InterruptOff); + + self.waiting_queue.push(Rc::clone(¤t_thread)); + current_thread.sleep(); + + machine.interrupt.set_status(old_status); + } + + pub fn signal(&mut self, machine: &mut Machine, scheduler: &mut Scheduler) { + let old_status = machine.interrupt.set_status(InterruptOff); + + if self.waiting_queue.peek() != None { + scheduler.ready_to_run(self.waiting_queue.pop().unwrap()); + } + + machine.interrupt.set_status(old_status); + + } + + pub fn broadcast(&mut self, machine: &mut Machine, scheduler: &mut Scheduler) { + let old_status = machine.interrupt.set_status(InterruptOff); + + while self.waiting_queue.peek() != None { + scheduler.ready_to_run(self.waiting_queue.pop().unwrap()); + } + machine.interrupt.set_status(old_status); + + } + } \ No newline at end of file From 075d6cb7374b392d931e5c34cf8bcbd2b35e3a95 Mon Sep 17 00:00:00 2001 From: Baptiste Date: Wed, 8 Mar 2023 17:58:38 +0100 Subject: [PATCH 051/115] add tests run programs --- src/main.rs | 4 +- src/simulator/machine.rs | 183 +++++++++++++++++++++++++++++++++++---- src/simulator/mem_cmp.rs | 8 +- 3 files changed, 172 insertions(+), 23 deletions(-) diff --git a/src/main.rs b/src/main.rs index 64f37a3..562ef00 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,10 +5,10 @@ use simulator::mem_cmp; fn main() { let mut m = Machine::_init_machine(); - let path = "memoryJump.txt".to_string(); + let path = "memoryComp.txt".to_string(); let checker = mem_cmp::MemChecker::from(&path); mem_cmp::MemChecker::fill_memory_from_mem_checker(&checker, &mut m); //mem_cmp::Mem_Checker::print_Mem_Checker(&checker); //Machine::print_memory(&mut m, 0x400000, 0x405000); - //Machine::run(m); + Machine::run(&mut m); } diff --git a/src/simulator/machine.rs b/src/simulator/machine.rs index 47ee672..55d13ab 100644 --- a/src/simulator/machine.rs +++ b/src/simulator/machine.rs @@ -68,7 +68,8 @@ pub struct Machine { pub int_reg : Register, pub fp_reg : Register, pub main_memory : Vec, - pub shiftmask : [u64 ; 64] + pub shiftmask : [u64 ; 64], + pub registers_trace : String // for tests // futur taille à calculer int memSize = g_cfg->NumPhysPages * g_cfg->PageSize; //creer une struct cfg(configuration) qui s'initialise avec valeur dans un fichier cfg } @@ -86,15 +87,18 @@ impl Machine { value >>= 1; } - Machine { + let mut ret = Machine { pc : 0, sp: 0, int_reg : Register::::init(), fp_reg : Register::::init(), main_memory : vec![0; MEM_SIZE], - shiftmask - } - + shiftmask, + registers_trace : String::from("") + }; + + ret.int_reg.set_reg(10, -1); + ret } /// Read from main memory of the machine @@ -153,12 +157,10 @@ impl Machine { pub fn print_machine_status(machine: &mut Machine) { println!("######### Machine status #########"); for i in (0..32).step_by(3) { - print!(">{0: <4} : {1:<8x}", print::REG_X[i], machine.int_reg.get_reg(i)); - print!("\t"); - print!(">{0: <4} : {1:<8x}", print::REG_X[i+1], machine.int_reg.get_reg(i+1)); - print!("\t"); + print!(">{0: <4} : {1:<16x} ", print::REG_X[i], machine.int_reg.get_reg(i)); + print!(">{0: <4} : {1:<16x} ", print::REG_X[i+1], machine.int_reg.get_reg(i+1)); if i+2 < 32 { - print!(">{0: <4} : {1:<8x}", print::REG_X[i+2], machine.int_reg.get_reg(i+2)); + print!(">{0: <4} : {1:<16x} ", print::REG_X[i+2], machine.int_reg.get_reg(i+2)); } println!(); } @@ -170,14 +172,22 @@ impl Machine { println!("##################################"); } + pub fn string_registers(machine: &mut Machine) -> String { + let mut s = String::from(""); + for i in 0..32 { + s.push_str(format!("{} ", machine.int_reg.get_reg(i)).as_str()); + } + s + } + /// Execute the instructions table of a machine putted in param /// /// ### Parameters /// /// - **machine** which contains a table of instructions - pub fn run(machine : Machine){ - let mut m = machine; - while Machine::one_instruction(&mut m) == 0 {} + pub fn run(machine : &mut Machine){ + while Machine::one_instruction(machine) == 0 {} + println!("trace : \n{}", machine.registers_trace); } /// execute the current instruction @@ -212,8 +222,10 @@ impl Machine { Self::print_machine_status(machine); println!("executing instruction : {:016x} at pc {:x}", val, machine.pc); println!("{}", print::print(decode(val), machine.pc as i32)); + let trace = Self::string_registers(machine); + machine.registers_trace.push_str(format!("{}\n", trace).as_str()); - + machine.pc += 4; match inst.opcode { RISCV_LUI => { @@ -633,7 +645,6 @@ impl Machine { _ => { panic!("{:x} opcode non géré pc : {:x}", inst.opcode, machine.pc)}, } - machine.pc += 4; return 0; } @@ -654,8 +665,10 @@ impl Machine { } #[cfg(test)] - mod test { - use crate::simulator::machine::Machine; +mod test { + use std::fs; + + use crate::simulator::{machine::Machine, mem_cmp}; #[test] fn test_read_memory() { @@ -677,4 +690,140 @@ impl Machine { assert_eq!(43, m.main_memory[10]); assert_eq!(150, m.main_memory[11]); } + + #[test] + fn test_comp() { + let mut m = Machine::_init_machine(); + let path_before = "memoryComp.txt".to_string(); + let path_after = "memoryCompEnd.txt".to_string(); + let memory_before = mem_cmp::MemChecker::from(&path_before); + let memory_after = mem_cmp::MemChecker::from(&path_after); + mem_cmp::MemChecker::fill_memory_from_mem_checker(&memory_before, &mut m); + Machine::run(&mut m); + + let path_trace = "memoryCompTrace.txt".to_string(); + let expected_trace = fs::read_to_string(path_trace).unwrap(); + + assert!(mem_cmp::MemChecker::compare_machine_memory(&memory_after, &m)); + assert!(expected_trace.contains(m.registers_trace.as_str())); + } + + #[test] + fn test_div() { + let mut m = Machine::_init_machine(); + let path_before = "memoryDiv.txt".to_string(); + let path_after = "memoryDivEnd.txt".to_string(); + let memory_before = mem_cmp::MemChecker::from(&path_before); + let memory_after = mem_cmp::MemChecker::from(&path_after); + mem_cmp::MemChecker::fill_memory_from_mem_checker(&memory_before, &mut m); + Machine::run(&mut m); + + let path_trace = "memoryDivTrace.txt".to_string(); + let expected_trace = fs::read_to_string(path_trace).unwrap(); + + assert!(mem_cmp::MemChecker::compare_machine_memory(&memory_after, &m)); + assert!(expected_trace.contains(m.registers_trace.as_str())); + } + + #[test] + fn test_if() { + let mut m = Machine::_init_machine(); + let path_before = "memoryIf.txt".to_string(); + let path_after = "memoryIfEnd.txt".to_string(); + let memory_before = mem_cmp::MemChecker::from(&path_before); + let memory_after = mem_cmp::MemChecker::from(&path_after); + mem_cmp::MemChecker::fill_memory_from_mem_checker(&memory_before, &mut m); + Machine::run(&mut m); + + let path_trace = "memoryIfTrace.txt".to_string(); + let expected_trace = fs::read_to_string(path_trace).unwrap(); + + assert!(mem_cmp::MemChecker::compare_machine_memory(&memory_after, &m)); + assert!(expected_trace.contains(m.registers_trace.as_str())); + } + + #[test] + fn test_jump() { + let mut m = Machine::_init_machine(); + let path_before = "memoryJump.txt".to_string(); + let path_after = "memoryJumpEnd.txt".to_string(); + let memory_before = mem_cmp::MemChecker::from(&path_before); + let memory_after = mem_cmp::MemChecker::from(&path_after); + mem_cmp::MemChecker::fill_memory_from_mem_checker(&memory_before, &mut m); + Machine::run(&mut m); + + let path_trace = "memoryJumpTrace.txt".to_string(); + let expected_trace = fs::read_to_string(path_trace).unwrap(); + + assert!(mem_cmp::MemChecker::compare_machine_memory(&memory_after, &m)); + assert!(expected_trace.contains(m.registers_trace.as_str())); + } + + #[test] + fn test_mul() { + let mut m = Machine::_init_machine(); + let path_before = "memoryMul.txt".to_string(); + let path_after = "memoryMulEnd.txt".to_string(); + let memory_before = mem_cmp::MemChecker::from(&path_before); + let memory_after = mem_cmp::MemChecker::from(&path_after); + mem_cmp::MemChecker::fill_memory_from_mem_checker(&memory_before, &mut m); + Machine::run(&mut m); + + let path_trace = "memoryMulTrace.txt".to_string(); + let expected_trace = fs::read_to_string(path_trace).unwrap(); + + assert!(mem_cmp::MemChecker::compare_machine_memory(&memory_after, &m)); + assert!(expected_trace.contains(m.registers_trace.as_str())); + } + + #[test] + fn test_ret() { + let mut m = Machine::_init_machine(); + let path_before = "memoryRet.txt".to_string(); + let path_after = "memoryRetEnd.txt".to_string(); + let memory_before = mem_cmp::MemChecker::from(&path_before); + let memory_after = mem_cmp::MemChecker::from(&path_after); + mem_cmp::MemChecker::fill_memory_from_mem_checker(&memory_before, &mut m); + Machine::run(&mut m); + + let path_trace = "memoryRetTrace.txt".to_string(); + let expected_trace = fs::read_to_string(path_trace).unwrap(); + + assert!(mem_cmp::MemChecker::compare_machine_memory(&memory_after, &m)); + assert!(expected_trace.contains(m.registers_trace.as_str())); + } + + #[test] + fn test_sub() { + let mut m = Machine::_init_machine(); + let path_before = "memorySub.txt".to_string(); + let path_after = "memorySubEnd.txt".to_string(); + let memory_before = mem_cmp::MemChecker::from(&path_before); + let memory_after = mem_cmp::MemChecker::from(&path_after); + mem_cmp::MemChecker::fill_memory_from_mem_checker(&memory_before, &mut m); + Machine::run(&mut m); + + let path_trace = "memorySubTrace.txt".to_string(); + let expected_trace = fs::read_to_string(path_trace).unwrap(); + + assert!(mem_cmp::MemChecker::compare_machine_memory(&memory_after, &m)); + assert!(expected_trace.contains(m.registers_trace.as_str())); + } + + #[test] + fn test_switch() { + let mut m = Machine::_init_machine(); + let path_before = "memorySwitch.txt".to_string(); + let path_after = "memorySwitchEnd.txt".to_string(); + let memory_before = mem_cmp::MemChecker::from(&path_before); + let memory_after = mem_cmp::MemChecker::from(&path_after); + mem_cmp::MemChecker::fill_memory_from_mem_checker(&memory_before, &mut m); + Machine::run(&mut m); + + let path_trace = "memorySwitchTrace.txt".to_string(); + let expected_trace = fs::read_to_string(path_trace).unwrap(); + + assert!(mem_cmp::MemChecker::compare_machine_memory(&memory_after, &m)); + assert!(expected_trace.contains(m.registers_trace.as_str())); + } } diff --git a/src/simulator/mem_cmp.rs b/src/simulator/mem_cmp.rs index 9c4d1da..70f86f5 100644 --- a/src/simulator/mem_cmp.rs +++ b/src/simulator/mem_cmp.rs @@ -2,6 +2,7 @@ use std::fs; use std::io::BufRead; use std::io::BufReader; use std::io::Lines; +use std::io::Read; use crate::Machine; const MEM_SIZE : usize = 4096; @@ -186,7 +187,7 @@ impl MemChecker{ pub fn fill_memory_from_mem_checker(m_c: &MemChecker, machine: &mut Machine){ machine.sp = m_c.sp; - machine.int_reg.set_reg(2, m_c.pc as i64); + machine.int_reg.set_reg(2, m_c.sp as i64); machine.pc = m_c.pc as u64; @@ -228,11 +229,10 @@ impl MemChecker{ /// - **machine** contains the main memory pub fn compare_machine_memory(m_c: &MemChecker, machine: &Machine) -> bool { m_c.sections.iter().map(|section| { - !(0..section.len).into_iter().all(|i| machine.main_memory[section.addr + i] == section.content[i]) - }).all(|e| e == true) + (0..section.len).into_iter().all(|i| machine.main_memory[section.addr + i] == section.content[i]) + }).all(|e| e) } - } From 187614d49ea097d457842428f6396727ba0bc3cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Wed, 8 Mar 2023 17:15:49 +0000 Subject: [PATCH 052/115] Update .gitlab-ci.yml file --- .gitlab-ci.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7efbdeb..246ad21 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,5 @@ default: image: rust:latest - before_script: - - curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain none stages: - build From 4ca85b54d41bb4d1b3d44cc77af45433f007d153 Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Wed, 8 Mar 2023 21:10:51 +0100 Subject: [PATCH 053/115] Added thread manager --- src/kernel/mod.rs | 3 +- src/kernel/system.rs | 71 +++++---------------------- src/kernel/thread.rs | 44 +++-------------- src/kernel/thread_manager.rs | 95 ++++++++++++++++++++++++++++++++++++ src/kernel/ucontext.rs | 2 +- src/main.rs | 8 +-- 6 files changed, 119 insertions(+), 104 deletions(-) create mode 100644 src/kernel/thread_manager.rs diff --git a/src/kernel/mod.rs b/src/kernel/mod.rs index f1abafa..1988e43 100644 --- a/src/kernel/mod.rs +++ b/src/kernel/mod.rs @@ -4,4 +4,5 @@ pub mod scheduler; pub mod mgerror; pub mod system; mod ucontext; -mod synch; \ No newline at end of file +mod synch; +mod thread_manager; \ No newline at end of file diff --git a/src/kernel/system.rs b/src/kernel/system.rs index 8ef7ecb..863bdc2 100644 --- a/src/kernel/system.rs +++ b/src/kernel/system.rs @@ -1,12 +1,6 @@ -use std::rc::Rc; -use crate::{ - kernel::{ - thread::Thread, - scheduler::Scheduler - }, - utility::list::List, - simulator::machine::Machine -}; +use crate::simulator::machine::Machine; + +use super::thread_manager::ThreadManager; /// # System /// @@ -19,26 +13,24 @@ use crate::{ /// - The thread to be destroyed next /// - The scheduler which acts upon these threads #[derive(PartialEq)] -pub struct System { +pub struct System<'a> { g_machine: Machine, - g_current_thread: Option, - g_thread_to_be_destroyed: Option, - g_alive: List>, - g_scheduler: Scheduler + thread_manager: ThreadManager<'a> } -impl System { +impl<'a> System<'a> { /// System constructor - pub fn new(machine: Machine, scheduler: Scheduler) -> Self { + pub fn new(machine: Machine) -> System<'a> { Self { g_machine: machine, - g_current_thread: None, - g_thread_to_be_destroyed: None, - g_alive: List::new(), - g_scheduler: scheduler + thread_manager: ThreadManager::new() } - } + } + + pub fn freeze(&'a mut self) { + self.thread_manager.system.set(Option::Some(self)); + } // GETTERS @@ -49,28 +41,6 @@ impl System { &mut self.g_machine } - /// Currently running thread - pub fn get_g_current_thread(&mut self) -> &mut Option { - &mut self.g_current_thread - } - - /// Thread to be destroyed by [...] - /// - /// TODO: Finish the comment with the relevant value - pub fn get_g_thread_to_be_destroyed(&mut self) -> &mut Option { - &mut self.g_thread_to_be_destroyed - } - - /// List of alive threads - pub fn get_g_alive(&mut self) -> &mut List> { - &mut self.g_alive - } - - /// Current scheduler - pub fn g_scheduler(&mut self) -> &mut Scheduler { - &mut self.g_scheduler - } - // Setters /// Assign a machine to the system @@ -78,21 +48,6 @@ impl System { self.g_machine = machine } - /// Set currently running thread - pub fn set_g_current_thread(&mut self, thread: Option) { - self.g_current_thread = thread - } - - /// Set thread to be destroyed next - pub fn set_g_thread_to_be_destroyed(&mut self, thread: Option) { - self.g_thread_to_be_destroyed = thread - } - - /// Set Scheduler which will manage the threads - pub fn set_g_scheduler(&mut self, scheduler: Scheduler) { - self.g_scheduler = scheduler - } - } #[derive(PartialEq)] diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index 3ffbba6..68bc7c9 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -1,6 +1,4 @@ -use std::{sync::Arc, rc::Rc}; - -use super::{process::Process, mgerror::ErrorCode, system::{ObjectType, System}, ucontext::UContextT}; +use super::{process::Process, system::ObjectType}; use crate::{simulator::machine::{NUM_INT_REGS, NUM_FP_REGS, STACK_REG}}; const SIMULATORSTACKSIZE: usize = 32 * 1024; @@ -16,18 +14,17 @@ struct ThreadContext { #[derive(PartialEq)] pub struct Thread { name: String, - process: Option, + pub process: Option, // simulation_context: UContextT, thread_context: ThreadContext, stack_pointer: i32, - object_type: ObjectType, - system: Rc + object_type: ObjectType } impl Thread { /// Thread constructor - pub fn new(name: String, system: Rc) -> Self { + pub fn new(name: String) -> Self { Self { name, process: None, @@ -39,31 +36,16 @@ impl Thread { }, stack_pointer: 0, object_type: ObjectType::ThreadType, - system } } - /// Start a thread, attaching it to a process - pub fn start(mut self, owner: Process, func: i64, arg: i64) -> Result<(), ErrorCode> { - self.process = Option::Some(owner); - let ptr = 0; // todo addrspace - self.init_thread_context(func, ptr, arg); - let base_stack_addr: [i8; SIMULATORSTACKSIZE] = [0; SIMULATORSTACKSIZE]; // todo AllocBoundedArray - self.init_simulator_context(base_stack_addr); - self.process.as_mut().unwrap().num_thread += 1; - let this = Rc::new(self); - self.system.get_g_alive().push(Rc::clone(&this)); - self.system.g_scheduler().ready_to_run(Rc::clone(&this)); - Result::Ok(()) - } - - fn init_thread_context(&mut self, initial_pc_reg: i64, initial_sp: i64, arg: i64) { + pub fn init_thread_context(&mut self, initial_pc_reg: i64, initial_sp: i64, arg: i64) { self.thread_context.pc = initial_pc_reg; self.thread_context.int_registers[10] = arg; self.thread_context.int_registers[STACK_REG] = initial_sp; } - fn init_simulator_context(&self, base_stack_addr: [i8; SIMULATORSTACKSIZE]) { + pub fn init_simulator_context(&self, base_stack_addr: [i8; SIMULATORSTACKSIZE]) { // let res = self.simulation_context.get_context(); // if res != 0 { // panic!("getcontext returns non-zero value {}", res); @@ -78,20 +60,6 @@ impl Thread { // self.simulation_context.stackBottom[0] = STACK_FENCEPOST; } - /// Wait for another thread to finish its execution - pub fn join(&self, id_thread: Rc) { - while self.system.get_g_alive().contains(&Rc::clone(&id_thread)) { - self.t_yield(); - } - } - - /// Relinquish the CPU if any other thread is runnable. - /// - /// Cannot use yield as a function name -> reserved name in rust - pub fn t_yield(&self) { - todo!(); - } - /// Put the thread to sleep and relinquish the processor pub fn sleep(&self) { todo!(); diff --git a/src/kernel/thread_manager.rs b/src/kernel/thread_manager.rs new file mode 100644 index 0000000..28e5eaa --- /dev/null +++ b/src/kernel/thread_manager.rs @@ -0,0 +1,95 @@ +use std::{rc::Rc, cell::Cell}; + +use crate::utility::list::List; + +use super::{scheduler::Scheduler, thread::Thread, system::System, mgerror::ErrorCode, process::Process}; + +const SIMULATORSTACKSIZE: usize = 32 * 1024; + +#[derive(PartialEq)] +pub struct ThreadManager<'a> { + pub g_current_thread: Option, + pub g_thread_to_be_destroyed: Option, + pub g_alive: List>, + pub g_scheduler: Scheduler, + pub system: Cell>> +} + +impl<'a> ThreadManager<'a> { + + pub fn new() -> Self { + Self { + g_current_thread: Option::None, + g_thread_to_be_destroyed: Option::None, + g_alive: List::new(), + g_scheduler: Scheduler::new(), + system: Cell::new(None) + } + } + + /// Start a thread, attaching it to a process + pub fn start_thread(&mut self, thread: &mut Thread, owner: Process, func_pc: i64, argument: i64) -> Result<(), ErrorCode> { + thread.process = Option::Some(owner); + let ptr = 0; // todo addrspace + thread.init_thread_context(func_pc, ptr, argument); + let base_stack_addr: [i8; SIMULATORSTACKSIZE] = [0; SIMULATORSTACKSIZE]; // todo AllocBoundedArray + thread.init_simulator_context(base_stack_addr); + thread.process.as_mut().unwrap().num_thread += 1; + let thread_m = Rc::new(thread); + // self.get_g_alive().push(Rc::clone(thread)); + // self.g_scheduler().ready_to_run(Rc::clone(&thread)); + Result::Ok(()) + } + + /// Wait for another thread to finish its execution + pub fn thread_join(&mut self, id_thread: Rc) { + while self.get_g_alive().contains(&Rc::clone(&id_thread)) { + self.thread_yield(); + } + } + + /// Relinquish the CPU if any other thread is runnable. + /// + /// Cannot use yield as a function name -> reserved name in rust + pub fn thread_yield(&mut self) { + todo!(); + } + + /// Currently running thread + pub fn get_g_current_thread(&mut self) -> &mut Option { + &mut self.g_current_thread + } + + /// Thread to be destroyed by [...] + /// + /// TODO: Finish the comment with the relevant value + pub fn get_g_thread_to_be_destroyed(&mut self) -> &mut Option { + &mut self.g_thread_to_be_destroyed + } + + /// List of alive threads + pub fn get_g_alive(&mut self) -> &mut List> { + &mut self.g_alive + } + + /// Current scheduler + pub fn g_scheduler(&mut self) -> &mut Scheduler { + &mut self.g_scheduler + } + + /// Set currently running thread + pub fn set_g_current_thread(&mut self, thread: Option) { + self.g_current_thread = thread + } + + /// Set thread to be destroyed next + pub fn set_g_thread_to_be_destroyed(&mut self, thread: Option) { + self.g_thread_to_be_destroyed = thread + } + + /// Set Scheduler which will manage the threads + pub fn set_g_scheduler(&mut self, scheduler: Scheduler) { + self.g_scheduler = scheduler + } + +} \ No newline at end of file diff --git a/src/kernel/ucontext.rs b/src/kernel/ucontext.rs index 16c29f1..567d144 100644 --- a/src/kernel/ucontext.rs +++ b/src/kernel/ucontext.rs @@ -1,5 +1,5 @@ -use std::mem::MaybeUninit; +// use std::mem::MaybeUninit; /// Safe wrapper for ucontext_t struct of linux-gnu libc /// diff --git a/src/main.rs b/src/main.rs index 9e6d750..1bde63e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,14 +2,10 @@ mod simulator; mod kernel; pub mod utility; -use kernel::{ - scheduler::Scheduler, - system::System -}; +use kernel::system::System; use simulator::machine::Machine; fn main() { let machine = Machine::_init_machine(); - let scheduler = Scheduler::new(); - let system = System::new(machine, scheduler); + let _system = System::new(machine); } From fe4bbb2fc2f1058e787adde37717128cb3af873a Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Wed, 8 Mar 2023 21:43:03 +0100 Subject: [PATCH 054/115] Fix start_thread --- src/kernel/thread_manager.rs | 6 +++--- src/simulator/interrupt.rs | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/kernel/thread_manager.rs b/src/kernel/thread_manager.rs index 28e5eaa..466d14e 100644 --- a/src/kernel/thread_manager.rs +++ b/src/kernel/thread_manager.rs @@ -28,7 +28,7 @@ impl<'a> ThreadManager<'a> { } /// Start a thread, attaching it to a process - pub fn start_thread(&mut self, thread: &mut Thread, owner: Process, func_pc: i64, argument: i64) -> Result<(), ErrorCode> { + pub fn start_thread(&mut self, mut thread: Thread, owner: Process, func_pc: i64, argument: i64) -> Result<(), ErrorCode> { thread.process = Option::Some(owner); let ptr = 0; // todo addrspace thread.init_thread_context(func_pc, ptr, argument); @@ -36,8 +36,8 @@ impl<'a> ThreadManager<'a> { thread.init_simulator_context(base_stack_addr); thread.process.as_mut().unwrap().num_thread += 1; let thread_m = Rc::new(thread); - // self.get_g_alive().push(Rc::clone(thread)); - // self.g_scheduler().ready_to_run(Rc::clone(&thread)); + self.get_g_alive().push(Rc::clone(&thread_m)); + self.g_scheduler().ready_to_run(Rc::clone(&thread_m)); Result::Ok(()) } diff --git a/src/simulator/interrupt.rs b/src/simulator/interrupt.rs index 9cede5b..e63e0af 100644 --- a/src/simulator/interrupt.rs +++ b/src/simulator/interrupt.rs @@ -12,10 +12,10 @@ impl Interrupt { } } - pub fn set_status(&mut self, newStatus: InterruptStatus) -> InterruptStatus { + pub fn set_status(&mut self, new_status: InterruptStatus) -> InterruptStatus { let old = self.level; - self.level = newStatus; - if newStatus == InterruptStatus::InterruptOn && old == InterruptStatus::InterruptOff { + self.level = new_status; + if new_status == InterruptStatus::InterruptOn && old == InterruptStatus::InterruptOff { self.one_tick(1); } old From d392c69535f4b787f2a75b8f8834e01998799b79 Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Thu, 9 Mar 2023 12:08:33 +0100 Subject: [PATCH 055/115] Add thread save and restore processor context --- src/kernel/system.rs | 12 +++++---- src/kernel/thread.rs | 38 +++++++++++------------------ src/kernel/thread_manager.rs | 47 ++++++++++++++++++++++++++++++++---- src/kernel/ucontext.rs | 7 +++--- src/simulator/machine.rs | 16 ++++++++++++ 5 files changed, 83 insertions(+), 37 deletions(-) diff --git a/src/kernel/system.rs b/src/kernel/system.rs index 863bdc2..319be5c 100644 --- a/src/kernel/system.rs +++ b/src/kernel/system.rs @@ -1,3 +1,5 @@ +use std::cell::RefCell; + use crate::simulator::machine::Machine; use super::thread_manager::ThreadManager; @@ -14,7 +16,7 @@ use super::thread_manager::ThreadManager; /// - The scheduler which acts upon these threads #[derive(PartialEq)] pub struct System<'a> { - g_machine: Machine, + g_machine: RefCell, thread_manager: ThreadManager<'a> } @@ -23,7 +25,7 @@ impl<'a> System<'a> { /// System constructor pub fn new(machine: Machine) -> System<'a> { Self { - g_machine: machine, + g_machine: RefCell::new(machine), thread_manager: ThreadManager::new() } } @@ -37,14 +39,14 @@ impl<'a> System<'a> { /// Returns the Machine /// /// Useful to access RAM, devices, ... - pub fn get_g_machine(&mut self) -> &mut Machine { - &mut self.g_machine + pub fn get_g_machine(&self) -> &RefCell { + &self.g_machine } // Setters /// Assign a machine to the system - pub fn set_g_machine(&mut self, machine: Machine) { + pub fn set_g_machine(&mut self, machine: RefCell) { self.g_machine = machine } diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index 68bc7c9..326bb9c 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -1,13 +1,12 @@ -use super::{process::Process, system::ObjectType}; +use super::{process::Process, system::ObjectType, thread_manager::SIMULATORSTACKSIZE}; use crate::{simulator::machine::{NUM_INT_REGS, NUM_FP_REGS, STACK_REG}}; -const SIMULATORSTACKSIZE: usize = 32 * 1024; const STACK_FENCEPOST: u32 = 0xdeadbeef; #[derive(PartialEq)] -struct ThreadContext { +pub struct ThreadContext { pub int_registers: [i64; NUM_INT_REGS], - pub float_registers: [i64; NUM_FP_REGS], + pub float_registers: [f32; NUM_FP_REGS], pc: i64, } @@ -16,8 +15,8 @@ pub struct Thread { name: String, pub process: Option, // simulation_context: UContextT, - thread_context: ThreadContext, - stack_pointer: i32, + pub thread_context: ThreadContext, + pub stack_pointer: i32, object_type: ObjectType } @@ -31,7 +30,7 @@ impl Thread { // simulation_context: UContextT::new(), thread_context: ThreadContext { int_registers: [0; NUM_INT_REGS], - float_registers: [0; NUM_FP_REGS], + float_registers: [0f32; NUM_FP_REGS], pc: 0 }, stack_pointer: 0, @@ -59,28 +58,19 @@ impl Thread { // self.simulation_context.stackBottom = base_stack_addr.to_vec(); // self.simulation_context.stackBottom[0] = STACK_FENCEPOST; } - - /// Put the thread to sleep and relinquish the processor - pub fn sleep(&self) { - todo!(); - } - - /// Finish the execution of the thread and prepare its deallocation - pub fn finish(&self) { - todo!(); - } /// Check if a thread has overflowed its stack + /// + /// This assertion doesn't catch all stack overflow conditions and your program may still crash because of an overflow. + /// pub fn check_overflow(&self) { - todo!(); + // if self.simulator_context.stackBottom != STACK_FENCEPOST { + // panic!("thread {} has overflowed", self.get_name()) + // } } - pub fn save_processor_state(&self) { - todo!(); - } - - pub fn restore_processor_state(&self) { - todo!(); + pub fn sleep(&self) { + unreachable!("Has been moved to thread manager"); } pub fn save_simulator_state(&self) { diff --git a/src/kernel/thread_manager.rs b/src/kernel/thread_manager.rs index 466d14e..39a7f81 100644 --- a/src/kernel/thread_manager.rs +++ b/src/kernel/thread_manager.rs @@ -1,10 +1,10 @@ -use std::{rc::Rc, cell::Cell}; +use std::{rc::Rc, cell::{Cell, RefCell, RefMut, Ref}}; -use crate::utility::list::List; +use crate::{utility::list::List, simulator::machine::{NUM_INT_REGS, NUM_FP_REGS}}; use super::{scheduler::Scheduler, thread::Thread, system::System, mgerror::ErrorCode, process::Process}; -const SIMULATORSTACKSIZE: usize = 32 * 1024; +pub const SIMULATORSTACKSIZE: usize = 32 * 1024; #[derive(PartialEq)] pub struct ThreadManager<'a> { @@ -44,17 +44,54 @@ impl<'a> ThreadManager<'a> { /// Wait for another thread to finish its execution pub fn thread_join(&mut self, id_thread: Rc) { while self.get_g_alive().contains(&Rc::clone(&id_thread)) { - self.thread_yield(); + self.thread_yield(Rc::clone(&id_thread)); } } /// Relinquish the CPU if any other thread is runnable. /// /// Cannot use yield as a function name -> reserved name in rust - pub fn thread_yield(&mut self) { + pub fn thread_yield(&mut self, thread: Rc) { todo!(); } + /// Put the thread to sleep and relinquish the processor + pub fn thread_sleep(&mut self, thread: Rc) { + todo!(); + } + + /// Finish the execution of the thread and prepare its deallocation + pub fn thread_finish(&self, thread: Rc) { + todo!(); + } + + pub fn thread_save_processor_state(&mut self, thread: Rc>) { + if let Some(system) = self.system.get() { + let mut t: RefMut<_> = thread.borrow_mut(); + for i in 0..NUM_INT_REGS { + t.thread_context.int_registers[i] = system.get_g_machine().borrow().read_int_register(i); + } + for i in 0..NUM_FP_REGS { + t.thread_context.float_registers[i] = system.get_g_machine().borrow().read_fp_register(i); + } + } else { + unreachable!("System is None") + } + } + + pub fn thread_restore_processor_state(&self, thread: Rc>) { + if let Some(system) = self.system.get() { + let t: Ref<_> = thread.borrow(); + for i in 0..NUM_INT_REGS { + let machine = system.get_g_machine(); + let mut machine = machine.borrow_mut(); + machine.write_int_register(i, t.thread_context.int_registers[i]); + } + } else { + unreachable!("System is None") + } + } + /// Currently running thread pub fn get_g_current_thread(&mut self) -> &mut Option { &mut self.g_current_thread diff --git a/src/kernel/ucontext.rs b/src/kernel/ucontext.rs index 567d144..1ffee6f 100644 --- a/src/kernel/ucontext.rs +++ b/src/kernel/ucontext.rs @@ -1,5 +1,5 @@ -// use std::mem::MaybeUninit; +use std::mem::MaybeUninit; /// Safe wrapper for ucontext_t struct of linux-gnu libc /// @@ -12,10 +12,11 @@ pub struct UContextT { #[cfg(not(target_os = "windows"))] // struct non disponible sur la libc sur windows pub buf: libc::ucontext_t, - pub stackBottom: Vec + pub stack_bottom: Vec } #[cfg(not(target_os = "windows"))] +#[allow(unused)] // Temporary as we currently doesn't use this structure (this structure may disapear in a near future) impl UContextT { pub fn new() -> Self { @@ -23,7 +24,7 @@ impl UContextT { unsafe { libc::getcontext(context.as_mut_ptr()) }; Self { buf: unsafe { context.assume_init() }, - stackBottom: Vec::default(), + stack_bottom: Vec::default(), } } diff --git a/src/simulator/machine.rs b/src/simulator/machine.rs index 73dc8b5..228fbf6 100644 --- a/src/simulator/machine.rs +++ b/src/simulator/machine.rs @@ -616,6 +616,22 @@ impl Machine { machine.pc += 8; } + + pub fn read_int_register(&self, index: usize) -> i64 { + self.int_reg.get_reg(index) + } + + pub fn read_fp_register(&self, index: usize) -> f32 { + self.fp_reg.get_reg(index) + } + + pub fn write_int_register(&mut self, index: usize, value: i64) { + self.int_reg.set_reg(index, value); + } + + pub fn write_fp_register(&mut self, index: usize, value: f32) { + self.fp_reg.set_reg(index, value); + } } #[cfg(test)] From 0f339dd936ab1aed8f36cda51acfd2af520a775d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Thu, 9 Mar 2023 12:44:03 +0100 Subject: [PATCH 056/115] Changed constructor to allow any string slice as parameter + started writing unit tests --- src/kernel/thread.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index 326bb9c..1b8b41d 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -23,9 +23,9 @@ pub struct Thread { impl Thread { /// Thread constructor - pub fn new(name: String) -> Self { + pub fn new(name: &str) -> Self { Self { - name, + name: String::from(name), process: None, // simulation_context: UContextT::new(), thread_context: ThreadContext { @@ -98,4 +98,15 @@ impl Drop for Thread { fn start_thread_execution() { +} + +#[cfg(test)] +mod test { + + use super::Thread; + + fn get_new_thread() -> Thread { + Thread::new("test_thread") + } + } \ No newline at end of file From 8bf7a452f3a773217993e38374717a4e46220dba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Thu, 9 Mar 2023 13:07:50 +0100 Subject: [PATCH 057/115] Added macro to get new thread easily and started writing test --- src/kernel/thread.rs | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index 1b8b41d..b07058b 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -103,10 +103,26 @@ fn start_thread_execution() { #[cfg(test)] mod test { - use super::Thread; + use super::{Thread, ThreadContext}; - fn get_new_thread() -> Thread { - Thread::new("test_thread") + macro_rules! get_new_thread { + () => { Thread::new("test_thread") }; + ($a:literal) => { + Thread::new(&$a.to_string()) + }; + } + + #[test] + fn test_macro() { + let t = get_new_thread!("hello"); + assert_eq!(t.get_name(), "hello"); + let t = get_new_thread!(1); + assert_eq!(t.get_name(), "1"); + } + + #[test] + fn check_init() { + let t = get_new_thread!(); } } \ No newline at end of file From bfef7254d846121e14ae0ba8737941e11ed905c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Thu, 9 Mar 2023 13:24:04 +0100 Subject: [PATCH 058/115] Added debug attributes to structs pertaining to thread in order to allow for applying assertions upon Thread --- src/kernel/process.rs | 2 +- src/kernel/system.rs | 2 +- src/kernel/thread.rs | 25 ++++++++++++++++++++++--- test_programs/userlib/libnachos.o | Bin 0 -> 15488 bytes test_programs/userlib/sys.o | Bin 0 -> 3624 bytes 5 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 test_programs/userlib/libnachos.o create mode 100644 test_programs/userlib/sys.o diff --git a/src/kernel/process.rs b/src/kernel/process.rs index a56883e..f28b0fa 100644 --- a/src/kernel/process.rs +++ b/src/kernel/process.rs @@ -1,5 +1,5 @@ -#[derive(PartialEq)] +#[derive(PartialEq, Debug)] pub struct Process { pub num_thread: usize, } \ No newline at end of file diff --git a/src/kernel/system.rs b/src/kernel/system.rs index 319be5c..bad8652 100644 --- a/src/kernel/system.rs +++ b/src/kernel/system.rs @@ -52,7 +52,7 @@ impl<'a> System<'a> { } -#[derive(PartialEq)] +#[derive(PartialEq, Debug)] pub enum ObjectType { SemaphoreType, LockType, diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index b07058b..d4aedbc 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -3,14 +3,14 @@ use crate::{simulator::machine::{NUM_INT_REGS, NUM_FP_REGS, STACK_REG}}; const STACK_FENCEPOST: u32 = 0xdeadbeef; -#[derive(PartialEq)] +#[derive(PartialEq, Debug)] pub struct ThreadContext { pub int_registers: [i64; NUM_INT_REGS], pub float_registers: [f32; NUM_FP_REGS], pc: i64, } -#[derive(PartialEq)] +#[derive(PartialEq, Debug)] pub struct Thread { name: String, pub process: Option, @@ -103,7 +103,7 @@ fn start_thread_execution() { #[cfg(test)] mod test { - use super::{Thread, ThreadContext}; + use super::{Thread, ThreadContext, NUM_INT_REGS, NUM_FP_REGS, ObjectType}; macro_rules! get_new_thread { () => { Thread::new("test_thread") }; @@ -112,6 +112,23 @@ mod test { }; } + macro_rules! expected_initial_state { + () => { expected_initial_state!("test_thread") }; + ($a:literal) => { { + let mut x = Thread::new($a); + x.name = $a.to_string(); + x.process = Option::None; + x.thread_context = ThreadContext { + int_registers: [0; NUM_INT_REGS], + float_registers: [0f32; NUM_FP_REGS], + pc: 0 + }; + x.stack_pointer = 0; + x.object_type = ObjectType::ThreadType; + x } + }; + } + #[test] fn test_macro() { let t = get_new_thread!("hello"); @@ -123,6 +140,8 @@ mod test { #[test] fn check_init() { let t = get_new_thread!(); + let expected_state = expected_initial_state!(); + assert_eq!(t, expected_state) } } \ No newline at end of file diff --git a/test_programs/userlib/libnachos.o b/test_programs/userlib/libnachos.o new file mode 100644 index 0000000000000000000000000000000000000000..26f4ccaceb20d8eedc82ca547f5f92ffa2644878 GIT binary patch literal 15488 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 Date: Thu, 9 Mar 2023 13:33:00 +0100 Subject: [PATCH 059/115] Put default thread name in a const --- src/kernel/thread.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index d4aedbc..298df68 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -104,17 +104,18 @@ fn start_thread_execution() { mod test { use super::{Thread, ThreadContext, NUM_INT_REGS, NUM_FP_REGS, ObjectType}; + const DEFAULT_THREAD_NAME: &str = "test_thread"; macro_rules! get_new_thread { - () => { Thread::new("test_thread") }; + () => { Thread::new(DEFAULT_THREAD_NAME) }; ($a:literal) => { Thread::new(&$a.to_string()) }; } macro_rules! expected_initial_state { - () => { expected_initial_state!("test_thread") }; - ($a:literal) => { { + () => { expected_initial_state!(DEFAULT_THREAD_NAME) }; + ($a:expr) => { { let mut x = Thread::new($a); x.name = $a.to_string(); x.process = Option::None; From e1ba3f6078dbf3887a2d7da46830eb73c8ac80a5 Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Thu, 9 Mar 2023 14:00:42 +0100 Subject: [PATCH 060/115] Changed all reference to thread with an RefCell to enforce mutability --- src/kernel/mgerror.rs | 40 +++++++++++++++++------------------ src/kernel/scheduler.rs | 7 +++--- src/kernel/synch.rs | 41 ++++++++++++++++++++---------------- src/kernel/thread.rs | 4 ---- src/kernel/thread_manager.rs | 28 ++++++++++++------------ src/kernel/ucontext.rs | 2 +- 6 files changed, 62 insertions(+), 60 deletions(-) diff --git a/src/kernel/mgerror.rs b/src/kernel/mgerror.rs index 453a9bd..54e0e58 100644 --- a/src/kernel/mgerror.rs +++ b/src/kernel/mgerror.rs @@ -1,31 +1,31 @@ /// Error enum, use it with Result pub enum ErrorCode { - INC_ERROR, - OPENFILE_ERROR, - EXEC_FILE_FORMAT_ERROR, - OUT_OF_MEMORY, + IncError, + OpenfileError, + ExecFileFormatError, + OutOfMemory, - OUT_OF_DISK, - ALREADY_IN_DIRECTORY, - INEXIST_FILE_ERROR, - INEXIST_DIRECTORY_ERROR, - NOSPACE_IN_DIRECTORY, - NOT_A_FILE, - NOT_A_DIRECTORY, - DIRECTORY_NOT_EMPTY, - INVALID_COUNTER, + OutOfDisk, + AlreadyInDirectory, + InexistFileError, + InexistDirectoryError, + NospaceInDirectory, + NotAFile, + NotADirectory, + DirectoryNotEmpty, + InvalidCounter, /* Invalid typeId fields: */ - INVALID_SEMAPHORE_ID, - INVALID_LOCK_ID, - INVALID_CONDITION_ID, - INVALID_FILE_ID, - INVALID_THREAD_ID, + InvalidSemaphoreId, + InvalidLockId, + InvalidConditionId, + InvalidFileId, + InvalidThreadId, /* Other messages */ - WRONG_FILE_ENDIANESS, - NO_ACIA, + WrongFileEndianess, + NoAcia, NUMMSGERROR /* Must always be last */ } \ No newline at end of file diff --git a/src/kernel/scheduler.rs b/src/kernel/scheduler.rs index 0398799..c0c6cb3 100644 --- a/src/kernel/scheduler.rs +++ b/src/kernel/scheduler.rs @@ -1,3 +1,4 @@ +use std::cell::RefCell; use std::rc::Rc; use crate::utility::list::List; @@ -7,7 +8,7 @@ use super::system::System; #[derive(PartialEq)] pub struct Scheduler { - ready_list: List> + ready_list: List>> } impl Scheduler { @@ -28,7 +29,7 @@ impl Scheduler { /// ## Pamameter /// /// **thread** is the thread to be put on the read list - pub fn ready_to_run(&mut self, thread: Rc) { + pub fn ready_to_run(&mut self, thread: Rc>) { self.ready_list.push(thread); } @@ -38,7 +39,7 @@ impl Scheduler { /// Thread is removed from the ready list. /// /// **return** Thread thread to be scheduled - pub fn find_next_to_run(&mut self) -> Option> { + pub fn find_next_to_run(&mut self) -> Option>> { self.ready_list.pop() } diff --git a/src/kernel/synch.rs b/src/kernel/synch.rs index 98a1f76..77fc56c 100644 --- a/src/kernel/synch.rs +++ b/src/kernel/synch.rs @@ -2,26 +2,29 @@ use crate::utility::list::List; use crate::kernel::thread::Thread; use crate::simulator::interrupt::InterruptStatus::InterruptOff; use crate::simulator::machine::Machine; +use std::cell::RefCell; use std::rc::Rc; use super::scheduler::Scheduler; +use super::thread_manager::ThreadManager; -pub struct Semaphore{ +pub struct Semaphore<'t> { counter:i32, - waiting_queue:List> + waiting_queue:List>>, + thread_manager: Rc>> // On s'assure que le tm vit plus longtemps que les semaphore avec le lifetime } -impl Semaphore{ +impl<'t> Semaphore<'_> { - pub fn p(&mut self, current_thread: Rc, machine: &mut Machine){ + pub fn p(&mut self, current_thread: Rc>, machine: &mut Machine){ let old_status = machine.interrupt.set_status(InterruptOff); self.counter -= 1; if self.counter < 0 { self.waiting_queue.push(Rc::clone(¤t_thread)); - current_thread.sleep(); + self.thread_manager.borrow_mut().thread_sleep(current_thread); } machine.interrupt.set_status(old_status); } @@ -36,16 +39,17 @@ impl Semaphore{ } } -pub struct Lock{ +pub struct Lock<'t>{ - owner: Rc, - waiting_queue:List>, + owner: Rc>, + waiting_queue:List>>, + thread_manager: Rc>>, free: bool } -impl Lock { - pub fn acquire(&mut self, machine: &mut Machine, current_thread: Rc) { +impl<'t> Lock<'_> { + pub fn acquire(&mut self, machine: &mut Machine, current_thread: Rc>) { let old_status = machine.interrupt.set_status(InterruptOff); if self.free { @@ -53,13 +57,13 @@ impl Lock { self.owner = current_thread; } else { self.waiting_queue.push(Rc::clone(¤t_thread)); - current_thread.sleep(); + self.thread_manager.borrow_mut().thread_sleep(current_thread); } machine.interrupt.set_status(old_status); } - pub fn release(&mut self, machine: &mut Machine, scheduler: &mut Scheduler, current_thread: Rc) { + pub fn release(&mut self, machine: &mut Machine, scheduler: &mut Scheduler, current_thread: Rc>) { let old_status = machine.interrupt.set_status(InterruptOff); if self.is_held_by_current_thread(current_thread) { @@ -74,24 +78,25 @@ impl Lock { machine.interrupt.set_status(old_status); } - pub fn is_held_by_current_thread(&mut self, current_thread: Rc) -> bool { + pub fn is_held_by_current_thread(&mut self, current_thread: Rc>) -> bool { Rc::ptr_eq(&self.owner, ¤t_thread) } } -pub struct Condition{ +pub struct Condition<'t>{ - waiting_queue:List> + waiting_queue:List>>, + thread_manager: Rc>>, } -impl Condition { +impl<'t> Condition<'_> { - pub fn wait(&mut self, machine: &mut Machine, current_thread: Rc) { + pub fn wait(&mut self, machine: &mut Machine, current_thread: Rc>) { let old_status = machine.interrupt.set_status(InterruptOff); self.waiting_queue.push(Rc::clone(¤t_thread)); - current_thread.sleep(); + self.thread_manager.borrow_mut().thread_sleep(current_thread); machine.interrupt.set_status(old_status); } diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index 298df68..7e185a0 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -69,10 +69,6 @@ impl Thread { // } } - pub fn sleep(&self) { - unreachable!("Has been moved to thread manager"); - } - pub fn save_simulator_state(&self) { todo!(); } diff --git a/src/kernel/thread_manager.rs b/src/kernel/thread_manager.rs index 39a7f81..2d32e55 100644 --- a/src/kernel/thread_manager.rs +++ b/src/kernel/thread_manager.rs @@ -10,7 +10,7 @@ pub const SIMULATORSTACKSIZE: usize = 32 * 1024; pub struct ThreadManager<'a> { pub g_current_thread: Option, pub g_thread_to_be_destroyed: Option, - pub g_alive: List>, + pub g_alive: List>>, pub g_scheduler: Scheduler, pub system: Cell>> } @@ -28,21 +28,21 @@ impl<'a> ThreadManager<'a> { } /// Start a thread, attaching it to a process - pub fn start_thread(&mut self, mut thread: Thread, owner: Process, func_pc: i64, argument: i64) -> Result<(), ErrorCode> { - thread.process = Option::Some(owner); + pub fn start_thread(&mut self, thread: Rc>, owner: Process, func_pc: i64, argument: i64) -> Result<(), ErrorCode> { + let mut thread_m = thread.borrow_mut(); + thread_m.process = Option::Some(owner); let ptr = 0; // todo addrspace - thread.init_thread_context(func_pc, ptr, argument); + thread_m.init_thread_context(func_pc, ptr, argument); let base_stack_addr: [i8; SIMULATORSTACKSIZE] = [0; SIMULATORSTACKSIZE]; // todo AllocBoundedArray - thread.init_simulator_context(base_stack_addr); - thread.process.as_mut().unwrap().num_thread += 1; - let thread_m = Rc::new(thread); - self.get_g_alive().push(Rc::clone(&thread_m)); - self.g_scheduler().ready_to_run(Rc::clone(&thread_m)); + thread_m.init_simulator_context(base_stack_addr); + thread_m.process.as_mut().unwrap().num_thread += 1; + self.get_g_alive().push(Rc::clone(&thread)); + self.g_scheduler().ready_to_run(Rc::clone(&thread)); Result::Ok(()) } /// Wait for another thread to finish its execution - pub fn thread_join(&mut self, id_thread: Rc) { + pub fn thread_join(&mut self, id_thread: Rc>) { while self.get_g_alive().contains(&Rc::clone(&id_thread)) { self.thread_yield(Rc::clone(&id_thread)); } @@ -51,17 +51,17 @@ impl<'a> ThreadManager<'a> { /// Relinquish the CPU if any other thread is runnable. /// /// Cannot use yield as a function name -> reserved name in rust - pub fn thread_yield(&mut self, thread: Rc) { + pub fn thread_yield(&mut self, thread: Rc>) { todo!(); } /// Put the thread to sleep and relinquish the processor - pub fn thread_sleep(&mut self, thread: Rc) { + pub fn thread_sleep(&mut self, thread: Rc>) { todo!(); } /// Finish the execution of the thread and prepare its deallocation - pub fn thread_finish(&self, thread: Rc) { + pub fn thread_finish(&self, thread: Rc>) { todo!(); } @@ -105,7 +105,7 @@ impl<'a> ThreadManager<'a> { } /// List of alive threads - pub fn get_g_alive(&mut self) -> &mut List> { + pub fn get_g_alive(&mut self) -> &mut List>> { &mut self.g_alive } diff --git a/src/kernel/ucontext.rs b/src/kernel/ucontext.rs index 1ffee6f..c50c223 100644 --- a/src/kernel/ucontext.rs +++ b/src/kernel/ucontext.rs @@ -59,7 +59,7 @@ impl UContextT { pub fn new() -> Self { Self { - stackBottom: Vec::default() + stack_bottom: Vec::default() } } From ecff299b28d7a5a16f623e33f96d94a1d06f2ae3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Thu, 9 Mar 2023 14:03:35 +0100 Subject: [PATCH 061/115] added comments to macros --- src/kernel/thread.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index 298df68..31029f8 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -106,6 +106,7 @@ mod test { use super::{Thread, ThreadContext, NUM_INT_REGS, NUM_FP_REGS, ObjectType}; const DEFAULT_THREAD_NAME: &str = "test_thread"; + /// Polymorphic macro to get thread without passing a name by default macro_rules! get_new_thread { () => { Thread::new(DEFAULT_THREAD_NAME) }; ($a:literal) => { @@ -113,6 +114,9 @@ mod test { }; } + /// This macro allows for getting a Thread for which we've ensured proper initial state + /// in case a commit further down the line changes the initial state of threads generated + /// from Thread::new macro_rules! expected_initial_state { () => { expected_initial_state!(DEFAULT_THREAD_NAME) }; ($a:expr) => { { From 5155b62b06808b4335e372e51755513efc5ed30a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Fri, 10 Mar 2023 10:32:20 +0100 Subject: [PATCH 062/115] Added proper error handling to extract_memory_method --- src/simulator/machine.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/simulator/machine.rs b/src/simulator/machine.rs index 55d13ab..48ff028 100644 --- a/src/simulator/machine.rs +++ b/src/simulator/machine.rs @@ -150,8 +150,16 @@ impl Machine { /// /// - **machine** contains the memory pub fn extract_memory(machine: &mut Machine){ - let mut file = File::create("burritos_memory.txt").unwrap(); - file.write(&machine.main_memory); + let file_path = "burritos_memory.txt"; + let write_to_file = |path| -> std::io::Result { + let mut file = File::create(path)?; + file.write_all(&machine.main_memory)?; + Ok(file) + }; + match write_to_file(file_path) { + Err(e) => eprintln!("Failed to write memory to file: {}", e), + Ok(_) => println!("Memory extracted to {}", file_path) + }; } pub fn print_machine_status(machine: &mut Machine) { From 6db52669b492826f36ec13de23f31dd42a4d0fad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Fri, 10 Mar 2023 10:34:13 +0100 Subject: [PATCH 063/115] Removed useless variable --- src/simulator/print.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/simulator/print.rs b/src/simulator/print.rs index 60a2936..54bcddf 100644 --- a/src/simulator/print.rs +++ b/src/simulator/print.rs @@ -139,7 +139,6 @@ pub fn print(ins: Instruction, pc: i32) -> String { //TODO pc should be u64 format!("fnmadd\t{}{}{}{}", REG_F[rd], REG_F[rs1], REG_F[rs2], REG_F[rs3]) }, RISCV_FP => { - let name: &str; match ins.funct7 { RISCV_FP_ADD => { format!("{}\t{}{}{}", "fadd", REG_F[rd], REG_F[rs1], REG_F[rs2]) From 44e3f586e2657dac6c272446c3497267345f3798 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Fri, 10 Mar 2023 10:38:58 +0100 Subject: [PATCH 064/115] Fixed some clippy complaining --- src/simulator/mem_cmp.rs | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/src/simulator/mem_cmp.rs b/src/simulator/mem_cmp.rs index 70f86f5..00c45b8 100644 --- a/src/simulator/mem_cmp.rs +++ b/src/simulator/mem_cmp.rs @@ -2,7 +2,6 @@ use std::fs; use std::io::BufRead; use std::io::BufReader; use std::io::Lines; -use std::io::Read; use crate::Machine; const MEM_SIZE : usize = 4096; @@ -239,7 +238,7 @@ impl MemChecker{ fn string_hex_to_usize(s: &String) -> usize { - if s.len() == 0 { + if s.is_empty() { return 0; } @@ -253,7 +252,7 @@ fn string_hex_to_usize(s: &String) -> usize { ret_value += base.pow(max_pow - (i as u32))*tmp; } - return ret_value; + ret_value } @@ -271,8 +270,7 @@ fn one_hex_to_dec(c: char) -> u8 { 'E' | 'e' => 14, 'F' | 'f' => 15, _ => { - let ret : u8 = c.to_digit(10).unwrap() as u8; - return ret; + c.to_digit(10).unwrap() as u8 }, } } @@ -368,12 +366,7 @@ mod tests { }; let section = Section::from(§ion_format); - let mut expected_vec: Vec = Vec::new(); - expected_vec.push(0u8); - expected_vec.push(255u8); - expected_vec.push(10u8); - expected_vec.push(160u8); - expected_vec.push(165u8); + let expected_vec: Vec = vec![0u8, 255u8, 10u8, 160u8, 165u8]; //println!("Vec from created section {:?}", §ion.content); //println!("Expected vec {:?}", &expected_vec); @@ -384,13 +377,13 @@ mod tests { #[test] fn test_mod(){ let cond = (0%2) == 0; - assert_eq!(true, cond); + assert!(cond); } #[test] fn test_mod_2(){ let cond = (1%2) == 1; - assert_eq!(true, cond); + assert!(cond); } #[test] From be8435cf834780cc2d226b3122fcd28c95102e1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Fri, 10 Mar 2023 10:59:14 +0100 Subject: [PATCH 065/115] Cleaned clippy lint warnings from machine.rs --- src/simulator/machine.rs | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/simulator/machine.rs b/src/simulator/machine.rs index 48ff028..9aeadef 100644 --- a/src/simulator/machine.rs +++ b/src/simulator/machine.rs @@ -149,7 +149,7 @@ impl Machine { /// ### Parameters /// /// - **machine** contains the memory - pub fn extract_memory(machine: &mut Machine){ + pub fn _extract_memory(machine: &mut Machine){ let file_path = "burritos_memory.txt"; let write_to_file = |path| -> std::io::Result { let mut file = File::create(path)?; @@ -221,8 +221,8 @@ impl Machine { panic!("ERROR : number max of instructions rushed"); } let mut val: [u8; 4] = [0; 4]; - for i in 0..4 { - val[i] = machine.main_memory[machine.pc as usize + i]; + for (i, mut _item) in val.iter_mut().enumerate() { + _item = &mut machine.main_memory[machine.pc as usize + i]; } let val = u32::from_be_bytes(val) as u64; @@ -345,7 +345,7 @@ impl Machine { machine.int_reg.set_reg(inst.rd as usize, machine.int_reg.get_reg(inst.rs1 as usize) + inst.imm12_I_signed as i64); }, RISCV_OPI_SLTI => { - machine.int_reg.set_reg(inst.rd as usize, if machine.int_reg.get_reg(inst.rs1 as usize) < inst.imm12_I_signed as i64 { 1 } else { 0 } ); + machine.int_reg.set_reg(inst.rd as usize, (machine.int_reg.get_reg(inst.rs1 as usize) < inst.imm12_I_signed as i64) as i64); }, RISCV_OPI_XORI => { machine.int_reg.set_reg(inst.rd as usize, machine.int_reg.get_reg(inst.rs1 as usize) ^ inst.imm12_I_signed as i64); @@ -465,12 +465,11 @@ impl Machine { machine.int_reg.set_reg(inst.rd as usize, result); }, RISCV_OPIW_SRW => { - let result; - if inst.funct7 == RISCV_OPIW_SRW_SRLIW { - result = (local_data >> inst.shamt) & machine.shiftmask[32 + inst.shamt as usize] as i64; + let result = if inst.funct7 == RISCV_OPIW_SRW_SRLIW { + (local_data >> inst.shamt) & machine.shiftmask[32 + inst.shamt as usize] as i64 } else { // SRAIW - result = local_data >> inst.shamt; - } + local_data >> inst.shamt + }; machine.int_reg.set_reg(inst.rd as usize, result); }, _ => { @@ -627,13 +626,13 @@ impl Machine { RISCV_FP_FCMP => { match inst.funct3 { RISCV_FP_FCMP_FEQ => { - machine.int_reg.set_reg(inst.rd as usize, if machine.fp_reg.get_reg(inst.rs1 as usize) == machine.fp_reg.get_reg(inst.rs2 as usize) {1} else {0}); + machine.int_reg.set_reg(inst.rd as usize, (machine.fp_reg.get_reg(inst.rs1 as usize) == machine.fp_reg.get_reg(inst.rs2 as usize)) as i64); }, RISCV_FP_FCMP_FLT => { - machine.int_reg.set_reg(inst.rd as usize, if machine.fp_reg.get_reg(inst.rs1 as usize) < machine.fp_reg.get_reg(inst.rs2 as usize) {1} else {0}); + machine.int_reg.set_reg(inst.rd as usize, (machine.fp_reg.get_reg(inst.rs1 as usize) < machine.fp_reg.get_reg(inst.rs2 as usize)) as i64); }, RISCV_FP_FCMP_FLE => { - machine.int_reg.set_reg(inst.rd as usize, if machine.fp_reg.get_reg(inst.rs1 as usize) <= machine.fp_reg.get_reg(inst.rs2 as usize) {1} else {0}); + machine.int_reg.set_reg(inst.rd as usize, (machine.fp_reg.get_reg(inst.rs1 as usize) <= machine.fp_reg.get_reg(inst.rs2 as usize)) as i64); }, _ => { panic!("this instruction ({}) doesn't exists", inst.value); @@ -653,14 +652,14 @@ impl Machine { _ => { panic!("{:x} opcode non géré pc : {:x}", inst.opcode, machine.pc)}, } - return 0; + 0 } /// print memory FOR DEBUG /// /// "@"adresse [16 bytes] - pub fn print_memory(machine : &mut Machine, from: usize, to: usize) { + pub fn _print_memory(machine : &mut Machine, from: usize, to: usize) { for i in from..to { if i%16 == 0 { print!("\n@{:04x} ", i); From 6ee74ba1264264bb6bc045e65fd6e86b737d09a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Fri, 10 Mar 2023 11:03:54 +0100 Subject: [PATCH 066/115] Fixed more clippy complaining --- src/simulator/loader.rs | 2 +- src/simulator/mem_cmp.rs | 20 +++----------------- 2 files changed, 4 insertions(+), 18 deletions(-) diff --git a/src/simulator/loader.rs b/src/simulator/loader.rs index 7d31d18..b7b4b36 100644 --- a/src/simulator/loader.rs +++ b/src/simulator/loader.rs @@ -15,7 +15,7 @@ use std::io::BufRead; /// /// - **path** the path of the file to load /// - **size** the number of bytes to write (1, 2, 4 or 8) -pub fn load(path : &str, instruction_size: i32) -> Machine { +pub fn _load(path : &str, instruction_size: i32) -> Machine { let file = fs::File::open(path).expect("Wrong filename"); let reader = io::BufReader::new(file); let mut machine = Machine::_init_machine(); diff --git a/src/simulator/mem_cmp.rs b/src/simulator/mem_cmp.rs index 00c45b8..780437e 100644 --- a/src/simulator/mem_cmp.rs +++ b/src/simulator/mem_cmp.rs @@ -55,7 +55,6 @@ impl Section{ let len: usize = string_hex_to_usize(§ion.len); let mut tmp_a: char = ' '; - let mut tmp_b: char = ' '; for (i, c) in section.content.chars().enumerate(){ @@ -63,8 +62,7 @@ impl Section{ tmp_a = c; } else { - tmp_b = c; - content.push(two_hex_to_u8(tmp_a,tmp_b)); + content.push(two_hex_to_u8(tmp_a,c)); } } @@ -150,7 +148,7 @@ impl MemChecker{ let section_f = SectionFormat{ addr: tmp_addr_str.clone(), len: tmp_len_str.clone(), - content: current_line.clone().replace(" ", ""), + content: current_line.clone().replace(' ', ""), }; sections.push(Section::from(§ion_f)); } @@ -172,7 +170,7 @@ impl MemChecker{ for(i,s) in m_c.sections.iter().enumerate() { println!("\nSection {}\n", i); - Section::print_section(&s); + Section::print_section(s); } } @@ -374,18 +372,6 @@ mod tests { assert_eq!(section.content, expected_vec); } - #[test] - fn test_mod(){ - let cond = (0%2) == 0; - assert!(cond); - } - - #[test] - fn test_mod_2(){ - let cond = (1%2) == 1; - assert!(cond); - } - #[test] fn test_hex_1(){ let b = two_hex_to_u8('0', '0'); From 1081c910ee31ad2e7d3434c20365270851f8c7f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Fri, 10 Mar 2023 11:12:49 +0100 Subject: [PATCH 067/115] Updated CI --- .gitlab-ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 246ad21..6559645 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -17,11 +17,11 @@ unit-test-job: script: - echo "Running unit tests..." - cargo test - - echo "Code coverage is 90%" lint-test-job: + only: + - merge_requests stage: test script: - - echo "Linting code... This will take about 10 seconds." - - cargo clippy - - echo "No lint issues found." \ No newline at end of file + - echo "Linting code..." + - cargo clippy \ No newline at end of file From a61f4bcc1de1dcb909d7b7ee72e6221394d151ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Fri, 10 Mar 2023 16:22:44 +0100 Subject: [PATCH 068/115] Repo clean-up --- .gitignore | 3 +- file.txt | 483 ------------------------------------------ memory.txt | 8 - memoryComp.txt | 8 - memoryDiv.txt | 8 - memoryIf.txt | 8 - memoryJump.txt | 8 - memoryMul.txt | 8 - memoryRet.txt | 8 - memorySub.txt | 8 - memorySwitch.txt | 8 - old_section.txt | 17 -- test_file_section.txt | 2 - 13 files changed, 2 insertions(+), 575 deletions(-) delete mode 100644 file.txt delete mode 100644 memory.txt delete mode 100644 memoryComp.txt delete mode 100644 memoryDiv.txt delete mode 100644 memoryIf.txt delete mode 100644 memoryJump.txt delete mode 100644 memoryMul.txt delete mode 100644 memoryRet.txt delete mode 100644 memorySub.txt delete mode 100644 memorySwitch.txt delete mode 100644 old_section.txt delete mode 100644 test_file_section.txt diff --git a/.gitignore b/.gitignore index d114b83..da74d9f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /target /.idea -*.iml \ No newline at end of file +*.iml +*.txt \ No newline at end of file diff --git a/file.txt b/file.txt deleted file mode 100644 index 5caa50c..0000000 --- a/file.txt +++ /dev/null @@ -1,483 +0,0 @@ - -./test_programs/riscv_instructions/simple_arithmetics/unsigned_addition.o: file format elf64-littleriscv - - -Disassembly of section .text: - -00000000000100e8 : - 100e8: ff010113 addi sp,sp,-16 - 100ec: 00000593 li a1,0 - 100f0: 00813023 sd s0,0(sp) - 100f4: 00113423 sd ra,8(sp) - 100f8: 00050413 mv s0,a0 - 100fc: 29c000ef jal ra,10398 <__call_exitprocs> - 10100: f481b503 ld a0,-184(gp) # 11d78 <_global_impure_ptr> - 10104: 05853783 ld a5,88(a0) - 10108: 00078463 beqz a5,10110 - 1010c: 000780e7 jalr a5 - 10110: 00040513 mv a0,s0 - 10114: 4c4000ef jal ra,105d8 <_exit> - -0000000000010118 : - 10118: 00000793 li a5,0 - 1011c: 00078863 beqz a5,1012c - 10120: 00010537 lui a0,0x10 - 10124: 4c050513 addi a0,a0,1216 # 104c0 <__libc_fini_array> - 10128: 3f40006f j 1051c - 1012c: 00008067 ret - -0000000000010130 <_start>: - 10130: 00002197 auipc gp,0x2 - 10134: d0018193 addi gp,gp,-768 # 11e30 <__global_pointer$> - 10138: f6018513 addi a0,gp,-160 # 11d90 - 1013c: f9818613 addi a2,gp,-104 # 11dc8 <__BSS_END__> - 10140: 40a60633 sub a2,a2,a0 - 10144: 00000593 li a1,0 - 10148: 174000ef jal ra,102bc - 1014c: 00000517 auipc a0,0x0 - 10150: 3d050513 addi a0,a0,976 # 1051c - 10154: 00050863 beqz a0,10164 <_start+0x34> - 10158: 00000517 auipc a0,0x0 - 1015c: 36850513 addi a0,a0,872 # 104c0 <__libc_fini_array> - 10160: 3bc000ef jal ra,1051c - 10164: 0bc000ef jal ra,10220 <__libc_init_array> - 10168: 00012503 lw a0,0(sp) - 1016c: 00810593 addi a1,sp,8 - 10170: 00000613 li a2,0 - 10174: 06c000ef jal ra,101e0
- 10178: f71ff06f j 100e8 - -000000000001017c <__do_global_dtors_aux>: - 1017c: ff010113 addi sp,sp,-16 - 10180: 00813023 sd s0,0(sp) - 10184: f601c783 lbu a5,-160(gp) # 11d90 - 10188: 00113423 sd ra,8(sp) - 1018c: 02079263 bnez a5,101b0 <__do_global_dtors_aux+0x34> - 10190: 00000793 li a5,0 - 10194: 00078a63 beqz a5,101a8 <__do_global_dtors_aux+0x2c> - 10198: 00011537 lui a0,0x11 - 1019c: 61050513 addi a0,a0,1552 # 11610 <__FRAME_END__> - 101a0: 00000097 auipc ra,0x0 - 101a4: 000000e7 jalr zero # 0 - 101a8: 00100793 li a5,1 - 101ac: f6f18023 sb a5,-160(gp) # 11d90 - 101b0: 00813083 ld ra,8(sp) - 101b4: 00013403 ld s0,0(sp) - 101b8: 01010113 addi sp,sp,16 - 101bc: 00008067 ret - -00000000000101c0 : - 101c0: 00000793 li a5,0 - 101c4: 00078c63 beqz a5,101dc - 101c8: 00011537 lui a0,0x11 - 101cc: f6818593 addi a1,gp,-152 # 11d98 - 101d0: 61050513 addi a0,a0,1552 # 11610 <__FRAME_END__> - 101d4: 00000317 auipc t1,0x0 - 101d8: 00000067 jr zero # 0 - 101dc: 00008067 ret - -00000000000101e0
: - 101e0: fe010113 addi sp,sp,-32 - 101e4: 00813c23 sd s0,24(sp) - 101e8: 02010413 addi s0,sp,32 - 101ec: fe042623 sw zero,-20(s0) - 101f0: 00100793 li a5,1 - 101f4: fef42423 sw a5,-24(s0) - 101f8: fec42783 lw a5,-20(s0) - 101fc: 00078713 mv a4,a5 - 10200: fe842783 lw a5,-24(s0) - 10204: 00f707bb addw a5,a4,a5 - 10208: fef42623 sw a5,-20(s0) - 1020c: 00000793 li a5,0 - 10210: 00078513 mv a0,a5 - 10214: 01813403 ld s0,24(sp) - 10218: 02010113 addi sp,sp,32 - 1021c: 00008067 ret - -0000000000010220 <__libc_init_array>: - 10220: fe010113 addi sp,sp,-32 - 10224: 00813823 sd s0,16(sp) - 10228: 000117b7 lui a5,0x11 - 1022c: 00011437 lui s0,0x11 - 10230: 01213023 sd s2,0(sp) - 10234: 61478793 addi a5,a5,1556 # 11614 <__preinit_array_end> - 10238: 61440713 addi a4,s0,1556 # 11614 <__preinit_array_end> - 1023c: 00113c23 sd ra,24(sp) - 10240: 00913423 sd s1,8(sp) - 10244: 40e78933 sub s2,a5,a4 - 10248: 02e78263 beq a5,a4,1026c <__libc_init_array+0x4c> - 1024c: 40395913 srai s2,s2,0x3 - 10250: 61440413 addi s0,s0,1556 - 10254: 00000493 li s1,0 - 10258: 00043783 ld a5,0(s0) - 1025c: 00148493 addi s1,s1,1 - 10260: 00840413 addi s0,s0,8 - 10264: 000780e7 jalr a5 - 10268: ff24e8e3 bltu s1,s2,10258 <__libc_init_array+0x38> - 1026c: 00011437 lui s0,0x11 - 10270: 000117b7 lui a5,0x11 - 10274: 62878793 addi a5,a5,1576 # 11628 <__do_global_dtors_aux_fini_array_entry> - 10278: 61840713 addi a4,s0,1560 # 11618 <__init_array_start> - 1027c: 40e78933 sub s2,a5,a4 - 10280: 40395913 srai s2,s2,0x3 - 10284: 02e78063 beq a5,a4,102a4 <__libc_init_array+0x84> - 10288: 61840413 addi s0,s0,1560 - 1028c: 00000493 li s1,0 - 10290: 00043783 ld a5,0(s0) - 10294: 00148493 addi s1,s1,1 - 10298: 00840413 addi s0,s0,8 - 1029c: 000780e7 jalr a5 - 102a0: ff24e8e3 bltu s1,s2,10290 <__libc_init_array+0x70> - 102a4: 01813083 ld ra,24(sp) - 102a8: 01013403 ld s0,16(sp) - 102ac: 00813483 ld s1,8(sp) - 102b0: 00013903 ld s2,0(sp) - 102b4: 02010113 addi sp,sp,32 - 102b8: 00008067 ret - -00000000000102bc : - 102bc: 00f00313 li t1,15 - 102c0: 00050713 mv a4,a0 - 102c4: 02c37a63 bgeu t1,a2,102f8 - 102c8: 00f77793 andi a5,a4,15 - 102cc: 0a079063 bnez a5,1036c - 102d0: 06059e63 bnez a1,1034c - 102d4: ff067693 andi a3,a2,-16 - 102d8: 00f67613 andi a2,a2,15 - 102dc: 00e686b3 add a3,a3,a4 - 102e0: 00b73023 sd a1,0(a4) - 102e4: 00b73423 sd a1,8(a4) - 102e8: 01070713 addi a4,a4,16 - 102ec: fed76ae3 bltu a4,a3,102e0 - 102f0: 00061463 bnez a2,102f8 - 102f4: 00008067 ret - 102f8: 40c306b3 sub a3,t1,a2 - 102fc: 00269693 slli a3,a3,0x2 - 10300: 00000297 auipc t0,0x0 - 10304: 005686b3 add a3,a3,t0 - 10308: 00c68067 jr 12(a3) - 1030c: 00b70723 sb a1,14(a4) - 10310: 00b706a3 sb a1,13(a4) - 10314: 00b70623 sb a1,12(a4) - 10318: 00b705a3 sb a1,11(a4) - 1031c: 00b70523 sb a1,10(a4) - 10320: 00b704a3 sb a1,9(a4) - 10324: 00b70423 sb a1,8(a4) - 10328: 00b703a3 sb a1,7(a4) - 1032c: 00b70323 sb a1,6(a4) - 10330: 00b702a3 sb a1,5(a4) - 10334: 00b70223 sb a1,4(a4) - 10338: 00b701a3 sb a1,3(a4) - 1033c: 00b70123 sb a1,2(a4) - 10340: 00b700a3 sb a1,1(a4) - 10344: 00b70023 sb a1,0(a4) - 10348: 00008067 ret - 1034c: 0ff5f593 zext.b a1,a1 - 10350: 00859693 slli a3,a1,0x8 - 10354: 00d5e5b3 or a1,a1,a3 - 10358: 01059693 slli a3,a1,0x10 - 1035c: 00d5e5b3 or a1,a1,a3 - 10360: 02059693 slli a3,a1,0x20 - 10364: 00d5e5b3 or a1,a1,a3 - 10368: f6dff06f j 102d4 - 1036c: 00279693 slli a3,a5,0x2 - 10370: 00000297 auipc t0,0x0 - 10374: 005686b3 add a3,a3,t0 - 10378: 00008293 mv t0,ra - 1037c: f98680e7 jalr -104(a3) - 10380: 00028093 mv ra,t0 - 10384: ff078793 addi a5,a5,-16 - 10388: 40f70733 sub a4,a4,a5 - 1038c: 00f60633 add a2,a2,a5 - 10390: f6c374e3 bgeu t1,a2,102f8 - 10394: f3dff06f j 102d0 - -0000000000010398 <__call_exitprocs>: - 10398: fb010113 addi sp,sp,-80 - 1039c: 03413023 sd s4,32(sp) - 103a0: f481ba03 ld s4,-184(gp) # 11d78 <_global_impure_ptr> - 103a4: 03213823 sd s2,48(sp) - 103a8: 04113423 sd ra,72(sp) - 103ac: 1f8a3903 ld s2,504(s4) - 103b0: 04813023 sd s0,64(sp) - 103b4: 02913c23 sd s1,56(sp) - 103b8: 03313423 sd s3,40(sp) - 103bc: 01513c23 sd s5,24(sp) - 103c0: 01613823 sd s6,16(sp) - 103c4: 01713423 sd s7,8(sp) - 103c8: 01813023 sd s8,0(sp) - 103cc: 04090063 beqz s2,1040c <__call_exitprocs+0x74> - 103d0: 00050b13 mv s6,a0 - 103d4: 00058b93 mv s7,a1 - 103d8: 00100a93 li s5,1 - 103dc: fff00993 li s3,-1 - 103e0: 00892483 lw s1,8(s2) - 103e4: fff4841b addiw s0,s1,-1 - 103e8: 02044263 bltz s0,1040c <__call_exitprocs+0x74> - 103ec: 00349493 slli s1,s1,0x3 - 103f0: 009904b3 add s1,s2,s1 - 103f4: 040b8463 beqz s7,1043c <__call_exitprocs+0xa4> - 103f8: 2084b783 ld a5,520(s1) - 103fc: 05778063 beq a5,s7,1043c <__call_exitprocs+0xa4> - 10400: fff4041b addiw s0,s0,-1 - 10404: ff848493 addi s1,s1,-8 - 10408: ff3416e3 bne s0,s3,103f4 <__call_exitprocs+0x5c> - 1040c: 04813083 ld ra,72(sp) - 10410: 04013403 ld s0,64(sp) - 10414: 03813483 ld s1,56(sp) - 10418: 03013903 ld s2,48(sp) - 1041c: 02813983 ld s3,40(sp) - 10420: 02013a03 ld s4,32(sp) - 10424: 01813a83 ld s5,24(sp) - 10428: 01013b03 ld s6,16(sp) - 1042c: 00813b83 ld s7,8(sp) - 10430: 00013c03 ld s8,0(sp) - 10434: 05010113 addi sp,sp,80 - 10438: 00008067 ret - 1043c: 00892783 lw a5,8(s2) - 10440: 0084b703 ld a4,8(s1) - 10444: fff7879b addiw a5,a5,-1 - 10448: 06878263 beq a5,s0,104ac <__call_exitprocs+0x114> - 1044c: 0004b423 sd zero,8(s1) - 10450: fa0708e3 beqz a4,10400 <__call_exitprocs+0x68> - 10454: 31092783 lw a5,784(s2) - 10458: 008a96bb sllw a3,s5,s0 - 1045c: 00892c03 lw s8,8(s2) - 10460: 00d7f7b3 and a5,a5,a3 - 10464: 0007879b sext.w a5,a5 - 10468: 02079263 bnez a5,1048c <__call_exitprocs+0xf4> - 1046c: 000700e7 jalr a4 - 10470: 00892703 lw a4,8(s2) - 10474: 1f8a3783 ld a5,504(s4) - 10478: 01871463 bne a4,s8,10480 <__call_exitprocs+0xe8> - 1047c: f92782e3 beq a5,s2,10400 <__call_exitprocs+0x68> - 10480: f80786e3 beqz a5,1040c <__call_exitprocs+0x74> - 10484: 00078913 mv s2,a5 - 10488: f59ff06f j 103e0 <__call_exitprocs+0x48> - 1048c: 31492783 lw a5,788(s2) - 10490: 1084b583 ld a1,264(s1) - 10494: 00d7f7b3 and a5,a5,a3 - 10498: 0007879b sext.w a5,a5 - 1049c: 00079c63 bnez a5,104b4 <__call_exitprocs+0x11c> - 104a0: 000b0513 mv a0,s6 - 104a4: 000700e7 jalr a4 - 104a8: fc9ff06f j 10470 <__call_exitprocs+0xd8> - 104ac: 00892423 sw s0,8(s2) - 104b0: fa1ff06f j 10450 <__call_exitprocs+0xb8> - 104b4: 00058513 mv a0,a1 - 104b8: 000700e7 jalr a4 - 104bc: fb5ff06f j 10470 <__call_exitprocs+0xd8> - -00000000000104c0 <__libc_fini_array>: - 104c0: fe010113 addi sp,sp,-32 - 104c4: 00813823 sd s0,16(sp) - 104c8: 000117b7 lui a5,0x11 - 104cc: 00011437 lui s0,0x11 - 104d0: 62878793 addi a5,a5,1576 # 11628 <__do_global_dtors_aux_fini_array_entry> - 104d4: 63040413 addi s0,s0,1584 # 11630 - 104d8: 40f40433 sub s0,s0,a5 - 104dc: 00913423 sd s1,8(sp) - 104e0: 00113c23 sd ra,24(sp) - 104e4: 40345493 srai s1,s0,0x3 - 104e8: 02048063 beqz s1,10508 <__libc_fini_array+0x48> - 104ec: ff840413 addi s0,s0,-8 - 104f0: 00f40433 add s0,s0,a5 - 104f4: 00043783 ld a5,0(s0) - 104f8: fff48493 addi s1,s1,-1 - 104fc: ff840413 addi s0,s0,-8 - 10500: 000780e7 jalr a5 - 10504: fe0498e3 bnez s1,104f4 <__libc_fini_array+0x34> - 10508: 01813083 ld ra,24(sp) - 1050c: 01013403 ld s0,16(sp) - 10510: 00813483 ld s1,8(sp) - 10514: 02010113 addi sp,sp,32 - 10518: 00008067 ret - -000000000001051c : - 1051c: 00050593 mv a1,a0 - 10520: 00000693 li a3,0 - 10524: 00000613 li a2,0 - 10528: 00000513 li a0,0 - 1052c: 0040006f j 10530 <__register_exitproc> - -0000000000010530 <__register_exitproc>: - 10530: f481b703 ld a4,-184(gp) # 11d78 <_global_impure_ptr> - 10534: 1f873783 ld a5,504(a4) - 10538: 06078063 beqz a5,10598 <__register_exitproc+0x68> - 1053c: 0087a703 lw a4,8(a5) - 10540: 01f00813 li a6,31 - 10544: 08e84663 blt a6,a4,105d0 <__register_exitproc+0xa0> - 10548: 02050863 beqz a0,10578 <__register_exitproc+0x48> - 1054c: 00371813 slli a6,a4,0x3 - 10550: 01078833 add a6,a5,a6 - 10554: 10c83823 sd a2,272(a6) - 10558: 3107a883 lw a7,784(a5) - 1055c: 00100613 li a2,1 - 10560: 00e6163b sllw a2,a2,a4 - 10564: 00c8e8b3 or a7,a7,a2 - 10568: 3117a823 sw a7,784(a5) - 1056c: 20d83823 sd a3,528(a6) - 10570: 00200693 li a3,2 - 10574: 02d50863 beq a0,a3,105a4 <__register_exitproc+0x74> - 10578: 00270693 addi a3,a4,2 - 1057c: 00369693 slli a3,a3,0x3 - 10580: 0017071b addiw a4,a4,1 - 10584: 00e7a423 sw a4,8(a5) - 10588: 00d787b3 add a5,a5,a3 - 1058c: 00b7b023 sd a1,0(a5) - 10590: 00000513 li a0,0 - 10594: 00008067 ret - 10598: 20070793 addi a5,a4,512 - 1059c: 1ef73c23 sd a5,504(a4) - 105a0: f9dff06f j 1053c <__register_exitproc+0xc> - 105a4: 3147a683 lw a3,788(a5) - 105a8: 00000513 li a0,0 - 105ac: 00c6e6b3 or a3,a3,a2 - 105b0: 30d7aa23 sw a3,788(a5) - 105b4: 00270693 addi a3,a4,2 - 105b8: 00369693 slli a3,a3,0x3 - 105bc: 0017071b addiw a4,a4,1 - 105c0: 00e7a423 sw a4,8(a5) - 105c4: 00d787b3 add a5,a5,a3 - 105c8: 00b7b023 sd a1,0(a5) - 105cc: 00008067 ret - 105d0: fff00513 li a0,-1 - 105d4: 00008067 ret - -00000000000105d8 <_exit>: - 105d8: 05d00893 li a7,93 - 105dc: 00000073 ecall - 105e0: 00054463 bltz a0,105e8 <_exit+0x10> - 105e4: 0000006f j 105e4 <_exit+0xc> - 105e8: ff010113 addi sp,sp,-16 - 105ec: 00813023 sd s0,0(sp) - 105f0: 00050413 mv s0,a0 - 105f4: 00113423 sd ra,8(sp) - 105f8: 4080043b negw s0,s0 - 105fc: 00c000ef jal ra,10608 <__errno> - 10600: 00852023 sw s0,0(a0) - 10604: 0000006f j 10604 <_exit+0x2c> - -0000000000010608 <__errno>: - 10608: f581b503 ld a0,-168(gp) # 11d88 <_impure_ptr> - 1060c: 00008067 ret - -Disassembly of section .eh_frame: - -0000000000011610 <__FRAME_END__>: - 11610: 0000 .2byte 0x0 - ... - -Disassembly of section .init_array: - -0000000000011618 <__init_array_start>: - 11618: 0118 .2byte 0x118 - 1161a: 0001 .2byte 0x1 - 1161c: 0000 .2byte 0x0 - ... - -0000000000011620 <__frame_dummy_init_array_entry>: - 11620: 01c0 .2byte 0x1c0 - 11622: 0001 .2byte 0x1 - 11624: 0000 .2byte 0x0 - ... - -Disassembly of section .fini_array: - -0000000000011628 <__do_global_dtors_aux_fini_array_entry>: - 11628: 017c .2byte 0x17c - 1162a: 0001 .2byte 0x1 - 1162c: 0000 .2byte 0x0 - ... - -Disassembly of section .data: - -0000000000011630 : - ... - 11638: 1b68 .2byte 0x1b68 - 1163a: 0001 .2byte 0x1 - 1163c: 0000 .2byte 0x0 - 1163e: 0000 .2byte 0x0 - 11640: 1c18 .2byte 0x1c18 - 11642: 0001 .2byte 0x1 - 11644: 0000 .2byte 0x0 - 11646: 0000 .2byte 0x0 - 11648: 1cc8 .2byte 0x1cc8 - 1164a: 0001 .2byte 0x1 - ... - 11718: 0001 .2byte 0x1 - 1171a: 0000 .2byte 0x0 - 1171c: 0000 .2byte 0x0 - 1171e: 0000 .2byte 0x0 - 11720: 330e .2byte 0x330e - 11722: abcd .2byte 0xabcd - 11724: 1234 .2byte 0x1234 - 11726: e66d .2byte 0xe66d - 11728: deec .2byte 0xdeec - 1172a: 0005 .2byte 0x5 - 1172c: 0000000b .4byte 0xb - ... - -Disassembly of section .sdata: - -0000000000011d78 <_global_impure_ptr>: - 11d78: 1630 .2byte 0x1630 - 11d7a: 0001 .2byte 0x1 - 11d7c: 0000 .2byte 0x0 - ... - -0000000000011d80 <__dso_handle>: - ... - -0000000000011d88 <_impure_ptr>: - 11d88: 1630 .2byte 0x1630 - 11d8a: 0001 .2byte 0x1 - 11d8c: 0000 .2byte 0x0 - ... - -Disassembly of section .bss: - -0000000000011d90 : - ... - -0000000000011d98 : - ... - -Disassembly of section .comment: - -0000000000000000 <.comment>: - 0: 3a434347 .4byte 0x3a434347 - 4: 2820 .2byte 0x2820 - 6: 2029 .2byte 0x2029 - 8: 3231 .2byte 0x3231 - a: 322e .2byte 0x322e - c: 302e .2byte 0x302e - e: 4700 .2byte 0x4700 - 10: 203a4343 .4byte 0x203a4343 - 14: 4728 .2byte 0x4728 - 16: 554e .2byte 0x554e - 18: 2029 .2byte 0x2029 - 1a: 3231 .2byte 0x3231 - 1c: 322e .2byte 0x322e - 1e: 302e .2byte 0x302e - ... - -Disassembly of section .riscv.attributes: - -0000000000000000 <.riscv.attributes>: - 0: 2041 .2byte 0x2041 - 2: 0000 .2byte 0x0 - 4: 7200 .2byte 0x7200 - 6: 7369 .2byte 0x7369 - 8: 01007663 bgeu zero,a6,14 - c: 0016 .2byte 0x16 - e: 0000 .2byte 0x0 - 10: 1004 .2byte 0x1004 - 12: 7205 .2byte 0x7205 - 14: 3676 .2byte 0x3676 - 16: 6934 .2byte 0x6934 - 18: 7032 .2byte 0x7032 - 1a: 5f30 .2byte 0x5f30 - 1c: 326d .2byte 0x326d - 1e: 3070 .2byte 0x3070 - ... diff --git a/memory.txt b/memory.txt deleted file mode 100644 index 114b58f..0000000 --- a/memory.txt +++ /dev/null @@ -1,8 +0,0 @@ -4000 1b8 -00 3f d0 97 41 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -400000 1450 -fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 fe 04 26 23 00 10 07 93 fe f4 24 23 fe c4 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb fe f4 26 23 00 00 07 93 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -404000 80 -00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 -4000 -405270 \ No newline at end of file diff --git a/memoryComp.txt b/memoryComp.txt deleted file mode 100644 index 0d30a7a..0000000 --- a/memoryComp.txt +++ /dev/null @@ -1,8 +0,0 @@ -4000 1b8 -00 3f d0 97 41 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -400000 14d8 -fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 fe 04 26 23 00 10 07 93 fe f4 24 23 08 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 00 07 07 1b 00 07 87 9b 00 e7 d8 63 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 07 87 13 fe 84 27 83 00 07 07 1b 00 07 87 9b 00 f7 1c 63 fe c4 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb fe f4 26 23 fe c4 27 83 00 07 87 13 fe 84 27 83 00 07 07 1b 00 07 87 9b 00 f7 5a 63 fe c4 27 83 00 17 87 9b fe f4 26 23 00 c0 00 6f 00 00 07 93 02 00 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 00 07 07 1b 00 07 87 9b f6 e7 d6 e3 00 00 07 93 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -404000 80 -00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 -4000 -405270 \ No newline at end of file diff --git a/memoryDiv.txt b/memoryDiv.txt deleted file mode 100644 index 682294e..0000000 --- a/memoryDiv.txt +++ /dev/null @@ -1,8 +0,0 @@ -4000 1b8 -00 3f d0 97 41 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -400000 1454 -fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 40 07 93 fe f4 26 23 00 20 07 93 fe f4 24 23 fe c4 27 83 00 07 87 13 fe 84 27 83 02 f7 57 bb fe f4 26 23 00 00 07 93 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -404000 80 -00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 -4000 -405270 \ No newline at end of file diff --git a/memoryIf.txt b/memoryIf.txt deleted file mode 100644 index 8b0da1e..0000000 --- a/memoryIf.txt +++ /dev/null @@ -1,8 +0,0 @@ -4000 1b8 -00 3f d0 97 41 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -400000 1488 -fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 10 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 00 10 07 93 00 f7 1e 63 fe c4 27 83 00 07 87 9b 00 f0 58 63 00 20 07 93 fe f4 26 23 02 c0 00 6f fe c4 27 83 00 07 87 9b 00 07 98 63 fe c4 27 83 00 07 87 9b 00 07 98 63 00 30 07 93 fe f4 26 23 00 80 00 6f fe 04 26 23 00 00 07 93 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -404000 80 -00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 -4000 -405270 \ No newline at end of file diff --git a/memoryJump.txt b/memoryJump.txt deleted file mode 100644 index 86ec072..0000000 --- a/memoryJump.txt +++ /dev/null @@ -1,8 +0,0 @@ -4000 1b8 -00 3f d0 97 43 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -400000 1464 -fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 ff 01 01 13 00 81 34 23 01 01 04 13 00 00 07 93 00 07 85 13 00 81 34 03 01 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fd 1f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -404000 80 -00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 -4000 -405270 \ No newline at end of file diff --git a/memoryMul.txt b/memoryMul.txt deleted file mode 100644 index b8b038c..0000000 --- a/memoryMul.txt +++ /dev/null @@ -1,8 +0,0 @@ -4000 1b8 -00 3f d0 97 41 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -400000 1454 -fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 10 07 93 fe f4 26 23 00 20 07 93 fe f4 24 23 fe c4 27 83 00 07 87 13 fe 84 27 83 02 f7 07 bb fe f4 26 23 00 00 07 93 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -404000 80 -00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 -4000 -405270 \ No newline at end of file diff --git a/memoryRet.txt b/memoryRet.txt deleted file mode 100644 index 2046f06..0000000 --- a/memoryRet.txt +++ /dev/null @@ -1,8 +0,0 @@ -4000 1b8 -00 3f d0 97 41 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -400000 1430 -fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 ff 01 01 13 00 81 34 23 01 01 04 13 00 10 07 93 00 07 85 13 00 81 34 03 01 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -404000 80 -00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 -4000 -405270 \ No newline at end of file diff --git a/memorySub.txt b/memorySub.txt deleted file mode 100644 index 9cf1238..0000000 --- a/memorySub.txt +++ /dev/null @@ -1,8 +0,0 @@ -4000 1b8 -00 3f d0 97 41 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -400000 1454 -fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 10 07 93 fe f4 26 23 00 10 07 93 fe f4 24 23 fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb fe f4 26 23 00 00 07 93 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -404000 80 -00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 -4000 -405270 \ No newline at end of file diff --git a/memorySwitch.txt b/memorySwitch.txt deleted file mode 100644 index 3bd6096..0000000 --- a/memorySwitch.txt +++ /dev/null @@ -1,8 +0,0 @@ -4000 1b8 -00 3f d0 97 41 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -400000 1458 -fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 fe 04 26 23 fe c4 27 83 00 07 87 1b 00 10 07 93 00 f7 1c 63 00 10 07 93 fe f4 26 23 00 00 00 13 00 00 07 93 00 80 00 6f 00 00 07 93 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -404000 80 -00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 -4000 -405270 \ No newline at end of file diff --git a/old_section.txt b/old_section.txt deleted file mode 100644 index 21571c8..0000000 --- a/old_section.txt +++ /dev/null @@ -1,17 +0,0 @@ -fe010113 -00813c23 -02010413 -fe042623 -00100793 -fef42423 -fec42783 -00078713 -fe842783 -00f707bb -fef42623 -00000013 -01813403 -02010113 -00008067 -0 -0 \ No newline at end of file diff --git a/test_file_section.txt b/test_file_section.txt deleted file mode 100644 index 81b6acd..0000000 --- a/test_file_section.txt +++ /dev/null @@ -1,2 +0,0 @@ -130101FE233C8100 -13040102232604FE From a38251c111c7d46ded8443009dc82785d56deaf9 Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Wed, 15 Feb 2023 14:56:11 +0100 Subject: [PATCH 069/115] Add kernel mod --- src/kernel/mod.rs | 2 ++ src/kernel/scheduler.rs | 0 src/kernel/thread.rs | 0 src/main.rs | 1 + 4 files changed, 3 insertions(+) create mode 100644 src/kernel/mod.rs create mode 100644 src/kernel/scheduler.rs create mode 100644 src/kernel/thread.rs diff --git a/src/kernel/mod.rs b/src/kernel/mod.rs new file mode 100644 index 0000000..447d11e --- /dev/null +++ b/src/kernel/mod.rs @@ -0,0 +1,2 @@ +mod thread; +mod scheduler; \ No newline at end of file diff --git a/src/kernel/scheduler.rs b/src/kernel/scheduler.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/main.rs b/src/main.rs index 562ef00..5c2181d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,5 @@ mod simulator; +mod kernel; use simulator::machine::Machine; use simulator::mem_cmp; From 407480bcd4bfcb2c53f433aa323cc0e888e505a5 Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Wed, 15 Feb 2023 18:10:08 +0100 Subject: [PATCH 070/115] Add double linked list --- src/main.rs | 1 + src/utility/list.rs | 142 ++++++++++++++++++++++++++++++++++++++++++++ src/utility/mod.rs | 1 + 3 files changed, 144 insertions(+) create mode 100644 src/utility/list.rs create mode 100644 src/utility/mod.rs diff --git a/src/main.rs b/src/main.rs index 5c2181d..10c00e9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,6 @@ mod simulator; mod kernel; +pub mod utility; use simulator::machine::Machine; use simulator::mem_cmp; diff --git a/src/utility/list.rs b/src/utility/list.rs new file mode 100644 index 0000000..6b0ddbb --- /dev/null +++ b/src/utility/list.rs @@ -0,0 +1,142 @@ +use std::{cell::RefCell, rc::Rc}; + +/// Definition of an element of the list +/// +/// Contain one stored item and the previous/next element of the list +struct ListNode { + item: T, + next: Link, + prev: Link, +} + +impl ListNode { + fn new(item: T) -> Self { + Self { + item, + next: None, + prev: None, + } + } +} + +type Link = Option>>>; + +/// Defintion of the generic linked list +#[derive(Default)] +pub struct DoublyLinkedList { + head: Link, + tail: Link, + size: usize, +} + +impl DoublyLinkedList { + + pub fn new() -> Self { + Self { + head: None, + tail: None, + size: 0, + } + } + + pub fn is_empty(&self) -> bool { + self.len() == 0 + } + + pub fn len(&self) -> usize { + self.size + } + + /// Add the item at the end of the list + pub fn push_back(&mut self, item: T) { + let node = Rc::new(RefCell::new(ListNode::new(item))); + if let Some(prev_tail) = self.tail.take() { + prev_tail.borrow_mut().next = Some(Rc::clone(&node)); + node.borrow_mut().prev = Some(prev_tail); + self.tail = Some(node); + self.size += 1; + } else { + self.head = Some(Rc::clone(&node)); + self.tail = Some(node); + self.size = 1; + } + } + + /// Add the item at the start of the list + pub fn push_front(&mut self, item: T) { + let node = Rc::new(RefCell::new(ListNode::new(item))); + if let Some(prev_head) = self.head.take() { + prev_head.borrow_mut().prev = Some(Rc::clone(&node)); + node.borrow_mut().next = Some(prev_head); + self.head = Some(node); + self.size += 1; + } else { + self.head = Some(Rc::clone(&node)); + self.tail = Some(node); + self.size = 1; + } + } + + /// Remove the item at the end of the list + pub fn pop_back(&mut self) -> Option { + self.tail.take().map(|prev_tail| { + self.size -= 1; + match prev_tail.borrow_mut().prev.take() { + Some(node) => { + node.borrow_mut().next = None; + self.tail = Some(node); + } + None => { + self.head.take(); + } + } + Rc::try_unwrap(prev_tail).ok().unwrap().into_inner().item + }) + } + + /// Remove the item at the start of the list + pub fn pop_front(&mut self) -> Option { + self.head.take().map(|prev_head| { + self.size -= 1; + match prev_head.borrow_mut().next.take() { + Some(node) => { + node.borrow_mut().prev = None; + self.head = Some(node); + } + None => { + self.tail.take(); + } + } + Rc::try_unwrap(prev_head).ok().unwrap().into_inner().item + }) + } + +} + +impl Drop for DoublyLinkedList { + /// list destructor, safely desallocate smart pointer Rc + fn drop(&mut self) { + while let Some(node) = self.head.take() { + let _ = node.borrow_mut().prev.take(); + self.head = node.borrow_mut().next.take(); + } + self.tail.take(); + } +} + +#[cfg(test)] +mod test { + + use super::DoublyLinkedList; + + #[test] + fn test_list_push() { + let mut list = DoublyLinkedList::new(); + list.push_back(5); + list.push_front(45); + assert_eq!(list.pop_front().unwrap(), 45); + assert_eq!(list.pop_front().unwrap(), 5); + } + + +} \ No newline at end of file diff --git a/src/utility/mod.rs b/src/utility/mod.rs new file mode 100644 index 0000000..651aed7 --- /dev/null +++ b/src/utility/mod.rs @@ -0,0 +1 @@ +pub mod list; \ No newline at end of file From 958407ab7776ec714c54110d3ffc246428f1dd6b Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Fri, 17 Feb 2023 09:45:47 +0100 Subject: [PATCH 071/115] Improve list by adding iterator trait --- src/utility/list.rs | 42 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/src/utility/list.rs b/src/utility/list.rs index 6b0ddbb..46f5557 100644 --- a/src/utility/list.rs +++ b/src/utility/list.rs @@ -77,7 +77,7 @@ impl DoublyLinkedList { } } - /// Remove the item at the end of the list + /// Retrieve and remove the item at the end of the list pub fn pop_back(&mut self) -> Option { self.tail.take().map(|prev_tail| { self.size -= 1; @@ -94,7 +94,7 @@ impl DoublyLinkedList { }) } - /// Remove the item at the start of the list + /// Retrieve and remove the item at the start of the list pub fn pop_front(&mut self) -> Option { self.head.take().map(|prev_head| { self.size -= 1; @@ -124,6 +124,43 @@ impl Drop for DoublyLinkedList { } } +impl IntoIterator for DoublyLinkedList { + type Item = as Iterator>::Item; + + type IntoIter = ListIterator; + + fn into_iter(self) -> Self::IntoIter { + Self::IntoIter::new(self) + } +} + +pub struct ListIterator { + list: DoublyLinkedList, +} + +impl ListIterator { + fn new(list: DoublyLinkedList) -> Self { + Self { list } + } +} + +impl Iterator for ListIterator { + type Item = T; + + fn next(&mut self) -> Option { + self.list.pop_front() + } +} + +impl DoubleEndedIterator for ListIterator { + fn next_back(&mut self) -> Option { + self.list.pop_back() + } +} + +pub type List = DoublyLinkedList; +pub type ListInt = List; + #[cfg(test)] mod test { @@ -138,5 +175,4 @@ mod test { assert_eq!(list.pop_front().unwrap(), 5); } - } \ No newline at end of file From 336ccd142593a2d7bf61dfaf6454c819dbe26e6e Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Tue, 28 Feb 2023 14:43:40 +0100 Subject: [PATCH 072/115] Add thread structure --- src/kernel/mod.rs | 1 + src/kernel/process.rs | 4 ++ src/kernel/thread.rs | 97 ++++++++++++++++++++++++++++++++++++++++ src/simulator/machine.rs | 3 ++ src/utility/mod.rs | 3 +- src/utility/system.rs | 9 ++++ 6 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 src/kernel/process.rs create mode 100644 src/utility/system.rs diff --git a/src/kernel/mod.rs b/src/kernel/mod.rs index 447d11e..bb7bfe3 100644 --- a/src/kernel/mod.rs +++ b/src/kernel/mod.rs @@ -1,2 +1,3 @@ +mod process; mod thread; mod scheduler; \ No newline at end of file diff --git a/src/kernel/process.rs b/src/kernel/process.rs new file mode 100644 index 0000000..fe973f4 --- /dev/null +++ b/src/kernel/process.rs @@ -0,0 +1,4 @@ + +pub struct Process { + +} \ No newline at end of file diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index e69de29..3b6cd83 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -0,0 +1,97 @@ +use super::process::Process; +use crate::{simulator::machine::{NUM_INT_REGS, NUM_FP_REGS}, utility::system::ObjectType}; + + +struct SimulatorContext { + // todo +} + +struct ThreadContext { + pub int_registers: [i64; NUM_INT_REGS], + pub float_registers: [i64; NUM_FP_REGS], + pc: i64, +} + +pub struct Thread { + name: String, + process: Option, + simulation_context: SimulatorContext, + thread_context: ThreadContext, + stack_pointer: i32, + object_type: ObjectType +} + +impl Thread { + + pub fn new(name: String) -> Self { + Self { + name, + process: None, + simulation_context: SimulatorContext { }, + thread_context: ThreadContext { + int_registers: [0; NUM_INT_REGS], + float_registers: [0; NUM_FP_REGS], + pc: 0 + }, + stack_pointer: 0, + object_type: ObjectType::THREAD_TYPE + } + } + + /// Start a thread, attaching it to a process + pub fn start(&self, owner: &Process, func: i64, arg: i64) -> i32 { + todo!(); + } + + /// Wait for another thread to finish its execution + pub fn join(&self, id_thread: &Thread) { + todo!(); + } + + /// Relinquish the CPU if any other thread is runnable. + /// + /// Cannot use yield as a function name -> reserved name in rust + pub fn t_yield(&self) { + todo!(); + } + + /// Put the thread to sleep and relinquish the processor + pub fn sleep(&self) { + todo!(); + } + + /// Finish the execution of the thread and prepare its deallocation + pub fn finish(&self) { + todo!(); + } + + /// Check if a thread has overflowed its stack + pub fn check_overflow(&self) { + todo!(); + } + + pub fn init_simulator_context(&self, initial_pc_reg: i64, initial_sp: i64, arg: i64) { + todo!(); + } + + pub fn save_processor_state(&self) { + todo!(); + } + + pub fn restore_processor_state(&self) { + todo!(); + } + + pub fn save_simulator_state(&self) { + todo!(); + } + + pub fn restore_simulator_state(&self) { + todo!(); + } + + pub fn get_name(&self) -> String { + self.name.clone() + } + +} \ No newline at end of file diff --git a/src/simulator/machine.rs b/src/simulator/machine.rs index 9aeadef..6cfb698 100644 --- a/src/simulator/machine.rs +++ b/src/simulator/machine.rs @@ -6,6 +6,9 @@ use super::{decode::{Instruction, decode}}; use super::global::*; use std::fs::File; +pub const NUM_INT_REGS: usize = 32; +pub const NUM_FP_REGS: usize = 32; + /// doit disparaitre const MEM_SIZE : usize = 0x500000; diff --git a/src/utility/mod.rs b/src/utility/mod.rs index 651aed7..4b92101 100644 --- a/src/utility/mod.rs +++ b/src/utility/mod.rs @@ -1 +1,2 @@ -pub mod list; \ No newline at end of file +pub mod list; +pub mod system; \ No newline at end of file diff --git a/src/utility/system.rs b/src/utility/system.rs new file mode 100644 index 0000000..bbcb003 --- /dev/null +++ b/src/utility/system.rs @@ -0,0 +1,9 @@ + +pub enum ObjectType { + SEMAPHORE_TYPE, + LOCK_TYPE, + CONDITION_TYPE, + FILE_TYPE, + THREAD_TYPE, + INVALID_TYPE +} \ No newline at end of file From adce79aaa8ed2cbf4f1bf4e6229e4a2a63f9a457 Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Tue, 28 Feb 2023 16:39:40 +0100 Subject: [PATCH 073/115] Add scheduler structure --- src/kernel/scheduler.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/kernel/scheduler.rs b/src/kernel/scheduler.rs index e69de29..34f81f9 100644 --- a/src/kernel/scheduler.rs +++ b/src/kernel/scheduler.rs @@ -0,0 +1,32 @@ +use crate::utility::list::List; +use crate::kernel::thread::Thread; +use std::rc::Rc; + + +struct Scheduler<> { + ready_list: List> +} + +impl Scheduler { + + /// Constructor + /// + /// Initilize the list of ready thread + pub fn new() -> Self { + Self { + ready_list: List::new() + } + } + + /// Mark a thread as aready, but not necessarily running yet. + /// + /// Put it in the ready list, for later scheduling onto the CPU. + /// + /// ## Pamameter + /// + /// **thread**: Thread is the thread to be put on the read list + pub fn ready_to_run(&mut self, thread: Rc) { + self.ready_list.push_back(thread); + } + +} \ No newline at end of file From e3e217c57f543b6324e26af07bfef4f00124a724 Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Wed, 1 Mar 2023 10:11:19 +0100 Subject: [PATCH 074/115] scheduler done --- src/kernel/mod.rs | 2 +- src/kernel/scheduler.rs | 46 ++++++++++++++++++++++++++++++++++++++--- src/utility/system.rs | 5 +++++ 3 files changed, 49 insertions(+), 4 deletions(-) diff --git a/src/kernel/mod.rs b/src/kernel/mod.rs index bb7bfe3..a5dc06d 100644 --- a/src/kernel/mod.rs +++ b/src/kernel/mod.rs @@ -1,3 +1,3 @@ mod process; -mod thread; +pub mod thread; mod scheduler; \ No newline at end of file diff --git a/src/kernel/scheduler.rs b/src/kernel/scheduler.rs index 34f81f9..1c70460 100644 --- a/src/kernel/scheduler.rs +++ b/src/kernel/scheduler.rs @@ -1,10 +1,11 @@ use crate::utility::list::List; use crate::kernel::thread::Thread; +use crate::utility::system::{g_current_thread, g_thread_to_be_destroyed}; use std::rc::Rc; struct Scheduler<> { - ready_list: List> + ready_list: List } impl Scheduler { @@ -24,9 +25,48 @@ impl Scheduler { /// /// ## Pamameter /// - /// **thread**: Thread is the thread to be put on the read list - pub fn ready_to_run(&mut self, thread: Rc) { + /// **thread** is the thread to be put on the read list + pub fn ready_to_run(&mut self, thread: Thread) { self.ready_list.push_back(thread); } + /// Return the next thread to be scheduled onto the CPU. + /// If there are no ready threads, return Option::None + /// + /// Thread is removed from the ready list. + /// + /// **return** Thread thread to be scheduled + pub fn find_next_to_run(&mut self) -> Option { + self.ready_list.pop_back() + } + + /// Dispatch the CPU to next_thread. Save the state of the old thread + /// and load the state of the new thread. + /// + /// We assume the state of the previously running thread has already been changed from running to blocked or ready. + /// + /// Global variable g_current_thread become next_thread + /// + /// ## Parameter + /// + /// **next_thread** thread to dispatch to the CPU + pub fn switch_to(&self, next_thread: Thread) { + let old_thread = Box::clone(&g_current_thread).unwrap(); + + g_current_thread.check_overflow(); + + g_current_thread = Box::new(Option::Some(next_thread)); + + old_thread.save_processor_state(); + old_thread.save_simulator_state(); + + if(old_thread != g_current_thread) { + next_thread.restore_processor_state(); + next_thread.restore_simulator_state(); + } + + if(g_thread_to_be_destroyed.is_some()) { + drop(g_thread_to_be_destroyed.take()); + } + } } \ No newline at end of file diff --git a/src/utility/system.rs b/src/utility/system.rs index bbcb003..642dd11 100644 --- a/src/utility/system.rs +++ b/src/utility/system.rs @@ -1,3 +1,8 @@ +use crate::kernel::thread::Thread; + + +pub static g_current_thread: Box> = Box::new(Option::None); +pub static g_thread_to_be_destroyed: Box> = Box::new(Option::None); pub enum ObjectType { SEMAPHORE_TYPE, From cf1c7aad5ad79b52154f504e5df49e16b88242c0 Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Wed, 1 Mar 2023 11:10:15 +0100 Subject: [PATCH 075/115] Fix global var --- Cargo.lock | 9 +++++++++ Cargo.toml | 3 +-- src/kernel/process.rs | 1 + src/kernel/scheduler.rs | 38 ++++++++++++++++++++++++-------------- src/kernel/thread.rs | 3 +++ src/utility/system.rs | 14 +++++++++++--- 6 files changed, 49 insertions(+), 19 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1e08526..5b90585 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5,3 +5,12 @@ version = 3 [[package]] name = "burritos" version = "0.1.0" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" diff --git a/Cargo.toml b/Cargo.toml index 466166c..fe2c644 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,6 +3,5 @@ name = "burritos" version = "0.1.0" edition = "2021" -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - [dependencies] +lazy_static = "1.4.0" diff --git a/src/kernel/process.rs b/src/kernel/process.rs index fe973f4..5ae7efc 100644 --- a/src/kernel/process.rs +++ b/src/kernel/process.rs @@ -1,4 +1,5 @@ +#[derive(PartialEq)] pub struct Process { } \ No newline at end of file diff --git a/src/kernel/scheduler.rs b/src/kernel/scheduler.rs index 1c70460..207c5e6 100644 --- a/src/kernel/scheduler.rs +++ b/src/kernel/scheduler.rs @@ -1,7 +1,6 @@ use crate::utility::list::List; use crate::kernel::thread::Thread; use crate::utility::system::{g_current_thread, g_thread_to_be_destroyed}; -use std::rc::Rc; struct Scheduler<> { @@ -51,22 +50,33 @@ impl Scheduler { /// /// **next_thread** thread to dispatch to the CPU pub fn switch_to(&self, next_thread: Thread) { - let old_thread = Box::clone(&g_current_thread).unwrap(); + match g_current_thread.write() { + Ok(mut current_thread) => { + let old_thread = current_thread.as_mut().unwrap(); - g_current_thread.check_overflow(); + old_thread.save_processor_state(); + old_thread.save_simulator_state(); - g_current_thread = Box::new(Option::Some(next_thread)); + if old_thread != &next_thread { + next_thread.restore_processor_state(); + next_thread.restore_simulator_state(); + current_thread.replace(next_thread); + } - old_thread.save_processor_state(); - old_thread.save_simulator_state(); - - if(old_thread != g_current_thread) { - next_thread.restore_processor_state(); - next_thread.restore_simulator_state(); - } - - if(g_thread_to_be_destroyed.is_some()) { - drop(g_thread_to_be_destroyed.take()); + match g_thread_to_be_destroyed.write() { + Ok(mut thread_to_be_destroyed) => { + if thread_to_be_destroyed.is_some() { + drop(thread_to_be_destroyed.take()); + } + }, + Err(err) => { + panic!("RwLock is poisonned: {}", err); + } + } + }, + Err(err) => { + panic!("RwLock is poisonned: {}", err); + } } } } \ No newline at end of file diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index 3b6cd83..9b0354d 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -2,16 +2,19 @@ use super::process::Process; use crate::{simulator::machine::{NUM_INT_REGS, NUM_FP_REGS}, utility::system::ObjectType}; +#[derive(PartialEq)] struct SimulatorContext { // todo } +#[derive(PartialEq)] struct ThreadContext { pub int_registers: [i64; NUM_INT_REGS], pub float_registers: [i64; NUM_FP_REGS], pc: i64, } +#[derive(PartialEq)] pub struct Thread { name: String, process: Option, diff --git a/src/utility/system.rs b/src/utility/system.rs index 642dd11..f5b8b50 100644 --- a/src/utility/system.rs +++ b/src/utility/system.rs @@ -1,9 +1,17 @@ +use std::sync::{Mutex, RwLock}; + +use lazy_static::lazy_static; + use crate::kernel::thread::Thread; +extern crate lazy_static; + +lazy_static! { + pub static ref g_current_thread: RwLock> = RwLock::new(Option::None); + pub static ref g_thread_to_be_destroyed: RwLock> = RwLock::new(Option::None); +} -pub static g_current_thread: Box> = Box::new(Option::None); -pub static g_thread_to_be_destroyed: Box> = Box::new(Option::None); - +#[derive(PartialEq)] pub enum ObjectType { SEMAPHORE_TYPE, LOCK_TYPE, From 99fc51472070f15256ac07f1d83003b0620dafef Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Wed, 1 Mar 2023 11:16:21 +0100 Subject: [PATCH 076/115] Change var name to fit with rust conventions --- src/kernel/scheduler.rs | 6 +++--- src/kernel/thread.rs | 2 +- src/utility/system.rs | 16 ++++++++-------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/kernel/scheduler.rs b/src/kernel/scheduler.rs index 207c5e6..7cfe0ee 100644 --- a/src/kernel/scheduler.rs +++ b/src/kernel/scheduler.rs @@ -1,6 +1,6 @@ use crate::utility::list::List; use crate::kernel::thread::Thread; -use crate::utility::system::{g_current_thread, g_thread_to_be_destroyed}; +use crate::utility::system::{G_CURRENT_THREAD, G_THREAD_TO_BE_DESTROYED}; struct Scheduler<> { @@ -50,7 +50,7 @@ impl Scheduler { /// /// **next_thread** thread to dispatch to the CPU pub fn switch_to(&self, next_thread: Thread) { - match g_current_thread.write() { + match G_CURRENT_THREAD.write() { Ok(mut current_thread) => { let old_thread = current_thread.as_mut().unwrap(); @@ -63,7 +63,7 @@ impl Scheduler { current_thread.replace(next_thread); } - match g_thread_to_be_destroyed.write() { + match G_THREAD_TO_BE_DESTROYED.write() { Ok(mut thread_to_be_destroyed) => { if thread_to_be_destroyed.is_some() { drop(thread_to_be_destroyed.take()); diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index 9b0354d..922df0e 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -37,7 +37,7 @@ impl Thread { pc: 0 }, stack_pointer: 0, - object_type: ObjectType::THREAD_TYPE + object_type: ObjectType::ThreadType } } diff --git a/src/utility/system.rs b/src/utility/system.rs index f5b8b50..4c274ec 100644 --- a/src/utility/system.rs +++ b/src/utility/system.rs @@ -6,17 +6,17 @@ use crate::kernel::thread::Thread; extern crate lazy_static; lazy_static! { - pub static ref g_current_thread: RwLock> = RwLock::new(Option::None); - pub static ref g_thread_to_be_destroyed: RwLock> = RwLock::new(Option::None); + pub static ref G_CURRENT_THREAD: RwLock> = RwLock::new(Option::None); + pub static ref G_THREAD_TO_BE_DESTROYED: RwLock> = RwLock::new(Option::None); } #[derive(PartialEq)] pub enum ObjectType { - SEMAPHORE_TYPE, - LOCK_TYPE, - CONDITION_TYPE, - FILE_TYPE, - THREAD_TYPE, - INVALID_TYPE + SemaphoreType, + LockType, + ConditionType, + FileType, + ThreadType, + InvalidType } \ No newline at end of file From c140830faaae4f291747ea6e977d7c24fc1a9acc Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Wed, 1 Mar 2023 15:45:49 +0100 Subject: [PATCH 077/115] Adding some content to thread --- src/kernel/process.rs | 2 +- src/kernel/scheduler.rs | 2 +- src/kernel/thread.rs | 29 ++++++++++++++++++++++++++--- src/simulator/machine.rs | 2 ++ src/utility/system.rs | 5 ++++- 5 files changed, 34 insertions(+), 6 deletions(-) diff --git a/src/kernel/process.rs b/src/kernel/process.rs index 5ae7efc..a56883e 100644 --- a/src/kernel/process.rs +++ b/src/kernel/process.rs @@ -1,5 +1,5 @@ #[derive(PartialEq)] pub struct Process { - + pub num_thread: usize, } \ No newline at end of file diff --git a/src/kernel/scheduler.rs b/src/kernel/scheduler.rs index 7cfe0ee..d2670b3 100644 --- a/src/kernel/scheduler.rs +++ b/src/kernel/scheduler.rs @@ -3,7 +3,7 @@ use crate::kernel::thread::Thread; use crate::utility::system::{G_CURRENT_THREAD, G_THREAD_TO_BE_DESTROYED}; -struct Scheduler<> { +struct Scheduler { ready_list: List } diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index 922df0e..a4301f8 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -1,6 +1,7 @@ use super::process::Process; -use crate::{simulator::machine::{NUM_INT_REGS, NUM_FP_REGS}, utility::system::ObjectType}; +use crate::{simulator::machine::{NUM_INT_REGS, NUM_FP_REGS, STACK_REG}, utility::system::ObjectType}; +const SIMULATORSTACKSIZE: usize = 32 * 1024; #[derive(PartialEq)] struct SimulatorContext { @@ -42,10 +43,23 @@ impl Thread { } /// Start a thread, attaching it to a process - pub fn start(&self, owner: &Process, func: i64, arg: i64) -> i32 { + pub fn start(&mut self, owner: Process, func: i64, arg: i64) -> i32 { + self.process = Option::Some(owner); + let ptr = 0; // todo addrspace + self.init_thread_context(func, ptr, arg); + let base_stack_addr: [i8; SIMULATORSTACKSIZE] = [0; SIMULATORSTACKSIZE]; // todo AllocBoundedArray + self.init_simulator_context(base_stack_addr); + self.process.as_mut().unwrap().num_thread += 1; + todo!(); } + fn init_thread_context(&mut self, initial_pc_reg: i64, initial_sp: i64, arg: i64) { + self.thread_context.pc = initial_pc_reg; + self.thread_context.int_registers[10] = arg; + self.thread_context.int_registers[STACK_REG] = initial_sp; + } + /// Wait for another thread to finish its execution pub fn join(&self, id_thread: &Thread) { todo!(); @@ -73,7 +87,7 @@ impl Thread { todo!(); } - pub fn init_simulator_context(&self, initial_pc_reg: i64, initial_sp: i64, arg: i64) { + pub fn init_simulator_context(&self, base_stack_addr: [i8; SIMULATORSTACKSIZE]) { todo!(); } @@ -97,4 +111,13 @@ impl Thread { self.name.clone() } +} + +impl Drop for Thread { + + fn drop(&mut self) { + self.object_type = ObjectType::InvalidType; + todo!(); + } + } \ No newline at end of file diff --git a/src/simulator/machine.rs b/src/simulator/machine.rs index 6cfb698..9c65485 100644 --- a/src/simulator/machine.rs +++ b/src/simulator/machine.rs @@ -6,6 +6,8 @@ use super::{decode::{Instruction, decode}}; use super::global::*; use std::fs::File; +pub const STACK_REG: usize = 2; + pub const NUM_INT_REGS: usize = 32; pub const NUM_FP_REGS: usize = 32; diff --git a/src/utility/system.rs b/src/utility/system.rs index 4c274ec..701e0b7 100644 --- a/src/utility/system.rs +++ b/src/utility/system.rs @@ -1,13 +1,16 @@ -use std::sync::{Mutex, RwLock}; +use std::sync::{RwLock, Arc}; use lazy_static::lazy_static; use crate::kernel::thread::Thread; + +use super::list::List; extern crate lazy_static; lazy_static! { pub static ref G_CURRENT_THREAD: RwLock> = RwLock::new(Option::None); pub static ref G_THREAD_TO_BE_DESTROYED: RwLock> = RwLock::new(Option::None); + // pub static ref G_ALIVE: Arc>> = Arc::new(RwLock::new(List::new())); } From 83df053dc6ae8ff86ebb298b3bf0cde3e5618dd4 Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Wed, 1 Mar 2023 16:55:17 +0100 Subject: [PATCH 078/115] Implement Thread::start and join --- src/kernel/mgerror.rs | 31 ++++ src/kernel/mod.rs | 3 +- src/kernel/scheduler.rs | 14 +- src/kernel/thread.rs | 49 ++++-- src/utility/list.rs | 323 ++++++++++++++++++++++------------------ src/utility/system.rs | 7 +- 6 files changed, 264 insertions(+), 163 deletions(-) create mode 100644 src/kernel/mgerror.rs diff --git a/src/kernel/mgerror.rs b/src/kernel/mgerror.rs new file mode 100644 index 0000000..453a9bd --- /dev/null +++ b/src/kernel/mgerror.rs @@ -0,0 +1,31 @@ + +/// Error enum, use it with Result +pub enum ErrorCode { + INC_ERROR, + OPENFILE_ERROR, + EXEC_FILE_FORMAT_ERROR, + OUT_OF_MEMORY, + + OUT_OF_DISK, + ALREADY_IN_DIRECTORY, + INEXIST_FILE_ERROR, + INEXIST_DIRECTORY_ERROR, + NOSPACE_IN_DIRECTORY, + NOT_A_FILE, + NOT_A_DIRECTORY, + DIRECTORY_NOT_EMPTY, + INVALID_COUNTER, + + /* Invalid typeId fields: */ + INVALID_SEMAPHORE_ID, + INVALID_LOCK_ID, + INVALID_CONDITION_ID, + INVALID_FILE_ID, + INVALID_THREAD_ID, + + /* Other messages */ + WRONG_FILE_ENDIANESS, + NO_ACIA, + + NUMMSGERROR /* Must always be last */ +} \ No newline at end of file diff --git a/src/kernel/mod.rs b/src/kernel/mod.rs index a5dc06d..135f0a3 100644 --- a/src/kernel/mod.rs +++ b/src/kernel/mod.rs @@ -1,3 +1,4 @@ mod process; pub mod thread; -mod scheduler; \ No newline at end of file +pub mod scheduler; +pub mod mgerror; \ No newline at end of file diff --git a/src/kernel/scheduler.rs b/src/kernel/scheduler.rs index d2670b3..0e71684 100644 --- a/src/kernel/scheduler.rs +++ b/src/kernel/scheduler.rs @@ -1,10 +1,12 @@ +use std::sync::Arc; + use crate::utility::list::List; use crate::kernel::thread::Thread; use crate::utility::system::{G_CURRENT_THREAD, G_THREAD_TO_BE_DESTROYED}; -struct Scheduler { - ready_list: List +pub struct Scheduler { + ready_list: List> } impl Scheduler { @@ -25,8 +27,8 @@ impl Scheduler { /// ## Pamameter /// /// **thread** is the thread to be put on the read list - pub fn ready_to_run(&mut self, thread: Thread) { - self.ready_list.push_back(thread); + pub fn ready_to_run(&mut self, thread: Arc) { + self.ready_list.push(thread); } /// Return the next thread to be scheduled onto the CPU. @@ -35,8 +37,8 @@ impl Scheduler { /// Thread is removed from the ready list. /// /// **return** Thread thread to be scheduled - pub fn find_next_to_run(&mut self) -> Option { - self.ready_list.pop_back() + pub fn find_next_to_run(&mut self) -> Option> { + self.ready_list.pop() } /// Dispatch the CPU to next_thread. Save the state of the old thread diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index a4301f8..7f109df 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -1,5 +1,7 @@ -use super::process::Process; -use crate::{simulator::machine::{NUM_INT_REGS, NUM_FP_REGS, STACK_REG}, utility::system::ObjectType}; +use std::sync::Arc; + +use super::{process::Process, mgerror::ErrorCode}; +use crate::{simulator::machine::{NUM_INT_REGS, NUM_FP_REGS, STACK_REG}, utility::system::{ObjectType, G_ALIVE, G_SCHEDULER}, kernel::scheduler}; const SIMULATORSTACKSIZE: usize = 32 * 1024; @@ -43,15 +45,31 @@ impl Thread { } /// Start a thread, attaching it to a process - pub fn start(&mut self, owner: Process, func: i64, arg: i64) -> i32 { + pub fn start(mut self, owner: Process, func: i64, arg: i64) -> Result<(), ErrorCode> { self.process = Option::Some(owner); let ptr = 0; // todo addrspace self.init_thread_context(func, ptr, arg); let base_stack_addr: [i8; SIMULATORSTACKSIZE] = [0; SIMULATORSTACKSIZE]; // todo AllocBoundedArray self.init_simulator_context(base_stack_addr); self.process.as_mut().unwrap().num_thread += 1; - - todo!(); + match G_ALIVE.write() { + Ok(mut alive) => { + let this = Arc::new(self); + alive.push(Arc::clone(&this)); + match G_SCHEDULER.write() { + Ok(mut scheduler) => { + scheduler.ready_to_run(Arc::clone(&this)); + }, + Err(err) => { + panic!("RwLock poisonned, {}", err); + } + } + }, + Err(err) => { + panic!("RwLock poisonned, {}", err); + } + } + Result::Ok(()) } fn init_thread_context(&mut self, initial_pc_reg: i64, initial_sp: i64, arg: i64) { @@ -60,11 +78,24 @@ impl Thread { self.thread_context.int_registers[STACK_REG] = initial_sp; } - /// Wait for another thread to finish its execution - pub fn join(&self, id_thread: &Thread) { + fn init_simulator_context(&self, base_stack_addr: [i8; SIMULATORSTACKSIZE]) { todo!(); } + /// Wait for another thread to finish its execution + pub fn join(&self, id_thread: Arc) { + match G_ALIVE.write() { + Ok(alive) => { + while alive.contains(&Arc::clone(&id_thread)) { + self.t_yield(); + } + }, + Err(err) => { + panic!("RwLock poisonned, {}", err) + } + } + } + /// Relinquish the CPU if any other thread is runnable. /// /// Cannot use yield as a function name -> reserved name in rust @@ -87,10 +118,6 @@ impl Thread { todo!(); } - pub fn init_simulator_context(&self, base_stack_addr: [i8; SIMULATORSTACKSIZE]) { - todo!(); - } - pub fn save_processor_state(&self) { todo!(); } diff --git a/src/utility/list.rs b/src/utility/list.rs index 46f5557..a90ec2b 100644 --- a/src/utility/list.rs +++ b/src/utility/list.rs @@ -1,178 +1,217 @@ -use std::{cell::RefCell, rc::Rc}; -/// Definition of an element of the list -/// -/// Contain one stored item and the previous/next element of the list -struct ListNode { - item: T, - next: Link, - prev: Link, -} - -impl ListNode { - fn new(item: T) -> Self { - Self { - item, - next: None, - prev: None, - } - } -} - -type Link = Option>>>; - -/// Defintion of the generic linked list -#[derive(Default)] -pub struct DoublyLinkedList { +pub struct List { head: Link, - tail: Link, - size: usize, } -impl DoublyLinkedList { +type Link = Option>>; +struct Node { + elem: T, + next: Link, +} + +impl List { pub fn new() -> Self { - Self { - head: None, - tail: None, - size: 0, - } + List { head: None } } - pub fn is_empty(&self) -> bool { - self.len() == 0 + /// Push an item at the end of the list + pub fn push(&mut self, elem: T) { + let new_node = Box::new(Node { + elem: elem, + next: self.head.take(), + }); + + self.head = Some(new_node); } - pub fn len(&self) -> usize { - self.size - } - - /// Add the item at the end of the list - pub fn push_back(&mut self, item: T) { - let node = Rc::new(RefCell::new(ListNode::new(item))); - if let Some(prev_tail) = self.tail.take() { - prev_tail.borrow_mut().next = Some(Rc::clone(&node)); - node.borrow_mut().prev = Some(prev_tail); - self.tail = Some(node); - self.size += 1; - } else { - self.head = Some(Rc::clone(&node)); - self.tail = Some(node); - self.size = 1; - } - } - - /// Add the item at the start of the list - pub fn push_front(&mut self, item: T) { - let node = Rc::new(RefCell::new(ListNode::new(item))); - if let Some(prev_head) = self.head.take() { - prev_head.borrow_mut().prev = Some(Rc::clone(&node)); - node.borrow_mut().next = Some(prev_head); - self.head = Some(node); - self.size += 1; - } else { - self.head = Some(Rc::clone(&node)); - self.tail = Some(node); - self.size = 1; - } - } - - /// Retrieve and remove the item at the end of the list - pub fn pop_back(&mut self) -> Option { - self.tail.take().map(|prev_tail| { - self.size -= 1; - match prev_tail.borrow_mut().prev.take() { - Some(node) => { - node.borrow_mut().next = None; - self.tail = Some(node); - } - None => { - self.head.take(); - } - } - Rc::try_unwrap(prev_tail).ok().unwrap().into_inner().item + /// Retrieve and remove the item at the end of the list. + /// + /// Return None if list is empty + pub fn pop(&mut self) -> Option { + self.head.take().map(|node| { + self.head = node.next; + node.elem }) } - /// Retrieve and remove the item at the start of the list - pub fn pop_front(&mut self) -> Option { - self.head.take().map(|prev_head| { - self.size -= 1; - match prev_head.borrow_mut().next.take() { - Some(node) => { - node.borrow_mut().prev = None; - self.head = Some(node); - } - None => { - self.tail.take(); - } - } - Rc::try_unwrap(prev_head).ok().unwrap().into_inner().item + /// Retrieve without removing the item at the end of the list + /// + /// Return None if list is empty + pub fn peek(&self) -> Option<&T> { + self.head.as_ref().map(|node| { + &node.elem }) } - + + /// Retrieve without removing the item at the end of the list as mutable + /// + /// Return None if lsit is empty + pub fn peek_mut(&mut self) -> Option<&mut T> { + self.head.as_mut().map(|node| { + &mut node.elem + }) + } + + /// Search for an element in the list + /// + /// Return **bool** true if the list contains the element, false otherwise + /// + /// Worst case complexity of this function is O(n) + pub fn contains(&self, elem: &T) -> bool { + let mut iter = self.iter(); + let element = iter.next(); + while element.is_some() { + if element.unwrap() == elem { + return true; + } + } + false + } + + pub fn into_iter(self) -> IntoIter { + IntoIter(self) + } + + pub fn iter(&self) -> Iter<'_, T> { + Iter { next: self.head.as_deref() } + } + + pub fn iter_mut(&mut self) -> IterMut<'_, T> { + IterMut { next: self.head.as_deref_mut() } + } } -impl Drop for DoublyLinkedList { - /// list destructor, safely desallocate smart pointer Rc +impl Drop for List { fn drop(&mut self) { - while let Some(node) = self.head.take() { - let _ = node.borrow_mut().prev.take(); - self.head = node.borrow_mut().next.take(); + let mut cur_link = self.head.take(); + while let Some(mut boxed_node) = cur_link { + cur_link = boxed_node.next.take(); } - self.tail.take(); } } -impl IntoIterator for DoublyLinkedList { - type Item = as Iterator>::Item; +pub struct IntoIter(List); - type IntoIter = ListIterator; - - fn into_iter(self) -> Self::IntoIter { - Self::IntoIter::new(self) - } -} - -pub struct ListIterator { - list: DoublyLinkedList, -} - -impl ListIterator { - fn new(list: DoublyLinkedList) -> Self { - Self { list } - } -} - -impl Iterator for ListIterator { +impl Iterator for IntoIter { type Item = T; + fn next(&mut self) -> Option { + // access fields of a tuple struct numerically + self.0.pop() + } +} + +pub struct Iter<'a, T> { + next: Option<&'a Node>, +} + +impl<'a, T> Iterator for Iter<'a, T> { + type Item = &'a T; + fn next(&mut self) -> Option { + self.next.map(|node| { + self.next = node.next.as_deref(); + &node.elem + }) + } +} + +pub struct IterMut<'a, T> { + next: Option<&'a mut Node>, +} + +impl<'a, T> Iterator for IterMut<'a, T> { + type Item = &'a mut T; fn next(&mut self) -> Option { - self.list.pop_front() + self.next.take().map(|node| { + self.next = node.next.as_deref_mut(); + &mut node.elem + }) } } -impl DoubleEndedIterator for ListIterator { - fn next_back(&mut self) -> Option { - self.list.pop_back() - } -} - -pub type List = DoublyLinkedList; -pub type ListInt = List; - #[cfg(test)] mod test { - - use super::DoublyLinkedList; + use super::List; #[test] - fn test_list_push() { - let mut list = DoublyLinkedList::new(); - list.push_back(5); - list.push_front(45); - assert_eq!(list.pop_front().unwrap(), 45); - assert_eq!(list.pop_front().unwrap(), 5); + fn basics() { + let mut list = List::new(); + + // Check empty list behaves right + assert_eq!(list.pop(), None); + + // Populate list + list.push(1); + list.push(2); + list.push(3); + + // Check normal removal + assert_eq!(list.pop(), Some(3)); + assert_eq!(list.pop(), Some(2)); + + // Push some more just to make sure nothing's corrupted + list.push(4); + list.push(5); + + // Check normal removal + assert_eq!(list.pop(), Some(5)); + assert_eq!(list.pop(), Some(4)); + + // Check exhaustion + assert_eq!(list.pop(), Some(1)); + assert_eq!(list.pop(), None); } + #[test] + fn peek() { + let mut list = List::new(); + assert_eq!(list.peek(), None); + assert_eq!(list.peek_mut(), None); + list.push(1); list.push(2); list.push(3); + + assert_eq!(list.peek(), Some(&3)); + assert_eq!(list.peek_mut(), Some(&mut 3)); + + list.peek_mut().map(|value| { + *value = 42 + }); + + assert_eq!(list.peek(), Some(&42)); + assert_eq!(list.pop(), Some(42)); + } + + #[test] + fn into_iter() { + let mut list = List::new(); + list.push(1); list.push(2); list.push(3); + + let mut iter = list.into_iter(); + assert_eq!(iter.next(), Some(3)); + assert_eq!(iter.next(), Some(2)); + assert_eq!(iter.next(), Some(1)); + assert_eq!(iter.next(), None); + } + + #[test] + fn iter() { + let mut list = List::new(); + list.push(1); list.push(2); list.push(3); + + let mut iter = list.iter(); + assert_eq!(iter.next(), Some(&3)); + assert_eq!(iter.next(), Some(&2)); + assert_eq!(iter.next(), Some(&1)); + } + + #[test] + fn iter_mut() { + let mut list = List::new(); + list.push(1); list.push(2); list.push(3); + + let mut iter = list.iter_mut(); + assert_eq!(iter.next(), Some(&mut 3)); + assert_eq!(iter.next(), Some(&mut 2)); + assert_eq!(iter.next(), Some(&mut 1)); + } } \ No newline at end of file diff --git a/src/utility/system.rs b/src/utility/system.rs index 701e0b7..08dc9bf 100644 --- a/src/utility/system.rs +++ b/src/utility/system.rs @@ -1,8 +1,8 @@ -use std::sync::{RwLock, Arc}; +use std::{sync::{RwLock, Arc}}; use lazy_static::lazy_static; -use crate::kernel::thread::Thread; +use crate::kernel::{thread::Thread, scheduler::Scheduler}; use super::list::List; extern crate lazy_static; @@ -10,7 +10,8 @@ extern crate lazy_static; lazy_static! { pub static ref G_CURRENT_THREAD: RwLock> = RwLock::new(Option::None); pub static ref G_THREAD_TO_BE_DESTROYED: RwLock> = RwLock::new(Option::None); - // pub static ref G_ALIVE: Arc>> = Arc::new(RwLock::new(List::new())); + pub static ref G_ALIVE: RwLock>> = RwLock::new(List::new()); + pub static ref G_SCHEDULER: RwLock = RwLock::new(Scheduler::new()); } From 621b0568b04a2bd7a28772b5052be41d31ab9ec1 Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Wed, 1 Mar 2023 17:01:02 +0100 Subject: [PATCH 079/115] Move system to the right location --- src/kernel/mod.rs | 3 ++- src/kernel/scheduler.rs | 2 +- src/{utility => kernel}/system.rs | 3 +-- src/kernel/thread.rs | 4 ++-- src/utility/mod.rs | 3 +-- 5 files changed, 7 insertions(+), 8 deletions(-) rename src/{utility => kernel}/system.rs (87%) diff --git a/src/kernel/mod.rs b/src/kernel/mod.rs index 135f0a3..bbd9f52 100644 --- a/src/kernel/mod.rs +++ b/src/kernel/mod.rs @@ -1,4 +1,5 @@ mod process; pub mod thread; pub mod scheduler; -pub mod mgerror; \ No newline at end of file +pub mod mgerror; +pub mod system; \ No newline at end of file diff --git a/src/kernel/scheduler.rs b/src/kernel/scheduler.rs index 0e71684..3500f65 100644 --- a/src/kernel/scheduler.rs +++ b/src/kernel/scheduler.rs @@ -2,8 +2,8 @@ use std::sync::Arc; use crate::utility::list::List; use crate::kernel::thread::Thread; -use crate::utility::system::{G_CURRENT_THREAD, G_THREAD_TO_BE_DESTROYED}; +use super::system::{G_CURRENT_THREAD, G_THREAD_TO_BE_DESTROYED}; pub struct Scheduler { ready_list: List> diff --git a/src/utility/system.rs b/src/kernel/system.rs similarity index 87% rename from src/utility/system.rs rename to src/kernel/system.rs index 08dc9bf..5f04b2c 100644 --- a/src/utility/system.rs +++ b/src/kernel/system.rs @@ -2,9 +2,8 @@ use std::{sync::{RwLock, Arc}}; use lazy_static::lazy_static; -use crate::kernel::{thread::Thread, scheduler::Scheduler}; +use crate::{kernel::{thread::Thread, scheduler::Scheduler}, utility::list::List}; -use super::list::List; extern crate lazy_static; lazy_static! { diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index 7f109df..12d9db4 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -1,7 +1,7 @@ use std::sync::Arc; -use super::{process::Process, mgerror::ErrorCode}; -use crate::{simulator::machine::{NUM_INT_REGS, NUM_FP_REGS, STACK_REG}, utility::system::{ObjectType, G_ALIVE, G_SCHEDULER}, kernel::scheduler}; +use super::{process::Process, mgerror::ErrorCode, system::{ObjectType, G_ALIVE, G_SCHEDULER}}; +use crate::{simulator::machine::{NUM_INT_REGS, NUM_FP_REGS, STACK_REG}}; const SIMULATORSTACKSIZE: usize = 32 * 1024; diff --git a/src/utility/mod.rs b/src/utility/mod.rs index 4b92101..651aed7 100644 --- a/src/utility/mod.rs +++ b/src/utility/mod.rs @@ -1,2 +1 @@ -pub mod list; -pub mod system; \ No newline at end of file +pub mod list; \ No newline at end of file From e4db7ec96bf4ca9085af49ceb871de655b80a308 Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Wed, 1 Mar 2023 17:18:45 +0100 Subject: [PATCH 080/115] Implement interrupt --- src/simulator/interrupt.rs | 38 ++++++++++++++++++++++++++++++++++++++ src/simulator/mod.rs | 1 + 2 files changed, 39 insertions(+) create mode 100644 src/simulator/interrupt.rs diff --git a/src/simulator/interrupt.rs b/src/simulator/interrupt.rs new file mode 100644 index 0000000..8f71885 --- /dev/null +++ b/src/simulator/interrupt.rs @@ -0,0 +1,38 @@ + + +struct Interrupt { + level: InterruptStatus +} + +impl Interrupt { + + pub fn new() -> Self { + Self { + level: InterruptStatus::InterruptOff + } + } + + pub fn set_status(&mut self, newStatus: InterruptStatus) -> InterruptStatus { + let old = self.level; + self.level = newStatus; + if newStatus == InterruptStatus::InterruptOn && old == InterruptStatus::InterruptOff { + self.one_tick(1); + } + old + } + + fn one_tick(&self, nb_cycle: i32) { + todo!(); + } + + pub fn get_status(&self) -> InterruptStatus { + self.level + } + +} + +#[derive(PartialEq, Clone, Copy)] +pub enum InterruptStatus { + InterruptOff, + InterruptOn +} \ No newline at end of file diff --git a/src/simulator/mod.rs b/src/simulator/mod.rs index 6ee59e2..85a7d51 100644 --- a/src/simulator/mod.rs +++ b/src/simulator/mod.rs @@ -3,6 +3,7 @@ pub mod decode; pub mod print; pub mod mem_cmp; pub mod loader; +pub mod interrupt; pub mod global { From 3457f67a7c09d26c918aea46bd05be5a51d0491c Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Mon, 6 Mar 2023 16:31:35 +0100 Subject: [PATCH 081/115] Add ucontext_t --- Cargo.lock | 7 ++++ Cargo.toml | 1 + src/kernel/mod.rs | 3 +- src/kernel/thread.rs | 31 ++++++++++++------ src/kernel/ucontext.rs | 72 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 103 insertions(+), 11 deletions(-) create mode 100644 src/kernel/ucontext.rs diff --git a/Cargo.lock b/Cargo.lock index 5b90585..9898199 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7,6 +7,7 @@ name = "burritos" version = "0.1.0" dependencies = [ "lazy_static", + "libc", ] [[package]] @@ -14,3 +15,9 @@ name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.139" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" diff --git a/Cargo.toml b/Cargo.toml index fe2c644..d9e3b00 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,3 +5,4 @@ edition = "2021" [dependencies] lazy_static = "1.4.0" +libc = { version = "0.2.139", features = ["extra_traits"] } diff --git a/src/kernel/mod.rs b/src/kernel/mod.rs index bbd9f52..e061a2a 100644 --- a/src/kernel/mod.rs +++ b/src/kernel/mod.rs @@ -2,4 +2,5 @@ mod process; pub mod thread; pub mod scheduler; pub mod mgerror; -pub mod system; \ No newline at end of file +pub mod system; +mod ucontext; \ No newline at end of file diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index 12d9db4..000877a 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -1,14 +1,10 @@ -use std::sync::Arc; +use std::{sync::Arc}; -use super::{process::Process, mgerror::ErrorCode, system::{ObjectType, G_ALIVE, G_SCHEDULER}}; +use super::{process::Process, mgerror::ErrorCode, system::{ObjectType, G_ALIVE, G_SCHEDULER}, ucontext::UContextT}; use crate::{simulator::machine::{NUM_INT_REGS, NUM_FP_REGS, STACK_REG}}; const SIMULATORSTACKSIZE: usize = 32 * 1024; - -#[derive(PartialEq)] -struct SimulatorContext { - // todo -} +const STACK_FENCEPOST: u32 = 0xdeadbeef; #[derive(PartialEq)] struct ThreadContext { @@ -21,7 +17,7 @@ struct ThreadContext { pub struct Thread { name: String, process: Option, - simulation_context: SimulatorContext, + // simulation_context: UContextT, thread_context: ThreadContext, stack_pointer: i32, object_type: ObjectType @@ -33,7 +29,7 @@ impl Thread { Self { name, process: None, - simulation_context: SimulatorContext { }, + // simulation_context: UContextT::new(), thread_context: ThreadContext { int_registers: [0; NUM_INT_REGS], float_registers: [0; NUM_FP_REGS], @@ -79,7 +75,18 @@ impl Thread { } fn init_simulator_context(&self, base_stack_addr: [i8; SIMULATORSTACKSIZE]) { - todo!(); + // let res = self.simulation_context.get_context(); + // if res != 0 { + // panic!("getcontext returns non-zero value {}", res); + // } + // self.simulation_context.buf.uc_stack.ss_sp = base_stack_addr; + // self.simulation_context.buf.uc_stack.ss_size = base_stack_addr.len(); + // self.simulation_context.buf.uc_stack.ss_flags = 0; + // self.simulation_context.buf.uc_link = UContextT::new().buf; + // self.simulation_context.make_context(start_thread_execution, 0); + + // self.simulation_context.stackBottom = base_stack_addr.to_vec(); + // self.simulation_context.stackBottom[0] = STACK_FENCEPOST; } /// Wait for another thread to finish its execution @@ -147,4 +154,8 @@ impl Drop for Thread { todo!(); } +} + +fn start_thread_execution() { + } \ No newline at end of file diff --git a/src/kernel/ucontext.rs b/src/kernel/ucontext.rs new file mode 100644 index 0000000..89b847d --- /dev/null +++ b/src/kernel/ucontext.rs @@ -0,0 +1,72 @@ + +use std::mem::MaybeUninit; + +use libc::{ucontext_t, getcontext, setcontext, makecontext}; + +/// Safe wrapper for ucontext_t struct of linux-gnu libc +/// +/// setcontext and getcontext are unsafe function, this wrap unsafe libc functions +/// +/// This struct doesn't work on windows, because this struct is unavailable +/// +/// todo ucontext_t is not thread-safe (doesn't implements Send and Sync trait), and cannot be use in Threads as rust require var in Mutex (see system.rs) to have everything inside to implements thread-safe traits +#[derive(PartialEq)] +pub struct UContextT { + #[cfg(not(target_os = "windows"))] // struct non disponible sur la libc sur windows + pub buf: ucontext_t, + pub stackBottom: Vec +} + +#[cfg(not(target_os = "windows"))] +impl UContextT { + + pub fn new() -> Self { + let mut context = MaybeUninit::::uninit(); + unsafe { getcontext(context.as_mut_ptr()) }; + Self { + buf: unsafe { context.assume_init() }, + stackBottom: Vec::default(), + } + } + + /// Get user context and store it in variable pointed to by UCP. + /// + /// Use `man getcontext` for more informations + pub fn get_context(&mut self) -> i32 { + unsafe { + getcontext(&mut self.buf) + } + } + + /// Set user context from information of variable pointed to by UCP. + /// + /// Use `man setcontext` for more informations + pub fn set_context(&mut self) -> i32 { + unsafe { + setcontext(&self.buf) + } + } + + pub fn make_context(&mut self, func: extern "C" fn(), args: i32) { + unsafe { + makecontext(&mut self.buf, func, args) + } + } + +} + +#[cfg(target_os = "windows")] +impl UContextT { + + pub fn new() -> Self { + Self {} + } + + pub fn get_context(&mut self) { + // no op + } + + pub fn set_context(&mut self) { + // no op + } +} \ No newline at end of file From dc49951bab081262dcfe83f13613d9cdca03b73b Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Wed, 8 Mar 2023 13:21:08 +0100 Subject: [PATCH 082/115] Implemente finish (not finished yet), fix ucontext for windows --- src/kernel/system.rs | 3 ++- src/kernel/thread.rs | 31 +++++++++++++++++++++++++++++-- src/kernel/ucontext.rs | 16 ++++++++-------- src/simulator/interrupt.rs | 2 +- src/simulator/machine.rs | 15 +++++++++++++++ 5 files changed, 55 insertions(+), 12 deletions(-) diff --git a/src/kernel/system.rs b/src/kernel/system.rs index 5f04b2c..1fd2de9 100644 --- a/src/kernel/system.rs +++ b/src/kernel/system.rs @@ -2,11 +2,12 @@ use std::{sync::{RwLock, Arc}}; use lazy_static::lazy_static; -use crate::{kernel::{thread::Thread, scheduler::Scheduler}, utility::list::List}; +use crate::{kernel::{thread::Thread, scheduler::Scheduler}, utility::list::List, simulator::machine::Machine}; extern crate lazy_static; lazy_static! { + pub static ref G_MACHINE: RwLock = RwLock::new(Machine::_init_machine()); pub static ref G_CURRENT_THREAD: RwLock> = RwLock::new(Option::None); pub static ref G_THREAD_TO_BE_DESTROYED: RwLock> = RwLock::new(Option::None); pub static ref G_ALIVE: RwLock>> = RwLock::new(List::new()); diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index 000877a..0a163d0 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -1,7 +1,7 @@ use std::{sync::Arc}; use super::{process::Process, mgerror::ErrorCode, system::{ObjectType, G_ALIVE, G_SCHEDULER}, ucontext::UContextT}; -use crate::{simulator::machine::{NUM_INT_REGS, NUM_FP_REGS, STACK_REG}}; +use crate::{simulator::machine::{NUM_INT_REGS, NUM_FP_REGS, STACK_REG}, kernel::system::{G_MACHINE, G_THREAD_TO_BE_DESTROYED}}; const SIMULATORSTACKSIZE: usize = 32 * 1024; const STACK_FENCEPOST: u32 = 0xdeadbeef; @@ -116,7 +116,34 @@ impl Thread { } /// Finish the execution of the thread and prepare its deallocation - pub fn finish(&self) { + pub fn finish(mut self) { + match G_MACHINE.write() { + Ok(mut machine) => { + let old_status = machine.interrupt.set_status(crate::simulator::interrupt::InterruptStatus::InterruptOff); + match G_ALIVE.write() { + Ok(alive) => { + // todo alive.remove(T) à implémenter dans List + }, + Err(err) => { + panic!("RwLock is poisoned: {}", err); + } + } + match G_THREAD_TO_BE_DESTROYED.write() { + Ok(mut thread_to_be_destroyed) => { + thread_to_be_destroyed.replace(self); + }, + Err(err) => { + panic!("RwLock is poisoned: {}", err); + } + } + // self.sleep(); + machine.interrupt.set_status(old_status); + }, + Err(err) => { + panic!("RwLock is poisoned: {}", err); + } + } + todo!(); } diff --git a/src/kernel/ucontext.rs b/src/kernel/ucontext.rs index 89b847d..6217a1d 100644 --- a/src/kernel/ucontext.rs +++ b/src/kernel/ucontext.rs @@ -1,8 +1,6 @@ use std::mem::MaybeUninit; -use libc::{ucontext_t, getcontext, setcontext, makecontext}; - /// Safe wrapper for ucontext_t struct of linux-gnu libc /// /// setcontext and getcontext are unsafe function, this wrap unsafe libc functions @@ -13,7 +11,7 @@ use libc::{ucontext_t, getcontext, setcontext, makecontext}; #[derive(PartialEq)] pub struct UContextT { #[cfg(not(target_os = "windows"))] // struct non disponible sur la libc sur windows - pub buf: ucontext_t, + pub buf: lib::ucontext_t, pub stackBottom: Vec } @@ -22,7 +20,7 @@ impl UContextT { pub fn new() -> Self { let mut context = MaybeUninit::::uninit(); - unsafe { getcontext(context.as_mut_ptr()) }; + unsafe { lib::getcontext(context.as_mut_ptr()) }; Self { buf: unsafe { context.assume_init() }, stackBottom: Vec::default(), @@ -34,7 +32,7 @@ impl UContextT { /// Use `man getcontext` for more informations pub fn get_context(&mut self) -> i32 { unsafe { - getcontext(&mut self.buf) + lib::getcontext(&mut self.buf) } } @@ -43,13 +41,13 @@ impl UContextT { /// Use `man setcontext` for more informations pub fn set_context(&mut self) -> i32 { unsafe { - setcontext(&self.buf) + lib::setcontext(&self.buf) } } pub fn make_context(&mut self, func: extern "C" fn(), args: i32) { unsafe { - makecontext(&mut self.buf, func, args) + lib::makecontext(&mut self.buf, func, args) } } @@ -59,7 +57,9 @@ impl UContextT { impl UContextT { pub fn new() -> Self { - Self {} + Self { + stackBottom: Vec::default() + } } pub fn get_context(&mut self) { diff --git a/src/simulator/interrupt.rs b/src/simulator/interrupt.rs index 8f71885..8f08312 100644 --- a/src/simulator/interrupt.rs +++ b/src/simulator/interrupt.rs @@ -1,6 +1,6 @@ -struct Interrupt { +pub struct Interrupt { level: InterruptStatus } diff --git a/src/simulator/machine.rs b/src/simulator/machine.rs index 9c65485..45eb9d6 100644 --- a/src/simulator/machine.rs +++ b/src/simulator/machine.rs @@ -3,6 +3,7 @@ use std::{ops::{Add, Sub}, io::Write}; use crate::simulator::print; use super::{decode::{Instruction, decode}}; +use super::{decode::{Instruction, decode}, interrupt::Interrupt}; use super::global::*; use std::fs::File; @@ -72,9 +73,15 @@ pub struct Machine { pub sp: usize, pub int_reg : Register, pub fp_reg : Register, +<<<<<<< HEAD pub main_memory : Vec, pub shiftmask : [u64 ; 64], pub registers_trace : String // for tests +======= + pub main_memory : [u8 ; MEM_SIZE], + pub shiftmask : [u64 ; 64], + pub interrupt: Interrupt, +>>>>>>> 8c6ef4e (Implemente finish (not finished yet), fix ucontext for windows) // futur taille à calculer int memSize = g_cfg->NumPhysPages * g_cfg->PageSize; //creer une struct cfg(configuration) qui s'initialise avec valeur dans un fichier cfg } @@ -97,6 +104,7 @@ impl Machine { sp: 0, int_reg : Register::::init(), fp_reg : Register::::init(), +<<<<<<< HEAD main_memory : vec![0; MEM_SIZE], shiftmask, registers_trace : String::from("") @@ -104,6 +112,13 @@ impl Machine { ret.int_reg.set_reg(10, -1); ret +======= + main_memory : [0 ; MEM_SIZE], + shiftmask, + interrupt: Interrupt::new() + } + +>>>>>>> 8c6ef4e (Implemente finish (not finished yet), fix ucontext for windows) } /// Read from main memory of the machine From 69e1a3e44476a00654596f3b7addcdfac3bdc845 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Wed, 8 Mar 2023 14:09:07 +0100 Subject: [PATCH 083/115] Fixed ucontext & libc --- src/kernel/ucontext.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/kernel/ucontext.rs b/src/kernel/ucontext.rs index 6217a1d..16c29f1 100644 --- a/src/kernel/ucontext.rs +++ b/src/kernel/ucontext.rs @@ -11,7 +11,7 @@ use std::mem::MaybeUninit; #[derive(PartialEq)] pub struct UContextT { #[cfg(not(target_os = "windows"))] // struct non disponible sur la libc sur windows - pub buf: lib::ucontext_t, + pub buf: libc::ucontext_t, pub stackBottom: Vec } @@ -19,8 +19,8 @@ pub struct UContextT { impl UContextT { pub fn new() -> Self { - let mut context = MaybeUninit::::uninit(); - unsafe { lib::getcontext(context.as_mut_ptr()) }; + let mut context = MaybeUninit::::uninit(); + unsafe { libc::getcontext(context.as_mut_ptr()) }; Self { buf: unsafe { context.assume_init() }, stackBottom: Vec::default(), @@ -32,7 +32,7 @@ impl UContextT { /// Use `man getcontext` for more informations pub fn get_context(&mut self) -> i32 { unsafe { - lib::getcontext(&mut self.buf) + libc::getcontext(&mut self.buf) } } @@ -41,13 +41,13 @@ impl UContextT { /// Use `man setcontext` for more informations pub fn set_context(&mut self) -> i32 { unsafe { - lib::setcontext(&self.buf) + libc::setcontext(&self.buf) } } pub fn make_context(&mut self, func: extern "C" fn(), args: i32) { unsafe { - lib::makecontext(&mut self.buf, func, args) + libc::makecontext(&mut self.buf, func, args) } } From e7637128807b932b5012bceadc8b1d34bc892970 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Wed, 8 Mar 2023 15:16:10 +0100 Subject: [PATCH 084/115] New system structure --- Cargo.lock | 7 ---- Cargo.toml | 1 - src/kernel/system.rs | 94 ++++++++++++++++++++++++++++++++++++++------ 3 files changed, 81 insertions(+), 21 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9898199..e3bcbe3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6,16 +6,9 @@ version = 3 name = "burritos" version = "0.1.0" dependencies = [ - "lazy_static", "libc", ] -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - [[package]] name = "libc" version = "0.2.139" diff --git a/Cargo.toml b/Cargo.toml index d9e3b00..1d66884 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,5 +4,4 @@ version = "0.1.0" edition = "2021" [dependencies] -lazy_static = "1.4.0" libc = { version = "0.2.139", features = ["extra_traits"] } diff --git a/src/kernel/system.rs b/src/kernel/system.rs index 1fd2de9..b0f54c8 100644 --- a/src/kernel/system.rs +++ b/src/kernel/system.rs @@ -1,19 +1,87 @@ -use std::{sync::{RwLock, Arc}}; +use std::rc::Rc; +use crate::{ + kernel::{ + thread::Thread, + scheduler::Scheduler + }, + utility::list::List, + simulator::machine::Machine +}; -use lazy_static::lazy_static; - -use crate::{kernel::{thread::Thread, scheduler::Scheduler}, utility::list::List, simulator::machine::Machine}; - -extern crate lazy_static; - -lazy_static! { - pub static ref G_MACHINE: RwLock = RwLock::new(Machine::_init_machine()); - pub static ref G_CURRENT_THREAD: RwLock> = RwLock::new(Option::None); - pub static ref G_THREAD_TO_BE_DESTROYED: RwLock> = RwLock::new(Option::None); - pub static ref G_ALIVE: RwLock>> = RwLock::new(List::new()); - pub static ref G_SCHEDULER: RwLock = RwLock::new(Scheduler::new()); +/// # System +/// +/// This structure represents the state of the threads running on the operating system. +/// It contains references to the following: +/// +/// - The simulated machine +/// - The current running thread +/// - The list of active threads +/// - The thread to be destroyed next +/// - The scheduler which acts upon these threads +pub struct System { + g_machine: Machine, + g_current_thread: Option, + g_thread_to_be_destroyed: Option, + g_alive: List>, + g_scheduler: Scheduler } +impl System { + + // GETTERS + + /// Returns the Machine + /// + /// Useful to access RAM, devices, ... + pub fn get_g_machine(&mut self) -> &mut Machine { + &mut self.g_machine + } + + /// Currently running thread + pub fn get_g_current_thread(&mut self) -> &mut Option { + &mut self.g_current_thread + } + + /// Thread to be destroyed by [...] + /// + /// TODO: Finish the comment with the relevant value + pub fn get_g_thread_to_be_destroyed(&mut self) -> &mut Option { + &mut self.g_thread_to_be_destroyed + } + + /// List of alive threads + pub fn get_g_alive(&mut self) -> &mut List> { + &mut self.g_alive + } + + /// Current scheduler + pub fn g_scheduler(&mut self) -> &mut Scheduler { + &mut self.g_scheduler + } + + // Setters + + /// Assign a machine to the system + pub fn set_g_machine(&mut self, machine: Machine) { + self.g_machine = machine + } + + /// Set currently running thread + pub fn set_g_current_thread(&mut self, thread: Option) { + self.g_current_thread = thread + } + + /// Set thread to be destroyed next + pub fn set_g_thread_to_be_destroyed(&mut self, thread: Option) { + self.g_thread_to_be_destroyed = thread + } + + /// Set Scheduler which will manage the threads + pub fn set_g_scheduler(&mut self, scheduler: Scheduler) { + self.g_scheduler = scheduler + } + +} #[derive(PartialEq)] pub enum ObjectType { From 6e6fbb5e1dc06a26660eb9e47f68df173dd4849f Mon Sep 17 00:00:00 2001 From: Moysan Gabriel Date: Wed, 8 Mar 2023 14:38:02 +0100 Subject: [PATCH 085/115] dataTypes definition --- src/kernel/elf.rs | 143 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 src/kernel/elf.rs diff --git a/src/kernel/elf.rs b/src/kernel/elf.rs new file mode 100644 index 0000000..84dce69 --- /dev/null +++ b/src/kernel/elf.rs @@ -0,0 +1,143 @@ +//Declaration des alias + +/* + Def ELF : + + The header file defines the format of ELF executable binary + files. Amongst these files are normal executable files, relocatable + object files, core files and shared libraries. + + An executable file using the ELF file format consists of an ELF header, + followed by a program header table or a section header table, or both. + The ELF header is always at offset zero of the file. The program + header table and the section header table's offset in the file are + defined in the ELF header. The two tables describe the rest of the + particularities of the file + */ + + +/* Type for a 16-bit quantity. */ + +type Elf32_Half = u16; + +type Elf64_Half = u16; + +/* Types for signed and unsigned 32-bit quantities. */ + +type Elf32_Word = u32; + +type Elf32_Sword = i32; + +type Elf64_Word = u32; + +type Elf64_Sword = i32; + +/* Types for signed and unsigned 64-bit quantities. */ + +type Elf32_Xword = u64; + +type Elf32_Sxword = i64; + +type Elf64_Xword = u64; + +type Elf64_Sxword = i64; + +/* Type of addresses. */ + +type Elf32_Addr = u32; + +type Elf64_Addr = u64; + +/* Type of file offsets. */ + +type Elf32_Off = u32; + +type Elf64_Off = u64; + +//role de ce truc ? +const EI_NIDENT : u8 = 16; + +//ELF file header 32 bits +struct Elf32Ehdr{ + e_ident : [u8;EI_NIDENT],//16 octects décrivant comment le fichier doit etre parsé + //e_ident must starts with magice number : 0x 7f 45 4c 46 + e_type : Elf32_Half,//type of the file + e_machine : Elf32_Half,//type architecture machine + e_version : Elf32_Word,//always 1 + e_entry : Elf32_Addr,//entry point @ for executable + e_phoff : Elf32_Off,//Offset of the program header table + e_shoff : Elf32_Off,//Offset of the section header table + e_flags : Elf32_Word,//des flags ? + e_ehsize : Elf32_Half,//size of this (the header), redundant + e_phentsize : Elf32_Half,//size per program header + e_phnum : Elf32_Half,//number of program header + e_shentsize : Elf32_Half,//size per section header + e_shnum : Elf32_Half,//number of section header + e_shstrndx : Elf32_Half//section header string table index +} + + +//ELF file header 64 bits +//les champs ont le meme rôle que dans le header 32 bits +struct Elf64Ehdr{ + e_ident : [u8;EI_NIDENT], + e_type : Elf64_Half, + e_machine : Elf64_Half, + e_version : Elf64_Word, + e_entry : Elf64_Addr, + e_phoff : Elf64_Off, + e_shoff : Elf64_Off, + e_flags : Elf64_Word, + e_ehsize : Elf64_Half, + e_phentsize : Elf64_Half, + e_phnum : Elf64_Half, + e_shentsize : Elf64_Half, + e_shnum : Elf64_Half, + e_shstrndx : Elf64_Half +} + + + +/* e_ident offsets */ +const EI_MAG0 : u32 = 0; +const EI_MAG1 : u32 = 1; +const EI_MAG2 : u32 = 2; +const EI_MAG3 : u32 = 3; +const EI_CLASS : u32 = 4; +const EI_DATA : u32 = 5; +const EI_VERSION : u32 = 6; +const EI_PAD : u32 = 7; + +/* e_ident[EI_CLASS] */ +const ELFCLASSNONE : u32 = 0; +const ELFCLASS32 : u32 = 1; +const ELFCLASS64 : u32 = 2; + +/* e_ident[EI_DATA] */ +const ELFDATANONE : u32 = 0; +const ELFDATA2LSB : u32 = 1; +const ELFDATA2MSB : u32 = 2; + +/* e_type */ +const ET_NONE : u32 = 0; /* No file type */ +const ET_REL : u32 = 1; /* Relocatable file */ +const ET_EXEC : u32 = 2; /* Executable file */ +const ET_DYN : u32 = 3; /* Shared object file */ +const ET_CORE : u32 = 4; /* Core file */ +const ET_LOPROC : u32 = 0xff00; /* Processor-specific */ +const ET_HIPROC : u32 = 0xffff; /* Processor-specific */ + +/* e_machine */ +const EM_NONE : u32 = 0; /* No machine */ +const EM_M32 : u32 = 1; /* AT&T WE 32100 */ +const EM_SPARC : u32 = 2; /* SPARC */ +const EM_386 : u32 = 3; /* Intel 80386 */ +const EM_68K : u32 = 4; /* Motorola 68000 */ +const EM_88K : u32 = 5; /* Motorola 88000 */ +const EM_860 : u32 = 7; /* Intel 80860 */ +const EM_MIPS : u32 = 8; /* MIPS R3000 */ +const EM_RISC : u32 = 243; /* RISCV */ + +/* e_version */ + const EV_NONE : u32 = 0; /* invalid version */ + const EV_CURRENT : u32 = 1; /* current version */ From a459a31210f68e0a2195955c904f3e84bac1880e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Wed, 8 Mar 2023 15:34:13 +0100 Subject: [PATCH 086/115] Added System initializer method --- src/kernel/system.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/kernel/system.rs b/src/kernel/system.rs index b0f54c8..e650097 100644 --- a/src/kernel/system.rs +++ b/src/kernel/system.rs @@ -28,6 +28,17 @@ pub struct System { impl System { + /// System constructor + pub fn new(machine: Machine, scheduler: Scheduler) -> Self { + Self { + g_machine: machine, + g_current_thread: None, + g_thread_to_be_destroyed: None, + g_alive: List::new(), + g_scheduler: scheduler + } + } + // GETTERS /// Returns the Machine From b59fb83e60fc179625291860069514f5aea991d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Wed, 8 Mar 2023 15:38:19 +0100 Subject: [PATCH 087/115] Main now initializes System object --- src/main.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main.rs b/src/main.rs index 10c00e9..f703804 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,15 +2,15 @@ mod simulator; mod kernel; pub mod utility; +use kernel::{ + scheduler::Scheduler, + system::System +}; use simulator::machine::Machine; use simulator::mem_cmp; fn main() { - let mut m = Machine::_init_machine(); - let path = "memoryComp.txt".to_string(); - let checker = mem_cmp::MemChecker::from(&path); - mem_cmp::MemChecker::fill_memory_from_mem_checker(&checker, &mut m); - //mem_cmp::Mem_Checker::print_Mem_Checker(&checker); - //Machine::print_memory(&mut m, 0x400000, 0x405000); - Machine::run(&mut m); + let machine = Machine::_init_machine(); + let scheduler = Scheduler::new(); + let system = System::new(machine, scheduler); } From 6b95969c4bef52f824446649e906b4d2a1a95507 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Wed, 8 Mar 2023 15:48:03 +0100 Subject: [PATCH 088/115] Added partialeq trait to List struct --- src/utility/list.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/utility/list.rs b/src/utility/list.rs index a90ec2b..88962c4 100644 --- a/src/utility/list.rs +++ b/src/utility/list.rs @@ -1,4 +1,5 @@ +#[derive(PartialEq)] pub struct List { head: Link, } From bf4be4467608cd70d5bfd3f5f9cfcccd81501011 Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Wed, 8 Mar 2023 15:46:53 +0100 Subject: [PATCH 089/115] Add list.remove(T) --- src/utility/list.rs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/utility/list.rs b/src/utility/list.rs index 88962c4..024606c 100644 --- a/src/utility/list.rs +++ b/src/utility/list.rs @@ -70,6 +70,33 @@ impl List { false } + /// Remove the item from the list + /// + /// Return true if the item has been found, otherwise return false + /// + /// Worst-case complexity is O(n) + pub fn remove(&mut self, item: T)-> bool { + let mut found = false; + let mut tmp_list: List = List::new(); + while !self.is_empty() { + let current = self.pop().unwrap(); + if current != item { + tmp_list.push(current); + } else { + found = true; + break; + } + } + while !tmp_list.is_empty() { + self.push(tmp_list.pop().unwrap()); + } + found + } + + pub fn is_empty(&self) -> bool { + self.head.is_none() + } + pub fn into_iter(self) -> IntoIter { IntoIter(self) } From 5465267f3c7c1202d63907a221a4a1e7ae646a4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Rativel?= Date: Wed, 8 Mar 2023 15:45:35 +0100 Subject: [PATCH 090/115] Sarting synch.rs implementation --- src/kernel/mod.rs | 3 ++- src/kernel/synch.rs | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 src/kernel/synch.rs diff --git a/src/kernel/mod.rs b/src/kernel/mod.rs index e061a2a..f1abafa 100644 --- a/src/kernel/mod.rs +++ b/src/kernel/mod.rs @@ -3,4 +3,5 @@ pub mod thread; pub mod scheduler; pub mod mgerror; pub mod system; -mod ucontext; \ No newline at end of file +mod ucontext; +mod synch; \ No newline at end of file diff --git a/src/kernel/synch.rs b/src/kernel/synch.rs new file mode 100644 index 0000000..8a7fe98 --- /dev/null +++ b/src/kernel/synch.rs @@ -0,0 +1,43 @@ +use crate::utility::list::List; +use crate::kernel::thread::Thread; +use std::rc::Rc; +use crate::simulator::interrupt::InterruptStatus::InterruptOff; +use crate::simulator::machine::Machine; + +pub struct Semaphore{ + + counter:i32, + waiting_queue:List> + +} + +impl Semaphore{ + + pub fn p(&mut self, current_thread:Rc, machine: &mut Machine){ + let old_status = machine.interrupt.set_status(InterruptOff); + self.counter-=1; + if self.counter < 0 { + self.waiting_queue.push(Rc::clone(¤t_thread)); + current_thread.sleep(); + } + machine.interrupt.set_status(old_status); + } + + pub fn v(&mut self, current_thread:Rc, machine: &mut Machine){ + let old_status = machine.interrupt.set_status(InterruptOff); + self.counter-=1; + if self.waiting_queue.peek == None { + self.waiting_queue.push(Rc::clone(¤t_thread)); + current_thread.sleep(); + } + machine.interrupt.set_status(old_status); + } +} + +pub struct Lock{ + +} + +pub struct Condition{ + +} \ No newline at end of file From aad2ecbd4cdb40305fd93368b25602f95bb1d5e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Rativel?= Date: Wed, 8 Mar 2023 15:46:27 +0100 Subject: [PATCH 091/115] small fix --- src/kernel/synch.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/kernel/synch.rs b/src/kernel/synch.rs index 8a7fe98..a2038e6 100644 --- a/src/kernel/synch.rs +++ b/src/kernel/synch.rs @@ -26,7 +26,7 @@ impl Semaphore{ pub fn v(&mut self, current_thread:Rc, machine: &mut Machine){ let old_status = machine.interrupt.set_status(InterruptOff); self.counter-=1; - if self.waiting_queue.peek == None { + if self.waiting_queue.peek() == None { self.waiting_queue.push(Rc::clone(¤t_thread)); current_thread.sleep(); } From 95e0ac4499d8473afdddb5ca7e4d94710fc86390 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Wed, 8 Mar 2023 15:48:33 +0100 Subject: [PATCH 092/115] Added partialeq trait where relevant --- src/kernel/scheduler.rs | 1 + src/kernel/system.rs | 1 + src/kernel/thread.rs | 44 +++++++++----------------------------- src/simulator/interrupt.rs | 2 +- src/simulator/machine.rs | 3 ++- 5 files changed, 15 insertions(+), 36 deletions(-) diff --git a/src/kernel/scheduler.rs b/src/kernel/scheduler.rs index 3500f65..9753cdf 100644 --- a/src/kernel/scheduler.rs +++ b/src/kernel/scheduler.rs @@ -5,6 +5,7 @@ use crate::kernel::thread::Thread; use super::system::{G_CURRENT_THREAD, G_THREAD_TO_BE_DESTROYED}; +#[derive(PartialEq)] pub struct Scheduler { ready_list: List> } diff --git a/src/kernel/system.rs b/src/kernel/system.rs index e650097..8ef7ecb 100644 --- a/src/kernel/system.rs +++ b/src/kernel/system.rs @@ -18,6 +18,7 @@ use crate::{ /// - The list of active threads /// - The thread to be destroyed next /// - The scheduler which acts upon these threads +#[derive(PartialEq)] pub struct System { g_machine: Machine, g_current_thread: Option, diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index 0a163d0..ce4aec8 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -1,7 +1,7 @@ -use std::{sync::Arc}; +use std::{sync::Arc, rc::Rc}; -use super::{process::Process, mgerror::ErrorCode, system::{ObjectType, G_ALIVE, G_SCHEDULER}, ucontext::UContextT}; -use crate::{simulator::machine::{NUM_INT_REGS, NUM_FP_REGS, STACK_REG}, kernel::system::{G_MACHINE, G_THREAD_TO_BE_DESTROYED}}; +use super::{process::Process, mgerror::ErrorCode, system::{ObjectType, System}, ucontext::UContextT}; +use crate::{simulator::machine::{NUM_INT_REGS, NUM_FP_REGS, STACK_REG}}; const SIMULATORSTACKSIZE: usize = 32 * 1024; const STACK_FENCEPOST: u32 = 0xdeadbeef; @@ -20,12 +20,14 @@ pub struct Thread { // simulation_context: UContextT, thread_context: ThreadContext, stack_pointer: i32, - object_type: ObjectType + object_type: ObjectType, + system: Rc } impl Thread { - pub fn new(name: String) -> Self { + /// Thread constructor + pub fn new(name: String, system: Rc) -> Self { Self { name, process: None, @@ -36,7 +38,8 @@ impl Thread { pc: 0 }, stack_pointer: 0, - object_type: ObjectType::ThreadType + object_type: ObjectType::ThreadType, + system } } @@ -116,34 +119,7 @@ impl Thread { } /// Finish the execution of the thread and prepare its deallocation - pub fn finish(mut self) { - match G_MACHINE.write() { - Ok(mut machine) => { - let old_status = machine.interrupt.set_status(crate::simulator::interrupt::InterruptStatus::InterruptOff); - match G_ALIVE.write() { - Ok(alive) => { - // todo alive.remove(T) à implémenter dans List - }, - Err(err) => { - panic!("RwLock is poisoned: {}", err); - } - } - match G_THREAD_TO_BE_DESTROYED.write() { - Ok(mut thread_to_be_destroyed) => { - thread_to_be_destroyed.replace(self); - }, - Err(err) => { - panic!("RwLock is poisoned: {}", err); - } - } - // self.sleep(); - machine.interrupt.set_status(old_status); - }, - Err(err) => { - panic!("RwLock is poisoned: {}", err); - } - } - + pub fn finish(&self) { todo!(); } diff --git a/src/simulator/interrupt.rs b/src/simulator/interrupt.rs index 8f08312..9cede5b 100644 --- a/src/simulator/interrupt.rs +++ b/src/simulator/interrupt.rs @@ -1,5 +1,5 @@ - +#[derive(PartialEq)] pub struct Interrupt { level: InterruptStatus } diff --git a/src/simulator/machine.rs b/src/simulator/machine.rs index 45eb9d6..73f1872 100644 --- a/src/simulator/machine.rs +++ b/src/simulator/machine.rs @@ -22,7 +22,7 @@ impl RegisterNum for i64 {} impl RegisterNum for f32 {} - +#[derive(PartialEq)] pub struct Register { register: [U; 32] } @@ -68,6 +68,7 @@ impl Register { } +#[derive(PartialEq)] pub struct Machine { pub pc : u64, pub sp: usize, From ec07158633bb41a30c22afffaf81ac7c7662cb8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Wed, 8 Mar 2023 15:49:31 +0100 Subject: [PATCH 093/115] Added partialeq trait to Node --- src/utility/list.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/utility/list.rs b/src/utility/list.rs index 024606c..f6efb50 100644 --- a/src/utility/list.rs +++ b/src/utility/list.rs @@ -6,6 +6,7 @@ pub struct List { type Link = Option>>; +#[derive(PartialEq)] struct Node { elem: T, next: Link, From 75e5c17f28f01c4f5926ac745f4a1ff723a7dad8 Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Wed, 8 Mar 2023 15:54:10 +0100 Subject: [PATCH 094/115] Fix thread --- src/kernel/scheduler.rs | 10 ++++------ src/kernel/thread.rs | 33 ++++++--------------------------- 2 files changed, 10 insertions(+), 33 deletions(-) diff --git a/src/kernel/scheduler.rs b/src/kernel/scheduler.rs index 9753cdf..670f0fa 100644 --- a/src/kernel/scheduler.rs +++ b/src/kernel/scheduler.rs @@ -1,13 +1,11 @@ -use std::sync::Arc; +use std::{sync::Arc, rc::Rc}; use crate::utility::list::List; use crate::kernel::thread::Thread; -use super::system::{G_CURRENT_THREAD, G_THREAD_TO_BE_DESTROYED}; - #[derive(PartialEq)] pub struct Scheduler { - ready_list: List> + ready_list: List> } impl Scheduler { @@ -28,7 +26,7 @@ impl Scheduler { /// ## Pamameter /// /// **thread** is the thread to be put on the read list - pub fn ready_to_run(&mut self, thread: Arc) { + pub fn ready_to_run(&mut self, thread: Rc) { self.ready_list.push(thread); } @@ -38,7 +36,7 @@ impl Scheduler { /// Thread is removed from the ready list. /// /// **return** Thread thread to be scheduled - pub fn find_next_to_run(&mut self) -> Option> { + pub fn find_next_to_run(&mut self) -> Option> { self.ready_list.pop() } diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index ce4aec8..3ffbba6 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -51,23 +51,9 @@ impl Thread { let base_stack_addr: [i8; SIMULATORSTACKSIZE] = [0; SIMULATORSTACKSIZE]; // todo AllocBoundedArray self.init_simulator_context(base_stack_addr); self.process.as_mut().unwrap().num_thread += 1; - match G_ALIVE.write() { - Ok(mut alive) => { - let this = Arc::new(self); - alive.push(Arc::clone(&this)); - match G_SCHEDULER.write() { - Ok(mut scheduler) => { - scheduler.ready_to_run(Arc::clone(&this)); - }, - Err(err) => { - panic!("RwLock poisonned, {}", err); - } - } - }, - Err(err) => { - panic!("RwLock poisonned, {}", err); - } - } + let this = Rc::new(self); + self.system.get_g_alive().push(Rc::clone(&this)); + self.system.g_scheduler().ready_to_run(Rc::clone(&this)); Result::Ok(()) } @@ -93,16 +79,9 @@ impl Thread { } /// Wait for another thread to finish its execution - pub fn join(&self, id_thread: Arc) { - match G_ALIVE.write() { - Ok(alive) => { - while alive.contains(&Arc::clone(&id_thread)) { - self.t_yield(); - } - }, - Err(err) => { - panic!("RwLock poisonned, {}", err) - } + pub fn join(&self, id_thread: Rc) { + while self.system.get_g_alive().contains(&Rc::clone(&id_thread)) { + self.t_yield(); } } From 3406544e3bd4ed0ef8e81f7efa63cc5ed98fc9e8 Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Wed, 8 Mar 2023 16:05:05 +0100 Subject: [PATCH 095/115] Remove old static vars in scheduler, doesn't work --- src/kernel/scheduler.rs | 40 ++++++++++++---------------------------- 1 file changed, 12 insertions(+), 28 deletions(-) diff --git a/src/kernel/scheduler.rs b/src/kernel/scheduler.rs index 670f0fa..0398799 100644 --- a/src/kernel/scheduler.rs +++ b/src/kernel/scheduler.rs @@ -1,8 +1,10 @@ -use std::{sync::Arc, rc::Rc}; +use std::rc::Rc; use crate::utility::list::List; use crate::kernel::thread::Thread; +use super::system::System; + #[derive(PartialEq)] pub struct Scheduler { ready_list: List> @@ -50,34 +52,16 @@ impl Scheduler { /// ## Parameter /// /// **next_thread** thread to dispatch to the CPU - pub fn switch_to(&self, next_thread: Thread) { - match G_CURRENT_THREAD.write() { - Ok(mut current_thread) => { - let old_thread = current_thread.as_mut().unwrap(); + pub fn switch_to(&self, system: Rc, next_thread: Thread) { + /* if let Some(old_thread) = system.get_g_current_thread() { + old_thread.save_processor_state(); + old_thread.save_simulator_state(); - old_thread.save_processor_state(); - old_thread.save_simulator_state(); - - if old_thread != &next_thread { - next_thread.restore_processor_state(); - next_thread.restore_simulator_state(); - current_thread.replace(next_thread); - } - - match G_THREAD_TO_BE_DESTROYED.write() { - Ok(mut thread_to_be_destroyed) => { - if thread_to_be_destroyed.is_some() { - drop(thread_to_be_destroyed.take()); - } - }, - Err(err) => { - panic!("RwLock is poisonned: {}", err); - } - } - }, - Err(err) => { - panic!("RwLock is poisonned: {}", err); + if old_thread != &next_thread { + next_thread.restore_processor_state(); + next_thread.restore_simulator_state(); + system.set_g_current_thread(Option::Some(next_thread)); } - } + } */ } } \ No newline at end of file From 1ac2e322cf8fe4d91572566dca7a1614a08bf1e4 Mon Sep 17 00:00:00 2001 From: Samy Solhi Date: Wed, 8 Mar 2023 16:39:00 +0100 Subject: [PATCH 096/115] synch.rs implemented --- src/kernel/synch.rs | 93 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 85 insertions(+), 8 deletions(-) diff --git a/src/kernel/synch.rs b/src/kernel/synch.rs index a2038e6..98a1f76 100644 --- a/src/kernel/synch.rs +++ b/src/kernel/synch.rs @@ -1,8 +1,11 @@ use crate::utility::list::List; use crate::kernel::thread::Thread; -use std::rc::Rc; use crate::simulator::interrupt::InterruptStatus::InterruptOff; use crate::simulator::machine::Machine; +use std::rc::Rc; + + +use super::scheduler::Scheduler; pub struct Semaphore{ @@ -13,9 +16,9 @@ pub struct Semaphore{ impl Semaphore{ - pub fn p(&mut self, current_thread:Rc, machine: &mut Machine){ + pub fn p(&mut self, current_thread: Rc, machine: &mut Machine){ let old_status = machine.interrupt.set_status(InterruptOff); - self.counter-=1; + self.counter -= 1; if self.counter < 0 { self.waiting_queue.push(Rc::clone(¤t_thread)); current_thread.sleep(); @@ -23,12 +26,11 @@ impl Semaphore{ machine.interrupt.set_status(old_status); } - pub fn v(&mut self, current_thread:Rc, machine: &mut Machine){ + pub fn v(&mut self, machine: &mut Machine, scheduler: &mut Scheduler){ let old_status = machine.interrupt.set_status(InterruptOff); - self.counter-=1; - if self.waiting_queue.peek() == None { - self.waiting_queue.push(Rc::clone(¤t_thread)); - current_thread.sleep(); + self.counter -= 1; + if self.waiting_queue.peek() != None { + scheduler.ready_to_run(self.waiting_queue.pop().unwrap()); } machine.interrupt.set_status(old_status); } @@ -36,8 +38,83 @@ impl Semaphore{ pub struct Lock{ + owner: Rc, + waiting_queue:List>, + free: bool + +} + +impl Lock { + pub fn acquire(&mut self, machine: &mut Machine, current_thread: Rc) { + let old_status = machine.interrupt.set_status(InterruptOff); + + if self.free { + self.free = false; + self.owner = current_thread; + } else { + self.waiting_queue.push(Rc::clone(¤t_thread)); + current_thread.sleep(); + } + + machine.interrupt.set_status(old_status); + } + + pub fn release(&mut self, machine: &mut Machine, scheduler: &mut Scheduler, current_thread: Rc) { + let old_status = machine.interrupt.set_status(InterruptOff); + + if self.is_held_by_current_thread(current_thread) { + if self.waiting_queue.peek() != None { + self.owner = self.waiting_queue.pop().unwrap(); + scheduler.ready_to_run(Rc::clone(&self.owner)); + } else { + self.free = true; + } + } + + machine.interrupt.set_status(old_status); + } + + pub fn is_held_by_current_thread(&mut self, current_thread: Rc) -> bool { + Rc::ptr_eq(&self.owner, ¤t_thread) + } } pub struct Condition{ + waiting_queue:List> + +} + +impl Condition { + + pub fn wait(&mut self, machine: &mut Machine, current_thread: Rc) { + let old_status = machine.interrupt.set_status(InterruptOff); + + self.waiting_queue.push(Rc::clone(¤t_thread)); + current_thread.sleep(); + + machine.interrupt.set_status(old_status); + } + + pub fn signal(&mut self, machine: &mut Machine, scheduler: &mut Scheduler) { + let old_status = machine.interrupt.set_status(InterruptOff); + + if self.waiting_queue.peek() != None { + scheduler.ready_to_run(self.waiting_queue.pop().unwrap()); + } + + machine.interrupt.set_status(old_status); + + } + + pub fn broadcast(&mut self, machine: &mut Machine, scheduler: &mut Scheduler) { + let old_status = machine.interrupt.set_status(InterruptOff); + + while self.waiting_queue.peek() != None { + scheduler.ready_to_run(self.waiting_queue.pop().unwrap()); + } + machine.interrupt.set_status(old_status); + + } + } \ No newline at end of file From 68200865790965526c069ae7a62dbbdf795173f6 Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Wed, 8 Mar 2023 21:10:51 +0100 Subject: [PATCH 097/115] Added thread manager --- src/kernel/mod.rs | 3 +- src/kernel/system.rs | 71 +++++---------------------- src/kernel/thread.rs | 44 +++-------------- src/kernel/thread_manager.rs | 95 ++++++++++++++++++++++++++++++++++++ src/kernel/ucontext.rs | 2 +- src/main.rs | 8 +-- 6 files changed, 119 insertions(+), 104 deletions(-) create mode 100644 src/kernel/thread_manager.rs diff --git a/src/kernel/mod.rs b/src/kernel/mod.rs index f1abafa..1988e43 100644 --- a/src/kernel/mod.rs +++ b/src/kernel/mod.rs @@ -4,4 +4,5 @@ pub mod scheduler; pub mod mgerror; pub mod system; mod ucontext; -mod synch; \ No newline at end of file +mod synch; +mod thread_manager; \ No newline at end of file diff --git a/src/kernel/system.rs b/src/kernel/system.rs index 8ef7ecb..863bdc2 100644 --- a/src/kernel/system.rs +++ b/src/kernel/system.rs @@ -1,12 +1,6 @@ -use std::rc::Rc; -use crate::{ - kernel::{ - thread::Thread, - scheduler::Scheduler - }, - utility::list::List, - simulator::machine::Machine -}; +use crate::simulator::machine::Machine; + +use super::thread_manager::ThreadManager; /// # System /// @@ -19,26 +13,24 @@ use crate::{ /// - The thread to be destroyed next /// - The scheduler which acts upon these threads #[derive(PartialEq)] -pub struct System { +pub struct System<'a> { g_machine: Machine, - g_current_thread: Option, - g_thread_to_be_destroyed: Option, - g_alive: List>, - g_scheduler: Scheduler + thread_manager: ThreadManager<'a> } -impl System { +impl<'a> System<'a> { /// System constructor - pub fn new(machine: Machine, scheduler: Scheduler) -> Self { + pub fn new(machine: Machine) -> System<'a> { Self { g_machine: machine, - g_current_thread: None, - g_thread_to_be_destroyed: None, - g_alive: List::new(), - g_scheduler: scheduler + thread_manager: ThreadManager::new() } - } + } + + pub fn freeze(&'a mut self) { + self.thread_manager.system.set(Option::Some(self)); + } // GETTERS @@ -49,28 +41,6 @@ impl System { &mut self.g_machine } - /// Currently running thread - pub fn get_g_current_thread(&mut self) -> &mut Option { - &mut self.g_current_thread - } - - /// Thread to be destroyed by [...] - /// - /// TODO: Finish the comment with the relevant value - pub fn get_g_thread_to_be_destroyed(&mut self) -> &mut Option { - &mut self.g_thread_to_be_destroyed - } - - /// List of alive threads - pub fn get_g_alive(&mut self) -> &mut List> { - &mut self.g_alive - } - - /// Current scheduler - pub fn g_scheduler(&mut self) -> &mut Scheduler { - &mut self.g_scheduler - } - // Setters /// Assign a machine to the system @@ -78,21 +48,6 @@ impl System { self.g_machine = machine } - /// Set currently running thread - pub fn set_g_current_thread(&mut self, thread: Option) { - self.g_current_thread = thread - } - - /// Set thread to be destroyed next - pub fn set_g_thread_to_be_destroyed(&mut self, thread: Option) { - self.g_thread_to_be_destroyed = thread - } - - /// Set Scheduler which will manage the threads - pub fn set_g_scheduler(&mut self, scheduler: Scheduler) { - self.g_scheduler = scheduler - } - } #[derive(PartialEq)] diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index 3ffbba6..68bc7c9 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -1,6 +1,4 @@ -use std::{sync::Arc, rc::Rc}; - -use super::{process::Process, mgerror::ErrorCode, system::{ObjectType, System}, ucontext::UContextT}; +use super::{process::Process, system::ObjectType}; use crate::{simulator::machine::{NUM_INT_REGS, NUM_FP_REGS, STACK_REG}}; const SIMULATORSTACKSIZE: usize = 32 * 1024; @@ -16,18 +14,17 @@ struct ThreadContext { #[derive(PartialEq)] pub struct Thread { name: String, - process: Option, + pub process: Option, // simulation_context: UContextT, thread_context: ThreadContext, stack_pointer: i32, - object_type: ObjectType, - system: Rc + object_type: ObjectType } impl Thread { /// Thread constructor - pub fn new(name: String, system: Rc) -> Self { + pub fn new(name: String) -> Self { Self { name, process: None, @@ -39,31 +36,16 @@ impl Thread { }, stack_pointer: 0, object_type: ObjectType::ThreadType, - system } } - /// Start a thread, attaching it to a process - pub fn start(mut self, owner: Process, func: i64, arg: i64) -> Result<(), ErrorCode> { - self.process = Option::Some(owner); - let ptr = 0; // todo addrspace - self.init_thread_context(func, ptr, arg); - let base_stack_addr: [i8; SIMULATORSTACKSIZE] = [0; SIMULATORSTACKSIZE]; // todo AllocBoundedArray - self.init_simulator_context(base_stack_addr); - self.process.as_mut().unwrap().num_thread += 1; - let this = Rc::new(self); - self.system.get_g_alive().push(Rc::clone(&this)); - self.system.g_scheduler().ready_to_run(Rc::clone(&this)); - Result::Ok(()) - } - - fn init_thread_context(&mut self, initial_pc_reg: i64, initial_sp: i64, arg: i64) { + pub fn init_thread_context(&mut self, initial_pc_reg: i64, initial_sp: i64, arg: i64) { self.thread_context.pc = initial_pc_reg; self.thread_context.int_registers[10] = arg; self.thread_context.int_registers[STACK_REG] = initial_sp; } - fn init_simulator_context(&self, base_stack_addr: [i8; SIMULATORSTACKSIZE]) { + pub fn init_simulator_context(&self, base_stack_addr: [i8; SIMULATORSTACKSIZE]) { // let res = self.simulation_context.get_context(); // if res != 0 { // panic!("getcontext returns non-zero value {}", res); @@ -78,20 +60,6 @@ impl Thread { // self.simulation_context.stackBottom[0] = STACK_FENCEPOST; } - /// Wait for another thread to finish its execution - pub fn join(&self, id_thread: Rc) { - while self.system.get_g_alive().contains(&Rc::clone(&id_thread)) { - self.t_yield(); - } - } - - /// Relinquish the CPU if any other thread is runnable. - /// - /// Cannot use yield as a function name -> reserved name in rust - pub fn t_yield(&self) { - todo!(); - } - /// Put the thread to sleep and relinquish the processor pub fn sleep(&self) { todo!(); diff --git a/src/kernel/thread_manager.rs b/src/kernel/thread_manager.rs new file mode 100644 index 0000000..28e5eaa --- /dev/null +++ b/src/kernel/thread_manager.rs @@ -0,0 +1,95 @@ +use std::{rc::Rc, cell::Cell}; + +use crate::utility::list::List; + +use super::{scheduler::Scheduler, thread::Thread, system::System, mgerror::ErrorCode, process::Process}; + +const SIMULATORSTACKSIZE: usize = 32 * 1024; + +#[derive(PartialEq)] +pub struct ThreadManager<'a> { + pub g_current_thread: Option, + pub g_thread_to_be_destroyed: Option, + pub g_alive: List>, + pub g_scheduler: Scheduler, + pub system: Cell>> +} + +impl<'a> ThreadManager<'a> { + + pub fn new() -> Self { + Self { + g_current_thread: Option::None, + g_thread_to_be_destroyed: Option::None, + g_alive: List::new(), + g_scheduler: Scheduler::new(), + system: Cell::new(None) + } + } + + /// Start a thread, attaching it to a process + pub fn start_thread(&mut self, thread: &mut Thread, owner: Process, func_pc: i64, argument: i64) -> Result<(), ErrorCode> { + thread.process = Option::Some(owner); + let ptr = 0; // todo addrspace + thread.init_thread_context(func_pc, ptr, argument); + let base_stack_addr: [i8; SIMULATORSTACKSIZE] = [0; SIMULATORSTACKSIZE]; // todo AllocBoundedArray + thread.init_simulator_context(base_stack_addr); + thread.process.as_mut().unwrap().num_thread += 1; + let thread_m = Rc::new(thread); + // self.get_g_alive().push(Rc::clone(thread)); + // self.g_scheduler().ready_to_run(Rc::clone(&thread)); + Result::Ok(()) + } + + /// Wait for another thread to finish its execution + pub fn thread_join(&mut self, id_thread: Rc) { + while self.get_g_alive().contains(&Rc::clone(&id_thread)) { + self.thread_yield(); + } + } + + /// Relinquish the CPU if any other thread is runnable. + /// + /// Cannot use yield as a function name -> reserved name in rust + pub fn thread_yield(&mut self) { + todo!(); + } + + /// Currently running thread + pub fn get_g_current_thread(&mut self) -> &mut Option { + &mut self.g_current_thread + } + + /// Thread to be destroyed by [...] + /// + /// TODO: Finish the comment with the relevant value + pub fn get_g_thread_to_be_destroyed(&mut self) -> &mut Option { + &mut self.g_thread_to_be_destroyed + } + + /// List of alive threads + pub fn get_g_alive(&mut self) -> &mut List> { + &mut self.g_alive + } + + /// Current scheduler + pub fn g_scheduler(&mut self) -> &mut Scheduler { + &mut self.g_scheduler + } + + /// Set currently running thread + pub fn set_g_current_thread(&mut self, thread: Option) { + self.g_current_thread = thread + } + + /// Set thread to be destroyed next + pub fn set_g_thread_to_be_destroyed(&mut self, thread: Option) { + self.g_thread_to_be_destroyed = thread + } + + /// Set Scheduler which will manage the threads + pub fn set_g_scheduler(&mut self, scheduler: Scheduler) { + self.g_scheduler = scheduler + } + +} \ No newline at end of file diff --git a/src/kernel/ucontext.rs b/src/kernel/ucontext.rs index 16c29f1..567d144 100644 --- a/src/kernel/ucontext.rs +++ b/src/kernel/ucontext.rs @@ -1,5 +1,5 @@ -use std::mem::MaybeUninit; +// use std::mem::MaybeUninit; /// Safe wrapper for ucontext_t struct of linux-gnu libc /// diff --git a/src/main.rs b/src/main.rs index f703804..a19b258 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,15 +2,11 @@ mod simulator; mod kernel; pub mod utility; -use kernel::{ - scheduler::Scheduler, - system::System -}; +use kernel::system::System; use simulator::machine::Machine; use simulator::mem_cmp; fn main() { let machine = Machine::_init_machine(); - let scheduler = Scheduler::new(); - let system = System::new(machine, scheduler); + let _system = System::new(machine); } From 0c3af96b78e45a57c08e9b0bdd4027dad957bf9b Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Wed, 8 Mar 2023 21:43:03 +0100 Subject: [PATCH 098/115] Fix start_thread --- src/kernel/thread_manager.rs | 6 +++--- src/simulator/interrupt.rs | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/kernel/thread_manager.rs b/src/kernel/thread_manager.rs index 28e5eaa..466d14e 100644 --- a/src/kernel/thread_manager.rs +++ b/src/kernel/thread_manager.rs @@ -28,7 +28,7 @@ impl<'a> ThreadManager<'a> { } /// Start a thread, attaching it to a process - pub fn start_thread(&mut self, thread: &mut Thread, owner: Process, func_pc: i64, argument: i64) -> Result<(), ErrorCode> { + pub fn start_thread(&mut self, mut thread: Thread, owner: Process, func_pc: i64, argument: i64) -> Result<(), ErrorCode> { thread.process = Option::Some(owner); let ptr = 0; // todo addrspace thread.init_thread_context(func_pc, ptr, argument); @@ -36,8 +36,8 @@ impl<'a> ThreadManager<'a> { thread.init_simulator_context(base_stack_addr); thread.process.as_mut().unwrap().num_thread += 1; let thread_m = Rc::new(thread); - // self.get_g_alive().push(Rc::clone(thread)); - // self.g_scheduler().ready_to_run(Rc::clone(&thread)); + self.get_g_alive().push(Rc::clone(&thread_m)); + self.g_scheduler().ready_to_run(Rc::clone(&thread_m)); Result::Ok(()) } diff --git a/src/simulator/interrupt.rs b/src/simulator/interrupt.rs index 9cede5b..e63e0af 100644 --- a/src/simulator/interrupt.rs +++ b/src/simulator/interrupt.rs @@ -12,10 +12,10 @@ impl Interrupt { } } - pub fn set_status(&mut self, newStatus: InterruptStatus) -> InterruptStatus { + pub fn set_status(&mut self, new_status: InterruptStatus) -> InterruptStatus { let old = self.level; - self.level = newStatus; - if newStatus == InterruptStatus::InterruptOn && old == InterruptStatus::InterruptOff { + self.level = new_status; + if new_status == InterruptStatus::InterruptOn && old == InterruptStatus::InterruptOff { self.one_tick(1); } old From 26b75ffe8d6f4e7624c720b93b38abbe10d15a1d Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Thu, 9 Mar 2023 12:08:33 +0100 Subject: [PATCH 099/115] Add thread save and restore processor context --- src/kernel/system.rs | 12 +++++---- src/kernel/thread.rs | 38 +++++++++++------------------ src/kernel/thread_manager.rs | 47 ++++++++++++++++++++++++++++++++---- src/kernel/ucontext.rs | 7 +++--- src/simulator/machine.rs | 38 +++++++++++++++-------------- 5 files changed, 87 insertions(+), 55 deletions(-) diff --git a/src/kernel/system.rs b/src/kernel/system.rs index 863bdc2..319be5c 100644 --- a/src/kernel/system.rs +++ b/src/kernel/system.rs @@ -1,3 +1,5 @@ +use std::cell::RefCell; + use crate::simulator::machine::Machine; use super::thread_manager::ThreadManager; @@ -14,7 +16,7 @@ use super::thread_manager::ThreadManager; /// - The scheduler which acts upon these threads #[derive(PartialEq)] pub struct System<'a> { - g_machine: Machine, + g_machine: RefCell, thread_manager: ThreadManager<'a> } @@ -23,7 +25,7 @@ impl<'a> System<'a> { /// System constructor pub fn new(machine: Machine) -> System<'a> { Self { - g_machine: machine, + g_machine: RefCell::new(machine), thread_manager: ThreadManager::new() } } @@ -37,14 +39,14 @@ impl<'a> System<'a> { /// Returns the Machine /// /// Useful to access RAM, devices, ... - pub fn get_g_machine(&mut self) -> &mut Machine { - &mut self.g_machine + pub fn get_g_machine(&self) -> &RefCell { + &self.g_machine } // Setters /// Assign a machine to the system - pub fn set_g_machine(&mut self, machine: Machine) { + pub fn set_g_machine(&mut self, machine: RefCell) { self.g_machine = machine } diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index 68bc7c9..326bb9c 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -1,13 +1,12 @@ -use super::{process::Process, system::ObjectType}; +use super::{process::Process, system::ObjectType, thread_manager::SIMULATORSTACKSIZE}; use crate::{simulator::machine::{NUM_INT_REGS, NUM_FP_REGS, STACK_REG}}; -const SIMULATORSTACKSIZE: usize = 32 * 1024; const STACK_FENCEPOST: u32 = 0xdeadbeef; #[derive(PartialEq)] -struct ThreadContext { +pub struct ThreadContext { pub int_registers: [i64; NUM_INT_REGS], - pub float_registers: [i64; NUM_FP_REGS], + pub float_registers: [f32; NUM_FP_REGS], pc: i64, } @@ -16,8 +15,8 @@ pub struct Thread { name: String, pub process: Option, // simulation_context: UContextT, - thread_context: ThreadContext, - stack_pointer: i32, + pub thread_context: ThreadContext, + pub stack_pointer: i32, object_type: ObjectType } @@ -31,7 +30,7 @@ impl Thread { // simulation_context: UContextT::new(), thread_context: ThreadContext { int_registers: [0; NUM_INT_REGS], - float_registers: [0; NUM_FP_REGS], + float_registers: [0f32; NUM_FP_REGS], pc: 0 }, stack_pointer: 0, @@ -59,28 +58,19 @@ impl Thread { // self.simulation_context.stackBottom = base_stack_addr.to_vec(); // self.simulation_context.stackBottom[0] = STACK_FENCEPOST; } - - /// Put the thread to sleep and relinquish the processor - pub fn sleep(&self) { - todo!(); - } - - /// Finish the execution of the thread and prepare its deallocation - pub fn finish(&self) { - todo!(); - } /// Check if a thread has overflowed its stack + /// + /// This assertion doesn't catch all stack overflow conditions and your program may still crash because of an overflow. + /// pub fn check_overflow(&self) { - todo!(); + // if self.simulator_context.stackBottom != STACK_FENCEPOST { + // panic!("thread {} has overflowed", self.get_name()) + // } } - pub fn save_processor_state(&self) { - todo!(); - } - - pub fn restore_processor_state(&self) { - todo!(); + pub fn sleep(&self) { + unreachable!("Has been moved to thread manager"); } pub fn save_simulator_state(&self) { diff --git a/src/kernel/thread_manager.rs b/src/kernel/thread_manager.rs index 466d14e..39a7f81 100644 --- a/src/kernel/thread_manager.rs +++ b/src/kernel/thread_manager.rs @@ -1,10 +1,10 @@ -use std::{rc::Rc, cell::Cell}; +use std::{rc::Rc, cell::{Cell, RefCell, RefMut, Ref}}; -use crate::utility::list::List; +use crate::{utility::list::List, simulator::machine::{NUM_INT_REGS, NUM_FP_REGS}}; use super::{scheduler::Scheduler, thread::Thread, system::System, mgerror::ErrorCode, process::Process}; -const SIMULATORSTACKSIZE: usize = 32 * 1024; +pub const SIMULATORSTACKSIZE: usize = 32 * 1024; #[derive(PartialEq)] pub struct ThreadManager<'a> { @@ -44,17 +44,54 @@ impl<'a> ThreadManager<'a> { /// Wait for another thread to finish its execution pub fn thread_join(&mut self, id_thread: Rc) { while self.get_g_alive().contains(&Rc::clone(&id_thread)) { - self.thread_yield(); + self.thread_yield(Rc::clone(&id_thread)); } } /// Relinquish the CPU if any other thread is runnable. /// /// Cannot use yield as a function name -> reserved name in rust - pub fn thread_yield(&mut self) { + pub fn thread_yield(&mut self, thread: Rc) { todo!(); } + /// Put the thread to sleep and relinquish the processor + pub fn thread_sleep(&mut self, thread: Rc) { + todo!(); + } + + /// Finish the execution of the thread and prepare its deallocation + pub fn thread_finish(&self, thread: Rc) { + todo!(); + } + + pub fn thread_save_processor_state(&mut self, thread: Rc>) { + if let Some(system) = self.system.get() { + let mut t: RefMut<_> = thread.borrow_mut(); + for i in 0..NUM_INT_REGS { + t.thread_context.int_registers[i] = system.get_g_machine().borrow().read_int_register(i); + } + for i in 0..NUM_FP_REGS { + t.thread_context.float_registers[i] = system.get_g_machine().borrow().read_fp_register(i); + } + } else { + unreachable!("System is None") + } + } + + pub fn thread_restore_processor_state(&self, thread: Rc>) { + if let Some(system) = self.system.get() { + let t: Ref<_> = thread.borrow(); + for i in 0..NUM_INT_REGS { + let machine = system.get_g_machine(); + let mut machine = machine.borrow_mut(); + machine.write_int_register(i, t.thread_context.int_registers[i]); + } + } else { + unreachable!("System is None") + } + } + /// Currently running thread pub fn get_g_current_thread(&mut self) -> &mut Option { &mut self.g_current_thread diff --git a/src/kernel/ucontext.rs b/src/kernel/ucontext.rs index 567d144..1ffee6f 100644 --- a/src/kernel/ucontext.rs +++ b/src/kernel/ucontext.rs @@ -1,5 +1,5 @@ -// use std::mem::MaybeUninit; +use std::mem::MaybeUninit; /// Safe wrapper for ucontext_t struct of linux-gnu libc /// @@ -12,10 +12,11 @@ pub struct UContextT { #[cfg(not(target_os = "windows"))] // struct non disponible sur la libc sur windows pub buf: libc::ucontext_t, - pub stackBottom: Vec + pub stack_bottom: Vec } #[cfg(not(target_os = "windows"))] +#[allow(unused)] // Temporary as we currently doesn't use this structure (this structure may disapear in a near future) impl UContextT { pub fn new() -> Self { @@ -23,7 +24,7 @@ impl UContextT { unsafe { libc::getcontext(context.as_mut_ptr()) }; Self { buf: unsafe { context.assume_init() }, - stackBottom: Vec::default(), + stack_bottom: Vec::default(), } } diff --git a/src/simulator/machine.rs b/src/simulator/machine.rs index 73f1872..8ed2eb4 100644 --- a/src/simulator/machine.rs +++ b/src/simulator/machine.rs @@ -2,7 +2,6 @@ use std::{ops::{Add, Sub}, io::Write}; use crate::simulator::print; -use super::{decode::{Instruction, decode}}; use super::{decode::{Instruction, decode}, interrupt::Interrupt}; use super::global::*; use std::fs::File; @@ -74,15 +73,10 @@ pub struct Machine { pub sp: usize, pub int_reg : Register, pub fp_reg : Register, -<<<<<<< HEAD - pub main_memory : Vec, - pub shiftmask : [u64 ; 64], - pub registers_trace : String // for tests -======= pub main_memory : [u8 ; MEM_SIZE], pub shiftmask : [u64 ; 64], - pub interrupt: Interrupt, ->>>>>>> 8c6ef4e (Implemente finish (not finished yet), fix ucontext for windows) + pub registers_trace : String, // for tests + pub interrupt: Interrupt // futur taille à calculer int memSize = g_cfg->NumPhysPages * g_cfg->PageSize; //creer une struct cfg(configuration) qui s'initialise avec valeur dans un fichier cfg } @@ -105,21 +99,14 @@ impl Machine { sp: 0, int_reg : Register::::init(), fp_reg : Register::::init(), -<<<<<<< HEAD - main_memory : vec![0; MEM_SIZE], + main_memory : [0; MEM_SIZE], shiftmask, + interrupt: Interrupt::new(), registers_trace : String::from("") }; ret.int_reg.set_reg(10, -1); - ret -======= - main_memory : [0 ; MEM_SIZE], - shiftmask, - interrupt: Interrupt::new() - } - ->>>>>>> 8c6ef4e (Implemente finish (not finished yet), fix ucontext for windows) + ret } /// Read from main memory of the machine @@ -690,6 +677,21 @@ impl Machine { println!(); } + pub fn read_int_register(&self, index: usize) -> i64 { + self.int_reg.get_reg(index) + } + + pub fn read_fp_register(&self, index: usize) -> f32 { + self.fp_reg.get_reg(index) + } + + pub fn write_int_register(&mut self, index: usize, value: i64) { + self.int_reg.set_reg(index, value); + } + + pub fn write_fp_register(&mut self, index: usize, value: f32) { + self.fp_reg.set_reg(index, value); + } } #[cfg(test)] From eeac26aba65c30977629940842ca41ea6dcb3e91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Thu, 9 Mar 2023 12:44:03 +0100 Subject: [PATCH 100/115] Changed constructor to allow any string slice as parameter + started writing unit tests --- src/kernel/thread.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index 326bb9c..1b8b41d 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -23,9 +23,9 @@ pub struct Thread { impl Thread { /// Thread constructor - pub fn new(name: String) -> Self { + pub fn new(name: &str) -> Self { Self { - name, + name: String::from(name), process: None, // simulation_context: UContextT::new(), thread_context: ThreadContext { @@ -98,4 +98,15 @@ impl Drop for Thread { fn start_thread_execution() { +} + +#[cfg(test)] +mod test { + + use super::Thread; + + fn get_new_thread() -> Thread { + Thread::new("test_thread") + } + } \ No newline at end of file From 71ccd0c16eda35f7bc6d71e7de400fb83bf82030 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Thu, 9 Mar 2023 13:07:50 +0100 Subject: [PATCH 101/115] Added macro to get new thread easily and started writing test --- src/kernel/thread.rs | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index 1b8b41d..b07058b 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -103,10 +103,26 @@ fn start_thread_execution() { #[cfg(test)] mod test { - use super::Thread; + use super::{Thread, ThreadContext}; - fn get_new_thread() -> Thread { - Thread::new("test_thread") + macro_rules! get_new_thread { + () => { Thread::new("test_thread") }; + ($a:literal) => { + Thread::new(&$a.to_string()) + }; + } + + #[test] + fn test_macro() { + let t = get_new_thread!("hello"); + assert_eq!(t.get_name(), "hello"); + let t = get_new_thread!(1); + assert_eq!(t.get_name(), "1"); + } + + #[test] + fn check_init() { + let t = get_new_thread!(); } } \ No newline at end of file From 6e6b97911ae4e5b5d33faa30bee09b846f235a29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Thu, 9 Mar 2023 13:24:04 +0100 Subject: [PATCH 102/115] Added debug attributes to structs pertaining to thread in order to allow for applying assertions upon Thread --- src/kernel/process.rs | 2 +- src/kernel/system.rs | 2 +- src/kernel/thread.rs | 25 ++++++++++++++++++++++--- test_programs/userlib/libnachos.o | Bin 0 -> 15488 bytes test_programs/userlib/sys.o | Bin 0 -> 3624 bytes 5 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 test_programs/userlib/libnachos.o create mode 100644 test_programs/userlib/sys.o diff --git a/src/kernel/process.rs b/src/kernel/process.rs index a56883e..f28b0fa 100644 --- a/src/kernel/process.rs +++ b/src/kernel/process.rs @@ -1,5 +1,5 @@ -#[derive(PartialEq)] +#[derive(PartialEq, Debug)] pub struct Process { pub num_thread: usize, } \ No newline at end of file diff --git a/src/kernel/system.rs b/src/kernel/system.rs index 319be5c..bad8652 100644 --- a/src/kernel/system.rs +++ b/src/kernel/system.rs @@ -52,7 +52,7 @@ impl<'a> System<'a> { } -#[derive(PartialEq)] +#[derive(PartialEq, Debug)] pub enum ObjectType { SemaphoreType, LockType, diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index b07058b..d4aedbc 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -3,14 +3,14 @@ use crate::{simulator::machine::{NUM_INT_REGS, NUM_FP_REGS, STACK_REG}}; const STACK_FENCEPOST: u32 = 0xdeadbeef; -#[derive(PartialEq)] +#[derive(PartialEq, Debug)] pub struct ThreadContext { pub int_registers: [i64; NUM_INT_REGS], pub float_registers: [f32; NUM_FP_REGS], pc: i64, } -#[derive(PartialEq)] +#[derive(PartialEq, Debug)] pub struct Thread { name: String, pub process: Option, @@ -103,7 +103,7 @@ fn start_thread_execution() { #[cfg(test)] mod test { - use super::{Thread, ThreadContext}; + use super::{Thread, ThreadContext, NUM_INT_REGS, NUM_FP_REGS, ObjectType}; macro_rules! get_new_thread { () => { Thread::new("test_thread") }; @@ -112,6 +112,23 @@ mod test { }; } + macro_rules! expected_initial_state { + () => { expected_initial_state!("test_thread") }; + ($a:literal) => { { + let mut x = Thread::new($a); + x.name = $a.to_string(); + x.process = Option::None; + x.thread_context = ThreadContext { + int_registers: [0; NUM_INT_REGS], + float_registers: [0f32; NUM_FP_REGS], + pc: 0 + }; + x.stack_pointer = 0; + x.object_type = ObjectType::ThreadType; + x } + }; + } + #[test] fn test_macro() { let t = get_new_thread!("hello"); @@ -123,6 +140,8 @@ mod test { #[test] fn check_init() { let t = get_new_thread!(); + let expected_state = expected_initial_state!(); + assert_eq!(t, expected_state) } } \ No newline at end of file diff --git a/test_programs/userlib/libnachos.o b/test_programs/userlib/libnachos.o new file mode 100644 index 0000000000000000000000000000000000000000..26f4ccaceb20d8eedc82ca547f5f92ffa2644878 GIT binary patch literal 15488 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 Date: Thu, 9 Mar 2023 13:33:00 +0100 Subject: [PATCH 103/115] Put default thread name in a const --- src/kernel/thread.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index d4aedbc..298df68 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -104,17 +104,18 @@ fn start_thread_execution() { mod test { use super::{Thread, ThreadContext, NUM_INT_REGS, NUM_FP_REGS, ObjectType}; + const DEFAULT_THREAD_NAME: &str = "test_thread"; macro_rules! get_new_thread { - () => { Thread::new("test_thread") }; + () => { Thread::new(DEFAULT_THREAD_NAME) }; ($a:literal) => { Thread::new(&$a.to_string()) }; } macro_rules! expected_initial_state { - () => { expected_initial_state!("test_thread") }; - ($a:literal) => { { + () => { expected_initial_state!(DEFAULT_THREAD_NAME) }; + ($a:expr) => { { let mut x = Thread::new($a); x.name = $a.to_string(); x.process = Option::None; From a1713e037352d20a876a247eccb363b7a9445deb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Thu, 9 Mar 2023 14:03:35 +0100 Subject: [PATCH 104/115] added comments to macros --- src/kernel/thread.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index 298df68..31029f8 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -106,6 +106,7 @@ mod test { use super::{Thread, ThreadContext, NUM_INT_REGS, NUM_FP_REGS, ObjectType}; const DEFAULT_THREAD_NAME: &str = "test_thread"; + /// Polymorphic macro to get thread without passing a name by default macro_rules! get_new_thread { () => { Thread::new(DEFAULT_THREAD_NAME) }; ($a:literal) => { @@ -113,6 +114,9 @@ mod test { }; } + /// This macro allows for getting a Thread for which we've ensured proper initial state + /// in case a commit further down the line changes the initial state of threads generated + /// from Thread::new macro_rules! expected_initial_state { () => { expected_initial_state!(DEFAULT_THREAD_NAME) }; ($a:expr) => { { From 45fea708fc9b8c8739062ffa3db24cbc4c15b4d6 Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Thu, 9 Mar 2023 14:00:42 +0100 Subject: [PATCH 105/115] Changed all reference to thread with an RefCell to enforce mutability --- src/kernel/mgerror.rs | 40 +++++++++++++++++------------------ src/kernel/scheduler.rs | 7 +++--- src/kernel/synch.rs | 41 ++++++++++++++++++++---------------- src/kernel/thread.rs | 4 ---- src/kernel/thread_manager.rs | 28 ++++++++++++------------ src/kernel/ucontext.rs | 2 +- 6 files changed, 62 insertions(+), 60 deletions(-) diff --git a/src/kernel/mgerror.rs b/src/kernel/mgerror.rs index 453a9bd..54e0e58 100644 --- a/src/kernel/mgerror.rs +++ b/src/kernel/mgerror.rs @@ -1,31 +1,31 @@ /// Error enum, use it with Result pub enum ErrorCode { - INC_ERROR, - OPENFILE_ERROR, - EXEC_FILE_FORMAT_ERROR, - OUT_OF_MEMORY, + IncError, + OpenfileError, + ExecFileFormatError, + OutOfMemory, - OUT_OF_DISK, - ALREADY_IN_DIRECTORY, - INEXIST_FILE_ERROR, - INEXIST_DIRECTORY_ERROR, - NOSPACE_IN_DIRECTORY, - NOT_A_FILE, - NOT_A_DIRECTORY, - DIRECTORY_NOT_EMPTY, - INVALID_COUNTER, + OutOfDisk, + AlreadyInDirectory, + InexistFileError, + InexistDirectoryError, + NospaceInDirectory, + NotAFile, + NotADirectory, + DirectoryNotEmpty, + InvalidCounter, /* Invalid typeId fields: */ - INVALID_SEMAPHORE_ID, - INVALID_LOCK_ID, - INVALID_CONDITION_ID, - INVALID_FILE_ID, - INVALID_THREAD_ID, + InvalidSemaphoreId, + InvalidLockId, + InvalidConditionId, + InvalidFileId, + InvalidThreadId, /* Other messages */ - WRONG_FILE_ENDIANESS, - NO_ACIA, + WrongFileEndianess, + NoAcia, NUMMSGERROR /* Must always be last */ } \ No newline at end of file diff --git a/src/kernel/scheduler.rs b/src/kernel/scheduler.rs index 0398799..c0c6cb3 100644 --- a/src/kernel/scheduler.rs +++ b/src/kernel/scheduler.rs @@ -1,3 +1,4 @@ +use std::cell::RefCell; use std::rc::Rc; use crate::utility::list::List; @@ -7,7 +8,7 @@ use super::system::System; #[derive(PartialEq)] pub struct Scheduler { - ready_list: List> + ready_list: List>> } impl Scheduler { @@ -28,7 +29,7 @@ impl Scheduler { /// ## Pamameter /// /// **thread** is the thread to be put on the read list - pub fn ready_to_run(&mut self, thread: Rc) { + pub fn ready_to_run(&mut self, thread: Rc>) { self.ready_list.push(thread); } @@ -38,7 +39,7 @@ impl Scheduler { /// Thread is removed from the ready list. /// /// **return** Thread thread to be scheduled - pub fn find_next_to_run(&mut self) -> Option> { + pub fn find_next_to_run(&mut self) -> Option>> { self.ready_list.pop() } diff --git a/src/kernel/synch.rs b/src/kernel/synch.rs index 98a1f76..77fc56c 100644 --- a/src/kernel/synch.rs +++ b/src/kernel/synch.rs @@ -2,26 +2,29 @@ use crate::utility::list::List; use crate::kernel::thread::Thread; use crate::simulator::interrupt::InterruptStatus::InterruptOff; use crate::simulator::machine::Machine; +use std::cell::RefCell; use std::rc::Rc; use super::scheduler::Scheduler; +use super::thread_manager::ThreadManager; -pub struct Semaphore{ +pub struct Semaphore<'t> { counter:i32, - waiting_queue:List> + waiting_queue:List>>, + thread_manager: Rc>> // On s'assure que le tm vit plus longtemps que les semaphore avec le lifetime } -impl Semaphore{ +impl<'t> Semaphore<'_> { - pub fn p(&mut self, current_thread: Rc, machine: &mut Machine){ + pub fn p(&mut self, current_thread: Rc>, machine: &mut Machine){ let old_status = machine.interrupt.set_status(InterruptOff); self.counter -= 1; if self.counter < 0 { self.waiting_queue.push(Rc::clone(¤t_thread)); - current_thread.sleep(); + self.thread_manager.borrow_mut().thread_sleep(current_thread); } machine.interrupt.set_status(old_status); } @@ -36,16 +39,17 @@ impl Semaphore{ } } -pub struct Lock{ +pub struct Lock<'t>{ - owner: Rc, - waiting_queue:List>, + owner: Rc>, + waiting_queue:List>>, + thread_manager: Rc>>, free: bool } -impl Lock { - pub fn acquire(&mut self, machine: &mut Machine, current_thread: Rc) { +impl<'t> Lock<'_> { + pub fn acquire(&mut self, machine: &mut Machine, current_thread: Rc>) { let old_status = machine.interrupt.set_status(InterruptOff); if self.free { @@ -53,13 +57,13 @@ impl Lock { self.owner = current_thread; } else { self.waiting_queue.push(Rc::clone(¤t_thread)); - current_thread.sleep(); + self.thread_manager.borrow_mut().thread_sleep(current_thread); } machine.interrupt.set_status(old_status); } - pub fn release(&mut self, machine: &mut Machine, scheduler: &mut Scheduler, current_thread: Rc) { + pub fn release(&mut self, machine: &mut Machine, scheduler: &mut Scheduler, current_thread: Rc>) { let old_status = machine.interrupt.set_status(InterruptOff); if self.is_held_by_current_thread(current_thread) { @@ -74,24 +78,25 @@ impl Lock { machine.interrupt.set_status(old_status); } - pub fn is_held_by_current_thread(&mut self, current_thread: Rc) -> bool { + pub fn is_held_by_current_thread(&mut self, current_thread: Rc>) -> bool { Rc::ptr_eq(&self.owner, ¤t_thread) } } -pub struct Condition{ +pub struct Condition<'t>{ - waiting_queue:List> + waiting_queue:List>>, + thread_manager: Rc>>, } -impl Condition { +impl<'t> Condition<'_> { - pub fn wait(&mut self, machine: &mut Machine, current_thread: Rc) { + pub fn wait(&mut self, machine: &mut Machine, current_thread: Rc>) { let old_status = machine.interrupt.set_status(InterruptOff); self.waiting_queue.push(Rc::clone(¤t_thread)); - current_thread.sleep(); + self.thread_manager.borrow_mut().thread_sleep(current_thread); machine.interrupt.set_status(old_status); } diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index 31029f8..37e705e 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -69,10 +69,6 @@ impl Thread { // } } - pub fn sleep(&self) { - unreachable!("Has been moved to thread manager"); - } - pub fn save_simulator_state(&self) { todo!(); } diff --git a/src/kernel/thread_manager.rs b/src/kernel/thread_manager.rs index 39a7f81..2d32e55 100644 --- a/src/kernel/thread_manager.rs +++ b/src/kernel/thread_manager.rs @@ -10,7 +10,7 @@ pub const SIMULATORSTACKSIZE: usize = 32 * 1024; pub struct ThreadManager<'a> { pub g_current_thread: Option, pub g_thread_to_be_destroyed: Option, - pub g_alive: List>, + pub g_alive: List>>, pub g_scheduler: Scheduler, pub system: Cell>> } @@ -28,21 +28,21 @@ impl<'a> ThreadManager<'a> { } /// Start a thread, attaching it to a process - pub fn start_thread(&mut self, mut thread: Thread, owner: Process, func_pc: i64, argument: i64) -> Result<(), ErrorCode> { - thread.process = Option::Some(owner); + pub fn start_thread(&mut self, thread: Rc>, owner: Process, func_pc: i64, argument: i64) -> Result<(), ErrorCode> { + let mut thread_m = thread.borrow_mut(); + thread_m.process = Option::Some(owner); let ptr = 0; // todo addrspace - thread.init_thread_context(func_pc, ptr, argument); + thread_m.init_thread_context(func_pc, ptr, argument); let base_stack_addr: [i8; SIMULATORSTACKSIZE] = [0; SIMULATORSTACKSIZE]; // todo AllocBoundedArray - thread.init_simulator_context(base_stack_addr); - thread.process.as_mut().unwrap().num_thread += 1; - let thread_m = Rc::new(thread); - self.get_g_alive().push(Rc::clone(&thread_m)); - self.g_scheduler().ready_to_run(Rc::clone(&thread_m)); + thread_m.init_simulator_context(base_stack_addr); + thread_m.process.as_mut().unwrap().num_thread += 1; + self.get_g_alive().push(Rc::clone(&thread)); + self.g_scheduler().ready_to_run(Rc::clone(&thread)); Result::Ok(()) } /// Wait for another thread to finish its execution - pub fn thread_join(&mut self, id_thread: Rc) { + pub fn thread_join(&mut self, id_thread: Rc>) { while self.get_g_alive().contains(&Rc::clone(&id_thread)) { self.thread_yield(Rc::clone(&id_thread)); } @@ -51,17 +51,17 @@ impl<'a> ThreadManager<'a> { /// Relinquish the CPU if any other thread is runnable. /// /// Cannot use yield as a function name -> reserved name in rust - pub fn thread_yield(&mut self, thread: Rc) { + pub fn thread_yield(&mut self, thread: Rc>) { todo!(); } /// Put the thread to sleep and relinquish the processor - pub fn thread_sleep(&mut self, thread: Rc) { + pub fn thread_sleep(&mut self, thread: Rc>) { todo!(); } /// Finish the execution of the thread and prepare its deallocation - pub fn thread_finish(&self, thread: Rc) { + pub fn thread_finish(&self, thread: Rc>) { todo!(); } @@ -105,7 +105,7 @@ impl<'a> ThreadManager<'a> { } /// List of alive threads - pub fn get_g_alive(&mut self) -> &mut List> { + pub fn get_g_alive(&mut self) -> &mut List>> { &mut self.g_alive } diff --git a/src/kernel/ucontext.rs b/src/kernel/ucontext.rs index 1ffee6f..c50c223 100644 --- a/src/kernel/ucontext.rs +++ b/src/kernel/ucontext.rs @@ -59,7 +59,7 @@ impl UContextT { pub fn new() -> Self { Self { - stackBottom: Vec::default() + stack_bottom: Vec::default() } } From e1283c9c42d150b53414f09e7b2a6af40b645492 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Fri, 10 Mar 2023 19:17:41 +0100 Subject: [PATCH 106/115] Fixed missing crate import --- src/simulator/machine.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/simulator/machine.rs b/src/simulator/machine.rs index 9db143e..8ed2eb4 100644 --- a/src/simulator/machine.rs +++ b/src/simulator/machine.rs @@ -1,5 +1,7 @@ use std::{ops::{Add, Sub}, io::Write}; +use crate::simulator::print; + use super::{decode::{Instruction, decode}, interrupt::Interrupt}; use super::global::*; use std::fs::File; From 1f54ed35db285d5a8393994e0103347567b8c273 Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Sat, 11 Mar 2023 14:48:56 +0100 Subject: [PATCH 107/115] Implement thread#t_yield() --- src/kernel/scheduler.rs | 2 +- src/kernel/thread.rs | 4 ++-- src/kernel/thread_manager.rs | 18 ++++++++++++------ src/kernel/ucontext.rs | 5 +++-- src/main.rs | 1 - 5 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/kernel/scheduler.rs b/src/kernel/scheduler.rs index c0c6cb3..f98e7d6 100644 --- a/src/kernel/scheduler.rs +++ b/src/kernel/scheduler.rs @@ -53,7 +53,7 @@ impl Scheduler { /// ## Parameter /// /// **next_thread** thread to dispatch to the CPU - pub fn switch_to(&self, system: Rc, next_thread: Thread) { + pub fn switch_to(&self, system: &System, next_thread: Rc>) { /* if let Some(old_thread) = system.get_g_current_thread() { old_thread.save_processor_state(); old_thread.save_simulator_state(); diff --git a/src/kernel/thread.rs b/src/kernel/thread.rs index 37e705e..6cc9332 100644 --- a/src/kernel/thread.rs +++ b/src/kernel/thread.rs @@ -70,11 +70,11 @@ impl Thread { } pub fn save_simulator_state(&self) { - todo!(); + // todo!(); // simulator state will maybe be removed so panic call is remove. See ucontext.rs } pub fn restore_simulator_state(&self) { - todo!(); + // todo!(); // simulator state will maybe be removed so panic call is remove. See ucontext.rs } pub fn get_name(&self) -> String { diff --git a/src/kernel/thread_manager.rs b/src/kernel/thread_manager.rs index 2d32e55..ac65bf1 100644 --- a/src/kernel/thread_manager.rs +++ b/src/kernel/thread_manager.rs @@ -52,7 +52,18 @@ impl<'a> ThreadManager<'a> { /// /// Cannot use yield as a function name -> reserved name in rust pub fn thread_yield(&mut self, thread: Rc>) { - todo!(); + if let Some(system) = self.system.get() { + let mut machine = system.get_g_machine().borrow_mut(); + let old_status = machine.interrupt.set_status(crate::simulator::interrupt::InterruptStatus::InterruptOff); + + let next_thread = self.g_scheduler().find_next_to_run(); + if let Some(next_thread) = next_thread { + let scheduler = self.g_scheduler(); + scheduler.ready_to_run(thread); + scheduler.switch_to(system, next_thread); + } + machine.interrupt.set_status(old_status); + } } /// Put the thread to sleep and relinquish the processor @@ -124,9 +135,4 @@ impl<'a> ThreadManager<'a> { self.g_thread_to_be_destroyed = thread } - /// Set Scheduler which will manage the threads - pub fn set_g_scheduler(&mut self, scheduler: Scheduler) { - self.g_scheduler = scheduler - } - } \ No newline at end of file diff --git a/src/kernel/ucontext.rs b/src/kernel/ucontext.rs index c50c223..0c0aba6 100644 --- a/src/kernel/ucontext.rs +++ b/src/kernel/ucontext.rs @@ -1,4 +1,4 @@ - +#[cfg(not(target_os = "windows"))] use std::mem::MaybeUninit; /// Safe wrapper for ucontext_t struct of linux-gnu libc @@ -54,7 +54,8 @@ impl UContextT { } -#[cfg(target_os = "windows")] +#[cfg(target_os = "windows")] +#[allow(unused)] impl UContextT { pub fn new() -> Self { diff --git a/src/main.rs b/src/main.rs index a19b258..1bde63e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,7 +4,6 @@ pub mod utility; use kernel::system::System; use simulator::machine::Machine; -use simulator::mem_cmp; fn main() { let machine = Machine::_init_machine(); From 177abfe846197678959d158f098510239fd63d2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Sat, 11 Mar 2023 23:49:20 +0100 Subject: [PATCH 108/115] Renamed Machine::init_machine and fixed stack overflow by allocating main_memory to the heap --- src/main.rs | 2 +- src/simulator/loader.rs | 2 +- src/simulator/machine.rs | 67 +++++++++++++++++++++------------------- src/simulator/mem_cmp.rs | 17 +++++----- 4 files changed, 45 insertions(+), 43 deletions(-) diff --git a/src/main.rs b/src/main.rs index 1bde63e..78b9e54 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,6 +6,6 @@ use kernel::system::System; use simulator::machine::Machine; fn main() { - let machine = Machine::_init_machine(); + let machine = Machine::init_machine(); let _system = System::new(machine); } diff --git a/src/simulator/loader.rs b/src/simulator/loader.rs index b7b4b36..4b84b83 100644 --- a/src/simulator/loader.rs +++ b/src/simulator/loader.rs @@ -18,7 +18,7 @@ use std::io::BufRead; pub fn _load(path : &str, instruction_size: i32) -> Machine { let file = fs::File::open(path).expect("Wrong filename"); let reader = io::BufReader::new(file); - let mut machine = Machine::_init_machine(); + let mut machine = Machine::init_machine(); for (i,line) in reader.lines().enumerate() { let res = u64::from_str_radix(&line.unwrap(), 16); diff --git a/src/simulator/machine.rs b/src/simulator/machine.rs index 8ed2eb4..357b837 100644 --- a/src/simulator/machine.rs +++ b/src/simulator/machine.rs @@ -73,7 +73,7 @@ pub struct Machine { pub sp: usize, pub int_reg : Register, pub fp_reg : Register, - pub main_memory : [u8 ; MEM_SIZE], + pub main_memory : Vec, pub shiftmask : [u64 ; 64], pub registers_trace : String, // for tests pub interrupt: Interrupt @@ -84,7 +84,7 @@ pub struct Machine { impl Machine { - pub fn _init_machine() -> Machine { + pub fn init_machine() -> Machine { let mut shiftmask : [u64 ; 64] = [0 ; 64]; let mut value : u64 = 0xffffffff; @@ -99,7 +99,7 @@ impl Machine { sp: 0, int_reg : Register::::init(), fp_reg : Register::::init(), - main_memory : [0; MEM_SIZE], + main_memory : vec![0_u8; MEM_SIZE], shiftmask, interrupt: Interrupt::new(), registers_trace : String::from("") @@ -700,9 +700,14 @@ mod test { use crate::simulator::{machine::Machine, mem_cmp}; + #[test] + fn test_init_machine() { + let _ = Machine::init_machine(); + } + #[test] fn test_read_memory() { - let mut m = Machine::_init_machine(); + let mut m = Machine::init_machine(); m.main_memory[4] = 43; m.main_memory[5] = 150; assert_eq!((43 << 8) + 150, Machine::read_memory(&mut m, 2, 4)); @@ -710,7 +715,7 @@ mod test { #[test] fn test_write_memory() { - let mut m = Machine::_init_machine(); + let mut m = Machine::init_machine(); Machine::write_memory(&mut m, 2, 6, (43 << 8) + 150); assert_eq!(43, m.main_memory[6]); assert_eq!(150, m.main_memory[7]); @@ -723,11 +728,11 @@ mod test { #[test] fn test_comp() { - let mut m = Machine::_init_machine(); + let mut m = Machine::init_machine(); let path_before = "memoryComp.txt".to_string(); let path_after = "memoryCompEnd.txt".to_string(); - let memory_before = mem_cmp::MemChecker::from(&path_before); - let memory_after = mem_cmp::MemChecker::from(&path_after); + let memory_before = mem_cmp::MemChecker::from(&path_before).unwrap(); + let memory_after = mem_cmp::MemChecker::from(&path_after).unwrap(); mem_cmp::MemChecker::fill_memory_from_mem_checker(&memory_before, &mut m); Machine::run(&mut m); @@ -740,11 +745,11 @@ mod test { #[test] fn test_div() { - let mut m = Machine::_init_machine(); - let path_before = "memoryDiv.txt".to_string(); - let path_after = "memoryDivEnd.txt".to_string(); - let memory_before = mem_cmp::MemChecker::from(&path_before); - let memory_after = mem_cmp::MemChecker::from(&path_after); + let mut m = Machine::init_machine(); + let path_before = "memoryDiv.txt"; + let path_after = "memoryDivEnd.txt"; + let memory_before = mem_cmp::MemChecker::from(path_before).unwrap(); + let memory_after = mem_cmp::MemChecker::from(path_after).unwrap(); mem_cmp::MemChecker::fill_memory_from_mem_checker(&memory_before, &mut m); Machine::run(&mut m); @@ -757,11 +762,11 @@ mod test { #[test] fn test_if() { - let mut m = Machine::_init_machine(); + let mut m = Machine::init_machine(); let path_before = "memoryIf.txt".to_string(); let path_after = "memoryIfEnd.txt".to_string(); - let memory_before = mem_cmp::MemChecker::from(&path_before); - let memory_after = mem_cmp::MemChecker::from(&path_after); + let memory_before = mem_cmp::MemChecker::from(&path_before).unwrap(); + let memory_after = mem_cmp::MemChecker::from(&path_after).unwrap(); mem_cmp::MemChecker::fill_memory_from_mem_checker(&memory_before, &mut m); Machine::run(&mut m); @@ -774,11 +779,11 @@ mod test { #[test] fn test_jump() { - let mut m = Machine::_init_machine(); + let mut m = Machine::init_machine(); let path_before = "memoryJump.txt".to_string(); let path_after = "memoryJumpEnd.txt".to_string(); - let memory_before = mem_cmp::MemChecker::from(&path_before); - let memory_after = mem_cmp::MemChecker::from(&path_after); + let memory_before = mem_cmp::MemChecker::from(&path_before).unwrap(); + let memory_after = mem_cmp::MemChecker::from(&path_after).unwrap(); mem_cmp::MemChecker::fill_memory_from_mem_checker(&memory_before, &mut m); Machine::run(&mut m); @@ -791,11 +796,11 @@ mod test { #[test] fn test_mul() { - let mut m = Machine::_init_machine(); + let mut m = Machine::init_machine(); let path_before = "memoryMul.txt".to_string(); let path_after = "memoryMulEnd.txt".to_string(); - let memory_before = mem_cmp::MemChecker::from(&path_before); - let memory_after = mem_cmp::MemChecker::from(&path_after); + let memory_before = mem_cmp::MemChecker::from(&path_before).unwrap(); + let memory_after = mem_cmp::MemChecker::from(&path_after).unwrap(); mem_cmp::MemChecker::fill_memory_from_mem_checker(&memory_before, &mut m); Machine::run(&mut m); @@ -808,11 +813,11 @@ mod test { #[test] fn test_ret() { - let mut m = Machine::_init_machine(); + let mut m = Machine::init_machine(); let path_before = "memoryRet.txt".to_string(); let path_after = "memoryRetEnd.txt".to_string(); - let memory_before = mem_cmp::MemChecker::from(&path_before); - let memory_after = mem_cmp::MemChecker::from(&path_after); + let memory_before = mem_cmp::MemChecker::from(&path_before).unwrap(); + let memory_after = mem_cmp::MemChecker::from(&path_after).unwrap(); mem_cmp::MemChecker::fill_memory_from_mem_checker(&memory_before, &mut m); Machine::run(&mut m); @@ -825,11 +830,11 @@ mod test { #[test] fn test_sub() { - let mut m = Machine::_init_machine(); + let mut m = Machine::init_machine(); let path_before = "memorySub.txt".to_string(); let path_after = "memorySubEnd.txt".to_string(); - let memory_before = mem_cmp::MemChecker::from(&path_before); - let memory_after = mem_cmp::MemChecker::from(&path_after); + let memory_before = mem_cmp::MemChecker::from(&path_before).unwrap(); + let memory_after = mem_cmp::MemChecker::from(&path_after).unwrap(); mem_cmp::MemChecker::fill_memory_from_mem_checker(&memory_before, &mut m); Machine::run(&mut m); @@ -842,11 +847,11 @@ mod test { #[test] fn test_switch() { - let mut m = Machine::_init_machine(); + let mut m = Machine::init_machine(); let path_before = "memorySwitch.txt".to_string(); let path_after = "memorySwitchEnd.txt".to_string(); - let memory_before = mem_cmp::MemChecker::from(&path_before); - let memory_after = mem_cmp::MemChecker::from(&path_after); + let memory_before = mem_cmp::MemChecker::from(&path_before).unwrap(); + let memory_after = mem_cmp::MemChecker::from(&path_after).unwrap(); mem_cmp::MemChecker::fill_memory_from_mem_checker(&memory_before, &mut m); Machine::run(&mut m); diff --git a/src/simulator/mem_cmp.rs b/src/simulator/mem_cmp.rs index 780437e..6822d8d 100644 --- a/src/simulator/mem_cmp.rs +++ b/src/simulator/mem_cmp.rs @@ -1,7 +1,4 @@ -use std::fs; -use std::io::BufRead; -use std::io::BufReader; -use std::io::Lines; +use std::{fs, io::{BufRead, BufReader, Lines, Error}}; use crate::Machine; const MEM_SIZE : usize = 4096; @@ -117,9 +114,9 @@ impl MemChecker{ /// /// ### Return /// Mem-checker filled - pub fn from(path: &String) -> MemChecker { + pub fn from(path: &str) -> Result { - let file = fs::File::open(path).expect("Wrong filename"); + let file = fs::File::open(path)?; let reader = BufReader::new(file); let mut lines = reader.lines(); @@ -155,7 +152,7 @@ impl MemChecker{ } - MemChecker{pc, sp, sections} + Ok(MemChecker{pc, sp, sections}) } @@ -311,8 +308,8 @@ mod tests { #[test] fn test_fill_memory(){ let path = "osef".to_string(); - let m_c = MemChecker::from(&path); - let mut machine = Machine::_init_machine(); + let m_c = MemChecker::from(&path).unwrap(); + let mut machine = Machine::init_machine(); MemChecker::fill_memory_from_mem_checker(&m_c, &mut machine); @@ -334,7 +331,7 @@ mod tests { #[test] fn test_create_mem_checker(){ let path: String = "osef".to_string(); - let m_c = MemChecker::from(&path); + let m_c = MemChecker::from(&path).unwrap(); MemChecker::print_mem_checker(&m_c); } From c75e2995e7cc2b8e55a912dfbc9110d91cc1d762 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Sun, 12 Mar 2023 00:22:16 +0100 Subject: [PATCH 109/115] Reworked unit tests for machine and renamed test_programs directory --- src/simulator/machine.rs | 72 ++++++------------ {test_programs => test}/.gitignore | 0 {test_programs => test}/Makefile | 0 {test_programs => test}/Makefile.config | 0 {test_programs => test}/Makefile.tests | 0 {test_programs => test}/README.md | 0 .../riscv_instructions/Makefile | 0 .../riscv_instructions/boolean_logic/Makefile | 0 .../boolean_logic/comparisons.c | 0 .../riscv_instructions/boolean_logic/if.c | 0 .../boolean_logic/new_comparisons.c | 0 .../riscv_instructions/boolean_logic/switch.c | 0 .../jump_instructions/Makefile | 0 .../jump_instructions/jump.c | 0 .../jump_instructions/ret.c | 0 .../simple_arithmetics/Makefile | 0 .../simple_arithmetics/README.md | 0 .../simple_arithmetics/unsigned_addition.c | 0 .../simple_arithmetics/unsigned_division.c | 0 .../unsigned_multiplication.c | 0 .../unsigned_substraction.c | 0 {test_programs => test}/userlib/Makefile | 0 {test_programs => test}/userlib/ldscript.lds | 0 {test_programs => test}/userlib/libnachos.c | 0 {test_programs => test}/userlib/libnachos.h | 0 {test_programs => test}/userlib/sys.s | 0 {test_programs => test}/userlib/syscall.h | 0 test_programs/userlib/libnachos.o | Bin 15488 -> 0 bytes test_programs/userlib/sys.o | Bin 3624 -> 0 bytes 29 files changed, 24 insertions(+), 48 deletions(-) rename {test_programs => test}/.gitignore (100%) rename {test_programs => test}/Makefile (100%) rename {test_programs => test}/Makefile.config (100%) rename {test_programs => test}/Makefile.tests (100%) rename {test_programs => test}/README.md (100%) rename {test_programs => test}/riscv_instructions/Makefile (100%) rename {test_programs => test}/riscv_instructions/boolean_logic/Makefile (100%) rename {test_programs => test}/riscv_instructions/boolean_logic/comparisons.c (100%) rename {test_programs => test}/riscv_instructions/boolean_logic/if.c (100%) rename {test_programs => test}/riscv_instructions/boolean_logic/new_comparisons.c (100%) rename {test_programs => test}/riscv_instructions/boolean_logic/switch.c (100%) rename {test_programs => test}/riscv_instructions/jump_instructions/Makefile (100%) rename {test_programs => test}/riscv_instructions/jump_instructions/jump.c (100%) rename {test_programs => test}/riscv_instructions/jump_instructions/ret.c (100%) rename {test_programs => test}/riscv_instructions/simple_arithmetics/Makefile (100%) rename {test_programs => test}/riscv_instructions/simple_arithmetics/README.md (100%) rename {test_programs => test}/riscv_instructions/simple_arithmetics/unsigned_addition.c (100%) rename {test_programs => test}/riscv_instructions/simple_arithmetics/unsigned_division.c (100%) rename {test_programs => test}/riscv_instructions/simple_arithmetics/unsigned_multiplication.c (100%) rename {test_programs => test}/riscv_instructions/simple_arithmetics/unsigned_substraction.c (100%) rename {test_programs => test}/userlib/Makefile (100%) rename {test_programs => test}/userlib/ldscript.lds (100%) rename {test_programs => test}/userlib/libnachos.c (100%) rename {test_programs => test}/userlib/libnachos.h (100%) rename {test_programs => test}/userlib/sys.s (100%) rename {test_programs => test}/userlib/syscall.h (100%) delete mode 100644 test_programs/userlib/libnachos.o delete mode 100644 test_programs/userlib/sys.o diff --git a/src/simulator/machine.rs b/src/simulator/machine.rs index 357b837..710b11a 100644 --- a/src/simulator/machine.rs +++ b/src/simulator/machine.rs @@ -729,15 +729,12 @@ mod test { #[test] fn test_comp() { let mut m = Machine::init_machine(); - let path_before = "memoryComp.txt".to_string(); - let path_after = "memoryCompEnd.txt".to_string(); - let memory_before = mem_cmp::MemChecker::from(&path_before).unwrap(); - let memory_after = mem_cmp::MemChecker::from(&path_after).unwrap(); + let memory_before = mem_cmp::MemChecker::from("test/machine/memoryComp.txt").unwrap(); + let memory_after = mem_cmp::MemChecker::from("test/machine/memoryCompEnd.txt").unwrap(); mem_cmp::MemChecker::fill_memory_from_mem_checker(&memory_before, &mut m); Machine::run(&mut m); - let path_trace = "memoryCompTrace.txt".to_string(); - let expected_trace = fs::read_to_string(path_trace).unwrap(); + let expected_trace = fs::read_to_string("test/machine/memoryCompTrace.txt").unwrap(); assert!(mem_cmp::MemChecker::compare_machine_memory(&memory_after, &m)); assert!(expected_trace.contains(m.registers_trace.as_str())); @@ -746,15 +743,12 @@ mod test { #[test] fn test_div() { let mut m = Machine::init_machine(); - let path_before = "memoryDiv.txt"; - let path_after = "memoryDivEnd.txt"; - let memory_before = mem_cmp::MemChecker::from(path_before).unwrap(); - let memory_after = mem_cmp::MemChecker::from(path_after).unwrap(); + let memory_before = mem_cmp::MemChecker::from("test/machine/memoryDiv.txt").unwrap(); + let memory_after = mem_cmp::MemChecker::from("test/machine/memoryDivEnd.txt").unwrap(); mem_cmp::MemChecker::fill_memory_from_mem_checker(&memory_before, &mut m); Machine::run(&mut m); - let path_trace = "memoryDivTrace.txt".to_string(); - let expected_trace = fs::read_to_string(path_trace).unwrap(); + let expected_trace = fs::read_to_string("test/machine/memoryDivTrace.txt").unwrap(); assert!(mem_cmp::MemChecker::compare_machine_memory(&memory_after, &m)); assert!(expected_trace.contains(m.registers_trace.as_str())); @@ -763,15 +757,12 @@ mod test { #[test] fn test_if() { let mut m = Machine::init_machine(); - let path_before = "memoryIf.txt".to_string(); - let path_after = "memoryIfEnd.txt".to_string(); - let memory_before = mem_cmp::MemChecker::from(&path_before).unwrap(); - let memory_after = mem_cmp::MemChecker::from(&path_after).unwrap(); + let memory_before = mem_cmp::MemChecker::from("test/machine/memoryIf.txt").unwrap(); + let memory_after = mem_cmp::MemChecker::from("test/machine/memoryIfEnd.txt").unwrap(); mem_cmp::MemChecker::fill_memory_from_mem_checker(&memory_before, &mut m); Machine::run(&mut m); - let path_trace = "memoryIfTrace.txt".to_string(); - let expected_trace = fs::read_to_string(path_trace).unwrap(); + let expected_trace = fs::read_to_string("test/machine/memoryIfTrace.txt").unwrap(); assert!(mem_cmp::MemChecker::compare_machine_memory(&memory_after, &m)); assert!(expected_trace.contains(m.registers_trace.as_str())); @@ -780,15 +771,12 @@ mod test { #[test] fn test_jump() { let mut m = Machine::init_machine(); - let path_before = "memoryJump.txt".to_string(); - let path_after = "memoryJumpEnd.txt".to_string(); - let memory_before = mem_cmp::MemChecker::from(&path_before).unwrap(); - let memory_after = mem_cmp::MemChecker::from(&path_after).unwrap(); + let memory_before = mem_cmp::MemChecker::from("test/machine/memoryJump.txt").unwrap(); + let memory_after = mem_cmp::MemChecker::from("test/machine/memoryJumpEnd.txt").unwrap(); mem_cmp::MemChecker::fill_memory_from_mem_checker(&memory_before, &mut m); Machine::run(&mut m); - let path_trace = "memoryJumpTrace.txt".to_string(); - let expected_trace = fs::read_to_string(path_trace).unwrap(); + let expected_trace = fs::read_to_string("test/machine/memoryJumpTrace.txt").unwrap(); assert!(mem_cmp::MemChecker::compare_machine_memory(&memory_after, &m)); assert!(expected_trace.contains(m.registers_trace.as_str())); @@ -797,15 +785,12 @@ mod test { #[test] fn test_mul() { let mut m = Machine::init_machine(); - let path_before = "memoryMul.txt".to_string(); - let path_after = "memoryMulEnd.txt".to_string(); - let memory_before = mem_cmp::MemChecker::from(&path_before).unwrap(); - let memory_after = mem_cmp::MemChecker::from(&path_after).unwrap(); + let memory_before = mem_cmp::MemChecker::from("test/machine/memoryMul.txt").unwrap(); + let memory_after = mem_cmp::MemChecker::from("test/machine/memoryMulEnd.txt").unwrap(); mem_cmp::MemChecker::fill_memory_from_mem_checker(&memory_before, &mut m); Machine::run(&mut m); - let path_trace = "memoryMulTrace.txt".to_string(); - let expected_trace = fs::read_to_string(path_trace).unwrap(); + let expected_trace = fs::read_to_string("test/machine/memoryMulTrace.txt").unwrap(); assert!(mem_cmp::MemChecker::compare_machine_memory(&memory_after, &m)); assert!(expected_trace.contains(m.registers_trace.as_str())); @@ -814,15 +799,12 @@ mod test { #[test] fn test_ret() { let mut m = Machine::init_machine(); - let path_before = "memoryRet.txt".to_string(); - let path_after = "memoryRetEnd.txt".to_string(); - let memory_before = mem_cmp::MemChecker::from(&path_before).unwrap(); - let memory_after = mem_cmp::MemChecker::from(&path_after).unwrap(); + let memory_before = mem_cmp::MemChecker::from("test/machine/memoryRet.txt").unwrap(); + let memory_after = mem_cmp::MemChecker::from("test/machine/memoryRetEnd.txt").unwrap(); mem_cmp::MemChecker::fill_memory_from_mem_checker(&memory_before, &mut m); Machine::run(&mut m); - let path_trace = "memoryRetTrace.txt".to_string(); - let expected_trace = fs::read_to_string(path_trace).unwrap(); + let expected_trace = fs::read_to_string("test/machine/memoryRetTrace.txt").unwrap(); assert!(mem_cmp::MemChecker::compare_machine_memory(&memory_after, &m)); assert!(expected_trace.contains(m.registers_trace.as_str())); @@ -831,15 +813,12 @@ mod test { #[test] fn test_sub() { let mut m = Machine::init_machine(); - let path_before = "memorySub.txt".to_string(); - let path_after = "memorySubEnd.txt".to_string(); - let memory_before = mem_cmp::MemChecker::from(&path_before).unwrap(); - let memory_after = mem_cmp::MemChecker::from(&path_after).unwrap(); + let memory_before = mem_cmp::MemChecker::from("test/machine/memorySub.txt").unwrap(); + let memory_after = mem_cmp::MemChecker::from("test/machine/memorySubEnd.txt").unwrap(); mem_cmp::MemChecker::fill_memory_from_mem_checker(&memory_before, &mut m); Machine::run(&mut m); - let path_trace = "memorySubTrace.txt".to_string(); - let expected_trace = fs::read_to_string(path_trace).unwrap(); + let expected_trace = fs::read_to_string("test/machine/memorySubTrace.txt").unwrap(); assert!(mem_cmp::MemChecker::compare_machine_memory(&memory_after, &m)); assert!(expected_trace.contains(m.registers_trace.as_str())); @@ -848,15 +827,12 @@ mod test { #[test] fn test_switch() { let mut m = Machine::init_machine(); - let path_before = "memorySwitch.txt".to_string(); - let path_after = "memorySwitchEnd.txt".to_string(); - let memory_before = mem_cmp::MemChecker::from(&path_before).unwrap(); - let memory_after = mem_cmp::MemChecker::from(&path_after).unwrap(); + let memory_before = mem_cmp::MemChecker::from("test/machine/memorySwitch.txt").unwrap(); + let memory_after = mem_cmp::MemChecker::from("test/machine/memorySwitchEnd.txt").unwrap(); mem_cmp::MemChecker::fill_memory_from_mem_checker(&memory_before, &mut m); Machine::run(&mut m); - let path_trace = "memorySwitchTrace.txt".to_string(); - let expected_trace = fs::read_to_string(path_trace).unwrap(); + let expected_trace = fs::read_to_string("test/machine/memorySwitchTrace.txt").unwrap(); assert!(mem_cmp::MemChecker::compare_machine_memory(&memory_after, &m)); assert!(expected_trace.contains(m.registers_trace.as_str())); diff --git a/test_programs/.gitignore b/test/.gitignore similarity index 100% rename from test_programs/.gitignore rename to test/.gitignore diff --git a/test_programs/Makefile b/test/Makefile similarity index 100% rename from test_programs/Makefile rename to test/Makefile diff --git a/test_programs/Makefile.config b/test/Makefile.config similarity index 100% rename from test_programs/Makefile.config rename to test/Makefile.config diff --git a/test_programs/Makefile.tests b/test/Makefile.tests similarity index 100% rename from test_programs/Makefile.tests rename to test/Makefile.tests diff --git a/test_programs/README.md b/test/README.md similarity index 100% rename from test_programs/README.md rename to test/README.md diff --git a/test_programs/riscv_instructions/Makefile b/test/riscv_instructions/Makefile similarity index 100% rename from test_programs/riscv_instructions/Makefile rename to test/riscv_instructions/Makefile diff --git a/test_programs/riscv_instructions/boolean_logic/Makefile b/test/riscv_instructions/boolean_logic/Makefile similarity index 100% rename from test_programs/riscv_instructions/boolean_logic/Makefile rename to test/riscv_instructions/boolean_logic/Makefile diff --git a/test_programs/riscv_instructions/boolean_logic/comparisons.c b/test/riscv_instructions/boolean_logic/comparisons.c similarity index 100% rename from test_programs/riscv_instructions/boolean_logic/comparisons.c rename to test/riscv_instructions/boolean_logic/comparisons.c diff --git a/test_programs/riscv_instructions/boolean_logic/if.c b/test/riscv_instructions/boolean_logic/if.c similarity index 100% rename from test_programs/riscv_instructions/boolean_logic/if.c rename to test/riscv_instructions/boolean_logic/if.c diff --git a/test_programs/riscv_instructions/boolean_logic/new_comparisons.c b/test/riscv_instructions/boolean_logic/new_comparisons.c similarity index 100% rename from test_programs/riscv_instructions/boolean_logic/new_comparisons.c rename to test/riscv_instructions/boolean_logic/new_comparisons.c diff --git a/test_programs/riscv_instructions/boolean_logic/switch.c b/test/riscv_instructions/boolean_logic/switch.c similarity index 100% rename from test_programs/riscv_instructions/boolean_logic/switch.c rename to test/riscv_instructions/boolean_logic/switch.c diff --git a/test_programs/riscv_instructions/jump_instructions/Makefile b/test/riscv_instructions/jump_instructions/Makefile similarity index 100% rename from test_programs/riscv_instructions/jump_instructions/Makefile rename to test/riscv_instructions/jump_instructions/Makefile diff --git a/test_programs/riscv_instructions/jump_instructions/jump.c b/test/riscv_instructions/jump_instructions/jump.c similarity index 100% rename from test_programs/riscv_instructions/jump_instructions/jump.c rename to test/riscv_instructions/jump_instructions/jump.c diff --git a/test_programs/riscv_instructions/jump_instructions/ret.c b/test/riscv_instructions/jump_instructions/ret.c similarity index 100% rename from test_programs/riscv_instructions/jump_instructions/ret.c rename to test/riscv_instructions/jump_instructions/ret.c diff --git a/test_programs/riscv_instructions/simple_arithmetics/Makefile b/test/riscv_instructions/simple_arithmetics/Makefile similarity index 100% rename from test_programs/riscv_instructions/simple_arithmetics/Makefile rename to test/riscv_instructions/simple_arithmetics/Makefile diff --git a/test_programs/riscv_instructions/simple_arithmetics/README.md b/test/riscv_instructions/simple_arithmetics/README.md similarity index 100% rename from test_programs/riscv_instructions/simple_arithmetics/README.md rename to test/riscv_instructions/simple_arithmetics/README.md diff --git a/test_programs/riscv_instructions/simple_arithmetics/unsigned_addition.c b/test/riscv_instructions/simple_arithmetics/unsigned_addition.c similarity index 100% rename from test_programs/riscv_instructions/simple_arithmetics/unsigned_addition.c rename to test/riscv_instructions/simple_arithmetics/unsigned_addition.c diff --git a/test_programs/riscv_instructions/simple_arithmetics/unsigned_division.c b/test/riscv_instructions/simple_arithmetics/unsigned_division.c similarity index 100% rename from test_programs/riscv_instructions/simple_arithmetics/unsigned_division.c rename to test/riscv_instructions/simple_arithmetics/unsigned_division.c diff --git a/test_programs/riscv_instructions/simple_arithmetics/unsigned_multiplication.c b/test/riscv_instructions/simple_arithmetics/unsigned_multiplication.c similarity index 100% rename from test_programs/riscv_instructions/simple_arithmetics/unsigned_multiplication.c rename to test/riscv_instructions/simple_arithmetics/unsigned_multiplication.c diff --git a/test_programs/riscv_instructions/simple_arithmetics/unsigned_substraction.c b/test/riscv_instructions/simple_arithmetics/unsigned_substraction.c similarity index 100% rename from test_programs/riscv_instructions/simple_arithmetics/unsigned_substraction.c rename to test/riscv_instructions/simple_arithmetics/unsigned_substraction.c diff --git a/test_programs/userlib/Makefile b/test/userlib/Makefile similarity index 100% rename from test_programs/userlib/Makefile rename to test/userlib/Makefile diff --git a/test_programs/userlib/ldscript.lds b/test/userlib/ldscript.lds similarity index 100% rename from test_programs/userlib/ldscript.lds rename to test/userlib/ldscript.lds diff --git a/test_programs/userlib/libnachos.c b/test/userlib/libnachos.c similarity index 100% rename from test_programs/userlib/libnachos.c rename to test/userlib/libnachos.c diff --git a/test_programs/userlib/libnachos.h b/test/userlib/libnachos.h similarity index 100% rename from test_programs/userlib/libnachos.h rename to test/userlib/libnachos.h diff --git a/test_programs/userlib/sys.s b/test/userlib/sys.s similarity index 100% rename from test_programs/userlib/sys.s rename to test/userlib/sys.s diff --git a/test_programs/userlib/syscall.h b/test/userlib/syscall.h similarity index 100% rename from test_programs/userlib/syscall.h rename to test/userlib/syscall.h diff --git a/test_programs/userlib/libnachos.o b/test_programs/userlib/libnachos.o deleted file mode 100644 index 26f4ccaceb20d8eedc82ca547f5f92ffa2644878..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15488 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 Date: Sun, 12 Mar 2023 00:23:55 +0100 Subject: [PATCH 110/115] Added files for machine unit testing --- .gitignore | 2 +- test/machine/memory.txt | 8 ++++++++ test/machine/memoryComp.txt | 8 ++++++++ test/machine/memoryDiv.txt | 8 ++++++++ test/machine/memoryIf.txt | 8 ++++++++ test/machine/memoryJump.txt | 8 ++++++++ test/machine/memoryMul.txt | 8 ++++++++ test/machine/memoryRet.txt | 8 ++++++++ test/machine/memorySub.txt | 8 ++++++++ test/machine/memorySwitch.txt | 8 ++++++++ 10 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 test/machine/memory.txt create mode 100644 test/machine/memoryComp.txt create mode 100644 test/machine/memoryDiv.txt create mode 100644 test/machine/memoryIf.txt create mode 100644 test/machine/memoryJump.txt create mode 100644 test/machine/memoryMul.txt create mode 100644 test/machine/memoryRet.txt create mode 100644 test/machine/memorySub.txt create mode 100644 test/machine/memorySwitch.txt diff --git a/.gitignore b/.gitignore index da74d9f..b81b510 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ /target /.idea *.iml -*.txt \ No newline at end of file +/*.txt diff --git a/test/machine/memory.txt b/test/machine/memory.txt new file mode 100644 index 0000000..114b58f --- /dev/null +++ b/test/machine/memory.txt @@ -0,0 +1,8 @@ +4000 1b8 +00 3f d0 97 41 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +400000 1450 +fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 fe 04 26 23 00 10 07 93 fe f4 24 23 fe c4 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb fe f4 26 23 00 00 07 93 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +404000 80 +00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 +4000 +405270 \ No newline at end of file diff --git a/test/machine/memoryComp.txt b/test/machine/memoryComp.txt new file mode 100644 index 0000000..0d30a7a --- /dev/null +++ b/test/machine/memoryComp.txt @@ -0,0 +1,8 @@ +4000 1b8 +00 3f d0 97 41 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +400000 14d8 +fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 fe 04 26 23 00 10 07 93 fe f4 24 23 08 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 00 07 07 1b 00 07 87 9b 00 e7 d8 63 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 07 87 13 fe 84 27 83 00 07 07 1b 00 07 87 9b 00 f7 1c 63 fe c4 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb fe f4 26 23 fe c4 27 83 00 07 87 13 fe 84 27 83 00 07 07 1b 00 07 87 9b 00 f7 5a 63 fe c4 27 83 00 17 87 9b fe f4 26 23 00 c0 00 6f 00 00 07 93 02 00 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 00 07 07 1b 00 07 87 9b f6 e7 d6 e3 00 00 07 93 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +404000 80 +00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 +4000 +405270 \ No newline at end of file diff --git a/test/machine/memoryDiv.txt b/test/machine/memoryDiv.txt new file mode 100644 index 0000000..682294e --- /dev/null +++ b/test/machine/memoryDiv.txt @@ -0,0 +1,8 @@ +4000 1b8 +00 3f d0 97 41 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +400000 1454 +fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 40 07 93 fe f4 26 23 00 20 07 93 fe f4 24 23 fe c4 27 83 00 07 87 13 fe 84 27 83 02 f7 57 bb fe f4 26 23 00 00 07 93 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +404000 80 +00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 +4000 +405270 \ No newline at end of file diff --git a/test/machine/memoryIf.txt b/test/machine/memoryIf.txt new file mode 100644 index 0000000..8b0da1e --- /dev/null +++ b/test/machine/memoryIf.txt @@ -0,0 +1,8 @@ +4000 1b8 +00 3f d0 97 41 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +400000 1488 +fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 10 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 00 10 07 93 00 f7 1e 63 fe c4 27 83 00 07 87 9b 00 f0 58 63 00 20 07 93 fe f4 26 23 02 c0 00 6f fe c4 27 83 00 07 87 9b 00 07 98 63 fe c4 27 83 00 07 87 9b 00 07 98 63 00 30 07 93 fe f4 26 23 00 80 00 6f fe 04 26 23 00 00 07 93 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +404000 80 +00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 +4000 +405270 \ No newline at end of file diff --git a/test/machine/memoryJump.txt b/test/machine/memoryJump.txt new file mode 100644 index 0000000..86ec072 --- /dev/null +++ b/test/machine/memoryJump.txt @@ -0,0 +1,8 @@ +4000 1b8 +00 3f d0 97 43 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +400000 1464 +fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 ff 01 01 13 00 81 34 23 01 01 04 13 00 00 07 93 00 07 85 13 00 81 34 03 01 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fd 1f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +404000 80 +00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 +4000 +405270 \ No newline at end of file diff --git a/test/machine/memoryMul.txt b/test/machine/memoryMul.txt new file mode 100644 index 0000000..b8b038c --- /dev/null +++ b/test/machine/memoryMul.txt @@ -0,0 +1,8 @@ +4000 1b8 +00 3f d0 97 41 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +400000 1454 +fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 10 07 93 fe f4 26 23 00 20 07 93 fe f4 24 23 fe c4 27 83 00 07 87 13 fe 84 27 83 02 f7 07 bb fe f4 26 23 00 00 07 93 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +404000 80 +00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 +4000 +405270 \ No newline at end of file diff --git a/test/machine/memoryRet.txt b/test/machine/memoryRet.txt new file mode 100644 index 0000000..2046f06 --- /dev/null +++ b/test/machine/memoryRet.txt @@ -0,0 +1,8 @@ +4000 1b8 +00 3f d0 97 41 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +400000 1430 +fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 ff 01 01 13 00 81 34 23 01 01 04 13 00 10 07 93 00 07 85 13 00 81 34 03 01 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +404000 80 +00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 +4000 +405270 \ No newline at end of file diff --git a/test/machine/memorySub.txt b/test/machine/memorySub.txt new file mode 100644 index 0000000..9cf1238 --- /dev/null +++ b/test/machine/memorySub.txt @@ -0,0 +1,8 @@ +4000 1b8 +00 3f d0 97 41 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +400000 1454 +fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 10 07 93 fe f4 26 23 00 10 07 93 fe f4 24 23 fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb fe f4 26 23 00 00 07 93 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +404000 80 +00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 +4000 +405270 \ No newline at end of file diff --git a/test/machine/memorySwitch.txt b/test/machine/memorySwitch.txt new file mode 100644 index 0000000..3bd6096 --- /dev/null +++ b/test/machine/memorySwitch.txt @@ -0,0 +1,8 @@ +4000 1b8 +00 3f d0 97 41 00 80 e7 00 00 05 13 01 40 00 ef 00 00 80 67 00 00 08 93 00 00 00 73 00 00 80 67 00 10 08 93 00 00 00 73 00 00 80 67 00 20 08 93 00 00 00 73 00 00 80 67 00 30 08 93 00 00 00 73 00 00 80 67 00 40 08 93 00 00 00 73 00 00 80 67 00 50 08 93 00 00 00 73 00 00 80 67 00 60 08 93 00 00 00 73 00 00 80 67 00 70 08 93 00 00 00 73 00 00 80 67 00 80 08 93 00 00 00 73 00 00 80 67 00 90 08 93 00 00 00 73 00 00 80 67 01 f0 08 93 00 00 00 73 00 00 80 67 00 a0 08 93 00 00 00 73 00 00 80 67 01 e0 08 93 00 00 00 73 00 00 80 67 00 b0 08 93 00 00 00 73 00 00 80 67 00 c0 08 93 00 00 00 73 00 00 80 67 00 d0 08 93 00 00 00 73 00 00 80 67 00 e0 08 93 00 00 00 73 00 00 80 67 00 f0 08 93 00 00 00 73 00 00 80 67 01 00 08 93 00 00 00 73 00 00 80 67 02 00 08 93 00 00 00 73 00 00 80 67 01 10 08 93 00 00 00 73 00 00 80 67 01 20 08 93 00 00 00 73 00 00 80 67 01 30 08 93 00 00 00 73 00 00 80 67 01 40 08 93 00 00 00 73 00 00 80 67 01 50 08 93 00 00 00 73 00 00 80 67 01 60 08 93 00 00 00 73 00 00 80 67 01 70 08 93 00 00 00 73 00 00 80 67 01 80 08 93 00 00 00 73 00 00 80 67 01 90 08 93 00 00 00 73 00 00 80 67 01 a0 08 93 00 00 00 73 00 00 80 67 01 b0 08 93 00 00 00 73 00 00 80 67 01 c0 08 93 00 00 00 73 00 00 80 67 01 d0 08 93 00 00 00 73 00 00 80 67 02 10 08 93 00 00 00 73 00 00 80 67 02 20 08 93 00 00 00 73 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +400000 1458 +fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fd 84 37 83 fe f4 34 23 fe 84 37 83 00 07 80 e7 00 00 05 13 ff c0 40 97 ff 80 80 e7 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 11 3c 23 00 81 38 23 02 01 04 13 fe a4 34 23 fe b4 30 23 00 40 07 b7 00 07 87 93 00 07 87 9b fe 04 37 03 00 07 07 1b 00 07 06 13 00 07 85 93 fe 84 35 03 ff c0 40 97 01 c0 80 e7 00 05 07 93 00 07 85 13 01 81 30 83 01 01 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 24 23 fe 04 22 23 0b 40 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 92 63 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 98 63 00 10 07 93 fe f4 24 23 fe 04 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b f4 07 84 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fe 04 26 23 fe 04 24 23 fd 84 37 83 06 07 86 63 fd 04 37 83 06 07 82 63 04 c0 00 6f fe c4 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 07 96 63 00 10 07 93 fe f4 24 23 fe c4 27 83 fd 04 37 03 00 f7 07 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b fa 07 88 e3 fd 84 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 01 00 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 67 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 fe 07 92 e3 fe c4 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 fc b4 38 23 fd 84 35 03 f9 9f f0 ef 00 05 07 93 00 07 87 9b fe f4 24 23 fd 04 35 03 f8 5f f0 ef 00 05 07 93 00 07 87 9b fe f4 22 23 fe 84 27 83 fe f4 26 23 04 40 00 6f fe c4 27 83 00 07 87 13 fe 84 27 83 40 f7 07 bb 00 07 87 9b 00 07 87 13 fd 04 37 83 00 e7 87 33 fe c4 27 83 fd 84 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 44 27 83 00 07 87 13 fe 84 27 83 00 f7 07 bb 00 07 87 1b fe c4 27 83 00 07 87 9b fa f7 52 e3 fd 84 37 83 00 07 85 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 06 00 07 93 02 e7 d2 63 fe c4 27 83 00 07 87 1b 07 a0 07 93 00 e7 ca 63 fe c4 27 83 fe 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 1b 05 a0 07 93 02 e7 c2 63 fe c4 27 83 00 07 87 1b 04 00 07 93 00 e7 da 63 fe c4 27 83 02 07 87 9b 00 07 87 9b 00 80 00 6f fe c4 27 83 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 fe 04 20 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 d0 07 93 0c f7 10 63 00 10 07 93 fe f4 20 23 00 10 07 93 fe f4 26 23 0a c0 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 02 07 8e 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 02 f0 07 93 02 e7 f0 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 13 03 90 07 93 00 e7 f8 63 00 10 07 93 fe f4 24 23 05 40 00 6f fe 44 27 83 00 07 87 13 00 07 07 93 00 27 97 9b 00 e7 87 bb 00 17 97 9b fe f4 22 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b fd 07 87 9b 00 07 87 9b fe 44 27 03 00 f7 07 bb fe f4 22 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe 84 27 83 00 07 87 9b f4 07 88 e3 fe 04 27 83 00 07 87 9b 00 07 8a 63 fe 44 27 83 40 f0 07 bb 00 07 87 9b 00 80 00 6f fe 44 27 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fc f4 3c 23 fc 04 37 83 fc f4 38 23 fe 04 26 23 fe 04 24 23 fe 04 22 23 08 00 00 6f fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 f7 7a 63 00 10 07 93 fe f4 24 23 ff f0 07 93 fe f4 26 23 fe 44 27 83 fd 84 37 03 00 f7 07 b3 00 07 c6 83 fe 44 27 83 fd 04 37 03 00 f7 07 b3 00 07 c7 83 00 06 87 13 00 e7 fa 63 00 10 07 93 fe f4 24 23 00 10 07 93 fe f4 26 23 fe 44 27 83 00 17 87 9b fe f4 22 23 fe 84 27 83 00 07 87 9b 00 07 9a 63 fe 44 27 03 fb c4 27 83 00 07 87 9b f6 f7 66 e3 fe c4 27 83 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fb 01 01 13 04 81 34 23 05 01 04 13 fc a4 34 23 fc b4 30 23 00 06 07 93 fa f4 2e 23 fc 84 37 83 fe f4 30 23 fc 04 37 83 fc f4 3c 23 fe 04 26 23 fe 04 37 83 04 07 8a 63 fd 84 37 83 04 07 86 63 03 00 00 6f fe c4 27 83 fd 84 37 03 00 f7 07 33 fe c4 27 83 fe 04 36 83 00 f6 87 b3 00 07 47 03 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fb c4 27 83 00 07 87 9b fc f7 64 e3 fe 04 37 83 00 80 00 6f 00 00 07 93 00 07 85 13 04 81 34 03 05 01 01 13 00 00 80 67 fd 01 01 13 02 81 34 23 03 01 04 13 fc a4 3c 23 00 05 87 93 00 06 07 13 fc f4 2a 23 00 07 07 93 fc f4 28 23 fd 84 37 83 fe f4 30 23 fe 04 26 23 02 80 00 6f fe c4 27 83 fe 04 37 03 00 f7 07 b3 fd 44 27 03 0f f7 77 13 00 e7 80 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 03 fd 04 27 83 00 07 87 9b fc f7 68 e3 fe 04 37 83 00 07 85 13 02 81 34 03 03 01 01 13 00 00 80 67 fd 01 01 13 02 11 34 23 02 81 30 23 03 01 04 13 fc a4 3c 23 00 05 87 93 fc f4 2a 23 fe 04 26 23 14 c0 00 6f fe c4 27 83 00 f7 f7 93 00 07 87 9b 02 07 92 63 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 85 93 00 40 47 b7 00 07 85 13 39 d0 00 ef 02 00 00 6f fe c4 27 83 00 77 f7 93 00 07 87 9b 00 07 98 63 00 40 47 b7 00 87 85 13 37 d0 00 ef fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 47 d7 9b fe f4 05 a3 fe b4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe b4 47 83 03 07 87 9b fe f4 05 a3 01 00 00 6f fe b4 47 83 05 77 87 9b fe f4 05 a3 fe b4 47 83 fe f4 00 23 fe c4 27 83 fd 84 37 03 00 f7 07 b3 00 07 c7 83 00 f7 f7 93 fe f4 05 23 fe a4 47 83 0f f7 f7 13 00 90 07 93 00 e7 ea 63 fe a4 47 83 03 07 87 9b fe f4 05 23 01 00 00 6f fe a4 47 83 05 77 87 9b fe f4 05 23 fe a4 47 83 fe f4 00 a3 fe 04 01 23 fe 04 07 93 00 07 85 93 00 40 47 b7 01 07 85 13 2c d0 00 ef fe c4 27 83 00 17 87 9b 00 07 87 9b 00 07 87 9b 00 f7 f7 93 00 07 87 9b 00 07 8e 63 fd 44 27 83 ff f7 87 9b 00 07 87 1b fe c4 27 83 00 07 87 9b 00 e7 98 63 00 40 47 b7 01 87 85 13 28 d0 00 ef fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 00 07 87 13 fd 44 27 83 00 07 07 1b 00 07 87 9b ea f7 42 e3 00 00 00 13 00 00 00 13 02 81 30 83 02 01 34 03 03 01 01 13 00 00 80 67 f5 01 01 13 0a 81 34 23 0b 01 04 13 f6 a4 34 23 00 05 87 93 f4 c4 3c 23 f4 d4 38 23 f6 f4 22 23 f6 84 37 83 00 07 8c 63 f5 84 37 83 00 07 88 63 f6 44 27 83 00 07 87 9b 00 07 d6 63 ff f0 07 93 17 90 00 6f fe 04 24 23 fe 04 26 23 14 d0 00 6f fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 87 13 02 50 07 93 0c f7 1e e3 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 9b 00 07 86 93 02 50 07 13 04 e6 8c 63 00 07 86 93 02 50 07 13 00 e6 ce e3 00 07 86 93 07 80 07 13 00 d7 48 e3 00 07 86 93 06 30 07 13 00 e6 c2 e3 f9 d7 86 9b 00 06 87 1b 01 50 07 93 7e e7 ea 63 02 06 97 93 02 07 d7 93 00 27 97 13 00 40 47 b7 02 87 87 93 00 f7 07 b3 00 07 a7 83 00 07 80 67 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 01 d0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fe f4 22 23 fe 04 20 23 fe 44 27 83 00 07 87 9b 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 67 bb f8 f4 2c 23 f9 84 27 83 41 f7 d7 9b f9 84 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2c 23 f9 84 27 83 0f f7 f7 13 fe 04 27 83 00 17 86 9b fe d4 20 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 8c 23 fe 44 27 83 00 07 87 13 00 a0 07 93 02 f7 47 bb fe f4 22 23 fe 44 27 83 00 07 87 9b f8 07 98 e3 fe 04 27 83 ff f7 87 9b fe f4 20 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fe 04 27 03 ff 07 07 13 00 87 07 33 f9 87 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe 04 27 83 ff f7 87 9b fe f4 20 23 fe 04 27 83 00 07 87 9b fa 07 d4 e3 6d c0 00 6f fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 00 07 87 1b 00 07 06 93 06 40 07 93 00 f6 88 63 07 80 07 93 12 f7 0c 63 2d c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 3c 23 fc 04 2a 23 fd 84 37 83 02 07 de 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 d0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 84 37 03 00 a0 07 93 02 f7 67 b3 f8 f4 2e 23 f9 c4 27 83 41 f7 d7 9b f9 c4 27 03 00 e7 c7 33 40 f7 07 bb f8 f4 2e 23 f9 c4 27 83 0f f7 f7 13 fd 44 27 83 00 17 86 9b fc d4 2a 23 03 07 07 1b 0f f7 77 13 ff 07 87 93 00 87 87 b3 f8 e7 80 23 fd 84 37 03 00 a0 07 93 02 f7 47 b3 fc f4 3c 23 fd 84 37 83 f8 07 9e e3 fd 44 27 83 ff f7 87 9b fc f4 2a 23 05 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fd 44 27 03 ff 07 07 13 00 87 07 33 f8 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 44 27 83 ff f7 87 9b fc f4 2a 23 fd 44 27 83 00 07 87 9b fa 07 d4 e3 26 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fa f4 34 23 fc 04 26 23 fc 04 28 23 13 40 00 6f fd 04 27 83 00 27 97 9b 00 07 87 9b 00 07 87 13 fa 84 37 83 00 e7 97 b3 fa f4 30 23 fa 04 37 83 03 c7 d7 93 fa f4 30 23 fa 04 37 83 00 f7 f7 93 fa f4 30 23 fa 04 37 83 04 07 96 63 fc c4 27 83 00 07 87 9b 0e 07 80 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 40 00 6f 00 10 07 93 fc f4 26 23 fa 04 37 03 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fa 04 37 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fd 04 27 83 00 17 87 9b fc f4 28 23 fd 04 27 83 00 07 87 1b 00 f0 07 93 ec e7 f2 e3 fc c4 27 83 00 07 87 9b 0e 07 9c 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0b c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 06 c0 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 00 80 00 6f 00 00 00 13 30 c0 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 f8 f4 2a 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 f9 44 27 03 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 2b 80 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 b7 83 fc f4 30 23 fc 04 37 83 04 07 9e 63 00 40 47 b7 02 07 87 93 fc f4 30 23 04 c0 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 de 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 fc 04 37 03 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fc 04 37 83 00 17 87 93 fc f4 30 23 fc 04 37 83 00 07 c7 83 fa 07 98 e3 23 40 00 6f f5 04 37 83 00 87 87 13 f4 e4 38 23 00 07 a7 83 fa f4 2a 23 fa 04 2c 23 fa 04 2e 23 13 80 00 6f fb c4 27 83 00 27 97 9b 00 07 87 9b fb 44 27 03 00 f7 17 bb fa f4 28 23 fb 04 27 83 01 c7 d7 9b fa f4 28 23 fb 04 27 83 00 f7 f7 93 fa f4 28 23 fb 04 27 83 00 07 87 9b 04 07 96 63 fb 84 27 83 00 07 87 9b 0e 07 82 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 0a 80 00 6f 00 10 07 93 fa f4 2c 23 fb 04 27 83 00 07 87 1b 00 90 07 93 04 e7 e6 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 03 07 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fb 04 27 83 0f f7 f7 13 f6 84 37 83 00 17 86 93 f6 d4 34 23 05 77 07 1b 0f f7 77 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fb c4 27 83 00 17 87 9b fa f4 2e 23 fb c4 27 83 00 07 87 1b 00 70 07 93 ec e7 f0 e3 fb 84 27 83 00 07 87 9b 0c 07 90 63 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 03 00 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 08 40 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 00 e7 dc 63 f6 84 37 83 00 17 87 13 f6 e4 34 23 02 50 07 13 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 05 00 00 6f 00 00 00 13 04 80 00 6f f6 44 27 83 ff f7 87 9b 00 07 87 1b fe 84 27 83 00 07 87 9b 02 e7 d2 63 fe c4 27 83 f5 84 37 03 00 f7 07 33 f6 84 37 83 00 17 86 93 f6 d4 34 23 00 07 47 03 00 e7 80 23 fe 84 27 83 00 17 87 9b fe f4 24 23 fe c4 27 83 00 17 87 9b fe f4 26 23 fe c4 27 83 f5 84 37 03 00 f7 07 b3 00 07 c7 83 ea 07 94 63 f6 84 37 83 00 07 80 23 fe 84 27 83 00 07 85 13 0a 81 34 03 0b 01 01 13 00 00 80 67 f9 01 01 13 02 11 3c 23 02 81 38 23 04 01 04 13 fc a4 3c 23 fc c4 34 23 00 d4 34 23 00 e4 38 23 00 f4 3c 23 03 04 30 23 03 14 34 23 00 05 87 93 fc f4 2a 23 03 04 07 93 fc f4 30 23 fc 04 37 83 fd 87 87 93 fe f4 34 23 fe 84 37 03 fd 44 27 83 00 07 06 93 fc 84 36 03 00 07 85 93 fd 84 35 03 dd 8f f0 ef 00 05 07 93 fc f4 2a 23 fd 44 27 83 00 07 85 13 03 81 30 83 03 01 34 03 07 01 01 13 00 00 80 67 ec 01 01 13 0e 11 3c 23 0e 81 38 23 10 01 04 13 f0 a4 34 23 00 b4 34 23 00 c4 38 23 00 d4 3c 23 02 e4 30 23 02 f4 34 23 03 04 38 23 03 14 3c 23 04 04 07 93 f0 f4 30 23 f0 04 37 83 fc 87 87 93 fe f4 30 23 fe 04 37 03 f1 84 07 93 00 07 06 93 f0 84 36 03 0c 80 05 93 00 07 85 13 d5 8f f0 ef 00 05 07 93 fe f4 26 23 fe c4 27 83 00 07 87 13 0c 70 07 93 00 e7 f6 63 0c 70 07 93 fe f4 26 23 fe c4 27 83 00 07 87 9b 02 f0 50 63 fe c4 27 03 f1 84 07 93 00 10 06 13 00 07 05 93 00 07 85 13 ff c0 30 97 cc 00 80 e7 00 00 00 13 0f 81 30 83 0f 01 34 03 14 01 01 13 00 00 80 67 f2 01 01 13 0c 11 3c 23 0c 81 38 23 0e 01 04 13 f2 84 07 93 00 00 06 13 0c 80 05 93 00 07 85 13 ff c0 30 97 c7 80 80 e7 f2 84 07 93 00 07 85 13 ff 9f e0 ef 00 05 07 93 00 07 85 13 0d 81 30 83 0d 01 34 03 0e 01 01 13 00 00 80 67 fe 01 01 13 00 81 3c 23 02 01 04 13 fe 04 26 23 fe c4 27 83 00 07 87 1b 00 10 07 93 00 f7 1c 63 00 10 07 93 fe f4 26 23 00 00 00 13 00 00 07 93 00 80 00 6f 00 00 07 93 00 07 85 13 01 81 34 03 02 01 01 13 00 00 80 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +404000 80 +00 09 78 25 00 00 00 00 00 20 20 20 00 00 00 00 00 20 73 25 00 00 00 00 00 00 00 0a 00 00 00 00 6c 75 6e 28 00 00 29 6c 00 40 0e f8 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 09 e8 00 40 11 7c 00 40 11 7c 00 40 0b 28 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f 4c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 11 7c 00 40 0f d0 +4000 +405270 \ No newline at end of file From 5a6a70f1b7b48234c04b1d002958cff9489ee179 Mon Sep 17 00:00:00 2001 From: Quentin Legot Date: Mon, 13 Mar 2023 14:51:32 +0100 Subject: [PATCH 111/115] Force the compiler and clippy to return a warning when a function isn't documented --- src/kernel/system.rs | 1 + src/main.rs | 14 +++++++++++++- src/utility/list.rs | 17 +++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/kernel/system.rs b/src/kernel/system.rs index bad8652..c813d96 100644 --- a/src/kernel/system.rs +++ b/src/kernel/system.rs @@ -30,6 +30,7 @@ impl<'a> System<'a> { } } + /// use thread_manager setter to send it system instance pub fn freeze(&'a mut self) { self.thread_manager.system.set(Option::Some(self)); } diff --git a/src/main.rs b/src/main.rs index 78b9e54..2e01f7d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,16 @@ + +#![warn(missing_docs)] +#![warn(clippy::missing_docs_in_private_items)] + +//! Crate burritos ((BurritOS Using Rust Really Improves The Operating System) +//! +//! Burritos is an educational operating system written in Rust +//! running on RISC-V emulator. + +/// Contain hardware simulated part of the machine mod simulator; mod kernel; +/// module containing useful tools which can be use in most part of the OS to ease the development of the OS pub mod utility; use kernel::system::System; @@ -7,5 +18,6 @@ use simulator::machine::Machine; fn main() { let machine = Machine::init_machine(); - let _system = System::new(machine); + let mut system = System::new(machine); + system.freeze(); } diff --git a/src/utility/list.rs b/src/utility/list.rs index f6efb50..b3cc66f 100644 --- a/src/utility/list.rs +++ b/src/utility/list.rs @@ -1,9 +1,13 @@ +/// Data structure and definition of a genericsingle-linked LIFO list. +/// +/// This is a #[derive(PartialEq)] pub struct List { head: Link, } + type Link = Option>>; #[derive(PartialEq)] @@ -13,6 +17,8 @@ struct Node { } impl List { + + /// Create an empty list pub fn new() -> Self { List { head: None } } @@ -94,18 +100,26 @@ impl List { found } + /// Return true if the list is empty, false otherwise pub fn is_empty(&self) -> bool { self.head.is_none() } + /// Turn the list into an iterator for use in a for loop per example. + /// + /// When you iter using into_iter, elements are remove from the list pub fn into_iter(self) -> IntoIter { IntoIter(self) } + /// Turn the list into an iterator for use in a for loop + /// + /// When you iter using this method, elements are dereferenced pub fn iter(&self) -> Iter<'_, T> { Iter { next: self.head.as_deref() } } + /// Same as iter but make the iterator mutable pub fn iter_mut(&mut self) -> IterMut<'_, T> { IterMut { next: self.head.as_deref_mut() } } @@ -120,6 +134,7 @@ impl Drop for List { } } +/// Iterator structure for use in a for loop, pop elements before returning it pub struct IntoIter(List); impl Iterator for IntoIter { @@ -130,6 +145,7 @@ impl Iterator for IntoIter { } } +/// Iterator structure for use in a for loop, dereference before returning it pub struct Iter<'a, T> { next: Option<&'a Node>, } @@ -144,6 +160,7 @@ impl<'a, T> Iterator for Iter<'a, T> { } } +/// Same as Iter structure, returned item are mutable pub struct IterMut<'a, T> { next: Option<&'a mut Node>, } From 0e57576b6a725e7eeadd151b283bf27417eb4a8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Autin?= Date: Mon, 13 Mar 2023 15:09:46 +0100 Subject: [PATCH 112/115] Added single unit test necessary for system --- src/kernel/system.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/kernel/system.rs b/src/kernel/system.rs index bad8652..413da86 100644 --- a/src/kernel/system.rs +++ b/src/kernel/system.rs @@ -60,4 +60,26 @@ pub enum ObjectType { FileType, ThreadType, InvalidType +} + +#[cfg(test)] +mod tests { + + use crate::{System, Machine}; + + macro_rules! init_system { + () => {{ + let m = Machine::init_machine(); + init_system!(m) + }}; + ($a:expr) => {{ + System::new($a) + }}; + } + + #[test] + fn test_init_system() { + init_system!(); + } + } \ No newline at end of file From 172dad6598d6556ccc1f739c4a1326760464aafd Mon Sep 17 00:00:00 2001 From: Moysan Gabriel Date: Mon, 13 Mar 2023 17:42:03 +0100 Subject: [PATCH 113/115] mmu & translation table def --- src/simulator/mmu.rs | 0 src/simulator/translationtable.rs | 78 +++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 src/simulator/mmu.rs create mode 100644 src/simulator/translationtable.rs diff --git a/src/simulator/mmu.rs b/src/simulator/mmu.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/simulator/translationtable.rs b/src/simulator/translationtable.rs new file mode 100644 index 0000000..d0d8fc2 --- /dev/null +++ b/src/simulator/translationtable.rs @@ -0,0 +1,78 @@ +//Nombre maximum de correspondances dans une table des pages +//Cette donnée devra a terme etre recupérée depuis un fichier de configuration +const MaxVirtPages : u64 = 200000; + + +/* Une table de correspondance propre à un processus + */ +struct TranslationTable{ + //capacité de cette table <=> nombre de correspondances possibles + maxNumPages : u64, + + //la table en question + //Vec implemente le trait Index, donc un bon choix + pageTable : Vec +} + +impl TranslationTable { + + fn create() -> TranslationTable { + + TranslationTable{ + maxNumPages : MaxVirtPages, + page + } + } + + +} + + + +/* Une correspondance + données sur cette correspondance + */ +struct PageTableEntry{ + //true <=> la correspondance est valide et la page est présente dans la ram + valid : bool, + + //true <=> la page a été accédée (lecture/ecriture) récemment + U : bool, + + //true <=> page modifiée mais non sauvegardée sur disque + M : bool, + + //droits d'accès sur cette page + readAllowed : bool, + writeAllowed : bool, + + //numero de page physique <=> c'est notre correspondance + physicalPage : i32, + + //true <=> cette page doit etre chargée depuis la swap zone du disque + swap : bool, + + //a définir plus tard, en relation avec swap + addrDisk : i32, + + //mis à 1 par le système quand cette page est impliquée dans une opération d'IO + io : bool +} + +impl PageTableEntry{ + + //Default PageTableEntry Constructor + fn create() -> PageTableEntry { + PageTableEntry { + valid : false, + U : false, + M : false, + readAllowed : false, + writeAllowed : false, + physicalPage : -1i32, + swap : false, + addrDisk : -1i32, + io : false + } + } + +} \ No newline at end of file From 5f798edb94051855db1b7657bc91c4740760d13a Mon Sep 17 00:00:00 2001 From: Moysan Gabriel Date: Mon, 13 Mar 2023 17:49:48 +0100 Subject: [PATCH 114/115] enum d'erreurs dans machine, du code pour gerer les erreurs dans le futur --- src/simulator/machine.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/simulator/machine.rs b/src/simulator/machine.rs index 710b11a..462c775 100644 --- a/src/simulator/machine.rs +++ b/src/simulator/machine.rs @@ -6,6 +6,29 @@ use super::{decode::{Instruction, decode}, interrupt::Interrupt}; use super::global::*; use std::fs::File; + +/* +* Decommenter la variant si il est utilisé quelque part + */ +enum ExceptionType { + NO_EXCEPTION,//Everything ok! + //SYSCALL_EXCEPTION,//A program executed a system call. + PAGEFAULT_EXCEPTION,//Page fault exception + READONLY_EXCEPTION,//Write attempted to a page marked "read-only" */ + //BUSERROR_EXCEPTION, + /* translation resulted + in an invalid physical + address (mis-aligned or + out-of-bounds) */ + ADDRESSERROR_EXCEPTION, /* Reference that was + not mapped in the address + space */ + //OVERFLOW_EXCEPTION, //Integer overflow in add or sub. + //ILLEGALINSTR_EXCEPTION, //Unimplemented or reserved instr. + //NUM_EXCEPTION_TYPES +} + + pub const STACK_REG: usize = 2; pub const NUM_INT_REGS: usize = 32; From be19031c3212c4f5750a761dfe68136b22341cb1 Mon Sep 17 00:00:00 2001 From: Moysan Gabriel Date: Mon, 13 Mar 2023 18:01:02 +0100 Subject: [PATCH 115/115] enum visibility --- src/simulator/machine.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/simulator/machine.rs b/src/simulator/machine.rs index 462c775..2991611 100644 --- a/src/simulator/machine.rs +++ b/src/simulator/machine.rs @@ -10,7 +10,7 @@ use std::fs::File; /* * Decommenter la variant si il est utilisé quelque part */ -enum ExceptionType { +pub enum ExceptionType { NO_EXCEPTION,//Everything ok! //SYSCALL_EXCEPTION,//A program executed a system call. PAGEFAULT_EXCEPTION,//Page fault exception