diff --git a/proto9x/blobs_97.py b/proto9x/blobs_97.py index 28ee998..0112667 100644 --- a/proto9x/blobs_97.py +++ b/proto9x/blobs_97.py @@ -2,15 +2,17 @@ from .util import unhex init_hardcoded=unhex(''' -06020000015cb560afa595d0dcf4fca09ebb69301e2b9e24a5dfb6f2602833427d3bd65222c418ff15b54587ab2854c4fe9aea74fa55567 -2036fa3ec73c6912c58b1b49cbdcc7664165482cd70d5bb95d9d469626fdc2e012d74157c5792260968a2a4572b1ccccc26ec2e2ed0ddda -1b0931d3d0566460915d43e0a654a0582706be9113ea88f0c15ba058507efb0dadecb4a4cc64444dddf050b6e8d4ebb34ebba33e8651c75 -e5fb28f85c83197df1de460d9e1cb82208753ceff0ef60a823dba75d05548f5b3a5a0e2972232f7403bd6869da90e5371a0ab8ad23972f1 -597630f5ff7c8b8272800563477288b5591bbb0341d3975efc1778225767fa35480ff7f8dd633e4034ac32e4af58b86ebc63552cb35b12b -285255deaf3a32bf46cdc5ad3bc1c9ed1bcc112c72143f9aec568e2cacfa89ba0c7bb65590d8b93e6871a33c6c6983c0acd04e737ff55ee -e024ca6b9a48332c1a69a5a3fdd24b964cf7e7c55229bb0b48a6e339eb2c42d07ec850a4ee780660ad6c77ffa302a63bd19426134c4533d -69192ef2e16591df26394791a4ecb994a24f5a7f70f1eb2604e6bfb67a452cb74ead8b0d9808f890ac386750cbac06ee03a852145094053 -b2b074b9905de5cdbf2272b67e51f159164778d6d2ef7a1ccb81df9f896ddb38ce11e8140cf6cb9c82 +06020000014a231406e5542fc6dc3b1aedebe68f55596ad3ca13f6e019994c6f71672fff756fbde0511d09d45978b12ba415b3694a0e763 +48c8cfe9dbb9abf86813fc0c67c1005519a6f87360c2fb3e12bd0a9e012b06d9f5c9b44ccc6645b0fbd47afe45c8c874fcb88fbfd18fb7a +9b3241351f256acce689f9586a52b01f8fdcb66cdf3b340b1f9f386d58ca24fdfcdfbcebefb5f3a3c2a08357721040235a20ce1ee2f4f78 +56e0d9c27b92cd9b975c86f2c8cab1179868f795da674004b93c15e6ac8aa825a1907f2003cb9e6df096423167b2cabae98c0cd3fd200d1 +1c7e0ee1ba5a725f7f2022886f3caa5f68b688ba61bc5cb0190db569efa0a57aa9d76ecdc7440c8920ea02768734221260d083bebb39c17 +6d129c01d1a0f1388497171402ba041afd925d71e76ce4905e44fa5fd528759a2c9f12895864b5aa394dc71a4a17161dd82197a10742fa5 +f3135c5e78820e36653fa3db535f57c71897242939d7da50f81070ce9ab81c61af6ac29a6c6c4a5df73ffd08542fb540e417939ed117298 +051d27736c2faf1c5577a2133b6f60ea7484c692faae2a49c51c8e6f69af77774bad51a9adeea3109d3611d6a437cdc0c356e46a8f9a6d3 +054c5519c17c986e54f61f8329006ce184c275984799dbdf5512188fa8ff10aa2ddc25eb697ebdcb156509309ade5d7909a734bf35ec69e +062cb941c2ea4af0958110da93bd2b5f17fc9b1ebdbd8020a3c36f22a68f707226cec716126d6a830219521669bd59fa0e4bd35db6ef0aa +2999d1c0e7acf67e598696cd58cc4bdb1b7c037ee9a085f784c4 ''') init_hardcoded_clean_slate=unhex(''' @@ -31,429 +33,290 @@ aa41249faeef4d838e280cb5d6fc19cfe86c75f ''') reset_blob=unhex(''' -06020000013920c0cdd8e7e68d6ef897ee686fbf657f83b9514341e1d3c0835a28c9cd1ccd0016644f74d -d02a73b85d95f4d352417cee76ba0bca3ce474159c62ade3e10797715a13f15a292f5d57c6d46cf8f5ef6 -587a3c55244f2258ffd08b351dc14af0da36121ba0aa4f1147ffd0cccdc1d6dc1d5fa7adb9841ff79c753 -e2528dc27344be84a2655ab01039c74999b90a7f008f626791d68a76a57b07180129bad2c0a67daf6a3a5 -ebadd6a429fc087b1e68f1e6535290b7f94e9a9800330d866c5a67b4e974029164f8c6fca8d93c86211ac -47d96fe386faf206f92f4afd32d3a90c4287377e8896aa9ae930543864539df833345d0a1869169d69100 -8510c91dc1a0ec138669c2efb812c7b9b7f201891cdebe9c80eb671ac8a854bdcb9990cc23950f9f1dda0 -d0119b8c5c2d8446310e8599efd248075bad6613ceb13f0310ceab6ad17b18c8a245c26363ba7a7f24f17 -972861c6a96e728d1be81a68d66418ee2dbdc00d240bde29c781069f93a06dff89ba4039b980d3c9c2a26 -a7f41a02a4b9f1c0e0f75f0a59c5c5003d2e90a209cd9f8bdf69414262e238dbe8e1bacf6c880f59843dd -8111293e24e99c964538842dcb0b4a8cab6d227cbfe0647cea763496425152aed507b2228e79c8e9bcaaf -6380c1d2e7f56c5563706cb5da5b238371ca4b2627ca00f9bc9d71cd73ccf02f02f42e856f9e8defa0195 -c8647cb1a0a63e6996a1b5906080851f1648cd061a585ddda05fc8f37a99a0dac92dfabbfade8f89157cf -11d356782689838c358f4790480fd341c993ae4cc8a8c93cf11578c0571e0c3c8a4964286eac3fae27507 -d9fb2ee961953d86574e6e5f6d38cf2507a714adbc221867bd701bdffae0b27ce47ae8d06685e534342d1 -1aef07f2c998fffe8673c2806e8384738b8f4ba401d417cabe088ed2fa09c42e97af72f878753ffc50b87 -fd292662f421bc6cc8da131957c84f4ce4b69266065d35d3ab91362b13edac27231ea1b6485faa6644c64 -6747b86341b6d031f6a52b6ad855396b7b8cf9485f50365cdce203355bf2fceebfa59b266772ff2578bb5 -03f92ca35ca2bc046d63aeb4fbb0f477ef41c65d10c5cdcff5de10afa9e7bc08b026f0fa649629f259c5c -2978d26dfc2cbf48f59616ada4bf2fc7a7219fc37d9f5026709e7b472b6f97f78d47e1c5a6af8e23aebb8 -a88f64f005abc93251aeb8561b0d855941b33ac608413405381fecd0154db93812843f15b8e5e118ba7a7 -cdc051ef203a7721b769abb3c17c704eb0acf6a2cde267776dfb1ff8d82ba2341d0346cd80cd4480767a3 -d0edb643c1d9045f24096bd1fc324c03efc0977736725b2770998ea920c19a1fa9add474714a5b7a2a318 -7e94cf1a3492814ad145a7b204e0b3d35dc4cab2424a891f76160ba722a25bf9906bb3a476250b756249c -aed3c4d52c4046012da280ec71898e8e393559979a74432f1df2692616c761c676a0260c7e4042bba7387 -d3c683d4e08454c7f509b7960a1db2a1cf007538a38a1e39b0a0310c9b77fbf21ab2b3f2e76f3ec9084c6 -f47f4fb2fc1dbcab40a9d1f6c8e404126193d26ed98270824611c4840087893b3204837e282bf29623080 -439336435e801de053cebb066bc7a440a3f34fafc2bb7252c5dd846af3404e93f1172ebe2b7861e09d58b -cbee0400df8fe627adc42be2860a33d40748bab2f34262ee32409bced9cf8fea90bc32d247dc2787d7289 -65373063851a991c63c480b67cd301a9c312037c72ffc04120a09b1413756d4e5bb0bccb550c6cf76e2c6 -35c8498f4e653beee2fb683db0466280bbd297838a8d1f2459a58db77446020cd20b82a52ee5cbf0aa908 -14a199ae61dca69d0bc90986a2c26b8d65357e3925774a3876ed0eb80124a0bed4c2c0bc632e1b3c1a812 -2b54b023b05e846d78172b97424ff607b67c2c11f21ceadf82020129e62fb0918e85b623134f4e5e18870 -42b632662a3d33c6effa4a967e09a4d988dd084fde8c9d4b39dd0e6521b8e2d376807adbb5b86d914eca2 -38a349d9b0fb23b64668bdfd45f6a735523a31878e4975a42ebe2d3c920f550881818c8139cda34df3669 -b89aa5fc8b3bad460de2d76d431435c83b6fc0efbaaaa84818e990be36b72826f00f1f2b97d63b680d83d -03f2ac5325f8dfc5d460abcbf27ed4ff205542702974eb9bfba456401786578efd93d69ec76a41df43798 -76891e39acdce7a32e94811157d48829f46b5755d9721d935c73a28423080bc8a48882b4439e92ac68413 -6a52b078e06a730596eacab8768d0784b0fca63f8a247f2523ea5d4679a8957af6b314594681759ede769 -76937c5f99c7fc9326579d90fe7a7fe0d512858e3221b50c4e1d9ff16f38d49c52a524ef895dab24059ac -7a2b9dc24e59d8b38e4958d51fc309deecf987dd79697fe6ccf955e06bbd0ebe69aa18df39b452ff9ebe8 -f2f761c1be272141ebe65d0a625b5f1398ac2ae129ee5c1e520beeb492748f9364742978249470be45279 -11bd9aafbcbfa5e90a56ce40e42b995c82f6c5df51cfedc41a6963475e2d39641e2d7ac624d184aaec303 -465d4441b1b0acfccf9b45cc3e1825a01be94e93ee16918793a809cef222480377558ee18bc2801e31f24 -3d609ead015a0a6cec743f7dd0d951a7e0bf56d45ef20177373972602417024412c2adef44b881da42138 -5286c9e31fcf98b8f8ee10a9ee2730429579825ac159bdee29d1c4cdb9073427d0924174d04818b6586d2 -d2ac5318156b6139bec3b1959d0d1a8b46603f0ae9862214fff30c133d463cdabf875ef841e01976ad06c -bf74c9987839e8a0e41b6a2411e542a061b23bf5b261df7a0cc844c510c102b4e03fbc44c44e998a51699 -907d252e91e3e89c0728f5db0b868ff2c55fc53d9230dd0dcd01086379a8821a0cb2b7dfb90b25a8c452f -285185457827dea2f5b3cf1138e23e9a8d23ba1f2234d233c0c7f0595471e7e3a62d8fbb8a5fb900a3cf0 -3ee4943e4a4ba5b51200f02a6217ec29d7d5177ba395c77540b7111c5428ab069613c7e17094c5d798049 -3ce2d945393f3fc11765629597817499cf6585635a3db8d6471af509380224dc04b574891ebce80cb7ea4 -d0789ffd7b76637fd460ee701b60be9174eeb51f96c6811a4e4dc55ee545a9d9d23b80059084616521742 -d9b7a47d60b77dd0ed12f10327553448655ed7b7a9d7366854d908a4c762fe9048e4e4a3776f2e22f90de -014643101de4715754efd62762500c6de90435fcde78e9fb864045cf8749b93907baeb4f47230547e78be -a0e01d918426c3c7a3bdbbf2b54394c44273aaf163306450505862af4778f667d7c34a894c8824effe124 -b9993690d1519015566849652d86e158830465fd1fab08e4cf5cfff1f437ae0c713abe1b8e1fd15b1a796 -3751504ea02e4ff1469300a689d4ca4d796be229b4cc041296f9672bb2383442d492eaee0a17d174ac699 -4d2c1b1a117e54da2bef43347129d94bf4ea029271564f05fc3f607bac5e06e741ed5e9d51a2efafec05d -7926c693bed05ee0bc81c1b6aa6d57f58b01aad2d69613c201e86312bdd2e8117eded970e298c096c52ae -d21fd7f8aa03e3bf3d280fe3b3ca4e49dbfc90dbdfcae59ba03eb38458cd01f6637843526881b8df0b019 -e90e2b05bb4154dbac69e82ef4d8f83343fa2b0f10f71f1f0c314f41ca366c296fc41830ab1998829cf55 -01d8afa090b8803aa1ef94dc8a06c231ebb3e42cabaedc50fdc40832091307b4dc46398c890d71863522a -927e1d90cb72d38afbc74ffe8813ab36a168822b5caf7550af92824061d076b5e1f628b6e4a36849c5182 -58905e734a2dd53258df37305a16c0b844dec711800a822dbf691327b7fac815cef33d59363d56c246d04 -e877ba09c4fc1aa70937d46adea4b1ba418695a7b86c0d9332b71d44b2dd8c88c93a8efc264b1c29820bb -5b66b397136d9715961dbf7d5b59508015b2938edb1938e68f4e354eb7dd60b08b4460c05d1f291e56aca -32bf30a59b1d849993750498df7be8101d38cb2781cb52a640dfd09ad469bdaa069eb37b7462343819ce2 -024bcdd1940f97eec044f7fe41793fda6edf53acc92d2883fdb144de0baa6fff19c59b3b5a673a6be202d -8afb436fc6bcf3a5bce2ec9919a9d2f4aafcf2f83698d56fa43efa7b07fd1074b915344d6ce24ffdea58e -b3afd95d911187b1070cf1c97a80ec5a5d609869e262b347f24b7e33404e6daa06c89d45db644cc6e29df -41198bc8ef699415629b91b6ba52e5cccfc367654ba4fc0c7c6f40a2d9ce519c84a6315dc6e951f828b1f -5d3a7c6e7e4a3271dc21c82329a163315a763c25710dbc33f9b79db33eeeaecfb8345d503fdb069160451 -67cd5451c5feb5358b07b085cb710f348150c92948aef7eca1bf4f51cb31b7429d28ad544cfd325691524 -ea5a13fb276967ff78719eae6c735d37d7206ba951cf115210ee0c3a0b07268c57a926a4ef8dbd8423190 -8d15ca9a2f1b519ee982a539eea6e874a6b04cbb65c62ceeb44d7ccf14791bdf5f056bae592830688f03a -67d92a8b6b8ab6c40c651eb4e2366fb31434475068839466fff8e5279cbafa713b8d51dcf68001363dad4 -ac42946ebd79493fca1a868398063193b4f0aca3a5af2fabf868813b91f8f13ebff3430d31ea0d4f43ed3 -f4b620cd555e685d4ada88cd1df2dc108e1c6202531b63deeb47fc56cf5034a31f6009dbc21ba392464ce -c0f410756705d402dc05572236c291eca7f2de1315b9d120f5e90272d2643ee4f941b387b3dda516de4a9 -a09b3407ceceb015206edd6ef6449fd3304fca2f306e455c6daee470edb19732b76c1982ca03e325d8563 -c7531abdbe99e8a7742a9802afe43bc46fd795d46052b527d1125f65427c60e6bbfe5e4d391c391a62118 -ae1ce651622ea9f2a6f4f6a57271b35bc907ded5ee7026adc8f77f50168b75741984e9cc788acc8ff4de7 -a1aa976466a45948d8b40e3a9ce32ecae381c3376692012456b76ff9b58d70b277e564a2edae34b459476 -08e660eed03c3d2f4f7112a0bc7b9628d86694f8dd1fb5d9ad8c62c957c1640aad6d0106b1c9d089cfd1c -30f155a1e84a2a809f08e212b8b06a81543f2fbded09620782bf8e2bc70461b45a567727c74c1703a23b2 -3d3014db6a05a368ff9acc84d4fde73f1763603bdcd899b61cb3bcebb900268c93fbd0f12f702661d7582 -b188ae01922c95dce32d0469e30386774afcf89e4f107a949ba6dedd17d828e480ac653c07ea30f780879 -be572bdad635c0f9f87d88360b5023e58b661f35df98b7b1a0b1779179e614281147d9c6a4f0853e4d435 -432b4d6be3879315e2c4fce0ba32a9be43fac22b4f12a97caeba8ba4770c89447dbd902287ffabfa3d270 -64a45060a2fa458e950f34569ca4cbfdee9b3ff6391bc5a0903e66f5b99526fe75c10a8ab4fa9a100948d -71ab96d51e3076e84ac00460eb493b418130f6ff92c0c0a2bba39a14b3f5f003583f481abf35d39dba4ef -e41712a6eb1f8021f18d206993c685d806a8c8415cbbc15332ceabeaa8d8f0de9af037c1128fa0207ae5e -915c79276e23252fa8255448feb00d79931948967db93f8c95336237761d2eb9cde0eb3ddbf2b0e698136 -7ac6c5843902670a5bb3a7fb3cc338f7b498cc07db6454e7c8c9b2035e1e21fb1046693a39fe27fc04a38 -0a209c7ce67c238bb227a9bee07407a9fe65b0914976af513ed2f9964574bf24162940269f8e34d6fed0c -0769c81a5dd890e2b7d92c4ad51126ec8158679fa5c014428d67e485fdcdbe24e9a8f7bd46ad3b02354ed -febc7133cf198a841a163a6580ad89badaee7620419e30234ca94744d936bad9ffa468bcf669741fadb7e -7da12908e4903eba485cde036725fc4ffaef6e7a1500f40428418ef570b355810ba4981fdfb039b4e5d84 -50e979ab8f676d1b1c84897fc5cd7ed57e4962686a91687f04932f690ad55a85a7f235ea99d3ee0ee9a8d -5ef0e84d43c2ec8ef3b3da80a5c3c973e41e6d85cfa28f53c3cce3117b05662f23f8f37923518a77e5408 -76abb03b6b1bdd606ee9127ed6c03a8b90a30e772ae9fdd287cff1df87d2ca3b344f615afdccf09f9aae6 -115fb99b7a4da857c30d73e08c7cb474a65564536738f64630013e6e7a375ef2b721ceeb77c2bee0be730 -5f4beaf9fd048ccc03e2a536e57afe06cb981b8d788c0114b1422ccd025205a92d1d98b7de5f604e3e55e -2621f2d8933169615c9e5a6f354396e184ab69722b33eace77fde03c67b553084dbd35ca860f8e1798827 -9539eda36bf63bf8b1345491ced4c6c89ddcd709ddecc764a86565b8ba49368c4a4034302acfc0184c3c2 -d9f8ba34fde40cef6d3869fe6a5d1af17e059445d3bf9c950470cdac062e2986877ec72a79333089b2ce6 -9ffab8c5438a1298bc50e0e9c2e286e55b1936ab0903257d52db14fedeeb67da7a1df1506b0fdc4a50d2c -721450150b25fe8cb74c39298f620c029dd8a9f1f9b175c5083a6437d0a8f5d05489aa2ff31dfc8ed83aa -dbee192b11169e3dd6bd496eacc42c46a952f81f8c39f88ba31ec08f1060d2f2e49c0b900508b4e9e5703 -003099bc9485e09e5c6a8c9f05389124095b1c9693a30e4b75b7f2e839eb252237a55007ac61fb5268982 -083d29e757b74c4c310aa1cb03adcafe17afd50a53e4f539fb57a6c5c93ee94cabf36d2375cf0d99ad0dc -cabb650f468737745cd0d5e66ca991bfdb46e05371bfa18a034669e967192a53bffce26bf2619a365c21f -9f7c54801780c12ad3ff7198e916a1a4451bdcb248aa997d25f312a292c9ae1f70efa6ef1e5df24e48cb4 -1243ccbee736dc9d32476506126500906db396f312db3d6710669064711709597220dc3367e720819105a -f78bfc5a109571b763f44873f4b820af8279d42bff9b5f9da409e0ecb9d6a3485d9bbaf2641461c1cf144 -eaa2cada36b38beaec87737dd70158735bb9c0ae7de4ddbed353411b8435c80cb2e66a701469c6e65f437 -1d114775c73d8bfa0ca04b38811b2b31261b86dc2795388577376501aad9658c630d7ac9fa4c1f262d53a -91cef7c2990d9597fb2a130985e04233cf178c611be685623ffe5b659af6aad10da3235331fc6f6822fd5 -cdad3f96e3e1195bcb3c0104ffacf940b570f94ae689924cbba86521af15be9b1148f331ddfa37ad410b8 -ef99979a56ef1c3c789ffb996507d85383559a229493ad0bab90478d123f0c577ef01c5dc5a3ea28f60d0 -8409544ea6e44724240b2879f9c2560270e0cc3949af9e22899377635f44cc3fd0120554503d06f4a2b41 -e42129e7184265b4480edd5031d57368789203fb9a666c1be6692451f684119d85ed4cd88fe63dc1d16fd -dc4b8508d04671f837f413a653483f0eee7b5300021735de246ee24d462c5d332c55d4c35c1ab9bd7c9a3 -d009076a838baa8a88c6fce72f0805ed73221fe98a5941d21a97ab5641d2e54df83c2437fa9cd88dec024 -1f1254c6a0ca3e85f678eafab8b013459590f87fd580fc0c05f5967a58f4dfe6a89ac1e47e4dc09adc942 -4336dd355c6f783c2698b8539c3f801f999ce5db3f041cca86b75e3e92e3d98922ef2c191282a7516024d -f2949c1e88ea6b53b5d713b57d3edd5c78a978f7d854e487eddc60c7685120980a5cdc259cfb2de591875 -d88f9b898ef60d6da810b1a07252a56993bb5bba723f4f838ec648e19bf63dedb33eb1dbf07f456b41563 -c0102cb18220b308ef60908e75a77e6954a4f2993b60c10464dafb40e79e3cf5dce392207e473913e61e2 -75b090793fe0bc1856b6574cbc6fd1295448b34caa325df832a095266beec91604a2726f33e54e25e9478 -d859c348ad45ba5b51eda93cba7d957c5d0d76f2de84d225a5cbe6a5553c1311c35f12281d98acc7eec95 -d7f5e0ff3a0b27c0032b59a656f70d0cc5a042ee5b72365c0c8ee03ab6c48e18f87e050fd9707104924c1 -59b48edafc57cbb56722f62702390e688a0bd463c95318d3bb13b44033ea78d19c665aea20c67cd7896ff -cf2c8e2806e5380f0d53b0b8d30fdb35d496a891dab54d3a4ab1b2a6f4b4091b48b339c5213a6f8c3f8ab -9a9873a605494cedf22b17a6defb8ec1a88f471ce7c073ce264fffcf9af0c6a37398491652fae2c29a496 -6b022fe608c51f28503dcced1d5961186c3889e4d5ea8bc94667c80cf0d6b5f4ccf3d8addbf56b6c78028 -0850e078f39d2377376e120ad05e930e1c58f50bcf980814c2e38215db50567c8870bdfa9940104591384 -55fdbb2e260190dfac1743a5d6dc9031b0c89bfeed9f70ffa84a964a185834b4e2d3f299f2c4fea605f4a -5a97c51fcc0fad21ead2867dcb8fb6cd6ae2ae271e89477d7dd03c34508d719a037fca0c6cb028112d8be -93fa865ba60c7d7e1e017f3f49a9f0114c6fab8fe797cc3a4cc80c2351880347ebd8288895fc210431c8d -27ef350588a81c382de3a100f8f8458eebb61e33336b179ae24e397661d622c82169c1081fdb929b9f21b -4410a09fab9938c40573757d89a4450a4246deadfe4e5a20f04b6162f06bb0ca4c658a88880df139a5641 -350edf1d19123cce164d5760b6806ba8ec5584effbb87cd284150ed6a73354f9829f5d22508da40bf8f9c -7351c45cf169a3f4e7354faed2f42d9cc08ce051e902f8137a8f79b924e2b3000ed25154e617b5d066ff1 -a3540eed0a4a3da0618d961115091a6ad9f831c25e2ec9fb1ddfa3c28f365b608fa1dafbb0ba9fe340014 -60e6af2c2da1e90aedcfb07da4e6603a9879834f16fa45cbe6c2206459058c750e534dfb8fefba9bb473d -0f307f2e746f4c4f6f7db41bdcc7eb5d7e4c9d5028ce143cd88ebc1efa56f0e9f3ef939526a3f56ae015b -5e42fcb7353f5496cb70baf316c8b1bfc7f26872de3f421e87ac81d4a2f51b6c44dce38a6dc9d93009490 -d84d81807e517f06c896f8adbaac3d5d8d8b83b220114d0da49dffbc5e2cd1e2b715e671b05aa1fd3b0bc -dfdad56f65d0393dd9d1fa384b82ccf9b10b36d929f6b8e433999448f23c6c228bff904c0b91d0490af31 -3623a76fcc4258e9c8efa7ceb4b82aa0cfc6c362eac5b1e61f2a55ec5d3f401a748acb6b8f2dc4641ef9b -d4eaf3d20e399956d36c338902c5e3b7ad13249b03bf248f41bb26de70db4d0b0b4c8dd51f92b5c1e9f3c -cc7cb4ae36945a16f6b428caed3514af83885312a6e176d9c555199cf7cf444915362184d82d21538697b -10326d0c5bb1e99b44ad644de25edbdd2ba404a45258d0e1682e73a42595b797f5e7a0f8b24159047d98d -8fc58ee9e47a5068d791bafecee6422d7bc847757c0800c95e23f3470f41500bc08ab71d671765cda7422 -7535ba05696c703b90ddaaa6e6973389abbea81600e36229d756f7edcc1aceaaa010f1c5aaa1e6f0def4e -b3a04613ce82527a67f8be50d072cbca685922d492df81cf737a69e29bb4248076464ac3fbe88db35864e -69b71d1ed5b83f2045f680d9cc5d447f09e5405a5939943511eac648c10aca735209612eab589d2d2716a -19059248ce4847f3a809ff04477b8378da77e796109fef7d686a5f067cf3d91aab97bd518f388173d9535 -26a3a77af043427bc2b2a466735a45846c11204b56a84394d724511efb467722ffde80899d3868a31c7ce -4c8c2100bcab717f12eea1eb11a7f28abadbc819ceef1132a57f902aabd43337172b3aec8fc7577bca293 -50551070615735499b2758b2d9c77d391497393b6ad39e3395834185a76f6ce93fca5376e6f5aa78b11a7 -63f504781ae3e8a773c91e3899574c4b3bb0221ce8a927d443d5292f3ad13e843146736f457b4477ba6d8 -f462505b7d3d0fa76dff52f01924e00df97944f69a3abe6564793bba2850b0084e4f8d2ace474a1249daf -1a4ffdd4a8df84c8d5ead6909929992ca1b6e58476ff388bf978d091921dda2db3b1121e573eee682e22c -d01818ae0b7347e2591dedf20ac857746b82c0d4498744744ccb44ff96857a9609d7a500f243a62106e61 -8eadffeb5355d5e5e7452f5f50b3de48e75adc2be249b20ccc4aa3f4ea357bf4320d8f42e5a3bad1bd3e4 -2c659f71caa3736871f9b95887adbc04affecf1076598d898917c0b54c63317478b8b8e65fa2e6b243d7d -497cebfef615c9974553feb3d33289577886697b6fb01a8849d4714ddf9688080fb0af0e6fcba733b8019 -28e7664b3840a02b9aab6307af1dd3fa814045733b53e0adab1ec430c40e184db1ceca1bbd58c4dab244f -8683bd4edb6e59470deedebe96080be666b779106de5d6acef113a6c75002424e4812e2d9997dec5391d3 -aaba00320314f44fac9e7ca9b8996bd0a61b00139a8c1d2c9fc52e6ab9f90eba248ab0b3c4444d4ad1f07 -ac36878ee68bce6c53801a3019b0fc1f1caa3ea761da821753a949724d3b1dca2457fd2b1df7c7f3879c4 -dab41a20ab4ced8dd9e8b2ecf554fa412153dbcab52cc68ab4d83f7f310e0c5361f9c780160908816ff2e -f457db9aa93807da96de3068bfb63a18660d29d6efeb21b36c3c34abf83ff5847711eb85e052854498474 -6965ceab0caae4fab0ae83bda024bf17d091132fdbf217f13d1c42e0671e324357c6d668492df202797f4 -1a4a9be3d7598ee4d4530ca0fea76da94a225d93729eebee40f217a9d0a0dbdf28563a184eb1a71f8c6b0 -0aa550fb21b0b1af62f98a5a165fb3e79d4265962e976c50875fbd374026e7fbe886eeee146d368899bad -54f97308f158ee3c33b290445497414186c47f3b54e78ed4fc8b5bf379b0169908cac2c654edb715f9b1a -3bc50992ffe9d4d5ba034b3a7128c50aaf2ec50497e68db2261b78f155900def3ece5d86b86f4a892a846 -483ace0e008728627219bb71d897c726e9a90259c6fc61e4612ae76e41aa302e3193a0cf5d68d380fc7b0 -7d41a757a459fc81fabc6336d21206b58f3ff06e390475f4e2b99ca3f0e4c82bb2d353375076d987d0a46 -54aec2438a4c1dc17bd2dfc45a680fcb3b5144d860424b8890b83be8dba8c30ecb06cddd416e01d1917d2 -eded83012bc19ae856dae5a6713895338a1f10c76260d61d25cc640292cbbe80897913e69c39a04d7c6b5 -5e9b54dd661bf4f2fc9900283a6c668f82b8e25d0c750fa2fd00de1355e655b8e690d3d2dd1118d6199b1 -a2723bc402fb38549bf13cacb217f42ab057fb2610d0f7306765d2c3644ee9384b1a8c0ccf847fdec7386 -efb25ba2e3ad6a1b489aed02cd8a28be43855e4bb718e7647e299c150173e53855a199fef2a797d2d5e0c -454494cc175cdb205117614d1aebe6f402e21eed9dff22cfbcab47ededf6ae22717e83f0b4904c4051df6 -03fd2ce44bf59f0ca07c065d08113bdf87b6c19891e07832d7d93a6845ddbd15d41cd416dddc8de81dbba -ade29c6f48c093c8df3c64aa69f8b1a36b79bc41cde01ab1758878b6dbb6b30c4d3cc5826bcf8ee3d159d -20289bf01ddca53c7978e8ca1180924fe3274cf855e2861645b24c527ea3f928e428a578c6cb791c8dc2a -96862aff4f0b383cfeaf325748f99510bbbc17158f038103157e293951db33b0307791b45e3750b781678 -3e8a1eb9d2cffbb619bba9b40d55b3e19643acc3486d8c85e75c536033db333d83be39d5cffc02e1c48c7 -ed56158365a50e9497474bedf48621f8c1ecb58bb87d99127e7d3b44d9ffdf49a967378b8e4a796f9ba1f -62d93433afa53443dcb145a27d2bc0d92b99be04f4142a1c94d497ff9477218caa0b318a04d676447a853 -a51e725419f58374ed6823cd69ef7421d81009d2151fb4799781da7893177d46e9e39a3d2e5b7a2ef1ee4 -585a606700a2e387dd4e261ce7840f817f5e80af8852689085ce27157ee2cb5398a78feffff635ab26350 -11d739455c3fefdf16bd7b1d665a7daeb33019bbc7b4688786e58118f77a41e3879b68124d04a8de72479 -428d222890cf07608fe56f9ad094c20d668d56d985083cd0c23a85da57e37095afb06c60c2c3664a13747 -8f03438be98b78baa9af5e4d7fcde06b83952a59f4581ac51471fbc4203032f1fa52de74d804f24d99e3b -1ebd7177795f81a996225dbdfaedbaf007f6e92fd1e05f59c8864b55614b3d0a1adddc03198f7310ace88 -254f71e115b8982d1701f6c4818a35f7c13523b81e2996fdd912c0160abbc2ef5b70c8e0bc5c3588b7269 -e5152afaeb2cf84d106e2e8b1247754789e5714c600fa3df3502374c53e5bd6bd2bfe4533a3d0bc1ae7a4 -368e811c1cc1047a0a8c085b2852e365735140404ca72c0e689848c3c4409037924118c59e7791f804152 -00ea282df22aa541e28d271a27b2e50de4485675bb3c8461ff105a17daea67f2b699a42db0298d44d57ae -1dab3294399694f30fd2bdc30fb76637381e941c0f07736638cf8e532076160cd6c2a3810abd6d8ebbac4 -7491021d878b593b854e41a9786e0dec869a7b038649becb63ee65ba9e20e309020068bb54269c442c542 -5c0cb1d94785e2e1d98f142320e314010794ad009735fe274cb87e160d55baa8ff9ab8e0fc09f07953fec -afb1191fdd9b80d0c493baf72c4797feb7b5349c762d00d48d6c5322c7e58bd34d69fbf47ef9d8f1374c8 -01198b8c59b97baf58c68a42581f9ff0a98cfd587f2707457e0a2df29616a750fe6877dc35d4e9066a67a -9d4b89560bd9fcfd3a896fc8e2b9d944efc4043d0301bdd7ce597c62da276a348adb4c837e925aa95318e -c20e305a194511f5cfb91076ac244dd4ee09179584241828134bbba779d16f09b8e54413462ae3a6aab5e -ca1340ae5314abe946e1674ad4f3d56b677c226727ca8009229441c5ac10cfeb8ce580629393178d42da0 -7db214ac6596408353ada7b21f9e0d5d2388308042132d5cfac7940237d2acf9d4b873e0cf804c75412d7 -fb5736e2cf6461d40009ecdb76ed0ee23d59e08d2be29e5229888a3d102faa676ccfd2cf44ad1dafd7101 -98087fce312ccf89aaf93d6dbe1f32ee5f745d04018d0ba792281972b35ae99cf9ec3974a3ee233985cb9 -a065d8219b285f181de26a1f154c73871d9164fc068cf86b97ceedbc0f4ef534efa2ab1e8df7cd850173b -24b8e6b3b5e683cbc3f50e79a674e89d51ff0a82a15e0e9952fc5d9468c2301f2fb4f3245692eddf6c690 -6100640ab1d31acad8d834e55fdbcd7c82ab4334466ce761ee775fddb128a8308773346b73d7e472641b2 -c7335855d6548d3a1edba40eb98a982694b503bc43fa61c91db1f2e18fce5cf8068be156c31b66554137d -cab75b034f18d4933acd5ec95d6d97146d327eadc8afaf00c3917418e421e4151c18d771bd79a7d8b860a -1fa9315c8bd847306b07e307c69faeeb0679c12cf4761ee21d809c58c2fa3b729904bc6175f755bce0930 -ee2203591ff57e87b1ca577c1d7d75b5bf7f8d3215fd57af0f3d35a00c76f702c716ca2b9694ef185ee9d -2440cd28e2aa8e2e221c475c866699aa1ed7cc5c2c5e0d98bebab8bfd62aa33002c8ca3a58af1c3668c0b -fefcdea7388b9227d3155a06cf94b27ff93b5cf86331915c6c132fe1c092000b5e5f17d36193613ee70f1 -8f672ab6543a65ab653cd47d13fcc138ae485e41710bb96903a7902a40fd1270697eff8e304bdc5c4797e -46c8837b7f644ec9acb11e146706f3a1254928373dc7df81d973dcc6d6b0b0443527a34bc31f9b1af586f -a667107ab5577c881aaae1b4725d02233a335be4d419c892a31eb397b9965f59f1532853bf456ad132a40 -b3ea9d20b079ae07727f18918e5534b528ac5bc18f36a0880b7e29e0eac96456fd09e714ea63a8f79554d -9d38fe7033a143c01974e23d44e7e763f8dc193c018572afd4303b40af2bc2a91e6353264b6bd95e8f0a9 -f683eb1e6e9d1ccabceabe9ff569b4d1d658d81c268a6837ed27b675d1adb1f79878828769778bb92649e -a29010509ec07d9d8403a21acdbc0f6032645f02908314537b15c7814092f783adea56561b6de27f7a7e4 -a50f6014d6b3a7a4b56aef01a7fd3f90d829c77493b3505132a3afd275bb8d8debd2758cc3b574a78db81 -b5ab1794192090ba341ae33a905fc138e4bb189275babe75a9ac1c94a477a65f70811e62f904cdbaaec9d -d8d200571d98308986b748974d9dedfaecad9c6dcfb514aadb1a0dadc351ef2b752ea6e8f31859aff8531 -9be89de9b76107c4d1fe93e9063e9864559f477498922b1271fb4792c594c942dc7fe8de2c2423804cdb0 -985dfdc7a68ff2eaf3323e38d5ce269d790cc7fcbe124025e7613e80dbd8edd3cf7ca106bd8650e1531eb -2fccac7b1fa5e66f7a94ccca1ed903b1d87500be464280c326167689fd4e99eaa25fd10904afdb9888e94 -bf505483e26eb3fcaae078d9b4d8b47f0104cb572e12fd4854bd908939a6b714b1ef983f38de0408acddb -f560cc1beaf92b1c54f278b13d256011a915ea5ac7085134dd08d9b37ad08e6330891e0010b5809022b13 -9394127b90a25c0cb5e521cef81c9650d5e976c88dfce8bfc6024f28e8ec0b8a0dd1b6036994e89c5506e -75af1a43b033bd55f38f6e37830da7ffc265ae85566927a993c7ac49f7e31a5a2795f198757a6f850d76c -2d4770336a73f05709603f660ff24e938454ec9f32b7fd873ab645cab0a82f1b865f5e277723fbe1adeab -c17784be0fc90fe7d44fdc6aa5938a6da20045cec6acdca7a15d301ab52f289c6172c1ce4bd19a5d94886 -2413d2bd975534bc56dfecd733065d7db5df03a6dd807785b95c4acc763a2b570e1983633a446a3740e4a -a30e0e065d120560532f673b18f5bb33f9ca949a90850da679bf192c76b72b8a684cbbd17fe6740ef28d9 -9788c69391e5489dc52f950e6f2d3df79e835d84fa0bcb8d4e0015f4b7e8fc6889db37d2438f9e91c8539 -1d5785920ae05aeb391dd4a8875326b4b20aad9be2dc5b2127e3e5ab46158140026ed1ecef9ed9d2b1668 -60d0df8e0b59082f64318c075d08bb5d6d03170261510f8f8996ec8195a4ee7a017c8060da2072673fb62 -4f49fc542e5c605966a5eaa3cb26ad91721b101a21455c7b34823472cb11d05df5a767daf753e333c6141 -bce8d5d166cc6aa9b52c298ce0464cbda39d5983bdc3b57bdbb01215e225e275e03914cb1262d07a5086b -9ac24b337eae21b1277c6a4937a94c21c44759cb2d8ac5f8cac59caa25d103245c4b462bfe955c927f235 -1b086bc557baaf187a3fff06999a337b2a45d1cda8002feb0defe27e463050ba93a8474f4540fc22034ef -311a054fbe15f03643de443575808244134d5e9dbf7bd6cd939d592453ab3b7accf42cc797a276e63c581 -63ab521bd1bdad3566bd1b1e10248cf7eeb5757c1f7c8ca9f976f4721b3ff780e7edfe2f37f20116fa090 -5deb4fef0e5c5f2a303a865e6a0a6090afe237ba4b2c1437b569ec457d48c60dd5d878a93aafe3b3c626a -5368fedc33f32696fc88ca4a43b3646aad27a6241bdb5b1c273e57ddebaaa88449c54e63a1c8bc386c918 -3d7b71bb95b0629e8a8f86973726f16b266c6393e3192f812554e73574679cbf3a67b3bbf969e00c904c9 -89eb9c9fb19f3608810c72eb528253ac8606b1730b5ce4c3928a763da1399ea3ab531d3174a0a221f95de -ebc087b3b230734341b85c618f09865ab7c1dd66c74effa2b573de24b14f1385525873e15ab9d90f0c33d -fdcfa19de497675f5a3d9956bc2d66942325017e4132176922f08b478907f0a9e45ec64b23353db1d44e8 -bb7f4060251afeb9e80dceab454eae609a3f5def899a2a42e4e7b62e7d6ae0735072d268bf7de73573070 -c03546f57214a1e4ea1035bacba81c14147db07e0675ef87b88c14dd64f23c7e9b45d4dc68ac48e294221 -af0b0d7b747373b03b7b922620e91ca810a13de10b02d13e139f68204d7ce0a2f8db69335b22b15e0bda4 -9545435cc769e30273ee40d6d54a45256186ff348a52c0c82c8829fbf79d4e3edcc3f42c08b026b98dba9 -e985d7597e085a767c3234182a0be06cd0435e40a5af588993f82c34e7651ea17ebee8f7035f29a378964 -0913d812130e76460ec368c9a9a9607e0ecb66866311044b7f950dac488cd4479baa9a0b728f4c2925f04 -e7bba448e8913b71178026789b3bf48713f619159a8c4c8347d5ea75e795e66c6662a24c4cd1325ba3bec -b127848779badddd62fa895df040135b2983c6c529e2bc097bc4c6c144853940903cecd3e0c8695f14d65 -08a88c135a332b8def181bb0665d76cb6905cc7b87b2ca298cedc035d716be906a18da568351d3631a46c -42beb6925cbec36e3877b42fe660c45983a26230654b1a00e464576ecc4e9e98e3183915bc0bec1d724b6 -4a7de15520e7f82bec8355d38878b3b2f80b731af2029a0f38c310c75a69b53af4f856c46f9772f028356 -9dfb581e2caf1595414f3f0d74aa609483c1b +06020000018772bd56dd58d64023e1745f7c253a49b32dd6a02bc32347195b6763bfcc23c9e0beb0c5809e06a5628629f28c4048530a5cd +df6f48391ea0c2cb5a7ffe93ef04c8b4dad584117e65aac085c25062a0f12a8ee432c7ecbb6613c28b743e4a75e382afc6b8037e342d466 +7b66a73691edc6b25698c15e78d9d67f7cc56274e99e6b7bb5fba32dd42d74dfa672f414c4a29302b30a202d00a2571d2a884169e82106c +3dce195eb81b62aa7d29481d5d4d5318d8dd2901594752092cdbcd3b5f9f73eac99efb57012305e8aa06e0fced2b0a92150b261c3cb86b4 +32db0b6aa7ee398c2cb094de1393e063094dae769acb692cda9c6a6393db82db00b6d8b5b58787529a8e1667e1641498f63621b81f583a7 +614edbb40cf5f2ecd2514799dc6a267109a1773dfaf6e75ddeccd6dcc600b9b8697683ab391a5ae00f498b2742cc124d56dd06fab1d3609 +3733730e57436a742ab022bc1079cd5a182c665ce7fb84bd33531ff22387da107af7cb0a8eae6340b5b0a9902aa4bb5c67af09d45cf79bf +9fd210be476b3540c8c98de9e9c9c0aa57bf3286806e7cfeef2d2768a60ce06abe57105f054814af2c58d707216cb0a3d57265833103a0c +5476fbfac1e6232854049353f6212a2dd4a86a5afb4d9cceb4d497cc1e1a60b7a29114cd3173d0e53ddb7ff75d6307f3472d0979f275704 +43114624902608334c95711d1b98f9f9e1f5100e9633c7edb1821930455c8af061e826d218320bd2fad3452e1fc99d04fbcb4ef0af13cd9 +31f507db95608979d44345b34e5d18d1306e6eb4a8e5a6e1d8f5b729ee01ed9fb7b9f8a13fee9098c2302807c7069f7dab0607ad34e7df8 +f329dff61d6b0b6579c05d8306b604e1a99d1d4cdb2acc39d46960fdee90a47e77b01f057d60979aac5d5497785acfce5a3f1e6a96f06ad +099f57a729a7e2e7820f657a823f1b7688bb104f9b5297a543ee2d326a13bc8243df4ffeee7156005d648b189169875b8e4197eef5fd832 +a20755a03c12a936565896f457dc4a1c90e333e383b233d9a8f8cf0f70c12d779a6095ea92fc6ba9040a6a68edfe9aaa76436a5a3c55bab +afa391934fc4847b0ba17b94dac8f8bcf0587e1a74dd654a78f60fcd5bfc151ca10fdbfc1c7ca26c954380a9406fbd3aececb69b6ed5905 +aba3436bd331da878aef62963fe9d3fa481f79719886b201581ebf2cb05742779f18f6375401fd9a24d018f5f7692e78c9066ff26a9dec1 +395ae3f7b4359eccf34ff3d91ad7014560e40365815e4846599ea50d15bf3fde561907f1dfc58505f1eafbb86d6a1f1eb354b3857c50ab1 +8dcacffea97e5421a5504c05a48dbbe5933aefdf525529bb0a74677778cc6c9eabe0847daa1151902280a6d0ebf266ffcf24294c03f72af +4409541f6ab76f59e9083b3c87064c0ee59279542bc04b210c3d7f484b8fe32403c8bcb7306777d1a79461068d96662d76babe39bc1059c +ae30152d8c65765b96dac42006b0443722b700009941942738e1092559400b9aad99dabb58dde270e7117bc0962fe0c4bdc4948dc2c54cc +e4d0160332120e7edc5f03862aa271bb249200a38ff5afd4cc10e146e8127eea60a21dec67276c29eb51b20ac316378c2d8318cc118d5f2 +7853292c65ee1f344447e327651b336a434a62eea2c69929ec0b78411cc1a26934128875155cfd8478ef11fcc987d6323a5574905f14452 +107c2ade173c166e981de0aa3f7ed0ce55fdf0bcafa48381b216244225b4f45200cd107e923545cbff5a608bc78f77c9cb56af94ea69294 +40237583d5567c3ea45cf788d248c64726db1b0e6278c4aac4d5b4972196b149379834b4fb7d5635b93102ed8bf7a1715c8a5fb1b9b1e06 +128c9224157cb99ee1caa6183dc85e4eb12df7a021db9b47607e3bdccdc04c7276fee38c90569d2e429ee3434e950dba0f95c48131eaddb +b578659fdff548c5e87a63cbc1bd7d3804f6ec9d23eea0c4bd6339c7d8e02f87a4cd0666ddeb45735d28c196b056eb43e6a21b4caede9e6 +bd05ef701d843a1302ef666b6051f7c995cb145f93a98a14af719ca9c2a47ad0ad04bad312b7fa09fccfaec2806f0be71783cf2f2c8a609 +daa40a00a03b8c826d178631084df666f599080e401461676003e9ccbdfcc461074bb7f18c2638715641606bb670d99a95862522317b4e7 +bc29dae5af1686fb927a02589bd7376f6c03bbc5d865eaf7bf2eeb89cdd91e3f36ebd4200ead2f2676dcf13917fc6b0b4b7716efcb8936c +a66fc1e971316f20f8dff4f9de2fd5f0e582049e20db3eb041aac0278a5a2d011a7626079338aa2c29ba36cbe75c663c805407e80c334b1 +c13ff0a23287738974a9ebe2ae57d3279009bd562949e8975bd24c441839758a18b57c8d3cad25d7d97445ee3d5353717a881e095565a85 +a4c54bd38db42403602377b64ad1383fdc55b5782142b79eefde654a7d1a265a046a6eccdd423305cd8b9b31dcac2286228f5df16193317 +6af14836938ce0f060b2d994c40ac956f4cb69f0e0f2b30b92bc4ec1e57361b07179561cbdc9d6170d08efc70acd36330d2df87a6c4f85e +2157fd0d9a5fa7b075d13833784d02089abae613ae301b9881dd32ee7fb55477591fa05b1abcae5bc12c445ea1b4bac596d28234879c13f +9dde60b3e6e07abc117dc517b1ef1bf89b33d2d37d37e0381f47f7062ef3d64ef1e0c24ba931f0d00059a144e09e90b15ea6dc90eaf63fe +d5881afcfc950c18ee33d55d863b56b1ac015a81372183e63e797a27c0c3368034120834987391db4706cf3df4b4294ccadb8f89beef332 +a0a5c69887a141e0e84f286e96a942e0a97e3c99fa869879af94cc0efe1daceeecd3ef68a32c648f5605b0edb68c4ad926e556ef0620b09 +6d0871214eabac748e1496f63c55c565ff5892b83211ec21f03062613760768f15d4f1b18cf871f7bfff34be4c037c055fd2b4cb1eebbf6 +2bba0c3cc2756edbb705e809f1ec3376a69e92b87402029c146ca0728b0e9e964b7557831210d1a0eb7ac238ea5e450753b347b8eac961c +ffd7f53a37d1bf2787750a8dd744cd33e66116f5c3ab5ad715306d7fbbc967463a4c85092fe07460c26b434112f3535064d7406ebdbba49 +19149eec2eb6628c59c1432b325b79cd8c8b227bdd1a9d364b6e2195a772d0231efd85029a893278a8ee140706e03508fe60ac2b84935c7 +753a72dcfb19968c8a597e086f43666945132e0128ff50ecd80e17528975a3b5cd3f401d14645a3b96cf78266d77e686a78578eed858d5e +a71e0db79978815804065ab1b02afd025ff0a0050618b79952be1f72bd404ab46be600f5da3a9e7f21e8960b833686762913979c26c3ddb +47e5aa32a182681b94612f03dc5842937cc2c417d5b9a5d663255fac6e5a8fc4a7daeaf65f8f5a2cb58b8b72df04772add3ece18d65f193 +baf8e7d63cf938df5b7bbff273c5fb77bea7a09bc93f908bf774b15ec6647089821a05e4b0784fef1c07fd8eafbc10467298521b7429e14 +aefa16fb6cf9385d63d919da2cb4fbe91c369f1e64eeb64857e0412354c8bb62de804d842fa0264c2dee3dda5d6ee26742ea0a7cda41b55 +ae19c95d633259fd3e758c7c8a45c370852d7cb8d0513abe1a1887e9dde40562817f46f55186bad6664679c71bf09ad55295dbe2fd72d0e +2f4f48f719077ac06f52ac37765e63ece56a298116c4dbb315dcc04dfdb0e92f183bea0ecc7256818d8cf4939e6bd64816d8062404825cc +0df90210f00f2a8fc19e9ef9f032eb20df619c6c8363d803869bd747b4ff41361392bed560e32872851b7df36cd4cb2658bfa1883947f83 +6d347333f5b77b394b1290b13b76cea0cc337f9d5ab21ec91eeac1dea65216b90442bf88158ab40c8b488c5e8342fce21489ef36c5b3928 +30f95b8fe6fb0ee3a095abfe8f31a159b0ab8c3b48cc163c996dd75002b3b742289e28afb0854212bd84dc5509a40a2766c10027192f6db +7053b2f460b609b857db7710e3457906496203e53c4bc3b39407e39bfe06015d6d460873a2f1e05c46d2f673086edf2e7b4f5c4982334e0 +eae3eaf78f80d5967a5266a7c5d2ebb9c04baffd56ef426f7bd4dc91b6f1e1c273e00f2d261e86ca919ca1f48b86a7a84e9612096a2457a +6ab1206245729e76676d99d7facd57b9277dcd4b70f0e6826dcbb8747b63f5d5c04158433a70a441875328719123e27da511521056fd7a8 +90a9947f177bb13edce7ed55376f2bf13fa8cf09b27a43ccbe071dcc97c385db7e44a4b15de14ca0012e6c3a8e41306a4b6fb58adec7089 +9cc19138d7fdcf8db684459f6f5a24f7415872da5b8f01c80a75a8b1708ccafc2efc224250b462647849caae820c37ef69fadb4134c002a +a9365a4df9bab1ee34b2fae1ef4fa6ed1562ec0a7784cfbc3ff129c7ab02fd316f2268a5caac67ed371aa2d9f8f63185e87f9db5ee427b5 +6078b27eed7a36f48351729f7008a13f29e9ebf5bcaf815563ce76add94a547d96e638621afc743465b49c0091750b2e518ca398b77bc6b +b44d6d0b95019fef04fb2b0c61f9b85a353a15e54452d9307513e40cad6d22295a32dac6a44fd3e5149fc791c50a6403aa5d7f649ae8577 +057cef9eed7cd2889cbcfca443c740575bfe39ad245e61214c67dbf6f3af05ef65aba392955f613702d6eacd7421797a5f87af8812b55bd +7305ff01075ac14d9ffc9ceafd445a875685642470113307c93446dbfee27db08dcc7f822d32bdbe46949eba44b900ac6b72f7dc961d2af +fca0c6b73bdc099183a7124652227fa06629f35dda82f6e6c248f554c3abb4822f5c55c9aa492c527de24783e26a14416b4120dd27aface +9cb3c516a1fc2c0c48006c789129e6459e276a7f54df3a4812b788b275e541d946f48ccf04ae7190b0f10bc403ae6a3c58b1ec4da885d5a +4e6af7df1d0020814bd095b499bf34acae57a2882bc1ea932730d93c82545e0708ec67e46544034171420ebdd36c44db41b96dcfe5f13e2 +52fdb347b6c1257c7af8b2416ba25ab09bfe6f606a1cb4e8a7c5179e9b11c10595e16e378bfaa8647cb29c76d9947c4f38db6f8d28d5e98 +189219724430256233350cf66972f4ee96b79f9e76f7f892f552e87a747f8df4bbbfd76498e23dba7ac2bd122130d9fb0642327c0feed93 +b3dad9f9f6c6175ab6bfd80936906c061899b8e7f6cdcfec0d6f6ad5d8e9dc0c325b471d5714bbb21600f38642076aeac17ff86e29349ff +7e653ee4abf8a2b314d7799ae6f7773f6e0566c7f9f600f9ac173641862c16815e8175c4f46182706b4a72ee3f68fba749f4ba84397dcfc +36221e6cf77e5e381897b2a5723d10d603d24bcc734ba7725d4425bd09066a7e18e41e53375abd8e0f6fa5335ffeb93cf805c1cda2daa9b +e119f64800f310ad1f2bebe1f6e5e3730417fb3804218a4535b7add147a3deded57036251b2b03d83c297fb0c3341d48e512616c61b5bd3 +a63faa55a624acec36ef1e377bef570663e69b7d908df6450a1506e8033d9d8033fca549213c2935acacffdbf16af79a829d5d0b28ef473 +96515eb7b0fcf574e63d89c021f24040713f78a38b38b4e8f3491b517a6fa0a4068c185dbbe7d1e9c52c0e8f0bb7ecbc912ea3cebcdb080 +02460c402fcfcb4ccb0ed77f7ccbac010467b885f04a0e9646388b9b8a0961416b096af9644edb9aa120dad144cec504c139d6063e0ab40 +95c3008a3d46bc4a89bed935920e6091380d1e24821629534d46a3a834481107d6565729531955dd13cb299a7f83d43cb79340a772a7428 +09abe7b2ee4ded9ed9c6c316932f0c7af782416f6ff5034d52cb9d5b9e30ac80cf88ea4b2edbfbea4d717594633acefa19be4fd84ae9c64 +1c0c404458144b88b76c2480bcd47da397a7acd60121ea30793f56a2dde1b76b50fb3b2bd7cd917b41fcdf75a3886c5c5f1f9fc5abb51a6 +dfa95091b4c8b30a0e7a09e5f6f64330b3e2cac2e5cdfd89376a1e46c2dc6a14ff726f76d610a8c42b714ab1ee7e5323b0632f4389e3ddb +1ea48a203aff0aee98388c7313fdd84ec448d1480ef9538fbcdbf407ae7bbc4078ba490015bd804f8feef8e417be8d61e239a79f237a448 +a2bb70c1e70e8682c9d031cea28d16b12a190a88624148a9356ac5f5b85db0c709606eb5e65e334f5c320a667bc2fc5b134096ca1a74c71 +e5ecb1b3a94238d7fa4154af8f467f91c5fa79c97944c85b6cd5956e0f346d08d443cbc4497290c40275a4a90707615e75ae90fad773d6e +5a6b1fd2827614155a8538871936647a5ddddaec8c720f27d7355128ef46d2712f019af6e19b4859441bc8b11a729559b9a13afebd93435 +777d18fb01fd98923d4e433c0966e13c72c90a0becf585b6a1ac00f6b8984baf86cf3395425d3c3dd302067945789160d94009e5e9a1367 +b75e9cd719d3bfa0474f1179e0ca6f4b5df714520bc4528fab43aaca37862e83bcca4a91ce51958e6b75edb3221a879f382c06ac195e694 +c867c2b91c6b680598ce9d284522dab5e24d530859993230aba0c7f7509f6bb5ba8033d04bb808cbdae641a974d6d6e4756ce822b8115a7 +c0cbbd394412a143c4886237ebba6399d5445954d99c27f3b956b31b0e5da3366cefeed07200287e083feb46980868b93c951e182378c66 +0987bb3fc4857dcbaf20129ad7cb50459647464af9403bda41033a0fffc48240542d966897231c2483247c928644ccc7f5b3b83f5812b90 +9a61d07abbef1cfcafde5e778cceb5181b65a94d4e8a47a2e7f64002c02edbeb6b9b2c2c764121b755d5b28a33a465fbf99339632ef29b5 +124147d9577d354b468926174edfabbc9ae2c994582f63ea179ca92ec49a88a02678846ee1e929993fe24c2c182dd8478726b9a0333074f +5f969cc0786f9d08658cdd1c86c165c4caa7d71abc35a7518d022a06a8593fc70728ad3ce86b3791c7b6f708ef67801f65acbdcddfe4097 +c3bc556ac769eba132ed39b7ff1d1b8973dba0aa07d38d613eea23583251d8dd643040d1e23e85d80a7881777229a8b667c9b885ccb36b2 +107e1bea2527852a5c6c8e9b0ec08e6418e204b135ee499430030d7dc292416e8a4db0051ffd4abc2afb3407da84853cd3b6c03e9e6e8fe +cafc8b6cf086852ac0325cd30bbcc0a1e6ed76ba11678ecfead8b328e8e7a4b6ab11ea9849c4a797c1505e0d6927f0d490e2a6f23ad8ca7 +c39bc70c47bd69520fbc0f4cafe6ce2841ff145ca372582b3d4b5b65022d268b50b22331acc749322b6d95a341d0de2a19d45029114ed82 +999d71db0af22730ef4088b3ee49105a72d826276fabcf54a6f22c2e2f8d7e64a1a6f472eb00926503b456f20e503904cb17bfb2a5333eb +b94068dcc9a43717ae994d19c9159a3c913565d0570ce6a4f06aba86cd7a73658da93ba16181a4c3723bd9f013e7f87b7b939ab144a7832 +91669b2264b5cdfe9aa350f37539f63a43a88620c40d6855c6868c5574072d99f05bdcdb77c5ec08894da6fd2d97ebecebaaacd67ecd426 +c262320ae2d6ab5bfe16f419fcd9fc4cace7cf2d6d929eacf96532b47cdc9c033085d820f051fe4bda9617afd2f7de60c6ead253815d50e +e3d990f84676ed77e35e1afeebd575bb265c4425bae8338b5d8b487a546e2931706f17872a452d41bbe27488cc8cc9bbf0ec9b925398128 +732f1e0ebd23478990bdb318a4aa4cfcb48e2bc8b80ea9d1f2e66b50beb048b4df661e75348d348229798426b2ab9a74e5e748e1e6b1e15 +ce3d9a94cb9672e00b3221d2009a096b4aef8e665b239486a5e6129a679b274ffc15de7def66417265356c69e258874698356c7f623a8cd +c3fb390b75cd06dcaf085198020d7c1fb10be60fadb58268a6be902069dea0a0508434f5b6a8b4ea39dabb51957095af0e12e9a354d4448 +c1000408f74ec7fd2e62cb00e2f5869ddc5cc9bc8a7ab717eb28ea1784692fede6ca9387497632c27bea3317623d17447d8632503014460 +4754e471643d39c649a33933286d970efdc4fab1706498e675ac2e9d8656fed087151d9b9169bc1a90b7c95d7c736dd6f497ed15bacbfe0 +9ea3680060a9ce4c6ddf834c9dab4896c371624390b8d7f08be51052eecb66dc1dab15fc6755f6e05d3ffef0d5adb01679cd7d9b0e22b1a +af62191ac6e569520325f8dbef37739ebc8150e5246ad7e38774731ce1f0f2e64c00b7a2b7a331a4576e364f6db0596bc1b31e6c4a061c4 +8e85f18b00e256cbbe136637eaf5d56b523212875cb3d74f74ea54a213a5e10098a1973adbdd34d66003b31d685d0d0218e648ae33b8c76 +c8ee454adc9d9589d4ef6ebe551fc3fb266225d9ca33dd11fabc977a43f0f9900f5ba841fcd4370f64f11ef5c42c041c9a4cd7d6153172b +3b9b3939057d115a577bb686278df0f5dc95df07aafd7da89789606534df4a7a37271b901309ee5e4fe79d2f87627fc73ce9e1965a13d27 +579e8c6bd91f7e8019cfcbe40a2e7797453734442010a9afbaef3a3545641b6fba07385faf45b84402d166f7dd36f2be06473ff2eaeb873 +c4e96ca9dec80ef2398970c643ab70d1f4e89db432128bce7547ea3b3a6c4d26c2e11e460c1d44880f799630e3b9db9e7ffae65deec50c2 +8f7e2d9d8b2b810e3c4d8673c4f21db9af66cd69833b697e907b6c885ee9bace76ffb265694f3ff011ee3b8f60e19727e33ff30177367df +880c6ae2b5c35d4fc60eaa93864e2003c018cfbda08189e42f7831774c00a192abeb81fe921d66be0ac3db3814fb44770d6b10e475758b7 +730a50c8f1b34b359c3828e0ac4adc39d6a2a21912b3e96f0e43e16bae7cd553d8a2ffc95e9421aeb75a274250b5856304179dda05de11e +9825e1bc54942b312269a7f944e3384bbc09657241c0c785358c145b5da2c249c9f51fa5e7f0eeb148bd567ad514675b64f73199627af2f +1bf7ecf45129987442b71f818ea760530553102dafede00f4b5218c83b7d4ac0f535b98bd76b084f271aefd510f093bc5b1fa49dab3b747 +3d2d1aaa5a87dc1de18b9f04f8efc8e825b02e0b02870b5e957889e91f65d8d17a40c85ed30f4e256b248cda865b687d3886a5ac7f3c7f4 +05bad5366a6f7ae635614df3cb20d1941574aa7033a8313cdaa4029112d670e71377092e70acc38e368f1616596c0220ca96c402f0b0c0d +ccd5b01dbe26e9ea41aad811b0d28e3aa02b45d72e7fa43e690708ba9503a1af4e1b6bf29951571f384f922737d7b9dadcd3da40550ac5c +ad2424da37382b7cef2529dde9340ae9fa26d5c9ed2c4c43c0f44d20b481f40515a9f8afacb83041528564a105024b49708ed701f23c900 +8e444362bd2707f16c60096ab912a440658446b19f391a1a700bc1d2fa04716ab2db2e80e9cd41b604cd686f56ddb820236cfc08db0755b +4f123693bf0912d0bd79c399b2d303d75ab5de2d776ab363442554658ff105245dfae18677379f28d6053aa166f3785a47f386299f57ff9 +4017e5136d6fd711ff5db82d20def1835798b1a533a43c21451e15ce063b0baeb29e2e7279d818ff6e8c339cd7daa24537b5aba6b764c4a +0dc826681d370cba556b9c0436d5bd8f4d5815cb4c29ac91391e1c35dc138445eb75072704ccc0bd5653dd4f02077e7f8743385d8f3cb68 +989813943946c1a8d3745931473edb9bf06c45985de74fc33120d7eb641b6ad7171e4e92a66f996a52eff9cf7a76ef7f799cc30123372d4 +3dbf46fdd64b3f69e402a210e4be1369f5fcccf8a207e50a47713995864d47a710d050d3bd664c2a8966ebe311eb604727f79380127d883 +69ef5610867f586f5061f481f3743d6a2c9cad173ad8c1013fc136f24b36604df60aa264d7bebe5c798c1c1628f597fa2c9dcb6b37d816e +c3f543aa910ffcf20460f927ede990e0964f9d81bb13ca8bc4bc092aa24bb0458a34dcdacb625fbf4d03ecea9fac1e3f61be208d540726b +1794ab2e689fe99530e18e61359d87e1ef25534585088b5b05d7d6a776c2b3d1a5853e22c8c118489a72dbea10f24b7cc70ee7476f80aec +62f2760b99c9d83186cd863007c0b4c52a93dea6aaf76bfea9f8994890dd1e45b26bc3826fd069d2747f7adbfdb7b666cd940c917c8e52a +bd5a793e625ad28340323fa8ab8a7437797e947a77d7dcf5ee5a7cfb939de9b3b867ebd162ba16aa2dabba95ae7ee4c2f9570e558fd7796 +297ccff9896145fba3fc83e68b75fa56dcc5d793e1e3400487fba3617a591bce456e11b9e9435a2c321ff93ebbf889eccc02a415f78335e +462a4e91b7d8a2319a0e3dc3fa2e513ef7694844bb26bf576db382d98109fcc233a806aa080fc660f90523c3924b6cd5a35133d3925aaa0 +97fd2c06a5cb1a3309e81bae2dd52cb14d6a2d14af77cceeba07cc31a839b0c5d821f8ed1fb8cb3b308b86cffc72632d126c66ba473831a +2cbc6cfca70c111e3f4651a74eb9902e153de26a3aa426963ab630e47350f1c307a56da061ffec19e2b77a4b4338b11d9d6381c69c70682 +091bf075897d812ad71e30f1b6512ff48113ab54be22e3466c68740df7c6cfdd1b2115d416d55a379d9b665086203e84701fcb428ce41b9 +5b15caa4ff3d847c0ac4ee2f279bf7182d4943eb19e9d395d9b5e4d169b862b4fba45a82e3336a3c7af85feecde8fbda1ed5c829112207a +d7d77b451629ad188167ad09a1d9c4241002a451ac2804bffa6b833a19e62a3cec35b9f03bb4f850697ee86e75f9b5692da99503415820a +3297272189d4665df347bd3795a86c27739c6b03ac2de394e246a5f34cfe736b36457d14dcfd86f7a11c8b6739b6fb4e0f50c1a560ce621 +9b073e2adbe80e47e20e54e52b72e2c2be7121285ccdb3426e1c092ca855035904d8ab66de6b3360ecac584ad910ef660d8d653ada772e6 +2eb44d21868b3fe389868ce479044148aa3f81fd8f9c1d71ecedffcb6bb346ffcafcbe716af8928890b6832d29fe264353d7e8f53cf89ac +8a2c4dd9413ac460cf7500484edd1f939fadc85a59429a76f937e783e80696927bda906d00aa2ffef68799aac2b7164dc2e3c96ad2fe20a +d404255e4effd5e59ed9011b231e6f744b5c4e63d878356fc087e306ab5cc6772a582fe24e1b927b00b6f416187cc1b126286a3bbc4f5a4 +33fca109725b2a9aa7f9b285dcb3ebc64e8dda311547c67eb029de40cf5168beabd1d17593056622a1e2c918add4987bc889debb5d1aa5c +91b5710511171de5d2de00658cc19605ed201a31c753d80b99b79c9a9f63bcabd9cd5e55ef5dcea3b733d696b24e3fa0bf0384b9d4a383b +7e39cb90bb9454595a31ea3958f0a43300d962e46796714bfe87ad58ff5de5b892e04ec0a8f32a739a8dc78f0b36dc17fc5fc7ee965c269 +427292ffaff8e866094ebc62af4c37655467a1fee3b69b440817fee17f43af0b240b1d9d9539a5f529a571b6ec7043f408c7c752ea77014 +bbbd95ff72c837d03761ab85239a48e39a8b1a4cd28a46c147fbc99cd5bfe105e8e5da35c2059930fe805d24845fbf21e2ac1fe3d5ecaf3 +5b77a77d88bdbd2ec5e782d17228dc396a4a123cb0f6db56ba62618f8df73781f65e356031f91f31a5b94095394635b03dd3dc56b07e643 +5c4ca2ed4b586a24a340ebb362071198cccbf4b902292db7708655578d3d1c5354a8610215d88480db926537ae1687d6156280b47c332b7 +8c0f6d68008d48cfa2dbf8914914b01d69e3b6ffd5a6b22a2cdcaab2ae214dc58a39f15c857d53510c1889e4fe6ddb7d0fd30a7518dc6d6 +c3ba2dd28864f405ba135571ea57e822ca5a2557c225e787b7033d41035dd6da69342e250c607c2bd0d4c7766a2f20bc71a8ab11e0897d9 +99a8333e61cc86920a449ecfd50102c07d61eddd82fcdb5c57195c3e27f7fbd33fd901ca86e26f94ffc8bc8375449c3f3ecfba05f2041b8 +a8f15ce898c4a66411a2a1e3ff7b5030f2a1214799d28b8dc9847da701d025766cbae248a355b60992d6961ab01fa2154b72763b24303df +a21d5f12b985c9211b0ef563f24789e497cd63ae77529bd62516b8fbfd263594ab16c7b8f7facc9f53c96afdb9637e9bd0eba01ea810e7d +2ec5e71f2911e5b25a85ec897bb249b4228dafe2246b459bb3b1ba82d4cd05deed5bb63b2cde0dd8132857da4048e53b8556bb91c6ed154 +15894d02ee47b20d0fdc678b8864f00e692061003e7ff75120d9356c8f7ead19c664c353df64ef3be5d93e06f2dc12708163e153daac384 +f4f917b6250352bff8533ef043e1d73c0ffaf4883f92795233f23cdab41ecb3f33a8a9433e464b084e17764d91dd4bc83bce1ffff994122 +86bcbd43e50082c913bd2911f455214ca86e18ea8694ba7936ee3d52713493f730c3af7581db3df5635fbab0edb0b349e4577e8ba39fea3 +82314ebbb02ac17c9b1633f6660e2c421193a46ba8c5df9726634be7072896fe35e8d17c8dffd892b6173725fcd4f87e63b9efa571f5c67 +f4b8c46bd8b310fa8a4341d67b6aadca391c9dfff5c8ca69e539149da6feb232cc75d7b74d6fec0c584e7308f6d1674f83b3b1460d3eb60 +89adb3d7e2644ebbd8c04b8b6b8a8e511b707c6e0bc0ccdffff3039fede5309eef44b1be5d5729a1f39d250e6969e9e5f53811996b77cdd +e372ec31cb86046195a704bc50c8293d778d20d783dd18e4354c2d196f3ac5cd4286e09f67e47a4e8f6027d558784267692fd8912c51593 +af17397cc41a203177611e4994d1c20a4fa5d4918ee47f88c700d52862c246dfef25bb728ca52d20256c16ae30cb48da14a584aa5a68f4f +fcad4e9b30f306698bb1e39c1a1cd04639a25d81f6e2f9cc42dae50e2dc56e2963a12e3e9de0fb15371e689767f83561b5310d732fee963 +4234575a14be0a1cd246a7bb311b129050a9f7159518571e5d718f4559fab261f5bff901ae5f26cea861dbe237de9a4f4a2b77d0b9939d1 +24a5fbe1b0ac293644fd52d546d93e7d48d493688c798d829d03bd27104a05733449a426b779e2a69c5d7d352bb71f53f7f01c149ee006f +54e9d5f83bba2469d32da710b4557a20622e9196958b8e4d05a86a23c9899544ae63a51b51853bfb1bba2ef68cdea75c26a5cb0fd960851 +c5e98fee2004db3a16d72ce9162b980d73b716097d7bdf31a84cd95530fa32dae0575325c32d8debfccfe15a8b6b4e20699e8eea861b9e0 +304da2a5adbe11e7dcdbc14d85254859a61008c0a5bd30e4947376c1f785256186362885b06341f88c449b9d01ed813e8d14e6eec21a6af +c7e184980cddd38e1de762cf926edb8c9a7303b138094ecfda7c69a32c2f545c13c71a153a75d1cd910d28c85ba3f55cb8ed5f18325f40a +fdacc38046a0f5fc2d6a2148c3c8e745931903799f8c8cd6d0bbecd0532de6a7ee02ed33cbd62f454d323def4fcda5fa26e40ffb475f648 +a82d404e713a595f76305dde2f767dd523880c2eb262bb3bbaaf246c867f9be3254f1a551badc2614a798680de0194c80778412db8b23f1 +ec5311c448964e3de8e73b4394484fcb947b6bea3e7bf450503693eb4ebf3ec9a98fb2e6b75eeeb31aac5aa3d76d673f118f0027fdb7f32 +a5b443ddca9f9b51734975e76754f6920688e0fbc57053c35a422ba6dc1c4957381fd7a869cb1e4530f8ce2b3bfd03683f7c4203f62e87f +60b42640d292f0525bd7ba6855a05a601b9c035a0411e6ce4bc151a69649fb205445cec3ab72baafe8cc7e352171f3b09ad39d2e9d01fdf +165a820b9bc855d6ed662760be3cefd10e4f759159c6585620009392760b52fe338df1ee124b841be30807513a86e43eccf43e6093e2377 +2d7ffba037de8137ecb787ccdb4ef5cd77982ba2068d106078625450e6699dc816b787a4a2d928001d45971fd541fcdae5d5b149003bc14 +c765fc0af7610e4546a2fb2448cabfcdedffaade35f37555d2e81ddeedd1aeffaf6406b4210afb99262a7013a3e906ce1fa108ab9c1112c +29767c04c7f75b085d5557954012076911f26a9d534a81fbdb42d8f91aa4eff22d650b0c7ec622c7d747656a71abf7a2b344ecb455a6295 +8f2d81065b624785bd53b35d4bf5968110149ecf44badcc730c803cec835c27879ab7d4d2e7857bb48f81411eeed56414d37e957c1fe7a9 +697837d7f68338dd4e7eb89c4cfe2e68043707a9b8fc9684ba11022f4d25589cccc8e0a57405a05677ec19197a57fee305351f32b3430b9 +a6c3456c4ee3e20d71e212a67d2a8c8c90b545e02659882bf76f3afd2b7a06bc6f704bb6c13ab51a1a15cc10c7803f659cd793e14fff373 +6183f441c8d572cc507d3a4aa4a484d3adf6d0e6321f67b1210441beb5402a711976a84d99244d03014fcc78e738b7fb2a25168dc88c3be +8cd809778b5ea8cf583e30868d54de93a5c4f7d77ce1c74152bb026038b6731f51ae7336e96acf73667c948c6cee32894821936bd329f0d +82c2b529e816e3cfd3dae745a69afdeaf24b1c3ee79cfc119c896472b6caf6582ba68db0062ffe0b01820b88856174242c44101b23f906f +c03be1c3db3b3cde1bf6eaaad8b02fac4cb477e93012d73d4cb318a77681a066d9dabc4aaf1d68c9aa96f613f9b1b8963880c7af3724df0 +8ffcdb717d7fbede993e73b90b0684b05f82c8d79b6bbece07439c75ca3bc5cb523e93522950285c53087e5045294c89358de4b2b9de18e +b21486ad4acc5a1d1e5908175a1308ffc9e020c03b589a95ed6a66b7b3910ceaf367e368cb25c293112f45d04f489f5687f3a9876cc8063 +1bda2c902f94fea1c465043e699ab7a99b8d03dbf23bd5eb8f6132c74465ff34ff070cf10b99e72909d8a0367bdeabf9867562ddf4392ae +a4fe1971b6bca3e1631d27b8b1ee3f50dd9f6f7722f34e1f1abb9574746b138826f100523b68c151e4037754317e63d93cf061de2d314fb +abe5aa19b5dc1347a8e2415099f0e7e3e242abe53c020ab02fab99e3ba821dc13edf9f3aece0a024a46d9157c2884e51884b9eef2fdd612 +22f35f5c8d7ce3ea06dec31b9353826c0c6fce497670f644439072dfb59de45889ac5f410a385c0ce193b376d61777ba85f56cc0df5e088 +898a2811ea2f52046f4e971f472511c8510b5340d9fe76e5d14fc897b9cd9e67d7063e400688c26758deeba47fd9bdf844839527ede9c36 +3ba1b47e98506475833e6bedb5f6b7a5eaef6b815452d605e7f1b7d0b9c06d0285d86ea00e95609d11f4aebe41ed5fd19cbd555bcf43a8c +24a9cd747d532c409ed611415885f743c0b70e737e25d44c1f0ecbde8b346c21e4c4872bf4bf73ab6da3523958c0c611f4a0eace22e5243 +1ac0977ce345aedfa88cc2ae1a403f77b4256aaefc650eb4f749e37777d81897c7dd01bf405018d7b706b88764d2ef6f99964e9bfab029c +0cee623b94fe06eefdceaf927f22e532e004cf1c2b82d9b66d50fb123931d1e01b9412d8599f4b8b9d91f371accc4c2374afc9b8a2dbe81 +3473be99905565bb52784e79dc13ed78edaeb8bd4d8e27a824327c4a07d93967d18be2066e045abcc581948807e78a6ed447e7b1aeb79eb +1cbaf15c82469bd10c876cc19e74b29dd1922fba4d74f2fef987c5cea3c016fbb6e5ef289a4d7bd146476af6f88d8c9220b2212f4481d53 +f3df0f40596ab6550ecad9ec7be3481613ae385d078d074d432da1a440b62f3fe60c46aa3947b22344bf648db6a545110352bf255cdd7fe +d7ee0b70b01630792e6fa50fe146152a5bb4502f08c8f3bbbf16d5ecece1d66c04f553b84700839138304f42eed49e2cb3179bbc4542a43 +9d3079a917d93103eb74479463e6741d8ac184da156821dd81ae5819950feda921b5a018898fa6574fa4f59e825062f68d6c0989ddc4119 +6ebbdaea7908cdac7aa12881951f1c945e9f5dddfbf6c7223b494272836f4089250fdbe42cfe216c7d70188c3db8a7351ef579167123a3a +461f9bad886e6dc7694b64a754dd091cc8777a74442f282ad59c1690f24ae20880ab2cebe1bdca36fd24a02b04052b32c94f056cf819555 +36b1e6b6422ddfeac48ac4464c1220186093be0dfc6d29faf6154b25e72fad0dad90a29a5148ad0b59ef546a0540312d17346cce86d18a1 +f41f78ac9e0b9197d6819b02632a1718c23b34fdb06c2e5e0f287006093ad77471782eb7fd43f60008ba604023719626e4a8eb60b73b0fc +ca105fa6fcff6f3ace245e6730c089891c40f4c02cb691fedff32a8f18636ef1354781f4a44ff38ec2767436356f5d626c8365516dd25b8 +9c51345b9b55a0e80fd167f23ec21d3b415729003a979c316d02e3b0f039574fa3505c24bca5e7884a267315ffae85a78a4e55f801ba495 +c2291dffb2feaa0b70ceaec801bba18fb38f7bebdb5daca99a808c80824027e6b9647a1cd02a162f3129db3c38b6ff02c88ca94c55a0c49 +856102182a3cb26eff54fef90fa0f53fbb350a723bd2d72297770b67c75d3e01ecfd1f4612027e5a8d42de782b9b04663a495949918831f +7b200905028cb4e5322722cf56b1531269e5bf518a1d5cde1cf1a91072f537aad0f58b3ae4734a2e0504d2ba14084addfe06fdc6ca33e7f +9be0564be136fbc616f134982000047f585e3bbdee15c34f02619a04f1eb0d320fcb93890475711a4761cb1e67198b852b7b605037340ae +ca68ad6c1b6d81ee24b622e922ff6c16faf88ff75728ae344d1a50bd51f26c9cad3b5608b33c858e57feaf3ff882f4a40c7fe51a14dabe8 +9f0f40253ecb7bd1d4d5291ed3c1b88b1da932a487d22b14181ffb770911bbebcfbf19a9843bffe3209785b02b23fe3a6176bf208f2ee25 +f20332657d2ca6728b9865a6bfdc9a9055a6ab86cb782307c2c0255525884bf8060f8aed7ec034f3ea0489f0f1d61cdcbea1ff69835df7c +41b6a448c2e8274c99e9caa0339c052fbcbf6648c2780f119607c6355b8c37e83a11858b3f296815f2c60da62c68358653db2fbc738d4a9 +20f8bb8d94784228934870046f60ac937af4957c9414bcc33895fcc183062be4e4bff56f9c89838ead8e433dc604536938 ''') db_write_enable=unhex(''' -0602000001648445315dac4d9c91edfb3c327ec18aee87a1fd5e0993fe74b56ee9a70f0eb4d65bfc877060728ad26e695be98899ef76b85 -2162cc5e6ccded51e5a26e7e345c4a8e83aafa2e10fa4cc78f0f34575b0565089b4c78ce1ac7fe3744f4721aa73209fa4a8699e7161bfd7 -ee58dee33f1af15ba3b9ce9a469c5c82eda2b2a2f01658ee14118304e865bc2ad415bec9f06757bb3f2263bd0349a3c089380b72a30edf8 -db01db75586c60ddc9e7bedc8cf9006fcc6825b0ec9dc8782b95f53325bfb6a6945644f2803a4c7fd35574d8b7b089102fb072dfa883049 -f9484a789ff763a029f78adfceac92db195573c65986e38aec2135b5da3c0797939154135be5227515602c0148dbcb8c8a3760dad71f877 -471244cf1053a3cc4bc73c437589a1a47e08c260ea40d3259138e754a556a23e09bf926ad90ff36096c27c460ebdd28f20f31e9f42a1925 -26d79b94e7f2c36b66db69946d93edf8fbd516e3ae59a0b81400c39f6bc1feb209924bc04703fd36ab53dd5658b2dd91633823917c37e94 -4e740409c5fd66974ed42b73d5d7db519c7037b1ed32e471750da95299463cb070c80cea4a03bf20351716ee14423f84670c53ef7b998c1 -79b84ae91cff6ca6b33a372e9947eebc873c6a98c6bcda68e5278b6f799a468bd1a33ae07bf717fbfc20f4d019f0fb25a5d6cb75a97fbd9 -b8490e6204d272d93f62ad393307cad3e24d292040e61fce6f1104c42dc4260de15f42971bbab18064b5dd6ceb12a32d9d25614d9326048 -052bc178b5a0aed3f350cbbec021c4b1ac6ed383f7f4eca0e475cf56caefc3edd3cde6526401936cc095b2df8e0008b2d9bd78c82af0a1e -c0a71f047dd06b4ce6e91886607c55536f0d8712eae4ccb890008ccc27f2d6f6cb9b9bb88ec205019ec722160ffb1c65ca3177cff09c4bd -ae8c40be5bf91488a600ed199d0aad40510afe580802c56c0241a8b2a836800e8a0d07ae37176934252f92fc0e501aee29e6c3567e37b3e -1992ff00b561fd1b3ae37caecc3a1fea7720b0806d3b39cf8a3fb46087b43775b9e473e65cb18af1c9d87a5140a5edf8b7843524910d631 -79c436b6a806d100eb066db889768f7da603631d75a6d79e3d0eb1fe9ba55401b828d4a367f695f3922b982be10fdb1f139a0b1438abc91 -1db5da00ed464d80e3086d368dd131985a21610cd485740599afa772b5dc44d1906ea4c13b8e10b8db896fb81b706038a3328cd07aeb049 -e6ec92ecd30044c54eb171e9cf7a0034cd24614616048491f576826af5ca6afe4bc01f86dc01c2ea25efb32bc9b1c8d56cc7d4d86adf8f1 -f3bb6a649f98bae686ef93524721c618fad85a8125a8ac7d72bfeb7de9f590e8f43535e59259a7a1d13a12a1af91c8ba0dd45ddad02e5b8 -6224fc00dcbc143b0e1d2da638d6798fcc340bda8f1e3abf21cadb2161c4c4be7001371dc56f0d112b42b113288effea6cab8c4b610f730 -37643de21f433774d9fb28cfd213a62dcafab8b662b57e77239dc2fb69f026fcb773f09129c8db04b82dce68734516ffcb938d43deeeeda -a02cc08d7d06f34ec55ba4b224d3270265001df114b946d4238d51cfbfb84cf715b745ec918259c1165ee12ab82b4373eaa2b0c7e68da3e -b869ff033d5953800012bb006d1cf17dcbbe2fb2e129614351c000cab8ccc7c389df33dbe504a0c1df37868b839ef84a6c04072d69fc866 -33055b2569c9c04f1994758987fc7063b97853c727809185a25cd69bfebf6a4367760fd21e7942b997bb2b7098dbec715769d13413c1c93 -185409e54a2c9a97daf63114c71348f19549fb3a8551afbbb7476842f7045a0ec8e6d97fb4bb6de76090687ab4e9991a31e7625ba7088a3 -263797be4787db02573b72100b3ba117e8897b939548715bcfa11d98861b60fa2a4759630b47cbbf329fbc675c4cfc2f963cc9ba72cbe67 -13aff1851869917ba0b761f6532d1dee95331c4c621bb0513e993f7e6dda6da1e3076829b24093c8338c125aa2f5a0730f9e5631f7a9594 -c13025fde9bb4f2431540a1c743c7fc55fc8909d85847fe71af8a68d2981b0eee84a308e0160fc4226aa679ca9b35d0aacae8240aabd5b2 -17c5e66ac4795596f8742acb9869c3f52a96b1d946ff72f403ba491c1a0e4be778efab9d61a250562d705c2b459fc3a420143daf9355226 -4bb8c7caa64143697961fab1b6af9e852d43a94736e1e75e4b9a7c2bee73598360c7e4c648e47ba9400dbe22b3eea6d9ab87fe677b36242 -57f81d26b87536a642a7840bdccd8fce05c23891a4fa4ce2156fba2856313653207bf225b8114005432824d16a93473deb81721c77196af -d80cf723e8cdea81aaed19f55a09a8986f2950c49f4eebfb142d5e4815632d93ccb0106c156b47efca25dc3d7f31eb9b2dee0d2d83a51cb -e5d1270222920f2c87e5acc884c11b0df7a7e1bb49b06fa4f936964d3f2782fa46eec3e430815f82ab0fb5eb82377277f8fe3ae5b33732d -7d76ba3de284c66fba372f04f9ad6a39fa669a00583313d51c8e6b1eb960bf1e82ae8e0504b2d3035b371d5ecf638c1cc0c1dd67eff286f -c9ee0950da53f339a85fbbcbacf61fcdadee8cdba0950d23ec71e2239ae7ab5be1bf56364897af990428822d23deed81fbbe622420234de -d92b8fc3073bfa0a9677cd9e24b9f81278c50584bdc880fa2cd5c5c4b03bd78be872a656f3ef74b30d4e66f1ff091a343f75f096e64ab25 -b64d426862ed3f21dc54c6b6a8cb90b065c7b33b03e97acde7d58a2fa35664ec03ef1f82a30441a021ec008bee9444bbe50ec8ff457d32d -06a63b9dc84fd82fa110a30dd849bf9f8cb4d3599b9aa09a76ad1b7c52bb972e5b16670670994ef7471f2d738ba9430664b7a1c259745ba -8b2b9d98e695bad0b59e1fd989475a61570b2b677734c3f1887f9555b760811e20caba91eff59e9fb328561e12749c32f603bd50da5c449 -7393ccd560e88f367a664c5f2f9fe73107e2664a07a0f015877ce085f469dd24be1a20ce9544692e23094650a991e5bd7ab7d3b575d5ef7 -1549fa442fe75a79a6c9f598eb1396e9332878c73f8af9e8f9f0cc11a4b42245acbb421646d6181c8f7f602298042a37d8b57520a1d68d6 -e3d473d5f1897e05db677c7ff6e260048255fdbe35fae42c791ea57ac0f2334e6ab5c650f59f3b27b1af30347314510a29fe19e20ac6e8e -eb1e84deb687d2dc3d5cf4b03dbe35d165e +0602000001f48001074892b6c57deb7889b5ebf86bc3040f6d91ff1f68765f046591184be08cf36c154b7ec5368139d0f9532382214379a +ff3ffbfe4659e2f274e864bd0ad660f99e21da2bab677dbfa907a66ce110c180d2ddc5dfe40b8ed975cbedffc11631f12f8bd646a0ee82d +44d2a6c1ec9cfbd40f485cb3d9124376b97b4a3349b0a730adda626d8ac28ec20e886aab1b8851deee3431c4d89c8bb3e787eaa9c0323df +e583d5424d36436e4435043e04fd4ea46b1fb2507ca6f0eb03baf27c84b819cbc96cec31a78045eb648339e2aa4789e7672d933936005f4 +720c8ffdc1ea23a4f30a1cdc8f6e87775c241b9ab1566f7771857cc4703d571f1106c526f95232925a6a93ec8e919022fbe303a515f9aaa +8ca215072069311dd3f97d9a4f56259bab3a1b7a8582d6dc2f92d49f023d6f25a05837e1536a633e252ef645225f4293955041a0d54dcb1 +d1dd7e097b7839de5fde2a6ce999966d712b4cb2fd9d7830031da55d9faa99f866fbb7e520566efba43c2509286bf28e1a20c6a836db8a1 +fa4cb9b8d193780aab592d41653839670129066ac56f1268e6f761337f768555e13c5d68137c60f83dba8dc3863e00e73fd3af21e23a566 +daa67f3f14dd934e323651167021ca6b82a6103cb30be849446e2f54dde64a05377052b57332e9bf08a18cf52da2a13ebbd55e60333f8bc +319e1457f38ec5d4839ec0ecd034825bdeaf64926858c6e8c2df418717b5f67135abc038835d3e4e1aa809546fd0d7f01066a71537f96bd +1ecec3687583e1b511bf48c2776f4670158e56164c62da20f671764c785c352fc3cce22cefa20760acff8f45efb54a934f9834d54f9701d +edacd4d383ac01f8cca92562eec774a58da6f55da252c491ee2ab58ff769f89a9649d3956682ca7d06bbf33f9a935b781dfc21b123b1669 +4424e72d6a3e6781dcf195effd36470a4eab0fdc74e87102879ec81fea6549920cce454ac7813997b82d51e7b8c1ee24fad389904478f84 +7654ec3a63bc595b9a7dde798db5c0b6f244901f239e7674c98eebb42b66e8956a733c3796586280a19a1df8a69224acd2556f7ec2e27ca +e37c69b332b2c0ec85991ae48722f988935f658b9cf32f46dfc6d96a5a36f18b6bf9f657b59b3da42414e4d56c0a24485aa298d2d0d1b17 +7e7d0dafe602a4fb4f423def4bdb010fdc626c947587e19e7e4b0e6f9f2da41c29a8f1903d0d2803365fe0a113abba19220141d1ac7cec6 +83962030d3f6591f98ea3dd09162715e5c12f40332b47c53164532827e5596fb2cc0aa8f31683cc63ec14c034c6f3d2c70b8c47611b4c5c +b5348a2559fb162a780a2b403b0120a6846e27d6057a3ab9e1b18915ae2039e81cc6c50d2a14d5913617bacae78fe9b91e9e49d2e82def4 +7565c12ff938b182f8ce941d2781b773479538c76ed9f7d4469f6fe5ba7f6e3ad98871b2866f0ef4f36277daa76c1042c83f77df0ff2e26 +39540bb355ea84273411c453081bd1e1035c402c53190d0bd905e8d01fc3787c65b69172cca5b234e92e358463bbb8d23e38c74a3a8e273 +5542b996ba5ec22c5095a777b6775a728df59c3560c7f36b83d55f819f196573f8fd356379fe9a5e7cecb376395e01309e2005b29e3b160 +cb74c6a5856093480dd06aea5fb3fbe23e004f8d7a38fd07866cdf24161391cc756f6ff71ff072e308b35e259435111bee09ddf2b8df99d +0f2c2e8edaa4ecaabc6975a58f23bb6bfc94ebcbbba0d581f16be9d043c4e410b321c6df424ecaeea94edbe5801eb786199124222b091e5 +b33bad6761445a8a6606d0e781c07a6f91cd5fe188ddb9f9e17f5e07b0cba319c52e5fb03f53df570f82ddb603d305b72a2406bc7c1a37f +920405f8f14d3ddf5d836ba68d83c1a8d7f1a41d148cc34b1ef996ddfb43ef19d2fbf0adcad301a473497739eaa10bbce85e15c32f1d90c +8ab8605d0ae941eb914086592d087a521fde33a676cdfb94a4247f60f51edd37294511e92ec71a9a54bab68a0edaabdcb2c1a3adea778f4 +16e39200af4c517dd7152bb72476c5d1413f04704615d795300f3a091214f4e4ac2ef41969c81f8fc08610864907b2e6edfa5fdb0926b6f +064b2a1c3b8c7b631cc75663cedad5e71868abc9bac678e430144613cb0e51982b9e019099026b069bb7a4dc376cdd6a3c5956631797621 +3672754fac87df85953cdc0de276fb8742f48ba218d4202fe6f865834152979d6da9b473e5d476c0aaa68491f545091b879c01986078d64 +fa5f49f60e615cb865f154f48b45173a1dc85f2eb1128652290bd383cdedcd8f280117e60be034ce224f92673934ed9e0077d5f7899f4e0 +eee097933a35e40f205d84a10733f492da619802ff70d9b949ca0c2bcb9ba68c290f2ef9a20a3bf496834c66956a8ec4179266999d9f87b +dfc14aea865f0487e2be10a64becba69547d01658935e63703986a56d6ce38fe66dbf61d754ba9a1a278353913422e4f2e4100c5962999a +3eaa3e1672bc73edcfcc7525a2d3dbe95683b4bf38f7444ac0f470f0e98079916e4e1fba3fcd5b082fc2772e63b5e0663f87638a163858f +590845240a8c22dacf6f7999c431a2ab5204a7da7839c9a932608c7f83a87d1d73d7d8b2fec65abb95221fada44365fe21061dbcde52cb8 +4cbfe9f061c4dab3be86002e7683eed16c23c687ce61c5d923ffbab40bee6ae93ed7f857f304e5eb16ec6d088563524e90d916e41a3a8c7 +777e29731f0f45c125082c423a5c02704c07c6fc19b1c4838ee3eabe12562829e67581d312c720b792a41744dec1e157426ab75136d31ee +2f208147039091453c0b0e3970c5624d7a53df8076e9d1625d2c8e693e0e9a81e23862dca78921b66ca4c3c5ed35b0b5ed2e24622eb216b +a0ba6e0c0eaf97c754eeb3db4a506d5854a3edc92d0111af3d2135a998729123f03d0f9366bb0d2c681cfc62c59bcd75c6b410d8e6997cc +a55c989f010393d6c242f7ce1ea71c6f262e498855584347b04ce26cce2e822b8c6b7b4937148a45c947073b300f7c72b6e78c4231078d8 +0531b7f9317c1bb4d6070f299e9a97731b1befeeec2dae0a1a0364568acbebab069a4b90147776ff7e7f79c1cc98b2fe6214792501554f4 +195783b0f9188ccfe96ad8cd29f5463409c2054e4a2496ee65eaa1fcda3d7764cd3e8431e44a2b05e64aa2f9fb0d13456bfea9c91ec2d90 +d0099e7e395dce818650dcaf8bdfe23b4c6443f5c690b18ead221a6c2bcd34572ffb83b3332eafde6e25b37ff3ac6da0c3cc697b996265c +aa5a53ce44570303d7d111f44c635119595c247e86a32083f2865501752f93e3024b2e2b6d82d0c03b745bfd809af7e8e1349d1a79bed51 +bba415064701a2a7890e8f39937c6d2f563b0747bd94f1b698624b4fd17dfdf68ffdc0450c26d771f8ff4fb01a26ff8f64eb5b6d9153f5c +e29d9dfcf84ca230a4c212401b437d1137f83a44f7a98a9fd1bc3d883e6227ce369ed32a960550aa863f3d014de7494dead34fced1d7b4e +ab651d499033589446fb5a1564557d63e724941e77ae3f46b79703d06277d87356999b51f61893d31c7231b0c635f1d83ab38a0dce544f5 +f6803861d6e3d7e70d617ecc593920b1ab9006bdc7bff34a8b36a7601eb170a040156b4567ab37f55fdf2d466fca9374277322f21811d02 +c7bc599c9ed5c2b1fe7b6baa19b1b0a30f79f8641b97bf66491dca0b4c0341367aa5acec1398bb37c037d81ac2368db49c5d5720bbfb746 +6ba616c70c7d834286303047357da0e9a34fc14b00c17a0a02f6a62a5b52976b00ed67bb2d0aa1b4a8a93100b799e1839695bdae9b98e75 +c8df5d8340d158be60379a6f626af052ad55c5cea01f806048e937f87e01e725e67620364e511afd288b25953e9ade343b596068608190f +a5c4df114c93d3c8deca929c066d8bae5ac2d607e3f94d68a5d3554827a64735a43c462bc3682cc1664411f592c9456f53da1026f51459a +0cf20cc171b9b6bede47ce57d845dffe1025c6eb240615da151106a5601b75c24c673d6ea818d60c31f414aeaa55597b40cc4f2ed2b3850 +d366084a52513420b013695e2bfcb0dbfad0014975c67471a3807528d15730802a4428842c6368c72650b3161265d6b86007264cf093a31 +7fee4ee388e7721a02434c514324cbf85cb57f709b53fdf69624adc29b85518f1a051f2473ad9384d7ac57c2a780ab72506ba925fa39992 +dd2d0b00ffd8c38645d55c2ca2ae94cf4ffa372284a28a13797e25eb0d950c08371656a889e6189f83b9c0c8e06952b34fe13ccb5c3b2c8 +2f2d988f6d9a233f1a9e64de97218be12ee7a8e8463d82131624ce167e744a3ca3915c78e6e76362d06090e2a7ed60ea7437c84838d8aa7 +5f096c9a928e403e2428550c98de8c43bd25e24520aef6ee534ee1d4702175e6b25d030b87941845cefc1dc289cee33c72139f29839af81 +cb6a097d114311a01736f479bdae32a59398fc4a7494d034fc8dc5f2ba8af93fc4c576b703967ae593780413b44b98f4baba9d3fd7b5571 +5ad5e5c41f9361a42a757d9a6d7220a9467e19f739877076164c142d40bbae9501312c394dc0233dc5868814162bfc1f10bd4663b285dd2 +d005f3bc3dad2ff023f7e81b799b1b323b37e82fc99dc81291cf93cc04a0e05aa674bcfd3bc0d930a10d0957ec7712b8cc78375dd904eb5 +a468296015dab1babb076786f305c8ad90ca3947b150da79cb94037e970e9180437ea34c72771d673000826741fe759fcdc2b03558331fd +f5b89d6e3f25a05241f32f139e898126aec8b1715cac0208831fb1205f9efb75538755b2d83931c7ad9e252c88c8af3c5df62fb99653aff +99e6c6c051a9a1241381cd5ce1307261f866575caea0a3e847286ecc67d7d9aa18f48ef2a5e5f183286127f8b9aa2caa0869ec5e474a70e +5427dc2f0488b134d201241dae68ed3996869453247bb50d8bc3d3c909951e5a47b1e899610347ea8d7193346bfe754c289ad1ca454b9c9 +2a07527b95a1fe508d0b7c8da5b9047d277508ff615c9dc9ab11596aa88d0c9734a45d81f0393219bead587d3a6f9d07c470f2abf8d7c69 +92228bf0ab6ef79e46599bb0a60 ''') - -# FIXME this must be very specific to a particular device and constructed on the fly from multiple hardcoded tables: -identify_prg=unhex(''' -02980000002300000020000800002000800000010032007000000000802020050024200000502077362820010030200100082170000c210 -000482102004c210000582000005c20000060200000682005006c20012970200121742001887820018084202000942001809c200902a020 -0b19b4200000b8203b04bc201400c0200200c4200100c82002003300100000000080cc200000f503d0200000a1013200440000000080dc2 -0e803e0206401e420d002e8200001f0200500f8200500fc200000b8203b0000080400140800000808000008080000140830000808000014 -0831001c081a0032000c0000000080501101004c1126003400080310071d10071d10071d10071d10071c01065810080101000007c8078c0 -6100000204f80007f000003070107010c07032c08fc80095a800afc08fb800b5a095b800afb08fa800b5b095c800afa08f9800b5c095d80 -0af908f8800b5d095e800af808f7800b5e095f800af708f6800b5f0960800af608f5800b600961800af508f4800b610962800af408f3800 -b620963800af308f2800b630964800af208f1800b640965800af108f0800b650966800af008ef800b660967800aef08ee800b670968800a -ee08ed800b68096c800aed08ec800b6c096d800aec08eb800b6d096e800aeb08ea800b6e096f800aea08e9800b6f0970800ae908e8800b7 -00971800ae808e7800b710972800ae708e6800b720973800ae608e5800b730974800ae508e4800b740975800ae408e3800b750976800ae3 -08e2800b760977800ae208e1800b770978800ae108e0800b780979800ae008df800b79097a800adf08de800b7a097b800ade08dd800b7b0 -97c800add08dc800b7c097d800adc08db800b7d097e800adb08da800b7e097f800ada08d9800b7f0980800ad908d8800b800981800ad808 -d7800b810982800ad708d6800b820983800ad608d5800b830984800ad508d4800b840985800ad408d3800b850986800ad308d2800b86098 -7800ad208d1800b870988800ad108d0800b880989800ad008cf800b89098a800acf08ce800b8a098b800ace08cd800b8b098c800acd08cc -800b8c098d800acc08cb800b8d098e800acb08ca800b8e098f800aca08c9800b8f0990800ac908c8800b900991800ac808c7800b9109928 -00ac708c6800b920993800ac608c5800b930994800ac508c4800b940995800ac408c3800b950996800ac308c2800b960997800ac208c180 -0b970998800ac108c0800b980999800ac008bf800b99099a800abf08be800b9a099b800abe08bd800b9b099c800abd08bc800b9c099d800 -abc08bb800b9d099e800abb08ba800b9e099f800aba08b9800b9f09a0800ab908b8800ba00801800ab808b7800a010802800ab708b6800a -020803800ab608b5800a030804802003070404020000000000002f000400900000002900040000000000350004001000000017000000260 -02800fbb20f00f2220f00300000006001020040010a00018000000a0200000b19000050c360ea010910002e001c00020018002300000090 -0090004d01000090017c013c323232640a02013000cc0103000000ff0000001d000003ff00000025000003ff00000022000003101112131 -415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b -4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081828 -38485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f2b23203c2d182e1e30182e1c321d341d341e321c301e1e241e201f -201d1c321a301e1c211e21341f1e202024201f1e20201f212221221d221e23341e1d1e1d20341f1d193b341c1d1e35201e201c20221f341 -c1e1e1c221f201d21201e1c1f34242221201f20221f201e241e241d2020221e2420231d221e211e1f1e1e341c321e3220301d2d302f2d2c -2b23223a211c7e7f807f8080808080808080808080808080808080808180818081808180808080808180818080808180818081808180818 -08180818081808180808081808180808081807f808081808080818081808180808081808180818081808180818080808180818081808180 -81808180818081808180818081808180818081808080808080808080807f807f807f807f7f7e7e -''') - -# The following blob has only 1 byte difference from the above -enroll_prg=unhex(''' -02980000002300000020000800002000800000010032007000000000802020050024200000502077362820010030200100082170000c210 -000482102004c210000582000005c20000060200000682005006c20012970200121742001887820018084202000942001809c200902a020 -0b19b4200000b8203b04bc201400c0200200c4200100c82002003300100000000080cc200000f503d0200000a1013200440000000080dc2 -0e803e0206401e420d002e8200001f0200500f8200500fc200000b8203b0000080400140800000808000008080000140830000808000014 -0831001c081a0032000c0000000080501101004c1126003400080310071d10071d10071d10071d10071c01065810080101000007c8078c0 -6100000204f80007f000003070107010c07032c08fc80095a800afc08fb800b5a095b800afb08fa800b5b095c800afa08f9800b5c095d80 -0af908f8800b5d095e800af808f7800b5e095f800af708f6800b5f0960800af608f5800b600961800af508f4800b610962800af408f3800 -b620963800af308f2800b630964800af208f1800b640965800af108f0800b650966800af008ef800b660967800aef08ee800b670968800a -ee08ed800b68096c800aed08ec800b6c096d800aec08eb800b6d096e800aeb08ea800b6e096f800aea08e9800b6f0970800ae908e8800b7 -00971800ae808e7800b710972800ae708e6800b720973800ae608e5800b730974800ae508e4800b740975800ae408e3800b750976800ae3 -08e2800b760977800ae208e1800b770978800ae108e0800b780979800ae008df800b79097a800adf08de800b7a097b800ade08dd800b7b0 -97c800add08dc800b7c097d800adc08db800b7d097e800adb08da800b7e097f800ada08d9800b7f0980800ad908d8800b800981800ad808 -d7800b810982800ad708d6800b820983800ad608d5800b830984800ad508d4800b840985800ad408d3800b850986800ad308d2800b86098 -7800ad208d1800b870988800ad108d0800b880989800ad008cf800b89098a800acf08ce800b8a098b800ace08cd800b8b098c800acd08cc -800b8c098d800acc08cb800b8d098e800acb08ca800b8e098f800aca08c9800b8f0990800ac908c8800b900991800ac808c7800b9109928 -00ac708c6800b920993800ac608c5800b930994800ac508c4800b940995800ac408c3800b950996800ac308c2800b960997800ac208c180 -0b970998800ac108c0800b980999800ac008bf800b99099a800abf08be800b9a099b800abe08bd800b9b099c800abd08bc800b9c099d800 -abc08bb800b9d099e800abb08ba800b9e099f800aba08b9800b9f09a0800ab908b8800ba00801800ab808b7800a010802800ab708b6800a -020803800ab608b5800a030804802003070404020000000000002f000400900000002900040000000000350004001000000017000000260 -02800fbb20f00f2220f00300000006001020040010a00018000000a0200000b19000050c360ea010910002e001c00020018002300000090 -0090004d01000090017c013c323232640a02013000cc0103000000ff0000001d000003ff00000025000003ff00000022000003101112131 -415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b -4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081828 -38485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f2b23203c2d182e1e30182e1c321d341d341e321c301e1e241e201f -201d1c321a301e1c211e21341f1e202024201f1e20201f212221221d221e23341e1d1e1d20341f1d193b341c1d1e35201e201c20221f341 -c1e1e1c221f201d21201e1c1f34242221201f20221f201e241e241d2020221e2420231d221e211e1f1e1e341c321e3220301d2d302f2d2c -2b23223a211c7e7f807f8080808080808080808080808080808080808180818081808180808080808180818080808180818081808180818 -08180818081808180808081808180808081807f808081808080818081808180808081808180818081808180818080808180818081808180 -81808180818081808180818081808180818081808080808080808080807f807f807f807f7f7e7e -''') - -calibrate_prg=unhex(''' -0298006103230000002000080000200080000001003200700000000080202005002420000050207736282 -0010030200100082170000c210000482102004c210000582000005c20000060200000682005006c200129 -70200121742001887820018084202000942001809c200902a0200b19b4200000b8203b04bc201400c0200 -200c4200100c82002003300100000000080cc200000f503d0200000a1013200440000000080dc20e803e0 -206401e420d002e8200001f0200500f8200500fc200000b8203b000008040014080000080800000808000 -01408300008080000140831001c081a0032000c0000000080501101004c1126003400080310071d10071d -10071d10071d10071c01065810080101000007c8078c06100000204f80007f000003070107010c07032c0 -8fc80095a800afc08fb800b5a095b800afb08fa800b5b095c800afa08f9800b5c095d800af908f8800b5d -095e800af808f7800b5e095f800af708f6800b5f0960800af608f5800b600961800af508f4800b6109628 -00af408f3800b620963800af308f2800b630964800af208f1800b640965800af108f0800b650966800af0 -08ef800b660967800aef08ee800b670968800aee08ed800b68096c800aed08ec800b6c096d800aec08eb8 -00b6d096e800aeb08ea800b6e096f800aea08e9800b6f0970800ae908e8800b700971800ae808e7800b71 -0972800ae708e6800b720973800ae608e5800b730974800ae508e4800b740975800ae408e3800b7509768 -00ae308e2800b760977800ae208e1800b770978800ae108e0800b780979800ae008df800b79097a800adf -08de800b7a097b800ade08dd800b7b097c800add08dc800b7c097d800adc08db800b7d097e800adb08da8 -00b7e097f800ada08d9800b7f0980800ad908d8800b800981800ad808d7800b810982800ad708d6800b82 -0983800ad608d5800b830984800ad508d4800b840985800ad408d3800b850986800ad308d2800b8609878 -00ad208d1800b870988800ad108d0800b880989800ad008cf800b89098a800acf08ce800b8a098b800ace -08cd800b8b098c800acd08cc800b8c098d800acc08cb800b8d098e800acb08ca800b8e098f800aca08c98 -00b8f0990800ac908c8800b900991800ac808c7800b910992800ac708c6800b920993800ac608c5800b93 -0994800ac508c4800b940995800ac408c3800b950996800ac308c2800b960997800ac208c1800b9709988 -00ac108c0800b980999800ac008bf800b99099a800abf08be800b9a099b800abe08bd800b9b099c800abd -08bc800b9c099d800abc08bb800b9d099e800abb08ba800b9e099f800aba08b9800b9f09a0800ab908b88 -00ba00801800ab808b7800a010802800ab708b6800a020803800ab608b5800a0308048020030704040200 -00000000002f0004009000000029000400000000003500040010000000170000003000cc0103000000ff0 -000001d000003ff00000025000003ff00000022000003101112131415161718191a1b1c1d1e1f20212223 -2425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4 -e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778 -797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f2b23203 -c2d182e1e30182e1c321d341d341e321c301e1e241e201f201d1c321a301e1c211e21341f1e202024201f -1e20201f212221221d221e23341e1d1e1d20341f1d193b341c1d1e35201e201c20221f341c1e1e1c221f2 -01d21201e1c1f34242221201f20221f201e241e241d2020221e2420231d221e211e1f1e1e341c321e3220 -301d2d302f2d2c2b23223a211c7e7f807f808080808080808080808080808080808080818081808180818 -080808080818081808080818081808180818081808180818081808180808081808180808081807f808081 -8080808180818081808080818081808180818081808180808081808180818081808180818081808180818 -0818081808180818081808080808080808080807f807f807f807f7f7e7e -''') - diff --git a/proto9x/flash.py b/proto9x/flash.py index d0d1483..b56f2da 100644 --- a/proto9x/flash.py +++ b/proto9x/flash.py @@ -95,8 +95,8 @@ def flush_changes(): assert_status(tls.cmd(b'\x1a')) def erase_flash(partition): - tls.cmd(db_write_enable) - tls.cmd(pack('