Re: chipsec integrity check
cod <[email protected]> Wed, 29 Nov 2017 08:48:08 +0100
| Newsgroups | dev.linux.lists.oe-chipsec |
|---|---|
| Message-ID | <CAJtESw5-CEgWNSe2HMX0SFAAcaGvt_TXa1v0j4QBpra29+u8Pg@mail.gmail.com> |
--===============1944966328588497690== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable If a "malware" is inside your bios, you need to enumerate files inside every EFI firmware volumes checking hash files with a backup copy of firmware (or a copy from vendor) On Tue, Nov 28, 2017 at 12:07 AM, Healer64 <[email protected]> wrot= e: > I have been using chipsec as an integrity verification tool. I know its > not how it was intended to be used, but I'm not aware of any other tools > that will do the kind of deep dive into BIOS and UEFI that chipsec does. > In theory any malware should leave some type of traces that would show up > as changes in chipsec results. The problem is that ordinary use may also > make some changes, and I am having a hard time determining what types of > changes should be expected from ordinary use. I would appreciate any > advice. > > I have written some test scripts below: > > #!/bin/bash > OUTPUT=3D/root/verify_certs.log > chipsec_util uefi var-read db d719b2cb-3d3a-4596-a3bc-dad00e67656f db.bin > >> db.ascii > diff db.bin ./current/db.bin >> $OUTPUT > hexdump db.bin | diff - ./current/db.hex >> $OUTPUT > rm db.bin > rm db.ascii > > > #!/bin/bash > OUTPUT=3D/root/verify_efivars.log > chipsec_util uefi var-list > for x in `cat dir2` > do > sha256sum $x >> shasums.1 > done > cat shasums.1 | sed s/\\/root\\/efi_variables.dir\\///g | awk '{ print > $2 , $1 }' | sort > shasums.tmp > rm shasums.1 > diff shasums shasums.tmp >> $OUTPUT > diff efi_variables.lst ./current/efi_variables.lst >> $OUTPUT > > > #!/bin/bash > OUTPUT=3D/root/verify_chipsec > cd tmp > chipsec_util acpi list > acpi_list > chipsec_util acpi table APIC > acpi_table_APIC > chipsec_util acpi table BATB > acpi_table_BATB > chipsec_util acpi table BGRT > acpi_table_BGRT > chipsec_util acpi table CRAT > acpi_table_CRAT > chipsec_util acpi table DSDT > acpi_table_DSDT > chipsec_util acpi table FACP > acpi_table_FACP > chipsec_util acpi table FPDT > acpi_table_FPDT > chipsec_util acpi table HPET > acpi_table_HPET > chipsec_util acpi table MCFG > acpi_table_MCFG > chipsec_util acpi table MSDM > acpi_table_MSDM > chipsec_util acpi table SBST > acpi_table_SBST > chipsec_util acpi table SSDT > acpi_table_SSDT > chipsec_util acpi table TCPA > acpi_table_TCPA > chipsec_util acpi table TPM2 > acpi_table_TPM2 > chipsec_util acpi table UEFI > acpi_table_UEFI > chipsec_util acpi table VFCT > acpi_table_VFCT > chipsec_util acpi table XSDT > acpi_table_XSDT > chipsec_util cmos dump > cmos_dump > chipsec_util ec dump > ec_dump > chipsec_util gdt > gdt > chipsec_util io list > io_list > chipsec_util iommu config GFXVTD > iommu_config_GFXVTD > chipsec_util iommu config VTD > iommu_config_VTD > chipsec_util iommu list > iommu_list > chipsec_util iommu status GFXVTD > iommu_status_GFXVTD > chipsec_util iommu status VTD > iommu_status_VTD > chipsec_util mmcfg > mmcfg > chipsec_util mmio dump DMIBAR > mmio_dump_DMIBAR > chipsec_util mmio dump GFXVTBAR > mmio_dump_GFXVTBAR > chipsec_util mmio dump GMADR > mmio_dump_GMADR > chipsec_util mmio dump GTTMMADR > mmio_dump_GTTMMADR > chipsec_util mmio dump HDABAR > mmio_dump_HDABAR > chipsec_util mmio dump HDBAR > mmio_dump_HDBAR > chipsec_util mmio dump MCHBAR > mmio_dump_MCHBAR > chipsec_util mmio dump MMCFG > mmio_dump_MMCFG > chipsec_util mmio dump PXPEPBAR > mmio_dump_PXPEPBAR > chipsec_util mmio dump RCBA > mmio_dump_RCBA > chipsec_util mmio dump RCBA_RTC > mmio_dump_RCBA_RTC > chipsec_util mmio dump SPIBAR > mmio_dump_SPIBAR > chipsec_util mmio dump VTBAR > mmio_dump_VTBAR > chipsec_util mmio list > mmio_list > chipsec_util pci dump > pci_dump > chipsec_util pci enumerate > pci_enumerate > chipsec_util pci xrom > pci_xrom > chipsec_util platform > chipsec_platform > chipsec_util spi info > spi_info > chipsec_util ucode id > ucode_id > for x in `cat testfiles` > do > echo -e "##### $x #####\\n" >> $OUTPUT > diff $x /root/current/$x >> $OUTPUT > grep -v elapsed $OUTPUT > $OUTPUT.log > rm $OUTPUT > done > > > The output log files are here: > https://pastebin.com/wV4wdPeW > https://pastebin.com/nBa3BwLb > > > Sent with ProtonMail <https://protonmail.com> Secure Email. > > > _______________________________________________ > chipsec mailing list > chipsec(a)lists.01.org > https://lists.01.org/mailman/listinfo/chipsec > > --===============1944966328588497690== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGRpdiBkaXI9Imx0ciI+SWYgYSAmcXVvdDttYWx3YXJlJnF1b3Q7IGlzIGluc2lkZSB5b3VyIGJp b3MsIHlvdSBuZWVkIHRvIGVudW1lcmF0ZSBmaWxlcyBpbnNpZGUgZXZlcnkgRUZJIGZpcm13YXJl IHZvbHVtZXMgY2hlY2tpbmcgaGFzaCBmaWxlcyB3aXRoIGEgYmFja3VwIGNvcHkgb2bCoCBmaXJt d2FyZSAob3IgYSBjb3B5IGZyb20gdmVuZG9yKTxicj48L2Rpdj48ZGl2IGNsYXNzPSJnbWFpbF9l eHRyYSI+PGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj5PbiBUdWUsIE5vdiAyOCwgMjAxNyBh dCAxMjowNyBBTSwgSGVhbGVyNjQgPHNwYW4gZGlyPSJsdHIiPiZsdDs8YSBocmVmPSJtYWlsdG86 SGVhbGVyNjRAcHJvdG9ubWFpbC5jb20iIHRhcmdldD0iX2JsYW5rIj5IZWFsZXI2NEBwcm90b25t YWlsLmNvbTwvYT4mZ3Q7PC9zcGFuPiB3cm90ZTo8YnI+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWls X3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29s aWQ7cGFkZGluZy1sZWZ0OjFleCI+PGRpdj5JIGhhdmUgYmVlbiB1c2luZyBjaGlwc2VjIGFzIGFu IGludGVncml0eSB2ZXJpZmljYXRpb24gdG9vbC7CoCBJIGtub3cgaXRzIG5vdCBob3cgaXQgd2Fz IGludGVuZGVkIHRvIGJlIHVzZWQsIGJ1dCBJJiMzOTttIG5vdCBhd2FyZSBvZiBhbnkgb3RoZXIg dG9vbHMgdGhhdCB3aWxsIGRvIHRoZSBraW5kIG9mIGRlZXAgZGl2ZSBpbnRvIEJJT1MgYW5kIFVF RkkgdGhhdCBjaGlwc2VjIGRvZXMuwqAgSW4gdGhlb3J5IGFueSBtYWx3YXJlIHNob3VsZCBsZWF2 ZSBzb21lIHR5cGUgb2YgdHJhY2VzIHRoYXQgd291bGQgc2hvdyB1cCBhcyBjaGFuZ2VzIGluIGNo aXBzZWMgcmVzdWx0cy7CoCBUaGUgcHJvYmxlbSBpcyB0aGF0IG9yZGluYXJ5IHVzZSBtYXkgYWxz byBtYWtlIHNvbWUgY2hhbmdlcywgYW5kIEkgYW0gaGF2aW5nIGEgaGFyZCB0aW1lIGRldGVybWlu aW5nIHdoYXQgdHlwZXMgb2YgY2hhbmdlcyBzaG91bGQgYmUgZXhwZWN0ZWQgZnJvbSBvcmRpbmFy eSB1c2UuwqAgSSB3b3VsZCBhcHByZWNpYXRlIGFueSBhZHZpY2UuPGJyPjwvZGl2PjxkaXY+PGJy PjwvZGl2PjxkaXY+SSBoYXZlIHdyaXR0ZW4gc29tZSB0ZXN0IHNjcmlwdHMgYmVsb3c6PGJyPjwv ZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+IyEvYmluL2Jhc2g8YnI+PC9kaXY+PGRpdj5PVVRQVVQ9 L3Jvb3QvdmVyaWZ5X2NlcnRzLmxvZzxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCB1ZWZpIHZh ci1yZWFkIGRiIGQ3MTliMmNiLTNkM2EtNDU5Ni1hM2JjLTx3YnI+ZGFkMDBlNjc2NTZmIGRiLmJp biAmZ3Q7Jmd0OyBkYi5hc2NpaTxicj48L2Rpdj48ZGl2PmRpZmYgZGIuYmluIC4vY3VycmVudC9k Yi5iaW4gJmd0OyZndDsgJE9VVFBVVDxicj48L2Rpdj48ZGl2PmhleGR1bXAgZGIuYmluIHwgZGlm ZiAtIC4vY3VycmVudC9kYi5oZXggJmd0OyZndDsgJE9VVFBVVDxicj48L2Rpdj48ZGl2PnJtIGRi LmJpbjxicj48L2Rpdj48ZGl2PnJtIGRiLmFzY2lpPGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2Pjxk aXY+PGJyPjwvZGl2PjxkaXY+IyEvYmluL2Jhc2g8YnI+PC9kaXY+PGRpdj5PVVRQVVQ9L3Jvb3Qv dmVyaWZ5X2VmaXZhcnMuPHdicj5sb2c8YnI+PC9kaXY+PGRpdj5jaGlwc2VjX3V0aWwgdWVmaSB2 YXItbGlzdDxicj48L2Rpdj48ZGl2PmZvciB4IGluIGBjYXQgZGlyMmA8YnI+PC9kaXY+PGRpdj5k bzxicj48L2Rpdj48ZGl2PnNoYTI1NnN1bSAkeCAmZ3Q7Jmd0OyBzaGFzdW1zLjE8YnI+PC9kaXY+ PGRpdj5kb25lPGJyPjwvZGl2PjxkaXY+Y2F0IHNoYXN1bXMuMSB8IHNlZCBzL1xcL3Jvb3RcXC9l ZmlfdmFyaWFibGVzLmRpclw8d2JyPlwvLy9nIHzCoCBhd2sgJiMzOTt7IHByaW50ICQyICwgJDEg fSYjMzk7IHwgc29ydCAmZ3Q7IHNoYXN1bXMudG1wPGJyPjwvZGl2PjxkaXY+cm0gc2hhc3Vtcy4x PGJyPjwvZGl2PjxkaXY+ZGlmZiBzaGFzdW1zIHNoYXN1bXMudG1wICZndDsmZ3Q7ICRPVVRQVVQ8 YnI+PC9kaXY+PGRpdj5kaWZmIGVmaV92YXJpYWJsZXMubHN0IC4vY3VycmVudC9lZmlfdmFyaWFi bGVzLmxzdCAmZ3Q7Jmd0OyAkT1VUUFVUPGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJy PjwvZGl2PjxkaXY+IyEvYmluL2Jhc2g8YnI+PC9kaXY+PGRpdj5PVVRQVVQ9L3Jvb3QvdmVyaWZ5 X2NoaXBzZWM8YnI+PC9kaXY+PGRpdj5jZCB0bXA8YnI+PC9kaXY+PGRpdj5jaGlwc2VjX3V0aWwg YWNwaSBsaXN0ICZndDsgYWNwaV9saXN0PGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGlsIGFjcGkg dGFibGUgQVBJQyAmZ3Q7IGFjcGlfdGFibGVfQVBJQzxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRp bCBhY3BpIHRhYmxlIEJBVEIgJmd0OyBhY3BpX3RhYmxlX0JBVEI8YnI+PC9kaXY+PGRpdj5jaGlw c2VjX3V0aWwgYWNwaSB0YWJsZSBCR1JUICZndDsgYWNwaV90YWJsZV9CR1JUPGJyPjwvZGl2Pjxk aXY+Y2hpcHNlY191dGlsIGFjcGkgdGFibGUgQ1JBVCAmZ3Q7IGFjcGlfdGFibGVfQ1JBVDxicj48 L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBhY3BpIHRhYmxlIERTRFQgJmd0OyBhY3BpX3RhYmxlX0RT RFQ8YnI+PC9kaXY+PGRpdj5jaGlwc2VjX3V0aWwgYWNwaSB0YWJsZSBGQUNQICZndDsgYWNwaV90 YWJsZV9GQUNQPGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGlsIGFjcGkgdGFibGUgRlBEVCAmZ3Q7 IGFjcGlfdGFibGVfRlBEVDxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBhY3BpIHRhYmxlIEhQ RVQgJmd0OyBhY3BpX3RhYmxlX0hQRVQ8YnI+PC9kaXY+PGRpdj5jaGlwc2VjX3V0aWwgYWNwaSB0 YWJsZSBNQ0ZHICZndDsgYWNwaV90YWJsZV9NQ0ZHPGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGls IGFjcGkgdGFibGUgTVNETSAmZ3Q7IGFjcGlfdGFibGVfTVNETTxicj48L2Rpdj48ZGl2PmNoaXBz ZWNfdXRpbCBhY3BpIHRhYmxlIFNCU1QgJmd0OyBhY3BpX3RhYmxlX1NCU1Q8YnI+PC9kaXY+PGRp dj5jaGlwc2VjX3V0aWwgYWNwaSB0YWJsZSBTU0RUICZndDsgYWNwaV90YWJsZV9TU0RUPGJyPjwv ZGl2PjxkaXY+Y2hpcHNlY191dGlsIGFjcGkgdGFibGUgVENQQSAmZ3Q7IGFjcGlfdGFibGVfVENQ QTxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBhY3BpIHRhYmxlIFRQTTIgJmd0OyBhY3BpX3Rh YmxlX1RQTTI8YnI+PC9kaXY+PGRpdj5jaGlwc2VjX3V0aWwgYWNwaSB0YWJsZSBVRUZJICZndDsg YWNwaV90YWJsZV9VRUZJPGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGlsIGFjcGkgdGFibGUgVkZD VCAmZ3Q7IGFjcGlfdGFibGVfVkZDVDxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBhY3BpIHRh YmxlIFhTRFQgJmd0OyBhY3BpX3RhYmxlX1hTRFQ8YnI+PC9kaXY+PGRpdj5jaGlwc2VjX3V0aWwg Y21vcyBkdW1wICZndDsgY21vc19kdW1wPGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGlsIGVjIGR1 bXAgJmd0OyBlY19kdW1wPGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGlsIGdkdCAmZ3Q7IGdkdDxi cj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBpbyBsaXN0ICZndDsgaW9fbGlzdDxicj48L2Rpdj48 ZGl2PmNoaXBzZWNfdXRpbCBpb21tdSBjb25maWcgR0ZYVlREICZndDsgaW9tbXVfY29uZmlnX0dG WFZURDxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBpb21tdSBjb25maWcgVlREICZndDsgaW9t bXVfY29uZmlnX1ZURDxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBpb21tdSBsaXN0ICZndDsg aW9tbXVfbGlzdDxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBpb21tdSBzdGF0dXMgR0ZYVlRE ICZndDsgaW9tbXVfc3RhdHVzX0dGWFZURDxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBpb21t dSBzdGF0dXMgVlREICZndDsgaW9tbXVfc3RhdHVzX1ZURDxicj48L2Rpdj48ZGl2PmNoaXBzZWNf dXRpbCBtbWNmZyAmZ3Q7IG1tY2ZnPGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGlsIG1taW8gZHVt cCBETUlCQVIgJmd0OyBtbWlvX2R1bXBfRE1JQkFSPGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGls IG1taW8gZHVtcCBHRlhWVEJBUiAmZ3Q7IG1taW9fZHVtcF9HRlhWVEJBUjxicj48L2Rpdj48ZGl2 PmNoaXBzZWNfdXRpbCBtbWlvIGR1bXAgR01BRFIgJmd0OyBtbWlvX2R1bXBfR01BRFI8YnI+PC9k aXY+PGRpdj5jaGlwc2VjX3V0aWwgbW1pbyBkdW1wIEdUVE1NQURSICZndDsgbW1pb19kdW1wX0dU VE1NQURSPGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGlsIG1taW8gZHVtcCBIREFCQVIgJmd0OyBt bWlvX2R1bXBfSERBQkFSPGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGlsIG1taW8gZHVtcCBIREJB UiAmZ3Q7IG1taW9fZHVtcF9IREJBUjxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBtbWlvIGR1 bXAgTUNIQkFSICZndDsgbW1pb19kdW1wX01DSEJBUjxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRp bCBtbWlvIGR1bXAgTU1DRkcgJmd0OyBtbWlvX2R1bXBfTU1DRkc8YnI+PC9kaXY+PGRpdj5jaGlw c2VjX3V0aWwgbW1pbyBkdW1wIFBYUEVQQkFSICZndDsgbW1pb19kdW1wX1BYUEVQQkFSPGJyPjwv ZGl2PjxkaXY+Y2hpcHNlY191dGlsIG1taW8gZHVtcCBSQ0JBICZndDsgbW1pb19kdW1wX1JDQkE8 YnI+PC9kaXY+PGRpdj5jaGlwc2VjX3V0aWwgbW1pbyBkdW1wIFJDQkFfUlRDICZndDsgbW1pb19k dW1wX1JDQkFfUlRDPGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGlsIG1taW8gZHVtcCBTUElCQVIg Jmd0OyBtbWlvX2R1bXBfU1BJQkFSPGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGlsIG1taW8gZHVt cCBWVEJBUiAmZ3Q7IG1taW9fZHVtcF9WVEJBUjxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBt bWlvIGxpc3QgJmd0OyBtbWlvX2xpc3Q8YnI+PC9kaXY+PGRpdj5jaGlwc2VjX3V0aWwgcGNpIGR1 bXAgJmd0OyBwY2lfZHVtcDxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBwY2kgZW51bWVyYXRl ICZndDsgcGNpX2VudW1lcmF0ZTxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBwY2kgeHJvbSAm Z3Q7IHBjaV94cm9tPGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGlsIHBsYXRmb3JtICZndDsgY2hp cHNlY19wbGF0Zm9ybTxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBzcGkgaW5mbyAmZ3Q7IHNw aV9pbmZvPGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGlsIHVjb2RlIGlkICZndDsgdWNvZGVfaWQ8 YnI+PC9kaXY+PGRpdj5mb3IgeCBpbiBgY2F0IHRlc3RmaWxlc2A8YnI+PC9kaXY+PGRpdj5kbzxi cj48L2Rpdj48ZGl2PmVjaG8gLWUgJnF1b3Q7IyMjIyPCoCAkeMKgICMjIyMjXFxuJnF1b3Q7ICZn dDsmZ3Q7ICRPVVRQVVQ8YnI+PC9kaXY+PGRpdj5kaWZmICR4IC9yb290L2N1cnJlbnQvJHggJmd0 OyZndDsgJE9VVFBVVDxicj48L2Rpdj48ZGl2PmdyZXAgLXYgZWxhcHNlZCAkT1VUUFVUICZndDsg JE9VVFBVVC5sb2c8YnI+PC9kaXY+PGRpdj5ybSAkT1VUUFVUPGJyPjwvZGl2PjxkaXY+ZG9uZTxi cj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PlRoZSBvdXRwdXQgbG9n IGZpbGVzIGFyZSBoZXJlOjxicj48L2Rpdj48ZGl2PjxhIGhyZWY9Imh0dHBzOi8vcGFzdGViaW4u Y29tL3dWNHdkUGVXIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9wYXN0ZWJpbi5jb20vd1Y0d2RQ ZVc8L2E+PGJyPjwvZGl2PjxkaXY+PGEgaHJlZj0iaHR0cHM6Ly9wYXN0ZWJpbi5jb20vbkJhM0J3 TGIiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL3Bhc3RlYmluLmNvbS9uQmEzQndMYjwvYT48YnI+ PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdiBjbGFzcz0ibV8tNTY0MTM0NTEwMDA4MDE0MDE4OXBy b3Rvbm1haWxfc2lnbmF0dXJlX2Jsb2NrIj48ZGl2IGNsYXNzPSJtXy01NjQxMzQ1MTAwMDgwMTQw MTg5cHJvdG9ubWFpbF9zaWduYXR1cmVfYmxvY2stdXNlciBtXy01NjQxMzQ1MTAwMDgwMTQwMTg5 cHJvdG9ubWFpbF9zaWduYXR1cmVfYmxvY2stZW1wdHkiPjxicj48L2Rpdj48ZGl2IGNsYXNzPSJt Xy01NjQxMzQ1MTAwMDgwMTQwMTg5cHJvdG9ubWFpbF9zaWduYXR1cmVfYmxvY2stcHJvdG9uIj5T ZW50IHdpdGggPGEgaHJlZj0iaHR0cHM6Ly9wcm90b25tYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsi PlByb3Rvbk1haWw8L2E+IFNlY3VyZSBFbWFpbC48YnI+PC9kaXY+PC9kaXY+PGRpdj48YnI+PC9k aXY+PGJyPl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fXzx3YnI+X19fX19fX19fX19fX19f X188YnI+CmNoaXBzZWMgbWFpbGluZyBsaXN0PGJyPgo8YSBocmVmPSJtYWlsdG86Y2hpcHNlY0Bs aXN0cy4wMS5vcmciPmNoaXBzZWNAbGlzdHMuMDEub3JnPC9hPjxicj4KPGEgaHJlZj0iaHR0cHM6 Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9jaGlwc2VjIiByZWw9Im5vcmVmZXJyZXIi IHRhcmdldD0iX2JsYW5rIj5odHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuLzx3YnI+bGlzdGlu Zm8vY2hpcHNlYzwvYT48YnI+Cjxicj48L2Jsb2NrcXVvdGU+PC9kaXY+PGJyPjwvZGl2Pgo= --===============1944966328588497690==--