From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============1438340341144628544==" MIME-Version: 1.0 From: Luse, Paul E Subject: Re: [SPDK] SPDK Blobstore support object store? Date: Mon, 28 Aug 2017 17:16:12 +0000 Message-ID: <82C9F782B054C94B9FC04A331649C77A68F34D06@fmsmsx104.amr.corp.intel.com> In-Reply-To: 08A7040B-9B29-40D9-8360-DFC8021514AB@163.com List-ID: To: spdk@lists.01.org --===============1438340341144628544== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Helloway, There are several folks in the community that have worked on Ceph enhanceme= nts and you can find a lot of that info in the list archives, for example h= ttps://lists.01.org/pipermail/spdk/2017-February/000329.html You can also google SPDK & Ceph and find presentations like this one from Z= iye who also monitors this email list https://www.slideshare.net/DanielleWo= mboldt/ceph-day-beijing-spdk-for-ceph If you would like to help work on this aspect of SPDK, this is how you join= the discussion - you just joined :) Take a look at the materials I just me= ntioned and use either this list or IRC to see what the current activities = are and where you can contribute. With regards to an SPDK module that exposes an object interface, which is a= ctually what I thought you meant at first, that=E2=80=99s where I was sayi= ng that I wasn=E2=80=99t aware of any real activity. If there=E2=80=99s any= interest there then this list or IRC, mentioned below, would be the place = to try and get some discussion started. Thx Paul From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of We We Sent: Monday, August 28, 2017 7:38 AM To: Storage Performance Development Kit Subject: Re: [SPDK] SPDK Blobstore support object store? Hi Paul, Thank you for your answer. we know there is also object store in the ceph.= spdk/lib/bdev/ can accelerate ceph block store, so we think if we can also= be able to use spdk to accelerate ceph object store? If we can, Do you h= ave any directions and guidelines of object store? If we want to contribute= for object store, what should we do about it? And who can we join in the d= iscussion with? Thx Helloway =E5=9C=A8 2017=E5=B9=B48=E6=9C=8828=E6=97=A5=EF=BC=8C=E4=B8=8B=E5=8D=889:53= =EF=BC=8CLuse, Paul E > =E5=86=99=E9=81=93=EF=BC=9A Hi Helloway, You are correct in that much of the focus on the various SPDK modules is bl= ock. If you=E2=80=99d like more general info, the community had summit mee= ting back in April, you can find that info here: http://www.spdk.io/news/20= 17/06/21/summit_videos/ Regarding object storage, I=E2=80=99m not aware of anyone out there activel= y working on anything but some of us have discussed it for sure and I suspe= ct there=E2=80=99ll be more talk on this topic throughout the rest of the y= ear. Is your question just a general one or did you have a specific API an= d/or use case in mind? Curious if anyone else out there has specific intere= sts in this are as well? Note that we=E2=80=99re also on IRC, freenode on channel #spdk Thx Paul From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of We We Sent: Monday, August 28, 2017 6:17 AM To: spdk(a)lists.01.org Subject: [SPDK] SPDK Blobstore support object store? Hi=EF=BC=8C In the source code of SPDk (https://github.com/spdk/spdk/tree/master/lib), = we can find spdk/lib/bdev/ module that means SPDk is able to be in favor of block store and accel= erate ceph block store. However, I don not see anything about object store.= Does SPDK support object store? Is there any plan to do with object store? Could someone can give me the answer? Regards, Helloway _______________________________________________ SPDK mailing list SPDK(a)lists.01.org https://lists.01.org/mailman/listinfo/spdk --===============1438340341144628544== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl eHQvaHRtbDsgY2hhcnNldD1pc28tMjAyMi1qcCI+CjxtZXRhIG5hbWU9IkdlbmVyYXRvciIgY29u dGVudD0iTWljcm9zb2Z0IFdvcmQgMTUgKGZpbHRlcmVkIG1lZGl1bSkiPgo8c3R5bGU+PCEtLQov KiBGb250IERlZmluaXRpb25zICovCkBmb250LWZhY2UKCXtmb250LWZhbWlseTpIZWx2ZXRpY2E7 CglwYW5vc2UtMToyIDExIDYgNCAyIDIgMiAyIDIgNDt9CkBmb250LWZhY2UKCXtmb250LWZhbWls eTpTaW1TdW47CglwYW5vc2UtMToyIDEgNiAwIDMgMSAxIDEgMSAxO30KQGZvbnQtZmFjZQoJe2Zv bnQtZmFtaWx5OiJDYW1icmlhIE1hdGgiOwoJcGFub3NlLTE6MiA0IDUgMyA1IDQgNiAzIDIgNDt9 CkBmb250LWZhY2UKCXtmb250LWZhbWlseTpDYWxpYnJpOwoJcGFub3NlLTE6MiAxNSA1IDIgMiAy IDQgMyAyIDQ7fQpAZm9udC1mYWNlCgl7Zm9udC1mYW1pbHk6IlNlZ29lIFVJIjsKCXBhbm9zZS0x OjIgMTEgNSAyIDQgMiA0IDIgMiAzO30KQGZvbnQtZmFjZQoJe2ZvbnQtZmFtaWx5OiJcQFNpbVN1 biI7CglwYW5vc2UtMToyIDEgNiAwIDMgMSAxIDEgMSAxO30KLyogU3R5bGUgRGVmaW5pdGlvbnMg Ki8KcC5Nc29Ob3JtYWwsIGxpLk1zb05vcm1hbCwgZGl2Lk1zb05vcm1hbAoJe21hcmdpbjowaW47 CgltYXJnaW4tYm90dG9tOi4wMDAxcHQ7Cglmb250LXNpemU6MTIuMHB0OwoJZm9udC1mYW1pbHk6 U2ltU3VuOwoJbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6WkgtQ047fQphOmxpbmssIHNwYW4uTXNvSHlw ZXJsaW5rCgl7bXNvLXN0eWxlLXByaW9yaXR5Ojk5OwoJY29sb3I6Ymx1ZTsKCXRleHQtZGVjb3Jh dGlvbjp1bmRlcmxpbmU7fQphOnZpc2l0ZWQsIHNwYW4uTXNvSHlwZXJsaW5rRm9sbG93ZWQKCXtt c28tc3R5bGUtcHJpb3JpdHk6OTk7Cgljb2xvcjpwdXJwbGU7Cgl0ZXh0LWRlY29yYXRpb246dW5k ZXJsaW5lO30Kc3Bhbi5hcHBsZS1jb252ZXJ0ZWQtc3BhY2UKCXttc28tc3R5bGUtbmFtZTphcHBs ZS1jb252ZXJ0ZWQtc3BhY2U7fQpzcGFuLmpzLXBhdGgtc2VnbWVudAoJe21zby1zdHlsZS1uYW1l OmpzLXBhdGgtc2VnbWVudDt9CnNwYW4uc2VwYXJhdG9yCgl7bXNvLXN0eWxlLW5hbWU6c2VwYXJh dG9yO30Kc3Bhbi5FbWFpbFN0eWxlMjAKCXttc28tc3R5bGUtdHlwZTpwZXJzb25hbC1yZXBseTsK CWZvbnQtZmFtaWx5OiJDYWxpYnJpIixzYW5zLXNlcmlmOwoJY29sb3I6IzFGNDk3RDt9Ci5Nc29D aHBEZWZhdWx0Cgl7bXNvLXN0eWxlLXR5cGU6ZXhwb3J0LW9ubHk7Cglmb250LXNpemU6MTAuMHB0 O30KQHBhZ2UgV29yZFNlY3Rpb24xCgl7c2l6ZTo4LjVpbiAxMS4waW47CgltYXJnaW46MS4waW4g MS4waW4gMS4waW4gMS4waW47fQpkaXYuV29yZFNlY3Rpb24xCgl7cGFnZTpXb3JkU2VjdGlvbjE7 fQotLT48L3N0eWxlPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPgo8bzpzaGFwZWRlZmF1bHRzIHY6 ZXh0PSJlZGl0IiBzcGlkbWF4PSIxMDI2IiAvPgo8L3htbD48IVtlbmRpZl0tLT48IS0tW2lmIGd0 ZSBtc28gOV0+PHhtbD4KPG86c2hhcGVsYXlvdXQgdjpleHQ9ImVkaXQiPgo8bzppZG1hcCB2OmV4 dD0iZWRpdCIgZGF0YT0iMSIgLz4KPC9vOnNoYXBlbGF5b3V0PjwveG1sPjwhW2VuZGlmXS0tPgo8 L2hlYWQ+Cjxib2R5IGxhbmc9IkVOLVVTIiBsaW5rPSJibHVlIiB2bGluaz0icHVycGxlIiBzdHls ZT0id29yZC13cmFwOiBicmVhay13b3JkOy13ZWJraXQtbmJzcC1tb2RlOiBzcGFjZTstd2Via2l0 LWxpbmUtYnJlYWs6IGFmdGVyLXdoaXRlLXNwYWNlIj4KPGRpdiBjbGFzcz0iV29yZFNlY3Rpb24x Ij4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9u dC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0Q7bXNv LWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVMiPkhpIEhlbGxvd2F5LDxvOnA+PC9vOnA+PC9zcGFuPjwv cD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9u dC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0Q7bXNv LWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVMiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4KPHAg Y2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1p bHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0Q7bXNvLWZhcmVh c3QtbGFuZ3VhZ2U6RU4tVVMiPlRoZXJlIGFyZSBzZXZlcmFsIGZvbGtzIGluIHRoZSBjb21tdW5p dHkgdGhhdCBoYXZlIHdvcmtlZCBvbiBDZXBoIGVuaGFuY2VtZW50cyBhbmQgeW91IGNhbiBmaW5k IGEgbG90IG9mIHRoYXQgaW5mbyBpbiB0aGUgbGlzdCBhcmNoaXZlcywKIGZvciBleGFtcGxlIDxh IGhyZWY9Imh0dHBzOi8vbGlzdHMuMDEub3JnL3BpcGVybWFpbC9zcGRrLzIwMTctRmVicnVhcnkv MDAwMzI5Lmh0bWwiPgpodHRwczovL2xpc3RzLjAxLm9yZy9waXBlcm1haWwvc3Bkay8yMDE3LUZl YnJ1YXJ5LzAwMDMyOS5odG1sPC9hPiZuYnNwOyA8bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNs YXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5 OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEO21zby1mYXJlYXN0 LWxhbmd1YWdlOkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJN c29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90 O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEO21zby1mYXJlYXN0LWxhbmd1 YWdlOkVOLVVTIj5Zb3UgY2FuIGFsc28gZ29vZ2xlIFNQREsgJmFtcDsgQ2VwaCBhbmQgZmluZCBw cmVzZW50YXRpb25zIGxpa2UgdGhpcyBvbmUgZnJvbSBaaXllIHdobyBhbHNvIG1vbml0b3JzIHRo aXMgZW1haWwgbGlzdAo8YSBocmVmPSJodHRwczovL3d3dy5zbGlkZXNoYXJlLm5ldC9EYW5pZWxs ZVdvbWJvbGR0L2NlcGgtZGF5LWJlaWppbmctc3Bkay1mb3ItY2VwaCI+Cmh0dHBzOi8vd3d3LnNs aWRlc2hhcmUubmV0L0RhbmllbGxlV29tYm9sZHQvY2VwaC1kYXktYmVpamluZy1zcGRrLWZvci1j ZXBoPC9hPiA8bzpwPgo8L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3Bh biBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7 LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3RDttc28tZmFyZWFzdC1sYW5ndWFnZTpFTi1VUyI+PG86 cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHls ZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMt c2VyaWY7Y29sb3I6IzFGNDk3RDttc28tZmFyZWFzdC1sYW5ndWFnZTpFTi1VUyI+SWYgeW91IHdv dWxkIGxpa2UgdG8gaGVscCB3b3JrIG9uIHRoaXMgYXNwZWN0IG9mIFNQREssIHRoaXMgaXMgaG93 IHlvdSBqb2luIHRoZSBkaXNjdXNzaW9uICYjODIxMTsgeW91IGp1c3Qgam9pbmVkIDopIFRha2Ug YSBsb29rIGF0IHRoZQogbWF0ZXJpYWxzIEkganVzdCBtZW50aW9uZWQgYW5kIHVzZSBlaXRoZXIg dGhpcyBsaXN0IG9yIElSQyB0byBzZWUgd2hhdCB0aGUgY3VycmVudCBhY3Rpdml0aWVzIGFyZSBh bmQgd2hlcmUgeW91IGNhbiBjb250cmlidXRlLgo8bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNs YXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5 OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEO21zby1mYXJlYXN0 LWxhbmd1YWdlOkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJN c29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90 O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEO21zby1mYXJlYXN0LWxhbmd1 YWdlOkVOLVVTIj5XaXRoIHJlZ2FyZHMgdG8gYW4gU1BESyBtb2R1bGUgdGhhdCBleHBvc2VzIGFu IG9iamVjdCBpbnRlcmZhY2UsIHdoaWNoIGlzIGFjdHVhbGx5IHdoYXQgSSB0aG91Z2h0IHlvdSBt ZWFudCBhdCBmaXJzdCwgdGhhdBskQiFHGyhCcyAmbmJzcDt3aGVyZQogSSB3YXMgc2F5aW5nIHRo YXQgSSB3YXNuGyRCIUcbKEJ0IGF3YXJlIG9mIGFueSByZWFsIGFjdGl2aXR5LiBJZiB0aGVyZRsk QiFHGyhCcyBhbnkgaW50ZXJlc3QgdGhlcmUgdGhlbiB0aGlzIGxpc3Qgb3IgSVJDLCBtZW50aW9u ZWQgYmVsb3csIHdvdWxkIGJlIHRoZSBwbGFjZSB0byB0cnkgYW5kIGdldCBzb21lIGRpc2N1c3Np b24gc3RhcnRlZC48bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxz cGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVv dDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEO21zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTIj48 bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0 eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fu cy1zZXJpZjtjb2xvcjojMUY0OTdEO21zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTIj5UaHg8bzpw PjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250 LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtj b2xvcjojMUY0OTdEO21zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTIj5QYXVsPG86cD48L286cD48 L3NwYW4+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48YSBuYW1lPSJfTWFpbEVuZENvbXBvc2Ui PjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkm cXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEO21zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVT Ij48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L2E+PC9wPgo8ZGl2Pgo8ZGl2IHN0eWxlPSJib3Jk ZXI6bm9uZTtib3JkZXItdG9wOnNvbGlkICNFMUUxRTEgMS4wcHQ7cGFkZGluZzozLjBwdCAwaW4g MGluIDBpbiI+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6 MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZiI+RnJvbTo8 L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90 O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZiI+IFNQREsgW21haWx0bzpzcGRrLWJvdW5jZXNAbGlz dHMuMDEub3JnXQo8Yj5PbiBCZWhhbGYgT2YgPC9iPldlIFdlPGJyPgo8Yj5TZW50OjwvYj4gTW9u ZGF5LCBBdWd1c3QgMjgsIDIwMTcgNzozOCBBTTxicj4KPGI+VG86PC9iPiBTdG9yYWdlIFBlcmZv cm1hbmNlIERldmVsb3BtZW50IEtpdCAmbHQ7c3Bka0BsaXN0cy4wMS5vcmcmZ3Q7PGJyPgo8Yj5T dWJqZWN0OjwvYj4gUmU6IFtTUERLXSBTUERLIEJsb2JzdG9yZSBzdXBwb3J0IG9iamVjdCBzdG9y ZT88bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjwvZGl2Pgo8L2Rpdj4KPHAgY2xhc3M9Ik1zb05vcm1h bCI+PG86cD4mbmJzcDs8L286cD48L3A+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPkhpIFBh dWwsPG86cD48L286cD48L3A+CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpw PiZuYnNwOzwvbzpwPjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPlRoYW5r IHlvdSBmb3IgeW91ciBhbnN3ZXIuICZuYnNwO3dlIGtub3cgdGhlcmUgaXMgYWxzbyBvYmplY3Qg c3RvcmUgaW4gdGhlIGNlcGguIHNwZGsvbGliL2JkZXYvIGNhbiBhY2NlbGVyYXRlIGNlcGggYmxv Y2sgc3RvcmUsIHNvIHdlIHRoaW5rIGlmIHdlIGNhbiBhbHNvICZuYnNwO2JlIGFibGUgJm5ic3A7 dG8gdXNlIHNwZGsgdG8gYWNjZWxlcmF0ZSBjZXBoIG9iamVjdCBzdG9yZT8gSWYgd2UgY2FuLCBE byB5b3UgaGF2ZSBhbnkgZGlyZWN0aW9ucwogYW5kIGd1aWRlbGluZXMgb2Ygb2JqZWN0IHN0b3Jl PyBJZiB3ZSB3YW50IHRvIGNvbnRyaWJ1dGUgZm9yIG9iamVjdCBzdG9yZSwgd2hhdCBzaG91bGQg d2UgZG8gYWJvdXQgaXQ/IEFuZCB3aG8gY2FuIHdlIGpvaW4gaW4gdGhlIGRpc2N1c3Npb24gd2l0 aD88bzpwPjwvbzpwPjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+ Jm5ic3A7PC9vOnA+PC9wPgo8L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+VGh4PG86 cD48L286cD48L3A+CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj5IZWxsb3dheTxv OnA+PC9vOnA+PC9wPgo8L2Rpdj4KPGRpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86 cD4mbmJzcDs8L286cD48L3A+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7 PC9vOnA+PC9wPgo8ZGl2Pgo8YmxvY2txdW90ZSBzdHlsZT0ibWFyZ2luLXRvcDo1LjBwdDttYXJn aW4tYm90dG9tOjUuMHB0Ij4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0i WkgtQ04iPhskQjpfGyhCPC9zcGFuPiAyMDE3PHNwYW4gbGFuZz0iWkgtQ04iPhskQkcvGyhCPC9z cGFuPjg8c3BhbiBsYW5nPSJaSC1DTiI+GyRCN24bKEI8L3NwYW4+Mjg8c3BhbiBsYW5nPSJaSC1D TiI+GyRCRnwhJDI8OGEbKEI8L3NwYW4+OTo1MzxzcGFuIGxhbmc9IlpILUNOIj4bJEIhJBsoQjwv c3Bhbj5MdXNlLCBQYXVsIEUgJmx0OzxhIGhyZWY9Im1haWx0bzpwYXVsLmUubHVzZUBpbnRlbC5j b20iPnBhdWwuZS5sdXNlQGludGVsLmNvbTwvYT4mZ3Q7CjxzcGFuIGxhbmc9IlpILUNOIj4bJEI8 TEY7IScbKEI8L3NwYW4+PG86cD48L286cD48L3A+CjwvZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFs Ij48bzpwPiZuYnNwOzwvbzpwPjwvcD4KPGRpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+ PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZx dW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0QiPkhpIEhlbGxvd2F5LDwvc3Bhbj48bzpwPjwv bzpwPjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJm b250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJp Zjtjb2xvcjojMUY0OTdEIj4mbmJzcDs8L3NwYW4+PG86cD48L286cD48L3A+CjwvZGl2Pgo8ZGl2 Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250 LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3RCI+WW91 IGFyZSBjb3JyZWN0IGluIHRoYXQgbXVjaCBvZiB0aGUgZm9jdXMgb24gdGhlIHZhcmlvdXMgU1BE SyBtb2R1bGVzIGlzIGJsb2NrLiZuYnNwOyBJZiB5b3UbJEIhRxsoQmQgbGlrZSBtb3JlIGdlbmVy YWwgaW5mbywgdGhlIGNvbW11bml0eSBoYWQgc3VtbWl0IG1lZXRpbmcgYmFjayBpbiBBcHJpbCwK IHlvdSBjYW4gZmluZCB0aGF0IGluZm8gaGVyZTo8c3BhbiBjbGFzcz0iYXBwbGUtY29udmVydGVk LXNwYWNlIj4mbmJzcDs8L3NwYW4+PGEgaHJlZj0iaHR0cDovL3d3dy5zcGRrLmlvL25ld3MvMjAx Ny8wNi8yMS9zdW1taXRfdmlkZW9zLyI+PHNwYW4gc3R5bGU9ImNvbG9yOnB1cnBsZSI+aHR0cDov L3d3dy5zcGRrLmlvL25ld3MvMjAxNy8wNi8yMS9zdW1taXRfdmlkZW9zLzwvc3Bhbj48L2E+Jm5i c3A7PHNwYW4gY2xhc3M9ImFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+Jm5ic3A7PC9zcGFuPjwvc3Bh bj48bzpwPjwvbzpwPjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFu IHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDss c2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEIj4mbmJzcDs8L3NwYW4+PG86cD48L286cD48L3A+Cjwv ZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEx LjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFG NDk3RCI+UmVnYXJkaW5nIG9iamVjdCBzdG9yYWdlLCBJGyRCIUcbKEJtIG5vdCBhd2FyZSBvZiBh bnlvbmUgb3V0IHRoZXJlIGFjdGl2ZWx5IHdvcmtpbmcgb24gYW55dGhpbmcgYnV0IHNvbWUgb2Yg dXMgaGF2ZSBkaXNjdXNzZWQgaXQgZm9yIHN1cmUgYW5kIEkgc3VzcGVjdCB0aGVyZRskQiFHGyhC bGwgYmUgbW9yZQogdGFsayBvbiB0aGlzIHRvcGljIHRocm91Z2hvdXQgdGhlIHJlc3Qgb2YgdGhl IHllYXIuJm5ic3A7IElzIHlvdXIgcXVlc3Rpb24ganVzdCBhIGdlbmVyYWwgb25lIG9yIGRpZCB5 b3UgaGF2ZSBhIHNwZWNpZmljIEFQSSBhbmQvb3IgdXNlIGNhc2UgaW4gbWluZD8gQ3VyaW91cyBp ZiBhbnlvbmUgZWxzZSBvdXQgdGhlcmUgaGFzIHNwZWNpZmljIGludGVyZXN0cyBpbiB0aGlzIGFy ZSBhcyB3ZWxsPzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJN c29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90 O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEIj4mbmJzcDs8L3NwYW4+PG86 cD48L286cD48L3A+CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHls ZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMt c2VyaWY7Y29sb3I6IzFGNDk3RCI+Tm90ZSB0aGF0IHdlGyRCIUcbKEJyZSBhbHNvIG9uIElSQywg ZnJlZW5vZGUgb24gY2hhbm5lbCAjc3Bkazwvc3Bhbj48bzpwPjwvbzpwPjwvcD4KPC9kaXY+Cjxk aXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2Zv bnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEIj4m bmJzcDs8L3NwYW4+PG86cD48L286cD48L3A+CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9y bWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxp YnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3RCI+VGh4PC9zcGFuPjxvOnA+PC9vOnA+ PC9wPgo8L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQt c2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2Nv bG9yOiMxRjQ5N0QiPlBhdWw8L3NwYW4+PG86cD48L286cD48L3A+CjwvZGl2Pgo8ZGl2Pgo8cCBj bGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWls eTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3RCI+Jm5ic3A7PC9z cGFuPjxvOnA+PC9vOnA+PC9wPgo8L2Rpdj4KPGRpdj4KPGRpdiBzdHlsZT0iYm9yZGVyOm5vbmU7 Ym9yZGVyLXRvcDpzb2xpZCAjRTFFMUUxIDEuMHB0O3BhZGRpbmc6My4wcHQgMGluIDBpbiAwaW4i Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEx LjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWYiPkZyb206PC9z cGFuPjwvYj48c3BhbiBjbGFzcz0iYXBwbGUtY29udmVydGVkLXNwYWNlIj48c3BhbiBzdHlsZT0i Zm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2Vy aWYiPiZuYnNwOzwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9u dC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmIj5TUERLCiBbPGEgaHJlZj0i bWFpbHRvOnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmciPm1haWx0bzpzcGRrLWJvdW5jZXNAbGlz dHMuMDEub3JnPC9hPl08c3BhbiBjbGFzcz0iYXBwbGUtY29udmVydGVkLXNwYWNlIj4mbmJzcDs8 L3NwYW4+PGI+T24gQmVoYWxmIE9mPHNwYW4gY2xhc3M9ImFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+ Jm5ic3A7PC9zcGFuPjwvYj5XZSBXZTxicj4KPGI+U2VudDo8L2I+PHNwYW4gY2xhc3M9ImFwcGxl LWNvbnZlcnRlZC1zcGFjZSI+Jm5ic3A7PC9zcGFuPk1vbmRheSwgQXVndXN0IDI4LCAyMDE3IDY6 MTcgQU08YnI+CjxiPlRvOjwvYj48c3BhbiBjbGFzcz0iYXBwbGUtY29udmVydGVkLXNwYWNlIj4m bmJzcDs8L3NwYW4+PGEgaHJlZj0ibWFpbHRvOnNwZGtAbGlzdHMuMDEub3JnIj5zcGRrQGxpc3Rz LjAxLm9yZzwvYT48YnI+CjxiPlN1YmplY3Q6PC9iPjxzcGFuIGNsYXNzPSJhcHBsZS1jb252ZXJ0 ZWQtc3BhY2UiPiZuYnNwOzwvc3Bhbj5bU1BES10gU1BESyBCbG9ic3RvcmUgc3VwcG9ydCBvYmpl Y3Qgc3RvcmU/PC9zcGFuPjxvOnA+PC9vOnA+PC9wPgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8ZGl2 Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj4mbmJzcDs8bzpwPjwvbzpwPjwvcD4KPC9kaXY+CjxkaXY+ CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuNXB0 O2ZvbnQtZmFtaWx5OiZxdW90O1NlZ29lIFVJJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzI0Mjky RTtiYWNrZ3JvdW5kOndoaXRlIj5IaTwvc3Bhbj48c3BhbiBsYW5nPSJaSC1DTiIgc3R5bGU9ImZv bnQtc2l6ZToxMC41cHQ7Y29sb3I6IzI0MjkyRTtiYWNrZ3JvdW5kOndoaXRlIj4bJEIhJBsoQjwv c3Bhbj48bzpwPjwvbzpwPjwvcD4KPC9kaXY+CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9y bWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjVwdDtmb250LWZhbWlseTomcXVvdDtTZWdv ZSBVSSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMyNDI5MkU7YmFja2dyb3VuZDp3aGl0ZSI+SW4g dGhlIHNvdXJjZSBjb2RlIG9mIFNQRGsgKDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zcGRr L3NwZGsvdHJlZS9tYXN0ZXIvbGliIj48c3BhbiBzdHlsZT0iY29sb3I6cHVycGxlIj5odHRwczov L2dpdGh1Yi5jb20vc3Bkay9zcGRrL3RyZWUvbWFzdGVyL2xpYjwvc3Bhbj48L2E+KSwKIHdlIGNh biBmaW5kJm5ic3A7PC9zcGFuPjxzcGFuIGNsYXNzPSJqcy1wYXRoLXNlZ21lbnQiPjxiPjxzcGFu IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtTZWdvZSBVSSZxdW90OyxzYW5zLXNlcmlmO2NvbG9y OiM1ODYwNjk7YmFja2dyb3VuZDp3aGl0ZSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3Nw ZGsvc3BkayI+PHNwYW4gc3R5bGU9ImNvbG9yOiMwMzY2RDY7dGV4dC1kZWNvcmF0aW9uOm5vbmUi PnNwZGs8L3NwYW4+PC9hPjwvc3Bhbj48L2I+PC9zcGFuPjxzcGFuIGNsYXNzPSJzZXBhcmF0b3Ii PjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtTZWdvZSBVSSZxdW90OyxzYW5zLXNlcmlm O2NvbG9yOiM1ODYwNjk7YmFja2dyb3VuZDp3aGl0ZSI+Lzwvc3Bhbj48L3NwYW4+PHNwYW4gY2xh c3M9ImpzLXBhdGgtc2VnbWVudCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O1NlZ29l IFVJJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzU4NjA2OTtiYWNrZ3JvdW5kOndoaXRlIj48YSBo cmVmPSJodHRwczovL2dpdGh1Yi5jb20vc3Bkay9zcGRrL3RyZWUvbWFzdGVyL2xpYiI+PHNwYW4g c3R5bGU9ImNvbG9yOiMwMzY2RDY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPmxpYjwvc3Bhbj48L2E+ PC9zcGFuPjwvc3Bhbj48c3BhbiBjbGFzcz0ic2VwYXJhdG9yIj48c3BhbiBzdHlsZT0iZm9udC1m YW1pbHk6JnF1b3Q7U2Vnb2UgVUkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojNTg2MDY5O2JhY2tn cm91bmQ6d2hpdGUiPi88L3NwYW4+PC9zcGFuPjxzcGFuIGNsYXNzPSJqcy1wYXRoLXNlZ21lbnQi PjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtTZWdvZSBVSSZxdW90OyxzYW5zLXNlcmlm O2NvbG9yOiM1ODYwNjk7YmFja2dyb3VuZDp3aGl0ZSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIu Y29tL3NwZGsvc3Bkay90cmVlL21hc3Rlci9saWIvYmRldiI+PHNwYW4gc3R5bGU9ImNvbG9yOiMw MzY2RDY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPmJkZXY8L3NwYW4+PC9hPjwvc3Bhbj48L3NwYW4+ PHNwYW4gY2xhc3M9InNlcGFyYXRvciI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O1Nl Z29lIFVJJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzU4NjA2OTtiYWNrZ3JvdW5kOndoaXRlIj4v CiBtb2R1bGUgdGhhdCBtZWFucyZuYnNwOzwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQt c2l6ZToxMC41cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7U2Vnb2UgVUkmcXVvdDssc2Fucy1zZXJpZjtj b2xvcjojMjQyOTJFO2JhY2tncm91bmQ6d2hpdGUiPiZuYnNwO1NQRGsgaXMgYWJsZSB0byBiZSBp biBmYXZvciBvZiBibG9jayBzdG9yZSBhbmQgYWNjZWxlcmF0ZSBjZXBoIGJsb2NrIHN0b3JlLiBI b3dldmVyLCBJIGRvbiBub3Qgc2VlIGFueXRoaW5nIGFib3V0IG9iamVjdCBzdG9yZS4KIERvZXMg U1BESyBzdXBwb3J0IG9iamVjdCBzdG9yZT8gSXMgdGhlcmUgYW55IHBsYW4gdG8gZG8gd2l0aCBv YmplY3Qgc3RvcmU/PC9zcGFuPjxvOnA+PC9vOnA+PC9wPgo8L2Rpdj4KPGRpdj4KPGRpdj4KPHAg Y2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC41cHQ7Zm9udC1mYW1p bHk6JnF1b3Q7U2Vnb2UgVUkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMjQyOTJFO2JhY2tncm91 bmQ6d2hpdGUiPjxicj4KPGJyPgo8YnI+Cjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4KPC9kaXY+Cjwv ZGl2Pgo8ZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1z aXplOjEwLjVwdDtmb250LWZhbWlseTomcXVvdDtTZWdvZSBVSSZxdW90OyxzYW5zLXNlcmlmO2Nv bG9yOiMyNDI5MkU7YmFja2dyb3VuZDp3aGl0ZSI+Q291bGQgc29tZW9uZSBjYW4gZ2l2ZSBtZSB0 aGUgYW5zd2VyPzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4KPC9kaXY+CjwvZGl2Pgo8ZGl2Pgo8ZGl2 Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj4mbmJzcDs8bzpwPjwvbzpwPjwvcD4KPC9kaXY+CjwvZGl2 Pgo8ZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXpl OjEwLjVwdDtmb250LWZhbWlseTomcXVvdDtTZWdvZSBVSSZxdW90OyxzYW5zLXNlcmlmO2NvbG9y OiMyNDI5MkUiPlJlZ2FyZHMsPC9zcGFuPjxvOnA+PC9vOnA+PC9wPgo8L2Rpdj4KPC9kaXY+Cjxk aXY+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAu NXB0O2ZvbnQtZmFtaWx5OiZxdW90O1NlZ29lIFVJJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzI0 MjkyRSI+SGVsbG93YXk8L3NwYW4+PG86cD48L286cD48L3A+CjwvZGl2Pgo8L2Rpdj4KPGRpdj4K PGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+Jm5ic3A7PG86cD48L286cD48L3A+CjwvZGl2Pgo8 L2Rpdj4KPGRpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+Jm5ic3A7PG86cD48L286cD48 L3A+CjwvZGl2Pgo8L2Rpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQt c2l6ZTo5LjBwdDtmb250LWZhbWlseTomcXVvdDtIZWx2ZXRpY2EmcXVvdDssc2Fucy1zZXJpZiI+ X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX188YnI+ClNQREsg bWFpbGluZyBsaXN0PGJyPgo8L3NwYW4+PGEgaHJlZj0ibWFpbHRvOlNQREtAbGlzdHMuMDEub3Jn Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjkuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0hlbHZldGlj YSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOnB1cnBsZSI+U1BES0BsaXN0cy4wMS5vcmc8L3NwYW4+ PC9hPjxzcGFuIHN0eWxlPSJmb250LXNpemU6OS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7SGVsdmV0 aWNhJnF1b3Q7LHNhbnMtc2VyaWYiPjxicj4KPC9zcGFuPjxhIGhyZWY9Imh0dHBzOi8vbGlzdHMu MDEub3JnL21haWxtYW4vbGlzdGluZm8vc3BkayI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTo5LjBw dDtmb250LWZhbWlseTomcXVvdDtIZWx2ZXRpY2EmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpwdXJw bGUiPmh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlzdGluZm8vc3Bkazwvc3Bhbj48L2E+ PG86cD48L286cD48L3A+CjwvZGl2Pgo8L2Jsb2NrcXVvdGU+CjwvZGl2Pgo8cCBjbGFzcz0iTXNv Tm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+ CjwvYm9keT4KPC9odG1sPgo= --===============1438340341144628544==--