Unable to create a blur image

Murali Krishna <[email protected]> Thu, 10 Oct 2019 16:45:34 +0530
Newsgroups gmane.comp.lib.cairo
Message-ID <CAEP8Y6QMsw0JBcFM4is+V=vJEij-ErVfJdr_Uq-7SdCaEtiLWQ@mail.gmail.com>
--00000000000008122205948c8699
Content-Type: multipart/alternative; boundary="00000000000008121f05948c8697"

--00000000000008121f05948c8697
Content-Type: text/plain; charset="UTF-8"

Hi,
          I have been trying to create a blur image in C++ using cairo
library, the code I used doesn't actually work.

Please find the attachment for the code.

Please point me if i am missing something.

Please help me.

--00000000000008121f05948c8697
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"auto">Hi,<div dir=3D"auto">=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 I=
 have been trying to create a blur image in C++ using cairo library, the co=
de I used doesn&#39;t actually=C2=A0work.</div><div dir=3D"auto"><br></div>=
<div dir=3D"auto">Please find the attachment for the code.</div><div dir=3D=
"auto"><br></div><div dir=3D"auto">Please point me if i am missing somethin=
g.=C2=A0</div><div dir=3D"auto"><br></div><div dir=3D"auto">Please help me.=
</div></div>

--00000000000008121f05948c8697--

--00000000000008122205948c8699
Content-Type: text/x-c++src; charset="US-ASCII"; name="BlurExample.cpp"
Content-Disposition: attachment; filename="BlurExample.cpp"
Content-Transfer-Encoding: base64
Content-ID: <16db56101d7d2aa70181>
X-Attachment-Id: 16db56101d7d2aa70181

I2lmIDENCiNpbmNsdWRlIDxvc2cvU2hhcGVEcmF3YWJsZT4NCiNpbmNsdWRlIDxvc2cvR2VvZGU+
DQojaW5jbHVkZSA8b3NnVmlld2VyL1ZpZXdlcj4gDQojaW5jbHVkZSAiSGVhZGVycy5oIg0KI2lu
Y2x1ZGUgPG9zZy9UZXh0dXJlMkQ+DQojaW5jbHVkZSA8b3NnL1RleHR1cmUzRD4NCiNpbmNsdWRl
IDxvc2cvVGV4R2VuPg0KI2luY2x1ZGUgPG9zZy9NYXRyaXhUcmFuc2Zvcm0+DQojaW5jbHVkZSA8
b3NnREIvUmVhZEZpbGU+DQojaW5jbHVkZSA8b3NnREIvV3JpdGVGaWxlPg0KI2luY2x1ZGUgPG9z
Z0dBL1RyYWNrYmFsbE1hbmlwdWxhdG9yPg0KI2luY2x1ZGU8Y2hyb25vPg0KI2luY2x1ZGUgPGNh
aXJvL2NhaXJvLmg+DQojaW5jbHVkZSA8b3NnL01hdGg+DQojaW5jbHVkZTxvc2cvQ2FtZXJhPg0K
DQojaW5jbHVkZSA8b3NnL1RleHR1cmUyRD4NCiNpbmNsdWRlIDxvc2cvR3JvdXA+DQojaW5jbHVk
ZSA8b3NnREIvUmVhZEZpbGU+DQojaW5jbHVkZSA8b3NnVmlld2VyL1ZpZXdlcj4NCiNpbmNsdWRl
PGNvbmlvLmg+DQp1c2luZyBuYW1lc3BhY2Ugc3RkOw0KdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hy
b25vOw0KDQpvc2c6OnJlZl9wdHI8b3NnOjpNYXRyaXhUcmFuc2Zvcm0+IG1hdHJpeFRyYW5zZm9y
bUZsb29yID0gbmV3IG9zZzo6TWF0cml4VHJhbnNmb3JtOw0KDQpvc2c6OnJlZl9wdHI8b3NnOjpH
ZW9kZT4gZHJhd0Zsb29yKG9zZzo6cmVmX3B0cjxvc2c6OkltYWdlPiYgaW1hZ2Upew0KICAgb3Nn
OjpyZWZfcHRyPG9zZzo6R2VvZGU+IHJvb3QgPSBuZXcgb3NnOjpHZW9kZTsNCiAgIG9zZzo6cmVm
X3B0cjxvc2c6OlZlYzJBcnJheT4gdmVydGljZXMgPSBuZXcgb3NnOjpWZWMyQXJyYXkoNCk7DQog
ICAoKnZlcnRpY2VzKVswXS5zZXQoMCwgMCk7ICAgKCp2ZXJ0aWNlcylbMV0uc2V0KDAsIDEwKTsg
ICAoKnZlcnRpY2VzKVsyXS5zZXQoMTAsIDEwKTsgICAoKnZlcnRpY2VzKVszXS5zZXQoMTAsIDAp
Ow0KICAgb3NnOjpyZWZfcHRyPG9zZzo6RHJhd0VsZW1lbnRzVUludD4gaW5kaWNlcyA9IG5ldyBv
c2c6OkRyYXdFbGVtZW50c1VJbnQoR0xfUVVBRFMsIDQpOw0KICAgKCppbmRpY2VzKVswXSA9IDA7
ICgqaW5kaWNlcylbMV0gPSAxOyAoKmluZGljZXMpWzJdID0gMjsgKCppbmRpY2VzKVszXSA9IDM7
DQogICBvc2c6OnJlZl9wdHI8b3NnOjpHZW9tZXRyeT4gZ2VvbSA9IG5ldyBvc2c6Okdlb21ldHJ5
KCk7DQogICBnZW9tLT5zZXRWZXJ0ZXhBcnJheSh2ZXJ0aWNlcy5nZXQoKSk7DQogICBvc2c6OlZl
YzJBcnJheSogdGNvb3JkcyA9IG5ldyBvc2c6OlZlYzJBcnJheSg0KTsNCiAgICgqdGNvb3Jkcylb
MF0uc2V0KDAuMGYsIDEpOyAgICgqdGNvb3JkcylbMV0uc2V0KDAuMGYsIDAuMGYpOyAgICgqdGNv
b3JkcylbMl0uc2V0KDEsIDAuMGYpOyAgICgqdGNvb3JkcylbM10uc2V0KDEsIDEpOw0KICAgZ2Vv
bS0+c2V0VGV4Q29vcmRBcnJheSgwLCB0Y29vcmRzKTsNCiAgIGdlb20tPmFkZFByaW1pdGl2ZVNl
dChpbmRpY2VzLmdldCgpKTsNCg0KICAgb3NnOjpUZXh0dXJlMkQqIHRleHR1cmUgPSBuZXcgb3Nn
OjpUZXh0dXJlMkQ7DQogICB0ZXh0dXJlLT5zZXRJbWFnZShpbWFnZSk7DQogICByb290LT5nZXRP
ckNyZWF0ZVN0YXRlU2V0KCktPnNldFRleHR1cmVBdHRyaWJ1dGVBbmRNb2RlcygwLCB0ZXh0dXJl
KTsNCg0KICAgcm9vdC0+YWRkRHJhd2FibGUoZ2VvbS5nZXQoKSk7DQogICByZXR1cm4gcm9vdDsN
Cn0NCg0KLyogUGVyZm9ybXMgYSBzaW1wbGUgMkQgR2F1c3NpYW4gYmx1ciBvZiByYWRpdXMgQHJh
ZGl1cyBvbiBzdXJmYWNlIEBzdXJmYWNlLiAqLw0Kdm9pZA0KYmx1cl9pbWFnZV9zdXJmYWNlKGNh
aXJvX3N1cmZhY2VfdCAqc3VyZmFjZSwgaW50IHJhZGl1cykNCnsNCiAgIGNhaXJvX3N1cmZhY2Vf
dCAqdG1wOw0KICAgaW50IHdpZHRoLCBoZWlnaHQ7DQogICBpbnQgc3JjX3N0cmlkZSwgZHN0X3N0
cmlkZTsNCiAgIGludCB4LCB5LCB6LCB3Ow0KICAgdWludDhfdCAqc3JjLCAqZHN0Ow0KICAgdWlu
dDMyX3QgKnMsICpkLCBhLCBwOw0KICAgaW50IGksIGosIGs7DQogICBpbnQgc2l6ZSA9IHJhZGl1
cyAqIDIgKyAxOw0KICAgc3RkOjp2ZWN0b3I8dWludDhfdD4ga2VybmVsOw0KICAga2VybmVsLnJl
c2l6ZShzaXplKTsNCiAgIGNvbnN0IGludCBoYWxmID0gc2l6ZSAvIDI7DQoNCiAgIGlmIChjYWly
b19zdXJmYWNlX3N0YXR1cyhzdXJmYWNlKSkNCiAgICAgIHJldHVybjsNCg0KICAgd2lkdGggPSBj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlKTsNCiAgIGhlaWdodCA9IGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKTsNCg0KICAgc3dpdGNoIChjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF9mb3JtYXQoc3VyZmFjZSkpIHsNCiAgIGNhc2UgQ0FJUk9fRk9STUFU
X0ExOg0KICAgZGVmYXVsdDoNCiAgICAgIC8qIERvbid0IGV2ZW4gdGhpbmsgYWJvdXQgaXQhICov
DQogICAgICByZXR1cm47DQoNCiAgIGNhc2UgQ0FJUk9fRk9STUFUX0E4Og0KICAgICAgLyogSGFu
ZGxlIGE4IHN1cmZhY2VzIGJ5IGVmZmVjdGl2ZWx5IHVucm9sbGluZyB0aGUgbG9vcHMgYnkgYQ0K
ICAgICAgKiBmYWN0b3Igb2YgNCAtIHRoaXMgaXMgc2FmZSBzaW5jZSB3ZSBrbm93IHRoYXQgc3Ry
aWRlIGhhcyB0byBiZSBhDQogICAgICAqIG11bHRpcGxlIG9mIHVpbnQzMl90LiAqLw0KICAgICAg
d2lkdGggLz0gNDsNCiAgICAgIGJyZWFrOw0KDQogICBjYXNlIENBSVJPX0ZPUk1BVF9SR0IyNDoN
CiAgIGNhc2UgQ0FJUk9fRk9STUFUX0FSR0IzMjoNCiAgICAgIGJyZWFrOw0KICAgfQ0KDQogICB0
bXAgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShDQUlST19GT1JNQVRfQVJHQjMyLCB3aWR0
aCwgaGVpZ2h0KTsNCiAgIGlmIChjYWlyb19zdXJmYWNlX3N0YXR1cyh0bXApKQ0KICAgICAgcmV0
dXJuOw0KDQogICBzcmMgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpOw0K
ICAgc3JjX3N0cmlkZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJmYWNlKTsN
Cg0KICAgZHN0ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YSh0bXApOw0KICAgZHN0X3N0
cmlkZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZSh0bXApOw0KDQogICBhID0gMDsN
CiAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsNCiAgICAgIGRvdWJsZSBmID0gaSAtIGhh
bGY7DQogICAgICBhICs9IGtlcm5lbFtpXSA9IGV4cCgtZiAqIGYgLyAzMC4wKSAqIDgwOw0KICAg
fQ0KDQogICAvKiBIb3Jpem9udGFsbHkgYmx1ciBmcm9tIHN1cmZhY2UgLT4gdG1wICovDQogICBm
b3IgKGkgPSAwOyBpIDwgaGVpZ2h0OyBpKyspIHsNCiAgICAgIHMgPSAodWludDMyX3QgKikoc3Jj
ICsgaSAqIHNyY19zdHJpZGUpOw0KICAgICAgZCA9ICh1aW50MzJfdCAqKShkc3QgKyBpICogZHN0
X3N0cmlkZSk7DQogICAgICBmb3IgKGogPSAwOyBqIDwgd2lkdGg7IGorKykgew0KICAgICAgICAg
aWYgKHJhZGl1cyA8IGogJiYgaiA8IHdpZHRoIC0gcmFkaXVzKSB7DQogICAgICAgICAgICBkW2pd
ID0gc1tqXTsNCiAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgfQ0KDQogICAgICAgICB4
ID0geSA9IHogPSB3ID0gMDsNCiAgICAgICAgIGZvciAoayA9IDA7IGsgPCBzaXplOyBrKyspIHsN
CiAgICAgICAgICAgIGlmIChqIC0gaGFsZiArIGsgPCAwIHx8IGogLSBoYWxmICsgayA+PSB3aWR0
aCkNCiAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KDQogICAgICAgICAgICBwID0gc1tqIC0gaGFs
ZiArIGtdOw0KDQogICAgICAgICAgICB4ICs9ICgocCA+PiAyNCkgJiAweGZmKSAqIGtlcm5lbFtr
XTsNCiAgICAgICAgICAgIHkgKz0gKChwID4+IDE2KSAmIDB4ZmYpICoga2VybmVsW2tdOw0KICAg
ICAgICAgICAgeiArPSAoKHAgPj4gOCkgJiAweGZmKSAqIGtlcm5lbFtrXTsNCiAgICAgICAgICAg
IHcgKz0gKChwID4+IDApICYgMHhmZikgKiBrZXJuZWxba107DQogICAgICAgICB9DQogICAgICAg
ICBkW2pdID0gKHggLyBhIDw8IDI0KSB8ICh5IC8gYSA8PCAxNikgfCAoeiAvIGEgPDwgOCkgfCB3
IC8gYTsNCiAgICAgIH0NCiAgIH0NCg0KICAgLyogVGhlbiB2ZXJ0aWNhbGx5IGJsdXIgZnJvbSB0
bXAgLT4gc3VyZmFjZSAqLw0KICAgZm9yIChpID0gMDsgaSA8IGhlaWdodDsgaSsrKSB7DQogICAg
ICBzID0gKHVpbnQzMl90ICopKGRzdCArIGkgKiBkc3Rfc3RyaWRlKTsNCiAgICAgIGQgPSAodWlu
dDMyX3QgKikoc3JjICsgaSAqIHNyY19zdHJpZGUpOw0KICAgICAgZm9yIChqID0gMDsgaiA8IHdp
ZHRoOyBqKyspIHsNCiAgICAgICAgIGlmIChyYWRpdXMgPD0gaSAmJiBpIDwgaGVpZ2h0IC0gcmFk
aXVzKSB7DQogICAgICAgICAgICBkW2pdID0gc1tqXTsNCiAgICAgICAgICAgIGNvbnRpbnVlOw0K
ICAgICAgICAgfQ0KDQogICAgICAgICB4ID0geSA9IHogPSB3ID0gMDsNCiAgICAgICAgIGZvciAo
ayA9IDA7IGsgPCBzaXplOyBrKyspIHsNCiAgICAgICAgICAgIGlmIChpIC0gaGFsZiArIGsgPCAw
IHx8IGkgLSBoYWxmICsgayA+PSBoZWlnaHQpDQogICAgICAgICAgICAgICBjb250aW51ZTsNCg0K
ICAgICAgICAgICAgcyA9ICh1aW50MzJfdCAqKShkc3QgKyAoaSAtIGhhbGYgKyBrKSAqIGRzdF9z
dHJpZGUpOw0KICAgICAgICAgICAgcCA9IHNbal07DQoNCiAgICAgICAgICAgIHggKz0gKChwID4+
IDI0KSAmIDB4ZmYpICoga2VybmVsW2tdOw0KICAgICAgICAgICAgeSArPSAoKHAgPj4gMTYpICYg
MHhmZikgKiBrZXJuZWxba107DQogICAgICAgICAgICB6ICs9ICgocCA+PiA4KSAmIDB4ZmYpICog
a2VybmVsW2tdOw0KICAgICAgICAgICAgdyArPSAoKHAgPj4gMCkgJiAweGZmKSAqIGtlcm5lbFtr
XTsNCiAgICAgICAgIH0NCiAgICAgICAgIGRbal0gPSAoeCAvIGEgPDwgMjQpIHwgKHkgLyBhIDw8
IDE2KSB8ICh6IC8gYSA8PCA4KSB8IHcgLyBhOw0KICAgICAgfQ0KICAgfQ0KDQogICBjYWlyb19z
dXJmYWNlX2Rlc3Ryb3kodG1wKTsNCiAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eShzdXJmYWNl
KTsNCn0NCg0Kdm9pZCBjcmVhdGVCbHVyKG9zZzo6cmVmX3B0cjxvc2c6OkltYWdlPiBpbWFnZSwg
dW5zaWduZWQgaW50IF93aWR0aCwgdW5zaWduZWQgaW50IF9oZWlnaHQsIGNvbnN0IHN0ZDo6dmVj
dG9yPCBvc2c6OlZlYzJkID4mIHBvbHlnb25QaXhlbENvb3JkcykNCnsNCiAgIHVuc2lnbmVkIGNo
YXIqIGRhdGFCdWZmZXIgPSBpbWFnZS0+ZGF0YSgpOw0KDQogICBjYWlyb19zdXJmYWNlX3QqIGNh
aXJvUmF3U3VyZmFjZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKGRhdGFC
dWZmZXIsIENBSVJPX0ZPUk1BVF9BUkdCMzIsIF93aWR0aCwgX2hlaWdodCwgY2Fpcm9fZm9ybWF0
X3N0cmlkZV9mb3Jfd2lkdGgoQ0FJUk9fRk9STUFUX0FSR0IzMiwgX3dpZHRoKSk7DQogICBpZiAo
Y2Fpcm9SYXdTdXJmYWNlKQ0KICAgew0KDQogICAgICBjYWlyb190KiBjciA9IGNhaXJvX2NyZWF0
ZShjYWlyb1Jhd1N1cmZhY2UpOw0KICAgICAgaWYgKGNyKQ0KICAgICAgew0KICAgICAgICAgY2Fp
cm9fbW92ZV90byhjciwgcG9seWdvblBpeGVsQ29vcmRzWzBdLngoKSwgcG9seWdvblBpeGVsQ29v
cmRzWzBdLnkoKSk7DQogICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMTsgaSA8IHBvbHln
b25QaXhlbENvb3Jkcy5zaXplKCk7ICsraSkNCiAgICAgICAgIHsNCiAgICAgICAgICAgIGNhaXJv
X2xpbmVfdG8oY3IsIHBvbHlnb25QaXhlbENvb3Jkc1tpXS54KCksIHBvbHlnb25QaXhlbENvb3Jk
c1tpXS55KCkpOw0KICAgICAgICAgfQ0KICAgICAgICAgY2Fpcm9fY2xvc2VfcGF0aChjcik7DQog
ICAgICAgICBjYWlyb19zZXRfb3BlcmF0b3IoY3IsIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7DQog
ICAgICAgICBkb3VibGUgciA9IDI1NTsNCiAgICAgICAgIGRvdWJsZSBnID0gMDsNCiAgICAgICAg
IGRvdWJsZSBiID0gMDsNCiAgICAgICAgIGRvdWJsZSBhID0gMC41Ow0KICAgICAgICAgY2Fpcm9f
c2V0X3NvdXJjZV9yZ2JhKGNyLCBiIC8gYSwgZyAvIGEsIHIgLyBhLCBhKTsNCiAgICAgICAgIGNh
aXJvX3BhaW50KGNyKTsNCiAgICAgICAgIGNhaXJvX3NldF9zb3VyY2VfcmdiYShjciwgYiAvIGEs
IGcgLyBhLCByIC8gYSwgYSk7DQogICAgICAgICBjYWlyb19maWxsX3ByZXNlcnZlKGNyKTsNCiAg
ICAgICAgIGNhaXJvX3NldF9zb3VyY2VfcmdiYShjciwgYiAvIGEsIGcgLyBhLCByIC8gYSwgYSk7
DQoNCiAgICAgICAgIGNvbnN0IGRvdWJsZSBibHVyUGl4ZWxzID0gKDIwIC8gMTAwLjApICogc3Rh
dGljX2Nhc3Q8ZG91YmxlPihfd2lkdGgpOw0KICAgICAgICAgY2Fpcm9fc2V0X2xpbmVfd2lkdGgo
Y3IsIGJsdXJQaXhlbHMgLyAyLjApOw0KICAgICAgICAgY2Fpcm9fc3Ryb2tlKGNyKTsNCg0KICAg
ICAgICAgLy8gYXBwbHkgYmx1cg0KICAgICAgICAgYmx1cl9pbWFnZV9zdXJmYWNlKGNhaXJvUmF3
U3VyZmFjZSwgYmx1clBpeGVscyk7DQogICAgICAgICBjYWlyb19kZXN0cm95KGNyKTsNCiAgICAg
IH0NCg0KICAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KGNhaXJvUmF3U3VyZmFjZSk7DQogICB9
DQp9DQppbnQgbWFpbigpDQp7DQogICBvc2c6OnJlZl9wdHI8b3NnOjpHcm91cD4gZ3JvdXAgPSBu
ZXcgb3NnOjpHcm91cDsNCg0KICAgb3NnOjpyZWZfcHRyPG9zZzo6SW1hZ2U+IGFyZWFJbWFnZSA9
IG9zZ0RCOjpyZWFkUmVmSW1hZ2VGaWxlKCJlbGVwaGFudC5ibXAiKTsNCiAgIGlmICghYXJlYUlt
YWdlLnZhbGlkKCkpIHsNCiAgICAgIF9nZXRjaCgpOw0KICAgICAgcmV0dXJuIE5VTEw7DQogICB9
DQogICBzdGQ6OnZlY3Rvcjwgb3NnOjpWZWMyZCA+IHBvbHlnb25QaXhlbENvb3JkczsNCiAgIHBv
bHlnb25QaXhlbENvb3Jkcy5wdXNoX2JhY2sob3NnOjpWZWMyZCgwLCAwKSk7DQogICBwb2x5Z29u
UGl4ZWxDb29yZHMucHVzaF9iYWNrKG9zZzo6VmVjMmQoMCwgMTApKTsNCiAgIHBvbHlnb25QaXhl
bENvb3Jkcy5wdXNoX2JhY2sob3NnOjpWZWMyZCgxMCwgMTApKTsNCiAgIHBvbHlnb25QaXhlbENv
b3Jkcy5wdXNoX2JhY2sob3NnOjpWZWMyZCgxMCwgMCkpOw0KDQogICAvL2NyZWF0ZSBCbHVyDQog
ICBjcmVhdGVCbHVyKGFyZWFJbWFnZSwgYXJlYUltYWdlLT5yKCksIGFyZWFJbWFnZS0+Z2V0Um93
TGVuZ3RoKCksIHBvbHlnb25QaXhlbENvb3Jkcyk7DQoNCiAgIG1hdHJpeFRyYW5zZm9ybUZsb29y
LT5hZGRDaGlsZChkcmF3Rmxvb3IoYXJlYUltYWdlKSk7DQogICBncm91cC0+YWRkQ2hpbGQobWF0
cml4VHJhbnNmb3JtRmxvb3IuZ2V0KCkpOw0KDQogICBncm91cC0+Z2V0T3JDcmVhdGVTdGF0ZVNl
dCgpLT5zZXRNb2RlKEdMX0xJR0hUSU5HLCBvc2c6OlN0YXRlQXR0cmlidXRlOjpPRkYgfCBvc2c6
OlN0YXRlQXR0cmlidXRlOjpQUk9URUNURUQpOw0KDQogICBvc2dWaWV3ZXI6OlZpZXdlciB2aWV3
ZXI7DQogICB2aWV3ZXIuc2V0VXBWaWV3SW5XaW5kb3coNDAwLCA0MDAsIDY0MCwgNDgwKTsNCiAg
IHZpZXdlci5zZXRTY2VuZURhdGEoZ3JvdXAuZ2V0KCkpOw0KICAgdmlld2VyLmdldENhbWVyYSgp
LT5zZXRWaWV3TWF0cml4QXNMb29rQXQob3NnOjpWZWMzZigyMy4wLCAwLjUsIDApLCBvc2c6OlZl
YzNmKDIzLjAsIDAuNCwgLTEpLCBvc2c6OllfQVhJUyk7DQoNCiAgIHZpZXdlci5ydW4oKTsNCiAg
IHZpZXdlci5yZWFsaXplKCk7DQogICB3aGlsZSAoIXZpZXdlci5kb25lKCkpDQogICB7DQogICAg
ICB2aWV3ZXIuZnJhbWUoKTsNCiAgIH0NCn0NCiNlbmRpZg==
--00000000000008122205948c8699
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

LS0gCmNhaXJvIG1haWxpbmcgbGlzdApjYWlyb0BjYWlyb2dyYXBoaWNzLm9yZwpodHRwczovL2xp
c3RzLmNhaXJvZ3JhcGhpY3Mub3JnL21haWxtYW4vbGlzdGluZm8vY2Fpcm8=

--00000000000008122205948c8699--