From 38acc639f25dc88a1157f1233c680acc5d709dce Mon Sep 17 00:00:00 2001 From: Jaime Soriano Pastor Date: Fri, 22 Jun 2018 18:44:27 +0200 Subject: [PATCH 1/3] Metricbeat: MongoDB TLS connection support --- CHANGELOG.asciidoc | 1 + metricbeat/docs/modules/mongodb.asciidoc | 17 +++++ metricbeat/include/fields.go | 2 +- metricbeat/metricbeat.reference.yml | 15 ++++ .../module/mongodb/_meta/config.reference.yml | 15 ++++ metricbeat/module/mongodb/_meta/config.yml | 15 ++++ metricbeat/module/mongodb/_meta/fields.yml | 1 + .../module/mongodb/collstats/collstats.go | 18 ++--- metricbeat/module/mongodb/dbstats/dbstats.go | 16 ++--- metricbeat/module/mongodb/metricset.go | 70 +++++++++++++++++++ metricbeat/module/mongodb/status/status.go | 15 ++-- metricbeat/modules.d/mongodb.yml.disabled | 15 ++++ 12 files changed, 163 insertions(+), 37 deletions(-) create mode 100644 metricbeat/module/mongodb/metricset.go diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 6cd7c595c0e..d695f9bba49 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -279,6 +279,7 @@ https://github.com/elastic/beats/compare/v6.2.3...master[Check the HEAD diff] - Add postgresql statement metricset. {issue}7048[7048] {pull}7060[7060] - Update `state_container` metricset to support latest `kube-state-metrics` version. {pull}7216[7216] - Collect accumulated docker network metrics and mark old ones as deprecated. {pull}7253[7253] +- Add TLS support to MongoDB module. {pull}7401[7401] *Packetbeat* diff --git a/metricbeat/docs/modules/mongodb.asciidoc b/metricbeat/docs/modules/mongodb.asciidoc index 6ecd0517dd2..44dc8407a44 100644 --- a/metricbeat/docs/modules/mongodb.asciidoc +++ b/metricbeat/docs/modules/mongodb.asciidoc @@ -77,6 +77,21 @@ metricbeat.modules: # password configuration options. hosts: ["localhost:27017"] + # Optional SSL. By default is off. + #ssl.enabled: true + + # Mode of verification of server certificate ('none' or 'full') + #ssl.verification_mode: 'full' + + # List of root certificates for HTTPS server verifications + #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"] + + # Certificate for SSL client authentication + #ssl.certificate: "/etc/pki/client/cert.pem" + + # Client Certificate Key + #ssl.key: "/etc/pki/client/cert.key" + # Username to use when connecting to MongoDB. Empty by default. #username: user @@ -84,6 +99,8 @@ metricbeat.modules: #password: pass ---- +This module supports TLS connection when using `ssl` config field, as described in <>. It also supports the options described in <>. + [float] === Metricsets diff --git a/metricbeat/include/fields.go b/metricbeat/include/fields.go index 42c31f8ca9a..ee5fc4be5f2 100644 --- a/metricbeat/include/fields.go +++ b/metricbeat/include/fields.go @@ -31,5 +31,5 @@ func init() { // Asset returns asset data func Asset() string { - return "eJzsvftzHLmRP/i7/wqELi6G2qV6Zuyx9xtzsRunoTQervXgipJ9FxsbLXQVuhtmFVADoNjsubv//QIJoJ5AvbqqSdniD/aI7M78IAEkEol8/O4FuiPHH9GGYPU7hBRVCfkR/WT+FRMZCZopytmP6D9+hxBCV5wpTJlEEU9TzuB7aEtJEkuE7zFN8CYhiDKEkwSRe8IUUseMyNXvkP3Yj78DQi8QwykxjFf6P+G3Xp765+OewBcQ3yK1J4AQScJiynbwi4TvUEqkxDsiV+i68in4GpUFKUmUBqj/HnG2pbtcYM0ObWlCLvXv9R+xQvc4yfU3US5JDDSp0v9kXFWJwVfQnktlOdnPf+TAqobjUv8NfvVZ//NzQYfDiMO4Vm2hOY79giuwYYkEUblgJEabI7DiGdFs2A7Jo1QkRZyhw55G+xJ4RXYiZ4yynQeNoin5jbMBaNwnl0RzT4SknPWDsR90ywqWM0z+jjANhcRI7ak0S3lVX7rP/k89FKlwmj2zRPVa/xHFWDk5CPJrTgWJf0RK5O6XWy5SrGqfIw84zfTWe5nvcqnQ7/+k9uj3333/p0v0/e9//MMff/zjH1Z/+MPvh0kXIKGDWcjEbkO9QQSJuIjRActyfI1BKbyT3Vxeig1VAosjfNZIK8JaFcB6z4gwE4VZDP9QAjOJI1XOh5FTg7HRDjU58s3fSeT2mvnH2vzljhwPXMTdQAtdlUsiyj2lFZRh1kBAhOCiBmAneJ51M3mtv+Q0YGQ46vWL45jqz+IEUbblemdHWIL+Aj5y5RaD1YqOoENjlVnxe4dJkQdV+WUAVgnN0lm1GEQ8blNPONuNoa6JtElrWi3S9TkbRN0sE3tERQnP4/KMutL/RJng9zQmepgKx1hh/7H11v4VbQVPDaXiq1LPVamCcByv4QNrR1J/MiJSchE8xfRHV/CtlSPb3Ngk6tm97yrHWx3hCt1wKaleuHAmSYQF0QQv0S4il4gLFNMdVTjhEcFsFcRGmVSYRWRNe7bOtf0gun7lIOlDBKU42lPW3Lo+Dv0nU8Gjeq4P42I/sK6ss0LO6verlMQ0T7u5vzUkYImNY27NHJpQdVxXjrwCQS5fECzVi++jHkVaIYTgRKTlaUelgUNlecx1LDnQjcWsFlDsX148DF969isay5853yXE7LQwd0F2vUftB/hM3/jsRo95dAf7x+70V+7fHuLmb0gqrLT6TRIS6TMbtrn5m96zcs+FWpsT4Ee0xYnUk4ZZtOfC8XtR7PLf1ZWyG3IBC3nPh5Aet2cCESsan6YTPzH6a05KgojGPq1esEt9x8cojtV1AeScdWoBaENik9NEIc66oFSUwUQkVwVPTauLV4I3JJEtbjVbAnXbEz1YrkEShk+xaPViLpfsL+ZfHiLX2hioLFR9yrVUT7k29e97V6blPW5dnj4nv9hrRXs2ZlrpRkF4FjkW0Z4qEqlczDCGGjl0QVa7FXr4X39a/+mHS4RFeomyLLpEKc3k8zYULldZgpU26U9D8v4WOUIWQ0SY4vIS5ZucqfwSHSiL+SEAon7jmY7B0vHy2OKUJseTWRgydpCCxHusLlFMNhSzS7QVhGxk3DVamrUg1H7Vwf0NlUortOubFziOBZGSyDaDFEenDdKx2WMRH7AgJbNLlMscJ8kRvX15VcXg9MhdviGCEUVkqU3+Uv2dh23598IMrtu0JVFU1SXdx2L5pV4FVAONRqmhjMczHA8VCWQ8NrrNyyo/VTU1OGl6XtUqMxzNN6iSYpuZvoHNKkFNMSDCoYfrMEaGGkpx1uaEGeMK/F+zsauQ9POc02Cp8I1qtksX2xlMNi9fQ9fdo8FzW7lIu38PcPee4ulNiRI0kkStUh7nyUiHr/lO2zdHvK65ktd413Lx3fHMKoZYgJmzmQpm9hoKF5bS01li0CZ2YS6u0Md9xf8JYkYpPiLGFdrouxuReiIK1x8cBTUSKOGRPn+CYxCqbktWPEJeZ2bILwYrQvCcxUgJmoFjUi+XlEaCSxJx1nLA1WetqkFHeP3eua9qEcdHhlMalZSbLCseBO/oipt0SaF/NcU8ylO3IVboZXLAR2keAzh6FvPoWQOFJOKeRjU1XvqNEiyV5qyt1OHXeEvS4jbPNERFeyLLhaEXXXGBwURwmdE7UmqGZy/d75751UPxd1RsaUESgiX44cEZ5zMXqqzQcGdr103Gf9xWSfboTR+R5lhq+64CpAomSihhqvanEJoeRPrnCqgZ98aq8VcfiiqSmCREkdafu9AMQFRBZRhU/fvSj7QLLQo44P2gG+7pkbj1z7s83RChd0kUHgUo/i2mCYnRgao9wsyA842saoqp9VZrvCczBkFknmitr89pOCUAX/cwZB5pa/9sg7D8tnnSMZ5uyPpw4Xlz2y0HuU/uGk+MeK7asB1kQbBvncy1OTX5L31rNsfQeDnzI320TdhC29qBX8z+ay2eJ7n7/AIfsPUOgi56MAL9L33zeQYx8Vh8/PXcHsuTXNAhkQeWdGnoaUt/LpPzFZV3SCou8I6YZTvS7iycA6ss8onQIJMRTki83iYc+z7kQmQyIqK2PT1gGAhe/bHMhb3xpJTRNE/BK0J3Oc8limGocFfE+lIqwZehfyutweQuBWFdshXk8Qd6Y76sZ0xfevWwIpzhiKojALTPTFQOGZHiCierzbH05rYHFVj8bjChLw8YykfN3RAoxmKnKEl4ZBwxvDEYBMqfGtdleGQQl/f0BqZhGU/9wDEV736HdL0RBEd70rR2zGg2nCcEs3EK4HoLDpDLyu1+jyVyjNA3e7rbvzhgRcSL/9bD+H9TknJx/J8XWaS+6V1qpbNHf2kurfUWqNX11tgL8xPcykZIvZt5zPqPscKPtglepjxnqjIyHkV5Rs36Nz6pkwZHWUwenuboIIZCwztxiPIJj9G4dbE4mpESeeJYn9RRZMc7WVs33pRQx/vOAIClm7tFt/YyWHmSGMi1iymPCWpR7HqJPHWUxVOkj6F5B2zO7uQz5ANERwfuan2HR4qlIr5LWucqHbAKy1uCsPiqS82+GWGhTVhF74kF4rng1Oy7swClrLlLSnUQ3CZS8WwNNyH/xJ5i0zThUImiXAjCVGLe0LSNeaBsZ65iZXSXPn/3tZcR+EXoWQT+iH75+PHmFTzEmPhk+37UDFPUB4P9xoFs7OfDUYvFo8QO/w7yTxRlO/kj+u9nUibP/if05OIGgMYEt382X/vsnpJl9XHS3E0PRBAkI4EzNx4zlr7wdr3J8vbTfnPb1kc7YLY/G8LjIFemwHwdZbWQ+e4nn0YiTn1Ak9SexbJvBdih5j5eY/B1BPaKZzP3cDZnHiu2siEPb6NENrViHcmd76idC8cdTbg5iWF/xH4gDuY6I2ItSeQF02HF9x4QhjyktRhbx48DkC4E4ieQwnAEViaLobD0/TAOXNzpw2iTS/9Vb/zKKI8ZTbTg0Mmexol/d57CXhPtZp9nigbUwgTz5BNQm2admENl7QXUKY0BuPTPrTnkDH197hcBHiFE54Hin5coy+ealKubT9NmJOEdz389joYhLxE3n9Abjj0vTZULVthcnQcA5N0lnShMmueCOG5NHmmU5WEQ0Z4msSBsfQaZ8G3BDuQzANXiMmriMgwDe4czRqJmXCY6aQ8VJKdtpaUuNMYGqQw4PFdYHlm00pcG6uV2KpSXmn4FCrKs+hDdEZKtcULvl9C0BpRmQWIETMYIK0q4XFRYCZckDiPqUMSTV7LWuAjfEwFVCEYu42ffP5u6x/WfKduttzhSXPyIvv/uu2miqw6gyE1KsFQopSxXHf66Z398yuj/aPF3rMpn3z/pEXwfGEJxkEZckA3Hravm5MV8W1B01+fRVqfCQmuptTee4mRDz1JHedYdZaUR+G9Bc8D4YDgErsg1cZhyJWtBsqR5G5pFILYcygdNPwxDK+yljoS/EJKZoyDMP2ZynXB+t8iieMUkegPEOybCHj3r8mxYAMmVYTLsSEz4brfMYfgmQNlx3gkckW2eJMf1ljIq98vA+HPBBhVswuLQV+t1lBDMFlkk1/rmbsl3TArPtPGd8CW0xvtM29kJ79IXBww23nrLxbJL9W+GERw4g5brohZ3WfCDZPuKy/2KZPuAw13/qUxB6PGb22D+oZ5ziwKN8pvrL41zQV+9vvmlz2ceJblURKxjKu9+15T6iFyHAJ0p6Q5lsNec3t+XRX5Z8fpqqqLknke28Etvf0TTae7pWcAFg5KmYvtkHqgnQmuutT3BidrPsdpalKasN65t4yRZt56P0GkvLu8NXff80yG4aoxotCfRnVyRjEf7mWbvLc5QO5ffyxaS61ZQEWgm5gVxk7g3DMDcU3Fbm4I6kObqHPuK2FhpA1Zti0PX6vRN3PTZgFPNSqNzSQi83dJope8661GapCtIpjczDeRjg/D3gue7fZarysNUJ1Z4Xz87WBtgPRotSJZnnS96E+a3KkLKMzlOeIvhMVIaAiilMktwRFY+g/BUGI44ynb2IbgbQ1c00AwoLPlBUKBwpxdIhyOpO3x0LNw2hDJdYCdw7KLrZhaXI94zaQWGZSatQDFg0goojzdpBdzwpGU7CNw9u8bMdiYsN2y/ZjtTEe/s0HD9khACZ4JTzg1OlReEEDBt+J8dV15cDgKwwOAhYNTVijj2gusBcLMD25pUP9cNIeJ5IJF+PPfbPT9ItOcHlGJ2RNnOlNCkzILi296ht/DNbOzZCZL99h6X8WqbJ37VPS08UmqiqEW0ypERLBbhqgn3sM7TNZfxXKdEYzFoykXh7Y4Ln0OSZ0uD0UuTG0DF8vx00wmKsscAdf2uE5QgKc4yEq+z3bmRfXj99uXNzetXQXxz3tmBVtPGKIxCzqjigx0pE66qdQ62Fqqthex+hvnw2slPp3vwrGXk7vNv3/vXTEs86DQvwi9GGD1cy6HfbWYf+V9+6mNvHJOzsTZeyX624HKcjSv4G/uZJliqdZ7FWAWSFSvV8IeOl6bE1Lo6YIl8tJfLvekbrlRckLWJZ0r4blYP7xu+Kx28TQBDfM5VcCmV0azo3lIZzQdPSjUrutvbj/OBW/xh4VSAvZtuwuLDUrX2WuVkXcfb4YcceciIoClhdU9El1+WZHswGyGBOpd4R6DBgpZK3WDuOvLoXNIAA5bHpEmxV/E02jiMYRW8mphCEOsowa1qGydou4KvpnGJaJKQHU7gX4iyKMljgvZxfImkjBFRUUeOCGyVM9x2i/VhruH3PMkDIite386JyqzaDlQTX1XnwFZ6VTrwZbs1y5sRyVO3kGzezZGr8+ASHbn0by6YvJDNupTTrjGLWZGv71WGSpCTyhIW6k4TAkU34K5wNs3HBdrk0R1R59SBDaZBbajqTWjQ6VqwwblDH3IZX0L63iUSnKsOtXjMKt1Y6jhnmRNN6tp/DXbx/jPNjeVaZBEkVA9fkgyb8rmbI1QRxoG8ApHL/fpA6G7v388TktSKkwuIIw/x8uTMApfP8ZMAHNsEHSvyQGXgwWOSF80lgktFk8RQ12uAcXXx/YsjkZfouxeMP/frcUFTLI5rvN1SRpU/RW+C4BXkMmtpm3RwEyFbNmCyfIOKXZCOhTAhrGFPCpIaUIjt3JEMZTAJ6AOq9FmXJzHaEJRn0LaJH/w+3mVMOaj8C5QRUC6gJVDlp9eI22K1b8URnYgnw4Iwq6zgTm0O/IYeax2uGefJyYFwPiKPeqhex0UbJs79DvHlXBlBluYuedZQvxaWYTdfjXPeJ+Uy39e9JQ+T1hnC+k6Q0QIewLtNDVfRbCCP9hssq7UzrtzvAtG8b22kbKNORvE1m80sB9TIGBvrW0GLxgX8um+OjPp1X+sL/TWq8BRdV4rPqlVPUs8U3becPjI4w3bzfFw/VpoAdnGF2mnBnd11/Z7srqS/ATJIpTbdHKjaU2ZhFrpAZiSiW0pi+wQG6w0LbfdIGusDljL04eXbwLiovFvZ9gCz6024LFviHezPKtayipm9ypMYXQCD513VCh8LZKv0WLGJO0H/mnOFVwKnjwD5w8u3E/Hm0vcQ2e2z6XX59EWn1KouFtgvtly4ulr2+H+O8E5rd1Vr1K3HaQYo9Ya9+N8DI+RZd1mYk+wT0zubs/7qMFSRdD1nfE2lKooiqURYSh5RuPZDoWifYm3Ecs9ztkUuDnKew20fxysoC3quDfSzIATaxqFY6FVn65TVolO6N5GGbDZS+HVqCeS/lKCBvfW9uyTmwdjPi9q8t7UEXnrBodbwCPhwQkBOxmNIvllQeCzwzXEdrA97duhg7oxZ+il+WBstM6tye4sfCucmHG/2OtF1iEH907W1GtK5Llq2yrHZXxZFscOuobis6/t08VZLqvOgPSu6YgK7cGlTpaq7zruP9LE/WXU1oetTHopcnh99bfub8pb2fWbEXirH8wgaLTCWCbjPPw04nTYNwdE8xoGoJ6B2Bg6W/SOtlknr5FGOvCbaQadc4WypusJPMpRhJc5kJUdpvN6R+e8SOzhx0xSz2O/MBK/bKuaRXOl7/Fpfvh7Lh1C3X0DQSCPrXobVEWCFzzuCV3rpSethqiBu3t6wWS0DBiIzrChOesZyqjPMXMXLfgGWK7qn5DBI3gXMzkWzyMIYjRU++BhIzYIYi/OsEz8cYpavc0UT+ht4SNYCq3C0+3Q30sc9MYUvS1ZIswo7hKxhsAa3yay5/JXuUtb4MDwGwJgzMbRZyDnsHwqXhCfZerNbGxfyXC+tfv80yojQmpbESFIWkaKVLhEQYw4VzULVp3dErfd0gZdHfQ5qwoHL++zlxz9Wao+7B4bw7KRR7C66RYumx/GRR6ZBkfWWl/2iup0GJXxBbHHxMyF0/AY9PQTdkLM9L1SaC5EBJ77FtVQMvJvFpiduMLDZX+Dftl9h+sHwbIFIhJqn3+orztqvyXUo8oCzxaZLEze25MB9B2hmn6NyURtApUXTCcZWC5/vWQZSk+JcQC+Roq2/6diCId20mER0IUkUwHW/gWqRNMJrfUSb83n29QRUv3Vd62X18Rh4l31QYh7dwVONi+V4Bb8IBHKYP9qExEY0h/nbqt3QxBvQ4QvWKLCgMZEa12WuCMLMPJdTaLCP8IbnypL9RiKRM2YLOCpMWaXKf7A+m/vkKVd0K7SCVuclfTf4im6u0fPZCFeGoA1swRKRBxLlttGxXuvNcYTCfsmMCYGvtK0NCYH2cdaKUOOznEJNh+aN/LwqWBvKgWfYbI3jWIT7t5zI+/oGFfQD46a/zdafojJmfQxMrBksOFfr7eh2bz3Y4MceVPYuiZMEVsmWJqTM//ev1hrAwxLY3A23RAQba4/vCdoQwtzyRVygaI/ZrrihwB8oZ4E4KRxIvcdC4Ga8d19waop3BCh6HvFrLTVGK70POYPOIfryPIu+uyOCkWSG5KBqYs8gKdVDSVw/FIMHdfRDtYgVje5mK4d08wkBvWEIbNuHx5cZ7FMDPi2eS7qaUti/zS07Q9aIMGA3SiKegMCsmCBIsGOCAe1iC6yPu30XPb+wPhbrCVL2Qk5MQVb/EoRnPI+NP5lfrs882/WNQaWB3jWo8JT3D+uUe0VteXigVuM/a3XPxhvNVN6h62/fz3N4CDJfS5CXUZSneQJnt6Yr3a0QOjvQbXHq+y4PIaCo08GAZjBIqs08J4CuBK57Lve9AGdo3msa1EFpzcnYRfsC0gt9lGydZ97IuKfYJnxorO6MSSYIeGN+hA6oU7fyKKRQQHSJDWS6sn5pO2ga6qeyhTR6RdgXsIusnIcszkffR8OwyjxNsfCn5c5yFmH2pW4qfdhX/OBf6OaC88lNwpexy7xpBmGD/7E2Wmt9e8AWL6hQKw6K2p9khC7iud1imlC2k0oQfOeVJmWK7FpLo0dSEWdRDhOqGZAYNYe/nHP0l1LcLkU+qse1VZ7+70PJPhP0HxCzwh7rlyQsXnsc0qjLWz0AUlMehMV+SpXJEOocSIBRNxaeqywPd0fyL44JUAJ8KhU11Lq1gqpI/DtkmlBay7Xw5qf1i/1U/QF05tEdgboEE7bOxz2xwBJ8JEIiSCqlW9p2lfftJHuQLLNs0CdGf80d1hIk2tF7wlCecYaokgGveRWmqUuxEMrrEpg94QHwJaJbRJWtEXNpXkrL5+MikAsGF1NBIpUcgSFpNdte8IUN3v2K2psF+gHPbDM+N5nXCHjNMUty7Dq8p0Lli7Qxq73mgGi6GlTu8gSHu07P9t6lseAkQTYECWDVAvFcplt1kZW4vfOZ4A1JpnoWJ9kO11YHab494M719NUoyjZa7V+zLS/qRGywNLE8e6Uy+eO335rQcBMsEfH0W8J2lJFvBdkSQVhEvsUZ/db8fS1IyhVZ44yu779f/f6Hb/+3b2PoB3J8YZ4yXhxoTF5UymWeGlTgIiPm2tSuDVdUez8fvbUznMuWykMz7KlmNKth5AkRaWOy4SRnABUOXGmjkopn2VlEZTkNQrVsR/cSE5yzXaLqMaQmqTBroVhrb8+l8hpTfhygtb1YTg/NLqRhuLQ1nQmsPEXX2RDKycZt8Ibc0S1kejj/z5gmJuU3FL6U0JQOzns6oTyrlRuwC+SzBerETVDCH25vXfTtJO07affO4FKrxQ0XdW+kLcrRYem37BQ0ZPGgIS+7A6G/DYCuEA496bd5Tp74T9LcPKdPfYofHmHi3+KHskROp7X9dKa6WT145sNw7u3UkGuRj0rUgYuTvKbvDImZzwSqdfYWR3OWJrNAC9LAKmAv+Ivq+vfkKQ7vaxbxVJ/ZdiZssHWoAFD/Dn6s95BWnpgbGNAM745YdBuwPbt6AjLLsUSYYSjFFsZIhOCtOxKazZ415PWlcTgk+4Ez2NjdmCqu5DPtmPe52vF/xB3D3cCe7I4pED6dHTMc0vl2TDem8ojZtHp0n/2cKZNkax6bdo7sl7ON5jp45lsPXw+cZQ6cc+6fwKnzD7h/5jqG5t8/X4+ficePS/4UPDvQ3zBcnIoE0OKXgSTQW2/2Z/Gt1cBy3SPyQqsw0fDc0HZWZx2XlQJJMKSLEiyggagTxOvq7wOyqH0GpTzOk6HlyoePvwnwJBHYhx5Tl2rVKDMRukx3LLq6BFy9K3ORDrKted9nY0rjDpamxfO8jE1lbhr7nhBj8nCKE6VJ4HwF203VybAnJBwE6Dtk+w45eA31ufrREudGkRBvU9BAyh0nGjzVkoS0wy0WgWc4jYYJ/SFXwRpNvVBnsxmqkQmAWQ+gx2qQZAdjPdsioLaqqmXbD8xWH3kq5pindLyD6hG3XzOt2nHoi2oo0x6KBh46v+qNE+F91Rtf9UYv/nF6A3098b/u3K879wvcucWt4MTKwo3vP4FOUq45bKCyFhGy3i98Dn6Wqp/l3+/9LZMnRGr851/fQtzo6Jhn76j7Rj4AkAPlFQBqxZCt9gRnK8qov7k/OsO2+YXgDGkEtZ2ix9Cvk6qDSPHD444hxQ/Th8A4e/ypeMfZixmmw43lMWekGMrwWSlvPTwiUq7ShEd3OPGbUJNaBF9vHXGkaZsabVZo3oMA3F/y1ONg3aQyqbUqi2k04iY4REtbmqiJL4QFPZY9WkTkFhbf07VFn5AF96XZbs4s7rlgoRlN+kkmOzDt0WJ/v0+1UFcZ54HMoInmjjVrNd1JG5cn4W3hgzRQSu+TuA2tPW9hfKgePhucTtQ3pWjAkmwOKvAR2/PKvwSrgDOC754I4huC74ZCXj8dQQPsdJi0g9WSzw+77EYd1lFHnnfkO52w5/5vTfjrrnsKiL/uuqe262Qu7uk9D2cUn7Dxbi3tr3vvKSD+uvcee+8FLeBdtLIRT+04sslW8J+vUEF0WnoWT2KHq8sLeKI5XHJAu2iqYgjdFdGQSR8AtFBAk1dWD5OaFbSw1I1B9M8td+9e3EpP7AI6ZRP+TBNXizpQnm9QeuyjeBwKqYRaCZ0LQNHU56womjF+GWExZbu1wvKkDMbPPoKfXUS3RBjZPyD9hyql6ibtdoJKItSai7hVxGpq8v81kERtkpUgHC6o8m+c8fxufOQKm5XnYs5UzVugt0I/c4HIA06zRA8oVy9SnGXNIhzFvqQpWVO2/jUnOVnN1mbnoy3VDWRba1HusWgHmY5YfEDALp6Bq8mEV/kndtL7wkeRE0S3psQ3leArtEwMPr+r0Dhs5xLznlQ8wICkwdq/8lS7BNYJC+8jeEmxIk0QLnhcRdXg+dcqCoXN60+it2MixL2x4IYfGh4CjtBn/aWK+qp0SDLNfgh0hsI2lP91ySIUPp4QHJ/WFOnKgQGxGHoVYN6k8RGPTFueJPxAhH2imM1iry9KW2gTuk7lUUSk3OYJ+oC3Cn24uUKC/JoTOd6ob4JfWeLBUzVUDTFIUAMfTK3HICtoJ1gRFs1mlyFLDymOCI72KCNENPpqTxaspb3C90T4Cz8MSJ0Nk+2riDiRbIofaJo3Y05OJ0tZJ9mhy6sgKBVmMRbxK3JPcecVKYg4qGlQUJ+3j2KSbOfTUZrajBpqxgJUekPktkpmWYbS9f1MSe1Q7pAyZVu+GiHwIdgQjYuS17YOoVX2DVwBOJA7qQ25wYg8REwzyPOPyW8kzRoUByaJYfuNrNP2chckul/hTN9f7PHUUWhrUh3q8ng0bIpj0GCFjpl7LF0ACwn1xojuVxvM4gNVe08p9F6FNxgl3Dkr1SIqMKnUOAi911e9C6fmEGfJ8XkYdXa3WxRwIc/pmP2WM2HxskvDNwiwQOsrQzaPzhrCJ7AopL39X9htD8JdoY/6M9DxXX8oZzHZUmaKf0rKdonTxc56CbVw1KN89EU0/xhD17WR+n2ASiS1YsZuUJV272e9QhKq9kS4I4KLwl5qGyyKi5Nitj8WMT2VOx5lUZJDkFylUS50xtWSqnR/8GzFPWZxUi9dMMXY2ZHgLSasTmpf9txYem4rNcGewl+ezt/E1k1GYL9+GoY8i/EJGOzXT8NgaolPxmC/fiIGnmZYEMxiaFg+GUudzFyYTlwpLULjcXnpkoeMCjLCHvBSOWAV7UPFpR0F61jb8QSDy9C51v4Mvwg418wfywIM/uIKU51uBRZ0euUF8pDd45NcZy0KUzRylMYJZTM7Si3RwlVq5KYt/Z3AqW1Aom23dpD6nuDs1JOvwW5vEhDKQ488ZNwG8BsZnnqsPRUh+o/NyItrSpgCFhu8I9VYBfNOOqmO8BpKrLfvBqc/mtsA5z9fmSruKM6NZYP4vba/6JaAWciL5ImpT+psqRAD9/PKIacMvesrq75eKgq/FYb/5yswovdwSWwXtKoIiDyo9S5a+6pp9yKbIQofvSMPqho+caBJYnGba8EvBGcvk4RH6D/MNsOplmJ4SFGWr7cCd0d8nCDrny3tWkNgl2/056uuOlJLbac3WKr2bqq15ks5o4rDPzMiKPesiacRpQI/V5qJXcgNFVGMiRalrTpGVA3O9PnNUa/8x8AOqbWxmLtnAg1RcGjIdIwZ2wBlh+rRpYuL+y1++McV9ihp4/sQ1/mk/dK8wP0TStzvbIBAtLksN0hctcbapWk7Zjyb+hjnG6hPaV/9DeMvqzOEGYtvHOhC5qnW9P/Xw8PtUaINSfjhefgQdTQeYSh/pRjm6fYoLztGtIL7zFoeJfp38580Tgj6V/vfLJcdHQekwlGz1eg5xmZ64jorBlAgrK0urLi4NG3n9kSSkauy+uACt7bHmDfX79cAcM3W3t/2bHA7fG1IzbrLK3SnXs9SoLFsl2fLIzyjW0EWSX4tIQCHLlXwdxKdpS6rnTISO55Pr2WIWeQl0AtyTxiiRojxc6T2gue7vXtMcHfs8EAKUk9gMFr9MK7QkSgzHnQhcUoQlshcDfGG35OOU0Nr4EcbB2XAH8kMs46Vo2+V94+KknH2okBaBE7uBM72FN7ZCg+v/VXAx+u+EQ6i9PpuSz7odO+tJOL+tMDHFoUpjkcbAu09QCY5Hl8bgoapm6I9zgR/OFZm6JeXN/o3gQmyfy3np8cLvwvNWcl4xJSV/BuNh0JzeWqbzz8TRgROPO+qDogLcTmx6XNBxjvf4yOry6PQA7ALwZq1vB3TswdM+RpzGvaxDwTLTWd7/aqHpcht3sCJjL3EFZZ3p06ml7AJdFtJ4vf9j5fXlY1vM4S1NjexIn0LxlZhCeWoBuGc0lHRBMdaR26tbh50DrdFTtCFNlS+eUvSFD+s3/70jY1miTi7J8K2TYZPPu8ZYw7e7bW/4tx4UTv8lbr9GWFoSxMii2DO1sOFF1nE00yEno9HXDBG3h82WdhqHumH9pkkA7zIrS5tdRAn5iA2ubVbXC3KTmBFgi8qs3Et1xBj3vzWpVeRJ+ytm+1w1l3sqxBAI5xzahef1SbDPj/6DOyKhdSTCzH9Pu0Op3KphhQjOvUqPfh2Pw6LlElvrsjp8rm9fTMB17JymoZpQjfaAYjcyTse07J4xmHZYxGv5wPkt4pdRlu4JPiJFqzkpkVReyCzkC8GsBD9jGZzlbbsOyfzLrd3KGVrvPreChI+judj07VwT+NSum5ksD503+RMMGFWISNibskBs+5Am5mZLTNX/kmTwxsPPIUJO+N0nW2yhugIzhRptV5Eo8z2ibb6HTmuO6dvyHCHD9nLus+anpuxVWVrQXJJVv4W+GhYVrD5abTCPwlo4Q3A0d3XNTEDY20PXnHGPvguxsUtC0d7Eq8Tzu/yDjfMABuwm8U6pR5P9DQG3ar/t4Ru1ilJ1+C/O9WmGnkgnOvwXt7soXHiUxG9qqFbJfQUZJKqRm/004q3xegMryp+G0NhlfuN9mm1ioAeuvh0c4levf/bu0v07v2bny7R25fX7z5eIi7Mf13cU/x8tVr1uZkPhO72/umbUFQHLt+GJLrYcuHUtHwOyMzrZO0D5le93vCYH1gwj3MqUEcUXZQvD89NFSiH+9IECBYpqWpPQlhQ4UY/7HlCHIlLCAKAcugmZqxKoviKFcMAzztnhKm1HrhXFpMyp68cXSCCLr77d2dzXaLv/70YyO//3cCEufzDv5vL9LcJlYowIvqm0L3yBV7bJgEvH9zQxXcgzC0VUiHKpMIsIpfoe2RWmZ5cExImOeKsD6weKI3Iet5yCreGKvBAFz9/eP/u4+t3rwzuQuA/vbz6i/ttIXouEGZH88Vy2wyWPWVneyhzgRk9iHju7x+zHCTNsRtTgqVaR3vMAgbBpCX6rtJmAjRMpYm7Zog+3bz4D63I9Rzr/3/xH59ukBKYSapqNf+8mNVecKVmOYTbdtDA51uHoUKoodhMVoxM+AESzFqUqLSRRLDSGXcKd1t+R3+GMvOp3s1rDvZZ/Ijupxlep9W3RLgYIFSWMHwvXVK+FgIjhxYte8OSMFoQjSAvYiozrKI9ZTtzBtkzwR5BYGwgQTIuoK5F+/hR9ZJ2gK86BRWEfYtKaL0Tr2YLjLh+5U4+CL351kKiW8OKsp2eXsLwJukFN+HpsNNQQ2d4vbnK0zzBeulWZmicA14QJegirXretdZ0iQwpXl/jFsaQlzCakpU/x+NUxC6rw+JELnoklSYZs9Ct33/3+x88hfK868p+bP5FFRO2zMR9cFVWDAe0IRHkuJizJhdUHbWIIiI6V5j5+RfQOR+vboqynBVyGKWQXB8jFWUvrKSg5KPW/yJPPDG5VbK/fPzYQ3evVElYnx1YZLRJOihiiKWKz/DYaRiVS8p3WWhpan/lUvNTLZZjiR+ogpDnYt9hKemODdp0VhDLvhyaw5lvG2IfAI8I0S5wPwc0uxUsgxW65WnRhirjUtJNQhAsO4mwID3uNr1sCRbJESkiUspM9CW4CUx5SEqYukQbsuXCWHJu5e6xXt/a1gk7Ov/FVEMFqE2iwa+YP4OmCwcGFR+LEihFEDwqyy/cY0F5LtEGV0qpNUCF97Ybtj4ZzI4NGxeopmudtXOmE60KtMoczjfGwVozuw22tJdqjz3WY3v5SR6ogYEP+AhiHyC8clZXi+2nd4FSaoRBKjURkOBg17ASR0il5F5SxSFdWhID1aZxmHiJKls4GUxsnCSOWDlJWZJLuDNXjBkjLsS4fwNhKXlEIXlD62CEUYaFolGe4MJ3dSHzaI+wAeiY7jHUw2N+AZg7S5+nCy0UpFb+PFZsWvOnXFtgFvhqxdWtOJLgTKsz88fTUrhPh9+OpA0N49HDxUIQTQlHr6YOmMYy46xVB2IG2/gsCsyAL2yDapFBU7yuqb9jXMuVqaASmMktERLhDYdw7qJjutEONrcEGuKurLKzH/VkeiHoPaAtFTiArHrqt0/+BR0EVW5EiLPKYW1jnNDFgbNvFNoQU/yCxE2XjIb4PEB+i2mSC4JwliWg27c0UXrYNg+1tSCexHWwmOlh90HnMv54dTNEKfdc40a/p1V/Pljkw65yrSuVl2b/NUtfrsAF9YwDOhTtSXQHD7HPhoQEKuU7h84ZSv39w9La3ipONz1gF3z/8IAiHnddTKsgf/8oIH8/DuQfHgXkH8aB/OFRQP4wDuQfHwXkH8eBhAPnEWCag04DlegiE1zxiCfmHPPpYK81MjbUcrAxspz7qLRGXEl39wTw6GHg1TbogyFNqrw2xM0Gyby5AGMf0BhWS92Z5rkSjQi2GnIrcvMw/kLUOY7+LKBZxlGZQuCorVNGDr5RDQQ+Y6zbmFvdcNBeLQW21GAdNU9cmTfWCPXELAwUko07sj5VWIZ7ghO1NyNdofdQVbTXs/rp3V8M5v9AObtj/BDyTV6/u3YfpIwqihP6W7MXWwXe+6u/vP7wQX/aXoDgUAl8+s0P7/9iaQN6lGEpTZ35BB+JQD9cIsZRnul5h99IpIhU+ipkXymDlD++//QRKBtK37/4ocdr++aHq/fvUOMrFa9VJvgmIeklXFb8tRnaP8+uSgKCbHNJ4mfoQkUZElI9B6P/HUeC54roS92eS/UMXdAozfx3QoTe/KlHZn8KfrEhkj+hi9vbN8/7xPKnD7c3qPY1yu5xQuPyovcC1W2IEKl/64H+bx1fvKp+UWsACMvASXJsk6nNEfrhux/A6umdrJhKvaZecPbih+9+CGJpiPHf0IU2sb69ffvxpleY/9YQ5r+dIMzbj7d1UnUXS10IYAVWbeKw+cXj0ZVkBiiuNwDyjy/+DRhcIrqt9BMdcO239fUWQPaxdFOAc50qpDi/0/txSxmV+4CqHXA1h4+v9FeXOQ0+GidQnqjwiTAYZme/uFlqcplOegBriHmLd4SpbunNmAIH4Ja9dMDAzSKzsjjsaUKa4UF5NmRD+I/s+dAWAXFlEJz/ob0aleulWXmRK0k5H2YtShdtiD7b9dgu9VViD+Z2q7GpHWo9mLdKGzQfjvbuoavHRjTPq9ZB7DUWT4w5jLHCYa9183m3797dqC2F5ks/Da62Vghan2gGiAfZUFwiIHDYNbdjksYEYROiNsQj7J+3mQAOnUP3olprneSlaB87Yn3k1N4p3PFtn5OHjLy77NtMA2+86Rr9hQUpYkVTgpkp4guthchR/9VL1Jw0RwgAjzBzL2CekIeE4xhtcIJZFNy/qJGI5vUtnEcUhn1H/oBf8dgSPi0jb+kbaiAQHZ2hYmDr2dnarKZu07YssloKZ8D0h+LY0YAVsPigSAoBOYW6HzOwzdHcbp7AfJnBwJJ3qGA8MORyUOji6ubTtz/9zfidBsVZOMX3+GNsOMvLztlufL1x0dWihnX8C27nhQ6/T+ZIhiGFq+lVkXgSddA8Vx2TFqjpD9Wu4cp+y83EzCUaqj8Vjy6MzPp1L1L8AP9+3ogssDkcag9h/dugdV6EkTpC2pT/Dl24U53x4Tu5N7rgJAno267t5W1FMDni3PMfrh6qeU4viqF+/HgTqoSqdUXaKlO7G9N0rPJ4316ao4rWtuPmRyfkolp8UrXkaeVjXTVM9+G20qb49bj700d3uBi6HT1jU6L2fL5e2yVnQ7hdhqc4nnnsV/ansc3wEQzg2oA7wsCmT7U1VJ7eXLvguIDh3PJRziF283Djo27dqD+ipmO4OPb3Agci8/yYCorvuEJbnreKaIwE7QFwpkXaminH9++ytppGL1L9fVfnmVTX07A6AEGHyWggo8t527Pk7zzhdxRXjpP/NL8JnCj2r4M7XI46akowfhkEx2+/CHlGmDLppqRotXhPcfEh8NkGj6oqciujO7y9q0roL/rfAfnA38b2//TJwjEdIYnQ6oo4k3lKRHM5jV5kIUJTSsdvBL+by0eI0E9ATRugABD9WZNA15WK6Ht8T0zCDeTUgBfnwn4Nukv7XozNXdjSBFit2NwTLj7TXeAWNw00EK/yx3HsKcGM5rnxWBxNHt4JD6QID1DwzVl91c1I8Yz6644P4PVRf7l+R/QfplgoGkwt7st7vnHf7h0M327rB8twJsXCNTT0xYaXuO07ht4M3QhS0gpxN/wVeei0oKJcKp6WMDQh46KWSlR3m5cteJhXQStqfGY5KNQCzbelIExqUkdIZP0RZi6V9dLmarpofD0TEDVyT5hzM4dW2QlKZ+B+vzKgrl+hCyM4e4a7lyAaP+/XPXt++quyBVIjFWSYknRDRLtwzGiulCkimKmjXNH+lkF113YphNEHrI/IlMO1Q2tMWakuCMLSLWK7dvSesBL02KORkUM7jR7N8UIMhJ3ec8m9IZgVsSXxMoDeA+F+QBOOmgnzWZ4+Whs/CYOmhESHJMMlvpv9HDjeAGFEY3RhDNSurlsyjAALgZsX2qEQKKwUTR7RuKOjliBZQiNf+tnpOfJA2S+GsDyYPLJo3Qdrw3lCvPESA5Bds5hGGOpGbZ0ATL2f8sVa7y3KXmgw7iOK6PMLXVzffhgykqDtgWYQ7uvC3DBn/JaYUj6D9QHYt6vZ7SMg6zWG2sznLXY21OY2S3G+WkPtW5SHm//+dMJo++5MhdeBbjCruR3gFyG/A/xxrONhqGOmwIJO90ZIhWtdLUcbSXaoQAfCNETOXsAzS6PhGppoPUVJLhUR6zyffmdtz/unT2Vtq9cJlopGkmAR7R0/pDgyvZHtCG1kt/TvxHn3oGXpyiE2XjGrfOeVSpOvpu7ne0+E1MrRWyLndASWfKsRHGplTaz4PRE4SSAkav4psNSBWWAKbIHMuexBy9hS9e0iNKRrb6tdeDeoAcD0z9tq8zTn1rXbqLF4fGnzQ/K29gRnwRZx9YF05Dr2BXkMHC8qajKUDeQ0wLKLnAnT+ev/6i5vAYPKu8Jyzj2ql82GeJTp0QwZjCCSxoSptSRqLelv4Ticcw8KHvyLgckMRwTxKMozaozRFOv/MeNtNs9D166ohJ6sS2MTSrJLoWYUVKBVuBoe7xMNeTCeiicjkdqG5Vt09a//6vpKow3PGUTP/Se+x7dArfhbihnehdd2ofuWuX+W5YGH6pbiPDS9LtMlapOUWwbsGxe92tTYRS0xkTMIiNFrjiYJbTXJRJ5H+jUUoZrrMIF3VxszXS+zYZX3yGMF3+8Wkm0UmVqbJHYhOyYqv4ZaXhaFo8qYO8oQRn98YTNuYXAHymJ+CK8SfbwsPozUpKbOPIxG+M5CK8UE9ExbI8YuW0OxgKCIvSEfA4X8F3J8YYLQMkxFNXmjDMeASJh6rL1R4r6Kb1SZj8OObt+20SMUfioC3NvjCIOLqXS3lDNAtC8lFaa1MnMdmCtP4bauwrpSVHcmf8K7JtAKC5TimLi4cZeJ8Y4rq9Q3gh8kERJSDiRhMUrzRNEsIUhS/Z+YEQ4LraSoeLlt8oQq+HBRB5Toy7FCHGrb22V4tBkNL7TZRaTCm4TKfa38Y+CssO3wZt36fyMbdGvoTtz3c9YVqv5UkUHQZpZgyhR5UIB84jUjtJHRchXzDmTjktyrK6cy9Z2yna2NcvWnJVzCInHM9PmlMd9+MdK9HSvewmS/1/on4TxbxyRpvRNMVj/6EALaSNNGQBtFOImseQB1dYqXzQ1h0T7F4o6y3crrpctPctPZMhBm7k70yH31dc2K4EvydflPhsknz1vrQWotSzTgvBlkPaA5qhuVHaWjrubSTYABE71bYgMxucLZeq4oeK+n+tu6jUY0o8JuGpAl5y6jp4n3HEdLy9StgnMvQvmGCEaMh6Z4FSp+GXoZKj5Q2Uv98bn+ByTv41AVFhoTuFuNz7TuLru0tAgyHte8QiUfN12hJyac0dMjqitye3lz7Szrtjqacp7ZfbrqiCibpFZtsFTMTa4z8SuEJgpBJM9FNKN6t7oC+h94aDcByHyzJIYQ+RaMiAd6pZ0CAAFZdGFf+S6BKTiKLwvpPO/EdU/EZn5YcEFokW6tUH27nslADXkcOgFo05VFx5XMm89LU2EUzVAs6UtXosP8mxrPWEojwa3/dBDAOSXl5qhAOFFom1xfTrygvO4w88v1TLDRnkqFdwKnyACRLU1tEzZO09TlwVDS61LUnSk5qG4DC7UOdpOM2yZxj4BuoT9Zi2AhjSyfy869uvlUfzMdaer6mt12A+qiWhskD1Te6CPex6DKxGuV19l02GxouN2GTNqzXXRa6ldcECt6hplXhbTQYsa1WJY2h82iIHEPwwIWj5fo6u1fWKOHoQWMJcLVXoKuzpI5aHhMEE4SHmEF0ctXN586x2sKyH6JA47JlrKijqp7Zy6V4YX+TVAoiG5RzuC7JPabIgnfzXYFf8N3ErJ5R6qkohbfImrpqTyfg3SKoaIIZziiCoIl/NQLvWo/+Y8vHbOSh0umlRpfxf0PIxVQ7MOFQlnna+lpJ3zbEq5Tn8tfUu6T4HBKWFtBlm5YZFBpRkMABdbl/IBgaXgAVUL3uBheEeirokaeFegV4jkM6qclkLQS/vVFWpe1+LVxBmZgCaAvwcYcMuwTzEwX8hm0NKtCEh356v8IO+XD7W33PnGADxyeZ9u5nOgfSh5/M8OEHK1BcsnwjmxxniwSdVS+8mfQn97Ppwzs+zsXZ8IDvIKoit3DudoOv631Pnr+M9wrPnCu0JYmRB6lIunoK8Y/h8njl1LVCP9nv4n5JWTt78e7kZ3hpvHJc8eoBTz9rm9AHYw+7kn1PdaWyCjqbqGIJ4kJBzV/KYoe7wgjAtvKti7TwEbJ1zjYmt58W+FT+cDwR97wJTgg6U75XkH8v2t4HHERhztIV1oQmyiwPZaQiyJEY/a73jyAnsJpc6mNPUCKWzcVUq0tDNZ64O14Sxmw9D46sNC7QXNCJSf9u+bKqyJL8JmAQbnPblzlTVy2DJ/wW28njLeGlF02la6upmpHCIEgWDZKTUwE8AEojeWvmc3B/eMxI/U6JWGZK9zq4xta7j0iN5Ra/cHDIM67GSNBsK8PwWxLHRhQzrolv1Rg5zucFnPezRPiL+ZlbHL/KLM53EYFH7AszyC/tW5DQNY2KHM+UH+1UZ5VgXTH48yb726bZcSEKbqlJr+9BOKJPyie3UmyXSeU+ZviTQPz4Q0SJBNEajQ2OCqkECi758k9idcejEvpBcfTJ5cuDYEzOv/KeXlzXcQI29XTMV13tFUY9kTemuIAxvMqD1ZRHh1Ml9uvjvII0c9foKKbd9V3e4o9X4nYAU/h12Cdr8E6gZ+5g3UgS+bLjtP5+mzn+/n6bNf4me/Z7uu7TAPw13cZP/Cv7zId7zKMKL1uZtPXItzs/x9h8X2wPRs6aBX+ZehGuPCh/OEhxKfw1vxjT8hHgZks+sQ9iTn56J2TwvX89RHU/AyU5s9f3z9HCujr02f50xLOP8OrZ2kDhGIsm6DOERxbonoaYbGV/uqB0NjCpslZ0IMzRW/TVFuAC4U5h8+EfgZ9TNDAHY6GukiG7HQ0zpVynYLFO/7UQANPDvTPLMYBZwsao+z+CUXoP4GKy2qtHeMpPuyMx1+kC/vrjdT8fL2Rlj9f0oR8cTfSf4o3oyfyStKC9UTzTcZkM/+zZTDrg7VIL5HN/JJhqcszv5J9fRBqwH6q++prHtesm21wMteXUdplcuBM+yAucAUaCbVKaYYlEUJdJZft2128+wbQHESXpi6GA4zQhY2Wv0QHTBX8hyIipQx3p/AR3OroXaI8qQdYiRCY+OVbC9jSt6CwD4gyRXbebnIjwRg+AQ9fR3x1FcxJ8/c3M0PookB1BfG4etKuBJb7N5xnP+Hojm+3l+i1EHBvvsmT5BIV/2n/3p5a/aN1gp19yplmlGYJUSS+LCVxhRnj6kPOLk2vs0v0/v3bv9AkIfFzO/xAce4R1nHfLjH6OWQVnvr0W6/4A1wMx45pd/XUzoFIFLXv/PzqUuqyn3twZYJEWhH8iJTIfVppNPQCzECBdoEfgG8puZ81cstMY8j06xxin904SgTWLjBmRe/Lj5vBx8ddTlvZmcjvM4xJlvBjemI6W8WqKQnOYtbMGxL9Fy/OFo8y+sfjhO468CexN1x8p365sKDp52wFq/w4HJcppaxiImkzKa8K8iST5FVlqsrKx4ZjifpCZiQK22/9D/pzYSzfOQLzVrl7s/PBqvAaACyLvXlVs4MyfNqAnnhg/pz3n+6bxUn2M8SGVy8V6EKbDZem/LU2fnN2x/iBhfdNzmS0J3HevUhPuv8AyhqfLmU4p1Fd8QH0GLIhj8fQ4Wljqupx6DZj3YvzYtZ1gal42z5fVH5F5o9lKb0LOYCG1iR8XOQWbXdcgv9VGM02d0u18WrNTcY9WSytCVkUDngSm9ExT/fZnfrTq1u/Hm4mamTXN15mey7VehmOmnSI7chDeBxje1hOe4hc0J/ZgGkdmh+cQ/OGsJiy3Wq1murHnBPdaXaHtQY6bNA5sRbcfHgv22ibNzMy1/XZErQZKk/4/lwFGrxAL3hxrfIP36DnSBI8od1jrbBNcVPNiEAfzD9uPQlXQ+/Uj4WrW4PMh0prj7HY+Aba2iwlNFv5AvLJLSfXpLMEBw97gieJ535cODjxhnTptrmkuM2T5Oi49UqzeraSbZ7Mp9Ycxaev12pIg4rNX3cmOHc97PWcFYVmihI56IJkPNo/h/fsWwurufjPoGlrEimW0CRlu/D2LNd9sTtrSz4kRPQIWrflv+wC6MCV+mfpea5oOlo2NXta011McgXs05hmN7kDgBU6F+K851K3Jmi8Evwyh871BcCg0xRv+WQVVLVfy6C0fr6WQWn/fK2A4iH3Nbbza7GPNuCvxT78wL8W+2hwc2jueZKncz3DGmJP8BL4VwMsaIh8rb5gf75WX/hafcH/ga/VF04btK/mvA/KGUoc/Dyw59f5eqNZMK53/H1aaRp/d58GusWTh4wImhKmcPLf//M7+N3dfYpSHudJsAP8vbuJt5eNF3OocXvM05SkUuGTHKleKt2FsRsf7mI8cCpsHo6XcHj7dBzVVUzht7yBi6SCLsSrsGZw4o2c7l2vo4H4OAXzdTrZ97J+xVNMWZtqp/y7ZT+UJ5C2uzLhO6mw3Fe25hv7q8D+dH8uN2SzNYUkSunryo/ov59JmTz7n8CmrfBGp+/cUwMPG98f3m+jHlkxn3n7C5cdDxqzF38u5vWvHsqO69/v/T3wJ/ja/vOvb9H1+MBl/7j7xj4ADyoL1ocvnB4lcPrN7qZCtZbTqnWSPHVNr4GKu76tTlzipr3NXGvgtWmW0xxnCASq2Y0LzMQ1i3hK2c518QFbiYhVEAXPwy6Z6TDe52rHx8DY0kSRZV5HfrakW1jsAZKSNMLRHni7E+St+13gCCn+Xp4hcs+FWkecbenuRxPF4zlZfKdIFQA6/Rg5ec81CUzZZW09M/Wl+gpa/iiUCR4RKdH1K5eCXU6CwvKuXFteQHmmaEpWkkQz4Sq5w5OgcBy6Yai9ILj1QDAVQ+lRs3TNldXGh0RWci2kVpQ9UCPOGIk0a7mypGaHzTPCqoxMfxMqW5gv9f7KkxhtCIxN+oxLMH4RZwgnif2eRHEutCJiXKQ40QzN6+iIwfvifE8Yuhm5zCM9B9s8cbwQVoqkmSqFYKdLUhYRRE0zsg0hzDxQkrhnDDuiVnsaOOtOmbUK9mc7op6hiKcpZrFEFzBpSHN9bnED1jy7RDG9pzHMXtMCQ27FPovSeA0UzVQqrgdhFrMjLLDq22R64CmVsuVHOH3oW0wTEtth25xHPSkRziVBjKu9XmwHLJFdvqYyBJX6rGnRdd1/zUfNmPV3FeeIJ33zG6Xxatd6UTl9jI05Fa5kl51PuyjNtOohmxNVj5uCYm6P80AEqa4aLvT3Bgyv/WA0w/BkbXh6PDQqh2fG1YNNK1tvQkYQnvFTBrydfcFapoRIMQIgUc7LVvDUdDQ0tejMbir0R89QDoIqRdhjj0YSFrvuVpPGQRVJlzuogLo7URN4T6hA+8Zu90EQRx0npwi6iV4qbs1g4f6b14axQh/1P6hEjKNnKX6gaZ7Cl1u0Ycs7Nb3JFcLWro4RZZHQ9iLYIZrZETFyADKOLUiPDJIZuafmGD6vxIo+pyTltT1mziHFTRnePHPvvFrPu2G23dfugCjNGkHM/1P1jURO1JaWdT+hC6gCsE7xA4zleXll4WzH4031wqJ/8+qn4HUFrs6ux6sbj/2SM5VW/beYXfAOUyBCw28wqEDQuNuHrjYa/8nXG8fTCoNysKcUlUqLqMvLMPiVuBBEHeQkr9YrrPAGS/NK3Gu1uiHNx/+qFNMABPO+j1/xdOPq5PAtip0oMIur0zcAFyjdFVzQAilcE2Ko4SCzJZ0gug+0QMKjO6lVXEoj4SLC/NV6DCrfe9ZpmMrDVYMBiNb70SMm/XEvkqlZ5gGRdw5xwDCRbZpaSF8LXvMbIv0WxtCD4nwBLwW0AXOBGsYZOacMgeFYIRqUy0uxBDdiSf+aE0GJnHvva8HZsm6OxbA97/DMuetLETko5IFE+SAXQcpFaIWdJBws79yi0iy07Sz1JuWHgYJy2JYRlOn5jh0sLO/sZR3A6pOmz5hnkgi1hOQMZXBakQOKeZSn4LgeJDULaxmhOSyWy7ANaAquLCEooKzlNFJGFtHCMjJchsnIXDOWkFFMEjJFRhbRwjICdANl5Dw2S0jJqEsQk7MxCwfRIHEV4BYSWAtVW8GXl4+Tr0iWBMoEv6ex1pMM8Xsi7ik5aDgYZVgoGuUJFubqVyC0PgQ3wzWyVKKUS8hWjYhgroM3tPU2MbrSUC+InXQLw/e7Nd/8fS3pb/66Lz0+hKYLoefK5afeLFvlvy9ihZeFOfBG6v3uliZkWXSUxeThDCyGUPZfa/N0TR5UMHKgn4J1KE38tlRc4N3Cs8Ak0F+nm1XqXy79QGElw4LpCu+ZcpuEnIFh14swDcom0SickbAE1ltByDqhgVCpKYNjedvFOm5owZURIFTB5l0hwaI3k/1t5cNRpdDNaRp+9hCyayYVZhFxlEP2I5ggLT/v1HO+4GoIG4sjSWinxZHwCCdzJqm+0QSNGwtDsRMuVBlM4GaRWqw9xhqW+oIgV4LstJEwu0Fk6Vo+EDqQCR7nUYm4+Wrkg3fAQt/gZ4dn6Z4KL5XzQ0vlybByGUjIPgWXJnoqMMGTRNup87/7F5THQPRi3eDoTmtPFq+3SS73oeU3IRjxlTak8YbnJmTCRUy5rZtLArElxo0GVrfiKKbyzhnt+le0fYBwlhwrmUJbLgo1IJHaY6VJGy3x9uXN/ffOXEGE7SgjTcdh32EIYlmkBiV66aL/DGxrvEvz6tzwDUGXD3fv2nsq15rBANgYQo5AsLIQanCAxu3veSacpxSEarwBVM8SdJHK52bwenzm2c6tFCLRHt/7ExVkpu/reoTwMklXZIXc+n3eWEw/2ddOZV+TvVVaEcIbyZNcEfOKfKmvhZLGxMTE2FiuLfpsl8NnePX5jO8JWMKp/IxUM/Ta/NhbK9oQpWc64kyRB1VG4sRY5Wl4diyH5ebHMjBHrZGrk6STIdTugF8a30gYbYKlWhBqqreL2xOXTcvkslxJGodFXMTYeckqzu/0MCPb9qJ7aOstZVTuOwKDPYbOwAG+rBQ+siGlMAqHLG6OZ3jM4KwaXZAdFjGsjkpUp7WjoUGxjfmuBlJi1haZVeE0oepY9DFyGs53vg5IK/bG26DZaxe1YkRbyE1IQ5RQcCXCgeala2lSFiV5bNV8IdM9gchRCbY/uvIpJC/Rz8XpqLUSwnFsHz2s7nERnb2qZ7nKgA2B5gxChav5v55VVJWzn2qEmVO4PQfe2l/BbI6x2WMdnIdJ4h+K5e5WTzXiadA6qYsFKzgqbdBglHDZ+9b2d54LhpPl7L2SwQtBEhhsobpAIehTBW77+v6G/jOEB1Xrb1njL8sIFtI+kIHN0GkBtijWLUIAA/IrMSPC9DqMR2sgnqbtIGc0uwZSAjOJ7QKwQZNuMdlRuFhzd5J4qbrPwnxb9OAlFvc4CW8h+zUSt31zc421POzNRYChlOywCc+8ePvT8+qo2yP2koXzdOKIwZpeK74ufIryCYwdThk3IjP9XqJABkA3V8VUeWizRJijaSEhVDggUBtVIyGw5jvx6o25pmxtptITXDQH8qvCRDVD0EyNTuIRHOwxOuxpQhCuB5BItCdJS904moYMZfVvURbTCCtNy92qmWkloc0EjPYE3x/NF/z7gePYRK/pc0pr020u1J4IFFO8Y1zSjjAbgkVyXJ9N38El2I2ybO+E3YrdkK02ceAw7aicPVnjAYDgMENlNQblSJanW8VbUp6NbjE1Tro+ZXePBeW5NDXSwTKvnG425DmoALwUw0IaVj8kDlwN0ZyVMlrXRHgq1nsu2jeDbbX9tSd2bdWDbJo/n5wDAQaqtY6719eMaoI47B9D0nwWTHXPRqqKJhMkWyd8t97k2y0RjyInc/fXSLCwl3+ja/pUrPu5TXGSEGEHXGon6/lw66xq9nUKpThyHefHkwqOVI6T5Fi4nBoygWo9QbK2jI/MCImN6RuTexoRs6O2WJut+uaCt1sSqQkCqtokjyajimgq5gbeVuaesl14+WgRLiYqQVKcrTNB77Ei63tKDo8oKQCTmSthdnzB2Quz0WzChf5jsNISQhq8XM2+2+xJ/ohi0QaIQzEEat2WexrAu0y9IOGACei9t5MHJfDa06Fw8r39JsFKLxE9mIhuaeQ9CvsuvnuCszWUl3y01lDla4Okv5Ul5PRkaXRIZjgitZz0wmnXykGv/ryvPzhxhj4x+vDtG8ryh7DBmOEdWS9WvdL3slKpYGmWoTaTqSDGh186X1boJtSU3n5bkK02YnjVY1Oj6PN4Bt4/MOTZ2jcZTYNK9o2ql/rDkaL3Tv/15fSYdMyntfqpP2MVnWnVl1rJJasqgbdbGl0Wu+CyzNB1iay+uMb6sHj+eM18B49Lggo2GZGDRuUS5c+0LYu8/PoEDHyg55l9I57tFedlPXq22MaVva4BHrPRT+UmDv9MYrVB/xXUjdIA5Z05cJu192i4BLdqWDTH9mtOWnXJlxqaS5sJDqgO3ku3d0AmIeBMI7LZB+eaLBPIf6ax2ayBc43NJiKdaXCW29lGZzMKzjS6MqtCyrx8jSstmxlG2KPV17b/TaiZ0owK3nGCd7QvS9mXQhqk9710farzaen9yih7j4A5NttZj4DK4IacBjNO4VlPg8owhxwMMw7zvAdDZZyDzogZB3reM6Iy0EHHhZdwyHQbeFyM7IozLlDDhRtVW4Q03pymRWNtlnkYfE3hieVPPyAu0B9+f4likpm+v4gz+9CjsNgRhbCI9lSRSOXClDKzl/yAd7XyNG4HHvE0o4ltYBbyEZX3SkljwtQ54gI+vHx72Y4LuKzUhPL5ubyEe8d1T4XKcbLIsMpReYfDt457uTzLYYVPwt4xGR/7OWbKcLLwvYP0zZTfE+lCmWsx9IbyC8sHXl0ujSvEBAlSiRJ6R5Kj1lebgH7Sf0GC57t9ckTk15ze40QrBaviKm5VvkVHnouK38CXw4aKv/dOwvpA1b5843sKM2LC7Apd4NO+5gembsvDD1z1p7oNju7k+tec5AFrf8N5QloB6n054yIn6LAn8KYvCML1sxhcY9hsFlkePwaFLVWjxDEI3WV72vSJeWsqvURSWaUL7uVMEAllASAHAqfFSVQGGvuTOfxSp4LEa0V3gQyhCYfnbVmcqzxC/6b5fNRsTkw2iTizA11XI/yCW+KEuBPvQGphhbX6gpngOxF4IhkS/GGq8vjre6MZH+neVYO03aKxcQzl4PpG1MTdFQp9LvQ0uiNKlg8nQ3CbUGf71bNhN6dFDXbf6zyOH2ttQDGsSUsDUD/qyjDYxy0MUwftEddFFXTHJQ9H3kvjMnrP1NGEoHRQ3q7MZ6PS5lTlZytqBt/S0BBxz9hb7K2t8GmGDcn6nfi1mfNkwN9WHvdrIcG18yo4XxW/EBXq+CSHJYtxaYhFEHjnOqxHHsiV3mZn29nA0uxsyuydYTDSruCYpaDWAuhHoQXdsHgjvCZey7UXb1mPwQdgGeVpDnq8N1Uld8V9trSKp+rNzjIi6Mwb1BQz1QOshRcNMcOeyhDeNcqcu11Q7NmEBwI0KyfZursC02OMy51nWwgh7T3Owin9g4CPFnYjcXfIkjkfOLN7h4KTEQ52tZ8fm+Y2HNqRRWeEdmRRDZorhp4zaKVVlELX/x7RmhM+b9J4bFEi/TEuFLgwiqJE1a+GiqBbJMir+IMDhq9BVgOmTNZAWL2O7WcAJN6VCdftQul+vE5UR/lrUhXV8fa/3oRqxuu/+Ys2terI64+eVD3e4holuM/wrc+l4Izn0CAE5xa0HeEb/dca1IIEPDX3FZ0/vQLWZ0NiOFQXrmakruehhhRNK4e4gYJOc7nlXhpyDqThPNr7ZtL1g4bTIuUDCnlbiRTdGcDKA0QoprY6pTa5ooTLovxCQQllQmujJBQ+i9qlIZYfqO1PVG0l5dpLWYOjuq/7ShVR1rZqJy6Y/v702rqOqbxb595nsyly6uG2EKNCfME6jRO220+mS47CbRdOfx1+ExrguxL0WITzLk5f3yKcJEXRjv55kxNqjcwUGe1pWAR7qn8ARUJrR++/CSvio235N2lN1BpOtuHMpndtf0YDdYiiXKxGSAOYqwYyHJlRo+fA5jiNQGdbESyOzbU86EY2tCLS8Ip8fvLexbLQAaXSzBxPCm+S2ZRlJzuILDgHo+WGVIkIxMdzTRURgreyN2YZDmqF4679Wn12bkEfxWxTBD6TtYu4W2K/pvhBG3fxemG9wDMyvO70SSvtLDtUKkHwbCX+wopgcSWg54XEfgU6z4HgjVNdaO4XDXIuT9xXr9+8/vi6CE8f0qUUnStpoER5/e729YePk1FKkpBoeZS3r9+8vpqOctHo/RLlp5tXL8Mzbl15bEfZQ8WV907/O+DKg78Nc+W5Gjamrf3glpC2Y6X8Ef33MymTZ/8TcPQ51GiUow++1es9k5HAmRsHfKXfs5dvZvHuOTLjMELA3e5hvVcqW2sia0NlbYTvZirDuxMboey5VPMGEZoV5egGinJDivmJat79fKwEJJY7xWaxW59d1clXxpP+zXa3q3Z0D+CNSDZbt3RfYoPhQGIPYD+kPWZxu6rWnJAsh8GIYsE9pVLmRGQ5DEYUyC2fE5KF4jgFOkDN2nnav94HAdHXkfl6GgSAVLbaAUKgjUag0rEH7WaBoj3Bcah2vy1i9FhwixpKAFdmnEkCNfqdv9zIPIAdL4+dxolXw1W7dmIn6cI8yPbZepulFQPh5peb9c83bwMmwoYo7B5Eb365efHzzdthBoP98ABDQbMYYSqUI0CjjAX7vZHvgsWY6+YAxCZGOEn6TImM8+QkI0ITGIlZf8bhtuk3NZqapNdwsDPhfrpMh3nNho+NFIMmwmp5PhjPOsUMh3IJJkGAeKroEsVHhlMaIS4QZzHR18ZQZ7/Zq7pflW+Ier2RshJO2Yh8mEO/brt4fNMdN5Pee0n9VlIU1S6qqxS1/xsKY49lAej/8NCFxBlcfUml5RcQVeYUafTdT6hUhJkcmqZsKpnj7TSf02XQfZ6UtcA3BAK7qKJYkfgSbXKFGPfdao9EFQNeoettI3mMcfbiNyK4loU6ZjSCQogpwY4dThLfLRR6S7giT3YyytYeWJBKwO4ml8dLiL8uU5iYr55UhUBBW3FD3lxhyENhkqzQB0yl/yHic5auUvywjvY0iQVhn9GFregZV4rzQK1BY5Uiqp7rQyVPYrQniS+A8o6QzAjPTk7CD7aZjXmdV0e05UnCD5XA8i2OFMjRQ9AtZbPcJLqnGGEkeXRHFLr4eHWjFQYEvW2wJPFzJ8JcXzn2RPgTcCWvpFXtscCRIsJGdfKtJd/a8lW3qcFjEtlmX+A2WN5XQcnGQANfiI01eb8eQtU9YVwWWo5aFwTSy4vA2crQ1knLc3v68FwSJSwyM5PN8fRfM4ptMNchcGO7M810AmgzcUHtbzZnsR4+O+vTlOXVA/lsR2JaA/n1Xql+ND1okAYm1nO7Z40GtFt+i5NEmyoHYvIsQyqFsrXMsCBri9E2CrLapvEnW7vT5W6G9R2ylofWx5+tsfA5tIS9ro4lxO+OIguylCB6YUxGymAna9Dff/aQvZAcOgohro/gba4PFrhhGA6X7h6UJwodKEyAnkuTaPD5u8/PQyKAO/OS5ocG+a/O41Psxi6dudCstLVlE9Q4/Vc9E9eC+AMzTgHdaHp/WWsOl9CUKoAJ5ovlfxky27IUKfBKaxNAj8v2ubH40cWBiztpmoZsvXnqWYq+sfvpG9ip3zj7+5vngXTohB/WC7h5mrXui1u0awfOmak5q6VDHiJCYs/MfLZfWmuYCd9BS06eq8+h3G4s1NpXt2TqUCoR0rbH24DlV4czpouoC6ciGY/2a8NyvOyhHBGYTlrALajOi8Gl2glSD1q+Mb/siFwOeCqK7zl1ekrIcg0aGuOhqOBoNMENORdAv1B1PMXB8J6Rsu1+RkTjfnCpBXEwjQrK7giujZBzhXlcnA6bMbCwqhDMoz3CzsCBphf29DLBzOiqmJ9NvdYD/F1jyXbwJLJ2TE57BikqfXA6lwP7/fWrViM1uI5scHRHWKwP4ko4Fw841R2wmR9pKp6WE9Bls0nLmbxOaCUSP+dcErFaYq6g12zCdztSZE8OwuKZnxFzMIErzooCguvTmFcouaLQtbkfAMZ6wnEci6arsRfK9Q2y3yvuwTWX9kgMgRfNHhC/cKnqJU4K5obuZbPztTYJ9ElB0Kt3tyjh/C7PyoeYtR5SJ05NaS6L5eoGaXLObCm8b1aQVKJcugeBiKdpztx8H6jag2xbRK2sLxEX6MX3iG4RhlLr7p4MREO2g/3yGk7toeZD3yi1OWBvZ8aJAxrjUBoHl0hfMC+LK5xvIbXN554G0pVqFGcYzjfFSVitgnHos9XgWFwMXtU5aC80wLAuey70IjFHOngq29d88+XKBEHZvRatoD2qyDraY9aqlz/PIA10jcP0egVOATBdz3vT60bRbfsQLiTv/CpwPYcmG2ExjeN9ZZccvycCJ4kVRPMc1tappJuEOE8JFqS0pjzXuX+x8/0jmPWVMdk7FHgoWtlr5bf1vb713frbJiOHcpOn7ZeaKilwUJWbqkUZGrpVPmC89IGVjGouqxEDaqBAFzbT7PmPxs9V7B9JU5pgaPxgv+cFUQOsb6KZQpyVTk1NLoUiXtY/V2UOuW3+6gmYmVhp/0i2WKoMqz3a5syRSpLOidZfeVH7jp90TCU0+2zKozh7KTTcjO6c6U8JdBJ33zPj7DMWfJWE+3YoeVDNTfGNRKm2HASJKreX64oatPqybFfWoqtvV7KhZUvBOZIMsolMQzMgLi8RVeWXW2QrqtW8EmM3H94Kp8XJvYNwcnHKhdJbmEJLTNNgsQlYL+6X38jipli9+OXS11DPXfsczDmyX6M9ie4yTpmSq1C7whk8MI5ylV/zidA2iAqdOlWkRdvF2ZGWDR3nQQouNFNYpt0XysDdJrz15ta3HSESq9ECyoK0HkvTEMrqPa09oNj6tgKuRbXiPTfRQLZxmiDVJqcxlXetjvdDBSGPLPqS5aDx7wVn9DdzMxshDNNQUa4qQpl99VoexXTZOsLVeejG5rHd5kdl0/hbSnEAtvU2b73xnw7Q+Ln9iloqE3eJEQDQ4oRiIC453tOidI/jyobhKMXsWAyjc4z2ZF1+XVBBIgh30Hf5TmOhAW291VtgoRkooIAIFXdnNqJKIn5gCJibJsEXjIsUJ0m7HK5/Hk3shJ5lLol56ysuP45rzLU5ZXi1yAKd550ywknCww005pjAgkP4/iPXgkgy61VYW1CmmvmeSFJ5izfhd2BtAdNVy6TyFPye5KMX/ADueUevdMy737w40LiKre5IL5znXovKg3K8KfXU3OdP0mtuvHRrvl3bry1wCFrClStF25vqL2/u8XvJlbcR9Qwqr1rh2N3bKpKtWZwGQ3Df1/AKniRaBo+LWKPQOw+HfDWbhEd33uqQpyOFPpOGgasFOWTaLaT9ErNtWntXcIHq3MIRhRMN8uisVKPsTZGISyR9bluswAevDQ0MThrEiLZZsTiiCxgphBqYdB8i0Z6WTpDyobVFuM5Zk4VO4qa4mLZ8oCnyN9LWtzMtkuHTgRgFK1E9epjpkO0/we9f7WJsUiuKZs9OxJtjqQyaK+DS51QaYMVXBtR5qztpRC774hwjEvygd6HKBVviPs0Pegsa6u4cBq/VoB0J4LZEeYJ/ZsJmiU+EZtKIl8LmqE8EZ/JyF8JmiU+EZpLEF4JmiY+HFnG2TWi7HtnpuByOCLOI6HMxzoktQmY4msdIQSJ+T8TR4W1R7DFbSJpxgcXRWyJlhkPM0bceEVctqEvQ6KUnKL9JCGLwoQ9hfIkE2WGh72rwJn7YG29B/Sv62GtRdXAuyGq30genMG9GkHqxp2xnw9LrDGy12bVmsPYXrrC5WX1CDxc2m3AYNDxbcBJUvHBNCbanILx29JRMmIKeWQRLxE7BEnKOCY7hEJzfWnSUUUyUuSYM0xdP57rduncXb1+nXrxrwXHmSUX/FwTt+C/knki5GlXK7rlr/mmD44BuGRoXZbnt/gahkLAVwOIaERtXPv6dmut3znCr0hdl2hDhIs+k+a569ui9atyDyBlqvmHWXhfnk1eJpZjRLr6KPIx8Q/gv80zY/F6dbISTZIHztPA7G9GW4eZ5p3C1lTPrOcO67fXA0oMt6UtwmAtM9fLi7nq20F4frLR1F5oK6q3NHZkHFn6YC1Yr3eIUWPM9+7wlmM0DSqo4JvczwbrhWW7bZ0qFWYxFjGJyT8tzqOJPqAIc+LpnWvOt5B4LEs/oQWpuCcPAuANs1xzw7dg3tQ6Z1hHO6HYbABE8VWMhxlSodoPUBVFahqOBWrP8fEAbD6n9QBMe4WTBVQn0T1iUBt+Ca7INcNySNACXXZFtjKMXpIG57Hpswxy9HPUVcMnZ1vRPmGyAt6wQWwj9MnT5XoKnRO0JVGAp8r2KXwbyvW717bSV7VV8a4HSNFWYaHjuV0e3jto1rXbtPuVeayRThueVQvFEw08qD8MV3do0g9ky499ViE6rbl7UEtipfetDp5drvCrz2HKCDJt2nGt3ybQ5cLxrFU0ziMh90x3gqWOw4hlh6+0C79KasPGUua/wUDyQ7d27ivY5u5NrxdcZEZLK+d8lbTNzw8g+LAqT234k4PTRbMtgt0InCbzZUJX+WtFIH+BXb/8roI/cn20RzRMUTYU3OkXNNCsZnaJTvFSeXmmpSnUheHFgnL14eXt1fV0WYJGIyAjKcWJwJl/51+j9ngfW4ySgf7Xd9fdFMtqJ+HI5Z32sT5IIFC7qyXg8Z6wNj0kHs2iPGSOz+aMaXRYsccRZY8F0glnP59nwF5MocOEk4QcSD8W3FTglM6JzfpeMiJTanCBXSQcbbujCtWR8rtUmIzsOta/Mim41RTE/4XYshVPkmM2pGI6ZRykE6q3OutNvbTk0m6taVu+7p7W8UpNVp2Q1SZZua5mntq0TF+CVdlkwgROeELGadyQ3ZJFx6MOXsK6hzJc+aydDU+wQ24wMQWYd7HB0R/SVJGdq5WlrdLrFYzjYRkUDlUgNVaBv1HzIik5QU9D5K5HNB85VBhuIjUdq2ekEBuNms4ppscm0uIbMpcNFHloJvqPNUA+Np2eEmuvYP7j9GedCq3AvwklZ0n/bE8iA5KKIzDSClLm4p/fEOS+QIJBLHqrnniu+9jbpmAFbdXZNlTQXjKXZpljZop2QesE47DATTRA46ihTRLDAC+PJUN1uMSnQhpMppIAizLSUN6RMlsnyTULl3lyGIXOmqwj2AvePw55XOrSV8D1xIKjm1pQSOsbbAawpW4H2m0npoSsXpeQ4VUT1jLJn0A+QFXCthGER4zvIkI4iR0LwPBwD5BtJTBSmiVyJdrDN5LxChH7hB5TmJganXCaW7QvoS6wB77F0tRJs9aiIs9hFWlfToyVOs8SExygi7nGgwHNrhDxXZ5wsnqtncJNpzdapM6XH8RhTBY1q55urwIV/9Dnd+P6UMxrccVtB/N3vp66PV1TeIU0VyQxHULIByI+/r5b4oJjirChvOGWqFihncitwgkVqzp4dR3y7HQ97G88a0/Jzw+FblosO+CvilacuxVTunySJB/qcd9GK5emsuqa0hv98FeyeX+EvSJRgmpJ41rXy56uyw64lP3pRUA4h1WuTRWreCGwz6RW+382XBALLxdb5hgcDfL9DrTqUQ2DNOZFtVLaRdggV5PosJhh4zu0TDECYVTNihYtsMh/hQcsIYM05NyWscoeFmevZW4I9rIp+AJKQu3nXBfDXZHsXBPCefejAesDAjyxaYuBHFvUPXPOef+Cadf/ATZLc/CMHur1DN9xn1wKG+SlqwACbfVIMsJ5ZSUl6HpPMPi7PYJRpyOAkmBPxWwNP0w2YuQV7RiTF0Od6pR4WspHeApN6lrWRpafykM0PIL/mVBBb5EKWj/QdgxA4fVJjiGlsS+nDWIYNRe5WUnFB1rMfp9XQCHs/bg4ADtuibYr9GMRsBGz6Eu78234A3mra2DDAM5eOcM/ZXl6Z4NGsN652ZPxrkWC2C3VHqAGZ8e71Lshfa5s8lFRmP9Xu1H46jogLUklywyxGOTyZos3RggymneRkRVlMHlZ/57lgOFl0KQsScRHL5so1nmWAgSyMfrwLaggHs64QKij70T2uFAMZ2jlb+ToqTUX08p4IrXDCGxJV+uYEc59M7eUzOWegxmouCVTq9/WhaqCaUW+0QIGB0odj3ugQUNn6+4G3jSzYGmPCgtW8DMW2n7W5Dkc7WpsEvr6GDsH49TX0Sb6GkocoyWWoffhMWKF2seVj25btMdTEI2Kd0ThQ6uesIZC+Qt8nbslK4W8riRV6Z2sMom9sTuA3pjB2io96Np/9P/LIIsp2l+it3MHD2v/3zBQyrwizqBkqKdut0H/p3zsjHQuCbEU/xBnSUldEgCwr0dhlIbOYH1ixmOTe/EvtEXbtiPkWfaM/9E1guYtdbpLiU/ywzgTlot5AB81qeDsGKCH3JJFwqJayURzJPAvHgkWcyTyF2p+L2Ecl/R72uaIJleBRWWXRYCDOrZERERGmcKt0f58hIGypcrsoIUX1wrX++271HVjw36++e152vShWnWtIStOUxBQrolcPSahWicVN0VSgsaM0NcdNbVMEVTvUHjNNXy/p4nNmzdKU2sovjKgDF3f6AzsiDV6BMkGgspJ5e+15IwaTbtZJvs1TYwHj+GjuOQxHd4wfEhLvSFxK4MIILCaZ2gcUWwPmEo/YtSfsCqIF4wtANEt7Ioz8FbdHn158JnrGGwQdwLi4wKNWRITBvZzw66tx6VnwSd51YbY9lytgRiE/39yENvCCETg294nN+5baTAUt2ZSDqrUXvoDzHicHfJR6I31njlGBmaRFup0MKi9IaR3lNg+743sH9xM8tFfyysypUSTf1i/+CEvJI2gL7pox2UFf2tKVUHRS4ejuEu0JzkCVu0A9JJXII5WLkEMP/Md6K89rQLRyeaGKS2VBtv3Epu7n0dSUstcUaEZJVXffHxiC8Yg/zhgahf97B+GyA0lMq8nKH/S/Q3mB+m+u52MzXxn+uBrUetLxRMNTAqFNaUzlZ71QFabMVOOpVrDSK65SgasOCnWkFWoipzguPmsCw4FVa/ZAK+rrdz+//+zrDDShSYg5M7xrb0Iis5lw27poUiJzUc+59Yk5s4frHdTgLesCbsbN1uhmVcgE39f0cBB+YkzlNc9VlitoYr/AQN4YLshwgX7yCKdcQ7eJ2u0BDgC/oTsAT5nGvsm3C0D/yfBAwMNVJZ4De8Kju7OsmlqiDDaMYdVA74Kf3ty8v7lEP30o/+/NzafbX0KLp9yI4B+YeyMap0NFuYzdjzZbLShXv2dqoGivWUwjrJxDRCu3BnDZTpfziy/L5xXd1c2nVjWKIfICD588titgOkQywgmJ1z7reaDUbk1xbo2waYQZ7M1KF71gi27sC6KGNIe5MHsyMObE2iHhSvsRz6NzP+pHFfUI8PVbxrx7y94gJtkHIEjo1Di7qu+6HJkfiLm2966Bcy5afYN7gfbhGLYCHFAk5OAFmhHc7C1xbrQawlC4SY4fGW2S4wFgU/wwbcnOgNZGwpmgwGFQM57QqN18qfsZpgnHC+b1PTVub8NCXz1zaVvVphWgpjEmjvbBc7+K2XZO4v8/e9/X3EaO5PnenwLhi4mW7yS25ZnpnfWb2+re1W27rbPs64nb26DAKpDEqAiUARQp+dNvIAHUX9Q/EkXSE62HGbdEZv4yASQSiURm+44wDHK3BnMuPQYzD/pE/rDZ4R7JWJOZcOx5N45GunD94yDiRSsPn9StHPpFq4iHpZpLvCUzEyyUc4hdeL/Ts96Gy1wGsFgBd8rmqeArT6f4Ku92de/HvpDfk7kxvdiGPVxRdvJuX4OHszdFZUm9ed30wtsj65EA5AaPt5/MJ1xo7UdBNNnkFsSk0Z1qcTn+bQ10j8P9RJPcsT/uLEeVZVZRwQnMzHG5F5pPE1sPMpwT0Uayz38QvJHdNUTicTYtj/vOTbD1kNPdEDdXKuhVuGw2+AjMSp+5E76amY7px+El6dcjcVpSIdVcn0+Oqsw1lSrpiKHszSzPQoNwVKi1Z0tx1e6N0IC1t9WnicaKRcGX34qquVzj66MwiqloZKaF57TIaBLPG91KwjPaNNMjwzPh7RYxFAssovV8QRsh7/CcNlmiaJqQJ8pWc5zS6WddFM2PtZRsZLVr5gWxhSJjx5jdKkrnniKBgYXxPjsIzGP9dVr6icjmUcIb7XkDszE13aHP2iSDX07EDpwYcEhGgGmA7K/ph/bScPmnnjVTTgFwTAeEIqtY/3FwIsMeWA3TQVghf0TO3VXQMZAaligVxPIcAJQRNYN0AW+uWzCUNtnZJCY0H413wjOJGEfBZ3M+RgCkTCrMFGaEZ3LGUzlPiZj7z/EB7VSVrckpeVykQW7GRwtt0nGOxx4KcywzT4PUoDoGNikWiuJkxifeeCrMiGi/bgnC7ZE8yxl5SqkIZJh6OG1pMGPdySnFEZmtu7zssKw2VMqpwylptpDZYtZSvX4aZilWiohGD5bAzBKsiFTzJReP82xyk7mhK4EVmUPjoHhuXwWH5VmfIN/VqY5JZHVEupJZ81487sPTZrS2tCfd6/Hgf1jEiMaEKbqkrRlK+Rl6u5orFeoRu3ter1TSw1frNhDTIt9RE3UPFnJ70o3DGOx9odgUcwnpV6Ucc5OP1dYMyyRr2VeSNtn8EiX0kcCdOWZ5ugZ0Hr4svb6sZqRrOW2BJbayKJq9tJTIyKCs9VwMNCpt3XyttKJMWzbzaydfX4p6xMVhK9uwu9J0SlC0Pl06/5ILhJGkbJUQ4Gf6ZEBsB75X0qD7Cbacx09rDf2dRmWOIy3z+H+gu/xJp79eFfSMbnsq2uFD1p6MjgP/aU1Kb021orU4pcampuyMQEPWKEigaLB+6xpc0c7+AGB2vpyjch+JYCQZI0VABfdqeAQ6RiNyfhrmDCV8d5U/Kh+anQrSHE3T+6KkcXKGOgdUA4AfbyIPAMR3mKoz1CWDOkfogjN4TNf32sPKcUwbMQ6f+HJ+SpZEbGkEpepZbAoG6/9YYxHvtDcHr0dFlqre9Si+HE/1wVBLvlTf0rhovPtJeOqx2QO5Ijg5v5GhDFG25UnGFBbPxgTYI/fWloHS39itaULgt+vnVKtEenKpd1hW9MWhtlBe0rDZDfZtXnCNs+RZb56fGX0apMhj2sXzVZD/bdv4o1yUZo3TpDeZfI/nw3z/w75voIqrIvN8SRC4Kyq3AFtzqWbmw5xdMSjjRL96IrfFypCmrhI8fcd5A0p4kaFZPVy/evUn9D8Nuweg3SBW8KnQxYmtg4IfiXk9b6hSpnjeUMXYFk/ulweLhvJPfTRFH1gzRCAvG2SfeQYFi2DQyirPgzcraJckbCkjrTf0CxeIPOFNmpBLRJfozw2yZkrpr2OFfnz1Jw3tUs8rM7ls2GMWpdnMafMhr8p1/bfWwfnnOsL+cx0Sv93j1z/Laecb8lr/8Ms9Ev7h3Ybxbk2ZuXNUpPaltEUytTJbPZDfCjdokDOi3aazlHdsTPpsBRm7q5+nIAdt7ecp0vD9/Uzx77HJn6ckwXf6b0rMfbf78xTyW93zz1abvRt/zQP41OjRUBXUV+fikIhQHhnR0DPT3QZKE0JdQmgsoaU0gzYAfiOy+K3cip/zffK3cQN7hheZZ30BeOprmP036FMj33fP/ePeo6wTPU/pYYVWNYnS3QfUub390FaRti3/z/2Mvx9h49rL2Nj1GyTjxlPcAcMN4rFKZw3/ZCOC4mRuLltGwBsI4XtpObhUO9N+YIOfoSz5ArbrLY1N/i9OkkLpDZr2fqBHoOCNwLQoqvZ4CcpNo4jrEdJTRmaRnuHLLEnaqsFVi0hMDdC2V9wL4fiWygeUEveBd328cQ02+sDQr5RlT+Z6jTaz4VXl3lCSCDprASX7zpjamcYQlqYeovkUkvQr+JZ/vX49aARPryBXtDuIjhyxgWpqUO1XG0yrgA3FfIrZ0CShpjeAtNubNSumQPyQgT0ZRFsAvs9ZnBqgH2PM9T54+8OHfoD69Gj6MQryJSNSzTZErEjbU0ODfY8OEvU0AVjmlqVEwLPSLAJui3dE2OYDseuUGJMt7T3bWLHMFDmuXKbb88SCVcbrqANVoKdSNtCX5NxjgI47MmElgRGxAnTsNgHE+KnYb3Pft4G58VTfu6X1D80RJTLDM6VIbp7h7WruKbR0oDzYPvmCPfeCMrdZv3StwgbOvGEWwDTDm1YS008kIWyl1pMIgfXxdRrspSPzkosCtnetm2ZYUDmqr1y9RW6OzWTeursfPo0MB9tgjrLKNv8ShLr94UPY8Vhk0l8wfC9p7vwB7DgT2jkxvRYrIrQb44sFZvGOxmqNoO/fV/NC1bUuNJ96OUM35uMSq0yYj/AoyrTDbPLEijQ/iaKESxj6auaeU8mSJqTyDhDtFccoyDQyOYs/hUjozLskH+mUAyEL88a2aNCsuD6EZCwVdEsToj0fiJY3a16UoZvhm48MuYwKq5QTDN+ghx9isv1B//X6wYtIBW3cnEPRNOpQyJP6ix8EhADnKactsYe9sQBhvQaBdkM3fjQwWyc8yGj6tseqfbgMv2nG8kqQBDnpbO+e1RrdPLTWSvoShOyjtFGt2oNEQkq669YYtAY4ZqQGmriPg3f6m+Aa6K6b03wqSr3BHLSP2SllKJW2stIm5mLzeLUSZIXz4DxOEmNyaqn+xVcPfsuwb3j2t6r5sWjQkmf180Zl+RywrOuFtYBSFyuPe9816wfWefuNSBifQmoU82h0hTePBe5URR/6Bk5/YwejRLCAtTVQB5jtURwtGEBYqT0Afeb4eAiN2bsAoGmSSdDpy6YznHAcH2I+tPOvabjTzYEL/sX1i7FGWP+JstV8ifWh/I12+scZ4l9L8PODR4KlQhvKMtXSE//FX88J6V8t1haD8+L6rNBee+D6cUOO1qnmhGcuoJjmt6TVCxx4xTRInFMNhX/ChJDoZLOrZVYdKBN8yC/RtE8oG9a50eltvHtnSDRCFG393sab7KMdO2Bf6+z0dpLjRn8DuhOcas35rMg1Ao/Kjnl+FjI5ICZsFnMiIRXEdAInvpbi1p2ESngSYdb0v0zvWIkuJMnPqlY1OFIZTmY1N+Tsj2ODBtbItp+/7qkwB9SK+mgkhkw2rbk+L77TW96vFG4Aj9QKVNJnaQ7eKiSINYamUmFM9SQiLCJoQdSO2HfAdkrDPWs5VmNHyPtEXP/UP4likhIWS2d5P9ybONmGC4JiojBN5CVKwQyiaE2ix/yMXJrDDwOK/J7oDGXV7V/yt9DIL8JJlCVwkF9gPSwlXeSJKxT6PUsqlXR3RCWaXtZw0ijsg7MHQPTD/d+RaSOIkcw2davkBpYy05UlH9cPDP1OWcx38tJ+n3xprjarWp6Plf360LFqsTloaCnibtszcOSaNgg3lk5fHuEO181NuyFKBVnSpzfoxX+CWP9V93mq8Q29WQCVwpeodMQ388le72gclRKPbor5Ipj94YgTH6YLYYZOpVPZWvBGxuE9lZnK7fIe6j2/lZoNU7yTYp2tSNp4qHuCxaqBIEBy8nXqTX5uiOYfkCLeWxLI3pyknLfV6kXnsm7fl7w9ylxnWxKXxAmxNnoEOGhNVLMCKvNqUE+JQ+xQmKlTuIp7TyLtyIo9uqGEFcShQItMwanON59GSiYzod270wrGt0REfLOho5dGTJY4S5Tv1mWwDAes7xvD3uSQLbnwgs+fqJi+It/V4Y2J+1gapcCP61ZSemxTqRdddFtRRCxrdxvHe2dD1HpkKBBCbHXwQx7d8Jb+MFNFZeovB/SZty9/i50UYU+fpbIiU+zrjBAmbGppD1TYdEhEjmSgYiibESG4mEYthrR9EmgQUbYaMFbHwiQJi/sRUTaLBU/Txq4ZBhFlEd9AUpQduyKh0rIdoLEpAfJMrXg3wHKolkqEkx1uNJdA6JV23m+w2GkPksXop/sbtCARziSxoRPtCwiScqGK25H255VOAfbh6EH7kaVR2o/sb/RmhGOs8GW5lcFluUdErcECOsZ+NCRcbAWo7jSo8oQYq4mYmtoQ1Qy/FyJjjLLVCz+aNFjjhjKQlLYk1KQT8cOCMNXBdjUJW3OYbmMabeKEssBDvcySxDXgudLkzfFQcVNoo1xl49Le29jiGw1yWKyyDUTYJUmxwHb5e1JYyrU3wi8ZR9UFlCGHGMxdBKVD40rpEHRbfMqDBaEIM/t8OSaKiA1lJL602ZIkiU2VUGtwckrfNw0nyzZE0KjUUwhdfL69eVmNPkOWuSFsb8lkF9GYb7A1xFRax0xLiCV6MH/7/06wh5ZZtQvYOEmrP8oELB7tKuupElMBT1me3Xjkmv9UklVCUYDmnCrVDDBXBn4pCNt6peCLf5BGqML8cn6gnIRtqeBMz3i0xYJqlLJ99ZjaxXoP8j3Urcj5iyDkp/ubSyOw2aU+3KO/twxgpUw0Chffe3f3+UqmJKJLGpUDe2lR5mFs6K612A7qOx4PjJd6Kl+o8obWVYWnDra9sFEotHsWOfIDPb9wda34iHUF87EASfPMmiyNwdm4VSUfVNINTbCwFz5etn/SXHJFlhnEVKYJfi6cUMVTt9W56iPNQhN+5bbU8fqmNEy2lZNtlXLZ8y8VPW8kNxXJRbDnKCQwa94wWKEF36BXzUdSdRV3VLpCR7YL/gpYdcBmTkyJ1yQidA5vhz619fA9LizQxc0zwxh0GtPOFU93SoSCQJo1aXFgvZf6A1NYzN3F2P2ob7/r269OFMgtZoCrymQPqWV1r3HHFBBSnuyaSaP/SCT4ueieKHRPv5JZbRl6BOJRlKXU3E2BV2s/c/Hx7fuX3aKen2UOJ59cY3GqSQi8Y58wmWx9ueY/T+yRpPYLTUj+GS6sh+QCNWbTksROJ3PZQGXJlV56qpaZtCO9d1kvO7TJ4ClhB20KtYd6VR1IoD94J0johqqZ5MvRt7VDJwhfKsPF3en3QM99Ci/JylmpRDvCTB/Ao7V2NuK6n4MVwuwZdqU+Vaxx46gXShWa9FSqKNHWqoD6eQuCBKbSUBGcq5bjoW/h7b0k37tXeszikUXNDcMJaqXA63xwubF8NOl4G1Jtv+p+7Lfy53+CFMHjhouxxtISkmuaQhJDM87C2ZVWh6UMCpSkwgD01xda6F/qjRgg6omeDFAwsrPp9gaOKnomcXgDaaSRCEvJIwphrB1VaxMw0mr2e/YmugWVEdj3CmFH9fbGhCpsPSpHvRR+st1vvFTxouOWrKyiFKv1dErS1F0yoJ1HkHVEt6T2a5ktzCnje2lek5rH66NUBtyOobRmRAd1rtkRGovSrNAFktGaxFlCTINnDKXlzHsXLB/z3A27jrw035rvOPvMmRI8Saxl2/E8EpyzEvISvfvlHgzIx09+ovrvUmEWGzCusGHyjJaYioKUtTOp4NpeUM5w4gkhgnbgrY6JpOaHKpf47YYxz1LeEbpaqxn6+KkEw0tXEJzYE1oNlCRKlhp9ec+fXn8UFcWNqwMASrZPJVwZFIxWdEuY9j0p78p/ajdmqM+goQHrFdVn4O2Ni8bUZ08ngBZzsRcE/yLQP3f7mI1Waj5z0ilktJQzO2DeVCfU55CMERX4wFjoOQeFgCLBXb0/SBLiOyTIKkuw0LtiKymjku+lsxOKw1wWRPJMREQiueZZEoNfQvJcsBE6+ZJxhadXyafas6VWxZiFjBP/MwCA5MwkLq9RkTG3Pjkjdm2iCyxRTJbUuH3tWi5PjrZHTD7twVFtat29ZZD8tCLCRgvhWs0GZYg2ePlCAjxlg9dKtFIAyDmNFbXOStFyxyy21rFdk2lmlWLc700m4RbvNdKTnq7WZW+0U71CnfF6zddlu35b1iuVeyxUoWYiY3DUOgdlQHCbsxWR8JBIUZbxTNo110qYstoRpbqITcNQv9YGqsm8eTUwplZTkblqTQ3kJ25xIsHoVBaMXhRVE9Nu3PTSBlWQBKfd6dVN0dVacKUSEh9dCXquyLZRXZiXfhYbugAhqacPqftxic07c62rbbvLdlJr8mwV9LTGGZREgarmy067VDJ3elZXRsjEA6hAsBcONf91jbPJt9A8Pu1q8plyeReUIYYZr9QZtCstH48eB8M3TsPOTDjqiAIPOjfZU5ArcOZJCXM/f3jT+c+JvWl7P3scrzE/vFUneuUFuzYB5fNzz3wftcZNc8UwsuaylMHnwCFBYsPjtvR2Pz7XNfFoCC/Mhe3LMVBTIvwRFtSdNuR+KulDh8+sXMqG9czF5gwRHK3ho7UZ1rF9U9k/xTqvZtE462mfl9mwsEmt/cOATmRAxxvKDdnM4Aat9WIYDVmhfTeLIwQvV1uxl3uL59bw14UrMDDULSoE3uCn8xF6TfKoYLn8RmjJzX3XOUpdhF7MJlMtH6GldVnG+tzevn3iaE1emmOKJ15tmv0Xnnsmh+4PWntLTJNs+nhK9a7XnlxAoHVetMJc+13UxvQl2uF2L0ro7WLwiW1DNnJ3brZhTVwFD5dQXDEUUAUEnsKbKoR2DbXSC7m2cmWdq11ppNnozbiprIpSOhyJQ5V19qbIRZLshKsrDQa7O04S2gDJ3TmZoPpigwFtpXjRGHUwViON0uO5+is2RXQyt+Xx/P2Wugp63ZdWquM1c/bGhC9r+ukyEO1Rwn0Mx+N5ui71cQvpu2jacxWlZ2kqKjZCbzKf3t3l9Qub5eLHCHqupqFsE+oSe2xET3BsP+sJavoW7IRVVl1PDYPRp6W9PY1cW+dpNOoD2X5ZNd6/MAFLUwdwjhn318AYrICAc+Ut4+x5wzNZeKBw1kWcIVu3MCFYqitBIsJU8nwFq+3i14+f2xWUUKkqD3g36VKiC7nekM3Ly7HGqKI8fUo/svJ+oQm5WuDosUhOL5Tz68fPubh7SAW6PrI8d3qDAMahx2hNicAiWtMIJ3Ojqvl5mcZy2Dg/iTnY1nvK6zmU7ISxfe03t0HUJXfnqa3iRDZYb60kq/rcT2+uouq3Y0nzGrBlc1FZee0H3PqK3EtTJzCb7ZryG1SvjvaYHRucpiQ+L4nvbQ9wI+2VgYjs/0FfnXZTHNbmpHhF5lC57ehJMtpG4Px1RfV0qgRdrYggsf5EVwAMoI+cD//gYv4NyA1AewRHL97rT70w/ynRWk8hVrxdscEAU2U5eYY3LIp3HX9NgRIoFQGPa2Jaft0xcEbJeWvYZYLEM6j1qP8Xss94qWA6NY/yTJutwSmXZTl41hZrnFYQnpUOaYeK0vUgd5Aox9gWL4qSMwIzaasg5WWEX14ixtvjvmEdVyHlXHM+G639VitbyJcI54r06mtc6swOp2cj631+7bHn6GWMbGmk8OKMdvz3pXBsUdRJkCjBdEPiQZI6KRfJI/XZ8BHpMj8lPCoXSv0jSyZ0lsweSTImm/BcZmy93aMxPGBrlkQIE+0zfVtsp8wFTCrTErn9ANN+WTNKTZQfJ+uyUMDtDx9cKUnOIM1fa9tkyGnx9xcc8rBJ8bTe5h6bPscJjZ5bK1bOZLbZ4GoHLaoS8gbdWf/yvvmBsaUtLYlKUeXSw2gikS3L6O/1NXnPrUF9tUq1dnPY3DZWr+MtvTgxggVCUqpfbhU2BguNh3dIHwxEEx2FQiaEpFOoxBEeh0aFrFpbAmPojsLylW8WNPwIGbKjkGTskfFd/QR2OJQCQ+ltxZqYUq36ZJLE7Hvr2ChByVYbR6HPLRZR044JTA9qz1r7fm5pFkSdpm7ub6Xin2ZH8I8RBLeoep4HLqHr6F6ZQRmARJ/w3X1KoClTbjlhgniGSQf/KS0+cCjpodz2y48JXJmwoEpHOCBexrPmSdyiHYtEPrNoAjtnodh926IxESoBD0003+aqlTx6JAd1Zf/07s5SkQU/M1e8nsOI9WxqvlLut389zRlcLfVxCv13vjOGECSCC2HKqIJKKTN0x6Wki8Q+IpZWtYbPZV4cvRnY5QLi3oT1V5hf4g1tlJ8YJnC6/cs4Yd/GsYBaHcCzBxg0Y51Rfw2gxq9zVNf/+nr2avZ6dq2V8PrVq+s3r25++tubtz/9fPPmb3/9849v3lyPA/0rNIW9vUPYoLchNVs7BDN0e7f9i2Z2e7f9Mf/QENlSLgZ38M/le/16H/iaVQ8mQTZckTNQ+EcAEljjVrqjqNwKMFzn2h/bZwX+y49Xr6+vr66v/+Xqzz/O2G5m/zKLeKM9WQ/mu08fkSARF7GnVBOxQNHtnWuTyRcKQ1GILcVIkC0RsnnVcnuHEs4fW8/nNTUQlcTzNMnknI+qF1/0x9lXfCiMvVySyMZl0quEbEni6pRfkE+/3rx0HpHVhR40c6HNGYEWqXWqCV6QpNKHwBRg19T+1zV4wi+WnM8WWMxWPMFsNeNiNXuh9fui/ItGjC2vya1puPrurvCyJo8iviG2yBlmiGwWJI5JjCKe5gXNNYE6YfjCWqn0zQ8/pNkioZHMlkv6BDgGz+U5dDoJ55n+rMnZDy2cmOY1ez4mMAPtdEM2L6wHsYuEhGvGUIQi3SUdeCi2bF6xzw8EZqs+T3PEcCWlLyAVwwTlXr9C0RqbnEfT9LavIXUONVSXh04u5CngeeftQvIkU9V6bOSJRJm5AOiGBG+ag02cz8XMgddlLsrjLZfZjme6A2k/qhxIWiubM74hjiHxUM2fqvfisYxsbPGwoKErBTHbjO4m5r5a+zNlaabm7kMbmiTUPpAeeSCFVehkhVoyBanZd1d6ZN+gbCdX9Ls8gvsC/vvFd17q8De04XEGQcH6OamspnxILXn/aHolqGu7fM+W9bdLaju9dWgLQM4MfRdwJsoCGTgPzAWBIF8yIsN1SYOYgiOK1pjFSe1AXuVPniIC1MIiaCFb5b0TVJF52CZoVfmBA/JwqA8CjqfBgeN+7uFcAnebQv0jvuPiMeRG8jvQ6+EWTjrLLh0kJI5gAga7Abh3cUpD/xJdI7pEUtEkQTkvxMiumHxcrYnYUUnQqy6kgS1AufusBeKa0D6biLzh2wUpJonC8xMBQ3ipiHD/ARXYEo5jV+vYPmFA79/+ff7x5//z+ef7T/ddsgQ3cD/nBG1x6S7uayzwIxV0DglRgRDcmG6EhR4XprJ3PQushkXSFcNJMDVsKLTRslRRU0Av+/mXjDSaBQW4CbModpiapkAcLUjn9udQ1X0EdJgfa42UdQ0uojXB6SVK9fnxUqO8RItMPl/CjebLTrMgA6Ly9JpwKe2mckBSvFHFRV11urQtLtFXIjhS4hk9XF3ZdGBTgvwBceAKtSpKrptXpq38Gmjk/69t+tGQBxo7Y6nng839mE4ce0TxtZE5dAfPTz910o3NQ6Z4x4Kal4+GZv+KVk+hvCWBmcztyddOifF2NR8eV+07lm+JwCuCtBo5k6Rd3xEXJJznZDe325t2XuYj84DOIc57DhKB7rp4u41loptFVXXSPZ36/WigoVEUfu8AsqYCLmDxO+tVLIJnKthN50cghrwOl589Xy6NUxQIwQdHbwCICY5txWAsMU20q6d5dCoi9ImtAUGzkC7osZXpmkDU3YU9tvfwm5bAh/3ruNBHwQQdHvyIscJSVW8KRkfHfEROn7xy41A16eY3zVLTD8fyF5oQGwpsEM4nJk5xRNXzrD1D9rBwQp5U725U6kODOnNrGziXgvhTz/eF+YsgJDhK7ZcGRfnZOLoToGz2WDsIo22XNhRlvT1bwyTUrn5HW4Pa909vCP6dS9VuA6I0M8OyWYc6dsCwvLv7jChD72tUy2yNBQjHtyit28MYlnQ4vrCge9jax1/TLNP31cqHo9enBTeVRQ4EbxpDfCg4RpQ+LMz1fwWMRfxmyKIq2dwHMgf7DY7W1Sve0daqldI+dmtk1sxBdiusjXSRkvdGD2dnLsvmY6VPHpMZEb5E/6YZHLxcASvktU8IFeZIGLsXXq0V6xdMr2AGw4MtG8PDsUaZVHwzb1z1Fgi9ldErFdH3WsjvgHHzjvnIBtseiHeUxXwnSwfi381vWg7E2tb+53/BP9/DmRjSyX7Pqcg1F2oecbakqzdoiRM59NRcIEGHnJr9u0KeSkDElkaHZZpYGrVUE3tTUNKGYyYPTTFvCR32JDauf//zb//7l+j67ci+p29RxuiXDPpy5tVijSQukROjNZZrd56xO/P3Ev3b59sbeKTpq8FjaYBMPXlJI3fOXOTfSSS39cDigGSZEdBiKtMEP8/3hmjnxs9bfSJ8x5OERKqR9zgAswUCsNxIuGHqFsH2zA8aV/lkVoBQWQpk6ohMD1PPy4SHt5niG6xo9NB8kvDwE+fq4RI93FCJFwmJ9b/fY5bh5OESJtrDPQRzHvpFDvnqCfq7Q5ETVHn31C/tO9O4i7KVT9w7nEn4k/mnkfejuULS/7zXGs7/zdPU/Nsowrwh7NMEeaLaPMchY2pcFOxzo2dSAagxjhDhRZqtbaNnF5y5rGs+YoYMAWmlRYqbF5KUrWxav+09C7RXhBFBo7rVbdAsYchYYvJsi6WfCm76pmL3qyvbqyoqfbMvsXX4JU/xFOLVv458KgD6drPCr+9SOr5Ls7m7venLBoV8wfNMZ7RSfi9dVmOl1Zs3v/Er54+EpJAh43yb/8f5f8DvWryb/O/56/PIWOiiE/uSZ+IqIUpB0yBGFYf2lzYzGvb6Hh9o1eYBlRGj4T4QQg/5Nx/q9QONFHmb8cVzIWP+9TJ21HEVsWFKHOQ5aQIDENbVbL5XIWUhH5bBq49+YQ/pxfxxtFue46ap4E90gxWZx1jheeO2/IC78IK2yaLgyxIuzc2PKcGKsOh5hrehcu3crbylnHehJkySjd4ZtZJkcwH70JF0TTZE4EQGzZEobgtzBugr4zFpgbHkUHt4ittKR7lSm8M1BGl/fb/BT1BtcO44cRFUQ+9tKefifTNcsBfcZF6P2Z0WitnWSPhHngm3waHyTxxWN+EGzawcRqOI3N4wKBsPg2WbOU7oluiNg5knxeFnWYm2dquKkcpfRReJZIDGD5anhE06635rn22at1seA2cazxR0t6dsNV02bIlJkRMDamXEpLAtiroa+T4XJZmsFNhDlXJT8GR9JkhEaD23JgTmQn825uRYIseyG5gkE4x4OyjNrgUQMaMrn1kUfmgtdShPAOsmwkI8Q9XEyiLKN7bcmLfUkSFiS0ToWhwfeUJcpacmphYkUOhhPt22ZhiUdrfc0YMzHkZ6s60oRJ9hEoLjtkWxJUKOK7cw2GmzpOFAvchoEiOphFnPBrQf0Q6raD2R+QPaRJbMsiTKVdCAkgBDjSC4NROhNC5Tw4lvxfffAQAA///Ldn+8" + return "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" } diff --git a/metricbeat/metricbeat.reference.yml b/metricbeat/metricbeat.reference.yml index 1b4be104c26..12ca2f08683 100644 --- a/metricbeat/metricbeat.reference.yml +++ b/metricbeat/metricbeat.reference.yml @@ -427,6 +427,21 @@ metricbeat.modules: # password configuration options. hosts: ["localhost:27017"] + # Optional SSL. By default is off. + #ssl.enabled: true + + # Mode of verification of server certificate ('none' or 'full') + #ssl.verification_mode: 'full' + + # List of root certificates for HTTPS server verifications + #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"] + + # Certificate for SSL client authentication + #ssl.certificate: "/etc/pki/client/cert.pem" + + # Client Certificate Key + #ssl.key: "/etc/pki/client/cert.key" + # Username to use when connecting to MongoDB. Empty by default. #username: user diff --git a/metricbeat/module/mongodb/_meta/config.reference.yml b/metricbeat/module/mongodb/_meta/config.reference.yml index 8f2386a21f1..5dc37cb250c 100644 --- a/metricbeat/module/mongodb/_meta/config.reference.yml +++ b/metricbeat/module/mongodb/_meta/config.reference.yml @@ -10,6 +10,21 @@ # password configuration options. hosts: ["localhost:27017"] + # Optional SSL. By default is off. + #ssl.enabled: true + + # Mode of verification of server certificate ('none' or 'full') + #ssl.verification_mode: 'full' + + # List of root certificates for HTTPS server verifications + #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"] + + # Certificate for SSL client authentication + #ssl.certificate: "/etc/pki/client/cert.pem" + + # Client Certificate Key + #ssl.key: "/etc/pki/client/cert.key" + # Username to use when connecting to MongoDB. Empty by default. #username: user diff --git a/metricbeat/module/mongodb/_meta/config.yml b/metricbeat/module/mongodb/_meta/config.yml index 18589bb4ef7..926ff907b3a 100644 --- a/metricbeat/module/mongodb/_meta/config.yml +++ b/metricbeat/module/mongodb/_meta/config.yml @@ -11,6 +11,21 @@ # password configuration options. hosts: ["localhost:27017"] + # Optional SSL. By default is off. + #ssl.enabled: true + + # Mode of verification of server certificate ('none' or 'full') + #ssl.verification_mode: 'full' + + # List of root certificates for HTTPS server verifications + #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"] + + # Certificate for SSL client authentication + #ssl.certificate: "/etc/pki/client/cert.pem" + + # Client Certificate Key + #ssl.key: "/etc/pki/client/cert.key" + # Username to use when connecting to MongoDB. Empty by default. #username: user diff --git a/metricbeat/module/mongodb/_meta/fields.yml b/metricbeat/module/mongodb/_meta/fields.yml index 8ed17fb6399..a69721ffca7 100644 --- a/metricbeat/module/mongodb/_meta/fields.yml +++ b/metricbeat/module/mongodb/_meta/fields.yml @@ -4,6 +4,7 @@ Metrics collected from MongoDB servers. short_config: false release: ga + settings: ["ssl"] fields: - name: mongodb type: group diff --git a/metricbeat/module/mongodb/collstats/collstats.go b/metricbeat/module/mongodb/collstats/collstats.go index fdb123bddff..d3ed7b2da0a 100644 --- a/metricbeat/module/mongodb/collstats/collstats.go +++ b/metricbeat/module/mongodb/collstats/collstats.go @@ -24,8 +24,6 @@ import ( "github.com/elastic/beats/libbeat/logp" "github.com/elastic/beats/metricbeat/mb" "github.com/elastic/beats/metricbeat/module/mongodb" - - "gopkg.in/mgo.v2" ) var debugf = logp.MakeDebug("mongodb.collstats") @@ -42,24 +40,18 @@ func init() { // additional entries. These variables can be used to persist data or configuration between // multiple fetch calls. type MetricSet struct { - mb.BaseMetricSet - dialInfo *mgo.DialInfo + *mongodb.MetricSet } -// New create a new instance of the MetricSet +// New creates a new instance of the MetricSet // Part of new is also setting up the configuration by processing additional // configuration entries if needed. func New(base mb.BaseMetricSet) (mb.MetricSet, error) { - dialInfo, err := mgo.ParseURL(base.HostData().URI) + ms, err := mongodb.NewMetricSet(base) if err != nil { return nil, err } - dialInfo.Timeout = base.Module().Config().Timeout - - return &MetricSet{ - BaseMetricSet: base, - dialInfo: dialInfo, - }, nil + return &MetricSet{ms}, nil } // Fetch methods implements the data gathering and data conversion to the right format @@ -70,7 +62,7 @@ func (m *MetricSet) Fetch() ([]common.MapStr, error) { var events []common.MapStr // instantiate direct connections to each of the configured Mongo hosts - mongoSession, err := mongodb.NewDirectSession(m.dialInfo) + mongoSession, err := mongodb.NewDirectSession(m.DialInfo) if err != nil { return nil, err } diff --git a/metricbeat/module/mongodb/dbstats/dbstats.go b/metricbeat/module/mongodb/dbstats/dbstats.go index 96459c16954..626d1b7b135 100644 --- a/metricbeat/module/mongodb/dbstats/dbstats.go +++ b/metricbeat/module/mongodb/dbstats/dbstats.go @@ -20,8 +20,6 @@ package dbstats import ( "errors" - "gopkg.in/mgo.v2" - "github.com/elastic/beats/libbeat/common" "github.com/elastic/beats/libbeat/logp" "github.com/elastic/beats/metricbeat/mb" @@ -44,24 +42,18 @@ func init() { // additional entries. These variables can be used to persist data or configuration between // multiple fetch calls. type MetricSet struct { - mb.BaseMetricSet - dialInfo *mgo.DialInfo + *mongodb.MetricSet } // New creates a new instance of the MetricSet // Part of new is also setting up the configuration by processing additional // configuration entries if needed. func New(base mb.BaseMetricSet) (mb.MetricSet, error) { - dialInfo, err := mgo.ParseURL(base.HostData().URI) + ms, err := mongodb.NewMetricSet(base) if err != nil { return nil, err } - dialInfo.Timeout = base.Module().Config().Timeout - - return &MetricSet{ - BaseMetricSet: base, - dialInfo: dialInfo, - }, nil + return &MetricSet{ms}, nil } // Fetch methods implements the data gathering and data conversion to the right format @@ -72,7 +64,7 @@ func (m *MetricSet) Fetch() ([]common.MapStr, error) { var events []common.MapStr // instantiate direct connections to each of the configured Mongo hosts - mongoSession, err := mongodb.NewDirectSession(m.dialInfo) + mongoSession, err := mongodb.NewDirectSession(m.DialInfo) if err != nil { return nil, err } diff --git a/metricbeat/module/mongodb/metricset.go b/metricbeat/module/mongodb/metricset.go new file mode 100644 index 00000000000..27e74450b6d --- /dev/null +++ b/metricbeat/module/mongodb/metricset.go @@ -0,0 +1,70 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package mongodb + +import ( + "crypto/tls" + "net" + + "gopkg.in/mgo.v2" + + "github.com/elastic/beats/libbeat/common/transport/tlscommon" + "github.com/elastic/beats/metricbeat/mb" +) + +// ModuleConfig contains the common configuration for this module +type ModuleConfig struct { + TLS *tlscommon.Config `config:"ssl"` +} + +// MetricSet type defines all fields of the MetricSet +type MetricSet struct { + mb.BaseMetricSet + DialInfo *mgo.DialInfo +} + +// NewMetricSet creates a new instance of the MetricSet +func NewMetricSet(base mb.BaseMetricSet) (*MetricSet, error) { + var config ModuleConfig + err := base.Module().UnpackConfig(&config) + if err != nil { + return nil, err + } + + dialInfo, err := mgo.ParseURL(base.HostData().URI) + if err != nil { + return nil, err + } + dialInfo.Timeout = base.Module().Config().Timeout + + if config.TLS.IsEnabled() { + tlsConfig, err := tlscommon.LoadTLSConfig(config.TLS) + if err != nil { + return nil, err + } + + dialInfo.DialServer = func(addr *mgo.ServerAddr) (net.Conn, error) { + return tls.Dial("tcp", addr.String(), tlsConfig.BuildModuleConfig("")) + } + } + + return &MetricSet{ + BaseMetricSet: base, + DialInfo: dialInfo, + }, nil +} diff --git a/metricbeat/module/mongodb/status/status.go b/metricbeat/module/mongodb/status/status.go index 44d7e3c1734..07e643ef4ca 100644 --- a/metricbeat/module/mongodb/status/status.go +++ b/metricbeat/module/mongodb/status/status.go @@ -23,7 +23,6 @@ import ( "github.com/elastic/beats/metricbeat/mb" "github.com/elastic/beats/metricbeat/module/mongodb" - "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" ) @@ -47,24 +46,18 @@ func init() { // additional entries. These variables can be used to persist data or configuration between // multiple fetch calls. type MetricSet struct { - mb.BaseMetricSet - dialInfo *mgo.DialInfo + *mongodb.MetricSet } // New creates a new instance of the MetricSet // Part of new is also setting up the configuration by processing additional // configuration entries if needed. func New(base mb.BaseMetricSet) (mb.MetricSet, error) { - dialInfo, err := mgo.ParseURL(base.HostData().URI) + ms, err := mongodb.NewMetricSet(base) if err != nil { return nil, err } - dialInfo.Timeout = base.Module().Config().Timeout - - return &MetricSet{ - BaseMetricSet: base, - dialInfo: dialInfo, - }, nil + return &MetricSet{ms}, nil } // Fetch methods implements the data gathering and data conversion to the right format @@ -73,7 +66,7 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { func (m *MetricSet) Fetch() (common.MapStr, error) { // instantiate direct connections to each of the configured Mongo hosts - mongoSession, err := mongodb.NewDirectSession(m.dialInfo) + mongoSession, err := mongodb.NewDirectSession(m.DialInfo) if err != nil { return nil, err } diff --git a/metricbeat/modules.d/mongodb.yml.disabled b/metricbeat/modules.d/mongodb.yml.disabled index b9bfe31b814..7ba8f66a9fb 100644 --- a/metricbeat/modules.d/mongodb.yml.disabled +++ b/metricbeat/modules.d/mongodb.yml.disabled @@ -14,6 +14,21 @@ # password configuration options. hosts: ["localhost:27017"] + # Optional SSL. By default is off. + #ssl.enabled: true + + # Mode of verification of server certificate ('none' or 'full') + #ssl.verification_mode: 'full' + + # List of root certificates for HTTPS server verifications + #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"] + + # Certificate for SSL client authentication + #ssl.certificate: "/etc/pki/client/cert.pem" + + # Client Certificate Key + #ssl.key: "/etc/pki/client/cert.key" + # Username to use when connecting to MongoDB. Empty by default. #username: user From b37a82f3f8ca862745100a692291412d459bbca5 Mon Sep 17 00:00:00 2001 From: Jaime Soriano Pastor Date: Mon, 25 Jun 2018 10:39:31 +0200 Subject: [PATCH 2/3] Set server name in tls config --- metricbeat/module/mongodb/metricset.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/metricbeat/module/mongodb/metricset.go b/metricbeat/module/mongodb/metricset.go index 27e74450b6d..cc75df8048e 100644 --- a/metricbeat/module/mongodb/metricset.go +++ b/metricbeat/module/mongodb/metricset.go @@ -24,6 +24,7 @@ import ( "gopkg.in/mgo.v2" "github.com/elastic/beats/libbeat/common/transport/tlscommon" + "github.com/elastic/beats/libbeat/logp" "github.com/elastic/beats/metricbeat/mb" ) @@ -59,7 +60,12 @@ func NewMetricSet(base mb.BaseMetricSet) (*MetricSet, error) { } dialInfo.DialServer = func(addr *mgo.ServerAddr) (net.Conn, error) { - return tls.Dial("tcp", addr.String(), tlsConfig.BuildModuleConfig("")) + hostname, _, err := net.SplitHostPort(base.HostData().Host) + if err != nil { + logp.Warn("Failed to obtain hostname from `%s`: %s", hostname, err) + hostname = "" + } + return tls.Dial("tcp", addr.String(), tlsConfig.BuildModuleConfig(hostname)) } } From 280223a8bf1058878acbefefc8c6b5c4d90dc4db Mon Sep 17 00:00:00 2001 From: Jaime Soriano Pastor Date: Tue, 26 Jun 2018 16:29:36 +0200 Subject: [PATCH 3/3] Remove references to HTTP in mongodb configs --- metricbeat/docs/modules/mongodb.asciidoc | 2 +- metricbeat/metricbeat.reference.yml | 2 +- metricbeat/module/mongodb/_meta/config.reference.yml | 2 +- metricbeat/module/mongodb/_meta/config.yml | 2 +- metricbeat/modules.d/mongodb.yml.disabled | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/metricbeat/docs/modules/mongodb.asciidoc b/metricbeat/docs/modules/mongodb.asciidoc index 44dc8407a44..0b9129ee2ee 100644 --- a/metricbeat/docs/modules/mongodb.asciidoc +++ b/metricbeat/docs/modules/mongodb.asciidoc @@ -83,7 +83,7 @@ metricbeat.modules: # Mode of verification of server certificate ('none' or 'full') #ssl.verification_mode: 'full' - # List of root certificates for HTTPS server verifications + # List of root certificates for TLS server verifications #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"] # Certificate for SSL client authentication diff --git a/metricbeat/metricbeat.reference.yml b/metricbeat/metricbeat.reference.yml index 12ca2f08683..19ce5429999 100644 --- a/metricbeat/metricbeat.reference.yml +++ b/metricbeat/metricbeat.reference.yml @@ -433,7 +433,7 @@ metricbeat.modules: # Mode of verification of server certificate ('none' or 'full') #ssl.verification_mode: 'full' - # List of root certificates for HTTPS server verifications + # List of root certificates for TLS server verifications #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"] # Certificate for SSL client authentication diff --git a/metricbeat/module/mongodb/_meta/config.reference.yml b/metricbeat/module/mongodb/_meta/config.reference.yml index 5dc37cb250c..d99d2938b94 100644 --- a/metricbeat/module/mongodb/_meta/config.reference.yml +++ b/metricbeat/module/mongodb/_meta/config.reference.yml @@ -16,7 +16,7 @@ # Mode of verification of server certificate ('none' or 'full') #ssl.verification_mode: 'full' - # List of root certificates for HTTPS server verifications + # List of root certificates for TLS server verifications #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"] # Certificate for SSL client authentication diff --git a/metricbeat/module/mongodb/_meta/config.yml b/metricbeat/module/mongodb/_meta/config.yml index 926ff907b3a..e92b3d5f513 100644 --- a/metricbeat/module/mongodb/_meta/config.yml +++ b/metricbeat/module/mongodb/_meta/config.yml @@ -17,7 +17,7 @@ # Mode of verification of server certificate ('none' or 'full') #ssl.verification_mode: 'full' - # List of root certificates for HTTPS server verifications + # List of root certificates for TLS server verifications #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"] # Certificate for SSL client authentication diff --git a/metricbeat/modules.d/mongodb.yml.disabled b/metricbeat/modules.d/mongodb.yml.disabled index 7ba8f66a9fb..36b4669095c 100644 --- a/metricbeat/modules.d/mongodb.yml.disabled +++ b/metricbeat/modules.d/mongodb.yml.disabled @@ -20,7 +20,7 @@ # Mode of verification of server certificate ('none' or 'full') #ssl.verification_mode: 'full' - # List of root certificates for HTTPS server verifications + # List of root certificates for TLS server verifications #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"] # Certificate for SSL client authentication