Skip to content

Instantly share code, notes, and snippets.

@chumpa
Created October 8, 2021 10:40
Show Gist options
  • Save chumpa/10ff7530e57810c2d306ceeb420b867f to your computer and use it in GitHub Desktop.
Save chumpa/10ff7530e57810c2d306ceeb420b867f to your computer and use it in GitHub Desktop.
Скачать CPI OSGI Bundle по имени класса
import com.sap.gateway.ip.core.customdev.util.Message as CpiMsg
//import org.apache.felix.framework.BundleImpl
CpiMsg osgi1(CpiMsg msg) {
String s = msg.getBody(String) ?: "import com.sap.it.api.ITApiFactory"
StringBuilder log = new StringBuilder()
s.eachLine {String q ->
String fqcn = q.startsWith("import ") ? q.substring("import".length()).trim() : q.trim()
log << fqcn << "\n"
Class c = this.class.forName(fqcn)
log << c << "\n"
Map props= c.classLoader.getProperties()
log << props << "\n"
def bundle = props.bundle
if (bundle) {
log << bundle.class << "\n"
def arch = bundle.getArchive()
log << arch << "\n"
log << arch.getCurrentRevision() << "\n"
def cnt = arch.getCurrentRevision().getContent()
log << cnt << "\t" << cnt.class << "\n"
File jar = cnt.getFile()
String b64 = jar.readBytes().encodeBase64()
log << b64 << "\n"
}
log << "*************************************************************************\n\n"
}
msg.setBody(log as String)
return msg;
}
@chumpa
Copy link
Author

chumpa commented Oct 8, 2021

На входе payload:
import com.sap.it.api.asdk.datastore.DataStoreService

На выходе:
com.sap.it.api.asdk.datastore.DataStoreService
interface com.sap.it.api.asdk.datastore.DataStoreService
{packages=[Ljava.lang.Package;@4b9e6715, parallel=true, class=class org.apache.felix.framework.BundleWiringImpl$BundleClassLoader, activationTriggered=true, systemClassLoader=System [class=sun.misc.Launcher$AppClassLoader,id=7475,parents=Extension@7401,urls=file:/usr/sap/ljs/lib/boot/org.apache.karaf.diagnostic.boot-4.2.11.jar,file:/usr/sap/ljs/lib/boot/org.apache.karaf.jaas.boot-4.2.11.jar,file:/usr/sap/ljs/lib/boot/org.apache.karaf.main-4.2.11.jar,file:/usr/sap/ljs/lib/boot/osgi.core-6.0.0.jar,file:/usr/sap/ljs/lib/boot/org.apache.karaf.specs.activator-4.2.11.jar], bundle=com.sap.it.asdk.com.sap.it.api.asdk [488], bootstrapClassPath=sun.misc.URLClassPath@64abf387, parent=java.net.URLClassLoader [id=23574,parents=System@7475]}
class org.apache.felix.framework.BundleImpl
org.apache.felix.framework.cache.BundleArchive@66265b6
org.apache.felix.framework.cache.JarRevision@560a548d
JAR /usr/sap/ljs/data/cache/bundle488/version0.0/bundle.jar class org.apache.felix.framework.cache.JarContent
UEsDBBQACAgIAIdx/lIAAAAAAAAAAAAAAAAUAAQATUVUQS1JTkYvTUFOSUZFU1QuTUb+ygAAlVRbb9owFH5H4j9YPEwgNSYJFEoQD/Syia50iHR9ndzkQD0S27MdLvv1OwRIx5rS9fX4u/k7icdM8BkY6zyCNlyKgHjUrVYuRezcMWPHMuYzDjGOO363c95utdptv4WAjCexcxsvtoQL6v7wuv5h+sBTVGSpCojv+p7bbble29sfW+dyExClMq0S2I5EnIAzjCxfMosBJjLhESIS9ntTHF+DiTRXNg84jJmyoEl4/ZVMM2HRjSimQVj6QpDR9+ldQJ6tVUGzuVqtqGGKRjItIOP9zYuL+8XRPUshIAjOSdxSpjhlJl4UiHCTPm2DvkYiip5iPoKIpQ5IOJz8NSu67+T1X2lgFuK8qqFi0TOQMVuCIDsCmSTZnItq5WatpLbOhEULNi+PTGEdQd5cf7mzGdR2NrWzPbxaIUcMvSu1nxkwwaBWJsoFbmDGIjC1F1nU+Uf5iGMgyjQWLvVJaVijzj5yqU6pd5kx6rzmnKYc8DGzrEiKOm+H/UDSrc67zgvYvFfRdl//a3z2ky3Zmgqw1JjkuLB8Xy6ubZR+4DN60xDlyjyrlSn8yrgG54op9sQTbvGrlmbOKUB/hi8CaLxn/VN9PxvcIj28adQPWfGBaTQwZgh6ySPUkZhX4P8ekG/hl5Ezuv/c1DDnBpXoOkXHBymTgGwfsRY9py71Xa/r9vyed9HuVSt/AFBLBwi76eS/CAIAAPQEAABQSwMEFAAICAgAh3H+UgAAAAAAAAAAAAAAAAkAAABNRVRBLUlORi8DAFBLBwgAAAAAAgAAAAAAAABQSwMEFAAICAgAh3H+UgAAAAAAAAAAAAAAAA8AAABNRVRBLUlORi9tYXZlbi8DAFBLBwgAAAAAAgAAAAAAAABQSwMEFAAICAgAh3H+UgAAAAAAAAAAAAAAAB8AAABNRVRBLUlORi9tYXZlbi9jb20uc2FwLml0LmFzZGsvAwBQSwcIAAAAAAIAAAAAAAAAUEsDBBQACAgIAIdx/lIAAAAAAAAAAAAAAAAzAAAATUVUQS1JTkYvbWF2ZW4vY29tLnNhcC5pdC5hc2RrL2NvbS5zYXAuaXQuYXBpLmFzZGsvAwBQSwcIAAAAAAIAAAAAAAAAUEsDBBQACAgIAIdx/lIAAAAAAAAAAAAAAABBAAAATUVUQS1JTkYvbWF2ZW4vY29tLnNhcC5pdC5hc2RrL2NvbS5zYXAuaXQuYXBpLmFzZGsvcG9tLnByb3BlcnRpZXNdyb0KwjAQAOA9T3HQ/UhqcSh0EhSd9QGuyTUexiTkR/TtHdz81m84ceRCjR2sH0jFI2Wyd8aNg7xx7dEFzqF7iWo4FoFLD7DTYKbZjLOZ4HY9wKhHo15cqqS4GNwb1MqX1PPZLTY9sVJGaUjVPRSVJhvZ9ldZfv0FUEsHCGUzxGx5AAAAkAAAAFBLAwQUAAgICACAcf5SAAAAAAAAAAAAAAAAOgAAAE1FVEEtSU5GL21hdmVuL2NvbS5zYXAuaXQuYXNkay9jb20uc2FwLml0LmFwaS5hc2RrL3BvbS54bWylVMGO0zAQPSdfseo9dgsrDlU2EgdAlbbsSosQV28yTd0mtmU7bfbvGdtpEwcKSNzy3jzPPM94kistD1Dau75thHlY7K1Va0pbdgJBmGLlHojUNX1+2tJ7siTLRVCue8Ov6vP5TM7vve7dcrmiP7aPL3iwZRkXxjJRwiJN8MDaePZRlsxyKf6h2t0tRW+qQGZeRxAvijRN8lZW0HwHbbBA4WM5jTgnYtryHSvtpipK2RLDFOEW03PCTHXM6SSOasFa+L3OR1CBvo6s5qIuXjtRNZDTkUl9XIOwqEzyWstOzer6XJeAE03qu2CmbRZSzKwl+Wm41Yp8WLmrXrCLaWiwzyd4ZnZfEEIVlsTh5TQKoD168YffFSgQFYiSg/FZrsSbg+MFcArENLv7Q2Q98u7DGbYrsp0kXjdxTlaxcRrX/KMFaWp+28FFQbDdLgfv2pmX5NeCE+ibgMxrx5tqaKqRnS5Dc0boETrlGpdJ6rfi6eXLJtt8/YzJrlzQWKZrsL73o2hCBtWONxa0e0BWd/igRuzr0qjwbRvbT98+/tXGKPovGyMKL0c1HW7A0KgAhqzTAQ5LvYOG9/Ego0mGZQ/rlYVk82XAA9BbEO4dmcHvhAiGRx+Xb+NHPkzYLauWCjDxcIsDw4dZC9DEHLka0s5Iv0OTYx6532qR/gRQSwcIhU1M0fsBAABhBQAAUEsDBBQACAgIAIdx/lIAAAAAAAAAAAAAAAAJAAAAT1NHSS1JTkYvAwBQSwcIAAAAAAIAAAAAAAAAUEsDBBQACAgIAHBx/lIAAAAAAAAAAAAAAAAVAAAAT1NHSS1JTkYvcmVnaXN0ZXIueG1sbZC9bsMwDIR3P4XAvVSyFYblbAWyFW36AIrMuEStH0iKXb99CRcpUMDrfcfjkd3p209qplw4BgNHPICi4OLAYTTwcXl5eoZT33TF5dZFn2KgUJXMhNKKZuCz1tRqvSwLxjIyxjzqDWvBej7iFhmsJwMSgMUm5Io2MdoyfEHfKKU69mkiL9G2Sg/lJlvKrh/zPVT2hG80cql5Bf2bkOlGWZqTunIYDOSNU36nPLMjUM5mOcpOXFcDB8QAioMYbtbtV8M/XPD1fp3YnS/nh/Q4aQekKIrsGFaxsJOC0q/p9L8X9s0PUEsHCLVJ1FLkAAAAegEAAFBLAwQUAAgICACHcf5SAAAAAAAAAAAAAAAABAAAAGNvbS8DAFBLBwgAAAAAAgAAAAAAAABQSwMEFAAICAgAh3H+UgAAAAAAAAAAAAAAAAgAAABjb20vc2FwLwMAUEsHCAAAAAACAAAAAAAAAFBLAwQUAAgICACHcf5SAAAAAAAAAAAAAAAACwAAAGNvbS9zYXAvaXQvAwBQSwcIAAAAAAIAAAAAAAAAUEsDBBQACAgIAIdx/lIAAAAAAAAAAAAAAAAPAAAAY29tL3NhcC9pdC9hcGkvAwBQSwcIAAAAAAIAAAAAAAAAUEsDBBQACAgIAIdx/lIAAAAAAAAAAAAAAAAUAAAAY29tL3NhcC9pdC9hcGkvYXNkay8DAFBLBwgAAAAAAgAAAAAAAABQSwMEFAAICAgAh3H+UgAAAAAAAAAAAAAAAB4AAABjb20vc2FwL2l0L2FwaS9hc2RrL2RhdGFzdG9yZS8DAFBLBwgAAAAAAgAAAAAAAABQSwMEFAAICAgAh3H+UgAAAAAAAAAAAAAAACwAAABjb20vc2FwL2l0L2FwaS9hc2RrL2RhdGFzdG9yZS9EYXRhQmVhbi5jbGFzc51TXU8TQRQ9s9t2adlSqIDIhwIqbktl/QAxgZCAxNgE1KSGF56GdlIWym6zOzUh/ilINBpjePTBH2W8s9vWdimJ8WXm7pl7zz33zOyv39+vAKxiPQMDpTRSeKyWlQxsPFHRUwPPDDxnMGtc8u2gIn3Bzxgm9k74R247nl12my0ZwRsMw1Hatu/zcwbtcIfBOBa8JvyAIRcVtaTTsPd5k9LTFafuctnyBcNa/+lm9Nngbt0mesetb/Qg745ORFVubBFHatNxHbnFoFuFA4bEK68mVC/HFW9bZ0fC/8CPGoTk97wqbxxw31HfbTAhjx1SZu1VvTM74E3bkTZvOjYPaqe2miWQni/sXYp2BHepXa4u5G6fF7etwg1u5IJ47pQ1MFUJH+kSt91LWAXlX6oh3Lo8ZmBlwpQmhmxF8uopudQeYySI1Satwx1FmiHSNx3/xzpCe25gPY79s++ZoIc6b8WYVfPJfsfPmx3XX1r/1TMcqOK1/Kp47SiebOdeVlS2iVGMmRhC2kQGwwZWTazhhQkTWYalf7thhtF45z6och5IQReZ5sroqtcks4vWdbXlAVC5cIAF+qkM+ud0aEopRZoSG+6kE3SXYZyjLKYGojVPiE07oz1Z/Ap2GabcojUVggbGaTWjBExgknZ6l5i6VvwZ2kWseGRg8R1Mt4u3KFtT2cXlL9D+ts6EaJ5qxkOGySirzaAiNZ9qPIPZNtcnytZpnych+k9Mq+1qc+bH0L6K9JI+8w2J0gW7CB1SXaaJBzSKQcNkSdUYIbPEeBdzYdd5yssSOkcIvXCK75GbWngSKZkPuZg6XsDioKH0+FCLJPPBDUOpy1JD3acM7Zq7ybi7jwa4G93wQ8KW6Dwied8rKHnZnT8StEy1pRsERa/G6nZRSK77jgoUFcNo+Q9QSwcIZgXJ5q0CAADuBQAAUEsDBBQACAgIAIdx/lIAAAAAAAAAAAAAAAAuAAAAY29tL3NhcC9pdC9hcGkvYXNkay9kYXRhc3RvcmUvRGF0YUNvbmZpZy5jbGFzc42SXU8TQRSG39m2tLtdbPkUFAUUdVuQBcRPkAQREwmBCwwm3E3bBQfLbrO7oP4oE01EjRf+AH+U8cx0act2m5gm58xM3/fMc87On7+/fgNYxpoBA/M6dNgyLMiwKMOSgQdYluGh3D7K4nEWTxj0IPR8Z4efOAyD28f8jNt17h7Ze6Ev3KMVBk3USOWdOf5bX4SkYgcMWcet+p8aoVx9bAjfCeh8i6FvVbgiXGNIWaV9hvSGVyNHYVu4zs7pScXx3/BKXd3kVXl9n/tC7qPDdPhOUJ3ydtU7sQPesEVo84aweVB7b9d4yBWq/ZJWG557KCSdeeSEe+0Ohq1SUg9mcEk1YnWLJG6Gir2mbjNBMxu037xojzqiBo2g4yhtbUlbvubt0ng+NMczcgnhhefVHe5GDB2yUStBJaupUUeiocRKes3bvBi/4mlt9rxTv+q8EnKahfac5mUVE0MYNpGHaaJfhgEMmriCQhZPTTzDiolVPDdRRIHB+t9PwFBsI+5Wjp0qcQx0UdM7OeP1U2f3UHZ+0GNCleZyXyrVwA8wTW/VoJedgSbRaaVJepWJXeVilKkhynkw2SnFEdrZlJn0l3+AfVWyUYp96jCFqxTNpgBjGKfMcA3Xu8zfoH2Jmc1E8wRuROY1UmtSXZ49h9a+2lCnRfIMqAqjTVVUQa7yqirDzUSQVBxkOBFkMhkkFQcZI894D5D+CGSKPsMFiNYCSX+OgUwkgtzC7RZIin4SZPIc6TjIFHmme4DILytBZnAnqrUUTSRHIJmf6IsPZaaDJddiuYt7kX89Gopenv2O7DkycRyLbKUOHL2Fo9N/JXV9OREnl4Azl4gz2xMnF8dZINtiD5xihDOnPPf/AVBLBwhgKeQCiwIAAAwGAABQSwMEFAAICAgAh3H+UgAAAAAAAAAAAAAAADQAAABjb20vc2FwL2l0L2FwaS9hc2RrL2RhdGFzdG9yZS9EYXRhU3RvcmVTZXJ2aWNlLmNsYXNzjVFLTsMwEH1uQgLlV5A4A+2mZsEuO6BIkSpACrB3nWnkEpwocSrOxoIDcCjEZFFa8RFZjDzz5Pfx+P3j9Q3AOY5DHIQ4DDEQ8MrGCTwMp7p4lrUqpXFSlUaqOn2SqXKqdkVF8oq7C1I26nDvsrBzk0WjR4H+5EVT6Uxh6xBH7JYRu90Mpwu1VDJXNpOJq4zNop/IqGskgSClnBwJnHZTjjlZUjSVpmuTM+2k1Upa1YSqpdE0bjkC4/8TbLIEBmuv29mCND/27DcNYx1Vc6WplnfNLDc6vo9X0B8UWm1ybfu13EBAoMfl8f96voCPLZ4Cnnw+Q0a2sfMN6WN3E+Ha476H/U9QSwcIRLwGogQBAAAoAgAAUEsDBBQACAgIAIdx/lIAAAAAAAAAAAAAAAAeAAAAY29tL3NhcC9pdC9hcGkvYXNkay9leGNlcHRpb24vAwBQSwcIAAAAAAIAAAAAAAAAUEsDBBQACAgIAIdx/lIAAAAAAAAAAAAAAAA2AAAAY29tL3NhcC9pdC9hcGkvYXNkay9leGNlcHRpb24vRGF0YVN0b3JlRXhjZXB0aW9uLmNsYXNzlZLPTttAEMa/IU5cgmkCIUBL/0DbQwgII+AG4gJUAkW9hOa+hFVYSOzI3hRei1MkDjwAD4WYsdMCIajClr6dnZ35zYzXd/c3twC28COPHD6JfBb5IvLVxaKLJUIx1pFR7YaOYhMGvw/3CXREmNwLg9iqwDZUu6ezSB8i5HZMYOwuIVNZbhCcvfBUEwo1E+hfvc6Jjo7VSZs907WwyVjFcN4PnI49MzFho9YMO36sur6xvuoaX8WnF76+auqu5Sb8fWVV3YaRPvjr2iaUK7Vz9Uf5bRW0/LqNTNDalg7cjo5j1UpKvgggVEekPfE8VhAWMaU88pQwX3k1LV8Pe1FT/zQy49zL7tck0YOHSZGSyDeR74T1t34JQmlEG/+d8/gsCi/lEpKGn83y9AhLyPLfwTeNj3Dxjtdx3o0hD4dtnoD1PXs2eSVes9U+6DoJKbDmeQUnOpxaZMtLgzCF6QTK0w8AuxwpsbnqSh9jw4QJzvESwmwaNSCINYNyUtzjs5R1iAy/XLe6stpHZhhW4KRiAltMw/7B3AFMrDnMc7RgP4xq0RmmlrjFmVdaFBYl31ByFh4AUEsHCB1rQ1uzAQAAigMAAFBLAwQUAAgICACHcf5SAAAAAAAAAAAAAAAANQAAAGNvbS9zYXAvaXQvYXBpL2FzZGsvZXhjZXB0aW9uL0tleXN0b3JlRXhjZXB0aW9uLmNsYXNzlZLBTttAEIb/IU5cgiGBEEpLoVA4hIBYVe2NigttJUrUC5D7ElZhIbEjr1PgsThF4tAH6ENVnbHTFkJQVVv6d3Z25psZr3/8vPsO4D02iijglciyyIrIax+rPtYIZWdiqztNEzsbhScHHwn0hTC9H4Uu0WHS1J2+ySN7iFD4YEOb7BFytc0mwduPzgyh1LCh+drvnpr4WJ922DPXiFqM1Qzn/dDpJefWEd42WlFXOd1TNlG6Z5V2Z5fKXLdML+Em1KG5cUkUm0+/PbuEaq1xob9p1dFhWx0lsQ3bu9KA3zXO6XZa8VEAoT4m7Z7nbwVhEVOqY08Ji7Un04pHUT9umc9WRlx41PyO5AUIMC1SEXkjsk5Q//kdCJUxTfxzyuPzOLqSG0jbfTDJ/SOsIc+/Bl8zXsLHM14neTeBIjy2eQDWGfa845V4zdcHoNs0pMRa5BWc6HFqma0gC8Is5lIoDz8E7HGkxBbqWwNMjBKmOCdICQtZ1JAg1jyqafGAzzLWAXL8ct361vYAuVFYiZPKKWw1C/sD84cwsZ5jkaMF+2Jci94otcItzj/RorAo/YaSs/QLUEsHCFllJQOzAQAAhwMAAFBLAwQUAAgICACHcf5SAAAAAAAAAAAAAAAAOAAAAGNvbS9zYXAvaXQvYXBpL2FzZGsvZXhjZXB0aW9uL1NlY3VyZVN0b3JlRXhjZXB0aW9uLmNsYXNzlZJNT9tAEIbfIU4MwZBACB8tpXwdQkC1BNyouFCQqKJeArkvZhW2JHZkO8Df4hSpB35Af1TFjB0oBKOqtvTu7OzMMzNe//7z6wHAPjaLKGBZ5JPIishnG6s21gjlSIdGdVo6jEzgn59+I9B3wtRR4Eex8uOW6vR1HulDhMJX45v4kJCrbbUI1lFwqQmlhvH1j373Qodn6qLDntlG4DFWMZz3Q6cVX5mIsN/wgq4bqZ5rYlf1jKuiy2tX33m6F3MTblN7/VA34yDUx0/OA0K11vipbpTbUX7bbcah8dsH0oPd1VGk2knRNwGEekbaC8/fCsIiplQzTwmLtXfTis2gH3r6xMiUS1n9f5FUBw6mRCoi6yIbhN3//xqESkYr/5z17CoMbuUqkqZfzfPyCGvI8z/C940PsDHO6wTvxlCExTbPwDrNnj1eidd8fQC6T0JKrEVewYkWp5bZctIgzGA2gfL8Q8AhR0psob49wNgoYZJznIQwn0YNCWLNoZoUd/gsZZ0ixy/XrW/vDJAbhZU4qZzAVtOwZ5g9hIm1gEWOFuxSVovWKLXCLc6906KwKPmGkvPxEVBLBwgw/E8HtAEAAJADAABQSwMEFAAICAgAh3H+UgAAAAAAAAAAAAAAAB8AAABjb20vc2FwL2l0L2FwaS9hc2RrL2ludGVyZmFjZXMvAwBQSwcIAAAAAAIAAAAAAAAAUEsDBBQACAgIAIdx/lIAAAAAAAAAAAAAAAA2AAAAY29tL3NhcC9pdC9hcGkvYXNkay9pbnRlcmZhY2VzL1B1YmxpY0lUSW50ZXJmYWNlLmNsYXNzZY0xCsJAEEVnYjQmNoLgGdTCtbBTbAQhICjEC0zWNWyMSdjd5HAWHsBDiRtBLfKr/4f3/zxf9wcALGHgge9BgDBKhImEqiUXYW6EuhAX9jqZ7lOqiWWUJ2ybkdYrBD+SSU6mUpYYt4n1bGOhICoqxcVOZg11rOJM8vD02543JYQFL25MU8mkYVRKRvp8ZfILadbqIQz/7w5xKrjpISA40AhdhA64NndtcqBnnfdx/TdQSwcIcOXR87AAAADzAAAAUEsDBBQACAgIAIdx/lIAAAAAAAAAAAAAAAAdAAAAY29tL3NhcC9pdC9hcGkvYXNkay9rZXlzdG9yZS8DAFBLBwgAAAAAAgAAAAAAAABQSwMEFAAICAgAh3H+UgAAAAAAAAAAAAAAADIAAABjb20vc2FwL2l0L2FwaS9hc2RrL2tleXN0b3JlL0tleXN0b3JlU2VydmljZS5jbGFzc42TS08CMRDHp4isojwUfAMehWioBzxxJJoQNZLAzVOpBQvrQtpC4Kt58AP4oYzDG8ojHJrd/ju/mX9nZ3//vn8AIAcpBy4duHIgQSBUF+ZZ9F+Zx+pCEUikMy8N1mU96glDtXbp7DRPIPjY46JtZMvTDiQJZNPDaOoyr07LRkmvnt+YILxQTxNIpjPvmwC6qsJGIoIlKqqjzfRSqaVLzZ8jErUQ9HW97MuCAqOrELhZ2wSqBe8oafoDh4P2jZASk+jqdjtsEDxuXEEoI2uSMyMI5LbAOQJ0jsI8scU8hU8mPQIP67u8MVuw3OooLp6ki47i6FablhJlobqSi+wAJ3DHW19UszaVhrK2pEx/NGlzHEotBr/FzMhbtSG4IXC/KoP0jFA1xoWmpU7VlbxYKU4kHJtViJgM77TqdJwDBAj4cO3gLxL0E/DDLu4CuPPj0xkqe5ayD8El5cBSDiFkKWGIWEoUjizlGGKWEocTSzmFs3kF1zm+++DiH1BLBwjwHicYegEAAOkDAABQSwMEFAAICAgAh3H+UgAAAAAAAAAAAAAAABwAAABjb20vc2FwL2l0L2FwaS9hc2RrL3J1bnRpbWUvAwBQSwcIAAAAAAIAAAAAAAAAUEsDBBQACAgIAIdx/lIAAAAAAAAAAAAAAAApAAAAY29tL3NhcC9pdC9hcGkvYXNkay9ydW50aW1lL0ZhY3RvcnkuY2xhc3ONU8tu00AUPZNHnbhu0zYhUAiF0qZNYqhBYkWiSKgiUqXwEIm6YDd2TZg0sSPbqdQtf8FfFAkKYsGSBd+EEHdst2oeQl2M79zXmXPujH///fETwFM8UaHgfhYL2FTxAFvS3VZRxo6CXQUVhlRwOrIZVtt9fsKNAXd6xv6A+36dIdsRPYcHY4/yxel8o9utN6looSEcETQZCpUZiOoh4e+7R9SfawvHfjUemrbX5eaAImtt1+KDQ+4J6cfBVPBB+AzltuUODZ+PDBEYfCQM7h8dG97YCcTQNlrcClzvtC5ZTWCQkhindh2ACwnrM8yjjKSv9uygY3snwrKlxOqVytdm37YC6k+6Zl/qmZNa6gTcOn7JRyGvcODpSpXQGSqN7rPZluY8FLXjjj3LbgkpTYvZ78lCDRqqGjLIKqhpKELX8BCPFOxpMPCYYesac2BYmT6URFWk/O3/tb+1e8IPZP+LOXc/9waEE9jee27ZvvFmbA6EddA9uAiR0AxNO2xnyE/M+uJJ5qZCRF34z31fPlQacMtzh/Nf4jts0k+g0E/BkJDzIquSl8AiLZoqlsguU8QkmyCr1r6B1fSvSHwmL4kcfZfJAreRwh1CKGGFvGJUjVWsAeEuQs9P5AqXucXLk2/Qroib8bkf43M3al+Q+I5kW/+FvNzr50idI/0Jaf2MnVFFKuRSRJq+ZULcIfa7xKpCjPQrnDZiThnyb2E95qSRjXKFUIvMsz8oKaQp4lWiFe3uUp209/4BUEsHCIiwx6U4AgAAUQQAAFBLAwQUAAgICACHcf5SAAAAAAAAAAAAAAAAKgAAAGNvbS9zYXAvaXQvYXBpL2FzZGsvcnVudGltZS9SZWdpc3RyeS5jbGFzc51UXW8SQRQ9w9fCspRSKn5/1GIFqt1a28QEwkujKQlVI00bH4ftSKcuC9mPJu2vsvrQVBPjsz/KeHeBAsKD9OXembN3zjlzZ2Z///n+E8AmtlSoyCeQwJMkYlhJ4ikKfigqKClYVaEgr+CZgucMEd6VDkO6fsxPuO650tR3ebfMkGjIlsVdzxYMB+NfK72pya2Wvm1yx6mUquW60WnrDu/q0tWJU+fO4WddWq6wP3FDOPp7r2lKo7ZXG0DlKqnEKtKSbpUhXCjuk5vtzqHw3UhLvPXaTWHv8aZJyEK9Y3Bzn9vSn/fBiHvke1+ZKm17livbQv8gWtJx7VMSS9vBWNgNYZ9Igxi2CrPb9n2mnR5DzXJcbvlMG7MTMagt4V55eV34t63l4nVIo4bJz84YMhN0DLnxNp52B61cnHakDDsTnnz8WrbiFcPsn7Xa6Hi2Id5IXzk1OKA1X0lDGvMaktA0rEFXsK7hBTY0vMQmw/qsutSF4c3d4c4R3V6G/P/cF4b54dbfNY+F4TJkhwc2opEtFKf0OjX2ZuiGdz1ieDXa0R5teRIpTkJEQOJ026cQTCnHEr1/lf4H1G6/nZRTNAthDhEaU5cpZgjRKTPK0dIF2HlQskAxFoBxZClqvQIs4kZAmMPN/uIawlQPZL4itHqJMAPFSBgHQyI1KEiR3lxAlust6JP5o1u4TXQJ3MFd+tajDQWSKaItXSIawi/EvhAQHvGWGfGWwj3cp/xgDHkYZN/II9rJ0tWWlwMLQPIHlI8XiH9D6DzY2JBcpfg4WLr8F1BLBwgrsyK3UgIAAFgFAABQSwMEFAAICAgAh3H+UgAAAAAAAAAAAAAAACAAAABjb20vc2FwL2l0L2FwaS9hc2RrL3NlY3VyZXN0b3JlLwMAUEsHCAAAAAACAAAAAAAAAFBLAwQUAAgICACHcf5SAAAAAAAAAAAAAAAAOAAAAGNvbS9zYXAvaXQvYXBpL2FzZGsvc2VjdXJlc3RvcmUvU2VjdXJlU3RvcmVTZXJ2aWNlLmNsYXNzhVDLSgNBEKyOa0ajBj35C3pxRLzlqAYCgQijHzCZtEvHdXaZmQ1+mwc/wI8SJ0J8ECWHprsaqqqr395fXgFcoq/QU9hT2CcclZzuI4erwDP2SWxFuD4Zz+3C6sr6UpsUxJeD07Grn3S0jZakbSPaxtmjjuzawDHVgfVvlQGhd/PsuElS+6hwkLGp2+B4KBUTjs0n1SyphsNCHJ8tTQkXm4zWmYTD74Mn0zm7RDj/S0d84vBgHUd9204rcaO70Wr1jzWvUvw0/orWJRA6ubbya6kgFNjOqJtRkbvKtZPnDnY/AFBLBwiZUBCV4gAAAH8BAABQSwMEFAAICAgAh3H+UgAAAAAAAAAAAAAAADQAAABjb20vc2FwL2l0L2FwaS9hc2RrL3NlY3VyZXN0b3JlL1VzZXJDcmVkZW50aWFsLmNsYXNzZU67TsNAEJxNTEwSngKJX0iaXINEAaKJlApEJIuKarFX1gXnbN2d4d8o+AA+CrEOQhFkm1nN7M7M59f7B4BLHKc4THFEGJcSH4N4x2shnE+mdyt+ZVOxK00WvXXl9c/RkkN4q31BSCbTpznhQsm5l0JctFwtfd2Ij1YC4fTXpY22MvfcqMUws6Xj2HpNufqv3+yG7jK36jLK6tbnsrCV2px1vbcNZt0HYZbXaxO4MTYabqzhULyYILkmh1h7MX+/CCfbpIfnleRxQCD00E0/IfSRAIp7GGwwxb7qQ1V7GOk23mwH31BLBwhPYRWS5QAAAFsBAABQSwECFAAUAAgICACHcf5Su+nkvwgCAAD0BAAAFAAEAAAAAAAAAAAAAAAAAAAATUVUQS1JTkYvTUFOSUZFU1QuTUb+ygAAUEsBAhQAFAAICAgAh3H+UgAAAAACAAAAAAAAAAkAAAAAAAAAAAAAAAAATgIAAE1FVEEtSU5GL1BLAQIUABQACAgIAIdx/lIAAAAAAgAAAAAAAAAPAAAAAAAAAAAAAAAAAIcCAABNRVRBLUlORi9tYXZlbi9QSwECFAAUAAgICACHcf5SAAAAAAIAAAAAAAAAHwAAAAAAAAAAAAAAAADGAgAATUVUQS1JTkYvbWF2ZW4vY29tLnNhcC5pdC5hc2RrL1BLAQIUABQACAgIAIdx/lIAAAAAAgAAAAAAAAAzAAAAAAAAAAAAAAAAABUDAABNRVRBLUlORi9tYXZlbi9jb20uc2FwLml0LmFzZGsvY29tLnNhcC5pdC5hcGkuYXNkay9QSwECFAAUAAgICACHcf5SZTPEbHkAAACQAAAAQQAAAAAAAAAAAAAAAAB4AwAATUVUQS1JTkYvbWF2ZW4vY29tLnNhcC5pdC5hc2RrL2NvbS5zYXAuaXQuYXBpLmFzZGsvcG9tLnByb3BlcnRpZXNQSwECFAAUAAgICACAcf5ShU1M0fsBAABhBQAAOgAAAAAAAAAAAAAAAABgBAAATUVUQS1JTkYvbWF2ZW4vY29tLnNhcC5pdC5hc2RrL2NvbS5zYXAuaXQuYXBpLmFzZGsvcG9tLnhtbFBLAQIUABQACAgIAIdx/lIAAAAAAgAAAAAAAAAJAAAAAAAAAAAAAAAAAMMGAABPU0dJLUlORi9QSwECFAAUAAgICABwcf5StUnUUuQAAAB6AQAAFQAAAAAAAAAAAAAAAAD8BgAAT1NHSS1JTkYvcmVnaXN0ZXIueG1sUEsBAhQAFAAICAgAh3H+UgAAAAACAAAAAAAAAAQAAAAAAAAAAAAAAAAAIwgAAGNvbS9QSwECFAAUAAgICACHcf5SAAAAAAIAAAAAAAAACAAAAAAAAAAAAAAAAABXCAAAY29tL3NhcC9QSwECFAAUAAgICACHcf5SAAAAAAIAAAAAAAAACwAAAAAAAAAAAAAAAACPCAAAY29tL3NhcC9pdC9QSwECFAAUAAgICACHcf5SAAAAAAIAAAAAAAAADwAAAAAAAAAAAAAAAADKCAAAY29tL3NhcC9pdC9hcGkvUEsBAhQAFAAICAgAh3H+UgAAAAACAAAAAAAAABQAAAAAAAAAAAAAAAAACQkAAGNvbS9zYXAvaXQvYXBpL2FzZGsvUEsBAhQAFAAICAgAh3H+UgAAAAACAAAAAAAAAB4AAAAAAAAAAAAAAAAATQkAAGNvbS9zYXAvaXQvYXBpL2FzZGsvZGF0YXN0b3JlL1BLAQIUABQACAgIAIdx/lJmBcnmrQIAAO4FAAAsAAAAAAAAAAAAAAAAAJsJAABjb20vc2FwL2l0L2FwaS9hc2RrL2RhdGFzdG9yZS9EYXRhQmVhbi5jbGFzc1BLAQIUABQACAgIAIdx/lJgKeQCiwIAAAwGAAAuAAAAAAAAAAAAAAAAAKIMAABjb20vc2FwL2l0L2FwaS9hc2RrL2RhdGFzdG9yZS9EYXRhQ29uZmlnLmNsYXNzUEsBAhQAFAAICAgAh3H+UkS8BqIEAQAAKAIAADQAAAAAAAAAAAAAAAAAiQ8AAGNvbS9zYXAvaXQvYXBpL2FzZGsvZGF0YXN0b3JlL0RhdGFTdG9yZVNlcnZpY2UuY2xhc3NQSwECFAAUAAgICACHcf5SAAAAAAIAAAAAAAAAHgAAAAAAAAAAAAAAAADvEAAAY29tL3NhcC9pdC9hcGkvYXNkay9leGNlcHRpb24vUEsBAhQAFAAICAgAh3H+Uh1rQ1uzAQAAigMAADYAAAAAAAAAAAAAAAAAPREAAGNvbS9zYXAvaXQvYXBpL2FzZGsvZXhjZXB0aW9uL0RhdGFTdG9yZUV4Y2VwdGlvbi5jbGFzc1BLAQIUABQACAgIAIdx/lJZZSUDswEAAIcDAAA1AAAAAAAAAAAAAAAAAFQTAABjb20vc2FwL2l0L2FwaS9hc2RrL2V4Y2VwdGlvbi9LZXlzdG9yZUV4Y2VwdGlvbi5jbGFzc1BLAQIUABQACAgIAIdx/lIw/E8HtAEAAJADAAA4AAAAAAAAAAAAAAAAAGoVAABjb20vc2FwL2l0L2FwaS9hc2RrL2V4Y2VwdGlvbi9TZWN1cmVTdG9yZUV4Y2VwdGlvbi5jbGFzc1BLAQIUABQACAgIAIdx/lIAAAAAAgAAAAAAAAAfAAAAAAAAAAAAAAAAAIQXAABjb20vc2FwL2l0L2FwaS9hc2RrL2ludGVyZmFjZXMvUEsBAhQAFAAICAgAh3H+UnDl0fOwAAAA8wAAADYAAAAAAAAAAAAAAAAA0xcAAGNvbS9zYXAvaXQvYXBpL2FzZGsvaW50ZXJmYWNlcy9QdWJsaWNJVEludGVyZmFjZS5jbGFzc1BLAQIUABQACAgIAIdx/lIAAAAAAgAAAAAAAAAdAAAAAAAAAAAAAAAAAOcYAABjb20vc2FwL2l0L2FwaS9hc2RrL2tleXN0b3JlL1BLAQIUABQACAgIAIdx/lLwHicYegEAAOkDAAAyAAAAAAAAAAAAAAAAADQZAABjb20vc2FwL2l0L2FwaS9hc2RrL2tleXN0b3JlL0tleXN0b3JlU2VydmljZS5jbGFzc1BLAQIUABQACAgIAIdx/lIAAAAAAgAAAAAAAAAcAAAAAAAAAAAAAAAAAA4bAABjb20vc2FwL2l0L2FwaS9hc2RrL3J1bnRpbWUvUEsBAhQAFAAICAgAh3H+Uoiwx6U4AgAAUQQAACkAAAAAAAAAAAAAAAAAWhsAAGNvbS9zYXAvaXQvYXBpL2FzZGsvcnVudGltZS9GYWN0b3J5LmNsYXNzUEsBAhQAFAAICAgAh3H+UiuzIrdSAgAAWAUAACoAAAAAAAAAAAAAAAAA6R0AAGNvbS9zYXAvaXQvYXBpL2FzZGsvcnVudGltZS9SZWdpc3RyeS5jbGFzc1BLAQIUABQACAgIAIdx/lIAAAAAAgAAAAAAAAAgAAAAAAAAAAAAAAAAAJMgAABjb20vc2FwL2l0L2FwaS9hc2RrL3NlY3VyZXN0b3JlL1BLAQIUABQACAgIAIdx/lKZUBCV4gAAAH8BAAA4AAAAAAAAAAAAAAAAAOMgAABjb20vc2FwL2l0L2FwaS9hc2RrL3NlY3VyZXN0b3JlL1NlY3VyZVN0b3JlU2VydmljZS5jbGFzc1BLAQIUABQACAgIAIdx/lJPYRWS5QAAAFsBAAA0AAAAAAAAAAAAAAAAACsiAABjb20vc2FwL2l0L2FwaS9hc2RrL3NlY3VyZXN0b3JlL1VzZXJDcmVkZW50aWFsLmNsYXNzUEsFBgAAAAAgACAAIQoAAHIjAAAAAA==


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment