From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============5073834544980214138==" MIME-Version: 1.0 From: Oza Oza Subject: Re: [SPDK] PCI hotplug and SPDK Date: Tue, 29 Aug 2017 14:21:57 +0530 Message-ID: In-Reply-To: 2BFA8F2383C3784C90698C10BC0963195EF1BD36@SHSMSX103.ccr.corp.intel.com List-ID: To: spdk@lists.01.org --===============5073834544980214138== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sorry If I was unclear. I am not talking about hotplug feature of SPDK. =C3=98 PCI hotplug feature is implemented in kernel driver and working fin= e. =C3=98 But the moment I run SPDK and try to bind vfio driver it stalls completely. o The reason is: kernel driver will not remove the root bus (when PCIe endpoint is not connected, during boot-time) o So SPDK tries to bind driver thinking host bridge is there. =C2=A7 Without PCI hotplug host bridge will not be there because of follow= ing API call in kernel driver. =C2=B7 pci_stop_root_bus(bus); =C2=B7 pci_remove_root_bus(bus); =C3=98 since now we allow host bridge creation (API: pci_create_root_bus) irrespective of EP is connected or not. o And then if I run SPDK (with no Endpoint connected/Empty slot) I get stalls. Regards, Oza. *From:* SPDK [mailto:spdk-bounces(a)lists.01.org] *On Behalf Of *Chang, Cun= yin *Sent:* Tuesday, August 29, 2017 2:14 PM *To:* Storage Performance Development Kit *Subject:* Re: [SPDK] PCI hotplug and SPDK Hi Oza, Could you please provide some details steps to reproduce the issue? SPDK take in charge for hotplug only after you bind the device to uio or vfio driver, so for the new insert deivce, it will handled by kernel driver first. -Cunyin *From:* SPDK [mailto:spdk-bounces(a)lists.01.org ] *On Behalf Of *Oza Oza *Sent:* Tuesday, August 29, 2017 4:22 PM *To:* Storage Performance Development Kit *Subject:* [SPDK] PCI hotplug and SPDK Hi All, PCI hotplug support; requires creation of root bus and probe to go ahead with all PCIe configuration. Which means following APIs ae not called. pci_stop_root_bus(bus); pci_remove_root_bus(bus); And then If I run SPDK, It makes system crash with following info. Note: if the disk is connected then SPDK is fine. Otherwise it stalls the system with following crash. root(a)bcm958742k:~# echo 2048 > /proc/sys/vm/nr_hugepages; /usr/share/spdk/scripts/setup.sh grep: /usr/share/spdk/scripts/../include/spdk/pci_ids.h: No such[ 34.621325] pci 0008:00:00.0: PCI bridge to [bus 01] file or directory [ 34.640586] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring [ 50.267056] pci 0000:00:00.0: PCI bridge to [bus 01] [ 50.272337] pci 0001:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring [ 65.898762] pci 0001:00:00.0: PCI bridge to [bus 01] [ 65.904015] pci 0006:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring [ 81.530437] pci 0006:00:00.0: PCI bridge to [bus 01] [ 81.535680] pci 0007:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring [ 97.162103] pci 0007:00:00.0: PCI bridge to [bus 01] [ 97.167255] Bad mode in Error handler detected on CPU6, code 0xbf000002 -- SError [ 97.174974] Internal error: Oops - bad mode: 0 [#1] SMP [ 97.180364] Modules linked in: [ 97.183515] CPU: 6 PID: 2104 Comm: bash Not tainted 4.12.0-01560-gc83093d-dirty #89 [ 97.191413] Hardware name: Stingray Combo SVK w/PCIe IOMMU (BCM958742K) (DT) [ 97.198683] task: ffff80a163a40000 task.stack: ffff80a1612b4000 [ 97.204790] PC is at 0xffff7cbdfba8 [ 97.208387] LR is at 0xffff7cb8f288 [ 97.211983] pc : [<0000ffff7cbdfba8>] lr : [<0000ffff7cb8f288>] pstate: 20000000 [ 97.219612] sp : 0000fffffe564040 [ 97.223029] x29: 0000fffffe564040 x28: 000000001054ce60 [ 97.228509] x27: 0000000000000000 x26: 00000000004e2000 [ 97.233989] x25: 00000000004e5000 x24: 0000000000000002 [ 97.239468] x23: 0000ffff7cc63638 x22: 0000000000000002 [ 97.244947] x21: 0000ffff7cc67480 x20: 000000001054db10 [ 97.250427] x19: 0000000000000002 x18: 0000000000000000 [ 97.255906] x17: 00000000004daac8 x16: 0000000000000000 [ 97.261386] x15: 0000000000000096 x14: 0000000000000000 [ 97.266865] x13: 0000000000000000 x12: 0000000000000000 [ 97.272344] x11: 0000000000000020 x10: 0101010101010101 [ 97.277824] x9 : ffffff80ffffffc8 x8 : 0000000000000040 [ 97.283303] x7 : 0000000000000001 x6 : 0000ffff7cc669f0 [ 97.288782] x5 : 0000000000015551 x4 : 0000000000000888 [ 97.294261] x3 : 0000000000000000 x2 : 0000000000000002 [ 97.299741] x1 : 000000001054db10 x0 : 0000000000000002 [ 97.305220] Process bash (pid: 2104, stack limit =3D 0xffff80a1612b4000) [ 97.311960] ---[ end trace a1f48abe30820241 ]--- Regards, Oza. --===============5073834544980214138== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0 L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPjxtZXRhIG5hbWU9IkdlbmVyYXRvciIgY29udGVudD0iTWlj cm9zb2Z0IFdvcmQgMTQgKGZpbHRlcmVkIG1lZGl1bSkiPjxzdHlsZT48IS0tCi8qIEZvbnQgRGVm aW5pdGlvbnMgKi8KQGZvbnQtZmFjZQoJe2ZvbnQtZmFtaWx5OldpbmdkaW5nczsKCXBhbm9zZS0x OjUgMCAwIDAgMCAwIDAgMCAwIDA7fQpAZm9udC1mYWNlCgl7Zm9udC1mYW1pbHk6V2luZ2Rpbmdz OwoJcGFub3NlLTE6NSAwIDAgMCAwIDAgMCAwIDAgMDt9CkBmb250LWZhY2UKCXtmb250LWZhbWls eTpDYWxpYnJpOwoJcGFub3NlLTE6MiAxNSA1IDIgMiAyIDQgMyAyIDQ7fQpAZm9udC1mYWNlCgl7 Zm9udC1mYW1pbHk6VGFob21hOwoJcGFub3NlLTE6MiAxMSA2IDQgMyA1IDQgNCAyIDQ7fQovKiBT dHlsZSBEZWZpbml0aW9ucyAqLwpwLk1zb05vcm1hbCwgbGkuTXNvTm9ybWFsLCBkaXYuTXNvTm9y bWFsCgl7bWFyZ2luOjBpbjsKCW1hcmdpbi1ib3R0b206LjAwMDFwdDsKCWZvbnQtc2l6ZToxMS4w cHQ7Cglmb250LWZhbWlseToiQ2FsaWJyaSIsInNhbnMtc2VyaWYiO30KYTpsaW5rLCBzcGFuLk1z b0h5cGVybGluawoJe21zby1zdHlsZS1wcmlvcml0eTo5OTsKCWNvbG9yOmJsdWU7Cgl0ZXh0LWRl Y29yYXRpb246dW5kZXJsaW5lO30KYTp2aXNpdGVkLCBzcGFuLk1zb0h5cGVybGlua0ZvbGxvd2Vk Cgl7bXNvLXN0eWxlLXByaW9yaXR5Ojk5OwoJY29sb3I6cHVycGxlOwoJdGV4dC1kZWNvcmF0aW9u OnVuZGVybGluZTt9CnAuTXNvQWNldGF0ZSwgbGkuTXNvQWNldGF0ZSwgZGl2Lk1zb0FjZXRhdGUK CXttc28tc3R5bGUtcHJpb3JpdHk6OTk7Cgltc28tc3R5bGUtbGluazoiQmFsbG9vbiBUZXh0IENo YXIiOwoJbWFyZ2luOjBpbjsKCW1hcmdpbi1ib3R0b206LjAwMDFwdDsKCWZvbnQtc2l6ZTo4LjBw dDsKCWZvbnQtZmFtaWx5OiJUYWhvbWEiLCJzYW5zLXNlcmlmIjt9CnAuTXNvTGlzdFBhcmFncmFw aCwgbGkuTXNvTGlzdFBhcmFncmFwaCwgZGl2Lk1zb0xpc3RQYXJhZ3JhcGgKCXttc28tc3R5bGUt cHJpb3JpdHk6MzQ7CgltYXJnaW4tdG9wOjBpbjsKCW1hcmdpbi1yaWdodDowaW47CgltYXJnaW4t Ym90dG9tOjBpbjsKCW1hcmdpbi1sZWZ0Oi41aW47CgltYXJnaW4tYm90dG9tOi4wMDAxcHQ7Cglm b250LXNpemU6MTEuMHB0OwoJZm9udC1mYW1pbHk6IkNhbGlicmkiLCJzYW5zLXNlcmlmIjt9CnNw YW4uRW1haWxTdHlsZTE3Cgl7bXNvLXN0eWxlLXR5cGU6cGVyc29uYWw7Cglmb250LWZhbWlseToi Q2FsaWJyaSIsInNhbnMtc2VyaWYiOwoJY29sb3I6d2luZG93dGV4dDt9CnNwYW4uRW1haWxTdHls ZTE4Cgl7bXNvLXN0eWxlLXR5cGU6cGVyc29uYWw7Cglmb250LWZhbWlseToiQ2FsaWJyaSIsInNh bnMtc2VyaWYiOwoJY29sb3I6IzFGNDk3RDt9CnNwYW4uQmFsbG9vblRleHRDaGFyCgl7bXNvLXN0 eWxlLW5hbWU6IkJhbGxvb24gVGV4dCBDaGFyIjsKCW1zby1zdHlsZS1wcmlvcml0eTo5OTsKCW1z by1zdHlsZS1saW5rOiJCYWxsb29uIFRleHQiOwoJZm9udC1mYW1pbHk6IlRhaG9tYSIsInNhbnMt c2VyaWYiO30Kc3Bhbi5FbWFpbFN0eWxlMjEKCXttc28tc3R5bGUtdHlwZTpwZXJzb25hbC1yZXBs eTsKCWZvbnQtZmFtaWx5OiJDYWxpYnJpIiwic2Fucy1zZXJpZiI7Cgljb2xvcjojMUY0OTdEO30K Lk1zb0NocERlZmF1bHQKCXttc28tc3R5bGUtdHlwZTpleHBvcnQtb25seTsKCWZvbnQtc2l6ZTox MC4wcHQ7fQpAcGFnZSBXb3JkU2VjdGlvbjEKCXtzaXplOjguNWluIDExLjBpbjsKCW1hcmdpbjox LjBpbiAxLjBpbiAxLjBpbiAxLjBpbjt9CmRpdi5Xb3JkU2VjdGlvbjEKCXtwYWdlOldvcmRTZWN0 aW9uMTt9Ci8qIExpc3QgRGVmaW5pdGlvbnMgKi8KQGxpc3QgbDAKCXttc28tbGlzdC1pZDo2Nzc0 NjY1MTc7Cgltc28tbGlzdC10eXBlOmh5YnJpZDsKCW1zby1saXN0LXRlbXBsYXRlLWlkczotMTQ5 MTY5MDM1MCA1NzQwOTc5MTAgNjc2OTg2OTEgNjc2OTg2OTMgNjc2OTg2ODkgNjc2OTg2OTEgNjc2 OTg2OTMgNjc2OTg2ODkgNjc2OTg2OTEgNjc2OTg2OTM7fQpAbGlzdCBsMDpsZXZlbDEKCXttc28t bGV2ZWwtc3RhcnQtYXQ6MDsKCW1zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKCW1zby1s ZXZlbC10ZXh0Ou+DmDsKCW1zby1sZXZlbC10YWItc3RvcDpub25lOwoJbXNvLWxldmVsLW51bWJl ci1wb3NpdGlvbjpsZWZ0OwoJdGV4dC1pbmRlbnQ6LS4yNWluOwoJZm9udC1mYW1pbHk6V2luZ2Rp bmdzOwoJbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6Q2FsaWJyaTsKCW1zby1iaWRpLWZvbnQtZmFt aWx5OiJUaW1lcyBOZXcgUm9tYW4iO30KQGxpc3QgbDA6bGV2ZWwyCgl7bXNvLWxldmVsLW51bWJl ci1mb3JtYXQ6YnVsbGV0OwoJbXNvLWxldmVsLXRleHQ6bzsKCW1zby1sZXZlbC10YWItc3RvcDpu b25lOwoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwoJdGV4dC1pbmRlbnQ6LS4yNWlu OwoJZm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3Ijt9CkBsaXN0IGwwOmxldmVsMwoJe21zby1sZXZl bC1udW1iZXItZm9ybWF0OmJ1bGxldDsKCW1zby1sZXZlbC10ZXh0Ou+CpzsKCW1zby1sZXZlbC10 YWItc3RvcDpub25lOwoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwoJdGV4dC1pbmRl bnQ6LS4yNWluOwoJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KQGxpc3QgbDA6bGV2ZWw0Cgl7bXNv LWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OwoJbXNvLWxldmVsLXRleHQ674K3OwoJbXNvLWxl dmVsLXRhYi1zdG9wOm5vbmU7Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Cgl0ZXh0 LWluZGVudDotLjI1aW47Cglmb250LWZhbWlseTpTeW1ib2w7fQpAbGlzdCBsMDpsZXZlbDUKCXtt c28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7Cgltc28tbGV2ZWwtdGV4dDpvOwoJbXNvLWxl dmVsLXRhYi1zdG9wOm5vbmU7Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Cgl0ZXh0 LWluZGVudDotLjI1aW47Cglmb250LWZhbWlseToiQ291cmllciBOZXciO30KQGxpc3QgbDA6bGV2 ZWw2Cgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OwoJbXNvLWxldmVsLXRleHQ674Kn OwoJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxl ZnQ7Cgl0ZXh0LWluZGVudDotLjI1aW47Cglmb250LWZhbWlseTpXaW5nZGluZ3M7fQpAbGlzdCBs MDpsZXZlbDcKCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7Cgltc28tbGV2ZWwtdGV4 dDrvgrc7Cgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsKCW1zby1sZXZlbC1udW1iZXItcG9zaXRp b246bGVmdDsKCXRleHQtaW5kZW50Oi0uMjVpbjsKCWZvbnQtZmFtaWx5OlN5bWJvbDt9CkBsaXN0 IGwwOmxldmVsOAoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKCW1zby1sZXZlbC10 ZXh0Om87Cgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsKCW1zby1sZXZlbC1udW1iZXItcG9zaXRp b246bGVmdDsKCXRleHQtaW5kZW50Oi0uMjVpbjsKCWZvbnQtZmFtaWx5OiJDb3VyaWVyIE5ldyI7 fQpAbGlzdCBsMDpsZXZlbDkKCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7Cgltc28t bGV2ZWwtdGV4dDrvgqc7Cgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsKCW1zby1sZXZlbC1udW1i ZXItcG9zaXRpb246bGVmdDsKCXRleHQtaW5kZW50Oi0uMjVpbjsKCWZvbnQtZmFtaWx5Oldpbmdk aW5nczt9Cm9sCgl7bWFyZ2luLWJvdHRvbTowaW47fQp1bAoJe21hcmdpbi1ib3R0b206MGluO30K LS0+PC9zdHlsZT48L2hlYWQ+PGJvZHkgbGFuZz0iRU4tVVMiIGxpbms9ImJsdWUiIHZsaW5rPSJw dXJwbGUiPjxkaXYgY2xhc3M9IldvcmRTZWN0aW9uMSI+PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNw YW4gc3R5bGU9ImNvbG9yOiMxZjQ5N2QiPlNvcnJ5IElmIEkgd2FzIHVuY2xlYXIuPC9zcGFuPjwv cD48cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6IzFmNDk3ZCI+SSBhbSBu b3QgdGFsa2luZyBhYm91dCBob3RwbHVnIGZlYXR1cmUgb2YgU1BESy48L3NwYW4+PC9wPjxwIGNs YXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJjb2xvcjojMWY0OTdkIj7CoDwvc3Bhbj48L3A+ PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxZjQ5N2QiPsKgPC9zcGFu PjwvcD48cCBjbGFzcz0iTXNvTGlzdFBhcmFncmFwaCIgc3R5bGU9InRleHQtaW5kZW50Oi0uMjVp bjttc28tbGlzdDpsMCBsZXZlbDEgbGZvMSI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5Oldpbmdk aW5ncztjb2xvcjojMWY0OTdkIj48c3BhbiBzdHlsZT0ibXNvLWxpc3Q6SWdub3JlIj7DmDxzcGFu IHN0eWxlPSJmb250OjcuMHB0ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyI+wqAgPC9zcGFu Pjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiMxZjQ5N2QiPlBDSSBob3RwbHVnIGZl YXR1cmUgaXMgaW1wbGVtZW50ZWQgaW4ga2VybmVsIGRyaXZlciBhbmQgd29ya2luZyBmaW5lLjwv c3Bhbj48L3A+PHAgY2xhc3M9Ik1zb0xpc3RQYXJhZ3JhcGgiIHN0eWxlPSJ0ZXh0LWluZGVudDot LjI1aW47bXNvLWxpc3Q6bDAgbGV2ZWwxIGxmbzEiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpX aW5nZGluZ3M7Y29sb3I6IzFmNDk3ZCI+PHNwYW4gc3R5bGU9Im1zby1saXN0Oklnbm9yZSI+w5g8 c3BhbiBzdHlsZT0iZm9udDo3LjBwdCAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDsiPsKgIDwv c3Bhbj48L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjojMWY0OTdkIj5CdXQgdGhlIG1v bWVudCBJIHJ1biBTUERLIGFuZCB0cnkgdG8gYmluZCB2ZmlvIGRyaXZlciBpdCBzdGFsbHMgY29t cGxldGVseS48L3NwYW4+PC9wPjxwIGNsYXNzPSJNc29MaXN0UGFyYWdyYXBoIiBzdHlsZT0ibWFy Z2luLWxlZnQ6MS4waW4iPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5l dyZxdW90Oztjb2xvcjojMWY0OTdkIj48c3BhbiBzdHlsZT0ibXNvLWxpc3Q6SWdub3JlIj5vPHNw YW4gc3R5bGU9ImZvbnQ6Ny4wcHQgJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7Ij7CoMKgIDwv c3Bhbj48L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjojMWY0OTdkIj5UaGUgcmVhc29u IGlzOiBrZXJuZWwgZHJpdmVyIHdpbGwgbm90IHJlbW92ZSB0aGUgcm9vdCBidXMgKHdoZW4gUENJ ZSBlbmRwb2ludCBpcyBub3QgY29ubmVjdGVkLCBkdXJpbmcgYm9vdC10aW1lKTwvc3Bhbj48L3A+ PHAgY2xhc3M9Ik1zb0xpc3RQYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+PHNw YW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7O2NvbG9yOiMxZjQ5 N2QiPjxzcGFuIHN0eWxlPSJtc28tbGlzdDpJZ25vcmUiPm88c3BhbiBzdHlsZT0iZm9udDo3LjBw dCAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDsiPsKgwqAgPC9zcGFuPjwvc3Bhbj48L3NwYW4+ PHNwYW4gc3R5bGU9ImNvbG9yOiMxZjQ5N2QiPlNvIFNQREsgdHJpZXMgdG8gYmluZCBkcml2ZXIg dGhpbmtpbmcgaG9zdCBicmlkZ2UgaXMgdGhlcmUuPC9zcGFuPjwvcD48cCBjbGFzcz0iTXNvTGlz dFBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuNWluIj48c3BhbiBzdHlsZT0iZm9udC1m YW1pbHk6V2luZ2RpbmdzO2NvbG9yOiMxZjQ5N2QiPjxzcGFuIHN0eWxlPSJtc28tbGlzdDpJZ25v cmUiPsKnPHNwYW4gc3R5bGU9ImZvbnQ6Ny4wcHQgJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7 Ij7CoCA8L3NwYW4+PC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6IzFmNDk3ZCI+V2l0 aG91dCBQQ0kgaG90cGx1ZyBob3N0IGJyaWRnZSB3aWxsIG5vdCBiZSB0aGVyZSBiZWNhdXNlIG9m IGZvbGxvd2luZyBBUEkgY2FsbCBpbiBrZXJuZWwgZHJpdmVyLjwvc3Bhbj48L3A+PHAgY2xhc3M9 Ik1zb0xpc3RQYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tbGVmdDoyLjBpbiI+PHNwYW4gc3R5bGU9 ImZvbnQtZmFtaWx5OlN5bWJvbCI+PHNwYW4gc3R5bGU9Im1zby1saXN0Oklnbm9yZSI+wrc8c3Bh biBzdHlsZT0iZm9udDo3LjBwdCAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDsiPsKgwqDCoMKg wqDCoMKgwqAgPC9zcGFuPjwvc3Bhbj48L3NwYW4+cGNpX3N0b3Bfcm9vdF9idXMoYnVzKTs8L3A+ PHAgY2xhc3M9Ik1zb0xpc3RQYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tbGVmdDoyLjBpbiI+PHNw YW4gc3R5bGU9ImZvbnQtZmFtaWx5OlN5bWJvbCI+PHNwYW4gc3R5bGU9Im1zby1saXN0Oklnbm9y ZSI+wrc8c3BhbiBzdHlsZT0iZm9udDo3LjBwdCAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDsi PsKgwqDCoMKgwqDCoMKgwqAgPC9zcGFuPjwvc3Bhbj48L3NwYW4+cGNpX3JlbW92ZV9yb290X2J1 cyhidXMpOzwvcD48cCBjbGFzcz0iTXNvTGlzdFBhcmFncmFwaCIgc3R5bGU9InRleHQtaW5kZW50 Oi0uMjVpbjttc28tbGlzdDpsMCBsZXZlbDEgbGZvMSI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5 OldpbmdkaW5ncyI+PHNwYW4gc3R5bGU9Im1zby1saXN0Oklnbm9yZSI+w5g8c3BhbiBzdHlsZT0i Zm9udDo3LjBwdCAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDsiPsKgIDwvc3Bhbj48L3NwYW4+ PC9zcGFuPnNpbmNlIG5vdyB3ZSBhbGxvdyBob3N0IGJyaWRnZSBjcmVhdGlvbsKgIChBUEk6IHBj aV9jcmVhdGVfcm9vdF9idXMpIGlycmVzcGVjdGl2ZSBvZiBFUCBpcyBjb25uZWN0ZWQgb3Igbm90 LjwvcD48cCBjbGFzcz0iTXNvTGlzdFBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGlu Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPjxzcGFu IHN0eWxlPSJtc28tbGlzdDpJZ25vcmUiPm88c3BhbiBzdHlsZT0iZm9udDo3LjBwdCAmcXVvdDtU aW1lcyBOZXcgUm9tYW4mcXVvdDsiPsKgwqAgPC9zcGFuPjwvc3Bhbj48L3NwYW4+QW5kIHRoZW4g aWYgSSBydW4gU1BESyAod2l0aCBubyBFbmRwb2ludCBjb25uZWN0ZWQvRW1wdHkgc2xvdCkgSSBn ZXQgc3RhbGxzLjwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj7CoDwvcD48cCBjbGFzcz0iTXNvTm9y bWFsIj5SZWdhcmRzLDwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj5PemEuPC9wPjxkaXY+PGRpdiBz dHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAjYjVjNGRmIDEuMHB0O3BhZGRpbmc6 My4wcHQgMGluIDBpbiAwaW4iPjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxiPjxzcGFuIHN0eWxlPSJm b250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1RhaG9tYSZxdW90OywmcXVvdDtzYW5z LXNlcmlmJnF1b3Q7Ij5Gcm9tOjwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4w cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VGFob21hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDsi PiBTUERLIFttYWlsdG86PGEgaHJlZj0ibWFpbHRvOnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmci PnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmc8L2E+XSA8Yj5PbiBCZWhhbGYgT2YgPC9iPkNoYW5n LCBDdW55aW48YnI+PGI+U2VudDo8L2I+IFR1ZXNkYXksIEF1Z3VzdCAyOSwgMjAxNyAyOjE0IFBN PGJyPjxiPlRvOjwvYj4gU3RvcmFnZSBQZXJmb3JtYW5jZSBEZXZlbG9wbWVudCBLaXQ8YnI+PGI+ U3ViamVjdDo8L2I+IFJlOiBbU1BES10gUENJIGhvdHBsdWcgYW5kIFNQREs8L3NwYW4+PC9wPjwv ZGl2PjwvZGl2PjxwIGNsYXNzPSJNc29Ob3JtYWwiPsKgPC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwi PjxzcGFuIHN0eWxlPSJjb2xvcjojMWY0OTdkIj5IaSBPemEsPC9zcGFuPjwvcD48cCBjbGFzcz0i TXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6IzFmNDk3ZCI+wqA8L3NwYW4+PC9wPjxwIGNs YXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJjb2xvcjojMWY0OTdkIj5Db3VsZCB5b3UgcGxl YXNlIHByb3ZpZGUgc29tZSBkZXRhaWxzIHN0ZXBzIHRvIHJlcHJvZHVjZSB0aGUgaXNzdWU/PC9z cGFuPjwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6IzFmNDk3ZCI+ U1BESyB0YWtlIGluIGNoYXJnZSDCoGZvciBob3RwbHVnIG9ubHkgYWZ0ZXIgeW91IGJpbmQgdGhl IGRldmljZSB0byB1aW8gb3IgdmZpbyBkcml2ZXIsPC9zcGFuPjwvcD48cCBjbGFzcz0iTXNvTm9y bWFsIj48c3BhbiBzdHlsZT0iY29sb3I6IzFmNDk3ZCI+c28gZm9yIHRoZSBuZXcgaW5zZXJ0IGRl aXZjZSwgaXQgd2lsbCBoYW5kbGVkIGJ5IGtlcm5lbCBkcml2ZXIgZmlyc3QuPC9zcGFuPjwvcD48 cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6IzFmNDk3ZCI+wqA8L3NwYW4+ PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJjb2xvcjojMWY0OTdkIj4tQ3Vu eWluPC9zcGFuPjwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj48YSBuYW1lPSJfTWFpbEVuZENvbXBv c2UiPjwvYT48c3BhbiBzdHlsZT0iY29sb3I6IzFmNDk3ZCI+wqA8L3NwYW4+PC9wPjxkaXYgc3R5 bGU9ImJvcmRlcjpub25lO2JvcmRlci1sZWZ0OnNvbGlkIGJsdWUgMS41cHQ7cGFkZGluZzowaW4g MGluIDBpbiA0LjBwdCI+PGRpdj48ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItdG9wOnNv bGlkICNlMWUxZTEgMS4wcHQ7cGFkZGluZzozLjBwdCAwaW4gMGluIDBpbiI+PHAgY2xhc3M9Ik1z b05vcm1hbCI+PGEgbmFtZT0iX19fX19yZXBseXNlcGFyYXRvciI+PC9hPjxiPkZyb206PC9iPiBT UERLIFs8YSBocmVmPSJtYWlsdG86c3Bkay1ib3VuY2VzQGxpc3RzLjAxLm9yZyI+bWFpbHRvOnNw ZGstYm91bmNlc0BsaXN0cy4wMS5vcmc8L2E+XSA8Yj5PbiBCZWhhbGYgT2YgPC9iPk96YSBPemE8 YnI+PGI+U2VudDo8L2I+IFR1ZXNkYXksIEF1Z3VzdCAyOSwgMjAxNyA0OjIyIFBNPGJyPjxiPlRv OjwvYj4gU3RvcmFnZSBQZXJmb3JtYW5jZSBEZXZlbG9wbWVudCBLaXQgJmx0OzxhIGhyZWY9Im1h aWx0bzpzcGRrQGxpc3RzLjAxLm9yZyI+c3Bka0BsaXN0cy4wMS5vcmc8L2E+Jmd0Ozxicj48Yj5T dWJqZWN0OjwvYj4gW1NQREtdIFBDSSBob3RwbHVnIGFuZCBTUERLPC9wPjwvZGl2PjwvZGl2Pjxw IGNsYXNzPSJNc29Ob3JtYWwiPsKgPC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPkhpIEFsbCw8L3A+ PHAgY2xhc3M9Ik1zb05vcm1hbCI+wqA8L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCI+UENJIGhvdHBs dWcgc3VwcG9ydDsgcmVxdWlyZXMgY3JlYXRpb24gb2Ygcm9vdCBidXMgYW5kIHByb2JlIHRvIGdv IGFoZWFkIHdpdGggYWxsIFBDSWUgY29uZmlndXJhdGlvbi48L3A+PHAgY2xhc3M9Ik1zb05vcm1h bCI+wqA8L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCI+V2hpY2ggbWVhbnMgZm9sbG93aW5nIEFQSXMg YWUgbm90IGNhbGxlZC48L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCI+wqDCoCBwY2lfc3RvcF9yb290 X2J1cyhidXMpOzwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj7CoMKgIHBjaV9yZW1vdmVfcm9vdF9i dXMoYnVzKTs8L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCI+wqA8L3A+PHAgY2xhc3M9Ik1zb05vcm1h bCI+wqA8L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCI+QW5kIHRoZW4gSWYgSSBydW4gU1BESywgSXQg bWFrZXMgc3lzdGVtIGNyYXNoIHdpdGggZm9sbG93aW5nIGluZm8uPC9wPjxwIGNsYXNzPSJNc29O b3JtYWwiPsKgPC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPk5vdGU6IGlmIHRoZSBkaXNrIGlzIGNv bm5lY3RlZCB0aGVuIFNQREsgaXMgZmluZS48L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCI+wqA8L3A+ PHAgY2xhc3M9Ik1zb05vcm1hbCI+T3RoZXJ3aXNlIGl0IHN0YWxscyB0aGUgc3lzdGVtIHdpdGgg Zm9sbG93aW5nIGNyYXNoLjwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj7CoDwvcD48cCBjbGFzcz0i TXNvTm9ybWFsIj5yb290QGJjbTk1ODc0Mms6fiMgZWNobyAyMDQ4ICZndDsgL3Byb2Mvc3lzL3Zt L25yX2h1Z2VwYWdlczsgL3Vzci9zaGFyZS9zcGRrL3NjcmlwdHMvc2V0dXAuc2g8L3A+PHAgY2xh c3M9Ik1zb05vcm1hbCI+Z3JlcDogL3Vzci9zaGFyZS9zcGRrL3NjcmlwdHMvLi4vaW5jbHVkZS9z cGRrL3BjaV9pZHMuaDogTm8gc3VjaFvCoMKgIDM0LjYyMTMyNV0gcGNpIDAwMDg6MDA6MDAuMDog UENJIGJyaWRnZSB0byBbYnVzIDAxXTwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj5maWxlIG9yIGRp cmVjdG9yeTwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj5bwqDCoCAzNC42NDA1ODZdIHBjaSAwMDAw OjAwOjAwLjA6IGJyaWRnZSBjb25maWd1cmF0aW9uIGludmFsaWQgKFtidXMgMDAtMDBdKSwgcmVj b25maWd1cmluZzwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj5bwqDCoCA1MC4yNjcwNTZdIHBjaSAw MDAwOjAwOjAwLjA6IFBDSSBicmlkZ2UgdG8gW2J1cyAwMV08L3A+PHAgY2xhc3M9Ik1zb05vcm1h bCI+W8KgwqAgNTAuMjcyMzM3XSBwY2kgMDAwMTowMDowMC4wOiBicmlkZ2UgY29uZmlndXJhdGlv biBpbnZhbGlkIChbYnVzIDAwLTAwXSksIHJlY29uZmlndXJpbmc8L3A+PHAgY2xhc3M9Ik1zb05v cm1hbCI+W8KgwqAgNjUuODk4NzYyXSBwY2kgMDAwMTowMDowMC4wOiBQQ0kgYnJpZGdlIHRvIFti dXMgMDFdPC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPlvCoMKgIDY1LjkwNDAxNV0gcGNpIDAwMDY6 MDA6MDAuMDogYnJpZGdlIGNvbmZpZ3VyYXRpb24gaW52YWxpZCAoW2J1cyAwMC0wMF0pLCByZWNv bmZpZ3VyaW5nPC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPlvCoMKgIDgxLjUzMDQzN10gcGNpIDAw MDY6MDA6MDAuMDogUENJIGJyaWRnZSB0byBbYnVzIDAxXTwvcD48cCBjbGFzcz0iTXNvTm9ybWFs Ij5bwqDCoCA4MS41MzU2ODBdIHBjaSAwMDA3OjAwOjAwLjA6IGJyaWRnZSBjb25maWd1cmF0aW9u IGludmFsaWQgKFtidXMgMDAtMDBdKSwgcmVjb25maWd1cmluZzwvcD48cCBjbGFzcz0iTXNvTm9y bWFsIj5bwqDCoCA5Ny4xNjIxMDNdIHBjaSAwMDA3OjAwOjAwLjA6IFBDSSBicmlkZ2UgdG8gW2J1 cyAwMV08L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCI+W8KgwqAgOTcuMTY3MjU1XSBCYWQgbW9kZSBp biBFcnJvciBoYW5kbGVyIGRldGVjdGVkIG9uIENQVTYsIGNvZGUgMHhiZjAwMDAwMiAtLSBTRXJy b3I8L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCI+W8KgwqAgOTcuMTc0OTc0XSBJbnRlcm5hbCBlcnJv cjogT29wcyAtIGJhZCBtb2RlOiAwIFsjMV0gU01QPC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPlvC oMKgIDk3LjE4MDM2NF0gTW9kdWxlcyBsaW5rZWQgaW46PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwi PlvCoMKgIDk3LjE4MzUxNV0gQ1BVOiA2IFBJRDogMjEwNCBDb21tOiBiYXNoIE5vdCB0YWludGVk IDQuMTIuMC0wMTU2MC1nYzgzMDkzZC1kaXJ0eSAjODk8L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCI+ W8KgwqAgOTcuMTkxNDEzXSBIYXJkd2FyZSBuYW1lOiBTdGluZ3JheSBDb21ibyBTVksgdy9QQ0ll IElPTU1VIChCQ005NTg3NDJLKSAoRFQpPC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPlvCoMKgIDk3 LjE5ODY4M10gdGFzazogZmZmZjgwYTE2M2E0MDAwMCB0YXNrLnN0YWNrOiBmZmZmODBhMTYxMmI0 MDAwPC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPlvCoMKgIDk3LjIwNDc5MF0gUEMgaXMgYXQgMHhm ZmZmN2NiZGZiYTg8L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCI+W8KgwqAgOTcuMjA4Mzg3XSBMUiBp cyBhdCAweGZmZmY3Y2I4ZjI4ODwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj5bwqDCoCA5Ny4yMTE5 ODNdIHBjIDogWyZsdDswMDAwZmZmZjdjYmRmYmE4Jmd0O10gbHIgOiBbJmx0OzAwMDBmZmZmN2Ni OGYyODgmZ3Q7XSBwc3RhdGU6IDIwMDAwMDAwPC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPlvCoMKg IDk3LjIxOTYxMl0gc3AgOiAwMDAwZmZmZmZlNTY0MDQwPC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwi PlvCoMKgIDk3LjIyMzAyOV0geDI5OiAwMDAwZmZmZmZlNTY0MDQwIHgyODogMDAwMDAwMDAxMDU0 Y2U2MDwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj5bwqDCoCA5Ny4yMjg1MDldIHgyNzogMDAwMDAw MDAwMDAwMDAwMCB4MjY6IDAwMDAwMDAwMDA0ZTIwMDA8L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCI+ W8KgwqAgOTcuMjMzOTg5XSB4MjU6IDAwMDAwMDAwMDA0ZTUwMDAgeDI0OiAwMDAwMDAwMDAwMDAw MDAyPC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPlvCoMKgIDk3LjIzOTQ2OF0geDIzOiAwMDAwZmZm ZjdjYzYzNjM4IHgyMjogMDAwMDAwMDAwMDAwMDAwMjwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj5b wqDCoCA5Ny4yNDQ5NDddIHgyMTogMDAwMGZmZmY3Y2M2NzQ4MCB4MjA6IDAwMDAwMDAwMTA1NGRi MTA8L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCI+W8KgwqAgOTcuMjUwNDI3XSB4MTk6IDAwMDAwMDAw MDAwMDAwMDIgeDE4OiAwMDAwMDAwMDAwMDAwMDAwPC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPlvC oMKgIDk3LjI1NTkwNl0geDE3OiAwMDAwMDAwMDAwNGRhYWM4IHgxNjogMDAwMDAwMDAwMDAwMDAw MDwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj5bwqDCoCA5Ny4yNjEzODZdIHgxNTogMDAwMDAwMDAw MDAwMDA5NiB4MTQ6IDAwMDAwMDAwMDAwMDAwMDA8L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCI+W8Kg wqAgOTcuMjY2ODY1XSB4MTM6IDAwMDAwMDAwMDAwMDAwMDAgeDEyOiAwMDAwMDAwMDAwMDAwMDAw PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPlvCoMKgIDk3LjI3MjM0NF0geDExOiAwMDAwMDAwMDAw MDAwMDIwIHgxMDogMDEwMTAxMDEwMTAxMDEwMTwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj5bwqDC oCA5Ny4yNzc4MjRdIHg5IDogZmZmZmZmODBmZmZmZmZjOCB4OCA6IDAwMDAwMDAwMDAwMDAwNDA8 L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCI+W8KgwqAgOTcuMjgzMzAzXSB4NyA6IDAwMDAwMDAwMDAw MDAwMDEgeDYgOiAwMDAwZmZmZjdjYzY2OWYwPC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPlvCoMKg IDk3LjI4ODc4Ml0geDUgOiAwMDAwMDAwMDAwMDE1NTUxIHg0IDogMDAwMDAwMDAwMDAwMDg4ODwv cD48cCBjbGFzcz0iTXNvTm9ybWFsIj5bwqDCoCA5Ny4yOTQyNjFdIHgzIDogMDAwMDAwMDAwMDAw MDAwMCB4MiA6IDAwMDAwMDAwMDAwMDAwMDI8L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCI+W8KgwqAg OTcuMjk5NzQxXSB4MSA6IDAwMDAwMDAwMTA1NGRiMTAgeDAgOiAwMDAwMDAwMDAwMDAwMDAyPC9w PjxwIGNsYXNzPSJNc29Ob3JtYWwiPlvCoMKgIDk3LjMwNTIyMF0gUHJvY2VzcyBiYXNoIChwaWQ6 IDIxMDQsIHN0YWNrIGxpbWl0ID0gMHhmZmZmODBhMTYxMmI0MDAwKTwvcD48cCBjbGFzcz0iTXNv Tm9ybWFsIj5bwqDCoCA5Ny4zMTE5NjBdIC0tLVsgZW5kIHRyYWNlIGExZjQ4YWJlMzA4MjAyNDEg XS0tLTwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj7CoDwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj5S ZWdhcmRzLDwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj5PemEuPC9wPjwvZGl2PjwvZGl2PjwvYm9k eT48L2h0bWw+Cg== --===============5073834544980214138==--