From da61e90b18c0683cca9c84ff93b341dcda032344 Mon Sep 17 00:00:00 2001 From: Shuanglei Tao <tsl0922@gmail.com> Date: Tue, 10 Dec 2024 09:21:45 +0800 Subject: [PATCH] add 4 level gray support for EPD_4in2 --- html/index.html | 15 ++++--- html/js/dithering.js | 45 +++++++++++++++++++- html/js/main.js | 97 +++++++++++++++++++++++++++----------------- 3 files changed, 113 insertions(+), 44 deletions(-) diff --git a/html/index.html b/html/index.html index 6d75d20..5a8bab1 100644 --- a/html/index.html +++ b/html/index.html @@ -9,7 +9,7 @@ fieldset legend { font-weight: bold; } code { padding: .2em .4em; margin: 0; font-size: 85%; background: #CCC; border-radius: 3px; } - #toolbar { margin-bottom: 10px; border-bottom: 1px dotted #AAA;} + #toolbar { margin-bottom: 10px; padding-bottom: 10px; border-bottom: 1px dotted #AAA;} #status { margin: 10px 0; } #filebox { margin-bottom: 10px; } #cmdIMAGE { width: 350px; height: 300px; float: right} @@ -49,14 +49,14 @@ <h3>4.2 寸电子墨水屏蓝牙控制器(nRF51)</h3> <div style="margin-bottom: 10px;"> <button id="clearscreenbutton" type="button" onclick="clear_canvas();">清除画布</button> <button id="sendimgbutton" type="button" onclick="sendimg(document.getElementById("cmdIMAGE").value);">发送图片</button> - <span id="status"></span> </div> + <div style="color: #666;"><b>状态:</b><span id="status"></span></div> </div> <div id="sendimg"> <div id="filebox"> <input type="file" id="image_file" onchange="update_image()" accept=".png,.jpg,.bmp,.webp,.jpeg"> - 抖动算法: - <select id="dithering" title="抖动算法" onchange="update_image()"> + 取模算法: + <select id="dithering" title="取模算法" onchange="update_image()"> <optgroup label="黑白"> <option value="none">二值化</option> <option value="bayer">bayer</option> @@ -67,11 +67,14 @@ <h3>4.2 寸电子墨水屏蓝牙控制器(nRF51)</h3> <option value="bwr_floydsteinberg">黑白红floydsteinberg</option> <option value="bwr_Atkinson">黑白红Atkinson</option> </optgroup> + <optgroup label="灰色"> + <option value="4gray">4 级灰度</option> + </optgroup> </select> 阈值: <input type="number" max="255" min="0" value="125" id="threshold" onchange="update_image()"> </div> - <textarea id="cmdIMAGE">fffffedef6d6fee4e7ebf1fffffffffffffffffffffffffffffffffffffffa5fff9e009bffffffffffffffffffffffff87fffffffedbded6b30f3f9f5bffffffffffffffffffffffffffffffffffffffb0fffc7d05a7fffffffffffffffffffffffff0fffffefe5ae6f6df897e7cf6ffffffffffffffffffffffffffffffffdffff7c7fff3e60c6ffffffffffffffffffffffffffb1fffffffdcf6d6da33f8e7e4ffffffffffffffffffffffffffffffffdfffdc1fff0f89893ffffffffffffffffffffffffffbe7ffff7f5ddedada27e79fcdffffffeffffffffffffffffffffffffffffff4fffd7e63824ffffffffffffffffffffffffffbfbffffffdddedada1c9c7e5bfffffefffffffffffffffffffffffffffffda3fff1f97b88ffffffffffffffffffffffffbffbffffffff9ce6d75a7e73f9b7fffff7ffffffffffffffffffffffffffbffc8fff8fc9fbc3bfffffffffffffffffffffffbffbffffffbfbeeefbd9b9cfd737ffffbfffffffffffffffffffffffffffbffa3ffe3f17fd067fffffffffffffffffffffffbffbffffffffcdeadae2673f9eeffffdffffffffffffffffffffffffffffbfecfff0fc7ffc61dfffffffffffffffffed000fbffbffffffffcdebdac194fcfbefffefffefffffffffffffffff3fffffffbffe7fe7f1ffe2c7fffffffffffffffff600080038fbffffffdfeceedb04b3f3efc5ff7fff3fffffffffffffffffbfffffffbffb7e1fcfdf9e53fffffffffffffffe005ffefe05ffffffffdfeeeadb61cfcf3e1ffbfff5fdffffffffffffffffffffffffbfffb4ff3efc7c73ffffffffffffffc07fe7fbafcff7ffffffffee6b7b473f3cfb1fefffdff7ffffffffffffffffffffffffbfff13fcf7f3f1b3ffffffffffffd817f7f7bbaf9ff7ffffffefedff7b0cfcf3e2bfbffe7fdfffffffffffffffffffffffff3ff88ff2fd9f8fa9ffffffffffff83ff663fbe73bff7fffffffff766db01f3cfaeb1ffe7f9ffffffffffffffffffffffffff7fefafcffc2c7fb9ffffffffffc03fff7feef377bfffffffffeff7735c0ecf3e7e0fffbfcfffffffffffbfffffffffffffff7efe9e3ff2f1feddbffffffef60fbff3ff7ff95dbfeffffffffffef7701fbcf9f23efafe7ffffffffff6fffffff9ffffffff6fffd27f87c7ffdcfffffffdf1bfb76ff7fdbf773feffffffff7fbb74c3672e7e83febd9bfffffffff7fffffffe3ffffffff1fffc1fcbf1fff50fffffffd0dbf7f7f7fefb3f77feffffffff7fd736cb5e69f8a773f67ffeffffffdbfffffffcffffffffdfffccdf4f87fff0efffffde9edbf77f77f7ffb7c7feffffffffffdf771279c7e3ce4f69fff3fffffe7fff5fffffbfffffff77fefe4a7c3bfff2effffdd9befbfa7ff77eff9efffdffffffffbfeb5481e79f8fd4fecbff9f7ffff7fffdfffffe3ffffffbf5ebfd63f2fbf79a67ff7f1bfedbcbf6ff7fefdbeffdffffffffbfef33279e3e3f13b33ffcff7fff6dfffffffffc7ffdff9ffdbffb0703ff9e7f67ffe8fbbddfcffff7f7edbf9fffffffffffbfe7ae2f79b97f07d9ffe7fddffcdfff27fffff19feffefff4fffb30db7cf9fd337e8bbfb7db3b7ff776ffbbdffbfffffffffff39a2ce7a1fe0d67ff3fcfdfd7fffdfffffffe7ffff7ffe5ff9f219ff1e7fc337a7bbbfef9fbf67f7ffdbffffbffffffffdffb706bdf0ff09b1ffcff3eff9ffff7fefffff57bff9fff9df9fc812fce5ff933f2fbbb9ccfdf7ff7ffedafbfffffffffffdffb80cf385fcca2dfe7f9ffbcffffbdf7ffff751ffefffdf7cfebc87f7cffc69807dbbbb7d3f7ff7776ffefbff7ffffffffeff9889cf87f390bffbfcffe27ffff7fbdfffff87ff7fff7f05f9f90f9f6ff7ed8bfdbbbfddffbf777f7fdef7fffffffffffeffd38b3e6f8ed0fbe7f3ffa5fffecffffdfffe13fb7ff7fe1dcf682779f7cdfc3b6fbbbbedfdf7fff7feffe7ffffffffffffffd919f92c7986fb3f8ffe67fff3be5fbffff8d3efff7ffcdc7fc8b0f3ea7fe0cf6dbb3b6bfdf6ef7f7ffdeffeffffffffff7fed33e5cbef0cf8fc3ff347ffadf7df3fffce973ffd7ff3c9fd3643cff9ff87c3edbbffcfbf3ff77f7ffedfffffffffffff7ff08797cbb866e3f1ffcd9ffcafdffbfefc7c84ffefff9e0de7de193fe5fe7c0f6f3bb3ddffff7777f7efdffdffffffffff3ffc174f9e674d9fcffe68e7e67cff9fb7e3f813ffdf7cfe6cbfcc60ff0df3f66f7bbbbf6dfdf7fff7ffff3fffffffffffffbffc357e3bcf4cfb3ff993efbbd7febf3f3fe193feff67fd6cffe147fc77df9349ebbbba7ffdb7f7777fff3ffffffffffffffff8c47c977c11f8ff8e1fec9fdfefbd7dbf3c13f7feffef06fc3f10f1fabdeb836f3bb9dfbfbef77ff7ff7ffbffffffffffdff08de39cf285c3ff32fde67dbfbfb7f1fbf485bffb7f3e6efdf70007fae73ca76dbbb7fdbdb7fff7ff7e7fffffffffffffdfc227de3b9e111bf8c7fd03e7beff3717ced105ffef76f26e67f2077ff23cfc736b7af26dfdf77777bffefff7ffffffffffdfd84f3d2f781479ce1ff9cfbfb3fc7d3ebfb012ffbe6fee0e5fd99d3fe167e7d36b3bbffdff77f77ffffdffefffffffffffeff11ce679e411fb3a7fc25dff9ff33673fba110f9ff3f3e607f8d3cbf1b2f9d136bbba7dfbdbfff77fffdffffffffffffffefe0dbcc672121f8e1ff1acdfe7f1ff34ff66c01dff273ff473cfd90bc4cbe7ce3ef6f9effbdbf77ffbffbfffffffffffffff783d33918d807e38fb86b8bf5fdff5d3f9df8333f9f9ffc37677cc391f9b9f3a93b3bb7edbdf7777bfffbfffffffffffffff7e71cec7e381c883fc3ba4fdfe4ff39fe77c090fefe7ffc463f729f07e00fcee3dbbb3f7dff77ff7ffff7fffffffffffffff3c437b2fde21879ff16f1de7f37f82f7bde3181fbf37fce12bfde18cf1d9f3e996b2effdfbdbffbfbfff7fffffffffffffffb909ccaf3e041e3f835c7b3fc3ff67f2de8fa115f3ede7c67bcf9426efc79fed96b7cf7efbdb77bbbffeffffffffffffffffda2331c8f844183ea9f1fa7e77fc67f37a3f8133efe73fc1617fe423191c7fac1db7dff7dfff77fbfffdffffffffffffffffd806cf03c711c7b073a7a0e9b7d3d7e3c1fe1a0f3ff1fe2735ff30de6660f8f1cdbabf76fbdbff7ffffdffffffffffffffffe0929f073e601f23da3f26cef77fd70a07f9e019ffcdf9f025f9f23135c7e7d713bb7f7efbdb7fbfbffbffffffffffffffffe46cfe0ef0033f0f30fe3af3f67fcdf03fc70113ff378fe71ccff2cc2fcc1f3cc6f67ff7dffb77bbbff7ffffffffffffffffc105f889cc044c1dc3f1723fe3fe63c1fe5f031ff9e47fc030bf48335e6079f2c6d2f7f6ffdbf7fbfff7ffffffffffffffffc127e4073884d8773fc7767fa7fd8e13f3fc584dcfe1ffc382ff7846b3e46fca2dbbff76ebdfffbfffcfffffffffffffffffc83f9c1ef903031c731e41fef7e7b1fd9ff3132d7fc6fc661873f11dafc99f3aa5b9eff7effb7ffbbfdfffffffffffffffffe1ce7909e40a5e51f0fa5ef9e7bfa7e4ff9e0089fe78d3f01a5f64641e2639f2e6d3ff7efddbf7fbffbfff7fffffffffffff911bf00fcc481a4fc7fa364ff6ff0fe5fe7e2186fbc65fc0827d1c6999e4979f22f7f7fefbdbbfbfdfbfffffffffffffffff8463e18e79064e1f3362f05fe4dd3b8d73fc010ecfd47f928377380c47d196fbb3a7f7f6effbfbffdf7fffffffffffffffff94cf9a09f181485cfb0ec4ffc3f9ea79d7e5320cbfe37cf20c1f32138f125bfe939eff7eedfffbffff7fffffffffffffffff321e704bcb090ad1e33e657f2ffba7e65f5e4881ffa663e0993f36242cf04ffe70dff7feefdbbfddfefffdffffffffffffff687ce70f78088e47b8791178ebff27e0fcfc198e7ce11f9341396c0843e18ff353db7ff7efdbfffffdffffffffffffffffff8713801cf0921c1f81e66763eacc6fc6e7f243987be43cd20ca7b20307062f9d929f7f7ff9fffbfff9fffbffffffffffffff260e7007f20258de4798ee1fcb73ee4ebfcb38032fe1e7f06c9f960c14f0eefd293ff7feefebbfddfbffffffffffffffffff49b9c00fc218c2c874b6e07f89cfc9e8fe3e40ceff279f81c11f1f1071c389eb897bf7f6ffdbbfffe7fff7fffffffffffffe5817825fc8038ec9e13ec37e0bff67e379fc3990b9e41ce304d9bc00c332673cb0df7ff7edfffbffeffffffffffffffffffc404e0ccf300e1e078dfe9c732dfe4f8f67f30983a7e1d7f8340f8d0982fb04f598df7ffeedfbbfffefffeffffffffffffffe919cd419e498dc4665fc279d25fe78ec3fccb98f1f0707f1022f8f0413f123cfc5fbf77ffdefbfffdffffffffffffffffffe90bbc04f0212988ccde0ef36cdefe3e17e7e38905cf46f40f0eebb0053e0973e1dfbf7fb7dedffffbfffbffffffffffffffe03a7062ce04902a73796e82f953f0fe779fe40c183e1ecf180c29e019188c0fcd0df7fbfedffffff7ffffffffffffffffffc871d1c07c90c4e21e45ec09e41fe67880ffe31c22f87c3f13b07c586033923f3c4dffffefdf9fffeffff7ffffffffffffffc267bc0de44319c07e47ec63f88fee8673ff84108ecf3074c6837d70038e40b9e9cfbf7bbf7effdfcfffffffffffffffffff929ae8009ec820a5fc0f8c9dc26f9e3e4ffce1841c7e034f8c063c82184199a7cc8dfffff77edfffdfffefffffffffffffff0423f20cfe80ce66706ce27848c1f47c3df3f29c71fe3c3f81c1b4b869cf861e362ffbffb7dfdfffbfffffffffffffffffffbc47d8c0fc0278c9648fcce0d98fe4ba6d9ff20c8f3931b786480c30430c18d9fce7bbfbf77effff7fffffffffffffffffff3037a101f04986234d232c81346f9e8eccff84cc3827070e064b9a861c63d387e0cdffbbffdedffefffffffffffffffffffde0e6a000ec9220e43c66ee1df1efec3f11fe610cd33c3c99e1a0d21831c7c61f9e0dffbfb77fdffefffffffffffffffffffb8896c30d998242e13e15ecc44ce74c5e4ef1e40ccc3333c787844e500737187c7467fbfff76efdfffffeffffffffffffffff2073b45871011e07fa73e4700d86c2fc3e8fe3ce0c9f8e0fc421ce521c24c243f267dfffbffffff7ffffffffffffffffffff09e661c1ec513ccf3a47cc98bc73ee98607f224c439f30e8c061ae0830c3cd8f8ec5dfbbffeefff7ffffffffffffffffffff3185c60d3980f2663c5f298661c7ee870979e50cca1f07c482c02229030a122e7e17fbfff76fefeffffffffffffffffffffe6437901ceb8382219d30e6489e27fe3f274fe04e0cee1e366318c6230c78c8f1f804dfbfdffffffffffffffffffffffffffec98e6581ba03286638e3ecf2e833ecdc1c3fc1ce638319e1c068310c11c383c7f063fffdffefef3fffffffffffffffffffff2113e40178126148db0f29ce49fbecd0707f270e4e278740f0e4cb2407110f1fcb27fbfffbbfff7ffffffffffffffffffffec077e04cf3108733cc78e5be2963ee870738e4062cd69c19e1800211047c18263e06ffbddbff7cfffffffffffffffffffffe99078340e34218271ce1adf84ccbee1619a7e04e61c390fc0006790909e1e090f892fdfdffefeffffffffffffffffffffffe410e4c0dfa086164eb076df336bbecd9779fc203473307e030710199038584f3e233fffffbbffbfffffffffffffffffffffc806de04070a18f238b1de4cc78f9ecc74c5e20cf14e08f1ac0e43c810e3c21839f42efffdffff7fffffffffffffffffffffc80e7811cf1831aab2c70eeb31be1df0733d1e006318998de209f804410f0ce387d03edddffffeffffffffffffffffffffffc130e045ce78473a8e0cce4ce2c99dc6b0e4fc026031da3784c781e448186c8f3f832fffffbf7dffffffffffffffffffffff9420dcfc066118ca30719e5b8bc7de26a3c8f20c6387c0be19061800007084383ef90ffffffffbffffffffffffffffffffffc10239c0e718333a0e021e4e1bce4eee331a8e301b1e20787904e012018720e3d3c43fdfefffefffffffffffffffffffffff584ee71603308cf1314422e27dce4df47e763c323078e043e10381fa0808c28e0fd08effffff7fffffffffffffffffffffff413bbc78ce6533842701c349f9e1ecf328c0624c6383851f8cc41c09203316383f6407fdfffb7fffffffffffffffffffffff84667d86851d26009e131e4be1c7878613091f104b1e383c7c01d868414c44e1cc610f6fefdf7fffffffffffffffffffffff984cf878766118223894374f9f964c341b20be007850e071e383c6c00070630e4bc087fffffdffffffffffffffffffffffffa231f1c3464c008c3390e10f3844f6f138c3bc1b21c3e50f0e020e1c00418a318e10937ffffdffffbfffffffffffffffffff884ef71c253c225c0403826ce2c7a2e7210e532419ce1c18f8206876a106306620c4c9eeffd7fffeffffffffffffffffffff3219f8e3f6700b7058060a63ce4783c40c3182403d08f827c381c320801813188ac6027fffddfff8ffffffffffffffffffff02677b1ed64418c301d00b4f3c16307088c60e133c29f20f0c1017004041826303341a7ef77ffffb3fffffffffffffffffffb27c787c865c330c0510220c7048e1f301182c4c3c67c61c31c0741e00403b044cf0c2cffeffffe67fffffffffffffffffff2677fbc192708c3034408829e3039ac418e0e351b1d63851c700c0900006f81107c282a6fdffffc61fffffffffffffffffff16cef81f03c688c61183272786032cb98983060624fce1463c2a028000198010370e0ab8017fff9c3ffffffffffffffffffe367ef1f8523c231c0e00184f1c0470f3840d141d1e738e08f0e0300000662022f0f04abfe7fffe311ffffffffffffffffffe6672f3e3c27006710840b12c70c0c2ca003061103ec23843c3c000400001810383a0cadf3ffffc471fffffffffffffffffff8eeffb8e08c618c331c04721e1039cb88c898224be0ce3070e000080001e191e0612c2de7ffffd0c1fffffffffffffffffff263e7a71c8b8338c050114078c4430f08162000b9e398e0c700000000830207031f60af1f7fff0318ffffffffffffffffffe6cf2f797c06106300020010e1100e6e0440c00a63c6738618210000000c0800143f64a93ffffc043cffffffffffffffffffe0ccef87c0cce186380e0032070c39c8b04200029931ce38630640000041a058c0be04a8b7fff058d87ffffffffffffffffff6e5ef3e1c838008607008021838430f9088017038e738c00838000000c007818bb13481ffffe042cc7fffffffffffffffffe4e77fb8f00e0061c0c0030070e00e6f0c2000c0e1f0e70200c00000000040021e2f3007ffff81823c3ffffffffffffffffff0c3d7a784c880d300880e00430038cb9800030289f398180704800104009008f03ce09dfffec608f23fffffffffffffffffe26f973e3c0329802c0018200c10730fd0401c2201b320603c300000100324c3e433063ffff308098e3fffffffffffffffffececf7f0f0c4e2303810402030414e674000600049c8438020c004008000010b038f146ffffe19862f1fffffffffffffffffe9e1ff478483b000e0000000010e19938a01801831b8ce008300100200008808181e3053ffec6018b11fffffffffffffffffe4e78f1c3c23300b4400086000181246a80600c04079980818000210000020214c9c605dffe08044831fffffffffffffffffe1ced373e0c8406e100000800061358ec810010101f8202000808800000181c1209306f6df8104124f8fffffffffffffffffede2778f08c860180808430600042633e20004100cf809800406200020000602898f107e7e04184a3fcfffffffffffffffffe8c7ff3c780184d12002040020108cc30020803091f5920810004c000000080a3c1f31607e40e088fdcfffffffffffffffffe98fe071c08c34462004080000033108800600c124fc64004000008400001020611c820021038423c7c7ffffffffffffffffedef3fc71c60d1098c102000008007606708070910fc810000000000400041218fc10802010711173fe7ffffffffffffffffe9ccf83cf00688240201040000000cc3e41098190cfc724c00000002010403023e8e381e981c241c7fe3ffffffffffffffffd9e7c86384cc61188c0e08000000190390062074009e48200000000004003810e003a13d107890b9f5f3fffffffffffffffff5e77b1c386106622018200000000423300c4380807e1080000000001000c28381cc827cc06240c7cdf1ffffffffffffffffedccf031c0021a08e011000000000199e0110c01887e470000000000000288281c0f1873c1450e9339f5ffffffffffffffffe9e3cd861c0060198006801c000001018244380402f7240000002000000021612009114f8d101e1ce7f9fffffffffffffffffdcf6418f8470064010800b9000000189b09e0240c3e080000018008001087008143253f0828d05b1ff8ffffffffffffffffede59061f00c10800810016a0000002849030041887b00000012100900400c30044f087c62226164fffcffffffffffffffffede7c78750600f10880210f600000001f8260809226c0000008c480b000030c130a518f3e489c501bcbe7ffffffffffffffff9d6501f04405804408c01a400000000e080606007000000002060066000420202a43127c987172ce3be7ffffffffffffffffbd5b2706c01c810020001cc00000000e40181802800000080821804c00211098c03815fc2160c939bfebfffffffffffffffede783a59007a1c09800c3980000000014920602e83100000200600d5800486020460f3f8498b00a279ebfffffffffffffffe9e61d898236050230018336000600001c00c80a0025800000018c0390004198092118bf2500d378bc7f3ffffffffffffffffbd5be166c30140cc0060264000800006a01102200f7100020203003380106006067397e644314a1f1ff5ffffffffffffffffbd77291e0214821800882ce0030c800d86c0000773e40008000c4026100300186079179e0666b82471f9fffffffffffffffedf2e24f1a0478e60081809800c322006fa8004171b8e00004010004ed00400a18829567e3048e1e1cffaffffffffffffffff9d3b91cf431828c6c8601bc030c440027d037cc67d8c00408001c056c0100f060e2196fc200b89073ffe7fffffffffffffffbf672f180830e31810003fe0649100037c6efbf19da4400200031033c0023818721811f0882e0819fff57ffffffffffffffebeac7ce66007a46040003fa0c300000b7cf9e7e79ca94008000460f98020e041845847e41018f8e3e58c7fffffffffffffff9eb8d398803c004300001de024080000a367cf9bf8f300000002087da187810c2330c79c4032e1871e3ebfffffffffffffff7fa3ce6208b09720000277e080200007875f3f3bfb37c0080000f07e610d00393f03173c83878470f1febfffffffffffffff3f8738846180b40008041fc022820003d93cdefe9766c0200001f877e2300140f8184670090710518ffb1fffffffffffffff9c9ce6110506451024007ff0000010127e6b499bffefc0400007d8ff81924707c21099ec261c24c46fed4fffffffffffffff5e878044c818500260003ff00400021bf9f33fffffefc010001ff8ffe7001c170d3103f0385899187fbfafffffffffffffff5f97318be8a3828980003f604000081bf7dfffffffdfc040000fecffc40c7058390127e1c1c0f260fcffa7ffffffffffffffbe94083f008c0a1302013ff800402c3fcfffffffffff6100003f78fbc911c961e228cfc0c5036086e1f3d7ffffffffffffff9ec0c87c001820c448029ff821006f1fffffffffffffe000003ff8ffc087438708a087338607c41a4fc9c7ffffffffffffff9ec703e0e8c08b8030009ff800003f3fffffffffffffe000001ffcff8f0f1e1c27200e661907084c3e3bebffffffffffffff9edc0f83e002310280045ff410003f3ffffffffffffff002003ff1ff9c383070fc8004f02464487138efe9ffffffffffffff9fc33c1f041c48490001dff400007c1ffffffffffffff800803ff9fff982c4c24020e3e48c313242c3ffe5ffffffffffffff9e4e68700040018000005ffc0800fe5ffffffffffffff803003fb9ffe30b830793010fc031c1c51a1ff3f1ffffffffffffff9f41e3c0c04244600002fffc0000fd1ffffffffffffffc0c003fb5ff9e36387c20a10f41c24196321f1fbaffffffffffffff9f630f0f202208040100fffe0440fdbffffffffffffffc00208fb3ff3c9093020f004b018e0438819cf4f8ffffffffffffffdf087840c60c20700001dfff008076bffffffffffffffe040983e7fef10ec1dc1c10cf863818e397c9a6fc7fffffffffffffcf66e0570030006000816fff8008ff3ffffffffffffffd0024510fffe7222c7060b08e186042ce1e872fff3fffffffffffffcf638338621100813201dfff80267e3fffffffffffffff818204dfef9e299383c3802c10c1063836007fdcbfffffffffffffcfa61ce30604041840049fffe008287ffffffffffffffe8028025f0cf906470e161049b3043c71d863f85e1fffffffffffffdfa1f38c561810710040bfffe000087fffffffffffffff400003ff07bb189c784880822600c107c207cbff9fffffffffffffcfa3cc31c20208200100767ff80000fffffffffffffffff800027803ff32f0e14830064820452e84270fff4fffffffffffffcf933087201189020002ddfede0001ffffffffffffffffec0019f813fc47878623004c10051c3a31587fff6fffffffffffffefb0631cc304011c8000bff1ff8007ffffffffffffffffffc07ba02ddb0e1e188ec08c601030dac261ff7da7ffffffffffffefb308730189801010113ec07ff0beffffffffffffffffcf7fefc0ffef2cb8626910480060e2038981f9f7d7ffffffffffffe7c1a398018b0880c0617ff81dfffffffffffffffffffff3ffff01ffec61e309c100c14083894c261da79fd3ffffffffffffe7d00e60130ec3c100c1fff007ffc7ffffffffffffffffccffdc03fff74708c795d183030e070084fcbe7fe9ffffffffffffe7d27cc481e483070308ffc601ff1ffffffffffffffffff197e00ffff71e489c06c1440618dc63f1b879ffe9fffffffffffff7c8f31081c4001c6408ffcf00207ffffffffffffffffffe48003ffffa1932308c81801870308703c247fff5fffffffffffff7d8c44201f59139c821fff87007ffffffffffffffffffffc383fffffb4863e170000271c1e214321c5ffff4fffffffffffff7e1318810e34263e080fff9fffffffffffffffffffffffff03ffffffd018e0d43c009c3058470f2317f7ffa7ffffffffffff3ec762086c2cce7c100fffffffffffffffffffffffffffffefffffffc269c310700030e06110368e333fdfb3ffffffffffffbe8d8002e7f838f0444ffffffffffffffbffffffffffffffffffffffc58f0c41c008618384089638e0fcffd3ffffffffffffbe1234cc0bf071f30047ffffffffffffe3ffffffffffffffffffffffc49830861c18c7061822d8c3c9f3ffd9ffffffffffffbec2403337ecc7ce0807fffffffffffecfffffffffffffffffffffffe4b2231c3c009e9c60c4818e198fffe8ffffffffffffbec985c9f7e8cf9c204fffffffffffff1bffffffffffffffffffffffe181ac10e8013e38c3130f38705fffe4ffffffffffff9f449327b7f43b3144a7ffffffffffff93ffffffffffffffffffffffe40e60c2b0106863040e2cc3c47fcf967fffffffffffdf52249ffbfc74e30807ffffffffffffc7ffffffffffffffffffffff8119c38a800021871830e1c6107e7e7a7fffffffffffdf44db3ffbf9f5de2007ffffffffffffe7ffffffffffffffffffffffe0671e181001871860e1531c1271f9fb3fffffffffffdf6148fffdf8e3382183fffffffffffffbffffffffffffffffffffff849e38407000145883860a614f2fc7fd9fffffffffffffa6d3fffffdeef30803fffffffffffffbffffffffffffffffffffffe138e1c9600c38f00f18b9c04e3f3ffc9fffffffffffef8837fffffdc9ee1027ffffffffffffffffffffffffffffffffffffc9a3860280100386146041a6b85cffe2cfffffffffffef9b4ffffffda79e2183ffffffffffffffffffffffffffffffffffffc70e18241080c10c41890c82e191fd9f67ffffffffffffca7ffffffc67388203ffffffffffffffffffffffffffffffffffff8838718c4c000c716001303b8e87e43f67fffffffffff7c4dffffff9cef00c01ffffffffffffffffffffffffffffffffffff88e1c608989000030c66c0f8320f8cffa1ffffffffffffc5bffffffd2dee1001ffffffffffffffffffffffffffffffffffff830f1c00a080210233091ed1c84c73ff99ffffffffffffeefffffffcd7983001fffffffffffffffffffff937ffffffffffff0d3870109801e000c40c231129c1cffcd9ffffffffffffeffffffff8c778c001ffffffffffffffffffff8f41ffffffffffff98618084244030080091086c43833ff3ecfffffffffffbf7fffffff98ce680007ffffffffffffffffffcbfc8ffffffffffff0306021981216dc00000d93c8e267f0fe47ffffffffffff7fffffff199ce00987fffffffffffffffffe3fffa3fffffffffff091c4060204165d80000639c3c61f13fb63ffffffffffff7fffffffc57be10607fffffffffffffffff9ffffb8ffffffffffe1871114c8c43759b003926006181dcf3837ffffffffffffffffffff8c738c4807fffffffffff7ffffcfffffbcffffffffffe1944120030416dd068060cc8c60c339e7b1ffffffffffffffffffff89cf6090c3ffffffffffdfffd87fffffbe3fffffffffc8310c000c14365d2c920eb0f1c38ccf97c8ffffffffffffffffffffa93e630101ffffffffffc00003ffffff9f9fffffffffd18220c238c43759b7b02846638c003c3c4e7fffffffffffffffffff837dcc0600ffffffffffe00007ffffff9f8fffffffffc310c180c38c335cf6b605190a1146f1e9ed3fffffffffffffffffff8c73986c807ffffffffff2000fffffffde27ffffffffb0210f038602775d36b7c32f584103e387b0bfffffffffffffffffffa1ee61a0203ffffffffff2313fffffffccf7ffffffff210e1c06180c775db5b67074710c2b0e3f929fffffffffffffffffffa34ce640403ffffffffff8807fffffffe9f3ffffffff1000f03040983659bdf7f011a030c0387a5a5fffffffffffffffffffa5bbc60b100ffffffffff840ffffffffe3fbfffffffe6661c040c398777ba7b768878cc290c372f92fffffffffffffffffff84379622220ffffffffff901fffffffff7fdfffffffcd08783060f0e77593effdc4c018a211bc786c7ffffffffffffffffff35ae70884841fffffffffc03fffffffffffefffffff3320e0c241c0c735bb693fa4a1e0840271e7e53ffffffffffffffffffa1bef0c11001bffffffffc07fffffffffffefffffff2e0682080d03c7673a5f66632ec3100bc79f969ffffffffffffffffffa6bbe71040301ffffffffc07ffffffffffff7ffffff6e0608421c328774c7fffff85e0440870e3c7a5ffffffffffffffffff24b3960600647ffffffffe0fffffffffffff7fffffe5c3413042870e7765feffff81931000438f369effffffffffffffffffa4cfb61826181ffffffffe0fffffffffffffbfffffdb0604c30c1c0cf667bfffffc91220260e7c7cda7fffffffffffffffffa39e7860403007fffffffe0fffffffffffffbfffffa60409882c083c10cfbfffffb47980c818f9e72b7fffffffffffffffff325cf341100083ffffffff0fffffffffffff9fffff6c206620608318f66ffffffff064030047a799a59fffffffffffffffffa65be300440200ffffffff1fffffffffffffdfffff78088843821450f71ffffffff8900c320f1e5ff7ffffffffffffffffffa8e79b208010207fffffff1fffffffffffffdffffdc0c0234600060cf69ffffffffc2418c028589fd9ffffffffffffffffff19cf3a010600641fffffff9fffffffffffffdffffd8704c41c11b838f69ffffffffc48e30182f2ffed7fffffffffffffffff611ef9861c02060fffffff8fffffffffffffeffff6180a086041323cf6dffffffffc12440c07c7ff3effffffffffffffffff8a6cf900b80e0ec1ffffff8fffffffffffffeffff418d049c204c670febffffffff90710608617f8f27fffffffffffffffff986be418600817707fffffc7ffffffffffffefffc043108308191c39f6bfffffffff1da186009fe3ff7fffffffffffffffff1967dc83400037640fffffc7ffffffffffffefff814b020e08c23879f67ffffffffe1b061800ff0fc99fffffffffffffffff11cfb90d81003764c7ffffe3ffffffffffffdffe053a88182102e078ff7ffffffffe18507061fcdf3fdfffffffffffffffff8d2f659206025f69b07fffe3ffffffffffffdffc10ca90d0890b0c71ff7fffffffff8889c181ec7efe7fffffffffffffffff982cec665c02e64fbc03fff0ffffffffffffdff0656b2182184f38d9feffffffffff81a50618e3e1e1ffffffffffffffffff9ca39cc89010f71df7c0fff07fffffffffff3fe0855b0508609c6c71fcffffffffff8634185a0f8f9fffffffffffffffffff19b778e26000f735f77c1ff81ffffffffffe7f061d58182583011071fdffffffffff00c060f03e3e3fffffffffffffffffff58a6e6c682097735bfffd3fe07fffffffff8fa0da5ee08802c6662f1fdfffffffffec24083f830f9ffffffffffffffffffff4c93ee8820095735bbfff03fc00fffffffc1f08035ab4119999218f3fdffffffffffc9820f01a3e3feffffffffffffffffff9cb39e2440c1b737fbffc093f8002ffffd0fe51fc06a0433230479f1fbffffffffff011e1c828f8ffbffffffffffffffffff9e533c6189007335bfe00740fffd002000f7081fff0e388c4c19e463fbffffffffff8418721e1e3fcfffffffffffffffffff9c5af9420801be77fbe865661ffffe0deffc105fff80a130702610e3f6fffffffffcc8e0605818df3fbfffffffffffffffffbe49f3222000b67dbfc19e9707ffffffffe0a4dffeb80663c6cc61ebf3ffffffffffc1c391e183fcfcffffffffffffffffff8e63e7000002fb35ba047b59e0ffffffff412197ff3c30871830c1e3f7ffffffffff0506068f07e3f7ffffffffffffffffff8e2b9e18c0827a7ff9cfb163f83fffffff025327ff34031c612619a7e7ffffffffff66188e1e171fdb3fffffffffffffffffaf093ea00002727edb8fcdb7fd07fffffc04826ffb64d051851ce3c7effffffffffec072287cd27fb27fffffffffffffffff8f1cf98808207b10003beadffd81ffffc02906d7fa6c4466345983f3dfffffffffff81e0c1f1c8fe99dfffffffffffffffffb620f39c01016acffc77e75ffe017fff004a4d91d1d84418e00133c7dfffffffffffe30347c7c1f2ce7fffffffffffffffff9e31e710120178fffd77e56ffed02ff802129b3406b2a1b3888c7717dfffffffffffc70d8f1f11d939ffffffffffffffffffc9859e50c415797ffe7be2affe9400000224526bbb6888c70081c4e79fffffffffff0414307c7a45e7ffffffffffffffffff9b84fcc0100c7cfffe7be2effe4800000069367b5b68c61c4c23c7af7fffffffffffe850f1f1f2171fbfffffffffffffffff879679c81008f8fffe7bf56fff4980031083acd756d26479198a8f6f7fffffffffffe1c381c3f01c7e3fffffffffffffffffdf10d3a66202b9ffff7bd5affce40006118559a66db189e160232fdebfffffffffffc3060d0fc031f8ffffffffffffffffffce08af00404630ffff3bc687fda200018002432c6d234b8488d0cfdeffffffffffff8c1c383f0887e3ffffffffffffffffffcf430491084b78ffffb9ead7f9920010820dbd59db664d366347cfdd7fffffffffffa470e0fc259f8f9fffffffffffffffffcccc19b3018938fffe9dad6002d80002002bfedab6c09a4989073f9dffffffffffffe0c187700e2e3c7fffffffffffffffffcc8032662661b8fffd9ac5388f6804004053fe35ad073242323fbfbcffffffffffffe3860c013068f3ffffffffffffffffffc9c425c881849cffffca16b7652888100017ff736948d1ccd2efdf3effffffffffff82183321c303cfffffffffffffffffffe92109b80e4ddc7fffc072cb52b5000800afff62d641051101efdf7dffffffffffff8c70464a0e073fffffffffffffffffffc263067018536c7ffdcd2d5aab500082814ffe46b607266627ffff7dbfffffffffffe0c1180c38307f3fffffffffffffffffc1841ce049236c7fffe5ab2d315a006a025ffe5d2c9209888ffffef8ffffffffffffe3066020e1c1fcffffffffffffffffffc66411c164b7b4ffffe292b555a90382c2a7ff2b4888b6213ffffcfe7fffffffffffc81890838bc5f3ffffffffffffffffffc4e0439c86f3f67fffe2d956c8b1803a8127fe4ad5220c86fffffffbffffffffffffc862040c2618cfffffffffffffffffff03820f2093c3d83ffff06a4b2ad0837ac85bfc35b1059919fffffffaffffffffffffc04c10319c663ffffffffffffffffffe27308e48470ffa7ffff52ca95d402d9ad82ccca92208604ffffffffa7fffffffffffe73220c271f03f3fffffffffffffffff84702cb238cdfc7ffffca4d5d4240dba9028186b4c5b089ffffffff3ffffffffffffc20082080382b8fffffffffffffffffe31e12321318ffe3ffff81256a2a00c02c49e2256a453337ffff7fffefffffffffffff88300321e4e93bffffffffffffffff863d90245c85ffe7ffffa592b5b400ce2d47180c48824c4fffffbfff6ffffffffffffe00609887cbd4f3ffffffffffffffff9c73818c7839fff7ffffe29b5550019bad12c159912e613fffffdfff6ffffffffffffec100120e1f508ffffffffffffffffe534f0431c1cbfff3ffffd2494200009b8d0ac755a94cc2ffffffedff6ffffffffffffe07004438ec0033fffffffffffffffd97bc584383e3fff3ffffd96daf80029b8c649a33624598fffffff7ffeffffffffffffe900310e333844fffffffffffffffff9eb316860eb7fffbffffe8347dc1221b8c9096ea4491067ffffffb7ee7ffffffffffff7884038c8c713fffffffffffffffff3dae400c3c27fffbffffec9aff0002998c906566a4d805bffffffdff67fffffffffffc60000d1871881bfffffffffffffffe779e221873c7fffbfffff649fe42129b2c432ccd09a1285ffffffefeeffffffffffffff4221c41c72343fffffffffffffffcef1cc011c60ffffbfffff661f80082ca26099a995300695ffffffeeee7fffffffffffcca10d0271c0d8ffffffffffffffffcfcd9f3039cdffffbfffff93af00482cc8c801b320204b2cffffffffed7fffffffffffe3600419c707c27fffffffffffffffcfbc1070e339ffffbfffffb93642212c98c881d7424214667ffffffbcd7fffffffffffefc840639e2fc31fffffffffffffff9e79cdc14271ffffbfffffd19800442c19c4863294802cd93feffffdddfffffffffffffff8610e38dc3c3fffffffffffffff3de2938119c3ffffbfffffc8d088602c126486648580d1b19f2ffffedcbfffffffffffe7f50138e330e0dffffffffffffffe738ea70c2736ffff9fffff6c42992863c2e124b50901b36c8ff7fffecf3fffffffffffcfff1863cce3c37fffffffffffffff673e3e388ce5ffffffffff74713b908edbc7118a140346d3e7dbffff6dfffffffffffffffe581f338f093ffffffffffffffe5e7f7860b94fffffbfffff73367bca2cdb621048a4048d97e3ebffff9dbfffffffffffeffb861c6e1c3c3ffffffffffffffcb8ff61e6674fffffffffff9b0ef7e0afbaea244128273b2ffbf5ffffcdbfffffffffffefffc4219878f8dffffffffffffffce3fe07899c9ffffffffffed98cf7f0aebace4930504a329ff9ffffffedbffffffffffffffff14761e3835ffffffffffffff9cffc9e1b3097ffffbffffcccb9eff2bddbe01080909964bff3fcffffe5bfffffffffffeffff58ccf8e0e3ffffffffffffff39ff89844e72ffffffffffdf6dbeff2a6db6810488110ca7ff5fcfffff5bfffffffffffeffff4021638bc3fffffffffffffea3fe464b1863fffffffffff7743dff5b6fb69862946d79afff7fe7fffa9dffffffffffffffff8e2dce261ffffffffffffffb4ff99e16718ffffffbffffd1322dfe5bf9be109230da125ffefff7fffeddfffffffffffffffff21718cc71ffffffffffffff1ff79858c72fffffffffffbfbbbffe466db791106198e47ffefffbffffddffffffffffffffffe81c3331c3fffffffffffffe7fef19a38cc3ffffffffff7f9dbbfcd36dde80d40b31495ff9fff9fffb8dfffffffffffffffff180ce478ffffffffffffffe7f9f224e3b87fffffbffff7fcc1be999efd6ca2c3b6192dffbfffdfffed7ffffffffffffffffe9c73f0c39fffffffffffffcfe7ea518621fffffffffffffe647a27579f7026926c1219ff7fffefffed9ffffffffffffffffdc04f938cffffffffffffff1fdfe0971981ffffffffffffff36781356ddea4c3888e5b3de7fffe7ffb9bfffffffffffffffffe31c263b3fffffffffffffbfbfc30c7633ffffffbffff7feb20743f2dd6709620149619efffff7ffedcffffffffffffffffff2399ce63fffffffffffffbfff44b8c863fffffffffff7fedb56937add667a4606125976d3fffbffedcfffffffffffffffffd18b31987fffffffffffff3efd946393c7ffffffffffffff4d5a537e7dde109499a48441fffffdffb37fffffffffffffffffd18cc7219fffffffffffff7bf3a5ce070fffffffbfffcfff2c894bfb3f3ba5ad3b032cbffffffcffb567fffffffffffffffffc833cc67fffffffffffff77efab989c1fffffffffffeffed6d5a37fdd7f2328646658fffffffeffedc7fffffffffffffffffe467218dffffffffffffe7f9f6332305ffffffffffff7fee34a977fdcf74a5268a910fffbfffe7f63bbffffffffffffffffff20e9233ffffffffffffeff7f4c64e30ffffffffffffbfe732b57fe6dff94e4cb0923ffffffff7fbaafffffffffffffffffff818cce7ffffffffffffcfeff04d18e3fffffffbffffbfcb5b537fff3fba569b69247ffffffffbfaee7ffffffffffffffffffc923389ffffffffffffdf9fe9323187ffffffffffffdfdb996977fdfffcb1326248fffffffff9febb6ffffffffffffffffffa8b4609ffffffffffffdf7fec6cc60fffffffffffffef34cead7ffffffde8759491ffffbffffcf7bb7ffffffffffffffffffa449c33ffffffffffff9effc9d18c8ffffffffbfffff73ad2577ffffff9d2efc423fffffffffdfeae7fffffffffffffffffff1570c3ffffffffffffb9ff1927311ffffffffffffffacd695b6ffffffe85fbd847ffffffffff7bbebfffffffffffffffffffa1e30fffffffffffff3ffcc2cc443ffffffffffffff99635ac7fffffffebdb320fffff7ffff9766dbfffffffffffffffffff838239ffffffffffff7ff9d339843ffffffffbfffffdb79384ffffffff7b7e601fffffbffffbb7b9bfffffffffffffffffff8c18c3ffffffffffff5ff79272347ffffffffdfffffeeb5b7a6fffffff75ffb03ffffffffff7db2effffffffffffffffffff80618ffffffffffffe7fcf24c4887ffffffff9ffffff55adf8ffffffffefffc5fffffffffff7936edfffffffffffffffffffc2863dfffffffffffeffbf419920fffffffffbffffff99d7fefffbffffb3ffecffffffbffff7b73edfffffffffffffffffffc01873fffffffffffcff7f673204fffffffffdffffffcefffeefefbfffdffeebff7fffffffede6eedfffffffffffffffffff8861c3fffffffffff9fefe56cc8cfffffffff9ffffffe66fffffdfffbfcffffb2bffffffffefdaaedfffffffffffffffffff90c783fffffffffffdf9ff4c9860fffffffffbfffffff37ffdefdfefffeffffeffbfffbfffeaf2bedfffffffffffffffffff501e0ffffffffffffdf7fee36102fffffffffbfffffffb1ffdefdfefffefffefffffffffffdedb36efffffffffffffffffffc4383dfffffffffff9effee4911b7ffffffff3fffffffddffdffcfefbfffffefffffffdfffd9d96eefffffffffffffffffff90e273fffffffffffbdffd8d8cc3fffffffff3fffffffedffdfffbffbff7fedfffffffbfffdbfaae67ffffffffffffffffff9101cffffffffffffbfffdcd2897fffffffff3ffffffff7fffefbfefffffff7fffdfffffffbedb2ed7ffffffffffffffffffc52719fffffffffff77ffdcb42377fffffffe7ffffffffbffaff9fffbffbfeffffdfffdfffbddb76cfffffffffffffffffff848c73fffffffffff7ffff9a4a6fffffffffd7ffffffff9ffbffdfdfbffffeffffffffdfffb7daf7e7ffffffffffffffffff6099c3fffffffffff3fffb18916fffffffffb3ffffffffeffbffe73ffffffcffffdfffffff3afaaef7ffffffffffffffffffca630fffffffffffe7fffb93244fffffffffaffffffffff7a7effefffffe7bffffffffffff3beb6af7ffffffffffffffffffe1c43fffffffffffefffffac48dfffffffff6fffffffffffdfffffffffffe7ffffffffdffffeeb7efdffffffffffffffffffd338f9ffffffffffeffff784c3dffffffffe6ffffffffffbffffffffbffffeffffffffdffe76ebe6f7ffffffffffffffffffc661e7ffffffffffdffff713081fffffffffcffffffffffe7ffffffffffffffffffffffffedbecbff77fffffffffffffffffe1c78fffffffffffdffff7343c9ffffffff9f7ffffffffffffdfffffdfffffffffefffdfffbaedb67fdfffffffffffffffffd71c39ffffffffffdffffe48a09ffffffffb67ffffffffffffffffffdffffeffffefffdffcfbedf6f7ffffffffffffffffffd43863ffffffffffdfffef32c4dffffffff747fffffffffffffffffffffffffffffffffffddeecb7f7bbffffffffffffffffe1f38f</textarea> + <textarea id="cmdIMAGE"></textarea> <canvas id="canvas" width="400" height="300" style="border: black solid 1px;"></canvas> </div> </fieldset> @@ -110,6 +113,7 @@ <h3>4.2 寸电子墨水屏蓝牙控制器(nRF51)</h3> </li> </ul> </li> + <li><b>灰度:</b>目前仅 <code>EPD_4in2</code> 驱动支持 4 级灰度,其它驱动选择此选项结果未知。</li> </ul> <p> 系统睡眠后可通过线圈(NFC/无线充电器)唤醒(需正确配置线圈对应的引脚才有效),否则一旦系统睡眠只有重新上电才能开启蓝牙。如果价签上带有 LED,系统启动时 LED 会闪一下(需正确配置 LED 对应的引脚才有效),以便知道系统是否已经被线圈唤醒。 @@ -119,6 +123,7 @@ <h3>4.2 寸电子墨水屏蓝牙控制器(nRF51)</h3> </p> </fieldset> </div> + <img id="demo-img" style="display: none;" src="data:image/bmp;base64,Qk3Y6gAAAAAAAHYAAAAoAAAAkAEAACwBAAABAAQAAAAAAGLqAAASCwAAEgsAAAAAAAAAAAAAAAAAABEREQAiIiIAMzMzAERERABVVVUAZmZmAHd3dwCIiIgAmZmZAKqqqgC7u7sAzMzMAN3d3QDu7u4A////AP////7//+//////7v//7//f//7+61////7+/v7u+N7uY4h1Vnp0RyR3Pv////////////////////x+7Y6ET///////////////////////////////////2///////////////nP////////////q+///////////q7////////4v/////7Frbncm539fLeajKj8mu73v+6O3K////////////////////////////////////////////75hGVnzbVKxlNHvf///////+/v7+/f7/397/3//////9PO/////////qntllZnZkVYlWUqM/7////////////////////8bufLRO7//////////////////////////////////N//////////////6O/v//////////+s///////////9n////////+ev////7vd8u8uMrut9lpuduep57vjP7qqs7////////////////////////////////////////////flkp1Np7YVFymNq/////////////f3+/v////////7/5q/v//7+///v1u3IN3WWZEV6hFkl7+///////////////////++I6cqIv//////////////////////////////v///73/////////////+57v///////v///6z//////////+2v////////6L//////+4yq25yO+36Hiq2o3Hr++e78mv/+/v/////////////////////////////////////////+uIN8lUR891N8yGb///////////////////////////73jv7////////23fY1l0d2VEZoZXPu7///////////////////7+mo2WvP//////////////////////////ym3f/P//vO/+///////////9rf///////////+nf///////////M/////////oz//////vfKrqnI3qf3eKnqnrmu7n78m/7+////////////////////////////////////////////72VWeOhCOnm2SM3P/////////////////////////v//xe7////////viu6zV2ZVh1Uzepo83v///////////////////9/3Wdeb///////////////////////v/+qu2K7///+7///u/+/+7/////mv///////////+yN///////////rzv///////9nf/////v5om+urffuNaKqtmNt6/sfsnf7//////////////////////////////////////////////ukzm3acUySd6TWd////////////////////////////7k3+/+//////+o/rNniHZHVVMmrUjv///v///////////////v/v1dtbrv/////////////////////+//qO/9iv/O/8vv7/7////+////69/////9/v7912/Z7//////////+rf////////uO////7/77ib27yPynxqua6pznn+6Jnv7+////////////////////////////////////////////7+6GEq6UfIMkndykf///////////////////////////7/hM/u///////8frtUt1ajRkViNNdf7v/v////////////////7/77jmae///////////////////////vp/7uakXf3vu///7uz8yZ/////5v///////12zPtvrf/v////////+//////////a/v/////e1mzrnZ/rrXqYrZqei+7Xrv/+/////////////////////////////////////////////v/YNDKMtkSHMjrb7P////////////////////////////6zm/////////195mOah2ZzZlZW2Tzu/d///////////////////994h43/////////7////////////vmP///P+H6//c///ulmm7lu7/7/ve/////v6r3v38d//f/////////I7////////8n+/////t/Ha/yantisWoidjKyc36Xf7/7//////////////////////////////////////////////edTVUStckzHMVy9/////////////////////////////uW7n+7//////4v9cal5dmZFZ1W9N/39v////////////////+/+/ueWjf/////////v////////////lu7+7//+fb/+v+/8lJ3//rjP/v+N7//////a/f/u+W/+/////////9n+////////uf//7v//7+tc65yv58xriH6azZvdZt//7//////////////////////////////////////////////olmRUViVoc2y2I13////////////////////////////v56+47//+///91t3jWYiGdmY2Uzx179ru////////////////////7GV+7/////////////////////w73////++Zn/+v//6G/f//+a//743///7/7a7////9W/7/////////6f////////667/7/////zkvsub3ny2uYjbi/fNdH7////////////////////////////////////////////////+1kVIVmYTjpZKy1N/////////////////////////////77Tfyb7v//7//33JZmqIZmWFRIY+St2f/////////////////////+o23///////////////////7fl8r9////77zN/I///pn/3e/7n/7vjv/////7z+////y5ru7///////7a/////////pr+/////u/eeeubvcfdXKZqee1rtnbe////////////////////////////////////////////////7bVCVddFImvnRq2o/////////////////////////////+07/te/7+////efpltnqHVVZ1Ridk3J/////////////////////v/kW+/////////////////+7vmPt7//////pr3vnv//nKh7/u1+/v6f/////tnf7///+7+p//7v/////9z+///////+i/3//+7//v647Iqt2OxdeViL3Yjphu///+/////////////////////////////////////////////pdoMzhmNUIpy1OL3////////////////////////////v32f+/on////++37ZFedZd3VDhmNHTXnf////////////////////7/g87////////+/////////uhvyj7v///+/lru+u//+ofu///W/+/J///+/9i//v///7zvqf//7v////zP////////6r////7v//7ce8l5zYyGaWnorNeOpo3u////////////////////////////////////////////////5zZGEFfJNGFLyjS////////////////////////////+//ld/993/v/v/uado1WrSaVkRGVFUmbO/////////////////////v6zvd////////3////////9tviHXt/////uet/Z7/79S//t7+n/77nv////pv/v////y/76r93////+6r/////////6zv7//+7v/u6J2prtjZWZd9iuxs2Y/v////////////////////////////////////////////////3rUUohI53GVSNt6o//////////////////////////////3i3u/vl9////6GhSeUiWaZVkRWM0Jr7v////////////////////78Sv7////////f////////xJxni7/v////+Z7+nf//5t7//vyP7/6u/v//6W/u/////K/u6ZuZ3u///6r////////+re/v/v/+/+/6e4yvyeZMd4yM7Gznnv/////////////////////////////////////////////////JpmEyVVRr2mVDJt3////////////////////////////v/oWv/+/8W+/u/ZeWZNo4p1iVVURHgUve/////////////////////v1k/////////+/////+/+1VmJfdnf7+/u/5nO+t/v74v+//+t///p///v73a//v///83/3Ne8uZmqzPm////+////6d////////78xqus3J1nx4i33ee9ev7////////////////////////////////////////////////+pVZEA5pjR8uURCO////////////////////////////+//1T/+/v/njv/fxrlSi+RKpUdVUjOCK9/v/////////////////////3fO/////////////v/v1GyJfNqL3+3//uxd/oz///17//6c/+//v//+/rrJ3v7///+f7nxXr+7uzLvMvNze7t7+/6/+/////+//74n6r7uWjpd8fep+197////////////////////////////////////////////////v74M3QiRqZCWs2FU3/////////////////////////////+79KP79/f6Gz/6TpnJWrWSNVHVVQxQZ3v/////////////////////ueZ//////////////395oiniOtaid//7t/Fvvnf/+/8qqu9////2///7vi6qv7v///s35bHRq7f7+7v/u7e7u7/7+nv7////////vtuvPeJiepnyb+n227v/////////////////////////////////////////+/////+7spUERZDWKZDatp0j////////////////////////////+/+6Drv7/7+lu38VrUnZo2DanJ2RnIhPO/////////////////////+93j/7////////////v56empe9KPanN/u+VKu+9/u/v/83//+7//t//7+2dO6rv/v/+37dSg1Wfzv7+/v///////v2v/////////9z32t+IpY6nqpzajZbu//////////////////////////////////////////7///////6VMiUYYzaZRDnLqf////////////////////////////7v7qS4z+/v/8St7SeDSlZ7tTmDSWSkQZ/f////////////////////75me/////////v///99ZmVpq6IaPZ6jdyFsn/q3///7+/+/v///+7///+K+0ubzv///bjqIVMzf9797//////////a///////////viav6m3npiJjriNme7+///////////////////////////////////////////////+23QFcjRpQierImnO/////////////////////////////9/vxK2b7+/+/4bPg3YqllebUopEU2UyTN7/////////////////////nd/////////////+1515qI6XdedOzHR0xBf+rf/////v//////zf//7Y3rheqqzu3JedhDJSMn/f//7////////7n+/////////++3rObOitmnudqY1t/+///////////////////////////////////////////////+/bcDZypVR3MUe4RFz/////////////////////////////7v7mb+m/7/79+EvCdSp6dWfYJKczhTI37f7///////////////////+d///////////+//9DyZeV7VhdtKV/O3mkhe+t////7/7+/+///t7/37msS0jNuomZyiijNiUzGd/v//7v//////qv///////////eadedya+Iaq25i2zv///////////////////////////////////////////////f7s5BRDi8g0NXIVnJJ//////////////////////////////u3+xN/5f9/t/v1mO4GLh5RGmzOMU2cTPP3+///////////////////67////////////++o5IimrHlcw6VOV3enym/5v////+/+///+/9zv/cfEY0467+6o78pHdTI3NAe97v////////+7///////////f65lv76rbt7rbuJb+7f/////////////////////////////////////////////v7ayTdiJ4vbVUR1EznM//////////////////////////////7v7mf9+3v//u79tYxRe6amRHphWqVHIl/f////////////////////rv///////////v7G7oN4n3hbt5aLhsbFi6bvqv/////u/f////3f/oevpqNbWo+uecqnZlRCVjMn3u/+///////8v//////////+7dWN/frtmmydm5iN/O/////////////////////////////////////////////+7/2jRWF1hIynZERjJUr//////////////////////////////u7+0+3u6I7v3+77OII1vHmjZ6gjq0MxKv3///////////////////+e///////////+713f+TfXpp6GbIlbXHbUld7r///++/vf/+///t7/1NypWidlWsfVm5lUhUc1ciKO7f////////u////////////+9X7f6M6bi615h5/a///////////////////////////////////////////////6rnVjFKdaVYumRTZiSf//////////////////////////////zv/kn+/fp97/7993dFg312gzSYQUulIk3+//////////////////7p7//////////v72v+7+tqiI+liclbSqXWb27dr///7s6frP/u78v+7SXGuXkoZHuHtYeZRGNnRaUifd3///////+7//////////7c91n/76rouJrZx4r5/v////////////////////////////////////////////7/6XKlFHWISoVquVZFdH///////////////////////////////u/vVv3/78i//+/rVjRnVtloVEiWM3ySM63v//////////////////nv/////////+/on//971WmzWhthYpcSoW4e+uv/+/srZ10v///uv7mdJpbeoKFV+eLZ5eDZUdjaUIn3e//////79v///////////63vv7+meiXubnHjazv7////////////////////////////////////////////u3JE2QYd4Z1eFSKp2Vlf///////////////////////////////7u+0za///nn/7t5JIouUW8doM2ujJ7czN9//////////////////+u//////////78X+/v/+tW3JZYpl1JWLSVZ67J/f7/ueqdkq/t687sVHOYanx0dGnXeUh3dVU3gmowNt3f7////v6v/////////u70nv/v+oyZipuLabr9/////////////////////////////////////////////u7bJWEGq4V2hldzOdlUif///////////////////////////////9/fZvuu7/6Iv/7YeiNrtke3SENX2BJkhL3v/////////////////67//////////vTu/////VrfRmyFt0htW4TEf9j//f661r32Ks/pvtR2RFtFlNR0VbxKZVZoSWGHRqgBX+3s/v//7b/v///////v23b/7//qzXd6upqnjv/////////////////////////////////////////////u7sNHQRVpzGhjZTdTWLZa////////////////////////////////7u+z3sfP7/t57txbOEm7dHqWVzN7tRM1re//////////////////rv//////////ad/////6atWWrFqjpLaLS1FtyO//r6yU/8nBrurO5FpHJ6NnWkc0W7TGRUljh0WSm1FHzr/u//7+r/////////2rbO///9q8mHmqt3W/////////////////////////////////////////////7++8UqUCmEWLyWlmRGhia5n////////////////////////////////+//Wu/Yr+3tpv74k2gmu2Vax2YyR8tAM77+7v//////////////+u//////////lbz+////2JiFi3XUZaZcalOD25792NuGft2MYs6a32OWRjuTdblXQ3yUqXQ3RXlGY4x1mNyd/e/u2u//////7/zeZ//v//6p6Ih6itVu/v////////////////////////////////////////////zPcpVBVZtjeul3hzRHhjff/////////////////////////////////O5mzf+m7/38WdhaJ2NK2UNMpHczeLkRGM/////////////////67///////7/yvju////77WUfobEd4pMhXRzHtfv/a9l1/7W96LLvVR202ZMZHXHSDN7hZZnI2Z4V3R0I3ZmR6ze/s////////7/ld7u/+/7r3qYqqxs/////////////////////////////////////////////5eVRHxQSZVctzXdlWpUQ4tX/////////////////////////////////+rcS+/fya/9/qe0U3dnOLtzOMdYU1a4Ejnu7///////////////nf////////7u+O7////+l4TtWZSGk7lZVmQ76N3Zh0qn78jX+zadUnaaODfERXxUJCWoOWZzWHZ0qCTmf6rZeZm5n/7/////7/xN3//v/+u9jIi++G/v////////////////////////////////////////////+YcyiSKoeYVqtTfNhZljNIz//////////////////////////////////Jx3///9eu/t+rNjJoWDW9kzW8SIUkhybO/+//////////////+d//////////363//+/v1aWOZ8Rhcm5qZURTrYvfhci6jtt+jec36ERFt1cahFN1FBMSZ1tkhJk4pJY8yF/Lt9+7y+/////v//1a/v////+7yMd63Vf+/////////////////////////////////////////+/v7chBlxGLymaGWbhDfaZ6ljKP/////////////////////////////////++XLP//73e/7//DU1V0lSfMcznWWYY2In7P///////////////57//////////uv/7v///JR9hpgEnM9TQ1OFOueog698pe+45+2LGRVTR6OHLZdBWGY5MlZZZoOYWIWJz/a/7Jjv/v/v/////v+G//////78vo2Wn3ev7////////////////////////////////////////////ekxV2AlyruWZzXcghm5SNln///////////////////////////////////cw17e79+Wnu7daDczdoc1rIUlynV4QhNvzv//////////////nf//////////+M//7+/peOoVsWfu7GxDCTl36JKYzJ6W7rnX7YlxVVVSuUlGoxeIe2uUJESmZzdUiDft3v3vtp/v////////+23//////v3NbLbKh77//////////////////////////////////////////unOxlZUAbVHzbylc0i7dFaoeMz///////////////////////////////////z7GP7u/v543/3DWGUYh5UpykNIyWiZERXe//////////////+t7/////////73zf/f7+ZZ6WYj2p/P/a9ha4XaJPfOfKj9mcjte2YVSFVKeJVTKaqNt8YiVFxGg3VZpe7v7+7rPu7v///////mn////////ayOpafX7//////////////////////////////////////////v23lVa6ATaKRIzryFUlrKdEepav/////////////////////////////////+/N5if9//7vpb3fQ22EFoWWJb2ENap1mSMk/v/////////////57///////////av7v/uc6+UqAzMff7u/cgnovVp1+1+l+95ydyOREI1V2SVhSFmVCfKboZFdMRaRlO4/e/v7+yX3v///////4be///////8q56mW7bf//////////////////////////////////////////7+1EKoMVdCbKRJ3XaUMnrLczaa///////////////////////////////////tr5RV3e//79adzEKtpSR2ekGOt1Nstmkrve/////////////+nv//////////+17+zNlI3FvGK+6b/f3u/VS0V5qo3Y2m72q524sjkyFjZnVGIYyEQmx46VNUe1eTZoqu/u/9/vuP/////+/7Sv////////68jLSeuN///////////////////////////////u/////////u7u5pJkUDvLcSfYVZx0qVI3rJVEf//////////////////////////////////++Y5nZL/v7+7oadUmrMQjVmmCS9lUWNlSi+/v////////////+e//////////7vprdop1znS2c9n8f/7+/uk8KbSrnrjZjdernsdzJ1QydXZRckWHhjN9eMW0Zmtmc4iJ3u/+//73zv///v7uR+/////////b1+k76X3//////////////////////////////9z////////vz6ypRXYAd2zJYjqnRbo2uFFK24Nv///////////////////////////////////f1pPYI//+/v+2aUNo1XYVhXo0XcdUSNcHnP7v///////////63/////////7//Kt+2mjpSkQkrb9q/u/97kYq1Mp+2NmP57uOyIUlY3InZRWic0VHAVbFhno3ardrZnW9/v/+/vxtzv/f7vZc////////7+nnxWrYn///////////////////////////////qP////////3tslR9gRZVhn+5UY62NIQ7uEI8yK////////////////////////////////////3/g360Su3v7v6nM3RJy4I4ZXgjnphlWEGEr/////////////rf////////2v/vds+IfqWcTZOMzcXv/9/tZWa1yI+36o71qZ2mdUQhSDJESFKSJKRAEltUK3RjfFalhkv8/f7v33td///vha/+/////////ahpevee//////////////////////////////+5/+/v///+/s9oVGQkRodVZX3aI3y3VlJcykM1z///////////////////////////////////7/73G+xTjt7v/u6RtTSL1zF3Zbg1vJZmkmh/////////////+e///////+/s/v+E3YfOZ8aZ1E3a567e7s9kZcaYr6n5juXKrqV1VUQmciJzc0IEtUYBFKI9Z1dWt2lnY7/u/+/vhm/e//xI7v///////+/tpZxq1a///////////////////////////////8jf///////u6VlKgBF8iJlVd53HM5vIVTSMuEGf/////////////////////////////////////91hr8k1rv7f7dN2dUbMxRWXWLYo3JR1Td3v///////////p7//////////+/fjZiPhJljXNN+7Mb/7+2zMzpOevqPiOxreNlFijRkOUNWOWJTRXSWAROTZ3o2WcWLeGOt/e7N+0fv7v1pn9/////////+5022nG3///////////////////////////////yM//////7u6YUX1GIUjKacZFVry2FJvIdCOoeo///////////////////////////////////+/u7pR13tU3z//f6R3rUzjMlDdkW6NI2Ggn/v7//////////+nv/////////u/v6ch9xZpjFa2S/ttL7t6TVSFkp66Y2J3Vqa61aNIzZkg0JiVDJiWDtAADcml9Rli0qlh0r/78mqWd/v5tbv7//////////Ua8e9je//////////////////////////////+p3+7//+7++zZIcTJYY2vIi+ZDSLvDFJ3NtRJrj//////////////////////////////////////95lp57aRa/f27Kb24Q1vXUyN0rIRIelKa3///////////6e////////////78ab10yCSYSsRL7KfN2jR0g1GVroj5jcXJnKZkgiUnVWJIJ3JUYWVrIAASOnXFRatbtZhK3+7GVc/u96fP7////////+72ebuM1u///////////////////////////////5jO//7/+au2cTxzE1vLQ2u0i8ZDW9yTI3rbZTOP//////////////////////////////////////69OuVu7EKO7rVEiuqjM4/FEodE3HaNwxhs///////////nr/////////////xu3Ex0Gd4iWUS81L6iazUjc2KtmNh/1LeukzaKIlVCZ+Zi1aViGjoiEAIkuGxkScS7WnOd36Nq/u+KuP7////////+/3nor3un/f//////////////////////////////yL/v///tpjw3ohVmGcvqgKyFjJZCfeyDAmVrY3///////////////////////////////////////rdG35Wu+TStxoOEbNxjJJkTE4ZX3HacSJr//////////+WP/////////////HrjqVJnRmRDhTdlJTa0ZEI1lld4xzM0x36EFkhCYlgXhclbSjY0lIcxABE5hMYmi1ymqiR2Rc3++Jxt/v////////74i1i+m3f//////////////////////////////+6Xru7/77zHUjnDMTbkN4rbM5xlzaYie+2EI4hqr////////////////////////////////////////oG+22jP2CaF1FtjzLZDM1tTN4V4+3czz+/////////+5Z////////////7vyJWlJLdIU0R1I2QEV4UzUSOVykRTKICHfXUmJHQjN4Rrhlp3pGJlR3AQACKKWmRItq1lVrRt//2J9o///////////tbrWsuJlt///////////////////////////////6ad/v7uaVdUMzRYIo2URI3YM3tGzKgyfNlDRbh////////////////////////////////////////t5izv51vexhfbVqc33ZQQNnpENGRq2pI6//////////7lvv/////////////4SnQn4461M1VBIzJJQ1cVE4TLYQM30zaedFUzhjE301jXddOVRCg0kwIBBESU11Sba4RsZu/f7s/Y/+////////7/Xttny5iK///////////////////////////////ums3v79+TYhjBEDdYJM+EEr+5EnlJzMpCmnwyZb///////////////////////////////////////v7sVYzvx47cMzU7d4NX2jEzWslli5Z7tTnf7////////9TO///////////v/ud+ol9j3GvWZlETUCRkVCQDhN0ilWfGQ5xkc0JEQyQ3mnxWiztGJaI4EhNgVFk6hDfEXIRu3v3//P7/7////////+XOvZXJZ13v///////////////////////////////ibt3sRXQSRiUkITaWNL2jFr62I4V629wxVWsRn///////////////////////////////////////7+5kub7thbxdtCjalzNqUjIkjKdZynaoKe7v////////1O7+///////////+13sjx3SHztxlE0ASJFVjUjXErBXXdbRjnGN0RDQ1VD2mi4VsdZNxZiakUDUVNZSaZYW7dL3v3//v//7////////ui/y+5syYfe7//////////////////////////////8Z2rWr2IRRBIVtCE1dTVp2DSL2EJDR6zZZSdmqf///////////////////////////////////////v/XSduO7aVX/9Y2xyIxQ0RzImraZZuVZD787///////7U7+///////////9+ItBi0dDrfz9kTESMTM0MzFbXIGNaGZHOdcmVEYliBTLh352bkiFYYQ3pWE0BTWHjGPFZL/e/////////////+/vif6f+236hs////////////////////////////////iIyFgoRRJiEBVkpyJkRkRs1iOOyDNSR7e4RBfu///////////////////////////////////////v/vxCztev31ObzSZHUkZAQqhTI2vZZ6mHFa/v///////tTu7////////////X1wXDe0Tezt3eQXQjJEIyQDtYIa1axzg51kRlczVzZ12kWrdI1ZVlJiKKaCEyYyZXdCeH7f/////////////+/viO3P39aupW/v//////////////////////////////6ZrO1YIgSRIVMiJ6thSWdkJq1hSL1ldEF4XGRW3/////////////////////////////////////////7sFt76a8amfMRbMkNEMSPMcyRJzJZlpAjv7v/////txO/v/////////+32qkOFjrWFvt/dzpIUAkQzMxCVgjvXjbNFm2dlZyRDR3Z+eF2WXYW1k1VGanmzJmQSZ1l2/e/v////////////7/qP2/3++p22b+///////////////////////////////6V/yHUhJBQxRUESWKlSaYZ1RqxyOMdEZlFFTMef////////////////////////////////////////zP2SPe7mht12eTR3d2F2I0nKYzRq26bJGv/v/////++E7u///////v///+bUNVTYS3Vc7K2ayjIhJSNSAYVyO8idtCWsVIVmNkOFaUy0idZ1xmpGSURkZlM3NWQ3xlzf/u//////////////tf2d/u7qn8hv////////////////////////////////qVjrggNgIShiE0AlaclCa4inRLyBKLsjaEF+zu///////////////////////////////////////+/rTPZnbs+Crf2URTZ2UkZ0FIq3MiN6veQz/t/////9/0fv7//////+///feaIrKraqSdWj2K3UQRESIzISR5FLx73ENKxEVnU5N9VmluZ0uXV9OZZD1TlFe1inRXY2273u/f////////////5f/P/97/qfxa/u//////////////////////////////7ClExBUgMRI1kyOEEka7kzeWm5JZtwRFYUR1Ot3////////////////////////////////////////v+2iziErWiGrexTREtEU3pBR4unQzSNd8K9//7/7//sKe//////////7+5rQoNYRqZriVNkhGVmQAEjEyAVskvYq9NEuzk2VGOWuTNEnFdraEqFlXRZJ2eMg1mURWaM3u7t////////////yP+d7u//7I7mju7/////////////////////////////7qd0MQXnQQQzIjcyWCISi9c0eYjJdYYxIzImm3bP//////////////////////////////////////////yVZMlGSpp4voMiMiVmVuYiR8ymVCRHtFzu7////vg57////////v/v6pc1c8Rbdpl7XCh4WWlCEQITITW1K+aetIasSFRFRdh7FUUZZlq0VfVaVitTdGqkWIhiOHaO3v/f/+7///////x++8///+79bOaf7//////////////////////////////ut4tAEktSIyFBM1cxeSESjLdFaYvbilhARJhW26///////////////////////////////////////////vlQXpYWr8tolkVFIzaVakdDSLuGdCR5K+7///7940fe///////+///2pCVJoWll1KapbGl1aUkhIRRBJLsVtohDtpxHZyY1jWhlVzEyM8eGbGeEVJREJtZbZHdDSIa+3f/v/v////7/x97c/v////171s7//////////////////////////////v+nZCRDERuDMxFDNHcip0I0u9tFdou7aWcii9lI7///////////////////////////////////////////3+UW2SNa3rdkJSNlZYpnc2ZFR9ljWocjn97+/+6EVt7/////7v7//rhyVV1FZVtaZ7TIppXVdYNCIiMzzFRERWWlqzhVEUZZuKVEs0dkbVpZlKZ0aDU1ezaqNXczWWje7u/u//////yc/+/P////7pvGzv//////////////////////////////7sihJoUhEnpjIjJCJYcmdDMYvclGVpeFd1lWnuef///////////////////////////////////////////+2nFVV2N8+CMFQYWaZsVoJIQ0apVoulCcbv797GM33v//////7f/fiTNkpjtTeVpcWqdpO4R2tDYgI2LZipaMxba6O4IhNYfmdlY3tXM8dqXXWndGc0U4pGiGRXY0dWjP7v7/////+9/u/+///v//h8ef/v/////////////////////////////9ZzOURTZFE6QyM0VSFZMkZjIn3sllJXZyzNpkz9////////////////////////////////////////////7nQ2Ao21KIU0BTRIune2ZjUmdVOep4cdee38v4c0n+///////8/v1nGEfyi1Sl5Ld9Wlh9STt2IRISccqMx6zGt5opojNCto43vJnMMqPmlm1mtGWTJVGVdld0NWM1dnn8z//////e/f78/+7/7v+Wt47///////////////////////////////2gB4sxjGNiEoYiI0hDJIUsyTEozstkFEbd7OpFz///////////////////////////////////////////796jFBOM+UNUYyI0bNtTqGVEVFVEm9lzNt7frqSDV+7//+/+/u396mRGXYPFdjx3tdmGlsRzm1slInUANGmHu7W2mSRxQmlsZrvM7c2jRntsWsSZVGYxYlUqdFiVVzNEdlv93u/+//3v/v7+/v7u7tiXr+7////////////////////////////+/3FDEltjm1VAJWUSIoljR5Jb6UI5x2mTJqzf7tqv/////////////////////////////////////////////qwQalTOxRM1JTRVzbVFdySkY1aHrckX3uu+eYNJ7////+7/vP7WYqaLOZd5OFxbtcaXtlTHmUU5dhAVIkRotJW3ETNHOWh57d7d3dUoWoa1u0x3SUJURmRmU5pjdEM2d47u3r/+//3/797+7+396amO//////////////////////////////7cVoYRN8c0pSViJVQxEmyEJoNL6UJGdnObhq/u/+/////////////////////////////////////////////++2AW1xmHNRMUWFVdu1UyNF1zRkZ3rRju1upeU03////+3/+s/qUytdY8d4aUuV5ZaWpXOZbFk1phAAJYpnZFdHUiE6SDtG7O7t7951SEtbd7ZNVkZBVnRmGnSKlUZVRFVZvf///e/u///uyI/+7ZeI7u//////////////////////////////1gdFQiNuY1ljdBNFUwEr3ENmF7y1IlSc3elq3O/////////////////////////////////////////////v/ugQVYw0I3cgNEm3Xet1EDNFeGZVaGN95d5bxiTO////3v773toyo6s6iHqZWjyYtnmXRsbGmycXARIDVGhqOEZiIClGY4re7d/+7ZV2aLbGjle1ZFFDSzZSSFWKdEZkRmRJ3N3u7f/fzu3/af77lIvu7////////////////////////////u7rICmIQyOXM6pkVAJHNCE52WRkSIV0EXve3cl73f/////////////////////////////////////////////+yDIndokRS3URY66FvLYiMzFqdmZmYzmX937VFu7///7///rP1jhz5mqGpsa0vGpbe1c5l6a1VBIAIyMUFAQlNkARE5O0St3u7u7fosVkunpapahWUyVHlVRliFOaZWhjRURt/c7u7t+5/d/G3t3Xmq7//////////////////////////////cwTMljGQzN2VqlUUxFHhiJa2VUzNXc2Rs3d7rl7///////////////////////////////////////////////YGDaHZjQVZUInV8pqzCI0IjaMdJY4d4zE3cMX7///////6d7SFDMyd8dqe4WIiZXGlGtpWqWScRASQRQSJiIiICMRKE057d/+79yjrEZ7erX3jWVmM1G2c2N1lyWlRadVM0Sd3X7u7+bv3eae3uif7//////////////////////////////sYjaUFGmzQTR0NqhGYSRXdhFsu2UhFH2nSN3v7sv////////////////////////////////////////////v/uM7g7eUJJIDV3SFjaSZWFQTFVR7ZUJ1blfecxn//v/////6/ZBPelMzl3tsWqa2uJeDuKl8aGI3ARZiEBBRIjEhATEkRYLO7e/t26N9pWmnum121mMlRViElWZnxTiHOKZ0NUW/W87t9r3u6E/tuH3v3///////////////////////////79+BFVtxJHpDQ0alV6UnQzRplRJotlUhae7mWM3s3//////////////////////////////////////////////v5EzTfnJEUxEnt1lX2EJ9cxZDWEWXJ0GtLdxyLN7v//////nuYJ57joVmt6d8eGc3JjWotrlKREQBJEAyQzI0JGMQESBjpo3Pzb7ddnrVhch9acWodSSGplWZVoRohViEZ4ZZVUZ4vdqKrf7tTO24bP7/////////////////////////////7+wQJrtSNFpjNEiXZWdGM1RalTIneFmEae7HV83u//////////////////////////////////////////////7TbbkrwzeDIzGtdaduYEqTMlIUZyRpMsNt3FI93v//7//u/L4m7Xi6qien1MxXAmSERFt514ZTcQMhIxARFCQ1MUADERhMWt7/mv93pulnfGuXuk2GJGhrVJp5RXNKdWl1SFWJZCKvyTmt7d9X7cl6/v///////////////////////////+/97TUROskxRYhDUkiozbYmElNbmTJqS82Ua/3HR77//////////////////////////////////////////////tJtu6VkZChzRTSnWlWiM6E1NTMkckk9krzrUi3v7f7///7r2Rzcdt3eKGxJ01C97s//lH13pGUgBEADMiJCI1lTURVRMjTHuoynpZbFnmdpx8l8lchAeUjTSYnFV2N5ZHtlKIeYYlnMlW7P7cPO6ZXv//////////////////////////////16R5QhasQSVrtUQjjNzvZUF1VkhjBuvc2Ta/7JSf/////////////////////////////////////////////usm6tlCNnNleKWKmjhRZUFXQzMiNRMWtmjMpRLO7+//////v1Tu1p/shUimyGRt6/7tz1nFtWSBADITQyE0M3iUIwIXQjQllpZIVLqId9tYa6jIjHjGBJloVWR7uEVmV5ZFhQR5Z0NFrTbd3t0q3ah7////////////////////////////7+/VIoh3MSd8YSSbx2IlrrzqlCJTMoY2Su7cyFbO3M//////////////////////////////////////////////+Sfq3ZBHdHN7umbsk4EpYheSRFMzRALTls6zFtzv//////66OO7Vzu2OLkm0wq3vvf79pZelRzZCMSEDAyMXtkJHEAeCIydrTVrVesWlf7N4tq151bsVS7k0tUiepkRmWMMjVSN2NXo2Va/d3mnt2Kjv////////////////////////////7fxwJqqZIDrZMBONaoMmve3MpCEzMnynSd/eyEXs7/////////////////////////////////////////////7nRWnt0QVnk3ruyE26QlNSQ0hEIzAQlmN53Mglvu7u////79VL7tf+3uhWb1vj3t3/7f7XXFVWVHIAAQAABTR5MBYSUYcSRHeXs8xGuYxauniebMeqXGJWipJpdUespkZUSpYmlDREiNUjbO2ag97beO7///////////////////////////7+3/IRN5h1MVrJUxNv3IMmzfvegzEjV56mWN7e5kbP//////////////////////////////////////////////c3lt2kMklliL7sZctyVBNVJWQzIRKKRGnt6Cat7u7//v/vxEz9yP7uxjPHftTu/v/+/vZrRYRyIAAAAAAAETJUAhRDKmGzdWWpXaJteobLWV6oym6YkUV4ZEZ4dFu8hVczWUI1Y0SJumRHvaaivt6Yr////////////////////////////vqbs3MSSFiGEnzJQRit3HM3vsx3YxRHZ52naN/e15//////////////////////////////////////////////50qpjJJlGTfJeu23OzkjMFZTRzMiBUgqS+7VNo7/vv3/7e6UPd+I//2YFbXGt+7/7///5JV2V0ABIhNWZkIQABIRBWUUdCs3N0xYxTum5W2XWMiMicaDRXkydlWaRGm8U1UzNVJEQ0m7lTqGutR9/sh////////////////////////////+7YMyaJITOHiVAoyWYzju3HNIyoWEaGRmV7y2V+/O//////////////////////////////////////////////71SY/FM5o0Kt/Wf92DPKIUIzUyZBISMydO27Zmnb7f3/7//VVeznze/tctapjZz9/v/+3mdngyA0iY3tze39pxATIClUBZJaSCVcLOgulPJoRjWZjXvHdThHQVVVeqNWjKZEUiVTSYRWzYN+yGdl3N227u///////////////////////////++yA4vFAhmnqyAmvsdDns3WNGVlb8moWIZY3oSMzv/////////////////////////////////////////////uSGnekipnUm3d133dUYqBIiMkIkE1IAJX/q44WIZnur7t3qNUrreu7u4nlqbnzN3+7/7eVWMiE4qs7b3t7M3s2UMRACRhiSd0VDizvEbWd73b11Z6t7pFRXRThCRlinRHnJVUI1UkZqdYhFztx1O+79We///////////////////////////+7KwQF8hiETiIphFqzaY2vd3DIkS83ruIaXdovXWN//////////////////////////////////////////////5GT96jJnqEZ8/dZLxUJlQyIjQzFCZBBDWMzWlnSMmGRlWHVXNMqp/t3UxdeojXn+7+3+aJAiIpvc7t397d/s7N25gxAScmUbVUVLddo7Wszd7KqkbMfHJGZFN2E7lVm1NHlnYxR6kzmqckPM25gY/e53///////////////////////////+/8dRQRaKwjEDmXVSG+7LQmrrh2IYvd7cuah5lXzpr/////////////////////////////////////////////60dt6pREK2f4Wv3ZVypSI1MzISMhIkAYRavoXmN9zPqulrtY6zRMuu/GiaiNa8bc38/bl2IiVb3u7u/+7f7t/e7t7OlkITJ1KjUkTEXYHc3t/s+9pHyYtTWHYxNFRrhHmVRFZXVVe6UWe5cHrdhjje79a/7//////////////////////////XzXFGYSi9ZGMVdZlRKuzrImdXZKZYz9/tuLmIdnrv/////////////////////////////////////////////7VU/qQ4knKd6mftyTNaUDNlMhISQCESY3u9p9cZ/a6q+r/nWssii4emnVpdaohzzu7bpERGrN7+7u7t//3t7v3u3dztdFQxdDc4I3tXpH7u3d7szGV8iVQ1VTOHRUaKdFiWRERJdGmFZVdhaqqlRd7f6F/u/////////////////////////uppYDeWMVn3VYQVmJlBWdy2QSZIvKhX3t7rq6qqiK/////////////////////////////////////////////+pFbu4yl4cY7dtn7rMjVDNCU0MSEjEQRD2L631yfsnXr5r+i4lxIkZTfop6pqaXOZ27QiSL7s3e7+7v/u/+/+7//s7sy7REU5I2JSOLRcft/u7u/NhayqURN3Y2Z3RDasdVh1ZTF7UySpUyMfvrVlz97rW/7////////////////////////+3WhQRmeVIUzHRUI2qKkyebxlEinr3ahnv87bic29z/////////////////////////////////////////////+leu6zV1p0Ot39Zos0gxZyI1M1EiIABUW3zZnFR+ufa/m/6u3sgiI6xWeYx5ZoSYiFU2q+7O3/7u7/7t7s3ezezf797+zLZCOkdkQjmivt3u7tzOu0yYIiU0QlpTaWRFWcczhWZke6c0imMhi9tWSc3+92r////////////////////////+ue2FBGNat0E2vEOEI1eckyV4ZhNHy7zcppvs7uqbvP////////////////////////////////////////////76RZzWNqSXO0nd7nVDpWEWhDM1RTNBAiKai8qelV236c+s7p3u3olUM7pVl6hqdGmFZ97O3t/u/v/e2qt1RFZ2iImInMvey8gzUpZDE4We393t39zMVSVVNTmFI4U3qVRVecdUQ0lUiWdmh0FM3XQ5vv7njJ7////////////////////////5msUlQ1RrdBFVfFdkMlebgxJVenVYef7up3vc/s2s/////////////////////////////////////////////+pUndoWlZROx1z+2UGaQlNINSQzZxIBIZaex5/Ubbjmz539nv7umoVUNkR1mIc2Rnm83t/dy7qYhTNENVRYd3ZmVUREVoqX7bcSKUhRJb3e7O7ch4Q0anpFRYg1RGY3mFVlipdDI2hVeMqYcni9pErt3fxd3f///////////////////////+7ZYxVWU0V6UiNbyWdjE1eaUCOc23VIzd7/qnjt/+3/////////////////////////////////////////////6mW+5FdItF3dda7OcjdhhiOFQyQHghMQmWzHncRstufejfyd+8/dq+u2NCNWVaqbrs3IdDIzQyNVaHrd3v/v7//t3bm4UzbM/Lxhc5IhWs68hVRWV6xeanNUFXVFF6NXlkhUerU0NZZDu8pUW83ENdvv7mn+/////////////////////////uyCNRWGM0apMSV72nZSMyZ4IWjM2mVJ797965nO/v/////////////////////////////////////////////3ZJzESmW1eK7qOs5ZcTZnZBc1IxJBJhCXy7edw0q31t2N65/sze7u3t21UyibzN3btRAiRWd6vv/////u7u7u7u/u7//5kyXe3eYkGCRVVEVYiIaZm2x6kmQyJIVDVmR5ZIhEeFVnaGRVe1U8zdI2/N3vpt7//////////////////////+75u6MlJmhlIzdVIiab6XeEM0ZZdUm+2mVq3e7e7are/////////////////////////////////////////////vdzuYNraHPaie+Fex7XFIdqYkQ0AREYEHXMx73FR6fV3Y37vNvf7d7KmIh5zL/OuGUgFt3+/u7/7u//7//+7u3e7///7u/dsjrf7atiQlqmZ3p1h8mpe2thRGkxSEVERkRnRaRFR1OIZJdFRiq90yXu/O30z////////////////////////vyXgiM3V3dCEzZUEkeu29pCIzrbZGjNzHZpzu7v7t7////////////////////////////////////////////990SfcXxcgp7WnOtETppEJ3OYQkMRACMRSMzFu7RWpsfOrfif1878ljNmnu7+/ckjMAf93t7v/u7v/v7//+/////////+7N7cQ5zu2+giFotzIoeXxaiNaHMDWXMgSFRTaUOFOHRUUyemZ7czBb3WFNze/fS/7///////////////////////7ucgMlVniIUyI2yDEki+unQyRYrtdWvczHdJ3e/e7f////////////////////////////////////////////76Jb2iOGxmeN+GvtMZtVxSRze2NCIShCMuvMjcxVSZt92d6cy4pzFEeu/s7+398TUE787u3v7+///////////////////97e/abN7v3t0gI1dkRHbGt3t7hDQDhLcRWFUiWFRUV0Spp0N5ipQm3ccR3d7u6n7/////////////////////////3mEhiGZZdZMyEnyCImjISUV2VY3uhFjdzIhozN6+/////////////////////////////////////////////vgynYNkX2jpa/tY53J3R6gTVVqTMhBUJRnbh7ump1q33J3ZlUI0aGvu/e7+/e2xEW3t3f7v//////////////////////7+7u6V79/ezschEmpzVLaoe1x1NmIhjFQTWEU0V0NEVVi8lEWphiXLyBG/7u/uXP7//////////////////////+3sVRNDeGcid8UhI3lCMldlTct2V6zdmGfN7bl3rr/////////////////////////////////////////////+52NKdJdIWu3GrbaGuTGYbJQUVJsxASFEI6ip7qbKSWbKjKQSNpzu7/7//+/v7oAYzt3+/v//////////////////////7u/u3tXO/f3s/rUSBKZTVZmMa3gkc0IXlnITaDQoUlQjNWrHhUeVI77aIZ3u3N2X7////////////////////////NozKFVFd1YUW7YiI3lUIkSczb2WRqz9umme3MuGr//////////////////////////////////////////////WM5ckl7Yq7fx57GGnUieFq4AyJbUCETIyOKfdpsxHY0h2Q4vu7+7+/v///+7cEX3d7u////////////////////////7/////9p///97u7oMjA3V1Vm1ahzQkZCEjqWIkVUJUVUMjVXh8hkNDrcsgjt/ozcbv/f/////////////////////OVBHLllRBZ1Q0WaQiI2UxIWq9z8uGZ8zuyniavMq3/////////////////////////////////////////////+ckqyOF2zav7deMkEclMVdoxiERRAAXURMXiNyoymN1UTiO7+7v7//////+/sYDzN7//////////////////////////v////7rjO//7v/e/GIxFLWFV114VVFEVFE5uTIjZkI0VWNYU0y6hBKdy1CP7+i9V8/v///////////////////v/vsyA9qKqVIjV2Q1WHISJCMjRZ3t7uunWM7t2phnrVn////////////////////////////////////////////+6RWrRTToakv+3oZzU0JlE1SKhBEQEhmWERKHzZfHhkI0nf3u7/////////7fsBi+3//////////////////////////+//////xv7//v7/7b1yYAMqZ2N3hkZiE3VSFKyDI1VTIiaFamFqyjUn3ccG3t6c54ft/v/////////////////+/96LADmpepeTIzeGU0VlIiRSZWVazs3c2Zad783ZnXn/////////////////////////////////////////////74RkxHQ4iOtW7+2zW0FDVRBzfLYBABBqogYzeseLYyJd/t/v///////////+oyLc/v///////////////////////////////v6k7v7+/u///vmLcQJMpDRYJ2dBKTZyFstzE2ZDAydkeHNLgiacxxTd3o22mN/u////////////////7///+GUiRFu4c2Z1QjZWdTRREjfIdmZZ3/7d54eK7br2bb/////////////////////////////////////////////vdYRDZ3Y47bd9zuY3gjQ1cgUli0EAEBNlBmJctUQSqr/e/u///////////++UFc7//////////////////////////////////5bf///+///f3om4QBiXlSQkdXQxFWYxJ6lTEjVCIFdVmWRTJMupA97efcanLf/v///////////////v//7bcgNlI3d4Ulh2MkNVaGJBFZzKdmZ6/d7u7LebvKW87/////////////////////////////////////////////51eHJ3zDXe/XXN5bRUMRI2MDNGgAECEjMXgUphIX3u7v7+////////////7oIc3v//////////////////////////////////Z+/v//7u///u2pynECe4UyE2M4dBWHZBKrpCEjRDJGRZyFEijNcSzu5756YO3+7//////////////+///txwJ2ZjIlqURFiDNDI0ZYJiVqzZd4WL793d7reLS6zP/////////////////////////////////////////////4SldUW8d2r9+Ui0zTFRABKEIjJSAQZTQQRUEhBd797////////////////uUQ3P7////////////////////////////////+5b//////////7ui7yXEFWHFCJEVnQid4cwR9ljETVEQzRp1BMTyTG97W3lpQvu7/7//+/+//////7u7+3tyhFFh1dCIyemUkh0NDISUuqVNo7ZZnV5zt3fq6drrN/////////////////////////////////////////////+haZJgoxepZ79tETtYyIyIydjJSICEUNVQTIAJ93u7////////////////utRCO3v///////////////////////////////++03//////////+/oiJuTEjNCQRNlRZUjZ3QxWMhiElVDJFdmNHllQc68a8hFOP3/7v/////////////O7s6iE2hndjMhI1eGUkdTRSETnduUSJzId2qJvM2td9nMj/////////////////////////////////////////////501iiGZ13tRt38UppKgkMkQUkkEBJDRBSEIAK93v/////////////////+2yAV3f7////////////////////////////////mbu////7v/////+6KiOeBAYJUIRZzaYMUdlQSS6VyNGNGRHYUfMkgff1Owkx13v/s3f//7////////t7v3lAhW8ZWMzEjMld0RBUxJCZHruqmSLy6h4mIidddfLWf////////////////////////////////////////////74PmFWjWPe34Su2UQhWJMyJGE1QhEoo1UTECbd3//v///////////////+/WAhPd/v//////////////////////////////78TP/////u///////+iofJhhNFdyIBRlaYIVdlUhV6lTI0LGNEFpq1F3aTRGfnW8ntnP/u////7v//7+z+eYCSY2erVZZDNCMVdmgzExOYVGnOy3V63qiZqUhLeNWe//////////////////////////////////////////////lIY4Rtp1v92knXqjMzd0JCJTJVEkOIcxAGzM3u///////////////////+Q0Acz////////////////////////////////+xu7////+////////71h3y5YRSKZDEEdld2IkZVIiWXdiNKuWEiXIYI7NSvludW2uyO/97e/v//////7L+EBVSWU2ZHZFYyJDIkNnZkJEioZXnOyXV53LlopameWN7/////////////////////////////////////////////6Eozpkt7pp7ulXasYjI0VTUzNCEiWGVgAGrc7u///////////////////uwyAQff7f/////////////////////////////v9o/////+////////395Hh4y4EUpmlxAUdVdVIjRUIkZ7cESbpBVMphTdxc2V2IeH3Y7O/q///////+3c7YI0J8uoYldyNnUyFTI0MjSZc0m7dXreyGd525tGt8ldz//////////////////////////////////////////////pTlJ2mEvuad38UX2ERUM1M2IjNCEmlAAjV9/v///////////////////+5jICEd3////////////////////+/u/v/+/+///Vz/////////////7+7saHmdtCAkWqYxAmZTVzQ0VDEpilYSeEKIuWBNzUv5THmLFoi8vb3v/v7v/+773aMXVkmt12hUSURWQSMzQzI5vIRFmqlWuv2nZ42lpWlZ7t/////////////////////////////////////////////+hfRGWuN974fd7CNDh2RDVTJmQiFFMwBpuM//////////////////////7iMxAhXuz//////////////////////f/+7v3+73r//v////////////7vxnlqzHMyE3l4hBAmZkZUREMhJXbJM1MGe7civOS9ldfHeehoZaiLurmbmaqomIModVhlq2m0NFd0NGMiMxMVaK24ZFi7d4vN22iEuno27O7/////////////////////////////////////////////+StjlW1qfu6ErrVzJWc2UVVSSUMSggBI3P/v///////////////////+7aJTEhILz//+///////////////////8///v3/77Xf///////////////u/pOcZedFhBJUuqlAEmhjRVI3ZDJJ24kxJtqCHM1K2m5btoy2ypypqItousvKtpMGZmeWVDiJgiNEZlJYRCNANYaMvJVWrMlHnczDSFlm7d/v/////////////////////////////////////////////7NzSGhW+Vn+tns9oyJURnJFhCNCUgKdvf3//////////////////////vQlRTERHMzv///////////////////++T7/z+37PP/////////////////+/SjqSSREYSIqycghEnhDUxSXcyNbunFHy3IdvVvrXGvWb4bpjqrbrZzuu6zcYFdHiYhVI0Q3kyNUd0N2EhdlJnTb3aZWrbp2W4WodUzt/u//////////////////////////////////////////////pbI4e6Su14/pQ22EgxRiVzRIQjEAKO3u3u/////////////////////+4kU1QyMQ3c3+///////////////////kY8v+38WO//7///////////////7941uWNWQFciJKq5QxElhkQRSYMyJ7kkmWQxrMStpua9eMt8mNm+m+fcyr2bUFUkVJiaY3djNZgyRWhkQSE3mFVWd625dlm7qmOnV1rf7///////////////////////////////////////////////6Vs0R6mnjuds6zFpZoYjYyVjRCQAKd3u7/7////////////////////v6iRGR1QUErve3v////////////////74PERv7PZu/u/v///////////////+/qNns0RDI0ZDJ5y4MhFXVnQyhnUzRSR5dBCbxa2kxr2V6H2p2byM5s2py7cREUZ3ZodaVFRURXdCNmZFF2NHqmVFmd67dnerRnVjnP7f7//////////////////////////////////////////////7SDZEuK93v4W+cSN5WHMmUjZiEQGNz+7v/////////////////////+/XJlVEdFJBF77e7///////////////7/Nu1ij9hJ/+//7/////////////////tGljNWNTFZgyJKunMgISi6Qji2MyFDmnIHvFraTVvbPIfKnIjXvWzYjKkCFVZri3ZWyWImdDRJZEQyY8ymQ5u3V2es3Kd3daZlbd/v////////////////////////////////////////////////1VOWVHzud820d6ciWFaXNGMSMwBs3v////////////////////////7dNIMVMyExIgO+7+7////////////+7/sc/fk2o37///7/////////////////z9OJNFZTZBNpciRoulIiIVi2IlqmUBJoZBXbO9tcXNxYlspumcbKbLh4QSOZZIeZqjd7tEJHVUNZVjMkm9ymRJrHd0e926gqZXXv7v////////////////////////////////////////////////+1Y1VoOu7aaetijGMjREiTIyIQBc3f/v///////////////////////tQSMAETEiUyMSnd7/////////////796C/e76QW7f//7//////////////////87CdCWnM1NDJ4UiRLtDMTM3plM3myA2pVI7xZu21a2miJyX+a1dpapSE3SGVUZniHZiR2pzJHdUVZRBd1reyWNZrKl2iNtqlHVvz+/////////////////////////v/+/////////////////////tRlk2x2jf6mfPIUajMSUkpxEQAt3v/////////////////////////sMAATV0QjFCIyMc3O7v///////////+7hbu/vkirf////////////////////7+/ZSFI2d3QkZRNmQiNZRENDM1mlI5YWZ1QUy1vrbV3ZZ3XJbYfVmmVEEnOIVltlVVSdtCScpFFLhVNERHZVu96FR5u8uFlnxpVb7P/////////////////////////e///////////////////////+1VPVOH6Hz+1npnIkdEUiEncAAq/P/v////////////////////////mbuu39/+3b7azIZovN///+/////////7C+7dYm+/7/////////////////////7+5jozVDqjQ3ZDNXRDNVIjQiE3uUMhVaMRKLWtlsXLtoUlaKl5U0JXImNnWGhquGNIeKYla7dDJ6lEKoVYpmnL6lSHu86Eh0Vv7//////////////////////////77//9rv//////////////////7mM7dlTupo7fhSthI0Q2QSIRAI3t//////////////////////////7vyu7t7u3+7u7u39qmer/+///v/+3/7uss7tYn3u/u//////////////////////7fNSSJNGWVI3YhRWQ2UxJUMiJIlzAzhUIEtK2Yxdy1yFQjdmVCREIieEZlOJd5g1VkN6gzepUyRGNmeKd2yomc2oaHnHq3Rc/v//////////////////////////r//+W//////////////////+/tY0ZmpI37aO3bBFRSM0RZUhACvf/////////////////////////////a6+7f/v7t7u/+///blX3///7v7/7+6W/aQ37+/////////////////////////uyEIXpWUmulI1VCRCJVhjZyRRM4YUSEIiilnYbFzaO5a2FRREEQFWhTVEhlendGd1QjfaYzeoRCNL3HmpZavLmb22Z2WbN5/v/v////////////////////////nv/vpO3v///////////////+/7hjfESnhs/3bMw3IkQyMyOYEAbd3v//////////////////////////3f/e/u////7+7//////uhFe97//+/9/oekJb/u//////////////////////////78JCNkmlNHuWI2QyMjRJlERWRRQhZHQQBcOddcSrtLhBMTEQABAhMzMlqYZGiSW9piQ0nLkzeUQVzN3Kl5VKz+zevKOpRW/e//////////////////////////+P7/+Jrez////////////////+/lJslFfqau52qVkhIzIjIjMAKd7//////////////////////////////v/////////////////9pnd53v/v6WViSd/u///////////////////////////850RkNYh2NJt1NFQ0MyNXcjd0dlBmZSISpZyHgqhxMhMQAAAQEDQiRUVmmGRjSsvDRlQmjLckE1hIv+7quYVoz/zOZ7VU3v/////////////////////////v/L/v/Uje7+7////////////////vcH2kVN63j8tFFYIiUhISIgB7zv7////////////////////////////u//7/////////////7///64RXiamyIyfv7/////////////////////////////7qUmhjRIyGNYuFI0U0M0R0U0hTcTR1VCFUi4dhMSBFEiFTVAEnVYQUhWRlZHR2i6NFdkJGnqQSXJhIzt39y6ZpzOpdpGn+7//////////////////////////57/7qWbya3+7//////////////+6SOqWVnO+EzZEjKmEUMhEhBO7//////////////////////////////v////////////////////3///t3dTi4397v/////////////////////////////eghKoeTJq2UNYylI1QzRERJYngxIhETFHapIlIhIEQzFZgmg0FGNqM2V3Z6lJeDNbdHaDRIljNEiqdq7t3/7rh5tKxEfv7//////////////////////////+ru/fVFdXme/v/////////////v/rGJd1qXvupZ5wITpyFEAiAH3O3//////////////////////////////////////////////+////7+/////9/e///v///////////////////////////9/WQSNchEVoyUNZySJCMzREZ5U0EoQxABI0YgEXUgAlthaHZGYyFXZ4NFVXhYualTWKVXdzRDWcl2eYaL397u7rpVmTXe///////////////////////////v6f/u5HWFTKnP3///////////////op+lWfpZ7dRFQyEosxIjEAje////////////////////////////////////7////////////////////////////////////////////////////////9/shDdBSZlUNquANrhDJEYzJ0W4URZFZVEQAAAgJXIhGKVSbIM1ZTJnWIY2ISqsqVdzaoZHdiMqzsuFaJdd3u+87kpjJs///////////////////////////v+s/f6UeWhTua3//v///////e////3Shtgn7vZt21BIJBA5YgUwWt7v//////////////////////////////////7//////////////////////////////////////////////////////////tyEKWdRPNtjVL6DJJc0VpMjVzeUJAAkIUAUNbUyV5Qwd7chVkRWRTKFWbhUQ1unWdpkWad4QzVq3uyoiIVd7e3Vn2Sf/u/////////////////////////+/33v+zd3dleHiO7v/v////7v////77K7iUV93ae92gJWQxF4EhA73u/////////////////////////////////+/v/////////////////////////////////////////////////////////+/aYlVsYzStpjRYt0RDQkdGUkVVIoQSEgNYUiZZhCaYQDdlQTmERXZDUmWKSJU1VnespjVrlFyGWt3u3Kqod7v5fXRe7v//////////////////////////78b//PRFxWZWp0rvz/7/////7v///uwc20XHe+60jLgAVzMgQ1AXve/////////////////////////////////v7///////////////////////////////////////////////////////////7t9zZjq2lRWbp0NZt0JUJFSIQzQQJEZTESRkImu7Y0mEADmKQFuGIlVHUzVYqYY1h2fNpjQ2nc2Uas7d7t/ahbWrNK7////////////////////////////+ef3+l7JHdOpZZXv+7////+7u/+//yCnu426Und2FeXMCdEYSQEbO///////////////////////////////////5v////////////////////////////////////////////////////////v7+q5FFRkXOpCWcplFKmFaFJWrGMhIABJYjImqkJqvKQVRTAXqrEmilRVSKs1ickiVUZVetyDSL3Pyma+/e/u3NVLZJ//////////////////////////////1t/e+IhmRHaJZodZ7u7v7+zft+/u7jF+3YR7t23NcyRWEFRVAACO7////////////////////////////////+7oK////////////////////////////////////////////////////////////JcjU1g3jMpSWNpiJXd0YhR4pCIDEQIwVUJGlyJXmFE2dREom1IlmUQyZlh1e1NUZVZWipR5eZzv2Xad796+tqc0rv7////////////////////////////W7e/VlGV0WXWZOJVr/v/u7++J7v7+kF7tpYa+lZzaQTdhEjQzAZz/////////////////////////////////7mJu7////////////////////////////////////////////////////////+/tmjIzI1hmq6ZiWcszFKc2IyJ2MQUQIxFqhUOLpjaZeWF4YxBHiRAnqJdzaYhEWKVVRVVVQ83Ld7zv62mM/M6JxTnu/////////////////////////////3T//pa0UlhjSGWlS3NrzO7t+l//7tqiRKzHuWr6RVfEITgUMiIjve///////////////////////////////+/2Fm7//////////////////////////////////////////////////////////+2WJFNVI2l1qplCKJlSFkdXdAJSATEjQTNIhBWJdDXauCJ5YyFJhkI2i4RFa6Mki3VHZFMjvO7rl4v//KeO3Dpzj+//////////////////////////////d+/+iKVEVndTVFmUeGVpzKzoru7f1oNnScmNtm7WVFN0EmFFSSWv3/////////////////////////////7v3TGZfu//////////////////////////////////////////////////////////7fwylVVEVWpmeJdCNodRN2p6pCEgAWMSRoqbcyWYYzeFUyJmQzJYuUIWWMlXmHVFmoVVdDSs3O/duIrN/YjFmSTf7////////////////////////////+5q/v17lVVXh3VTZGmVV4dqmZeu/fuuQkyDaYvthc2kEjVRJCJ1Rt7v/////////////////////////////9/gE3tu7/////////////////////////////////////////////////////////38zSJEmmQ1NXpneKYzJXYyScy7gRAQEkFkGcq7YyuaQ0qEQyR0RFNZmVM4itZEfHc0qrpSRmaO/f/t7b3ezFOWLP3u/////////////u//////////////7zv9/E2UNldmdVM0Q0mkSHVZd7zu7WqBKOtEnN3YStxyMzQhNBQXzv///////////////////////////////TvmJ33//////////////////////////////////////////////////////////f7bE4Q3e5dVRWxDWJUyacgxWqujMRIgIEpjXNx4MXrJI2qUQjajRFRKdERlnYNFvZhTeGWbuWeN7//97v3da0J97/7////////////+///////////////rTe7rWFRWeYZmZWYzU0mFVXZWfc3Pt0Mli8c13N+0V2VDRDIkgQLu7///////////7//////////////////u/e+UXv///////////////////////////////////////+//7//////////////+3aQidmhEq5YlNohUWGQyWnczeZNEMZcBWsgza6hSE3uWE3iEQSZlRVeVmodYpoU3nbhURKzty4ec3v/+3PeKNMvO/////////////////////////////+hO/9p4QmeImGVFVEQzQldn2UiayIz9YVdHvYJt3OtUMmYiUjJTON3f///+/v/v7+/u/+//7/7//////////////v1a//////////////////////////////////////7//v3+7u/////////////txSJ0fGRXnZhDRnhFZWMja5gjQyBBN1EFvIUUumQxJYt0JHZjMlVTNUaYukNGrIQ2q6Q1aJze66mt//7fxKYs3+//////////////////////////////1I/u6GtyRuyWmFVVRDMkUjVWb9hkaUqCJoNLuyTL3sYyFXYVQhIvze///P/v/fz9/+7+79/v7/7v///////////v7+3/////////////////////////////////7v3u/tiJvP3+7u7+7////////v7VcUQWandXicVFNohFhWMUq6YwAAEyQiIpuWEWyXMjJbt0JXZTNDRjJGbLlyNYu3M4hWuqmKv+/8vNzv1rkX/+///////////////////////////////Dzv75djNWWIhVd0REVDIjQyR93HI8tXJgKDKrtBrby1EhJWJEEUvu//7//+11nu3t7Ly9vM7/7v/////////////v/+//////////////////////////////////7/uFMDFIi87t797v///////9/bWidFM0imc2jaZDJXV5yEI1i3NREBAQNFFY6EE6yFQyRqpkNIZEZ6VWRpqoWGNY2mQzjNzsypvP/tze62sk7v///////////////////////////////8Pd/uanJFvJVoQ2dEREREIjM7zac5W6IWMkhSeslFy2N0EjNiNCnO/+///v7rU127YiMgRFeL3+/v/////////////v/////////////////////////////////v/7llNlemMBSJzu3v////////3diYF2aGY0iFZFjKlTNHR7djRFQzEyZAAkSTN9lSFsxVQzR6pkRWREZZmFRnRriFRp11N3zO7+/M3e/83XxRzvz///////////////////////////////gf/t9XhDSL3WWIQjdERFRFERvcZFZkRABFY3Qkq5Q4kihCE0ZTI73O7//ugouqI0AAIRW4Z3ZYvu///////////////v//////////////////////////////3/2GOnOHeUVTMBMUnMvv//////385skiS7hXVFdUhUaqljJ1RLt2pRICOaUAZTMhSrUhSdpUM0SMdkV2Uzm6l0RDiruVNWV5ZXrP3+397ez7eijv7///////////////////////////////5U/+7mgyVRSL22e7QUUlQiESXMeDmHd1IRKKRiJFzFFFEmlSI2QVvt7v/v6TJ4UwABJa7u7r7YVo3v/////////////////////////////////////////////ZRIeofJ3N3LdmIUAEjc7u7////v+J2hg0jdhWU1VGdVerhjMzWLrIRQEoqEA6RSIhSpQRSblVVjebhUZjJFmph1RGmszFNHzrlnrO7f//39W0Ld/P///////////////////////////////Ub+77S2I2YyWLyGiaUiNDJBCbo0Krl3UTUUyXFEI3dBE0EpczIijL/v79/btCIAAEne3ezOvczoR+7//+vf/////////+7////////////////////////////GiZR6vtzd3czcynIRATzezf7+7/v1zKKXNHjadVVWZXZFestkRGaLlIQAa4IhKXYSMha1AhW7dGREabdENlNHdVV2RXu6llhpvsp4q+7/3vl5KP7////////////////////////////////7J/3+pVI1p3hDKbt0epRBJCITukIWjLdANjFMRTMzFnIQIzFpNRN47ez7ruzOQBEo3tvOzdzsvc3c7v3/6t//////////7////////////////////////////tqlau7MzdvNvN292jIRE7z73d//323IcoeGNW3ddUZoVXdladlGZVZjECIXpCUSY4MDIClkQUjKdFVkVoUmiFRXQnqENItlm6p4rNuXnd7fttQ/3///////////////////////////////7/gs7v944RalVGdiR8yGiaYiEjSHMTZWm2AWRDAVlSMzJFERJBNiI4Oe7/yK1ZESJ+7MzMy7p0VXZ3nOn/7/////////////////////////////////////////yXm7uszbvNy6fZy82DIAB7vN/u76n+6TNXymRlzblURXNFhUWGpmhlFhA1FzOUA1VCAkIFdFElq4dFVFdXdWikI2VIt1NCXO3NuJu93aq+2ngq/v///////////////////////////////v9zzf/lnURmWYQzlzNcuWWZcxK5NAREVWMyMkdAJXdCQzJDAkESIDJ3v93rnc1DbuvLzr6jIQAAACNGzt3+///////////////////////////////////////+/t2qzMhFI1RIuZfb28oxEASlqJ37fuesM1R62nI3u7lkRoVVdUOahpUlQQRzI6shSHMhBEA1VDI2unZEZ0rZdXhSRHVZp0JX3c7d26z+3qq3pF7f///////////////////////////////+72Pf7uVlRZqFrYMWlkNaumRVIzVDBVVFYTOCJzNRRIQyMQVAJSIAcX16/Xrt7PzL3L67xAAAAAAAAAFb7+7////////////////////////////////////////9ma1zEQABAAElqFmvvOUhABYhndvt2nY4VGdrt1I3u8djNnZVY0SHZTMhIjcjioJTWEMwNiA3VSE3q1RSi5u5RGVCREdoZGVq3+7c/+3+zpdyzv/////////////////////////////////uVN/utOYUvOxmjJMVe3NXvIYSoyI1NFMxImURRrYjM0IiESghNAFDSuut2K3f3O7u3KYAAAAAAAAlEAKO7/////////////////////////////////////7//8isgwAAEAAAEAAGqInrzIIAASf97t2+2hOIZYV96mI2nMhTVmdld1RSaBETMSEltghFh0MRZBFWZzM3eENDnLvJRFZDNFVI3IZmrf/v3uz9eTT+////////////////////////////////7+1W3/+UxDVnjLlVnMQkiXRGdiilQTZ1RCEkRUAWrHI2MQIRIyUyBUWl3czu3f3P7ty2EAAAMhNCAiSjAjnv/v/////////////////////////////////////ujFQQABMSMyIRExCKud3d21ACat2pvae6Iza4ZnVr6lMni7hDV1R3dnMlICN2E3VYQpRIlDEDQxNZh0MnR4ZUespYVGVEMze93Lh3nM3u/vh1K+7//////////////////////////////////VXu3peQSacyZopUrLYTeZUSGcVBZEdTISIWMyFHlhNJEBIRREAWJ8Z+3M3u/d79zIAAACMTgyQiyqqAGc//////////////////////////////////////3ei4EBMjFYNWRCIiM1Roi9zcuHS9lnz92EhSNUe2VmRsvFMljLhCNWeoUmkxIjpiqlRgnHKLdUAGQjOJmTRM2pVEelqqREVSFXnO3tt3iXvu12Rd7//////////////////////////////////rNv/+edNFvPpDM1c1e9ggSIYVYTJog0YSIzEieFIBRhKWAWYTMgQp7Vv+7+7e7tzlBQAUM2IXcG2uzcYGzu/////////////////////////////////////vqaEBIRWDJmRWVTI2Z3dnvdzd68zvx1285hNjllemaHVYynMlaLtDM1ekQyE1AWKrhlMbdiTJcyAWQiNmhjWrt1QyXKzJdDNWRVaazd7bnN+WY8/v/////////////////////////////////vs33vs7wliXjchFRTZlSbtCMTUyMHdUVRMzUiFbpjIRMSRDAYQQADutuc7u7u7u3JAwACIyM1QRrdzsvCKu7////////////////////////////////////ux7IAMRISJ0NmRWVjSKiGWM7u3v7d/ulVy8YlWHdlWFeHdoq2MjSJd1NVKHABaVUbrbUwWXUijIgxEmUzN1iFWbt0Q1jLzHUkipdIitvN3e7IhW7v/////////////////////////////////+5zv+/FczVFQmq6k0R1RlIqowKmEUZThEE0IhMSaKQQEiEBQ0ARABCL293/zt7u27QwBEM2IjQxV93ry5oa7v/////////////////////////////////v/+7KMAQTcjRAV0KXVDWL25t2jM3+3P6d3rYj1xZlenl2NFV5hXqlEjNpyFITcxBIiDnduDAkaWMVm4QiEqhFO8qTWdolY2q6lWlnu6pmeXvt7Ydjzu/v/////////////////////////////////mOu7cb3E1moQUeupjNVaIVGESNAN1NFMERHYkYyM1EAEAAUdgABAzi+3t/d7t3cYQACVCRhABAsve/GnDfv////////////////////////////////////37cQI0M0MjUQVSRkjr3cjaRa3/3+39d97KYlJ3hUd0iURmV4dUdVMkVZqDIjEgNkKavKYgVFinMnmYQwE3VEfNmDOGZGJVhkvdlmm8qYnN77Zkf//+////////////////////////////////79U87+tsUkZczLMja9pjQ0WXUhISFzFlYRYyN0RYYxIzIgEBETIAIVKb3s7e7t3sgwAFIUMAARIlfd/fd2VO7+//////////////////////////////////7MswEwN3QiJCECJDnN3t2ryWa93u7u7ZaN64IVd5lVVXl1RFaJmHVVM0ZmKSECZDEZ28uXASRHuDJHh4MhI8lVhppSOpZYYzPN3OqGmc27vfhnW+//////////////////////////////////7/xj3v6I0Se6V9uLchSsuFMyNkRBIVc0NyJUEkKKZDUjIUEQIAAQABZRt77v7v7slxABV0EAAAAAS4zd+kRl3f3+/v/+/////////////////////////u7u7sxTABIBSoESAAEBO8z97rzLZZ3u397f+5VatxJXZ6pCRlumJFR6yXZVU1Q1QwFWVDStvcoSIlRIpSVmmVA0ebc2ZqU0aXdWJGi9zduofO7qtWWf7///////////////////////////////////61Tt/3nzVIp2RqzLggPL3YdBA4MSIliTBIY4UyJ2BWSFEjASIAAwMImSvu3/3tqiAAMAITAAAAAknN3bcyfe7//+/////////////////////////////+7eukADAiEQNyAAAEFI3Nzd7cxlfO7f/eyuq0SIFoZnV5g0ZGvGRURnqoZVUxdEEUfHJVnpzXFyJVRacyRrhCR1WYNVM5hDW2dlV1i8zd/e7++FZN/////////////////////////////////////7Ve7ve/F3phNCN6rtlBNq3KoRJCRRQ0cTNnZVhCMSRzZ0AzAQAAFmNVXc7+3s6pEAFXQAEAAQABE73d3VO+7f7/7////+/////////v/////////v/v//7s2kIAERIzUgAAAAADje7v7uy3R+zO3u60PMyDIWi4RlWMhENImXVFZou7lWNTMRMlRGxn3Lo2dSKER5QllliEaFVlQzWKlyRGzMd1a+nM7v3WdY/v//////////////////////////////////7+pV799q0TOapjMiJavrliFZmSkxGaIyQwZmN1eLUVMTZjZhAQAAEEV4Vtz97f3sUAARIhIAEAAAFmrNzaU43e7u//7//+//////////////////7v/+3u7u7HQAACIDIzIAEAABJczO/t7cg0ze7e7NsViKpQNLu6Y0aLpTU2m4VUZWisc7UgJDEDe9lMpka3YjalSFIjWcxjQ2VDRTaKVSWL7NiVaafOzpWE3+////////////////////////////////////63b9/m2iYzRXdVYyE5vt2TIzFDUUNKhTJUU1NjijNpMDY0owAAAANTdIze3P3LswACUwA1MAEAABtovLtQbd/P/97/7+7v/v/v/////////v//7u/+7u7v7bUwAQESATABEBERAo7f7t3NxzOc7e/s3iJDRoFDOMmJY0R5hUY2nKdFdlZ1dmAHk0NtrbXIMqykQjqDVhInu91lNmQ0VmiXaWSN7e23Zp/fRmj//////////////////////////////////////ph/77XVKWl0VUVVZjNHq82GISFCkzWJZDIyU3QyNzSoIkQTUQAAEzZSrM3+3PqRACUgAiI0EREQAma3ZQCNvK7up+7/7c/u/v/+7v//7u7//+7//u7f7t3MkyAGQQEhAAABIREhWb3dzszmI7zN7M3ccZdGIVhCSJqWZDZMhlVGfLdWYiJ2ZBF4Mozc7FYwR5lTNGt1EiNYmtlkNGVHVHWsypds3d26mrtHPt/////////////////////////////////////+eG/92OY1fdt2dkNFhTNVnN2EcROUd1V5lkQjdmEFdka1ITETAAATRDKc3e7NuDAAJ1MBJDJDEREBMWJCAVrVrvzraf3tqu/s2q/93e7v3u7/783//Y3e7dxyAAFIIQEgAhABIhJVvczd6Mkzzd7e3dtwSoZBJUVCOct2U0VsyXRGi6h2MEUhNxVjXNzNxzAleJczNYlDQiZny3diOYZFQo3ezaaa3u3P5oV/7////////////////////////////////////+6Gfu+4sWdHjNZXdDM1ZUVFZ0Z1EyBVdUNHSVMzI0EkY0qmAxEAAAEWFMzd7c3bQBABEjQSJAEhEyFDElAAScLKzu3obc7ZSItFqb3c7+zu7u7u//zfpe3Ny1IAAyFVEAIQJBABERbL3dvdpzObzO37zpEYqlA0NCUhKMmGMzV6u4Y0aodFWWEXdAVFzs7LgwJFacZUNTiWQlY3dVZzWXYjR53s7Lebu86Ug//+/////////////////////////////////////ZSP/qjDN5+GiqZop0MoZldWE0U6USJFhmZYSHZAJTE0M2ZlEgAEIAAIvd3t3dgQATMxFlUREjMhITUEMABLJbl53t50aIrGjkx2h2mYmbm7q9rt3t7BvM28UgABRhNDAAAAMzECEUfLzq21M3zs7c67kANHcnhVQjUiNplUNDZqrIhTZSNZcxR3NXlI3deoExJUe5VSNq2lM3Y3RHhVRUd3Zqzu/smam2pI/f7///////////////////////////////////76lo/+u+IzW+uVe6VYx0QmVjWDJDl2gjMzZZs6h1IiIyEyM0RCAABHMAONze3NhjACRWEEZGYQEVUiEhEQADUWvslbt4tW3t+Gj3/dt6zqu9upi5qcfbY8yrozAAEBRSIUEAAAJTAAI0vrvLISa929vouxAnYheJhUMzMiNklkQ0R6vbhzMSaEMyhHXMdc3GUlMRJWeWI0WNyEJWQ1aIoyWal1eLz/3tqZh1zf7/////////////////////////////////////yXnu+5xbQlrdp1i6ZJt0V0Q0NSJEbbdkNVREl9JIUkMiIjEhAhIwLCF6vN3fvSAAF3RREmQ4QCEEUhARAAIDiq51NbzJpZ3e1Wv9/eaM3I2u2syXcp7RjLuTIAAjICdAEQAAAQRAAjNFq7YQJJzMzoe5IgSlETiqlUIjMiFmmlRURYu9o0NVJJcTpMrYWu2hNkMRNGdFRlaruDNUU4qnVVeriHaK/+7+Rzrd/v////////////////////////////////////+6eP7chmuJVFi8tji6VJpVZ3QSQyEWnbmFRDIzU4R1NFIhIiEBIxMgIke82825MABUSCODEjJYIiEAIgEAAAR2fF2oSXfbVr3dtZ3Ovqapfry5zJdpfMcsxUMgAAQ0ITEhAAEQABMQN1Q2aAEzvL64mnwSMYYTMUmqlSETUhFXmHRVRVekZ6owR3EVvs2lidQTdTMhMhu2alitlSJoVFV72pa8umdpvs1mXf7v////////////////////////////////////75tY/vuqWFvoRWe9pke6dnkzhiITQUEjesyaRYMgmWRWRFUhMgERACQgCb293bxQAClzQ0qBEhF2ECIiAAAABy2WrNy3Ke3ZSd7MdL3N24ONy3bcs2xoXSajYyADAAMlECMhABIREBOUNZdzAhXMr2bLhgQQRRRFMje7hzEiUxM2iYZGdUNGyUIUc1Sd3txkZFMEdlEgFYx3WHi7VEWpM1nd3Kmouod5qGSd/////////////////93////////////////////+m1n/6qeNZc/XSGjtt1SchENBJTRRWnQRWKpEWXETukJWJHUAAWUAASAZnczNuSAAM4syYnpQYxOEEUMAAAAFPHXs3dpVZ1yoOs3LZ7mrtmSaSLzD3HlJknRjIAJUABFFEBIRESEREiqWM3IABWvnSNqmFBACMxRFISW5pzEVlzM1aZZIUjR6VGFEpWftzepEOGEWZCFVaK2FVVZTVDSHdIve7d3v7dmVlO7/////////////////vP///////////////////+6dV+/ohX7MmLpEZVSsyUecyKYBGXFTepgxRmt2NoIUhzVTJ1ACaYIiEBOafbuoEABDNac1NZgyhTNkEhAAEDCKV8ytpodVI1mCaIiXVHhlu2N53JbMgCm1JCAwAAZhAQJGMSEhESEDVEekIQAFpWbYfLQxIAEDZEJDIDV5lTIlh1RFSIdTOIUTuiGWyXrtzPUlR0ATQDVVd6yGZlZ2YxSttXrLvv3+zYhY3+///////////////////////////////////////o527um1a4zsd2dWVFatyWZ5iCMDUpZVaKljNsk0mVMkUyI0ECAmuDIBJGZjh3UgACNDJ6RERoclZUZTAAAQBJlqyrhneDESEUMjQ3Y0NXS7tXaYncu0KakRMAABAjNhEhJUIRMiIVU1VVQxAAR0Ta14wYEAERETZiRDMRNFVlQ1iFU1VTI6qTN3k6WtpY3duyM0dkIllWVTiKtkU2t4QkWuqHmq3+/faEz+////////////////////////////////////////jnf/6LScqM7aZ4hGhUWcqmMiFDhRFVVmVlRDJVU1uDIjMhIAJmFIUhEYXNdcyCAAECIhSXQkR5Q1UBAAAAAJqOuVU6ZncwQRABACEQARI1elmnZ7vqoilxFAAAABISdRERNEMRNCNqVEYEEBAll02ZVjYAEAFEImdlNFIRJDV0QkZ2VFRXq6VqVUhr7tdc28NFNEhxKJhnaIWMkzNUVplDWvuWfu7/tmnv3///////////////////////////////////////6uV/7ptJa5Rq3bZzZmmFWWWZQSOqNCMzVmhzMxFnRHlUQ1MAACmlMhAUl1vGanMAATERIRWXJSVlABEAAAAQVYm0lCMSEBcyVzJBE1QlchEhJDJWmmqbQiUTMQARABEFYhAANGIBRjSKcxAQABaLhbqRABEBAjRTE1h1M1YgIzdlUzVHcye8cnzFSFjM7rVmtDlUNDFCaodmV1aXl0RGespTSbz9/+5rXu7////////////////////////////////////////H5Y/tmD6oVFdZvpNlZXmWZCRTMmY7qEMjVlp0IkJFQ4lgJCIAIkunIQN8Z71HogAAExARIhazIQAAEQAAAAAibIhyUxNABYc0liMgFFOFVmMiIzR3aHeVEyASEAAAACEjMSERIzAWh0SIEDAAdYzVaXIBIBASM1dDEkmGNnIkM0RlRDSUNnhRS7hFaOzu7GVTVWdGMlREeod2ZlWsdUaWm+tlec/u7GaO7+///////////////////////////////////////+nYb+2oB9+5UkVXpqdFV4l4dRIjQxnKt2IiJKciJDJENJcAFhEBMXghArrEfbNUAAMAIgARQBEQAAIQAAAAAXY3jDFlVQSjE1MnlCIhBGN4xJU1VGcwNkUhIwEgAABBATMRZgFBRCImuEQBMCCZWUpnsgICABEzN2RjERd3RGM0VDNDVlI5pjIUt4pGzt392UJGRpQnplRUjGVmM2SHhkR2W/zJn/73hL/f///////////////////////////////////////9/ehv/YlcZ8aKYlRVjKllVpVrZBEzIjeqhqQ0AzhDQyBTFYEQJEACITMQSr5XyjMAAQABQAAAAAAAEAAAAARDjOM4VSJEITmTEgA4pTRBAhN1lVUDEAACQgEAEBEBAAJhADMUdAM0ZGcmlREAEGqCqJMQIBAREkQSV2VHMSRkSGMzaGJDYxOchDIVWXhI3d3aZBS0NBVqlUNUulZmR1O+yFimi9/93tZ17v////////////////////////////////////////+56G7vdl3qdmZncyNnfLuUVkUzJmIkQidKuWYyAkczRTQxEpACiCARAiA3u7WKgwABAQAAAAAAEAAAAAAAAxeqt2MUURNVIVh0QhAnhUNAQyJXihJ3YhAAERIAAAACEANDAUQUdRM0R6dEAQACWYZZkQMQATMRMjVCNnVFQiNVVUQzZoeTOGZCaVFGWshq7MyDlEeTNVW7hVVYyjZ0Z3ac2odpub7/pkz+/////////////////////////////////////////6j4b92HNt3ZZkV5kxRYiayaZSEmpCQ2MxSGejNFEkRENGICQyIDZRE2EEWdyjuTAAAAAAAAAAAAEAAAAAUgBs2KxEQyYUulIDVjMyAlZ3g0UAWWCcq6gxAAEBAAAAAjEAIhAmUkZzNVNZMRAAR0uVYREgAxMhIxI1hTJYdGYiM0RlREVoJrqlE4hSNZ36h87aJnVFNEZFbKJTRqaGRlV4m97Ieav92GP+/v///////////////////////////////////////+yfd+7od7iMt3ZjJHtCNonOx0QiRDe1RTJCIyhEd0EkNDQhIASFEVIAIRCTi7tKQAAAABAAAAAAAAAAAElpQAWGa0eUAzM42HEBIiRjEERaUkcyA7rMvKUQAAARAAAQEiEAIgAlUUdjRFMgAABpZIQAEQFTRTESJDFHmDNXYiRSIzRTRVQmvLgzWTZEnL3Zdsk0dUU2Y1VUrnRFY5llh3d5uu/9z++zWv7v7///////////////////////////////////////7K+W/udW7aeYlnaEJZpTR5m6YSNxElqXM0IzM0hFhjIzNBNSACyEIREQQCZZu4RBAAAAAAAAAAAAAAASNIozeDR3OLYhJiFouXIREBVkUTRDNYQSi8y8lDI1IQEQAAAAIjEAEgA0M1ZkUwABAEliEAAQARJCQREmczJHmENDNFZDMjRVZCRnlyhlRIVpvc3HdDdVQTdnVERXynQkhqp3uHer3f/f/VZf7//////////////////////////////////////////qf4buylJr7qhnk2ZlNHp1RoyTEkQSIEVqdWcyFYglqTEhEjIRAYmGAkAABWKalCMAABAAAAAAAAAAFIVENBa7hgE4VGQjhiJruFEyESJlUiFERxmN3NyzJ1N0EAAAAAASIREAMwAjMzYwAAACEhEAAAETESERFVM2ZjNGm0ISZkZlMjVEGIdzFschlblq7c2ENnVzJHZoQ0NauWI2eOl4q4iu/u/sRY7///////////////////////////////////////////lblt7pSud77tdkQzm3RIqkVmMldgNmICWZOjRDKXRHyDEzECWAFJZDIyAAABNlIAAAAAAAAAAAAAAye3OGAsyaIhIxRIcmpgJZxzNUEiKJQTRCBuvc3GKEZkalEAAAAAAAEAMAIAAVEAAAEAEAEhAAACETExAFWVNGZTMVdzUydlaWQzUamMcSezMjm9dq29MzRGWkJXOENURraVGJa+h5uoa97fZ0v////////////////////////////////////////////ZeV3vkpz9aK2ViWZWe4VViqUiWpIzdzQjRnU0lCJmRKQjIxA3tQFCcgQgAAAAAQAAAAAAAAAAABRHMSSCQIunmRUyMBaqMjcxFIuVQ0UCQxNFQTq93cNGeEUjV0EAAAAAAAAAAAAQAAAAAAAAAAAQBGIRMyMRIVeGJGVjITObhERTSIcim5h0QkSTGc3shpciIjNauDR3VUNENJhzOJnLiJqqrNwzb+///////////////////////////////////////////5u2be2SSs78lnZVSrhlfKhjZjJHcplSSHYjSERXhDN2QVlBEhBZpABEUCAAAAAAAAAAAAAAAAAAKHVpMRMizKdqIyMRASeIQ1URNFqZeEUxJjMil63OonlThUUhdzEBAAAAAAAAAAABAAEyIgAAAgBCNEECIhJTElaXMkVUMTa7qHVENkNmiGOoEkYUzM2rMUkwISWdxSR3N0NCdcukSMzemov8uTK+3///////////////////////////////////////////pPgt7oOLhr79xnY1jNplestlMWRQSJSVZnMzFXQ7gxREVZQBMgFZUyFpIRAAAAAAAAAAABAAEUMku2WqUSBp3JNHMgFXIBRmM3YiJFe4O1MieDLs3dyCOZg0c1UCdzIiAAAAAAAAAAAAARAAARFlMDMyJDAUFDNTEkSGMkNDcyWNvMm3E6mnUlqQNDEq2IJ0R4IhIzScpCWERiQyauuWWN383e7mRe7///////////////////////////////////////////7Fijm7sa7rmJvXnIl1bMtzRqpBWIJlNKuKQkUyJXVZcgSFIxM1UQIUcSNUEQAAAAAAARRRAAMyM2VJx1eXIDRIpSeGECRkIRIzNIghI2NIgjdFROvd7GOVFGQlUiEBVBMhEAAAAAAAIQAAABACUwElMRMjIhETECVCEiVTZDJoljJ4upolV3xjM1RTMRIzdkFDNCZDMzerYTd2NSNFXMyGWM7u/LQp7////////////////////////////////////////////6aFSdhzec/7uWVWS8qUV92GNDJlUoYSJZp2NGhCN4NTYTQxEzM3MQE1ciIiARAAAREzIQASI3Zha2J8hjVCdmRSMzQiESVlITMRFJhCITUlpEYl/N7bQXlzR0IhQxIBNjITIAIxAAEAIgEkYBIVUBEkICIxAgEjJDVjIyRUQjRnmVNFZRnLdGV1BGVDEAARBqqHJ3ITMkioMzVTJlVFi+2YiK/+cy3+7//////////////////////////////////////////+tNc333FZmv/fnNtTq9qVV5vGAVQxRCd0E0dCR4piRzFoYiESJQNEERBZQQEzRjASZCIQADd0RHJGujR5pka8qGFFMTNkESRDIjMhFLhDBGE7dBe+zIkodGlEZkEUQiEBJ1MzIAQxAVd0aCAhACARRCADIQIAJBEjNGZiJEJDdTNXm3YyKsvcQ3kyVWm0MxVczN6nNSFFI0jFMTJUVWRUjPzcq7sxnu////////////////////////////////////////////7VVznds2iXmcyNzodVi92HRJc0h2J0E0mDASQ0eulRE1VkQBEiRBIVEQJYQRQ0URA0IAFFIld2MZdHtjVnRuzMklVxEUZCEiMhNEUxFENDA0F3F87dtBREIpY1eFEjMhABRlMjERRjI3N1JAARMhASYSISIAEDRBAiNXhRMkJYdWRWSJMWrrtRV0ZCW8zexlq9/vsxIyVUM0hzIjZWdXRFfN782DP+/////////////////////////////////////////////9Z1OM1SvaeHelnfWNxmab6nUySsUoRkV3YxERRlecQRdWIREhITQSIkISNXITUiQhABI0aVIiZieIdolSNr2L5TgiEiFTVBEjISNWZCIUkyIyMI3c3XJRRkIlUjZ1EBE0URJHUiERNkEWdCEzEREkEAIkIBAhIlZBARRnhiI1VmdmVFgyhmnVREJ5N8zZu1q5rPzethElkyQ1ciVEVVZlU1asz2Je7/////////////////////////////////////////////tWkm3cB67tmYjuxVauyERavJElaANdlouUExIySEdnkjVwABFUASEhJ2IRSVAiURABIzIkqFQANXZ4VZdUiqd2N2MQAhGIYxAkIiN2VCIjgzUQSM3NRLpEqlIBIRdiEAOKYRA1QiEwIQE4ECNVEBMzAABEAABDNEdTASVYRCVTZEd0WiTbt1OKQFM1l3m3v97d3u7clCJJYjNCU0VClWd2Y0eXM6/t////////////////////////////////////////////+Ul0jtw2Vs7+uP7Xx2ac2WQ2c1hEEjetapZEFGMiMznLYxISQQIyESEhNiIhQgAQEjIyVTEmeWImu2aHVGZ57XRFZyETIAR5cxFUQxNkEUE3dRGqa8wheKcmmnECABBWMgRakxAlQjARVAEBIgElUQEgEQESITJHQzdTERJGSFVUZVYzJMzPcjqSIhSYqYvu3/79/d2+gzGnQyFEQ2hEaFiIl3Mzzv/////////////////////////////////////////////uVqNK6jrJWb647/iO2GRry7ZCOZUEpli6dEUkRXYSRVnKQAJlQAISVDERJTUREAAohSEkdiIzdWZo2VWXNMzL0lQjExEEMAJocwJFVDNFEWRZQq3ZhTRFZlMmimESADRZcyE5hREiQiATVgEjQQJGURADIRASUjREIiRlEBdbuVV1R5YmecvEJZRzE3uMzu797/7+7qraUSSHMmg0Q3lVV4qcoxO///////////////////////////////////////////////0kZTXaF+7Kdnjt2Uec62RHjbMzQxFphUVVNFhURVMDZmuAAARUMQADqVICOVAQMhFKpjIWlDIznJRqt1Vo7tujhSIUcxAjIRJJhhFlRBlRE2UTzL7WGaZpdkIDnHEBADealRAnlCIxABEQExAhQhATYgAQEBAmk2U0QTWlEjq8ukSFQzq4h9V3I5cROLzP7e3///7uypzHIUZkM0NHNIl1V5xzN///////////////////////////////////////////////7pJlWeklaN3smt76mmeL3ZVUZFtRKYVpISMTO6ZjJ5QDM1I2EAY0EiAXvIEQEyA0pgBJuFAlRTBZrIRqhSiszCKoQRBWQhFEERI3liFTFjhhODPc7LUWq4V6hiADi1ACEBWMtzAVZCRBMxAAMgBEUgAkUAAAESI3VYM0QiNGElms51UyJ63oZo2BUycyedje/u/u7//v24qlIjdUIkZkR6uneDJvz//////////////////////////////////////////////sVYRM7BSrhqub7ulf2lRXvLmBJUIHq3QzIiMSjGREWZMjEUq3MCQyMyApphARESGLpSFHqEECExJrylV5S93KNVWDEiQkIgFDIiNHmEIUF7xDE73MtFdH24R8qDAEZkElQRJpqCIzQxIzEBEAEREjMRIiJDACIiREVWVDIRM5MkWsumVKiJyTfYVBEiMkpu3u+t/9z///y4djI1ZTI2lmd864EWnv/////////////////////////////////////////////+6kqDntJ4bNynvu6Cef7JVFV6JXVBVYvWURRGEUWGQ0anMREn23MAQyNSATRBUVMAO7hCRHqUEClBVuqFNLuMknpjQnYhVEEQRCIjNYtUY0a8kjSM6RbbZKyzOLuDAEVHM4chE5uENSAgEQEiEAESEDMQQpkxEkVEM1RnhSECRpMjZ7qTvrp3JbdLQYNiQjvO7r/f3f7+/t22cxRFVDNYmHiKcBvO//////////////////////////////////////////////7YRnXZgo6mjPjM/qaFV67NmFQjlSKbVJiDMTeXEXmlVFaCEiEUuoERIkIgAqtChkchS7dEU2phA3qWSap02WSDVpIgamIzVmMSNCIiJESDp0iDbXSHJWzKVa6TJ5yCAAmmQ3hiEkmGNCIgExESERIBASEBNjJCNmVTM0NJN1EzR2QzM3PL3NpCJGlVo7eFNIbNvv7N7+/v3f2nMkZWdCNae7gwL+///////////////////////////////////////////////9ZZdIqSbO6pla3th9qXVnir2jRSImq6U0VURGqUNIp2RTEVVCEUclJCEkVRKGNCe7YiaoVGQzJEFcqEV6S82TJENyI2VIU0d0ISJCMiU4Nqp2J83WIalnu4VYyUJGaBIDi4REVTEkVTEyAjIQIjIAIRAQATElZkVFRDNDIFVnQzVlZSM4rPvUmBKUSDlOp3NZq+7829/9//zfykI0U1c0WdyBCe3///////////////////////////////////////////////vya1TtN4fOzFfO/EtFy6hGZ5RqRUZnmoQURXNbqDJKtGMxJ3aUATIiQhJ4tBEXI526QViGNHEStSJ8pUI528clVSE1M3Z5Mlh0EQMiYyNoVtk47q2CN6lXzWNZyTE1OoMDi6ZCZUIRRBIBEiERJBAhEAAWMwI7t1MzR1MyIVnJQiZHtkV2m8arUiI6OWyZ6GV57dru/v/+/+zr9xNERodFilA/3///////////////////////////////////////////////+YhkV90p6njMnO3dX/oza9qWQTUjO8dmWBEkrFNqtkFbgSVxFZ20ABI1dDNrlBkzM6zaESa2RABXyWOapxt92SVoUSeBFnZoM1dmMFYQWBR1SCjO7ERlSMZI23JGtCEirKITaqthI1EBEBMBEjUgEkMREQE0IxRbq1QiRiJzI2mqU0UjnIhlcF1JkBQ7bIrtu5as/P/9///+/+3dxWUzOchUEJ7e7//////////////////////////////////////////////tdMlFr0bfyXh97fhN3NtTWazEUyc2rsdWEzE1qWSLpDNTEnlhFHQhEkValDRUJzumJJrWMjaCIRNsx0NlXaeJTGRhNENCJ4ZmNHZ2JGJGlWdTOu3bSNhXWIVHvHIyhBNpy5Qia82VISARZhISMkMRAiADIBA2RURmeFRDIjI0M0i7hkFHy5hCJUmEODlsidytqZi7/u/u7/7u7+rJQ4UyfLUS7f//////////////7/////////////////////////////////6UTLTdVov+3Wzd1zWd7tt0RGSUO1ZXuNdkJEI3uTarhCMiRqxwACEmFER7iENkK9ylJYyjIiEzVETKpzFb3ZQ6yREkc1UyKMdkVGSEMhKclIUHzelJ3sZYuHVHzGASS1Nb7KYyWsxFNQAldBV2IBQxMhAjQBJoVXlUZlMzMjY0NFestZRnvqVzFoRYOF1o/d6ZuWbO/u7e/e/v/dyEV7U2owXe/u//////////////////////////////////////////////76VThbw46Hzcjt38dkVEq73IUzNNWck1ZogzaEM3llWqIjODRZphAiV0NVSYpksWnM6DI5uDEQNMpTmLg1uKyDRpUUhDeFRSOah1NNxxMyWbcipXxmi76qVb3nQ2doEkq3JarcgxJjdWJ1ESRVdiMyIREAISABOIZsuJZSRCNGUzJDRV7adWZa0xMUgqXGnthjRVZCSK/t/9/////uoze6MhKe7f///////////////////////////////////////////////utVhSeSS+p5mO/u5XzJdFVViFk31FrZgzREdWd1JZh1VEFHijNpQyE0ZkR1RSWUtlvctTNaYxNDa9hGU4fbuDd0QTWINHmFUxSIhkeYRzhTa3K9lTWKWH3ZdYqUQkc5Qji4RWvLcxEDIYp3MiRzSJUhEwAAERAUN1SLzMSFE0VVVkRDN73cdRaWpRNTtai2abnf7Kx7/c7+zv///+7fc1uzA53//v//////////////////////////////////////////////2rN5VYVWjeqFa+/mRFrNupiFJ1nUR1naMjKMdXtiRYpSRSJFaEMoYwIzZkOFNTTOpkzrlCJKZWeFjKdBRr3rQ3hRIwJqY1qWMjRGmFMnRap0Q83sA0q2J8/Lc3pxET3McSa5U1i7UjIAGthKcyFWd4c0AgEBJxEyVDRqxIgzNVVWVVSJVqv5RCKoJWOVyFnN69/dv7ievf+///////75SLYnu+////////////////////////////////////////////////75VmRFkzyGi6mu3NZ8dUic2t14TOZadzdUEUa4VrlWRFUjVzI2eUZmYyMzdb5LYnnLpIzMhQM1W9pFiGUzaJ1WRGJ0gQKbZFqnREOs1zVWJHgx3Lw1RWSXad7NYXQxVsvddCW7hUVFJBRERly9MjI1I1sAARIWdlM0ZmRDlSmmJGhUUVaqdolcYRUkc8V3y8/4/t2u7pq97r/v/////t7HZ3r+7////////////////////////////////////////////////+2TmDRiBH2oZ+7e5yaKlVV425lctirLZDMRMkaWWbh1NDMohjNDFEi1IjRkeDp1hozpVpm2axM7zMdUJpnLdkmXMFJ3MgS6c2d3Q1fINhV0IyTc+Tt0Qod1at3IMSF1V5vdhCSLpBMgCMpSNYtHh2UycyEBExFHd1NFWlKKVWqYM2ZCZHaaQlmFcwRUk3367sz//M/+/Xnej////////+p0rv//////////////////////////////////////////////////7qU3c1EYNJ3Xv9pYenVrqWNVpm2ZJpzoFDJEMlZlark0M0VnhTISBI2UMzWHO3XbdZ7IZWO8UzecybgUdvzpNntSZzNrcAWcmHpKhnY1c1hjEnjETcoyaJdket5zISqnRHrdlTJDU0ETbMVzNDrbeKJicSAkIzRFeGVoRkMrlWqoQ0KWVmdkFVSXJXRcjurv2/7r3/3/rZu/7////////MWr3//////////////////////////////////////////////////+pIU0tSOIVnjd7ZQ5y4VVh4hTSYNIVqklQ0ZkM0VVXDZEq1WJplkxFa2EInk1Ze7aR77ZU4hVWmXJiW13zs41ZSWNoiR5MROZ533chCMpZIo2x1Q2rVZDnNuhWjdEQnvLY0e71yISE3k0VtuzE3ioQkQwQhJZU1M2hlRmxyOKdWjIQounZnUiNGQldq+d6+77//vP/f6/yp/t/+/////d/qrf/////////////////////////////////////////////////+2XVnFDOFeodc/e2mVXmqcyaZZ6phjIVilTR3dTNFIkZTWK6DR1RklxFbxqqUtCrN3nSK2J6ERduUhSjpZVmUuFImfGhyR2QRKVnczlI2JVRAuLwkdWXYU0jNcxFiXspGneljV2lTEQu8kjSIPXNEMgIwASFEWqRFVGhAaXZ1R5hkl1lYu7Y1UhVDQ8/Z/J79v/6+78/878fMzv7////+7v+6zv///////////////////////////////////////////////+36dFVUQKpnilitzaObhVZ3eFUkmcJFrIRlRkWKdRE1QVVEesphE2JaphJ33XWiV1vd3UVEy8dUrdp1FdmMhlOrgkaFPNcjRlRjJYzcchWUFDCWWleWUmzZczfMIwFezct0feyFMyESJJ61mXIGuElxMmMhEmNla5VDZ2J0N8x0JZiEbMt2imNkVCIX/Mr+r/vP7q/vv+v+7bfP/v//7+z///y9////////////////////////////////////////////////7teTVCRhKMiJm4vNs1a8uVM3hziqg6hGlJYpxVfMhkNTQkh1WsMwMzVdtAJtdNModGvv23bf12hWnsgs53zdklh0fKs0bLZEQlSrZFhEZyiRELuEGM1FY23ZdCNkYTWnvOqUSsZmYhCXZHXVhGdDSXOCNRVSJEd0WaQkRMtSWdtjRVTOzcuYMXVkM2bfzO3P68/vr/+/7P+7+Yz/7///7v7//8ze///////////////////////////////////////////////++HN1QUFkOrhL64jIl1VmxndUJWmyXKYyVjd6hljLuSRiNZl1ZJNjYjRKU35VyFl4VYvel83HWPlWhY3Ynt2XpUN8uHt0aaeYQmreqFBJk1sQKskkRmqqZFncQiIm12NHrOuVQpVUIViqM1MgV5q7KDM0BDNWI1iFW6YSV2qEWLqGQmi+zeeDIWgzjM+8+d/8z/7O/s7d/83rya7v/v/u///v/bzv//////////////////////////////////////////////79k2ZDcURTOEZ82XR8yYVCR7dHisVmilNDS4Z5d2i8SEQ0VqpTVkJoZGVpzlWnabuGVZ5r7sU37bdyTesr61fbNFeUXchUeIxZl3i9URR3QxBlZk2FFb7dhkcyMzauy3U1rttGUyIjh2Z4ZyAjRFM1MhISEkk2M1iGaVRTJttkR5yGqXi+6IaTIxaM7r36/vzf/L/8387vzezuqu/t////////zM////////////////////////////////////////////////2DRlEwVzQzF7erszWay7NVQybchot0U1MUq4V6mHhLYkqnVkVmk0R4Vq3uV4R6iMp1VTy+x1WKycSO2leKRrxoimU3zbVnd0vcyGdBIiW1AcxgKMpEJq3dkxMjFnqt3aQ0mUjEMRWttTWoM1RDIyMkMTUhJHuVM2mERrYjR7uFRVntyompmIeTRX3fvere+u/7z/zfv//M/O/7ru7v///////+ve/////////////////////////////////////////////u7tZGQ0EX51M4voh0Q0RFdZylN8xyXNkxI1QWmZd6ukpnZlqpJXRYyUaDXN1Xxku4admEKZy2eqaLVv3orbc0aFiP1WVI2oeDJ6zN6TAUITcVzWNDVV+iRou1mlczWImsvqRQYmdTA4vcd0ICeZlGVFWxNUMyNZ2mMnk5x0dCR6y2Nqz+64hBNaI5i9+u+v/5//rP6++f/s7q/+3Wve/f///////r7//////////////////////////////////////////////+5lZEMgNZ2zeK23MjQ1UzWKVLzOUlnGAyS6MmrIiIX1WNlWlchSKc2HNszVjJbHilacZWm5aL7IZDj+qNvYVUJbzHaIZXypeZdozMUBUjIQfNclySNd2GNFPpRV2XR5mpumRWQyQnRYiKlyQ2ZEViFYFjE3RkRqu4QjeXNppTRplYZ6z/2ZMyMjue357p/9r/+s/p75/+rdv++/16/f////////6u//////////////////////////////////////////////3VaVREBkJre7mJyDUyE5RFMjjsx2Q1VlQSe3Mny9ZKUkvbgxqKciW8yM7sSbZ/2FeFdKqKpljN3VXL7H91W8REjMOoe4ZVp73rZVtRQ0RzB8zhNoWkOvqGEGlCTMy4JXeHGdcyAivKUldiSajDZ1MTMpURBsqUSJu2Iys0RcyFM0iqZ6zJhodDOo7vr9r/3P/53+r/n++d6/z8/7fP7v///////+vf//////////////////////////////////////////////tVhhQEZEQlzKeWRnd0IkmkfNy4W4UgZ0YUmVM0lYhldWnYe4l4gyZ42a1Kx6zuxlZhXNiGiVnNPN7qj+clp5hlco2lrqlFjN7utyA1NDUVm6KkM4qkKaNbpkM0bN/rc1MwS3URFHulVJJlVVLYMngkgyQjWsp0RaWMUyRVNquUKN3qV2pCWZQ5j+3P2+/c/vn/2+2f/67r/+v+zJr////////+/b7///////////////////////////////////////////7/3YpWRQRlNVbd65QSVmejM1M63ZY7hYEjF1Qzm3VCW1XLpXO9iGisYxO8iTnUve7slTJ0eaZIuWcr7uuN7FRDZ9tyNamH3WiGit3dYjJUUgu7VK1SRpmWUVvaQnVVSM7cg2ZnQyJVQ0OnE4maZrRRRmRUIjhEa8uTQnqYRTNFRYVnWN/sdjQVY1qf+87L7sr/2f/a7Z/9r7z/6/+vyb//////////3O///////////////////////////////v//////////7//+WLdFNEZ5hZ3c21MyI3NYU1zd6haVRVQkZ2MjmnJ8YSjsk52nM4isNVrKJrSvqvvMUmdZVniatznu6n3fa3Myi6FnRnZ3Tfy3adtjhRNDFsthTGiUS4aDy7giisZVJY5kzOsyEnq2QjMDZWM6hDSjRZMRRMhlWbx0MyRrlyVldK2oV86qVDQjfJ38zsv+vP/p/undn+2vvP/b/77rfv/////////9z//////////////////////////////+/////////////u6We0MVlUWHmK67dXUxESVEeL/MVTIRhDhDaEM1hJlGY0yWzYiURWh/54pKY3raaptodWdTSqu4je79juVbxbdUYlnHVVR+zd7YaDJblCI5u0WUJ95zVxSr2lJXjaiUQyNMuXETZ5tncAeodhmjGGSQZCE1V+pkZlWFMiaNpkWYze7KZ1x3Z0OMr/zfrP+s/9r+2/y//L+s/8z+r++37+/////////b///////////////////////////////////////////+/HuEhjF5dVfqmLtTVWZSZVWLib1JkyESOahVaFQTqkObZUjdg0nIQ2i+2TnSWIuXaSfpbIU1aJR87+2M9SamzekyVHrGVEid7d3KMVOLlizcYWk2Z9x1GHiXRchXm8yUNW3WYyU0mGhSJFdzZXMiN6QyApZVWLl0RtljM0bNqEWf7+64UiJqUmmO+d+t/5v/yv+7+s/7v57vvP2f6/qd//////////y/7v/////////////////////////////////////////7ZcdFU0V5c765ZnZTNWJ6xVnbiTnaMTEVq6dWZ0JbVVSbJM3JVH3FZnzaR5dmdFlXOXiniWZmYovc7p7OZTSvzYJFM5u0qYec7txgRkR1OqslQlilR+hc3GQSrupUaLWodpcgKoY0eyEpdVObMUYUPHIBa5UzaJkVe9NHdFfNhVWc/t11EQIkqH74363vjf+7/8v6z/rPnu+d/q/7/qrv7///////78z//////////////////////////////////////////v6jSIUiylVVh93II7yDIUeFmHrbRJeERDMnnchXRHg3+UYdzpdEZHnf1opLc2p3ZIUWmGZli7hkrf7vX9tLU0aqZnVmNGbczZd5zVSldkE6lRbVJnqVQq/c51I2ev6mE3V6dSEUa7hCJCRoVJlxNWkjUxNDbKYzRlt1ZmZoc1lb61as7KxzdUOq3ur/jf+e/7z/zPre+d6e7578v+3v+57/////////67/////////////////////////////////////////+79RUV0FZy0KriJuCFImSJEJdyYujVVNkJlE3zbg2lSbN2E2+mUaIU37uyDmmOYd4UkZbzdQ3nIR5rdta112IyodDmmZXJHrN/qh4UntWklv5E3VmRolirO20N7dTVstYh13FMEVDZkQyqncZvFF0RlUhJ6RDapgzN8uhaHV8cyit6Yh5rUe3RNnO6e+t/p//rf+s+e753Z7/j/u/6//+qO/////////+u////////////////////////////////////////93u2FUlNEWLxYq8Z7RyE1N6hVe+qGKVMlQ1ZUNXy0aIE5rKfc95Q5qEXv7sSIZGiJdkRUZqxnpXRtl6qEN4Kovd6FM2u7xrhnne/ukxNqmBbKkpU2eUZkWc3cckS9pkI0rs7bUjmFZXQjO8x2uqQrSVKEEFq6VEZ3KFWcRUZ1ZkRmfu/ZVaNdhT6r/p7q7+n/+8/5363undr+6f6a78/+/3r//+///////6z//////////////////////////////////////++m36l0UwSWR1y6joQxZ0MRWzipjOcnpAJDZlZTJGSqxDJYSO7Ll1R4WYv9xcs0VXZ3NIgzaGfdxFz+une6dFVs7OVJZHq27912ebznF0NmFMpDvDSXhRLLhpllu2KtyTMr3NlhBru4Y0VUV1TMxRV8hCEEQ1nbdXc+61NKplRXiP+Wat55YVhlbp3tv9n/+P/qvvrtnf6Oyv/Y/679r//t+q7//v//////yt/+/////////////////////////////////////vyb58dFEmmnOdq4g1MzRDIzE+u4mRVkRUN3ZWVmQ5miaVMWjOpSeYJqmK2lz4VVVHg3nct1RbzXzs7Kx91zZWvs2kZpRUjO7u63eKZEWkMUjEGXXJR6RKzblTF83GV2S6l3x3BFRXmSVHd3SHfDQyaGcQSJZEi6dEzu2xN5plZHzP64eY6TZmOOjuy/6u/Z/+nv6O2P/o+6/vn+ff/P//7+yf7////////5zu///////////////////////////////////////9pVyXQTVHqJ3tmkMWZCIUVHzu2JNFk0U1WZh0eiZ4EluUtViFcXtWjLiITMVqdFRDh33IhiSYTO37h3mqNjd4rFm3abWHjN7e3ZUyhjlxi8YVVqu2QkqIrZUlJczIEn/bpUMVunaDNhapZatmKVZDaBEkWJZFeUZnvZOFRrpiZozu64R2O5Yo2O7M/q79rv6O767p/+n5v+6f+O/s//3v/5r+////////68///////////////////////////////////////t/tRpixFHVFe+zbxzIldCQiS93u1EIzQzZGaauGTbVHRrTJd4RIZEuKzsc5tRrbZEJYhoh1eUQ3zs3uh4RMa9uHM6ubxuyYi8/s75I2dDBs0xwyWJyybet3hDzEJGZa297LMBOLqJVGVEY1arYVbaQTM4dDWqVEJ8dWU5t0NnjqlXvfubQoiSjp7739n/2//Y3un9fv6fnP/Z/X78z/7e/v19/v///////9q/7////////////////////////////////////v/uhyMpg1aHQ6zuvYNFMhGJJXm97aaTM1JFZmaIhGuCSqd+24VAKJXNqYqjh4NnrcU1V3VmNcpTVZu5uZxiWO3OdDOM24/uyneM3NdVZnMXmyFkuFNljO3exyNZylQim87OyCEiJogjE4dUvbpkVImEMDeohCaZQ3vqhTVYp2Q37tqGmq10dVK9nfneyv/M/9r/6fuP7I+N78n8f/3P/97v/bje/////////b7///////////////////////////////////////7GNUNzlld0uZ67xCRVITMXyYnNdcc0dEVldjNWuIQmZm3t7EMiJXzt2YOcYqZXuX3rmFRTXHW6vLl4vLZTfOvDaFSmnu7v7ZiatVRGlgRII0FL2mFone3ZM2M220iXis61JKg1NBQ2iFbt3VZ2ZXRBIkaHZUY3ZW3FRlRYxJlYz+yFbVW3Qp2O6e/L/r3/2f/b6q/rj47uyu2P69//r+/9+n3v3/7////u2O/v//////////////////////////////////////5VU1Bq1VaMp6yZVTMimBe92XtTWWMjWGRWdTe+YkRCS86+tlYias3u1JhCVmZVnt7LhSNzN+/v/+WfhNZoe9ZIukKM/v/u7beFOFZRKGUzgzNZxuuGi6lG7GMjW86qd7YRbciTZBV1TNzLSW7JQ0BFIkVodjWrpXY2ZENFvchYrviXJphU3p/p/7z+rP/p/8r7rvuuf/+5/I/r3++v/+z/hv79///////6vv/////////////////////////////////////+3VRjURe9o1ncmUMpqEA0RXivyWNERGJGeGVmNWqVdHJYec22e3ZnaLzE3JNFVFNt7dmHNFU3ve3t6Vi0e+24dIdnZoiK7u7+75Mzh2MF2QFE1lNkrf25YyjN7pQji9zuQwdUe5LHRmMqzOs5bnijEDWFMzNTelaacVdlZTSt/uuHqd01ejTsntn/rf+s/9r/uvqu+r1+/6n7j/vP/s//7d/Hr+/+////7/6e/v/////////////////////////////////////9s0NDFFrWmGv8hjIopGRVuniutDUiZCSIeWZFVXKFYmi6Zsh8e7hnabbNxJZDM3ff7cc2ilmIzv/cmXSZ7s60KXp43rdp3+7s5jaGYhbZJTE61hOGn+21ElnL55qYmb1jCJVDUlV7pWiYp1isw1IRNTWFR2Jc2nZ0NFd2NXa+/euEvDl5Jv2e6P+d/6z/uu+7+8/6vX/vyvu/+t/8zv/O7916/e//////76v+/////////////////////////////////////v7llEYTVYbdpIvtVHIRZyV5u3hzVXMSVxR4mEvZMmVRiXfbZo1t3dplU6yzm7uEmonGfFOLXdu5rOqOtnWt7ddEaEjd3slove3YNN2kJYQoaGIofN6GjLc5URZk3u2rd2MleqkSQWykvtu2ZrzsUwFTIyhmVMzdylNWVEZJu4au7KiGKIg43a3o/57vnP+7/7v6nvnNb/+5+p/o7/vf/+3uv9bM3//////v5t/+///////////////////////////////////+6aanNiFFc23NdotWeGIkOrp5u5M2Q0I6tjN6Sc6SN0JKuFd2R27d7tt0VpV3i8WZq3pldXeN/v7slWqnmZaL5ap1R4vu79qHnJRjesRYlQNZ24JJzPyXQhrchTIsze7LQThkZUSCJWK87bZUqqtBARZkIkdDi/38cndVVSSt23ecm/k1dyjdj9r9r+6O/7vvy/q/6s1v/sv5v+jv+8//3v/O/Hrv///////7nf/////////////////////////////////////6hlhlYTVVN626ZSF5clpm7dyJuDQyIyN5tTQ4zbVnQme9ynRnV7/N3tWGRHmHR/ypmkRSu37u/97XWWWa7LpzfepeponP7uyWhiV3xEnHJSOb5pmIvfymFFe+aWmJ3N9hFFZmKWV2MqvOxXjpl0MTQUmXIzN3i9yzeHZlSIWLzbdd13hzNttuuf2e/p7vvP+8+L/Y3X/vu+nP5+/63//N/87/tv7///////+6//////////////////////////////////////23VlljUzVJd725UhN1J0jO3rp3VjIhNFR7pRSt5JpVdGaM5zRXZ63uxc1yNFlp/e2nZDOFrs/c/v18pljN7bU1q47uuXjOzc1lMofUTMQpVCKHzsqHnOc4Y0Y97ql5hlF4NFMaIpdKqYmXib92QSNTI1qWJcuHeWXXZnRby4ea/neWd5Ulu47r/Y7+nv+8/5v43+ndn++b6L/o/vnv/87/z/7mn+///////+nv//////////////////////////////////////5XNbhHdFrZaL2SMxETE7zt33UkdUI1VFVoVWW0rmanZmabeVeHl4zlreZmNDeu7u/IM4Vovae93pymqHmdtpdSfd7/2Yas+rVGN2NFpRZtple87+yngxjdpDis7sl0EVrKYUhFRB7ty3Vb28gRJXVENIpFSduFNKy3Y3aL78mYjJZWpFZsnsv8r/2O/63vrPfv2dyf/pv3zuj++v7/z/+v/9tq7///////+67/////////////////////////////////////zGZ0epRlNpzIaKgTQyVFd87f2jJVQjRUVmQrpmN9a9mphkZVnpiJmHa+sq24RWu93d6UdZqpmnmbrMd8+olybceXnN7/25Z3akR7gUVzNibMZ5rN/ey2Ize4qoms3tphNDeTuWdzOt7bpmlophIianRENFqXashFRHzlvbma7tlpZ2aCW3d/uvy//p//ne+t99/Y65//mvjP2f/q/++//57/3qXP7+/////um////////////////////////////////////+//pXRFm2Fahr64ZlcyAzjKeM/ehERiKHZEVSq+gyYs7euZhTNbz6lXpEnmKt1LtXa97qTVib6pmJZYp5ze7KRFhu7Hec7//ZdUPDaDerQ1iEZdzMmu3dQ7cyKuy5d6h2OnVDCXFqSWe9/FroaGIkQkm2QySbylVSV2RGXd7tiM7J51WXJ5s32r+5/+r/+c/636zujrr++r6d/a/+nf7q/+r//M+I///////++4////////////////////////////////////7+uHpJhTSIrchq6mFbgQJK3sea3UcyIBhmZTFXroaBZ73tq4hERbzduFWFdnW33vuWaLtrb/ur79ynV1jO7elIVFne/bh6ve/nQiWJJ2tDJZ1D7t7riaxyR5VXm+7eqHEqd3VHRWQZ/IiGaXnFQhNoITaGJUi+6mI0VmRc////uZrHlsUnj5fav7n/6f/6z+n/nfx9qv/43I3sr/2u/tr/y+/s3uif///////uu+///////////////////////////////////+7JTHOJQ1SdzZaa5iJjU0Z83rp5S5UgFFZ1UlZZR9SWRq7tpkeWZoztdYhTdoPe3t64d0iO3u25m/2KVXrO60S4Z4nv7Nmort1iozYWakREJmju7d7MqVSYZIqYas3cgzNGUWtFhErP/dZZlnlBFmV3QRVcqXa9pGRWdli9/u/tqqeHo0iNo+nPu/7o//rP6e1u/X6a/+jNjvyv/a//uv/L//zu7V3v/////+/Z3//v/////////////////////////////////+sVdnRMc1zs7IWmWDEkS3aP38UmiEElQ2ZziYREhf3HVo3oabiIZmuZynNlR7z+/964M2vP//12m45qiIe+mmWduJfe/tyYh6MopAZDFEnKZ4nv7s+9QWmmzs3Zd62COWIhOGN1SYrd9VundDMFhlZ6YSz9uXdhenR2y1m+7/+duHejOZ6Uir6s7ur/+t/r/m7sfpr+6c6P66/tn/+7/7v/68/+lt////////y/////////////////////////////////////7YRRdEaqRnvd3WYUxSE83XWZ21J0RUVXRFOazGFCu8/oZnaO6pqJZmXdw4VDhr3d7u90eHrL7+qlS4m/7ndW1YnduHis3+3IMkAkFZYSOrp8uoi97tiWhFV8/P3rhmI1aFE0R3GdypmmacyEITZYhmaUdnzutnI1mXKJ+nmc732qeYJpnqtmz73vuf7639n+bv1+mv/pvH3rr/yf77z/vP/o7/32nv///////6z9///////////////////////////////////+dHISpWZ8eavt2UIiMzfN26Z7siRSKEVVM4lqhINYne7ZZEi/zLmZU2jWvHWaiK7v7pTLqL3c7OlmR9/e23WFq+/u64er3d10JVQEiCUTiZ7d24mr6VN7Y6ib3t3pYCRGRIdJZNzvuqWXecQjaGdWZ3bpl3reYnQ2VZec7Jibvol4Y4iPmsXOq//J7/nu6u2O7p+b/+jdfvuv+7//rP+t/vn/7+xt//////7/yv///////////////////////////////////+/XVhNnh1vreKv+gnMCWFi93aZzUzIkeEdRabk2hKZHrd7GNVmu7Jl0dnafeb/teJ7+hN7piJ+7zJhSet/eh6V3re/t+6h7/XFUNCRYNWhEiv/e/aeLiHRIyqeK7O6RRDUxiShFmJv957t3RWJ8d5dlNrztZXpDiGVL7qh5/qV8a3pjeJ6o91+t7uvv2f7q/Y/tr5v/5+1v+s/6z/+s/57/6v//7njf///////pv//////////////////////////////////+7dRHNDVIiL/9dZnRJjFd62rO6jNlQjE4pWZWWIVDzrZGjMqMpkeN3ISpZFeL/t3+eKym7u/9mLzKd4h2eL2JqP2Hqe7//8dpxBZ1F4RGfPeni83d/rhDvXzv7dp4iFOYZQN3VijNuZub3bpQRVa6iLtISr3/t0dFlya87tlp22lZe0WJnprYOZ3uu//p38f8f/ufnP/nzH743vq/753/bf+q//3/1o7///////2+///////////////////////////////////vtjJEZUU3y83ciIZTETat2Wm8VRZCJFVohdqUVFeJzLdGeI3tt2WMx7qniFZ7/+3tmVPO39/9uax1Vr+pRnNJve3JeKzc/8iFVHcVZUZ9qP3KiL3evlJEa97d/u2oQGiLJnE4Od7f3bjKuUVClVe6eE/KiK3sJFVDeXic7spnV2hJOKmveel4fe/M7/nfx/2O656r/+ncnvnf+q/uj/99/5v/7//qjP///////9z//////////////////////////////////+7oQBN2ZEN23c7MVgdRF4bOuXqXBDMkZVVmrOhRNNyHzsdEO+3eukV03+d4V4if///ek2n/7//tt4hmer24MyRJ3u3beHfL/bM1NBiUJH+J7+39mYvOdqh2i+/9/NhSUxZXwyQ4aP/PyOdoQ0ZIpEnVaM/bdZxWNlKO7JiN/8ZneZcluZ6a+Gpfrczv+//I/Y/rrqzv6Nx++d75z+1+/o7/ne/v79+n/+//////2+/////////////////////+/////////////voVkjV7Zohozu78MAFsuXe/yGQlQjJFdlXczsNER9uXjdVEWb7c7HNHq31pqpdr/f246Un83e39pYeYmK2VRFUmvf//yHeq2iJSAnQjdl79/t79yYiG2L2neK7u7EBpgReopn+5eMv+3sU5F8ZHhFM4aN3OhS7GRnSt3piKyfh2hEaYn5vYnYjczP7r/7n8j+m+nu/Y7H7n79jO/J/8j+6e////z/ee///////7z/////////////////////////////////7vuSJGFDWlaYhX3r2iAATb6We+uTKXA2VWU33NxniER6unmVqFeJ/dyHdmW2ypmrmK3+Xf+YrJrd/3ht3Jh2ZqlzZVq87963h3iXYTQzSpd6zv797u+WWXze7Ll4ytgmRlKGO0ze7bmpnOxyRHW7dndHWIh93YBHyI/Jiq/ciVyKdzd5mfe9p+pq27/ujvyf1/6s6d/9fsf+fv6d/6n/yv7p//7f/P/Xv+//////6u//////////////////////7v/////////u7UmiM0RDV6iKdYr9UwA23u2He9pCVEJGZ1RY7WWtuWVoqmSvuJZt75nKZFS8ysmJl5hfzu+Zd5mMp1ve3rdFnLujNmaP7f7LQmZhlyE4eu2Yjv7+zeuIZ53/7rqXdC25R8pHKb/9/tyoqWdRh1e5pjzXaph8hXM0ze+6lo7aaEmJN4qY5r2W2tW7vv+f/J+4/6v5z/6Ot+2O7q3/qv7L79n//u/9/vt+///////7z//////////////////////u////////7//4j7iBRVYSq5erd1p7Y7lWre2nhTVRNURESpVXYrzOyYZmdlne3HRpqe7Wlmeb7smap0n97//aeImHbe/8yzaJiL/JhESrzM3DIyFbU0lHrP7Ijd399nu8qInO/dyFBGkq2nZZeZzt7emWOEM0hne2h1y5eoYHu3N4ru/Pp7fcaXU5mpj2vXrK3IzO7a/sr7r/m/ne/I647Y7+je+q/6n/2f/87+7/73v///////6+///////////////////////////////+/+a/2EpFVVRYy5iMhnejvduIvduVI1MUY1U5vKUxi+3u2pVDh2mc6oZVu9eZqZvu/suoZYnO7v7riIVIvu/daLmriavqp2N7zqaVQTcyXHyam+6puqz3ma7dupi93nMVYivKlb7aqZvO6YVJREVleLXsp4rKq0NJfLh4rf7cpIiZlDuKqfaud9rqeNvsr+2vuf6b+e78frjtjv6O/6nvqP/J//vf7f/v2L/v/////8z///////////////////////////7v/+//hu3dQjllMbpYrYe7lWSt3NpYvsphUxNGlTVYu3A3v+3t63RmaIec+2NXqHjNyXqv7+x2qXnN/+7rdEa5nu5b7MisqJrcyXV5c0xyZBJqnd3JnN67mLiJ3u/v7JiawxVnN4aE7f/byqmtpWU4mFOHNc78t2nKOXM67sqIru7It4WFTYqo5r2GyerWur6v7K+p75zo3ft/qP2P75/+qv+q/8n/++/8///5n+//////6+///////////////////////////u7/3+46/9zDFtu1SspV3Ye5ckrP2KhmvaNEEkWqWspmknZUnezPm4hVmth816dGRqr+65mu77vam4jK/t3bN5uninn/78iLupnN3JVBInF8MTeO7+7ai9/8t2fO7v3f/9pTS3M8xUKtz/mPy7h1lhac+VQ1Vqzetoc2VlaL3+p2rrnZplJtqpnmzYfK6cto3Z7sv7r+jPnu/J+Z/X/9nv+q/pv/u/75//3//v56/v/////7z+//////////////////////////7/7v2339pmZQWLppidp4zXhlR2rGQ5l4U1RDM0ltzdhhaadVjN+rv9hmaIeHvchCh8/v7KqMue7Lqnms7+5KmtuZRr7f78mNq5i93ZIjEFoiZ3ie3+/pmbzqd5fd7v/ez4IUiV/IZ5eZzXvPz3emRkWttV2HVnu+pCqE/JeLv92Habq3YoyKqffMd8vorbXMjvy+uv+N19/9fqntfv2f75v9i/+r/vn+7f/v37ff//////6v/////////////////////////////u7mv+38w1REeVu3jMl33HIruInLmHdxFkN1JEnc3dRnm6pVaqrM7dyGWKaHvlWonf/+/spl3v7NqYiK72n7iKx4h57e7ruK24eJ2TIyNDNYzamc3//dp6dq6Zib3+z++ykiGado7quHmpy+XbeLdlWlzMx2Vni4d2XO7bhZ3+5neqdzvYq49q2Hu+i9t32t276q/535z/1+qPyv/Z/fi/+c/5r+++/d/8/t6J/v////773+///////////////////////////u7rbd7+7bMxhUOc6Grclo1ietyYjduVchMjdTFr/O5X6WirqEN9/e7dyVZHeHSN2Zq/79/9V5z/7uy6iLd+uKmEnMdYvv/tq8updDKDFFIWje/uqazf/+2Ha+/cqIz960XOZYZlvv7v2ohYl7YHzMh3jf7uyVSZKNZofd39dovotnaGLPeqf1rojL19y4p5rbr7r+jerO7J+Y/K/srv+M73z/i//b787/z/3si///////2f///////////////////////////u7uev/u/3eVIVtUvtqHrqpoRZiuu3rOx0JCJWhEVr7lbe6nmahUVq7f7v64Zollje7Ym9/t98yJrf797IhWrv2pVoy96Zi8/tvHqmUBMkY0eO7v7+y5zO7qeam97+qnu+YWhL20KZzu/vyqgnmRNap5F8z+7t21hFdcqnib37qIe4xoNO5rt/WtZ8vn6efcedyvuv5/6t/9nqrsf/2u/l3+bP9878r/vv/P/f+X/+////743//////////////////////////v/+5t7/7/kzRiM1R4zr2YrrY065m/uXrMpEE2ZlqHVre97u24Z5iGWIz+/t2chWNlis+5eb35z924nP/vzJV5m8x2iXrN3aea3OyYc0ghJTeJq97+7/26q8yc7aqq79uolVm1rbVbuYvu7q2WlUFTJoc4ec7v3+tzl2ebu6ed/sp3aZoTvHvH9r6HzObZyN2G2Z+6/2/p7vyPqPt/7a7/bP2N/4z/yv++/8/t7teP/////vuf////////////////////////////227+/v/sMEKWEnl7vtqXr3Jq3GjOuojEVSNoKeyXYo797/7bV4uGlovv7o3somiIit/rqbmv7P64nN7vxtqanZm7p3q87cm6re2YBmQ1SHvpvL/t7f/JqWve7rqYzu61N5S+pK7u6ouv32rMIkMxVHd3Wd79/6Siq9aZrLiN+pimhSa8itfovoas5tu27Zebr7rvjvne/J+n+4/rr/6u7o7ujv+7/67/v/3+yk7//////pz///////////////////////////7Hv+///u33AmxWSIhq3ct4tGl67HnN2oZlV1VJv+20RJ3e7e/IeKipdmmvvd7FupmImM3uqnrf7v/JmrzY/d2qav3rqKir7syYqslUZEcliu/bq73u7v7perze7+upvdomUnqD3t7fqoiKfLwzRldTrtqGaN3umba2nsyampaXyaaDNd966Oitl6337Lbsmnifnu6t6t/7v8j8j/qu+4/9fv5+363+rv7P/f++au/////vyu//////////////////////////7ubf7/7/3ttBFYpLiXeM3seFe7eb7Ge/yFgmykWJvfi5ZZ3v3tvtuHiYd2d8/ca//Lm5qK3faond7v7+uKfO7+yHve/sqKibzu25hDR1GEas3u/7y63//uyduZre7+zKh2qmq2Kt7u7du5VnZSoyZ1vs7euGWN5tjO2ZrO2onIWHaoGmrnvo6J2nrebMyPy56I+a/Y777/yfuf2f+7/8ju2P/W7/nP6+/s/9/t1m///////az///////////////////////7+/dmN7v/u/s7UUwSEvreXWt37Y6zqd7yFfOalN8l6hous7KZHzu3e3utlmIllWb9Y7e3tmZl3yN3IjO/+/+5mvt/si8q+/cuZervv/JJUE5RX3+7t/9y5vN/a3vy6i/7t7VOZbfdriK3v2sh+pzB6ZDNY/f/f2XV3xv3v6om9/baYdYY5nOi9f4vZac5uy377i8eqf8j+ru7I66/J/7ru6u7Y7uff+d/r78z+z9zKef//////qf/////////////////////////+1b79///txYY2N0KN3ZeWae60N3zsmt6VVnlHiG7tpjju7dZXrb7+/e6oiIqIdmbe7/7/ypl3nN/8t77u/bvKnN6f3eyu7v7LeZm/9TlhQ4eK3//u/u6qvKnt7+78mbzfYzRJpZ/eqYnftcvrJUJoRsdsz+7v7GNn7+zvzoe5mbd3gkp/985+itlq3m3MjuqOvaWP5/6u79r6rsr+uv+4/7bv6N/p7+r/vP2/3bvXz/7//+/4z////////////////////////v2m7v/+/8lZtnIXtjf+6oaGavdqZov6mcyVNEeWbd38d1nf/sdFa/7+/v64h5mZY5vN//7+66qJqs/uubzf2O/d2X3/7s3M7e3duZqseGKUmsqazv7v/u26uOzu/f7tu4yJ12pzft/9ypiImIcnljI63biL//3vqnZ67//fy5ZVqXmTVm7nro2o6nrfbbt/2p276F/o/q/e2umPu+6r/6n/yO/p3/fv2/+8/c/MnfeP//////yv7v/////////////////////974r/3//+1Xo3uCOpZWr83Je2ak75g6rah7pFMqlb7u2LyFjP7e2FjN7f/+7Kp5llid/97//v7bqYm7/+67rJ//7tmaz/79zc3u/uu4dYcqR87tuqvv/f7//Yu739/v/s5gemnsWGmd793phqMRV3xHZqzchs/++LbnaH7+3/zYdVXLOKfvi/jrjZfN5tyW/6jbr7WZqvvP76+7+5/6r/qv/J/9nf+P7M/67q78ut7k3v/////43////////////////////////8fu7v/e6T+EW6JUdr2HvM2niGOr/shXvciqRzRDjt763f+niu7d23bN/v/v/qmER3is//7v///tyqqJvu/bzM/++q/Krv//673v7+62QylIve7/y6qv797vveysre/f/fkDR6pf7pmL7b7phyIjVG3rmMz7eJ3ae//rh4uazuipZHNHuN176N2+l73m3qf+uc3Oqfhr6v/rf7rcn/qv+6/8j/2P/Y/7z/nvrvu57fmO7/////vP/////////////////////+//pu/v7+7kbrQzVUS2Tdx3v+uVZEfe3uqHqclIN1RlrPm9/v7Kh83v/ZiK7v/u/thmiIi6zu///+3/yqyazN/8ur3rr97b/////Lzd/tuXFDed/u/u66vO/+2/7u2rrO3v6YgUd2rP/cqInt7ZF1Exfd3ais7raJaP7/78eZutuOpokmV0r4v53J62rtbNuO657L+J3Wbqz/6vqfyv+6/rn/t+/Z79jvrP+u+f+bj/3Hr/////7p/v/////////////////////v57/+/u/6TLxXhDE6xHnMmIv7hkSWrt3tuVeYVTdGeFiX/+/+/piK7f/thr3/7v2sm+26iqve7+/97//aq63K7/667P/v7//////s6c/Js4Rpqu/f3f+7it7e7v/u6qm778f2r+qIq/38umnMk0RUJHzv/bec/rU4v+3v7tl3qmZI6hinZYasndjebO1sy437jbn5j9d4js/q647K/8v/uf+479jf6u+s/q7p/pyPzPxd/////8ff7///////////////////7/7G7u7/7+ds+Wi3YwLpWn68uJz+sUdWvu7t52dWNFiZqVXM/u7u/8eK3v3/uXru7667/v3LiJne/+///+/7u5zL7f+9v//////////vybmmpYvbvO3/7v7cmd7v7/7+/ruom+bt7b+picvf6mkkMjJ2V4ve7teL6ViI3+//7tt1VFunOKv6xmlq6t1u7nzejOx63emPxq1Y/+rdn9j/y/+p/sj/yv/J767tr9j8i5+973vv////7p7////////////////////+/pnf///+xn7Zd7iZEmt8qIvdln34WGZmvd/uy1QjN8mpmXaM3/7u/8iaz+/+yYrf3Kr+//7auKmu3///7v79qryazP/e/u/////////+66eFm/7sy83v/v7+u7zO/v7//utlpu/tzt/cqZrduDdFJGiXibrO/ueVr9qIvu7+7teEXMY6ue/7nHaXzH3ui+2N7I3N+p7nrpec2Oueyf+7/6n/yf/Z79rvvP6vyPuJv73+uO/////9fv/v/////////////////+/9bP/u//94rehndr4yRyq8pp/MlZxs2lWHvt7s12REu824rXZq//7v/912v///7Kms2N/v/+79yIuq//////7uupmqqf/////////////5RpZq7f/+3Kvf/u//26vv////7rmzit7//e//ypmkSJRHeXWIfdvu7sWH/ux4v//vtrJok262vv7+mqh3XO+L7Y3vndv6jufOjtlp+4/J/7v/y/7H/8ffuf+M/Z+q+4jen/3Gvu////9c/////////////////////t1t///++lqd9mvWaIQmcm3Pl73bdDvM+lV5vt/HlLMqmby4nMhnvN/t/v6ljO7f/8fb///v/v/+ycqavO7v7/7//Ly9yt//////7/////zXNWq8/u7/3Mrf7u7//Jnd7u/+2Nj7mq3+/97veaNVRIypiGVWjd7vq/6Zzf6Xvt+LhN5xjOz+y+287JxmeXvdi+177PmPyb6c7rdandv+vP+7/+nv2e/K773+n7v7h86u36ee/////7nf///////////////////++47+///4jJ7Hica3W0NDVY7rl8zbY67e23VXveyUh6ZYiu3bmaqHSP7v///Kmsze+du87/7////967q6zN/+/v7/7brdyt3v///////+/u5ma/3c7v//79zc3/7//sur3v7pyP7uq5u+/87HpKo1aczMqHdGjN6M7+y5vu2ZrGtXvmTL3f/+7rjez7q6ZoqZ/5nd+4/Xzn39zJdtyv/b/7r+yf/I/sv/rvy/vPyX656+y23v///+1v///////////////////+/pv/7//saqntZ719qHUYRbZqzrd77WVa7vyoRmrYVVvYjIe83Ku5mFnO/v7//bypnK3uy7v////+/v/Nuqy9/u/u//77q4zM3///////7u7qqKz//u3O//7/673f/+/9vKrOnJ7//e3Kqs7uolyH2JV439uYVWiY/f/u7Mvu+mWUrqOf3e7v//6d7dx8+puoaaif3rbvi/e/69yYuI78v/uv+4/+j/uv+e/M+r+4f6n6+veM///v/2z////////////////////+jv//7vqLnOx4zHylyhGCznh73Lh8l7Vr3vu4ZnaUWM2c/Ierzbu5p2ed/+//7v7Jr//+/cvv/v/+/v/szJq63u//7+/ev/3MzN///////mWI3/7//+3e7/7+7cze7v/u7al5r+/v///Mibpldirv3ahGvM7qVzee3v7v/9zehlSOhP3/7//////+79vdne3Jl0h7ts5819zs3Ynti7u+/L/8nt+u7a/537zbz6ednb2ug2nv//7up+////////////////////6f//7v58ub63fbfod8USOOjqaMy6Wmj7dqz+65hkMVzdq9/LiYreuruYiq7//v/v//////7cze/////+/9zKrMvd7////////czd7/////uHS///////7d7f///szd7u/+/HV8z+/+/+/tukSFac/f/pd1e73bVki97u/u/t2qWnhF/v7//////////+6t7f/samdki2z43tz+mO2fy5zLv+2O/b/rrvj/2+jOqJ+NvZ3qZu///+/H3///////////////////+Z///++qypvpedt9epVlEji+z6eJ3Jas/rhKzu2ogjOd/dnv7sqpvO7cupib3/7/7////v///8vd3v/+////3My7vN3v///////9zM3v///8+oz+7/7////u7u7v/v/M7O//ebyrzv/u/e79SESWOv3u/smFSMmsh0jO/f/+7Mp8ujW9///////////////t7t6O+7mIV6S+/d7X3p7tu6ed/q7uvfyv6u+8+M65rn2sj9903+///+e////////////////////X3+/v7326jfh423956YQjUXvYzqZ93Ge93rZHrfzVNISc787+3vynrd3srKl53v7+/////////+y73///7///7du9y9///v///v//3Mze///+/+7u7///7//e/u/v//7d3c9pvv66vO/v9chMn8lVnu3+7+6FZYnMlje9/u76+JqqS6nf7////////////v/+/7r//4y1ZER4qtbtv//N+5q6v+6e/K/q/7v67pida52Pr+Wv7/7/+J/v/////////////////8r+//77XZuN+Yj4jpv2qzAzZXj83HeM/Ieu7+h1m+hjuZh77t/+7/64is7e67qZrd///////////+3MzO//7////ty8zM7/////////7dzN7+//7//f3O7+/+/+/t7v///szWe9/v/su8zbcmXd7911ib79/P52Voi9p1e+/srVrLdd7srf/////////////+/u+93O7f7bWmNUU4md/r/cv9p5va7sienty9nvp5p7rGzu5X3///78jv//////////////////mf///vefmX/YmeiOi/ecVgJrRJzd65d9+5e+7ulliHSt3ry4rv7/7/7duJ3e7ty7rO7////////////ty8///u///+3szd///////////ty73+/+7//u/s7///7/7u7d////ha2+7//+2obENG3d/+2WZ6vd7b6paK3Lp1euzoaYo2//7e/////////////////u//3+zc3O7czXREVYnO2//I7IipqIy+7M2N+5uoq6h87GjN/+//58//////////////////6s/v/99s2nj+aI6Z9t56tsMjV7dLz7zKad7Ie97tqHU23+/9+onf/////fyqvO7v7bre//////////////7Mzv///+///8rc3u/////////+3b3d/+/v/v/+vu/v///u7t7v7Xz83O////3YJYc4zu7u2Weay8vu/cl3vu22VdiatUvu7v7//////////////+///////+7e3e79y+qnVTRWitru+d6q/Yjrza7qe6ubfb3sZq/v//7mv+/////////////////o7///61v4ef5qj4n3vmymqBQkm5ZbzL3ped64it/tqFKJ3v//+6qt7/////7Kqb7u/srd7//////////////tzO///////t687/////////7/7bq////////d3t3u7//v7v7ci//uzdze7vpc26dWvf7fyHaLvL3e77p2rfuWRarDX9/u///////////////////////////9ze3c7//tyoRURGiovbrfePy9vt6Le3yOvP51bKqb//if/////////////////6r///7nbfeL/VutauavfIZnM2V3e4dKze/Jet+qed7+o3eqre/v/amr3/7v//3tuZvL3t3d7//////////////+3N7///7v//3N7v/////////+7FnN7////v/v/e3N7/7/7exq/+//zezMwt/u3Lllnv/e2XaLvdvN3ut1eu1kdXJ/7+7v/////////////////////////////d3MzO///MyWZjREQ2Znma67/6lqfHm7djNUla7e+o//////////////////rP///uVu54rtaY576M1fasZjNZqJiNVoz++5iO/bmc3qbau73f/e/+uav//v//7/66qd//7e7u//////////////26zu///9///t3u////////+3fuzMze//7v7//+3M79///Fvd7f/L3pllzN/v7sxmfO3uyYaK7sv97v6ma2x3MnzN7/7////////////////////////+///v/v/u7b3e//7eyruUdTQyEiRFMyQjMjQ1SOymj+/sf/////////////////++///vp37Xm+p4n2vo3G1p2YcYZoqUm5da3e/qZ87ract6///svv/+7/2YrN/v///v/+7////+3e7/////////7////bze7//+///uzv7///7////+//7d3e/////v///s39ztbu3dzv26lGiJzM/f/vqEa77ut3Vnzd3+3v61RrshV5ur////////////////////////////7/7/7//v/bu87c7u7vv+vvmoR3ZWRXd87u5rzv+u/vxv/v///////////////q////93n9eL+3mue9fajXvWrFKHjMtXq6dpze/omL/GfJXP7///7d7v///ric3/7u/v/v/////+7d7//////////////+3d3v//////7u7/////7+//////y97v/v/+///v7exM///u3O6rBWat7c3M/vt2Z83tt3Znre/97eSoYiNpiKv////////////////////////////////////+7//c3c7t69697s/d/9/e/v7v7Wzd3f/v7W/+///////////////8z+///3eu13vser2K5+iMieaqhzRK3cp3nZhm3e7rd7+J9p3//////93//+7+p5zv/f7//////////+3f///////////////uzf//7////t3v///v/+////7/3L3v/u/+7////nrN7u//3LmIVVnv/e7N7v2VWK7fuIhXiv7ueN2wJDe6nN/v///////////////////////////////////////+/v7uz6zqvc/c7d7N3drLm8/v///ubf///////////////urP/v/qlr+4nOiazXzH545bxup6Q0Kc2ZyXnMlmrf/uh6W9bM/v/////+3/7///65nO//////////////7t7//////////////+3u7//////+7u/////+//////7cvO7+/+/v//rP/M29/+58u5ZVjO/fzOz+/HV5zfzJeGebxc3nAmU1eKnO////7u////////////////////////////////////////3v/+7u3u/v/v//+P/v/v3+1u7+/+////////////+O///ujH3Jid+Zm+fMfXjGyWzIpxK2R5zM2WfNyGnP7tt2x3zv///////////////bqb7///////////////7u/////////////+7v7///////7t3////////////u7M3e/s7+/M/f7+7dvc7cy5hma+/+7e3t/qhnze25iYZV3OIEM3VHZt7u7+/u/u///////////////////////////////////////+/+////7/////76/u/u/v7Fzv//1p///////////a/v/uycPemIzamb17yOWbfqjsnJMoeEev3NyFWuyWm/7tdqVO/v/////////+//7///6q3f/////////////////////////////////////////t3O7//+//7v7///7Lzc///tf+/u///uyru93rl1WN/v7f7r76dGnO7IhWhXgRa4RnXL3v/u7//+7u/////////////////////////////////////////////+//////vv////7tPO/YR67/////////76z+//90xr+Zjfp5zYvJ5ppemeqbvVBZp3at386mee2nad3lj23f///////////////v3//+///////////////////////////////////////////+3O7v////////7//tzLzv+u/f/u7/7+/N2bzLuEV5zv3e/t3spneu7InccwI2p1V3nM3e/u7u7/7v///+/////u/////////////u///////////////////////////O//7+3flKdUe//v/v/+/////vq////min7YmN6Zmse7fWmo166p23djh7loee3et3ee+ol6tK79//////7//v78///+//7f/////+/////////+///////////////////////u///u//7t7u///u/+//7u3d7cq/7+7////+7u7tu7ydp0VXre7t7+7tyGaq7LiyEiJVh2l4zc3u3t7//u7u7u7u7v///u7v//////////7v///////////////+////7///797+/93/pUVq7////+7/7u/+3/68//7taLXeiZ7oqY5ryOaMfpraqni7N5d5m3asztyIae69mHPd/v/u/////+//n////v7/7v/////////v/////u///////////+//7///7v//////7//v/u7d7u///t/+7t/9/t7L3/7v7e7u/u/f38y9aWZmi83d7uz92XV6rUIjFFZHVZhpzN3e3d3u7d7e7u7u7/7v7/7u//7/7v/u///u/+//////7//v/+7///7//u7+7u7t3YYkm//v/+/wAA" /> <a href="https://github.com/tsl0922/EPD-nRF51" class="github-corner" aria-label="View source on Github"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:#ddd; color:#151513; position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style> <script type="text/javascript" src="js/dithering.js"></script> <script type="text/javascript" src="js/main.js"></script> diff --git a/html/js/dithering.js b/html/js/dithering.js index 05696d4..2f5e39a 100644 --- a/html/js/dithering.js +++ b/html/js/dithering.js @@ -38,7 +38,10 @@ function dithering(ctx, width, height, threshold, type) { let newPixel, err; for (let currentPixel = 0; currentPixel <= imageDataLength; currentPixel+=4) { - if (type ==="none") { + if (type === "gray") { + const factor = 255 / (threshold - 1); + imageData.data[currentPixel] = Math.round(imageData.data[currentPixel] / factor) * factor; + } else if (type ==="none") { // No dithering imageData.data[currentPixel] = imageData.data[currentPixel] < threshold ? 0 : 255; } else if (type ==="bayer") { @@ -78,6 +81,46 @@ function dithering(ctx, width, height, threshold, type) { ctx.putImageData(imageData, 0, 0); } +/****Color display description**** + white gray1 gray2 black +0x10| 01 01 00 00 +0x13| 01 00 01 00 +*********************************/ +function canvas2gray(canvas) { + const ctx = canvas.getContext("2d"); + const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); + + const arr10 = []; + const arr13 = []; + let buffer10 = []; + let buffer13 = []; + + for (let y = 0; y < canvas.height; y++) { + for (let x = 0; x < canvas.width; x++) { + const i = (canvas.width * y + x) * 4; + const level = imageData.data[i] / 85; + const bin = level.toString(2).split('').map(bit => parseInt(bit, 2)); + if (bin.length > 1) { + buffer10.push(bin[0]); + buffer13.push(bin[1]); + } else { + buffer10.push(0); + buffer13.push(bin[0]); + } + + if (buffer10.length === 8) { + arr10.push(parseInt(buffer10.join(''), 2)); + buffer10 = []; + } + if (buffer13.length === 8) { + arr13.push(parseInt(buffer13.join(''), 2)); + buffer13 = []; + } + } + } + return arr10.concat(arr13); +} + // white: 1, black/red: 0 function canvas2bytes(canvas, type='bw') { const ctx = canvas.getContext("2d"); diff --git a/html/js/main.js b/html/js/main.js index 47b22f8..3a39464 100644 --- a/html/js/main.js +++ b/html/js/main.js @@ -44,10 +44,10 @@ async function sendcmd(cmdTXT) { } async function setDriver() { - const epdDriver = document.getElementById("epddriver").value; + const driver = document.getElementById("epddriver").value; const pins = document.getElementById("epdpins").value; - await sendcmd("00" + pins); - await sendcmd("01" + epdDriver); + await sendcmd(`00${pins}`); + await sendcmd(`01${driver}`); } async function clearscreen() { @@ -56,36 +56,49 @@ async function clearscreen() { } } -async function sendIMGArray(imgArray, type = 'bw'){ - const count = Math.round(imgArray.length / chunkSize); +async function sendCmWithData(cmd, data){ + const count = Math.round(data.length / chunkSize); let chunkIdx = 0; - for (let i = 0; i < imgArray.length; i += chunkSize) { + await sendcmd(`03${cmd}`); + for (let i = 0; i < data.length; i += chunkSize) { let currentTime = (new Date().getTime() - startTime) / 1000.0; - let chunk = imgArray.substring(i, i + chunkSize); - setStatus(`发送${type === 'bwr' ? "红色" : '黑白'}块: ${chunkIdx+1}/${count+1}, 用时: ${currentTime}s`); - addLog(`发送块: ${chunk}`); - await sendCommand(hexToBytes(`04${chunk}`)) + let chunk = data.substring(i, i + chunkSize); + setStatus(`命令:0x${cmd}, 数据块: ${chunkIdx+1}/${count+1}, 总用时: ${currentTime}s`); + await sendcmd(`04${chunk}`); chunkIdx++; } } +async function send4GrayLut() { + await sendCmWithData("20", "000A0000000160141400000100140000000100130A010001000000000000000000000000000000000000"); // vcom + await sendCmWithData("21", "400A0000000190141400000110140A000001A01301000001000000000000000000000000000000000000"); // red not use + await sendCmWithData("22", "400A0000000190141400000100140A000001990C01030401000000000000000000000000000000000000"); // bw r + await sendCmWithData("23", "400A0000000190141400000100140A000001990B04040101000000000000000000000000000000000000"); // wb w + await sendCmWithData("24", "800A0000000190141400000120140A000001501301000001000000000000000000000000000000000000"); // bb b + await sendCmWithData("25", "400A0000000190141400000110140A000001A01301000001000000000000000000000000000000000000"); // vcom +} + async function sendimg(cmdIMG) { startTime = new Date().getTime(); - const epdDriver = document.getElementById("epddriver").value; + const driver = document.getElementById("epddriver").value; + const mode = document.getElementById('dithering').value; const imgArray = cmdIMG.replace(/(?:\r\n|\r|\n|,|0x| )/g, ''); const bwArrLen = (canvas.width/8) * canvas.height * 2; if (imgArray.length == bwArrLen * 2) { - await sendcmd("0310"); - await sendIMGArray(imgArray.slice(0, bwArrLen - 1)); - await sendcmd("0313"); - await sendIMGArray(imgArray.slice(bwArrLen), 'bwr'); + await sendCmWithData("10", imgArray.slice(0, bwArrLen - 1)); + await sendCmWithData("13", imgArray.slice(bwArrLen)); + } else { + await sendCmWithData(driver === "03" ? "10" : "13", imgArray); + } + if (mode === "4gray") { + await send4GrayLut(); + await sendcmd("05"); + await sendcmd(`01${driver}`); } else { - await sendcmd(epdDriver === "03" ? "0310" : "0313"); - await sendIMGArray(imgArray); + await sendcmd("05"); } - await sendcmd("05"); const sendTime = (new Date().getTime() - startTime) / 1000.0; addLog(`发送完成!耗时: ${sendTime}s`); @@ -200,34 +213,40 @@ function intToHex(intIn) { } function updateImageData(canvas) { - const epdDriver = document.getElementById("epddriver").value; - const dithering = document.getElementById('dithering').value; - document.getElementById('cmdIMAGE').value = bytesToHex(canvas2bytes(canvas, 'bw')); - if (epdDriver === '03') { - if (dithering.startsWith('bwr')) { - document.getElementById('cmdIMAGE').value += bytesToHex(canvas2bytes(canvas, 'red')); - } else { - const count = document.getElementById('cmdIMAGE').value.length; - document.getElementById('cmdIMAGE').value += 'F'.repeat(count); + const driver = document.getElementById("epddriver").value; + const mode = document.getElementById('dithering').value; + if (mode === '4gray') { + document.getElementById('cmdIMAGE').value = bytesToHex(canvas2gray(canvas)); + } else { + document.getElementById('cmdIMAGE').value = bytesToHex(canvas2bytes(canvas, 'bw')); + if (driver === '03') { + if (mode.startsWith('bwr')) { + document.getElementById('cmdIMAGE').value += bytesToHex(canvas2bytes(canvas, 'red')); + } else { + const count = document.getElementById('cmdIMAGE').value.length; + document.getElementById('cmdIMAGE').value += 'F'.repeat(count); + } } } } async function update_image () { + const canvas = document.getElementById("canvas"); + const ctx = canvas.getContext("2d"); + + let image = new Image();; const image_file = document.getElementById('image_file'); if (image_file.files.length > 0) { const file = image_file.files[0]; - - const canvas = document.getElementById("canvas"); - const ctx = canvas.getContext("2d"); - - const image = new Image(); image.src = URL.createObjectURL(file); - image.onload = function(event) { - URL.revokeObjectURL(this.src); - ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, canvas.width, canvas.height); - convert_dithering() - } + } else { + image.src = document.getElementById('demo-img').src; + } + + image.onload = function(event) { + URL.revokeObjectURL(this.src); + ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, canvas.width, canvas.height); + convert_dithering() } } @@ -245,6 +264,8 @@ function convert_dithering() { const mode = document.getElementById('dithering').value; if (mode.startsWith('bwr')) { ditheringCanvasByPalette(canvas, bwrPalette, mode); + } else if (mode === '4gray') { + dithering(ctx, canvas.width, canvas.height, 4, "gray"); } else { dithering(ctx, canvas.width, canvas.height, parseInt(document.getElementById('threshold').value), mode); } @@ -255,7 +276,7 @@ document.body.onload = () => { canvas = document.getElementById('canvas'); updateButtonStatus(); - bytes2canvas(hexToBytes(document.getElementById('cmdIMAGE').value), canvas); + update_image(); document.getElementById('dithering').value = 'none'; } \ No newline at end of file