Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Swift 3,4,5...) Decrypt Email using RSAES-OAEP with AES-128 CBC and SHA256Demonstrates how to decrypt an email that was encrypted using RSAES-OAEP with SHA256 and AES-128 content encryption. Note: This example requires Chilkat v9.5.0.67 or greater.
func chilkatTest() { let email = CkoEmail()! // To decrypt an email, we must provide the certificate + private key // that matches the cert + public key that was used to encrypt. // This can be done by adding PFX sources. // (On a Windows system, if the cert+private key was installed on the system, // then Chilkat should automatically find the matching cert+key and use it to decrypt.) var success: Bool = email.addPfxSourceFile("qa_data/rsaes-oaep/cert_plus_privatekey.pfx", password: "PFX_PASSWORD") if success != true { print("\(email.lastErrorText!)") return } // Email objects automatically decrypt when loaded from a file, or when loaded from MIME (which // includes when being downloaded from a mail server). success = email.loadEml("qa_data/rsaes-oaep/rsaes-oaep-encrypted.eml") if success != true { print("\(email.lastErrorText!)") return } // Note: It is not necessary to know in advance the algorithms needed to decrypt. // The information about the RSA algorithm (OAEP vs PKCS-v1_5), the OAEP hash algorithm, // and the content encryption algorithm (such as AES-128), are all contained within // the PKCS7 ASN.1 structures and any decryptor would read these to know what to do. // We can check to see if the email was actually encrypted, and if so, whether it // was successfully decrypted: if email.receivedEncrypted == true { print("This email was encrypted.") } else { print("This email was not actually encrypted.") return } // Now check to see if it was successfully decrypted. if email.decrypted != true { print("Unable to decrypt this email.") return } // Save the decrypted .eml success = email.saveEml("qa_output/decrypted.eml") // OK.. getting here means the email was decrypted. print("The email was successfully decrypted.") // The MIME of an encrypted email looks like this: // MIME-Version: 1.0 // Date: Tue, 18 Apr 2017 10:12:16 -0500 // Message-ID: <7ED75DF554717DC7994D7EB757E30709E8733C5C@CHILKAT13> // Content-Type: application/pkcs7-mime; name="smime.p7m"; smime-type="enveloped-data" // X-Priority: 3 (Normal) // Subject: This is a sample email // To: "Chilkat Support" <support@chilkatsoft.com> // From: "Chilkat GMail" <chilkat.support@gmail.com> // Content-Disposition: attachment; filename="smime.p7m" // Content-Transfer-Encoding: base64 // // MIIorAYJKoZIhvcNAQcDoIIonTCCKJkCAQAxggGgMIIBnAIBADB1MGgxCzAJBgNVBAYTAlVTMQsw // CQYDVQQIDAJJTDEQMA4GA1UEBwwHV2hlYXRvbjEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQ // dHkgTHRkMRcwFQYDVQQDDA5DaGlsa2F0V2lkZ2V0cwIJAMRwugDmvniwMBwGCSqGSIb3DQEBBzAP // oA0wCwYJYIZIAWUDBAIBBIIBAIJY4pN5LdVt8UiwC7sHnzEu15pJmDyiHLL+E024quIP+wU6k/WM // 9hkNKDuUa5lyz4IqI4/KWlqFbCf43/TllsGHjEnKyWvcmdJxfcf1BU3+nj6t9LFRPYWeMkZHoa0g // E21VzlZQgq/OV/1bG6hzpqtyQyQC3kAszR6GzEz89BJHjRIUv5rpgPwvEhdvG6i8nyChsCfK/ZYw // VCv/HbBQrYXnJemiE4OOBy8nea0dMTzjQH2eqGplNh5gq21/FgUKTfNX+vqyPFaGZ9jjqdOGuewx // E58ln/3NlfOWnL61evVFXD99XQEPzK6FPep4b4sC4gQKwH+tudYTNFn8xskN5t4wgibuBgkqhkiG // 9w0BBwEwHQYJYIZIAWUDBAECBBBd6O3DQBKr4muGqiYIMHaWgIImwNU9MZGkfh0KoIlYodHUi6Mb // Hic8dFqXkKSbfZi9+ofsSaQm8xoytO/uXbpSkdyw8kMruS64IxvuCcIa2kebUhb2nURT9vs7zaqy // nDliAkEyZuMdZuzqGlPqbCCrXvXqAeUpBUz2k/r7bdgQVgBFEhsIOrB7acCgLPdJi0b8qozR8CGd // lvUxX3ir+dAJiSqUlyE3lSE4ldk9Z5u3nhEGAaVAFdj/aOeHyqtz5KwObbuNBBresbBovi/H/XDQ // xStJkMkW7luijk1jPaMoupnMI6gfDW6axyperKOIPveyXX2b5JkyFJWpg9pbvp8WFpPTsPjUqZrb // VUNNh3+JEjhkUkOpWLOxQ0+qnvwJtfUg7tH6CM2mSUV1AaBAkTrK8micVqNwoSaUjSiEvvaWTFi1 // mjAhXgcRowuP1hHjEbm7Ia+h7k9eJCDeCYvIVWCsOFSREkgujQphMRRDwUzFq3aT6dUXDhMJyouq // zOVttHBFFWcgzcExTQccIfDLB85GN3YXPRf/dWv3t4iY8KbVj1hI12WkDjK80dHNY1+6UfixFPMN // P2L0Ojh+TlRxoJF7D1jdIklkP1lByAqIOptyJqyQ19W2GzXUlqbTt9wbJpTvtdyKQrrsyDT0nYWs // R9P50zcxtvxx8mYQP7fExEf1fZYpUreGfjMQ/+vorHNTAvvq0MIpnzsAzm8nkjY+wdyPdbOC94Wa // MuimOUOkWXg5Pr0MS5nnwejns2G4hYHkZJgIoTU7drsfYpQn8eHxaJcWK2c/l662bUJKyxT7lQjZ // 7I+iWYkKB/NvrQQLaQO82QqZml+bR6K9bfRIEz1wtozEj5X9YG3DxNtR1pO2NGOZC0Sp4eegVFkO // IQojbCRrnmPQ6lAY7e8zLIR9amsHQ7aNyuo5L+mSzJZ1SaA9NMIoKSwT/Z3GvYQHNwpsU3rsN00v // MUumlLWCJkK5mTuFsfekmHhD9yuAsMviqAabwgay6BjjJdRA6cbQhv9N+OS+e1XnLOCDhgeKzSCj // i30QTzV1e3mXN5uop/kJDCToacMymWpFbKZDZXFkLWFbqIz5dK84Be28uUAOYVanWHeBeddWNhfC // knUcRZri6Q7zExGyMzCRv+MB4DtY7gBGQAPvVm6SOJDzWSSmH4yv+DK9xycL3MouQyj5O7TOHKCS // 5/DmJy2ucNCM/fKri6sW7LrbljL+Y1t5lkF7brL7t8GZ93pi4zc1TdlTwqEf6xgn3I9vu/vkPx+h // mf/10k9iiRtorUx/b870Myoisf/fu0CQbMQF9ar4E1wcNvgyYw6L/61U8def2BUPkzy2KqzeY2zV // E+iZwlarEfcgY8BUIt/rsT8cbXu2hPWsZ/wqBOxdersIQiSEs4bn4bkB2YAUQ7AtIrJCQtcn+pXG // BIZyzUYw+nuICcroMQEZiIJ5QzQX+ScRkIrk2vCBoTqVwfu0fh8Q0e9dNJug5LIMurddR5NrZGbB // dpa+RrRZqWRXHXjCLDm5CGLWZN2C5gJhnWgPtgGgBe2sAaAFJIyImmhe9aIo2Xbf/ZiwDX+HBcMk // fnPDsVcyNjP2OaiogLWWMdZK25HQOhMl+tC97iDPJezhtq49iQYaNykD0XHWQ+ER2RHzomLBW6Nl // dGH/rtLEN1aEj6MJBA2AtivXp9SLvvsdKonOoOiCIi+HfUvPnK6drmlrz5BDeDPNHYOQZaQIXI6x // ogTozqRUvJnuozJ0eHdvQGJYA/WoI7XCWZVoSvtkaveFJch9+V++JOCt6XAZ7Y2c9RlOZI+USc7n // 68V3aHCAKBQHWcX67+w/LWbJHxfzYxE4LaAX6MHDVy+GjKWk+GajJlwzgnyDCyG7XNcY4HQ/gZpM // HINz4THt1AqqHGKNevSTnQcQs/6K4r+/QSbDFhxKugmKtI1aZLTOMVd6I7qEYdxlKliK5fKaCVM1 // OLyBZZnVYVH5owJjd2/bppHtxxQfOJ5TIQBU8ecffSEy44FBaCooJSxVScRljtsl+pwQri87eU2U // Lme5FbRNOu0qtrm5f/H5fQOF6W4n17sCUuJm87yXEa6sU5M+nsuQfw8Tc6mma3Lc6iUJYPhUFvn7 // pOC75VOAS0ehJv39AVQiwBPFITEPl1klDS5811wLtqT9tCVspkbbjEHgdUWJX/a1l8eWFYGKn2LQ // txPEo/LBduvXJp2kMIDQlEM8FodH2RFuqv8T4COvddBIh9GE0LIKHD5YgT+XhZAKF/Ofp4n1enBJ // 8fJCNdYoQcp1uPirTs+F74U5C+I4FHZ6J8EW3pKaaXD2Iy+c3V9kAN17WTgp1vdmfUKq8CsH7vQu // a/v4bIeVSRWT8VvQehSY9FLsfNdKKW4hLcjIZj+JjCkL5kniyKVQ2qkgWVjKSu0nkpGnJ7x2ty/x // 7hl8CvJ7nx27KGYc1CVNFzXXhYw0OOPoD8UwfcDFaZ/6MsWGozu//mihrA0x7QUmG79DhoR6XBnt // 3hVucMHorxeYuRHJXv6ulRxiODdJn/hcaIVd/t1waDeeEkWvrG80ghtKLP4YbLKtW5y+rJ4ryzx+ // LkWKG9a50p4cFdlkkxt2axaV6cyNjkKoHJOIQPvUX7Vt+sJyiYh84wYF+C3U5x94ebCLJfKpOJ// // gSA3JY0wayiWMAcYlWZpV+5zngUatynCqa8RT/x0FG5nevsLiodCEHO9aiOcpYGtv0pR7wr1caME // iIHQKZPwQmMMpfxy0LZStrA1zIFIkY0x/+kZJsIO4FBBZgiZf5ib5Ml0C2FGkhums2oufrzl1MjL // 2pLz5w5vU4Hoq2AhJSplTF+GeHGbZC78FTtwNLlrgUrmBnudC4Ma5qJj8nTLsXcDzK5c3Y06Aya4 // BQwVum/TfPjAMhwvKzMACreWqq3C4d91HmIjsKtBfTyOMyfxA2bJB88wvH5Cxe7r7Ccp7TxztC2H // DyNqC1yr/q4GzdGwCZXjo3hC9zdjNNUcIfhUsujaux8ygXZYja86BR4luQeiqHI44BYoI85GTdd+ // V5K2dDnvvcaIo6DGVgqTlT3wMwmzNbdozXec2ZzVkTJMQvFJws7FIG7gXS3ztoi2LG1y8GKFZZoQ // VkCu5uffPSIpgJx9nXzH9NdW/HAtXsvmhy3CRxFgqblYSVlclJH9pzPlI+S7pVIwB4poleTOrXnD // 6jyqoKbjJqTRZsR7zp9Bb3A04Knfw5+pOc4LwLf11WAYRRdUmQ3on3h7HXNXKw5yaC6DoIt+EgnN // 3RRcL+WEzcQEa98dQDaGN7e1YtLP/bw+fYFoLmn2QCVAf4BdjRPpw0jnOgFhkVM4ywlGsodg5sqf // A+FJivC/HhGWwVDPuRNW0P/3kMXojrExlmJpYGZRY3w6h9ImO/F7TjV0ueljqqK+8QvS1RuMtANR // jPyXWCQ19V8W2bRObeuR6TA8dEm1p+MeJahDBin9YieH1ivvaKKOOVkY9Tq00YW8ryCmJ+BX76eQ // Yo6nJQZdcvu+m4+5TBFNwb8BYKNbPtouBui3wCJlxtEBCwp5XiZkWxErR+NYnyFRPlpG3pn/OUjn // Jwaf5j1oxQxcVNa7mMD/cVcFzrIWSvioxY08LXWPItGarBaGrX/5RhiuWNcHiO2yv/Xfm3vN30KG // SF/stTW8YgnzeAOXcWdwnZTxim/lq0GxoRJtIKgdeLhcDjQli6bIUTKw6d6vBn6ldytXKAtAmf2S // si9fmkj/69r1+KajpkZZsxI0Ul5BU4LXFqj5L/vUELvQ3BCPR3pUQNve0RZiwQBCeEojkdjckDU2 // rHDFWlic/nBY/EtUArsY2TtxcuwynIXztr4jAM9efy6oQ7RW/jzoYgGXlStypxPjpB6CdB7VVOgZ // 3so7EOB+SQjzYk/KuC7pxbq47o+jm2rbFNrwa7wRfifdwRjfvtgXoYPJ3dF6bQHfWMNhz+g+Xmhw // vwgNmPAXCRPzopqZDz1aIWc2O607vqmfAnJ+u4BLKLY1lf3bIzsKaN2e1SckfcSAAg9k7gOOJHW5 // Lds62NL5mqYpkrbHKBRXKoayl33jOa3a8Rd5GScA6MdrDzwQ07c12SqLBGeK1VfaR9C4n+aNVI+9 // asnmigzP1L7I+KGMIHnQHDVbSDPCic62YsYW3CwDfqgJgH9/VuNuUpIhqxnvDrf8/0O4q+H2J2pl // 4IkoiKy1x6T8Br90tIbyzQdfoIUx5HLJrXBcUGZb/LHCS+n2GejEYXdXNoePGra6AXUWE99rku37 // g0vyC0ehvp/0knd7x/hGvluKaDAoiVtNegRqSCOtvRfG0MycMje3kGn/ShWKPBYYE0srAn8C26Zp // hRp7+IQjsO+1rh6pA6jWpOaoYOXWA8ATH9ERODHV2VXJvtlH4fChi/svS5neoXHaDVpt5DdeGYqL // 4ACl6WHWv8O337aAY7nhIv/uZWoyG6BQ6jJWW7vQKeUp6WJDXD4NSx/sjcRJs9WPXzFRaVygQ7No // UPqZz69W6ADRwooRi1lwcQ224Z1eo+mreGzFSAFY1aBht6YC2nLLNAh73YvhSM6+Wyx2SMK/xHBP // 4Rq5Bs4o3miVvQXMLFE0xODFSetapUo8wEFP5coIEBOKP+KdCcsgf9zHeA2ShGnTy6xpiDFF1KiI // hAVBpLt1kNJRR3NqjftB781iAsI3e5+x/gjUrn5OqsIEGRdnC669rW0INmKlTNUSoONUgzbEMe/+ // hI1iA6VWD/1t3W4UE38Tw101e7zbp99tZA2Z0echWWH4Db/3G05IbMAWyrbZruACU3WkGsa+7sYP // 2J7ncs4QFJ2AlW2K3OXORPLpg8MKuPhl1nnayngpDekzg/Xp1cz85UGdt/YnkodaNZZB3zKDaWyX // YIOyC3SNVrK5O0VGmegDtnwhXWSKu+RKGs6AjtbdY7sM+U9B350We0A5IGcuv/n5B/YpYpz83qrE // 5hTOBTts1CpIjOnPvjlODD2eT2kp2iebQchpgceqLD7veOvxEhv7Xu7uYNtCnOpAG8TWfjgTsivy // GZf5lFWNkSXF6qGG2GO200dueBC4X2Z38yy1OD+3yx12JxiPINEcIv3xtzDX+u4RlafY5ibunZxu // T/Kuo+dF95slIARTauoolQ2+fcTPavJuSw+lkP17LzhvwJysVGKaQ4BlaM0dRerGc/2ya+K9NVwQ // O5euqPaChoXjT/0Gd/IndxPQNU6UxlICIL3KGGMXIYNwII9KwJYbHBuCF3KuNjeBvTNbx8l4QSkk // fVcePGcnMta2nGvQWKhRtumZDDnpUTYYhqz1uStWJ07P6btLdxAIvWumptpPHq1EbnWS2TXRszbC // CeYkfMfYQunhZ4wZN3hI0gewiePIXM5uTlQEvlQTZ28yS8FTHXWuDmh/1HMRuYlQoF0Pnv1XX0GH // MRw9O6ntkUrIy1R6TMtmqmORmo3YHy1e7N0LFmC8e59HbS+mvEBl8wYubmqN+hVXWC9hEZM6Bj14 // tA4k0lOlKz3Aw2ZP1KPNKoAPJr7FdZzYK2KXTQ609eY8c6naYcsVy+Glgh/P6ScsWqxnv2iDqtSh // fqQ7Ug8iKE4bwqTEKT3iV5AOqLDFmZffdw3qy7DpH0/hDhYt6eEbAKuHLUT652lGNaUuuSz91XQj // rr/DUoEiB+B48x5Xdfu9KVHP00KoPXnaXOJOXzdFnGqQIP78SDJbIl2RqeUDMrOTZvvXTBUsmpox // e8pg84R4OY2C7Q1wTqIHOOB0G3N4vUFuaL70WZShzxflsCCXdvTbuDQLEJjxhaYm9HkyncST7oAZ // gU2OXZ38c0tONe74npOaJdzMxfcmqH/IprhoqpWfpUdIDZVvcAkTlRa30sdm0gmlG/xCS7N1CIez // apyrmv7FW267iEONGbgm4fd7aaWNENPW+yXRty5qw/IoEjLV/yxGQtw9Y1ioCxn4DtKb7DmWfsQL // qpZvJNzno/fPF1QKRkUFOFFXVGmC1btSgL+ww/99KTmadkFm48QInztBPMj/a/PuM88LO4GYohyq // QBx3wFjP/5ZHx3h0ddWz2S00qUzKlW9j3XVjOhVR/jGtXMYqnWnY/3AHGj1vmMiB212UhDg1Iww+ // Hba/H7GcoNk6MoglaohYjx4kQnrMg37zQKwQ5i61hoT5MpX717Xx+KMLsbjUtdEIg+KlkRCdNnDC // Y6eywWkNBh6cAeN6Phos7j+Xv+Y0yMlqhrD7RuziItEoMTPkWTpBfiUI/58cMycuuLYfz+V0RTMr // jHKFiipwi6RD0GjZwzfotGcset7RytLggAnxtE7c/mnNpkEp5zSp5qPIq+KQqSbeAkdN4SHMSm06 // dHFiE5QptOB1dZ2F7RebTHwWjB5gNRpeYrWfw0cQiSz7N3lcdP/iyoxYnj6V0O8+0VU/GlmrWG36 // WtkMEcSUDNU0BCbRY1x5URDEjRR7OB0hgnaWcSB6n+Wk7sXMdQ4DJdZHGsRlP2P3PVbsPzIjNrLG // 6DCC8EQ6ivtqvhHJy67a2hhL7fgsVBHitly+3U8hH7mJEAAMY6l0lO9OnecKozOv1G0uvwu7WcrF // hS+qXvMIBEgo6XkNt8lsyvSbBkG05mVEw5fy5HjCqLi7US1jqwe1jtNf/WqtXqzGfRwTfmijEyGf // D4RCL2fXaeXIJcGD4T0El+6LmkUoAo7p2DEHHYgazMhFY/kuQTw71ZDFiPCZ9qIqg/5jWJio2Sf3 // 5HvQLDRB8lbIGEY4CkP6bZI+5nJK8VQ+Vxwp2YnwxOnP+YaCXmUWLQVn/xNTjFmE42mFkhXoySCR // l1vBbTfvm+gpsJIuG8iUCKKAQEcU5jegLnBYzNOrtANNwAyTjvI0ZDnBCWASyfYB2/AMzb5PLD/K // QwQp+IlRnzQZwVT+6W2HK7VWivyuoR9y/XqWWTE8RfY5xaZ451jHWURmbVAIXOuD34jkJUKK2Xv1 // AoqWag3aQAqUU2HeBnC5CCTKza9WoCTPdu8BcxD9DYQEIxerIKzXyJe8G0Cd3UNI9OfAIdhcvpkw // IArWfur9p3vQmH5+1VFHFGLOjVk+wzlwpPNta5DE5DLa2XPuifboxB6OEFSfDzbTy2hYfszZXBh4 // 81zsmiiOp52hLCvzF+mebR46QmCqBDD953V6XcCkL2pEF8yUzz+Rn6mWNf7sp90SoeWnh9d5ynyX // rq86PLQWQYLgGMNSPHerD8k0ZtcXDNZudYfbr2c6/au+lw9a/ANetSrvXD5mrgMTjxusi0vSidd4 // 4c4g2ntJY4AZu/+/F1sZukGt500+WYrusjCLYqhSFUGjur0918FItIpHHGok7nyD9S7L8NWC3mo7 // DLLruEHoZEXJ0zsf1oKb0zaQ3Ca4tMZ3mN6re9/+eSeMgGeQuda4h4z2bA5m7KqkIIhejJyytKRI // Q6DlXZsNsnENsZ2vvFBtHQAodreCOObKkWdYidFma93W0BorGOJInqVH7qg12DfC3kesMMPeL+nU // TkSC5eSiAwGsFt6ar+/T0Z249erCs/11jHTPDIGc4VGtN1zy148KwrzsHee2XyE1racuVXjbNpuM // V8O5E11kggown7GXbpyuZYLj7zqh78XoIJsDMvck5Cr9PSE25cbOthBBzqzF6N/eqsuIYvKShtt4 // YiVQd+niHTal15tzKq2gyD1ua9BFO6xOXFhzK3U4RSJzL9j3U+kgKJU1uW+sEgWn6OOBIJkFOKX4 // l4XHYoayq/9cOgWHVZEywhHm+p7k1A1nmybzAosq4NCiwGV8d/Y75YgXSPvy7ES54NSrJ1QZyWe2 // oYEO054EA9QZD8FiyYCggQvTujuelXlTqWul9tL36mJTqaTsyfz5rkCZ1YjHnMRYyz6kyi5BPRKl // vFOQeAVaz1n+JEtmIiBwwWunvwGl1qhQYPc9SBKjPiASPZsSCVY4H3NSL6CssRhUpKpDxng2CGRW // zXl8xxI9+Nya7k895qHishUTGqfz3OlkE4Jpr2wx3vjsTKP8+Fxh7RFv77XMLqaAnE0q5JBM++bi // uEDtLg2yjq5AB3VtYmwZTHV5CCJbk1VV4vjGwDljEoWh4uaKQzZvZ9u5IhqL/OSXYhwGVNE+WmgC // 04r/7myL8eOZwHiG4Lbh7yiaXru3y7/df2c8WrJrLX+2y5Y0UGRV9nhMKU+d4dE+EmPAWs7MY0r2 // QxXSXFwcBinwobZSTsxTZg1/bsH4nFSK1EJ570ywBBKSZfjtKEOUUH+7/o5/6rf5XBLO67V+6PWE // XrUhfOHTKBEV6vQSNADwP1Nrh5z4XK9PgaeP7LF9MA5idX0B54CNpZwqkXITTgfrp72+HQQ+vHqP // GZ0RcYD0TmmWr9/UY2/3yInoG4qcIKit3muIIPx77YFmta2qWhlZn7SYN8lbnEHLmcUHgcKqhcf/ // Lvo3nqP4iF81aJ2ZivQ5sRFwwrw5EuUotcjCOVL3lH0He4v93cRNYMoi3PA9WT2h1iMEPZc68n6A // StidspXIP0mGECWwYFirchvZox8hMunf/qLqHADXoIlSqrtbI6KlEWgD31OXzuDCqxZrFMQwh4np // yYieBl94Uwxa/9jqpzbKSHx53EWQrQIMxUfTahmfWm8uUVU5xnlw3hW1M77KzqQOUfhjOsUSz+XD // k2OlZXPhyWpWJ2/3vtzi3y/xO4nAcOL8XhUCf2e1bTATSyJf+L5znGe6tdp0jZeKFYxFvYIjePwC // iEiFErkDfXt6jN8K8dNk5XMhn53ZW717dF2KZ0/gZJ6PMfAd+x4epFTb5Jb0uRIINvoJQt7LKq4L // r+eMF6Uv4n0I3DJ6sE9X3I6r33J/W2hy6csbb0hvo6J7j77LwU7Mqc5RPrw0dMFXwWR5OSE+IGkh // VgiPpTet15Am5vkSiCDHo0reSQmPKM3XU/UKksU3DFqpmpKfWxZUvrLfywLqtgOhvbepPf+/wZAf // hY53LKhQEuGavkRnfImcFl3AXayA4HUzJbdz30DWqJnUvsMyzhK/2UzQaA2inLoclB72v8XcwdJn // dsDVPHLlhu/x25y5eEWei6O14fq8lS2ZbkVL2fg3ciXBsiRUazHyK3x9c4Rtwzg0zhUab4Rm2OKW // q1rR+Aw2EXbyWCy3eNj7gJMTtdIRru+x331pv/XCW57VMAOm7Dxx9RgBTk8mHfAjH+/LSBJ7dOBr // FIMAkLY1pFP9Iqg1KR/5+o0mozX9G7SzoRrTu2n2w54HmbLqNuZBjg3B5dentxu6POt+F2UDqBWb // begcUqF3kqyZXWa+/TgSvUq/CN6n1MWskMDjOBT7mHeyGRW3P0MNmtU3kjyo/sgJZdCHoYOEPBp3 // fi696PvuMIuwTouBUttOL8sd4M+H/bRGBY1StNdYaGoJSk+3cJK0FNaGMp+JvwxLTsXryJCHJJjW // EXhLoXXGLIxEsDVCM5uPTPK4Lzolm3k+gNP0RlRO1dnQu2bsURvuwQwYXQYwdP64+RNqeNvnXfS0 // 2OsTg/xKpm9J5IHP8WwwoWHsOCV4vgIE8vMdolTNn7KOvwbkU+4eHh3c21UsMDFPRvTH+EsTmoCm // /LiB2nllxJnZuRcbX5PrdV+KjJGNZvuMZyZTB7x7Ns2EeSRuy5bG2czaBgT1tera9TmxekJyiD5f // iYllwI8RBi36VFZdn5pA6i/gpwq94Sr7iv1nTGCdUcqNMUG5DYmesJw2VEx4mmmW10i8HJB+3KVz // DK7NybiCR2vfKBr8HTlHQSMydFOuEjznZ58VZ3ApequE+ThYlfdWsbMMN08NmRr9NDu49nkGRNie // j02PCFbjd6JfM81UuQ+xZo3HZ/aY/AmDyzT3X8H8vbtzN9nx3/x/uggtp2MXdPCskODaa6nPM0h3 // lucd1Yn492dybFv6JX4L9G/2wZqSWIucPLqbhVv1nLmOhrsmnyRbpkc6Mn+rtdQMj66yVGDGl+ob // MmgbFx2rrCP5E9CyMfwO/RiAbSU31S44fW1DtZ+taWzZYGgHeDSNWGK4SpF2P2PucPeulPCgkLZA // QJ3tx7xIsxhPSsEfzQNuvya+4KHa1TRqq7zS1gxYvJFquIwYgXo+tNvQmCVFXE1E7p9r4aq4Sz1h // YH8bj3tplxP6oYAp44+i7a921RIfmChZrTzsvTaNQtW05pkJX7eHRZ9Dw0yfFjXU6kkjS5FZ8hvh // yMcND7SBXf+WCbuUId/tZa0skq7KDmvFWnyJbXoacjMpFzSe6Ot1VDl2z+DRwUUKldOlUDEHf/uP // xLarF/4g6/1i05UBSVnCbDVB391mBcaLaOYaMNhwdr4i0sYO5F1h7Xt7SlxUTp7B1o7X25AJWGMg // lYEdO7HWuhRfrybjPWO4CdkMRt+NeXilsqA4KiYTCs6MW6GItilAEXX4tC3bcfwvezQijvSWkXnv // 5ww8/ZzDJCCol6qjgpReE/Vp33dNo54QeQqa225HTqpuN1Dj59bCmyrVZ/lkZ1OkD+aCiChfn/Cp // TCq4LNk0lY8a5IES6iZBvpPcNp6AX9MY74XdkGDK8t7cABPN/8IGRynUvP/Q3nksdH3zNXgP/E2o // M8MfBKM5/rtpMPfuWlrE+wxzzrPMcTkZhyxtDd/Ersm/F12E8r3DolxH6LqidfDaMCApUED//NfV // fE7Lp9vj3+Ut8/1WhTRVw49nVIQiWX0fOJJUfoR07Euue2MnrBIAItKkRWskv+fucGTWmZkLd/dJ // ruxXyZJa7lSyduzIhyqUfZi7PnWlsgc1qR9sI3E0CUlQnNu/bY10+ia9bqFk58uSVzZDZDYIjOq9 // ioEoiX2OA0oU7xKeVYBBOyron2Lh/TryiXlhSfXHMalgxvKja4O3rC/YVaJ9spsTdp+bm3TYBZIv // Ee6X4L2WlcVEXIgQ1sFjQyd1mGAVGd78zpFLN0dOQSn324qruPmgoM+RFd7xGJmcDJAx9Adh/XXz // N4DsutYxck/O9me3JhZl8frktps4BofJv/gqszyw14u2HCdIM24vFqh/cue3Q3h+3AT0wMksb4aM // ucsA+pVOdP5D7oyNr0YsiKFbw4yK3L4KNyXanMV5VecXCaE729+ikHDP/XGf6sH2Ez0A2eWc1Fnq // 1nUvZA2yxtkwJdE7HMZAF2KVTBOPBtAP6wKuM33T6rB9zgkaWE9Q95FmUJFmp2V3iZC9jURkQNbc // JwhUIkHe2uME50eVRaK/80qvalQbtvX8IoRQr22lm+YRhJNeTDCtByNkTXXoFDmd36yzXoGRDNjR // DOikel3MvdNYMwtg2fwpww4eS8qxJ6+yiwh6RFoYS2uctbjORwMwUUil9FPXH+69qUIZyhAYkLKM // 1QvfbGIHb4xm2+hn3GOybrKH9kZ73yopDoVJGvKVqLip/EYizabfPNtlZEwIX+ReswUlytCJdzAK // vlKpNUsKLKGqZdhHQzZzJmR+fFWgvAWxBGwg5ihUlXeOwgaOjfYhh3GQ3b3S1i4+3xFuqR1/BsAw // J47AWFkNVW13yuDaqRG9AZ+XJJuRHIlKcEWU2FMqx/TCs+EytU6ZT8kgHAbju6EgaHs/NUptBLNM // 7KJnXPZox3NE39H1qu9qn63r/kXX+SVUa/OWUL5CmdtPYA6aToJZjwZUpIshOfS6hNPqEwzqwpzu // ZPVO0pn1h+IMOyFRTOTNXMTpq6j3QXNIr6BqKkEGCSH74Hn5zJf2YWsoG5XCgEQu4NLk149FvcOv // 7EHx3nBedqW5b/Yd/GCshi1hbOabWriTWLQLv7dAs76DjMrpvtbH2/kZDIR+RdfVULuyc9KqH3gf // THC7NdHl9/4OYPqXpNEPR2V6FJEcmnZ8l40dVWKyx20h4dBhEhxXi+Avn7aWXDUZCQMi7bMY5Mga // PNTu4o4mMNQMKX5b/3uzWX1IC6+4OUWIdyuWO7V8w6PcrbDFO9Xtxd6WGR1AlqqTG9Y1cQMkX1Fp // MJGy3A1E5SrSIlnMuQncV9shz1+OR0ZcqXz1mO7RDUidL6F28DFXCLGECfVJSBf8I5hBJURCsfP3 // rLKP80Fvnjdj+FkGj/NDa6zh29pEphLDX8TgQIHZGm5N0xtn1ee2uBVgHsAFDGKo49bbKHGd+JSu // ar7W7FiNIfhLDkkYEaSZX2O1zhpoK4wljijv9ACyBNLbNKLOOtU1RMeMipzasMuMi3jwCPg8HaXv // r9VYkBRcBZYhPGDS4NIuWECW1U+ujLXesyd/KeBY/ECLZT8ToPomPcXUgEXJHX6COTA2Sue0QlAs // LbPOhowKQqkYOniZo/ARGLH4hYc99g0LAali5dly4sC6x7za9hxpNsm41+AvGjkrcezFWco6U3k8 // tpOiRR3ZYnfBDlit+97xH5cvZY7Ij/4aXrI7U5ndrrNfhBPpuW72RBgxm7ahli9IwW43Sg/jU2AQ // UUr7SvPSdaY1Drsrz1iwT+egPbdLZ5sqzHPyXNz3/hlZPe9BgKPLFMw/X+D42s2S/Rf7gvdupGC4 // EpZagc66qyhiN1xBXjMel5inlg/ACrVqVySx+pkV/iAqLU7XUJ9DFSdpSbaljOjMjCVKTTOqj+Wz // nijPCuhjUhDOUw4FpVd/B5lVeqxLVD+l7YQ3/FgTLSV2fhobL6CsjZhf/ZHXQJtoR5qeuzQ1LFHU // xVESEhFJpIrPRhJc1HOrEA6NUUdaZ3Uf3zcbjZzTfXCy7Qh/Wmc+tqcX15cYunzDiw5VA9oL7VI9 // VRMRsbZJHtTZ00vFqD4Yd/RRhx3dFX1lGP4h4AxkhGBlbQs9Oouoi6eKPUTRRaK3YrRzc5Cqtps/ // ZPOn2kmFnQd6FWkJ/FEVC8F3zqiqu16/I2vw4KT2SOMO69YxfdtsfM8yKFf6jKxJAIl+Hj3uQ+g7 // PC7m9SOgzRWMfOi/H/HelMZbq/5j/tIngqOuJg8BUgSmMSKqUNjeueaUxZffCYWGCr1AUgtVQzIG // 0ao1ZPw07LneJh9f3/hSyShg3+3MP1lGO6ZwimAZ5M9y44KxZwT8iJ9LqbKAUkRuHQ3Jy6F8CC+Z // rLiUmW+ux+GieqZ9OiK+25RuyTX83Qq65eCAQkJp27ms3utu7H60e4Ca99S1+gku4hEQJro6YLOh // AbxhLmY4wfqDaGe1p+RAsxyUcQk40PYiOEvGyPiVdQ8Nt8iIYEHHVglnrxdTeXXsv+1UNpQ2uPXa // /GjdGUy8dEb3AjUWFysDQPAk4vlCY5yi9Ko5EBTNuNhF6aZvYLqllv/wfa3d3eaFHgfvy/IMHQf7 // JWzGI+kI7Mspmarf68EFqF21f5p8CMZd4zYU1JhClr6kD2GJnEJLPz1naTvJvrwOyR6r8J/n3628 // sqf/bLplz5Xs25sZKj+jmA8xNDKmXptT3l3pw2pqxIVA5tRakXRjOPSD // } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.