["$ regex..G$ ","|Regex.Replace method$capitalizes strings|","OHYVXYYusing System;Yusing System.Text.RegularExpressions;YYclass ProgramY{YOstatic void Main()YO{XHXYOO// This is the input string we are replacing parts from.YOOXstring input = XVDot Net Not PerlsVX;XYYOO// Use Regex.Replace to replace the pattern in the input.YOO// ... The pattern N.t indicates three letters.YOO// ... N, any character, and t.YOOXstring output = XRegex.ReplaceX(input, XVN.tVX, XVNETVX);XYYOO// Write the output.YOOXConsole.WriteLine(input);YOOConsole.WriteLine(output);YO}Y}YYXYYDot Net Not PerlsYDot NET NET PerlsXHXYOO// Input strings.YOOXconst string s1 = XVmarcus aureliusVX;YOOconst string s2 = XVthe golden bowlVX;YOOconst string s3 = XVThomas jeffersonVX;XYYOO// Write output strings.YOOXConsole.WriteLine(TextTools.UpperFirst(s1));YOOConsole.WriteLine(TextTools.UpperFirst(s2));YOOConsole.WriteLine(TextTools.UpperFirst(s3));YO}Y}YYpublic static class TextToolsY{XYO/// <summary>YO/// Uppercase first letters of all words in the string.YO/// </summary>YOXpublic static string UpperFirst(string s)YO{YOOreturn XRegex.ReplaceX(s, @V\\b[a-z]\\w+V, delegate(Match match)YOO{YOOOstring v = match.ToString();YOOOreturn char.ToUpper(v[0]) + v.Substring(1);YOO});YO}Y}YYXYYMarcus AureliusYThe Golden BowlYThomas JeffersonXRegex pattern descriptionXYY\\bO Word break:YOOMatches where a word starts.YY[a-z] Matches any lowercase ASCII letter.YOOWe only need to match words with lowercase first letters.YOOThis is a character range expression.YY\\w+O Word characters:YOOMatches must have one or more characters.X","A*ErBBBfcBX(| 65986}XCXC 68469}(C(P(B)BCC/","Regex.Replace"," processes text replacements. It handles simple replacements and more complex ones. For complex pattern replacements, we use a MatchEvaluator delegate. We change a string with lowercased words to have uppercased ones. ","Delegates ","delegate","Example."," To start, this program is meant to demonstrate the use of the Regex.Replace static method with a string replacement. You can specify a delegate of type MatchEvaluator for more complex replacements.","This program"," simply uses a pattern to replace all three-letter sequences starting and ending with certain letters with a replacement string. The Regex method allows you to replace variations in the string in one statement. ","The Regex.Replace method"," is a public static method and we pass it three string parameters. The first argument is the input. The second argument is the pattern. And the third argument is the replacement string data. ","Next: ","The program replaces all parts of the source string that start with N and ending with lowercase t with another three letters.","MatchEvaluator."," We look at an example of using MatchEvaluator. With Regex, you can specify a MatchEvaluator. This is a delegate method that the Regex.Replace method calls to modify the match. Here we use MatchEvaluator to uppercase matches. ","You can use Regex.Replace for simple replacements by using a string argument. For complex replacements, use MatchEvaluator.","The method"," TextTools.UpperFirst above is called from your code and it uses the regular expression. In Regex.Replace, we use the delegate(Match match) syntax for a private method that alters strings to have an uppercase first letter. ","Delegate methods are methods you can use as variables and parameters. They introduce some syntactic complexity.","Discussion."," The pattern in the Regex.Replace call uses escape sequences. The syntax of Regex.Replace's second argument is described here. The metacharacters match specific patterns (ranges) of text. ","When researching"," the problem, I found a good article at MSDN. However, the solution has some weaknesses. It isn't easy to call elsewhere in your program, and has some extra branches. ","Regex.Replace Method: MSDN ","http://msdn.microsoft.com/en-us/library/cft8645c(VS.80).aspx","What other uses"," does MatchEvaluator have? MSDN indicates you can use it when you need to perform validation. \"You can use MatchEvaluator to perform custom verifications or operations at each Replace operation.\" ","MatchEvaluator Delegate: MSDN ","http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.matchevaluator(VS.71).aspx","To enhance this capitalization algorithm, you could store a Dictionary of words that need special-casing, such as DeBruijn.","However: ","This requires a bit of manual work to find most of the names using different rules.","Summary."," Regex.Replace can be used in two ways. We used a string replacement and a MatchEvaluator. The MatchEvaluator delegate offers a high degree of control. With a string, the Regex.Replace method can be used for simpler tasks."]

%iVBORw0KG;)NSUhEUg?APY?ACwCAM)LzWOL)YFBMVEX::8/Pz5+fn09PTx++fW19bj4+PFyr/s7Ozh6te;531/+vm8N3s9uKxuqjZ4s91eHPK9aH7:f4:HE4Krw9unq8eJBQUH1++/M/5r6/PgGBgbs/9rd/7rS/6Xl/8xp3c0R?AOqklEQVR4Xu3diZKbSLMFYGpfWLWr2/bc93/LW1WgE6ICjFLQ+hWjOaGxuxs7Jj5nKikQQsX2+S:hfX5ODTyYWjko9ScM8Y/yD2gOdvvv3kP/yD19z6Eh3yEO6F7deb+EHXm/hD1ISZzf4Q6JXN/gLr8BDdjY3UZ84Zutnl4DNTv5waZbx7xHdBQv5d7JBabhn9D/W7uAS1+ItcQkN/HDXUC2I0D9Xu5oYbZ6s0S2KfTSV7lW7oHNcQbus/n6Ab7fdxg92i1ZbSuqnNdy/d0D+oyRP7eKnXkhg1v6kaxdUL/34ZJfBfcYL+HG+zU4qUM6D+bZZA7V8Vyl+/lBlvrEurNEtwt2O/lBlv+Dup/tsnun96d2Gew38SNiWatVtupd7seH8ttnDG1aUrVlG0jna/O3smmLRtVNuZgzEE1XHmhvbVec6+K8GhM0TSF8YXyTHthvRVexw2+39CEDQU2sGyD8lzHDST21+rsojollrt1bVu7tqzaslalVDI8yrYu26psXenaw7ndW8WF4lxxpkShbKF0oXVhVXwIxfINemKDvd9QxA3m1eyk/voK7sR2FUb5C/tcPVRtDfZGarBbsF/qFmqRLbZjQw02Rvmr6/06NtQT7Be7lX8dG+qUjP1atzVPsHfHozmuVOfsV9ebxI5i33WXS+fndaZJMcdJ9TT7xW7dENlNMP/69evSHWfZ/pLSmSk1nU13b8/+aiI6uptZdnfBn5hQk9hNa0xpmkPbHFxjrdfCK5YWXcrfIYS1hdWFiA/GNWdaFNoW1gq90SQ/3tjdbpaNf5gJNbXaabFWntvDSX0LI7iyrF90jSJEwdODifANKwRPDzFbbUNiR9TNfSSwoSay22quz62CIQpnwmfgitjkd13uH2dDTW/yubk2bvI5wEZNDlXI3FDD06DJ1XS2nJ9rq0abpS9Ofc6C7th0Xec7sHM1ne3qOfd9HQWbLZrYaJU2P9RMd4@aLChPvbZUdlelTNu89Imj0E5zb3aAww21P80XdyR+yOVXc/vv0Gd6PfFTULT2SYfavhhzkaHeyxxaOxKzrmFZUDweTXf7lAE+zAw8LMxG+qhQS7HFU2euY1n7PkmZ5zOzocaxnfOhhrsFdXO3MIyuDmjVptbIntmqPkbO840sDHDsVwlsiXOquF02/WgTnuluWJw31ZlWKgxwW5rtWmVoTb59FDb4Sdd49ELaYY38YgNW7vOG1KTp3Oo5XBy1deVr2TT7htjPIdbi2ENni/LhdAbVXt6qGENc9l97cCOtT52Q/3RDJ7ATpFoh62Ox+jP7cmhBvalu1+cxg7Hkx7wjsiWdci2bvoknx5qoPqM/bWGDTXgdPdG++2poTZf7S8C+1VuhM7Ohxqe25F9ATtO/S5zP/PcHpK5v+F+2ZlTg3KDPVizI7B46g3ySxzlhsAGPK/36brKbdUz7PxsA77FfhvsXczQ6RefvptiE911fTqtqzeVnQ81j28RsJHuF3WVlidzy3Vu1TzJPnajoXZcYF/WseEuR+59dNPZ9HNpE+U26PIfZcus3MF9pbrXN3k+1AzcU2x/ielIbHAjGW6MuOg+wM1++Dz53FD7ur1ugISRjZg4z31DZEPYcyXK3f+glofBzUJewx6/UIBdVcCl33HMkYXAhhrdPbBlYid/cu+T+zVNPixEUlV3OId4PMbDD9BI7MrJv7jvihzEMrY92Hsy2xoyG/HdJXXubuJ8OJW95JbDNEfJh/TsPdgveH37aCDO1XR2LZ1z1RicVzsf6GCz1zQ5MqOmsytXOydlVmaoAb1r+TXPbaFIbIKaxpbBLfPmvrkloHJG/YomX1bT2bVzbmJVJu/326kZMnVgcwobrLVsqDHDyeyzOyc7kpCDG8E/A37yvFpo2nVpy2o6O8S5Oq915pYhPTxTP8VWW1x8CTWd7QLbtVWZq2N696BOYAn3OnXBxAbsXVSTiw125dzMGuXOPYDlKjXCLYU9k4BGSOrErtoqr/WI3UPx1Ro1Yvwm15NjCyH99eRtW1X;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@yQyuJao0jTTL7eCv3bjO2VwT39XR/JEI8+hCYnjQ2hhqBXSxF2cfqbQXfX08nuGnTjEeItmR2PtS63tsN7B2ZTf9MKcG/T4Obpk4WATWVjaF2DP4u5dil+OfZjXrELWJ4dIe5dlpQ88lVyoR68TQD4nHbqvmAzR9gG/0Am4ubO841mpprUQTzwpRZOKmEW4Ivsi3YqyME3P26haTW2nIBNJmNbMo2ShUiPhg340/bwudzCWPTQwulg+JQtQd82lep6rI9l211cG6vFdeK2fg3GFO8UIIprY3SShUW/5uw4e8fA8aVtkr9LLtp7j50bfLT2Kz22nolvAkP3pi9aQ7p9sPS+aoePtvNHIz5Ng03nt0+jU1zr6w31jd69Nluix/6xhojjNHPsLdbrYyvpcD6/KEOt1qzdD0Ofb+h/6dsJkTGhntRzSy32rLFGb7lS38W7HXqcUbHYwvqNL+DWwiCeeULvanY69ljdGLl7nm10MlNKPbql/Vtzy5WZtzg+fH3Uq0HN3/JRyfrEItib+fmk++/ytUI05oFtxb8VR+UbYN6FXswJudInbtn1cPFONxq/oqPRbcpYlCzFSUGHOrcvf+bmsX1GXvhh+D3tVmhZphgaHSoR+6UXI0pXlgtijVuLojhUK8Z39AywYnvm2ZacyGobNKltrmXr75dDeNwo+TT7rnja65DBFt3Kgv2pUDMVnQ4W4YzXMTPoB4Hu+sVYeSsWpaxiV0X+Q4YArV+60ANN0ouFitBEL4rG27AJ1EZ+l/kTuHzq6x/AxpMuD8jqPZHuRnUn+QW4m41/jHuiAWbsU9wQ4uBxpOef8ggwxfiA9QpgH6UumCgfpAaT2qGr4oPiUCRGef805ZnAH+YW7APdfPiv8OQ:r8A1apHxfG/5Xq/wc2xLwH88O/qw)BJRU5Er@ggg==%iVBORw0KG;)NSUhEUg?AMg?ABfCAM?ACa5XhX)MFBMVEX:/+foaDS1dVpa2oxMi/i4uLl9/1kyvSZ2fjL7fsatvEAru8yu/Hq+P7y+v0KsfAiJDr2?AE60lEQVR4XtSay67jIBBEveoHL:/305sZSqZuu30RVaQpjZZ0If4CDDYycZx01b2upem5luUeWQ941rqe4oCuIEsZ1zrz1D9NLKeGVrj6EDNPLKe8VKvUmA+jaxnbK/X2Q11c8h6xurnoHwKWc94zYIhnEGWM76n1TvKZ5DFzGg1TxuQmEDWMlp/E4XFBLKUcRZUM03mYqYAZCWj0XY5rBo1ajwgFqxPRq57EjeaPRHDHAsqrIPLcmdLp34yESDMaHSDjZlcBIxerbUBEe5HMxFG4o6oLWRyETCFzTAcLFK2ZwqLuD1AfDojzDTrR3U362weM+D8bDBjkcJyHZffBCKkGUxGO0YLn04IGOrJ0Q6AGY5xORiaoNuZUQ79y1lkuQgjYFgEV5YwmYjRPJTtjOgB+SMazFHNRBhhhkUGAGZyETAtvml1424wSAfCgUiMgGGR1oElTCLSaEGVsSHdCgGF1mAswggYFhneQeUMizCz0wX17ZVOo7JvZ/ZchBFmnL8kZ1iEGS4tNq73qg39JCKMMOP0IJswuUiNtNVfLu2LIyJqOOLeH5Hyr8Ij9v6Cwr64RrxWB3Z7jbSfl6MvZPPv3rXs+SVmt+9awUYxTFUHjwjvI7kIEGZYRMrmd/cRvlKOhTs7R3HWojbapfmspc9mgQgx+VkLjH8UkZqdtWCItgi5+BprzDGTn37BFK50h4e0mpx+ExE+ybIISE2YRKREDwpWrdPWTv1oLgKEGBapNs5Vefd5BHaMqCkMgyfENEByRlVLwqRxeKfBgMwhC5nY+398i9ITbzpOziErGZFS8xQReEwgC5kh8qsXrCI4Ss4g65guIpZWmwiGZApZx8gRS4shMoksY4acSX4WOkow6HPIKuZZLR9/qBMSmUFWMV3+RmscRUU/PSaRVUwXxFtQ21xIZBJZxch7gr8XCIJlOIesYoTy/ocPlJLIFPIl5k+3ZrTTOhBDwR4f75V4yP7/514BFaclTuo41W7EvEE0ZcfZkBAhQSF5FJJXRjlLskGbt6AMcP5OSE9G6KZQUAY4fyfkdvgiLChrx0D6JyTsHc6UEIM/A3uD0w+e8oLy7Bh9De28c3C6JUXOBz2GH2ed5dAtoaTIMd/GzjqHpltR5MD3wEmnH9juFUUOfB+cdJb8LikocuCvwEknvUtOKeavsXNOz++SutKZCGE/5/R0R12BZ8BJpyc76op5DttzSDJ2xJK7aMuKFsC73h7XAB395Qi0Lw0ORcrRhFOzrSot+LGIQrw9OYI/B6wpxOWIJTPbooJofoxC8OSIvrNV8WrEkkVNcUE0jRxfXzRQoXLyv5ijhfXvKS89rqgpFi1Km8uCo/HMm1n8iYPAxnQZhCBymuLYFSJnENwIaUEIA4ePlz/WIZwdckMuBI8niRNDtm9gXIV44EBtMRND8C20XIjaaHdwkRDdxQ6GSLpICI+H8JIhjmSIVg/Xs4pxRgijEG9hCCOn63t3DYEzK4TpEN0lAbtNDMH6WQtwRxSCxDOjQuQMwYLpaXMlnrWcPQqRM4qNEAYhcuKSbgqRMwrEIY5VCOR49BeikQqRM4rmWdqOQ3LDGQc9B0vOQMxzWMkZwJD3WgMY86ZxAKPe/V5sc6HmXK4ENedyJSg5czD6FrSSM4sOj0EvO1c6KbSSM5kWPA3WnPk8/V/JO5z/cLdscvTcpWU)ASUVORK5CYII=%iVBORw0KG;)NSUhEUg?AG4?ACCAgM?ADasxWR)DFBMVEX/6Nn:/+VlZX29va5ksB5)SElEQVR4AWPACZj/f0DmjkqOSjKtQgcLyJccZiEE9SOmP8mXHEaBMBoIo4EwGggryJccvvVKKAogTnJUclRyVHLklgmjkqOS?LWyrsxEHLD)AElFTkSuQmCC%iVBORw0KG;)NSUhEUg?ANI?ABFCAM)IJEiL)GFBMVEUAru+g2Pf:/8xt/BpxvPS6/vp9f0TtPCISbH1?ADCklEQVR4Xu2bwY7CMAxEPWM7/P8fr9baaNSG0lIQK6q8U2vhxk9ODD1gJBE3uwS3AEkjwy5EkCajqzgZ7GLAwi5G2M2uxceEJpPJZDKZTCYTzzCBsH8kAMCeA0OOJykNkLDP4iZAMu05UjkyYnMZveyEX3QJf9iVJN6npIC6FNTtWfSI/aeRfLsSpCAnup0nyF4nPqwkAwwV5ctKrS9G4qNKPtT/+nEK9t44/0EJ2mUiFTyr1EoEdSGlQGYi+t0vpRSFS6k+CZgwh5K1FJCJRkrJ7zYk7kQdiCeUUIskCSlFY8EWmiJCpy89WaRLiEruoLEjJfRNLxTesxRjdpB0r4ueB4p4rJTrQj0poHXuKG0UGsOcapXnh5WcJEDSajnNQWQJ+LaSUBG5Dsooc6EUW3W2laqziMNKlqVElFJ/ZLoavjkeCrhBn0OPRbm11VdeSknjZXfnPa0EsjUyuhLU5bp8rFQRnfqm5HIKXayVsmeLjfZBzT2mFCyslLSUtvUjJSwqVV810BRbKSkslBirOuHHvyb+Th/qLvtSUewqtVWl6rB6V7EYlRReo4TnycWaySqRgntKeU/JTNGm2FElzYfzSlFr9p7FaSVdKMozSvmykpPE+5TaQqmbfXbjWWoy6XCKUxtPUXxUqWmBrqTSTyvFYuItYu3cxItM2DE4KLk2zxmloLwxDnFQOUpaUwnjC8dZpdh+gMrZVjL2ZL2gVreaV4aUtCHF+GD1lvQTStCrE5kIiwio41nh3yjivpKqBiA5/IWS42+8ODLDWeC8Uq0lIGPFNpU82VFMAbnrYO3+HlJ393GSGJUMg1KRO0qDU7oVUJ5yNDfExhnzPKwUoxJWr3HMUAL2lAq0ITNaTxveanPndUmxtBeJACL8bvRQri9DgNIetcm1HYdp+w3kOMmgkHBW8BsInbhHX0Ge39EkGeRDI0DD4YucfLgTLOD2VU7QTRkNSgj7JkAogMHIIsK+DSwEZPR+JpPJZDKZTG7XEwq7GG6wi4Er/n+J7VJO0Wgk4Vf5L6CD5A+G4BPe8Jfzjg)BJRU5Er@ggg==%iVBORw0KG;)NSUhEUg?AMo?ABPCAM?ACdxqrx)YFBMVEX::m5uaTk5OoqKj09PRlZWUvLy/ExMS3t7e7u7vQ0NDs7u7d3d0?ADLy8ukzMxepqX4+PiQwcG52NhQnp3V1dVtrq1GmJfv9vZKm5pWoaDT5uaAuLdClpV8oqGgtrVqRzPm?AFRklEQVR4Xu3b63qyOBQFYHLm7Lnnb+b+73KSnYVuE6p1qgzOw/rltkHyNgECtUVRPi7FpPn/UxbKQlkoC2WhLJSFUj8uC2XIQul/nllTAHEXMqo51IfDnCgE+XMtr6+v7+/v+/3Hx8c6xkuQWVHcVQkg5HihkASZCSVI3PUxIQk5kAPPfCjVDwYlDAlBvmI8oA2BZQ4UL7lOgQSQbQhBTpiZUKry6qDs9yQZHKvVCg42MM9CgYQYPkQRPszyDBQaFJIQZEcRyDiGyskp7gcUDMr2r47FGHmABRiWGVOCBBQeyWbZk1DW6yBZgcJi+4YsqSaUc6QMg7L66nKLaAQwPPOkYH6FY/5vAhiKhUU2ZBFPQ6FBAaXxedO6ldEiQp1rhHgOytub9okWpRtgksyZsuOUzWbTUCm1BuZZKNsjJUjeNiEmlGajQ4BRkhhN08twOFkjWw5oZdjGyHoMUMpYOGlw4VLKJS1raTsry1gIX3RG6Rso6xdO8RBQFNXeRETn+28604QcghIxukDClERw4v?Kj2t9duS1jt4yIJWxw8wgn2abe9FKQaKDjVRagsGdgUJ+Vg4hbYNEtt9S3EnpdEaBSy3UFZjFN6dSmIfWiR9NpECyRjFSbTTkIxSuFLywtyZYruBorA3pTAHFE3z2Cq8a1OKHcinTZUx.Wbyy4v6l9ScNhHCmKVp1hMZx9hSBkoGDR6N1hsXdfJtkVh+YzMKTJsrvhB2Eb6byk2pZhq4yU9FXE5iV21w/xyOFkFQMk72RmH1vjBGEVGouWFJNUvKadfCCB98GF+yU3BdqUGL97Up74AEnusMIbjFMk/0upYOHL9kmKodANFbWI0vV8OlPLMy3tpThTF3TKhcFUOFhj2f0NBj0WU2NOOzij9QKnR63xUTN5JA9dlSk1VAr6Vkq+M1ZHSDxSACwTg/FiROcWizQSULMb3/Zyixygdn+HDdbBMKLyYnmIa6j4oBPmWIk7XlQ6qGVGk0JpRdA;WicUGhYeVcyFYowSOgYUfYGSr1xkMT0lX042zWdzDDrPKDan2F;y6/s01Py+5XPz09BGTBYGetYmghLT8anZa+RCtDRM1j5UAq/If702YkYaCKlQYhS6fQSiRnmCpaL1xUxAWW327UhwKQUhYVfsnBBF8QlioQbrkdQ+MOjnc+qZRaRUBxf3QqLPQ2q4hJFUaXx+jEU9nTSQ1YrPIGEBpRhwtnTcl4bcrHp016iYIUKyX0p/OnkNlJWPtu6HjBHSiWQRqY3WZj9Em/71G1.SzOb8p296bgbEyWI2W7/ep7slBSiuD353w9rpJn5yOUkjXAyvuuFAzLV6RsveTLcUtKEX32mGL07r5klLyJiRcodW9KsIDiTS8vzvX1yRI7BlfI2cMjUSA1CVlETtHmKCnMAyhkCRjKi0/lerIAwwLN8FxOYv+YX7KWzCOLkZShhSwf8keJV/6nboKs1xWGBZYxTNbFIEMhXIQWF/IgClkIQ5D1R1nhaPkGk1ME5gEvu+kosJx9K2QdJKBECzCpK6Gk18f/hgILYQiy34MCS5JRisF1HHGhNJNTyOIxiH/5D;sWUYpfGVWWiqnpcBCGMQXoFzAJBRcH61RPtLGQkxNgQUaevEKyjnm3JVQ2i5LOfG3KWAJGiQUoIwHl.ygVhXTE6BhudPQsmSU/jtMA6bB1DC7L0hvn@yqUUeZw0xDGyBOS+FLL8XENtvYRRZvQtvbJUtwWDMj+Kq6rytlSVmyGFLK66LQ6S2VEIc1t6n+f79nfOoDz/d/KR5T8lnpWyUBbKPxAW/dQ8mzhh)AElFTkSuQmCC!CCC%iVBORw0KG;)NSUhEUg?AGo?ACZCAM?ADw+V8S)DFBMVEX::09PTk5OTU1NQ/cPF/?ABzUlEQVR4Xu3bQarDMBRD0Xel/e/5w59m0FiNRQnWBg6vBidynVkOAJIAYLYEJF9j6VHxqly9Zxzfiig4T2jycpQPVM.4yiA4hCs0ebB8BMhWKRtlvxYFIy0w8J2x5JdsmR3LLwl1CSbmmQHy5RGNcmmJlk1yaYm2aGUj4ULUSblY9lvG2t6Fj1LU7M065b+k+/vrBcNpGxzIik0KKGGqDkRVQayiqaAGrJekVBDVCqIXjGI6ktEDTv7xHyyZrZQV0uzjxpWpZwaLtI2aliTcE4NK9LoG2pYkPiy1BFIITXclCboCGGClpUFL6QnqSaZySO3hpJLQ+HF9CRq59SqSaa0TLZ+XZLX05OIJLckEkm5dCRzpIUOVd8j+vsek6Ug1Z6E/af7qCaNay981KSR3Wo2PWl60hSkoOy2KE2NokZp3kjxQupQhzrUoUb3klAnJ/nVZYl9joILvRkUNI+8jjQwglawqWGpJtmqSbYqUm71i0i/M8qt0kiv3ssrKaxU/+9Eq0e59vvZzAvPHK0nqUMdih+m6O0W1T2wtVgqPq+6d3ryqDBUdIW3ZdVepM20LGpVhFrBolVQ1ardpnCYEEA5pgAKPiYvnDYCRMgfJbla10Up7Tk)ASUVORK5CYII=%iVBORw0KG;)NSUhEUg?ALw?AByC)ADMwOSz?ACe0lEQVR4Xu3csY7kMAgG4Lz/86Wkp6ZAokDy6RTfodVsTDSaxPy7/uux9a0LZpkEb20YNzNVEWYmItr/hYiYWcS8Tcw2cKv8DTPtoxCzqFfC+wGXgCchYlGvgDfp9MBd/xNsIj7otL8XHwC8x14Sq04/Yine4tRvwEvP6ypqPXp+dgneY+nbaZPwHscOh7eww+HDjoL/uJ1m4D3scPjYFw8fawDxUWjw8LErFP7TB7/z0/jYFA8fB4+Il1iQh47UwF:fvrfLPV/t0WEj+52Ev5yjWc96y/MNNrdR/EX6yRZuxb3Z/Ge10lu1/MsPm9auZXFS09iL4n3DE+tLD5vQrQsPi+U1ArjJcELAv7Og/eeAT4+cor3r2lbVPk7Sk30ODeEt3R/QcZ7YXxWbKgB47kyPis2;y3ynhP8K00frw9lcbbD8bz3fiFJ0S8jvEyCb/wioy30nhZ+Kz/Mz3CPa8S0h7hI9+AtMeOeIb3cBRswGO7UviFfwO48Au/8Au/8OhfUgu/8EkzUhqvNfELr8h4+cV477EuGvSw0sPnPaz06BHbDOJHp/UrMf6TkYVfD9RagndkvCI/vpfSeAN+9yDbn0rjPdnfEPCC+JpWS/BUGJ8PGWldfH46XBifzy1oXXw+qkOF8dE1wr2Cful4uC7epQdu7OLimBRpRfzlmkDiw1kjNRFmmjehto9DLJZNeT2P1zfG66jKbKAjDzbGCkS8Iw/zxhJAfGyLiI9aj4iPRYg3ToQeEB87EyLepQcLnyzEwIceER8VEwT/6fu0JuKDzwSA/yifWGbhIxb+y2wWm9DDJnc+UtE7HwOfXOTB/KX1o37bppq3efkDT4lpi2pYKzI)ASUVORK5CYII=!