From kfm-devel Wed Aug 29 17:24:00 2012 From: Sergey Borovkov Date: Wed, 29 Aug 2012 17:24:00 +0000 To: kfm-devel Subject: Re: KLook - quick preview extension for Dolphin Message-Id: X-MARC-Message: https://marc.info/?l=kfm-devel&m=134626105805307 MIME-Version: 1 Content-Type: multipart/mixed; boundary="--20cf307d05b013b10804c86ad35f" --20cf307d05b013b10804c86ad35f Content-Type: multipart/alternative; boundary=20cf307d05b013b10504c86ad35d --20cf307d05b013b10504c86ad35d Content-Type: text/plain; charset=UTF-8 Here. This time fixed. Should blame my own stupidity (forgot to add 2 files before doing git diff). For convenience I united 2 patches in 1. On Wed, Aug 29, 2012 at 8:18 PM, Frank Reininghaus wrote: > 2012/8/28 Sergey Borovkov: > > Here are fixed versions. (btw - to make klook icon visible you need to > > enable it in dolphin general settings). > > Thanks. It seems that there are new files missing in the patch: > > CMake Error at > /home/kde-devel/kde/share/apps/cmake/modules/KDE4Macros.cmake:1041 > (add_library): > Cannot find source file: > > kitemviews/kitemlistklooktoggle.cpp > > Moreover, linking KLook fails here: > > Linking CXX executable klook > /usr/lib64/gcc/x86_64-suse-linux/4.6/../../../../x86_64-suse-linux/bin/ld: > CMakeFiles/klook.dir/src/declarativeviewer.o: undefined reference to > symbol 'XInternAtom' > /usr/lib64/gcc/x86_64-suse-linux/4.6/../../../../x86_64-suse-linux/bin/ld: > note: 'XInternAtom' is defined in DSO /usr/lib64/libX11.so.6 so try > adding it to the linker command line > /usr/lib64/libX11.so.6: could not read symbols: Invalid operation > collect2: ld returned 1 exit status > make[2]: *** [klook] Error 1 > make[1]: *** [CMakeFiles/klook.dir/all] Error 2 > make: *** [all] Error 2 > --20cf307d05b013b10504c86ad35d Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Here. This time fixed. Should blame my own stupidity (forgot to add 2 files= before doing git diff). For convenience I united 2 patches in 1.

On Wed, Aug 29, 2012 at 8:18 PM, Frank Reininghaus= <frank78ac@googlemail.com> wrote:
2012/8/28 Sergey Borovkov:
> Here are fixed versions. (btw - to make klook icon v= isible you need to
> enable it in dolphin general settings).

Thanks. It seems that there are new files missing in the patch:

CMake Error at /home/kde-devel/kde/share/apps/cmake/modules/KDE4Macros.cmak= e:1041
(add_library):
=C2=A0 Cannot find source file:

=C2=A0 =C2=A0 kitemviews/kitemlistklooktoggle.cpp

Moreover, linking KLook fails here:

Linking CXX executable klook
/usr/lib64/gcc/x86_64-suse-linux/4.6/../../../../x86_64-suse-linux/bin/ld:<= br> CMakeFiles/klook.dir/src/declarativeviewer.o: undefined reference to
symbol 'XInternAtom'
/usr/lib64/gcc/x86_64-suse-linux/4.6/../../../../x86_64-suse-linux/bin/ld:<= br> note: 'XInternAtom' is defined in DSO /usr/lib64/libX11.so.6 so try=
adding it to the linker command line
/usr/lib64/libX11.so.6: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
make[2]: *** [klook] Error 1
make[1]: *** [CMakeFiles/klook.dir/all] Error 2
make: *** [all] Error 2

--20cf307d05b013b10504c86ad35d-- --20cf307d05b013b10804c86ad35f Content-Type: application/octet-stream; name="1.patch" Content-Disposition: attachment; filename="1.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h6gp1h4e0 ZGlmZiAtLWdpdCBhL2RvbHBoaW4vc3JjL0NNYWtlTGlzdHMudHh0IGIvZG9scGhpbi9zcmMvQ01h a2VMaXN0cy50eHQKaW5kZXggMWExMjFmOC4uNjFiYTBiNiAxMDA2NDQKLS0tIGEvZG9scGhpbi9z cmMvQ01ha2VMaXN0cy50eHQKKysrIGIvZG9scGhpbi9zcmMvQ01ha2VMaXN0cy50eHQKQEAgLTI3 LDYgKzI3LDcgQEAgc2V0KGRvbHBoaW5wcml2YXRlX0xJQl9TUkNTCiAgICAga2l0ZW12aWV3cy9r aXRlbWxpc3Rncm91cGhlYWRlci5jcHAKICAgICBraXRlbXZpZXdzL2tpdGVtbGlzdGhlYWRlci5j cHAKICAgICBraXRlbXZpZXdzL2tpdGVtbGlzdHNlbGVjdGlvbm1hbmFnZXIuY3BwCisgICAga2l0 ZW12aWV3cy9raXRlbWxpc3RrbG9va3RvZ2dsZS5jcHAKICAgICBraXRlbXZpZXdzL2tpdGVtbGlz dHN0eWxlb3B0aW9uLmNwcAogICAgIGtpdGVtdmlld3Mva2l0ZW1saXN0dmlldy5jcHAKICAgICBr aXRlbXZpZXdzL2tpdGVtbGlzdHdpZGdldC5jcHAKZGlmZiAtLWdpdCBhL2RvbHBoaW4vc3JjL2Rv bHBoaW5tYWlud2luZG93LmNwcCBiL2RvbHBoaW4vc3JjL2RvbHBoaW5tYWlud2luZG93LmNwcApp bmRleCBkODNjOWRlLi45OTIxZDlmIDEwMDY0NAotLS0gYS9kb2xwaGluL3NyYy9kb2xwaGlubWFp bndpbmRvdy5jcHAKKysrIGIvZG9scGhpbi9zcmMvZG9scGhpbm1haW53aW5kb3cuY3BwCkBAIC04 NSw2ICs4NSw4IEBACiAjaW5jbHVkZSA8UUNsaXBib2FyZD4KICNpbmNsdWRlIDxRVG9vbEJ1dHRv bj4KICNpbmNsdWRlIDxRU3BsaXR0ZXI+CisjaW5jbHVkZSA8UVByb2Nlc3M+CisjaW5jbHVkZSA8 UUFwcGxpY2F0aW9uPgogCiBuYW1lc3BhY2UgewogICAgIC8vIFVzZWQgZm9yIEdlbmVyYWxTZXR0 aW5nczo6dmVyc2lvbigpIHRvIGRldGVybWluZSB3aGV0aGVyCkBAIC0xMTgsNyArMTIwLDggQEAg RG9scGhpbk1haW5XaW5kb3c6OkRvbHBoaW5NYWluV2luZG93KCkgOgogICAgIG1fc2V0dGluZ3NE aWFsb2coKSwKICAgICBtX2NvbnRyb2xCdXR0b24oMCksCiAgICAgbV91cGRhdGVUb29sQmFyVGlt ZXIoMCksCi0gICAgbV9sYXN0SGFuZGxlVXJsU3RhdEpvYigwKQorICAgIG1fbGFzdEhhbmRsZVVy bFN0YXRKb2IoMCksCisgICAgbV9pc0ZvY3VzT25UZXJtaW5hbChmYWxzZSkKIHsKICAgICAvLyBX b3JrYXJvdW5kIGZvciBhIFgxMS1pc3N1ZSBpbiBjb21iaW5hdGlvbiB3aXRoIEtNb2RpZmllcklu Zm8KICAgICAvLyAoc2VlIERvbHBoaW5Db250ZXh0TWVudTo6aW5pdGlhbGl6ZU1vZGlmaWVyS2V5 SW5mbygpIGZvcgpAQCAtMjM2LDYgKzIzOSw4IEBAIERvbHBoaW5NYWluV2luZG93OjpEb2xwaGlu TWFpbldpbmRvdygpIDoKICAgICBpZiAoIXNob3dNZW51KSB7CiAgICAgICAgIGNyZWF0ZUNvbnRy b2xCdXR0b24oKTsKICAgICB9CisKKyAgICBjb25uZWN0IChxQXBwLCBTSUdOQUwoZm9jdXNDaGFu Z2VkKFFXaWRnZXQqLFFXaWRnZXQqKSksIHRoaXMsIFNMT1QoZm9jdXNDaGFuZ2VkKFFXaWRnZXQq LFFXaWRnZXQqKSkpOwogfQogCiBEb2xwaGluTWFpbldpbmRvdzo6fkRvbHBoaW5NYWluV2luZG93 KCkKQEAgLTQwMCw2ICs0MDUsMTUgQEAgdm9pZCBEb2xwaGluTWFpbldpbmRvdzo6c2xvdFNlbGVj dGlvbkNoYW5nZWQoY29uc3QgS0ZpbGVJdGVtTGlzdCYgc2VsZWN0aW9uKQogICAgICAgICBjb21w YXJlRmlsZXNBY3Rpb24tPnNldEVuYWJsZWQoZmFsc2UpOwogICAgIH0KIAorCisgICAgLy9LTG9v aworICAgIFFBY3Rpb24qIG9wZW5JbktMb29rID0gYWN0aW9uQ29sbGVjdGlvbigpLT5hY3Rpb24o Im9wZW5faW5fS0xvb2siKTsKKyAgICBpZiAoKHNlbGVjdGVkVXJsc0NvdW50ID4gMCkgJiYgKCFt X2lzRm9jdXNPblRlcm1pbmFsKSl7CisgICAgICAgIG9wZW5JbktMb29rLT5zZXRFbmFibGVkKHRy dWUpOworICAgIH0gZWxzZSB7CisgICAgICAgIG9wZW5JbktMb29rLT5zZXRFbmFibGVkKGZhbHNl KTsKKyAgICB9CisKICAgICBlbWl0IHNlbGVjdGlvbkNoYW5nZWQoc2VsZWN0aW9uKTsKIH0KIApA QCAtMTY1MSw2ICsxNjY1LDE0IEBAIHZvaWQgRG9scGhpbk1haW5XaW5kb3c6OnNldHVwQWN0aW9u cygpCiAgICAgb3BlbkluTmV3V2luZG93LT5zZXRUZXh0KGkxOG5jKCJAYWN0aW9uOmlubWVudSIs ICJPcGVuIGluIE5ldyBXaW5kb3ciKSk7CiAgICAgb3BlbkluTmV3V2luZG93LT5zZXRJY29uKEtJ Y29uKCJ3aW5kb3ctbmV3IikpOwogICAgIGNvbm5lY3Qob3BlbkluTmV3V2luZG93LCBTSUdOQUwo dHJpZ2dlcmVkKCkpLCB0aGlzLCBTTE9UKG9wZW5Jbk5ld1dpbmRvdygpKSk7CisKKyAgICAvLyBL TG9vaworICAgIEtBY3Rpb24qIG9wZW5JbktMb29rID0gYWN0aW9uQ29sbGVjdGlvbigpLT5hZGRB Y3Rpb24oIm9wZW5faW5fS0xvb2siKTsKKyAgICBvcGVuSW5LTG9vay0+c2V0VGV4dChpMThuYygi QGFjdGlvbjppbm1lbnUiLCAiUHJldmlldyIpKTsKKyAgICBvcGVuSW5LTG9vay0+c2V0U2hvcnRj dXQoUXQ6OktleV9TcGFjZSk7CisgICAgb3BlbkluS0xvb2stPnNldEljb24oS0ljb24oImtsb29r IikpOworICAgIG9wZW5JbktMb29rLT5zZXRFbmFibGVkKGZhbHNlKTsKKyAgICBjb25uZWN0KG9w ZW5JbktMb29rLCBTSUdOQUwodHJpZ2dlcmVkKCkpLCB0aGlzLCBTTE9UKHByZXZpZXdJdGVtKCkp KTsKIH0KIAogdm9pZCBEb2xwaGluTWFpbldpbmRvdzo6c2V0dXBEb2NrV2lkZ2V0cygpCkBAIC0x OTg2LDYgKzIwMDgsOSBAQCB2b2lkIERvbHBoaW5NYWluV2luZG93Ojpjb25uZWN0Vmlld1NpZ25h bHMoRG9scGhpblZpZXdDb250YWluZXIqIGNvbnRhaW5lcikKICAgICAgICAgICAgIHRoaXMsIFNM T1QoZ29CYWNrKCkpKTsKICAgICBjb25uZWN0KHZpZXcsIFNJR05BTChnb0ZvcndhcmRSZXF1ZXN0 ZWQoKSksCiAgICAgICAgICAgICB0aGlzLCBTTE9UKGdvRm9yd2FyZCgpKSk7CisgICAgY29ubmVj dCh2aWV3LCBTSUdOQUwoa2xvb2tUcmlnZ2VyKCkpLAorICAgICAgICAgICAgdGhpcywgU0xPVChw cmV2aWV3SXRlbSgpKSk7CisKIAogICAgIGNvbnN0IEtVcmxOYXZpZ2F0b3IqIG5hdmlnYXRvciA9 IGNvbnRhaW5lci0+dXJsTmF2aWdhdG9yKCk7CiAgICAgY29ubmVjdChuYXZpZ2F0b3IsIFNJR05B TCh1cmxDaGFuZ2VkKEtVcmwpKSwKQEAgLTIxMzAsNCArMjE1NSw1MSBAQCB2b2lkIERvbHBoaW5N YWluV2luZG93OjpVbmRvVWlJbnRlcmZhY2U6OmpvYkVycm9yKEtJTzo6Sm9iKiBqb2IpCiAgICAg fQogfQogCit2b2lkIERvbHBoaW5NYWluV2luZG93OjpwcmV2aWV3SXRlbSgpCit7CisgICAgS0Zp bGVJdGVtTGlzdCBsaXN0OworICAgIGludCBpbmRleCA9IDA7CisgICAgaWYgKCBtX2FjdGl2ZVZp ZXdDb250YWluZXItPnZpZXcoKS0+c2VsZWN0ZWRJdGVtc0NvdW50KCkgPiAxKSB7CisgICAgICAg IGxpc3QgPSBtX2FjdGl2ZVZpZXdDb250YWluZXItPnZpZXcoKS0+c2VsZWN0ZWRJdGVtcygpOwor ICAgIH0gZWxzZSB7CisgICAgICAgIGxpc3QgPSBtX2FjdGl2ZVZpZXdDb250YWluZXItPnZpZXco KS0+c29ydGVkSXRlbXMoKTsKKyAgICAgICAgaW5kZXggPSBsaXN0LmluZGV4T2YoIG1fYWN0aXZl Vmlld0NvbnRhaW5lci0+dmlldygpLT5zZWxlY3RlZEl0ZW1zKCkuYXQoMCkpOworICAgIH0KKyAg ICBRU3RyaW5nTGlzdCB1cmxMaXN0OworICAgIGZvcmVhY2goS0ZpbGVJdGVtIGl0ZW0sIGxpc3Qp CisgICAgeworICAgICAgICB1cmxMaXN0LmFwcGVuZChpdGVtLnVybCgpLnBhdGgoKSk7CisgICAg fQorICAgIHVybExpc3QuYXBwZW5kKCItaSAiICsgUVN0cmluZzo6bnVtYmVyKGluZGV4ICwgMTAp KTsKKyAgICBpZiAoIWxpc3QuaXNFbXB0eSgpKQorICAgIHsKKyAgICAgICAgUVByb2Nlc3MqIHBy b2Nlc3MgPSBuZXcgUVByb2Nlc3MoKTsKKyAgICAgICAgY29ubmVjdChwcm9jZXNzLFNJR05BTChm aW5pc2hlZChpbnQpKSxwcm9jZXNzLFNMT1QoZGVsZXRlTGF0ZXIoKSkpOworICAgICAgICBwcm9j ZXNzLT5zdGFydChRU3RyaW5nKCJrbG9vayIpLCB1cmxMaXN0KTsKKyAgICB9Cit9CisKK3ZvaWQg RG9scGhpbk1haW5XaW5kb3c6OmZvY3VzQ2hhbmdlZChRV2lkZ2V0ICpvbGQsIFFXaWRnZXQgKm5v dykKK3sKKyNpZm5kZWYgUV9PU19XSU4KKyAgICBpZiAobm93KQorICAgIHsKKyAgICAgICAgaWYg KFFTdHJpbmcobm93LT5tZXRhT2JqZWN0KCktPmNsYXNzTmFtZSgpKS5jb250YWlucygiS29uc29s ZTo6VGVybWluYWxEaXNwbGF5IikpCisgICAgICAgIHsKKyAgICAgICAgICAgIFFBY3Rpb24qIG9w ZW5JbktMb29rID0gYWN0aW9uQ29sbGVjdGlvbigpLT5hY3Rpb24oIm9wZW5faW5fS0xvb2siKTsK KyAgICAgICAgICAgIG1faXNGb2N1c09uVGVybWluYWwgPSB0cnVlOworICAgICAgICAgICAgb3Bl bkluS0xvb2stPnNldEVuYWJsZWQoZmFsc2UpOworICAgICAgICB9CisgICAgfQorICAgIGlmIChv bGQpCisgICAgeworICAgICAgICBpZiAoUVN0cmluZyhvbGQtPm1ldGFPYmplY3QoKS0+Y2xhc3NO YW1lKCkpLmNvbnRhaW5zKCJLb25zb2xlOjpUZXJtaW5hbERpc3BsYXkiKSkKKyAgICAgICAgewor ICAgICAgICAgICAgUUFjdGlvbiogb3BlbkluS0xvb2sgPSBhY3Rpb25Db2xsZWN0aW9uKCktPmFj dGlvbigib3Blbl9pbl9LTG9vayIpOworICAgICAgICAgICAgbV9pc0ZvY3VzT25UZXJtaW5hbCA9 IGZhbHNlOworICAgICAgICAgICAgb3BlbkluS0xvb2stPnNldEVuYWJsZWQodHJ1ZSk7CisgICAg ICAgIH0KKyAgICB9CisjZW5kaWYKK30KICNpbmNsdWRlICJkb2xwaGlubWFpbndpbmRvdy5tb2Mi CmRpZmYgLS1naXQgYS9kb2xwaGluL3NyYy9kb2xwaGlubWFpbndpbmRvdy5oIGIvZG9scGhpbi9z cmMvZG9scGhpbm1haW53aW5kb3cuaAppbmRleCBhYjc5ZmIwLi5mNjFmMTczIDEwMDY0NAotLS0g YS9kb2xwaGluL3NyYy9kb2xwaGlubWFpbndpbmRvdy5oCisrKyBiL2RvbHBoaW4vc3JjL2RvbHBo aW5tYWlud2luZG93LmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogdHlwZWRlZiBLSU86OkZpbGVVbmRv TWFuYWdlcjo6Q29tbWFuZFR5cGUgQ29tbWFuZFR5cGU7CiAKK2NsYXNzIERvbHBoaW5Eb2NrV2lk Z2V0OwogY2xhc3MgRG9scGhpblZpZXdBY3Rpb25IYW5kbGVyOwogY2xhc3MgRG9scGhpbkFwcGxp Y2F0aW9uOwogY2xhc3MgRG9scGhpblNldHRpbmdzRGlhbG9nOwpAQCAtNTEsNiArNTIsNyBAQCBj bGFzcyBLVXJsOwogY2xhc3MgUVNwbGl0dGVyOwogY2xhc3MgUVRvb2xCdXR0b247CiBjbGFzcyBR VkJveExheW91dDsKK2NsYXNzIFBhbmVsOwogCiAvKioKICAqIEBzaG9ydCBNYWluIHdpbmRvdyBm b3IgRG9scGhpbi4KQEAgLTEwMiw2ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgICovCiAgICAgS05l d0ZpbGVNZW51KiBuZXdGaWxlTWVudSgpIGNvbnN0OwogCisgICAgdm9pZCBmb2N1c0NoYW5nZWQo UVdpZGdldCAqb2xkLCBRV2lkZ2V0ICpub3cpOworCiBwdWJsaWMgc2xvdHM6CiAgICAgLyoqCiAg ICAgICogUGFzdGVzIHRoZSBjbGlwYm9hcmQgZGF0YSBpbnRvIHRoZSBjdXJyZW50bHkgc2VsZWN0 ZWQgZm9sZGVyCkBAIC0zNjcsNiArMzcxLDEyIEBAIHByaXZhdGUgc2xvdHM6CiAgICAgdm9pZCBv cGVuSW5OZXdUYWIoKTsKIAogICAgIC8qKgorICAgICAqIE9wZW5zIHRoZSBzZWxlY3RlZCBmaWxl cyBpbiBLTG9vay4KKyAgICAgKi8KKworICAgIHZvaWQgcHJldmlld0l0ZW0oKTsKKworICAgIC8q KgogICAgICAqIE9wZW5zIHRoZSBzZWxlY3RlZCBmb2xkZXIgaW4gYSBuZXcgd2luZG93LgogICAg ICAqLwogICAgIHZvaWQgb3BlbkluTmV3V2luZG93KCk7CkBAIC01ODgsNiArNTk4LDcgQEAgcHJp dmF0ZToKICAgICBRVGltZXIqIG1fdXBkYXRlVG9vbEJhclRpbWVyOwogCiAgICAgS0lPOjpKb2Iq IG1fbGFzdEhhbmRsZVVybFN0YXRKb2I7CisgICAgYm9vbCBtX2lzRm9jdXNPblRlcm1pbmFsOwog fTsKIAogaW5saW5lIERvbHBoaW5WaWV3Q29udGFpbmVyKiBEb2xwaGluTWFpbldpbmRvdzo6YWN0 aXZlVmlld0NvbnRhaW5lcigpIGNvbnN0CmRpZmYgLS1naXQgYS9kb2xwaGluL3NyYy9raXRlbXZp ZXdzL2tmaWxlaXRlbWxpc3R3aWRnZXQuY3BwIGIvZG9scGhpbi9zcmMva2l0ZW12aWV3cy9rZmls ZWl0ZW1saXN0d2lkZ2V0LmNwcAppbmRleCAzYTc3MjQxLi5iODE2ZmI4IDEwMDY0NAotLS0gYS9k b2xwaGluL3NyYy9raXRlbXZpZXdzL2tmaWxlaXRlbWxpc3R3aWRnZXQuY3BwCisrKyBiL2RvbHBo aW4vc3JjL2tpdGVtdmlld3Mva2ZpbGVpdGVtbGlzdHdpZGdldC5jcHAKQEAgLTcwLDYgKzcwLDQ0 IEBAIFFTdHJpbmcgS0ZpbGVJdGVtTGlzdFdpZGdldEluZm9ybWFudDo6cm9sZVRleHQoY29uc3Qg UUJ5dGVBcnJheSYgcm9sZSwKICAgICByZXR1cm4gdGV4dDsKIH0KIAorUVJlY3RGIEtGaWxlSXRl bUxpc3RXaWRnZXQ6Omtsb29rVG9nZ2xlUmVjdCgpIGNvbnN0Cit7CisgICAgY29uc3RfY2FzdDxL RmlsZUl0ZW1MaXN0V2lkZ2V0ICo+KHRoaXMpLT50cmlnZ2VyQ2FjaGVSZWZyZXNoaW5nKCk7CisK KyAgICBjb25zdCBpbnQgaWNvbkhlaWdodCA9IHN0eWxlT3B0aW9uKCkuaWNvblNpemU7CisKKyAg ICBpbnQgdG9nZ2xlU2l6ZSA9IEtJY29uTG9hZGVyOjpTaXplU21hbGw7CisgICAgaWYgKGljb25I ZWlnaHQgPj0gS0ljb25Mb2FkZXI6OlNpemVFbm9ybW91cykgeworICAgICAgICB0b2dnbGVTaXpl ID0gS0ljb25Mb2FkZXI6OlNpemVNZWRpdW07CisgICAgfSBlbHNlIGlmIChpY29uSGVpZ2h0ID49 IEtJY29uTG9hZGVyOjpTaXplTGFyZ2UpIHsKKyAgICAgICAgdG9nZ2xlU2l6ZSA9IEtJY29uTG9h ZGVyOjpTaXplU21hbGxNZWRpdW07CisgICAgfQorCisgICAgUVBvaW50RiBwb3MgPSBRUG9pbnRG KGljb25SZWN0KCkudG9wUmlnaHQoKS5yeCgpIC0gdG9nZ2xlU2l6ZSwgaWNvblJlY3QoKS50b3BS aWdodCgpLnJ5KCkpOworCisgICAgLy8gSWYgdGhlIHNlbGVjdGlvbiB0b2dnbGUgaGFzIGEgdmVy eSBzbWFsbCBkaXN0YW5jZSB0byB0aGUKKyAgICAvLyB3aWRnZXQgYm9yZGVycywgdGhlIHNpemUg b2YgdGhlIHNlbGVjdGlvbiB0b2dnbGUgd2lsbCBnZXQKKyAgICAvLyBpbmNyZWFzZWQgdG8gcHJl dmVudCBhbiBhY2NpZGVudGFsIGNsaWNraW5nIG9mIHRoZSBpdGVtCisgICAgLy8gd2hlbiB0cnlp bmcgdG8gaGl0IHRoZSB0b2dnbGUuCisKKyAgICBjb25zdCBpbnQgd2lkZ2V0SGVpZ2h0ID0gc2l6 ZSgpLmhlaWdodCgpOworICAgIGNvbnN0IGludCB3aWRnZXRXaWR0aCA9IHNpemUoKS53aWR0aCgp OworICAgIGNvbnN0IGludCBtaW5NYXJnaW4gPSAyOworCisgICAgaWYgKHRvZ2dsZVNpemUgKyBt aW5NYXJnaW4gKiAyID49IHdpZGdldEhlaWdodCkgeworICAgICAgICBwb3MucngoKSAtPSAod2lk Z2V0SGVpZ2h0IC0gdG9nZ2xlU2l6ZSkgLyAyOworICAgICAgICB0b2dnbGVTaXplID0gd2lkZ2V0 SGVpZ2h0OworICAgICAgICBwb3Muc2V0WSgwKTsKKyAgICB9CisgICAgaWYgKHRvZ2dsZVNpemUg KyBtaW5NYXJnaW4gKiAyID49IHdpZGdldFdpZHRoKSB7CisgICAgICAgIHBvcy5yeSgpIC09ICh3 aWRnZXRXaWR0aCAtIHRvZ2dsZVNpemUpIC8gMjsKKyAgICAgICAgdG9nZ2xlU2l6ZSA9IHdpZGdl dFdpZHRoOworICAgICAgICBwb3Muc2V0WCgwKTsKKyAgICB9CisKKyAgICByZXR1cm4gUVJlY3RG KHBvcywgUVNpemVGKHRvZ2dsZVNpemUsIHRvZ2dsZVNpemUpKTsKK30KKwogS0ZpbGVJdGVtTGlz dFdpZGdldDo6S0ZpbGVJdGVtTGlzdFdpZGdldChLSXRlbUxpc3RXaWRnZXRJbmZvcm1hbnQqIGlu Zm9ybWFudCwgUUdyYXBoaWNzSXRlbSogcGFyZW50KSA6CiAgICAgS1N0YW5kYXJkSXRlbUxpc3RX aWRnZXQoaW5mb3JtYW50LCBwYXJlbnQpCiB7CmRpZmYgLS1naXQgYS9kb2xwaGluL3NyYy9raXRl bXZpZXdzL2tmaWxlaXRlbWxpc3R3aWRnZXQuaCBiL2RvbHBoaW4vc3JjL2tpdGVtdmlld3Mva2Zp bGVpdGVtbGlzdHdpZGdldC5oCmluZGV4IDI0YzY3NzguLmFlYTU2MzYgMTAwNjQ0Ci0tLSBhL2Rv bHBoaW4vc3JjL2tpdGVtdmlld3Mva2ZpbGVpdGVtbGlzdHdpZGdldC5oCisrKyBiL2RvbHBoaW4v c3JjL2tpdGVtdmlld3Mva2ZpbGVpdGVtbGlzdHdpZGdldC5oCkBAIC00Myw2ICs0Myw3IEBAIHB1 YmxpYzoKICAgICB2aXJ0dWFsIH5LRmlsZUl0ZW1MaXN0V2lkZ2V0KCk7CiAKICAgICBzdGF0aWMg S0l0ZW1MaXN0V2lkZ2V0SW5mb3JtYW50KiBjcmVhdGVJbmZvcm1hbnQoKTsKKyAgICB2aXJ0dWFs IFFSZWN0RiBrbG9va1RvZ2dsZVJlY3QoKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1 YWwgYm9vbCBpc1JvbGVSaWdodEFsaWduZWQoY29uc3QgUUJ5dGVBcnJheSYgcm9sZSkgY29uc3Q7 CmRpZmYgLS1naXQgYS9kb2xwaGluL3NyYy9raXRlbXZpZXdzL2tpdGVtbGlzdGNvbnRyb2xsZXIu Y3BwIGIvZG9scGhpbi9zcmMva2l0ZW12aWV3cy9raXRlbWxpc3Rjb250cm9sbGVyLmNwcAppbmRl eCA4OGY1ZDlmLi5jM2MxZDNkIDEwMDY0NAotLS0gYS9kb2xwaGluL3NyYy9raXRlbXZpZXdzL2tp dGVtbGlzdGNvbnRyb2xsZXIuY3BwCisrKyBiL2RvbHBoaW4vc3JjL2tpdGVtdmlld3Mva2l0ZW1s aXN0Y29udHJvbGxlci5jcHAKQEAgLTUxMCw2ICs1MTAsMTMgQEAgYm9vbCBLSXRlbUxpc3RDb250 cm9sbGVyOjptb3VzZVByZXNzRXZlbnQoUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KiBldmVudCwg Y29uc3QKICAgICAgICAgbV9zZWxlY3Rpb25NYW5hZ2VyLT5iZWdpbkFuY2hvcmVkU2VsZWN0aW9u KG1fcHJlc3NlZEluZGV4KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorICAgIGlmICht X3ZpZXctPmlzQWJvdmVLbG9va1RvZ2dsZShtX3ByZXNzZWRJbmRleCwgbV9wcmVzc2VkTW91c2VQ b3MpKXsKKyAgICAgICAgbV9zZWxlY3Rpb25NYW5hZ2VyLT5zZXRTZWxlY3RlZChtX3ByZXNzZWRJ bmRleCwgMSwgS0l0ZW1MaXN0U2VsZWN0aW9uTWFuYWdlcjo6U2VsZWN0KTsKKyAgICAgICAgbV9z ZWxlY3Rpb25NYW5hZ2VyLT5zZXRDdXJyZW50SXRlbShtX3ByZXNzZWRJbmRleCk7CisgICAgICAg IG1fc2VsZWN0aW9uTWFuYWdlci0+YmVnaW5BbmNob3JlZFNlbGVjdGlvbihtX3ByZXNzZWRJbmRl eCk7CisgICAgICAgIGVtaXQga2xvb2tUcmlnZ2VyKCk7CisgICAgICAgIHJldHVybiB0cnVlOwor ICAgIH0KIAogICAgIGNvbnN0IGJvb2wgc2hpZnRQcmVzc2VkID0gZXZlbnQtPm1vZGlmaWVycygp ICYgUXQ6OlNoaWZ0TW9kaWZpZXI7CiAgICAgY29uc3QgYm9vbCBjb250cm9sUHJlc3NlZCA9IGV2 ZW50LT5tb2RpZmllcnMoKSAmIFF0OjpDb250cm9sTW9kaWZpZXI7CmRpZmYgLS1naXQgYS9kb2xw aGluL3NyYy9raXRlbXZpZXdzL2tpdGVtbGlzdGNvbnRyb2xsZXIuaCBiL2RvbHBoaW4vc3JjL2tp dGVtdmlld3Mva2l0ZW1saXN0Y29udHJvbGxlci5oCmluZGV4IGE4ODE1MjYuLjBkNGJlMmYgMTAw NjQ0Ci0tLSBhL2RvbHBoaW4vc3JjL2tpdGVtdmlld3Mva2l0ZW1saXN0Y29udHJvbGxlci5oCisr KyBiL2RvbHBoaW4vc3JjL2tpdGVtdmlld3Mva2l0ZW1saXN0Y29udHJvbGxlci5oCkBAIC0yMTYs NiArMjE2LDggQEAgc2lnbmFsczoKICAgICB2b2lkIG1vZGVsQ2hhbmdlZChLSXRlbU1vZGVsQmFz ZSogY3VycmVudCwgS0l0ZW1Nb2RlbEJhc2UqIHByZXZpb3VzKTsKICAgICB2b2lkIHZpZXdDaGFu Z2VkKEtJdGVtTGlzdFZpZXcqIGN1cnJlbnQsIEtJdGVtTGlzdFZpZXcqIHByZXZpb3VzKTsKIAor ICAgIHZvaWQga2xvb2tUcmlnZ2VyKCk7CisKIHByaXZhdGUgc2xvdHM6CiAgICAgdm9pZCBzbG90 Vmlld1Njcm9sbE9mZnNldENoYW5nZWQocXJlYWwgY3VycmVudCwgcXJlYWwgcHJldmlvdXMpOwog CmRpZmYgLS1naXQgYS9kb2xwaGluL3NyYy9raXRlbXZpZXdzL2tpdGVtbGlzdGtsb29rdG9nZ2xl LmNwcCBiL2RvbHBoaW4vc3JjL2tpdGVtdmlld3Mva2l0ZW1saXN0a2xvb2t0b2dnbGUuY3BwCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhNTIwMGUKLS0tIC9kZXYvbnVsbAor KysgYi9kb2xwaGluL3NyYy9raXRlbXZpZXdzL2tpdGVtbGlzdGtsb29rdG9nZ2xlLmNwcApAQCAt MCwwICsxLDEwNiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICBDb3B5cmlnaHQgKEMpIDIw MTEgYnkgUGV0ZXIgUGVueiA8cGV0ZXIucGVuejE5QGdtYWlsLmNvbT4gICAgICAgICAgICAgKgor ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKgorICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSAgKgorICogICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSAgKgorICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy IG9mIHRoZSBMaWNlbnNlLCBvciAgICAgKgorICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKgorICogICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAgICAgKgorICogICBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAgICAgKgorICog ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlICAgICAgICAgKgorICogICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KgorICogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSAgICAgKgorICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYg bm90LCB3cml0ZSB0byB0aGUgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKgorICogICA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B IDAyMTEwLTEzMDEgVVNBICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lu Y2x1ZGUgImtpdGVtbGlzdGtsb29rdG9nZ2xlX3AuaCIKKworI2luY2x1ZGUgPEtJY29uRWZmZWN0 PgorI2luY2x1ZGUgPEtJY29uTG9hZGVyPgorI2luY2x1ZGUgPFFQYWludGVyPgorCisjaW5jbHVk ZSA8S0RlYnVnPgorCitLSXRlbUxpc3RLbG9va1RvZ2dsZTo6S0l0ZW1MaXN0S2xvb2tUb2dnbGUo UUdyYXBoaWNzSXRlbSogcGFyZW50KSA6CisgICAgUUdyYXBoaWNzV2lkZ2V0KHBhcmVudCwgMCks ICAgIAorICAgIG1faG92ZXJlZChmYWxzZSkKK3sKKyAgICBzZXRBY2NlcHRIb3ZlckV2ZW50cyh0 cnVlKTsKK30KKworS0l0ZW1MaXN0S2xvb2tUb2dnbGU6On5LSXRlbUxpc3RLbG9va1RvZ2dsZSgp Cit7Cit9CisvKgordm9pZCBLSXRlbUxpc3RLbG9va1RvZ2dsZTo6c2V0Q2hlY2tlZChib29sIGNo ZWNrZWQpCit7CisgICAgaWYgKG1fY2hlY2tlZCAhPSBjaGVja2VkKSB7CisgICAgICAgIG1fY2hl Y2tlZCA9IGNoZWNrZWQ7CisgICAgICAgIG1fcGl4bWFwID0gUVBpeG1hcCgpOworICAgICAgICB1 cGRhdGUoKTsKKyAgICB9Cit9CisqLworLyoKK2Jvb2wgS0l0ZW1MaXN0S2xvb2tUb2dnbGU6Omlz Q2hlY2tlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2hlY2tlZDsKK30KKyovCit2b2lkIEtJ dGVtTGlzdEtsb29rVG9nZ2xlOjpwYWludChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0eWxl T3B0aW9uR3JhcGhpY3NJdGVtKiBvcHRpb24sIFFXaWRnZXQqIHdpZGdldCkKK3sKKyAgICBRX1VO VVNFRChvcHRpb24pOworICAgIFFfVU5VU0VEKHdpZGdldCk7CisKKyAgICBpZiAobV9waXhtYXAu aXNOdWxsKCkpIHsKKyAgICAgICAgdXBkYXRlUGl4bWFwKCk7CisgICAgfQorCisgICAgY29uc3Qg cXJlYWwgeCA9IChzaXplKCkud2lkdGgoKSAgLSBxcmVhbChtX3BpeG1hcC53aWR0aCgpKSkgIC8g MjsKKyAgICBjb25zdCBxcmVhbCB5ID0gKHNpemUoKS5oZWlnaHQoKSAtIHFyZWFsKG1fcGl4bWFw LmhlaWdodCgpKSkgLyAyOworICAgIHBhaW50ZXItPmRyYXdQaXhtYXAoeCwgeSwgbV9waXhtYXAp OworfQorCit2b2lkIEtJdGVtTGlzdEtsb29rVG9nZ2xlOjpob3ZlckVudGVyRXZlbnQoUUdyYXBo aWNzU2NlbmVIb3ZlckV2ZW50KiBldmVudCkKK3sKKyAgICBRR3JhcGhpY3NXaWRnZXQ6OmhvdmVy RW50ZXJFdmVudChldmVudCk7CisgICAgbV9ob3ZlcmVkID0gdHJ1ZTsKKyAgICBtX3BpeG1hcCA9 IFFQaXhtYXAoKTsKK30KKwordm9pZCBLSXRlbUxpc3RLbG9va1RvZ2dsZTo6aG92ZXJMZWF2ZUV2 ZW50KFFHcmFwaGljc1NjZW5lSG92ZXJFdmVudCogZXZlbnQpCit7CisgICAgUUdyYXBoaWNzV2lk Z2V0Ojpob3ZlckxlYXZlRXZlbnQoZXZlbnQpOworICAgIG1faG92ZXJlZCA9IGZhbHNlOworICAg IG1fcGl4bWFwID0gUVBpeG1hcCgpOworfQorCit2b2lkIEtJdGVtTGlzdEtsb29rVG9nZ2xlOjp1 cGRhdGVQaXhtYXAoKQoreworICAgIGNvbnN0IGNoYXIqIGljb24gPSAia2xvb2siOworCisgICAg aW50IGljb25TaXplID0gcU1pbihzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKTsKKyAg ICBpZiAoaWNvblNpemUgPCBLSWNvbkxvYWRlcjo6U2l6ZVNtYWxsTWVkaXVtKSB7CisgICAgICAg IGljb25TaXplID0gS0ljb25Mb2FkZXI6OlNpemVTbWFsbDsKKyAgICB9IGVsc2UgaWYgKGljb25T aXplIDwgS0ljb25Mb2FkZXI6OlNpemVNZWRpdW0pIHsKKyAgICAgICAgaWNvblNpemUgPSBLSWNv bkxvYWRlcjo6U2l6ZVNtYWxsTWVkaXVtOworICAgIH0gZWxzZSBpZiAoaWNvblNpemUgPCBLSWNv bkxvYWRlcjo6U2l6ZUxhcmdlKSB7CisgICAgICAgIGljb25TaXplID0gS0ljb25Mb2FkZXI6OlNp emVNZWRpdW07CisgICAgfSBlbHNlIGlmIChpY29uU2l6ZSA8IEtJY29uTG9hZGVyOjpTaXplSHVn ZSkgeworICAgICAgICBpY29uU2l6ZSA9IEtJY29uTG9hZGVyOjpTaXplTGFyZ2U7CisgICAgfSBl bHNlIGlmIChpY29uU2l6ZSA8IEtJY29uTG9hZGVyOjpTaXplRW5vcm1vdXMpIHsKKyAgICAgICAg aWNvblNpemUgPSBLSWNvbkxvYWRlcjo6U2l6ZUh1Z2U7CisgICAgfQorCisgICAgbV9waXhtYXAg PSBLSWNvbkxvYWRlcjo6Z2xvYmFsKCktPmxvYWRJY29uKFFMYXRpbjFTdHJpbmcoaWNvbiksIEtJ Y29uTG9hZGVyOjpOb0dyb3VwLCBpY29uU2l6ZSk7CisKKyAgICBpZiAobV9ob3ZlcmVkKSB7Cisg ICAgICAgIEtJY29uTG9hZGVyOjpnbG9iYWwoKS0+aWNvbkVmZmVjdCgpLT5hcHBseShtX3BpeG1h cCwgS0ljb25Mb2FkZXI6OkRlc2t0b3AsIEtJY29uTG9hZGVyOjpBY3RpdmVTdGF0ZSk7CisgICAg fQorfQorCisjaW5jbHVkZSAia2l0ZW1saXN0a2xvb2t0b2dnbGVfcC5tb2MiCmRpZmYgLS1naXQg YS9kb2xwaGluL3NyYy9raXRlbXZpZXdzL2tpdGVtbGlzdGtsb29rdG9nZ2xlX3AuaCBiL2RvbHBo aW4vc3JjL2tpdGVtdmlld3Mva2l0ZW1saXN0a2xvb2t0b2dnbGVfcC5oCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmNTkyM2UKLS0tIC9kZXYvbnVsbAorKysgYi9kb2xwaGlu L3NyYy9raXRlbXZpZXdzL2tpdGVtbGlzdGtsb29rdG9nZ2xlX3AuaApAQCAtMCwwICsxLDYxIEBA CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCisgKiAgIENvcHlyaWdodCAoQykgMjAxMSBieSBQZXRlciBQ ZW56IDxwZXRlci5wZW56MTlAZ21haWwuY29tPiAgICAgICAgICAgICAqCisgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqCisgKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5ICAqCisgKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5ICAqCisgKiAgIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu c2UsIG9yICAgICAqCisgKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisg KiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLCAgICAgICAqCisgKiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgICAgICAqCisgKiAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgICAgICAg ICAqCisgKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAg ICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlICAgICAqCisgKiAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRv IHRoZSAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAg IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBV U0EgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIEtJVEVNTElT VEtMT09LVE9HR0xFX0gKKyNkZWZpbmUgS0lURU1MSVNUS0xPT0tUT0dHTEVfSAorCisjaW5jbHVk ZSA8bGliZG9scGhpbl9leHBvcnQuaD4KKworI2luY2x1ZGUgPFFHcmFwaGljc1dpZGdldD4KKyNp bmNsdWRlIDxRUGl4bWFwPgorCitjbGFzcyBRUHJvcGVydHlBbmltYXRpb247CisKKy8qKgorICog QGJyaWVmIEFsbG93cyB0byBsYXVuY2gga2xvb2sgYnkgY2xpY2tpbmcgb24gaWNvbiBvdmVybGF5 CisgKi8KK2NsYXNzIExJQkRPTFBISU5QUklWQVRFX0VYUE9SVCBLSXRlbUxpc3RLbG9va1RvZ2ds ZSA6IHB1YmxpYyBRR3JhcGhpY3NXaWRnZXQKK3sKKyAgICBRX09CSkVDVAorCitwdWJsaWM6Cisg ICAgS0l0ZW1MaXN0S2xvb2tUb2dnbGUoUUdyYXBoaWNzSXRlbSogcGFyZW50KTsKKyAgICB2aXJ0 dWFsIH5LSXRlbUxpc3RLbG9va1RvZ2dsZSgpOworCisgICAgLy92b2lkIHNldENoZWNrZWQoYm9v bCBjaGVja2VkKTsKKyAgICAvL2Jvb2wgaXNDaGVja2VkKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFs IHZvaWQgcGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoaWNz SXRlbSogb3B0aW9uLCBRV2lkZ2V0KiB3aWRnZXQgPSAwKTsKKworcHJvdGVjdGVkOgorICAgIHZp cnR1YWwgdm9pZCBob3ZlckVudGVyRXZlbnQoUUdyYXBoaWNzU2NlbmVIb3ZlckV2ZW50KiBldmVu dCk7CisgICAgdmlydHVhbCB2b2lkIGhvdmVyTGVhdmVFdmVudChRR3JhcGhpY3NTY2VuZUhvdmVy RXZlbnQqIGV2ZW50KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHVwZGF0ZVBpeG1hcCgpOworCitw cml2YXRlOgorICAgIC8vYm9vbCBtX2NoZWNrZWQ7CisgICAgYm9vbCBtX2hvdmVyZWQ7CisgICAg UVBpeG1hcCBtX3BpeG1hcDsKK307CisKKyNlbmRpZgorCisKZGlmZiAtLWdpdCBhL2RvbHBoaW4v c3JjL2tpdGVtdmlld3Mva2l0ZW1saXN0dmlldy5jcHAgYi9kb2xwaGluL3NyYy9raXRlbXZpZXdz L2tpdGVtbGlzdHZpZXcuY3BwCmluZGV4IDcyYjNmZDguLjE1MTk5MjMgMTAwNjQ0Ci0tLSBhL2Rv bHBoaW4vc3JjL2tpdGVtdmlld3Mva2l0ZW1saXN0dmlldy5jcHAKKysrIGIvZG9scGhpbi9zcmMv a2l0ZW12aWV3cy9raXRlbWxpc3R2aWV3LmNwcApAQCAtNTUsNiArNTUsNyBAQCBuYW1lc3BhY2Ug ewogS0l0ZW1MaXN0Vmlldzo6S0l0ZW1MaXN0VmlldyhRR3JhcGhpY3NXaWRnZXQqIHBhcmVudCkg OgogICAgIFFHcmFwaGljc1dpZGdldChwYXJlbnQpLAogICAgIG1fZW5hYmxlZFNlbGVjdGlvblRv Z2dsZXMoZmFsc2UpLAorICAgIG1fZW5hYmxlZEtsb29rVG9nZ2xlcyhmYWxzZSksCiAgICAgbV9n cm91cGVkKGZhbHNlKSwKICAgICBtX3N1cHBvcnRzSXRlbUV4cGFuZGluZyhmYWxzZSksCiAgICAg bV9lZGl0aW5nUm9sZShmYWxzZSksCkBAIC0yNjksNiArMjcwLDI1IEBAIGJvb2wgS0l0ZW1MaXN0 Vmlldzo6ZW5hYmxlZFNlbGVjdGlvblRvZ2dsZXMoKSBjb25zdAogICAgIHJldHVybiBtX2VuYWJs ZWRTZWxlY3Rpb25Ub2dnbGVzOwogfQogCit2b2lkIEtJdGVtTGlzdFZpZXc6OnNldEVuYWJsZWRL bG9va1RvZ2dsZXMoYm9vbCBlbmFibGVkKQoreworICAgIGlmIChtX2VuYWJsZWRLbG9va1RvZ2ds ZXMgIT0gZW5hYmxlZCkgeworICAgICAgICBtX2VuYWJsZWRLbG9va1RvZ2dsZXMgPSBlbmFibGVk OworCisgICAgICAgIFFIYXNoSXRlcmF0b3I8aW50LCBLSXRlbUxpc3RXaWRnZXQqPiBpdChtX3Zp c2libGVJdGVtcyk7CisgICAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAg IGl0Lm5leHQoKTsKKyAgICAgICAgICAgIGl0LnZhbHVlKCktPnNldEVuYWJsZWRLbG9va1RvZ2ds ZShlbmFibGVkKTsKKyAgICAgICAgfQorICAgIH0KK30KKworYm9vbCBLSXRlbUxpc3RWaWV3Ojpl bmFibGVkS2xvb2tUb2dnbGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9lbmFibGVkS2xvb2tU b2dnbGVzOworfQorCisKIEtJdGVtTGlzdENvbnRyb2xsZXIqIEtJdGVtTGlzdFZpZXc6OmNvbnRy b2xsZXIoKSBjb25zdAogewogICAgIHJldHVybiBtX2NvbnRyb2xsZXI7CkBAIC00MTEsNiArNDMx LDI1IEBAIGJvb2wgS0l0ZW1MaXN0Vmlldzo6aXNBYm92ZUV4cGFuc2lvblRvZ2dsZShpbnQgaW5k ZXgsIGNvbnN0IFFQb2ludEYmIHBvcykgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jv b2wgS0l0ZW1MaXN0Vmlldzo6aXNBYm92ZUtsb29rVG9nZ2xlKGludCBpbmRleCwgY29uc3QgUVBv aW50RiYgcG9zKSBjb25zdAoreworCisgICAgaWYgKCFtX2VuYWJsZWRLbG9va1RvZ2dsZXMpIHsK KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IEtJdGVtTGlzdFdpZGdl dCogd2lkZ2V0ID0gbV92aXNpYmxlSXRlbXMudmFsdWUoaW5kZXgpOworICAgIGlmICh3aWRnZXQp IHsKKyAgICAgICAgY29uc3QgUVJlY3RGIHNlbGVjdGlvblRvZ2dsZVJlY3QgPSB3aWRnZXQtPmts b29rVG9nZ2xlUmVjdCgpOworICAgICAgICBpZiAoIXNlbGVjdGlvblRvZ2dsZVJlY3QuaXNFbXB0 eSgpKSB7CisgICAgICAgICAgICBjb25zdCBRUG9pbnRGIG1hcHBlZFBvcyA9IHdpZGdldC0+bWFw RnJvbUl0ZW0odGhpcywgcG9zKTsKKyAgICAgICAgICAgIHJldHVybiBzZWxlY3Rpb25Ub2dnbGVS ZWN0LmNvbnRhaW5zKG1hcHBlZFBvcyk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZh bHNlOworfQorCisKIGludCBLSXRlbUxpc3RWaWV3OjpmaXJzdFZpc2libGVJbmRleCgpIGNvbnN0 CiB7CiAgICAgcmV0dXJuIG1fbGF5b3V0ZXItPmZpcnN0VmlzaWJsZUluZGV4KCk7CkBAIC0xODgw LDYgKzE5MTksNyBAQCB2b2lkIEtJdGVtTGlzdFZpZXc6OnVwZGF0ZVdpZGdldFByb3BlcnRpZXMo S0l0ZW1MaXN0V2lkZ2V0KiB3aWRnZXQsIGludCBpbmRleCkKICAgICB3aWRnZXQtPnNldFNlbGVj dGVkKHNlbGVjdGlvbk1hbmFnZXItPmlzU2VsZWN0ZWQoaW5kZXgpKTsKICAgICB3aWRnZXQtPnNl dEhvdmVyZWQoZmFsc2UpOwogICAgIHdpZGdldC0+c2V0RW5hYmxlZFNlbGVjdGlvblRvZ2dsZShl bmFibGVkU2VsZWN0aW9uVG9nZ2xlcygpKTsKKyAgICB3aWRnZXQtPnNldEVuYWJsZWRLbG9va1Rv Z2dsZShlbmFibGVkS2xvb2tUb2dnbGVzKCkpOwogICAgIHdpZGdldC0+c2V0SW5kZXgoaW5kZXgp OwogICAgIHdpZGdldC0+c2V0RGF0YShtX21vZGVsLT5kYXRhKGluZGV4KSk7CiAgICAgd2lkZ2V0 LT5zZXRTaWJsaW5nc0luZm9ybWF0aW9uKFFCaXRBcnJheSgpKTsKZGlmZiAtLWdpdCBhL2RvbHBo aW4vc3JjL2tpdGVtdmlld3Mva2l0ZW1saXN0dmlldy5oIGIvZG9scGhpbi9zcmMva2l0ZW12aWV3 cy9raXRlbWxpc3R2aWV3LmgKaW5kZXggNTcyM2I5YS4uYjhjOTU2ZSAxMDA2NDQKLS0tIGEvZG9s cGhpbi9zcmMva2l0ZW12aWV3cy9raXRlbWxpc3R2aWV3LmgKKysrIGIvZG9scGhpbi9zcmMva2l0 ZW12aWV3cy9raXRlbWxpc3R2aWV3LmgKQEAgLTExMCw2ICsxMTAsOSBAQCBwdWJsaWM6CiAgICAg dm9pZCBzZXRFbmFibGVkU2VsZWN0aW9uVG9nZ2xlcyhib29sIGVuYWJsZWQpOwogICAgIGJvb2wg ZW5hYmxlZFNlbGVjdGlvblRvZ2dsZXMoKSBjb25zdDsKIAorICAgIHZvaWQgc2V0RW5hYmxlZEts b29rVG9nZ2xlcyhib29sIGVuYWJsZWQpOworICAgIGJvb2wgZW5hYmxlZEtsb29rVG9nZ2xlcygp IGNvbnN0OworCiAgICAgLyoqCiAgICAgICogQHJldHVybiBDb250cm9sbGVyIG9mIHRoZSBpdGVt LWxpc3QuIFRoZSBjb250cm9sbGVyIGdldHMKICAgICAgKiAgICAgICAgIGluaXRpYWxpemVkIGJ5 IEtJdGVtTGlzdENvbnRyb2xsZXI6OnNldFZpZXcoKSBhbmQgd2lsbApAQCAtMTczLDYgKzE3Niw3 IEBAIHB1YmxpYzoKICAgICBib29sIGlzQWJvdmVTZWxlY3Rpb25Ub2dnbGUoaW50IGluZGV4LCBj b25zdCBRUG9pbnRGJiBwb3MpIGNvbnN0OwogICAgIGJvb2wgaXNBYm92ZUV4cGFuc2lvblRvZ2ds ZShpbnQgaW5kZXgsIGNvbnN0IFFQb2ludEYmIHBvcykgY29uc3Q7CiAKKyAgICBib29sIGlzQWJv dmVLbG9va1RvZ2dsZShpbnQgaW5kZXgsIGNvbnN0IFFQb2ludEYmIHBvcykgY29uc3Q7CiAgICAg LyoqCiAgICAgICogQHJldHVybiBJbmRleCBvZiB0aGUgZmlyc3QgaXRlbSB0aGF0IGlzIGF0IGxl YXN0IHBhcnRseSB2aXNpYmxlLgogICAgICAqICAgICAgICAgLTEgaXMgcmV0dXJuZWQgaWYgdGhl IG1vZGVsIGNvbnRhaW5zIG5vIGl0ZW1zLgpAQCAtNjgzLDYgKzY4Nyw3IEBAIHByaXZhdGU6CiAK IHByaXZhdGU6CiAgICAgYm9vbCBtX2VuYWJsZWRTZWxlY3Rpb25Ub2dnbGVzOworICAgIGJvb2wg bV9lbmFibGVkS2xvb2tUb2dnbGVzOwogICAgIGJvb2wgbV9ncm91cGVkOwogICAgIGJvb2wgbV9z dXBwb3J0c0l0ZW1FeHBhbmRpbmc7CiAgICAgYm9vbCBtX2VkaXRpbmdSb2xlOwpkaWZmIC0tZ2l0 IGEvZG9scGhpbi9zcmMva2l0ZW12aWV3cy9raXRlbWxpc3R3aWRnZXQuY3BwIGIvZG9scGhpbi9z cmMva2l0ZW12aWV3cy9raXRlbWxpc3R3aWRnZXQuY3BwCmluZGV4IDZhNzExMWEuLmQ0ZjcwZTEg MTAwNjQ0Ci0tLSBhL2RvbHBoaW4vc3JjL2tpdGVtdmlld3Mva2l0ZW1saXN0d2lkZ2V0LmNwcAor KysgYi9kb2xwaGluL3NyYy9raXRlbXZpZXdzL2tpdGVtbGlzdHdpZGdldC5jcHAKQEAgLTIyLDYg KzIyLDcgQEAKIAogI2luY2x1ZGUgImtpdGVtbGlzdHdpZGdldC5oIgogCisjaW5jbHVkZSAia2l0 ZW1saXN0a2xvb2t0b2dnbGVfcC5oIgogI2luY2x1ZGUgImtpdGVtbGlzdHZpZXcuaCIKICNpbmNs dWRlICJraXRlbW1vZGVsYmFzZS5oIgogCkBAIC01Miw2ICs1Myw3IEBAIEtJdGVtTGlzdFdpZGdl dDo6S0l0ZW1MaXN0V2lkZ2V0KEtJdGVtTGlzdFdpZGdldEluZm9ybWFudCogaW5mb3JtYW50LCBR R3JhcGhpY3NJCiAgICAgbV9ob3ZlcmVkKGZhbHNlKSwKICAgICBtX2FsdGVybmF0ZUJhY2tncm91 bmQoZmFsc2UpLAogICAgIG1fZW5hYmxlZFNlbGVjdGlvblRvZ2dsZShmYWxzZSksCisgICAgbV9l bmFibGVkS2xvb2tUb2dnbGUoZmFsc2UpLAogICAgIG1fZGF0YSgpLAogICAgIG1fdmlzaWJsZVJv bGVzKCksCiAgICAgbV9jb2x1bW5XaWR0aHMoKSwKQEAgLTYxLDcgKzYzLDggQEAgS0l0ZW1MaXN0 V2lkZ2V0OjpLSXRlbUxpc3RXaWRnZXQoS0l0ZW1MaXN0V2lkZ2V0SW5mb3JtYW50KiBpbmZvcm1h bnQsIFFHcmFwaGljc0kKICAgICBtX2hvdmVyQ2FjaGUoMCksCiAgICAgbV9ob3ZlckFuaW1hdGlv bigwKSwKICAgICBtX3NlbGVjdGlvblRvZ2dsZSgwKSwKLSAgICBtX2VkaXRlZFJvbGUoKQorICAg IG1fZWRpdGVkUm9sZSgpLAorICAgIG1fa2xvb2tUb2dnbGUoMCkKIHsKIH0KIApAQCAtNzYsNiAr NzksOSBAQCB2b2lkIEtJdGVtTGlzdFdpZGdldDo6c2V0SW5kZXgoaW50IGluZGV4KQogICAgICAg ICBkZWxldGUgbV9zZWxlY3Rpb25Ub2dnbGU7CiAgICAgICAgIG1fc2VsZWN0aW9uVG9nZ2xlID0g MDsKIAorICAgICAgICBkZWxldGUgbV9rbG9va1RvZ2dsZTsKKyAgICAgICAgbV9rbG9va1RvZ2ds ZSA9IDA7CisKICAgICAgICAgaWYgKG1faG92ZXJBbmltYXRpb24pIHsKICAgICAgICAgICAgIG1f aG92ZXJBbmltYXRpb24tPnN0b3AoKTsKICAgICAgICAgICAgIG1faG92ZXJPcGFjaXR5ID0gMDsK QEAgLTI2Myw2ICsyNjksOSBAQCB2b2lkIEtJdGVtTGlzdFdpZGdldDo6c2V0SG92ZXJlZChib29s IGhvdmVyZWQpCiAgICAgICAgIGlmIChtX2VuYWJsZWRTZWxlY3Rpb25Ub2dnbGUgJiYgIShRQXBw bGljYXRpb246Om1vdXNlQnV0dG9ucygpICYgUXQ6OkxlZnRCdXR0b24pKSB7CiAgICAgICAgICAg ICBpbml0aWFsaXplU2VsZWN0aW9uVG9nZ2xlKCk7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKG1f ZW5hYmxlZEtsb29rVG9nZ2xlICYmICEoUUFwcGxpY2F0aW9uOjptb3VzZUJ1dHRvbnMoKSAmIFF0 OjpMZWZ0QnV0dG9uKSkgeworICAgICAgICAgICAgaW5pdGlhbGl6ZUtsb29rVG9nZ2xlKCk7Cisg ICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBtX2hvdmVyQW5pbWF0aW9uLT5zZXRTdGFy dFZhbHVlKGhvdmVyT3BhY2l0eSgpKTsKICAgICAgICAgbV9ob3ZlckFuaW1hdGlvbi0+c2V0RW5k VmFsdWUoMC4wKTsKQEAgLTMwNiw2ICszMTUsMTkgQEAgYm9vbCBLSXRlbUxpc3RXaWRnZXQ6OmVu YWJsZWRTZWxlY3Rpb25Ub2dnbGUoKSBjb25zdAogICAgIHJldHVybiBtX2VuYWJsZWRTZWxlY3Rp b25Ub2dnbGU7CiB9CiAKK3ZvaWQgS0l0ZW1MaXN0V2lkZ2V0OjpzZXRFbmFibGVkS2xvb2tUb2dn bGUoYm9vbCBlbmFibGUpCit7CisgICAgaWYgKG1fZW5hYmxlZEtsb29rVG9nZ2xlICE9IGVuYWJs ZSkgeworICAgICAgICBtX2VuYWJsZWRLbG9va1RvZ2dsZSA9IGVuYWJsZTsKKyAgICAgICAgdXBk YXRlKCk7CisgICAgfQorfQorCitib29sIEtJdGVtTGlzdFdpZGdldDo6ZW5hYmxlZEtsb29rVG9n Z2xlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9lbmFibGVkS2xvb2tUb2dnbGU7Cit9CisKIHZv aWQgS0l0ZW1MaXN0V2lkZ2V0OjpzZXRTaWJsaW5nc0luZm9ybWF0aW9uKGNvbnN0IFFCaXRBcnJh eSYgc2libGluZ3MpCiB7CiAgICAgY29uc3QgUUJpdEFycmF5IHByZXZpb3VzID0gbV9zaWJsaW5n c0luZm87CkBAIC0zNTUsNiArMzc3LDEyIEBAIFFSZWN0RiBLSXRlbUxpc3RXaWRnZXQ6OnNlbGVj dGlvblRvZ2dsZVJlY3QoKSBjb25zdAogICAgIHJldHVybiBRUmVjdEYoKTsKIH0KIAorUVJlY3RG IEtJdGVtTGlzdFdpZGdldDo6a2xvb2tUb2dnbGVSZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4g UVJlY3RGKCk7Cit9CisKKwogUVJlY3RGIEtJdGVtTGlzdFdpZGdldDo6ZXhwYW5zaW9uVG9nZ2xl UmVjdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFFSZWN0RigpOwpAQCAtNDYzLDYgKzQ5MSw4IEBA IHZvaWQgS0l0ZW1MaXN0V2lkZ2V0OjpzbG90SG92ZXJBbmltYXRpb25GaW5pc2hlZCgpCiAgICAg aWYgKCFtX2hvdmVyZWQpIHsKICAgICAgICAgZGVsZXRlIG1fc2VsZWN0aW9uVG9nZ2xlOwogICAg ICAgICBtX3NlbGVjdGlvblRvZ2dsZSA9IDA7CisgICAgICAgIGRlbGV0ZSBtX2tsb29rVG9nZ2xl OworICAgICAgICBtX2tsb29rVG9nZ2xlID0gMDsKICAgICB9CiB9CiAKQEAgLTQ4MSwxMiArNTEx LDI5IEBAIHZvaWQgS0l0ZW1MaXN0V2lkZ2V0Ojppbml0aWFsaXplU2VsZWN0aW9uVG9nZ2xlKCkK ICAgICBtX3NlbGVjdGlvblRvZ2dsZS0+c2V0Q2hlY2tlZChpc1NlbGVjdGVkKCkpOwogfQogCit2 b2lkIEtJdGVtTGlzdFdpZGdldDo6aW5pdGlhbGl6ZUtsb29rVG9nZ2xlKCkKK3sKKyAgICBRX0FT U0VSVChtX2VuYWJsZWRLbG9va1RvZ2dsZSk7CisKKyAgICBpZiAoIW1fa2xvb2tUb2dnbGUpIHsK KyAgICAgICAgbV9rbG9va1RvZ2dsZSA9IG5ldyBLSXRlbUxpc3RLbG9va1RvZ2dsZSh0aGlzKTsK KyAgICB9CisKKyAgICBjb25zdCBRUmVjdEYgdG9nZ2xlUmVjdCA9IGtsb29rVG9nZ2xlUmVjdCgp OzsKKyAgICBtX2tsb29rVG9nZ2xlLT5zZXRQb3ModG9nZ2xlUmVjdC50b3BMZWZ0KCkpOworICAg IG1fa2xvb2tUb2dnbGUtPnJlc2l6ZSh0b2dnbGVSZWN0LnNpemUoKSk7CisKK30KKwogdm9pZCBL SXRlbUxpc3RXaWRnZXQ6OnNldEhvdmVyT3BhY2l0eShxcmVhbCBvcGFjaXR5KQogewogICAgIG1f aG92ZXJPcGFjaXR5ID0gb3BhY2l0eTsKICAgICBpZiAobV9zZWxlY3Rpb25Ub2dnbGUpIHsKICAg ICAgICAgbV9zZWxlY3Rpb25Ub2dnbGUtPnNldE9wYWNpdHkob3BhY2l0eSk7CiAgICAgfQorICAg IGlmIChtX2tsb29rVG9nZ2xlKSB7CisgICAgICAgIG1fa2xvb2tUb2dnbGUtPnNldE9wYWNpdHko b3BhY2l0eSk7CisgICAgfQogCiAgICAgaWYgKG1faG92ZXJPcGFjaXR5IDw9IDAuMCkgewogICAg ICAgICBkZWxldGUgbV9ob3ZlckNhY2hlOwpkaWZmIC0tZ2l0IGEvZG9scGhpbi9zcmMva2l0ZW12 aWV3cy9raXRlbWxpc3R3aWRnZXQuaCBiL2RvbHBoaW4vc3JjL2tpdGVtdmlld3Mva2l0ZW1saXN0 d2lkZ2V0LmgKaW5kZXggNTUxODFmYS4uN2ZkNTkzYyAxMDA2NDQKLS0tIGEvZG9scGhpbi9zcmMv a2l0ZW12aWV3cy9raXRlbWxpc3R3aWRnZXQuaAorKysgYi9kb2xwaGluL3NyYy9raXRlbXZpZXdz L2tpdGVtbGlzdHdpZGdldC5oCkBAIC0zMyw2ICszMyw3IEBACiAKIGNsYXNzIEtJdGVtTGlzdFNl bGVjdGlvblRvZ2dsZTsKIGNsYXNzIEtJdGVtTGlzdFZpZXc7CitjbGFzcyBLSXRlbUxpc3RLbG9v a1RvZ2dsZTsKIGNsYXNzIFFQcm9wZXJ0eUFuaW1hdGlvbjsKIAogLyoqCkBAIC0xMTQsNiArMTE1 LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RW5hYmxlZFNlbGVjdGlvblRvZ2dsZShib29sIGVu YWJsZWQpOwogICAgIGJvb2wgZW5hYmxlZFNlbGVjdGlvblRvZ2dsZSgpIGNvbnN0OwogCisgICAg dm9pZCBzZXRFbmFibGVkS2xvb2tUb2dnbGUoYm9vbCBlbmFibGUpOworICAgIGJvb2wgZW5hYmxl ZEtsb29rVG9nZ2xlKCkgY29uc3Q7CisKICAgICAvKioKICAgICAgKiBTZXRzIHRoZSBzaWJsaW5n IGluZm9ybWF0aW9uIGZvciB0aGUgaXRlbSBhbmQgYWxsIG9mIGl0cyBwYXJlbnRzLgogICAgICAq IFRoZSBzaWJsaW5nIGluZm9ybWF0aW9uIG9mIHRoZSB1cHBlciBtb3N0IHBhcmVudCBpcyByZXBy ZXNlbnRlZCBieQpAQCAtMTgxLDYgKzE4NSwxMiBAQCBwdWJsaWM6CiAgICAgICovCiAgICAgdmly dHVhbCBRUGl4bWFwIGNyZWF0ZURyYWdQaXhtYXAoY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJ dGVtKiBvcHRpb24sIFFXaWRnZXQqIHdpZGdldCA9IDApOwogCisgICAgIC8qKgorICAgICAqIEBy ZXR1cm4gUmVjdGFuZ2xlIGZvciB0aGUga2xvb2stdG9nZ2xlIHRoYXQgaXMgdXNlZCBmb3IgaXRl bSBwcmV2aWV3LgorICAgICAqLworICAgIHZpcnR1YWwgUVJlY3RGIGtsb29rVG9nZ2xlUmVjdCgp IGNvbnN0OworCisKIHNpZ25hbHM6CiAgICAgdm9pZCByb2xlRWRpdGluZ0NhbmNlbGVkKGludCBp bmRleCwgY29uc3QgUUJ5dGVBcnJheSYgcm9sZSwgY29uc3QgUVZhcmlhbnQmIHZhbHVlKTsKICAg ICB2b2lkIHJvbGVFZGl0aW5nRmluaXNoZWQoaW50IGluZGV4LCBjb25zdCBRQnl0ZUFycmF5JiBy b2xlLCBjb25zdCBRVmFyaWFudCYgdmFsdWUpOwpAQCAtMjExLDYgKzIyMSw3IEBAIHByaXZhdGUg c2xvdHM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplU2VsZWN0aW9uVG9nZ2xlKCk7 CisgICAgdm9pZCBpbml0aWFsaXplS2xvb2tUb2dnbGUoKTsKICAgICB2b2lkIHNldEhvdmVyT3Bh Y2l0eShxcmVhbCBvcGFjaXR5KTsKICAgICB2b2lkIGNsZWFySG92ZXJDYWNoZSgpOwogICAgIHZv aWQgZHJhd0l0ZW1TdHlsZU9wdGlvbihRUGFpbnRlciogcGFpbnRlciwgUVdpZGdldCogd2lkZ2V0 LCBRU3R5bGU6OlN0YXRlIHN0eWxlU3RhdGUpOwpAQCAtMjI1LDYgKzIzNiw3IEBAIHByaXZhdGU6 CiAgICAgYm9vbCBtX2hvdmVyZWQ7CiAgICAgYm9vbCBtX2FsdGVybmF0ZUJhY2tncm91bmQ7CiAg ICAgYm9vbCBtX2VuYWJsZWRTZWxlY3Rpb25Ub2dnbGU7CisgICAgYm9vbCBtX2VuYWJsZWRLbG9v a1RvZ2dsZTsKICAgICBRSGFzaDxRQnl0ZUFycmF5LCBRVmFyaWFudD4gbV9kYXRhOwogICAgIFFM aXN0PFFCeXRlQXJyYXk+IG1fdmlzaWJsZVJvbGVzOwogICAgIFFIYXNoPFFCeXRlQXJyYXksIHFy ZWFsPiBtX2NvbHVtbldpZHRoczsKQEAgLTIzOCw2ICsyNTAsOCBAQCBwcml2YXRlOgogICAgIEtJ dGVtTGlzdFNlbGVjdGlvblRvZ2dsZSogbV9zZWxlY3Rpb25Ub2dnbGU7CiAKICAgICBRQnl0ZUFy cmF5IG1fZWRpdGVkUm9sZTsKKyAgICAKKyAgICBLSXRlbUxpc3RLbG9va1RvZ2dsZSogbV9rbG9v a1RvZ2dsZTsKIH07CiAKIGlubGluZSBjb25zdCBLSXRlbUxpc3RXaWRnZXRJbmZvcm1hbnQqIEtJ dGVtTGlzdFdpZGdldDo6aW5mb3JtYW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL2RvbHBoaW4vc3Jj L2tpdGVtdmlld3Mva3N0YW5kYXJkaXRlbWxpc3R3aWRnZXQuaCBiL2RvbHBoaW4vc3JjL2tpdGVt dmlld3Mva3N0YW5kYXJkaXRlbWxpc3R3aWRnZXQuaAppbmRleCA3ODc3MjJkLi4zYmM5MjI4IDEw MDY0NAotLS0gYS9kb2xwaGluL3NyYy9raXRlbXZpZXdzL2tzdGFuZGFyZGl0ZW1saXN0d2lkZ2V0 LmgKKysrIGIvZG9scGhpbi9zcmMva2l0ZW12aWV3cy9rc3RhbmRhcmRpdGVtbGlzdHdpZGdldC5o CkBAIC0xNTcsNiArMTU3LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCByZXNpemVF dmVudChRR3JhcGhpY3NTY2VuZVJlc2l6ZUV2ZW50KiBldmVudCk7CiAgICAgdmlydHVhbCB2b2lk IHNob3dFdmVudChRU2hvd0V2ZW50KiBldmVudCk7CiAgICAgdmlydHVhbCB2b2lkIGhpZGVFdmVu dChRSGlkZUV2ZW50KiBldmVudCk7CisgICAgdm9pZCB0cmlnZ2VyQ2FjaGVSZWZyZXNoaW5nKCk7 CiAKIHByaXZhdGUgc2xvdHM6CiAgICAgdm9pZCBzbG90Q3V0SXRlbXNDaGFuZ2VkKCk7CkBAIC0x NjQsNyArMTY1LDYgQEAgcHJpdmF0ZSBzbG90czoKICAgICB2b2lkIHNsb3RSb2xlRWRpdGluZ0Zp bmlzaGVkKGludCBpbmRleCwgY29uc3QgUUJ5dGVBcnJheSYgcm9sZSwgY29uc3QgUVZhcmlhbnQm IHZhbHVlKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHRyaWdnZXJDYWNoZVJlZnJlc2hpbmcoKTsK ICAgICB2b2lkIHVwZGF0ZUV4cGFuc2lvbkFyZWEoKTsKICAgICB2b2lkIHVwZGF0ZVBpeG1hcENh Y2hlKCk7CiAKZGlmZiAtLWdpdCBhL2RvbHBoaW4vc3JjL3NldHRpbmdzL2RvbHBoaW5fZ2VuZXJh bHNldHRpbmdzLmtjZmcgYi9kb2xwaGluL3NyYy9zZXR0aW5ncy9kb2xwaGluX2dlbmVyYWxzZXR0 aW5ncy5rY2ZnCmluZGV4IDlmMjYxZGMuLjY3ZDljMzAgMTAwNjQ0Ci0tLSBhL2RvbHBoaW4vc3Jj L3NldHRpbmdzL2RvbHBoaW5fZ2VuZXJhbHNldHRpbmdzLmtjZmcKKysrIGIvZG9scGhpbi9zcmMv c2V0dGluZ3MvZG9scGhpbl9nZW5lcmFsc2V0dGluZ3Mua2NmZwpAQCAtNTYsNiArNTYsMTAgQEAK ICAgICAgICAgICAgIDxsYWJlbD5TaG93IHNlbGVjdGlvbiB0b2dnbGU8L2xhYmVsPgogICAgICAg ICAgICAgPGRlZmF1bHQ+dHJ1ZTwvZGVmYXVsdD4KICAgICAgICAgPC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IG5hbWU9IlNob3dLbG9va1RvZ2dsZSIgdHlwZT0iQm9vbCI+CisgICAgICAgICAgICA8 bGFiZWw+U2hvdyBwcmV2aWV3IHRvZ2dsZTwvbGFiZWw+CisgICAgICAgICAgICA8ZGVmYXVsdD5m YWxzZTwvZGVmYXVsdD4KKyAgICAgICAgPC9lbnRyeT4KICAgICAgICAgPGVudHJ5IG5hbWU9IlNo b3dUb29sVGlwcyIgdHlwZT0iQm9vbCI+CiAgICAgICAgICAgICA8bGFiZWw+U2hvdyB0b29sdGlw czwvbGFiZWw+CiAgICAgICAgICAgICA8ZGVmYXVsdD5mYWxzZTwvZGVmYXVsdD4KZGlmZiAtLWdp dCBhL2RvbHBoaW4vc3JjL3NldHRpbmdzL2dlbmVyYWwvYmVoYXZpb3JzZXR0aW5nc3BhZ2UuY3Bw IGIvZG9scGhpbi9zcmMvc2V0dGluZ3MvZ2VuZXJhbC9iZWhhdmlvcnNldHRpbmdzcGFnZS5jcHAK aW5kZXggMWFkZTkzYy4uMGYzZWQ2ZiAxMDA2NDQKLS0tIGEvZG9scGhpbi9zcmMvc2V0dGluZ3Mv Z2VuZXJhbC9iZWhhdmlvcnNldHRpbmdzcGFnZS5jcHAKKysrIGIvZG9scGhpbi9zcmMvc2V0dGlu Z3MvZ2VuZXJhbC9iZWhhdmlvcnNldHRpbmdzcGFnZS5jcHAKQEAgLTQyLDcgKzQyLDggQEAgQmVo YXZpb3JTZXR0aW5nc1BhZ2U6OkJlaGF2aW9yU2V0dGluZ3NQYWdlKGNvbnN0IEtVcmwmIHVybCwg UVdpZGdldCogcGFyZW50KSA6CiAgICAgbV9nbG9iYWxWaWV3UHJvcHMoMCksCiAgICAgbV9zaG93 VG9vbFRpcHMoMCksCiAgICAgbV9zaG93U2VsZWN0aW9uVG9nZ2xlKDApLAotICAgIG1fbmF0dXJh bFNvcnRpbmcoMCkKKyAgICBtX25hdHVyYWxTb3J0aW5nKDApLAorICAgIG1fc2hvd0tsb29rVG9n Z2xlKDApCiB7CiAgICAgUVZCb3hMYXlvdXQqIHRvcExheW91dCA9IG5ldyBRVkJveExheW91dCh0 aGlzKTsKIApAQCAtNjcsOCArNjgsMTMgQEAgQmVoYXZpb3JTZXR0aW5nc1BhZ2U6OkJlaGF2aW9y U2V0dGluZ3NQYWdlKGNvbnN0IEtVcmwmIHVybCwgUVdpZGdldCogcGFyZW50KSA6CiAgICAgbV9u YXR1cmFsU29ydGluZyA9IG5ldyBRQ2hlY2tCb3goaTE4bmMoIm9wdGlvbjpjaGVjayIsICJOYXR1 cmFsIHNvcnRpbmcgb2YgaXRlbXMiKSwgdGhpcyk7CiAKICAgICB0b3BMYXlvdXQtPmFkZFdpZGdl dCh2aWV3UHJvcHNCb3gpOworIAorICAgICAgIC8vICdTaG93IGtsb29rIHRvZ2dsZScKKyAgICAg bV9zaG93S2xvb2tUb2dnbGUgPSBuZXcgUUNoZWNrQm94KGkxOG5jKCJAb3B0aW9uOmNoZWNrIiwg IlNob3cgcHJldmlldyBtYXJrZXIiKSwgdGhpcyk7CisKICAgICB0b3BMYXlvdXQtPmFkZFdpZGdl dChtX3Nob3dUb29sVGlwcyk7CiAgICAgdG9wTGF5b3V0LT5hZGRXaWRnZXQobV9zaG93U2VsZWN0 aW9uVG9nZ2xlKTsKKyAgICB0b3BMYXlvdXQtPmFkZFdpZGdldChtX3Nob3dLbG9va1RvZ2dsZSk7 CiAgICAgdG9wTGF5b3V0LT5hZGRXaWRnZXQobV9uYXR1cmFsU29ydGluZyk7CiAgICAgdG9wTGF5 b3V0LT5hZGRTdHJldGNoKCk7CiAKQEAgLTc4LDYgKzg0LDcgQEAgQmVoYXZpb3JTZXR0aW5nc1Bh Z2U6OkJlaGF2aW9yU2V0dGluZ3NQYWdlKGNvbnN0IEtVcmwmIHVybCwgUVdpZGdldCogcGFyZW50 KSA6CiAgICAgY29ubmVjdChtX2dsb2JhbFZpZXdQcm9wcywgU0lHTkFMKHRvZ2dsZWQoYm9vbCkp LCB0aGlzLCBTSUdOQUwoY2hhbmdlZCgpKSk7CiAgICAgY29ubmVjdChtX3Nob3dUb29sVGlwcywg U0lHTkFMKHRvZ2dsZWQoYm9vbCkpLCB0aGlzLCBTSUdOQUwoY2hhbmdlZCgpKSk7CiAgICAgY29u bmVjdChtX3Nob3dTZWxlY3Rpb25Ub2dnbGUsIFNJR05BTCh0b2dnbGVkKGJvb2wpKSwgdGhpcywg U0lHTkFMKGNoYW5nZWQoKSkpOworICAgIGNvbm5lY3QobV9zaG93S2xvb2tUb2dnbGUsIFNJR05B TCh0b2dnbGVkKGJvb2wpKSwgdGhpcywgU0lHTkFMKGNoYW5nZWQoKSkpOwogICAgIGNvbm5lY3Qo bV9uYXR1cmFsU29ydGluZywgU0lHTkFMKHRvZ2dsZWQoYm9vbCkpLCB0aGlzLCBTSUdOQUwoY2hh bmdlZCgpKSk7CiB9CiAKQEAgLTEwNiw2ICsxMTMsNyBAQCB2b2lkIEJlaGF2aW9yU2V0dGluZ3NQ YWdlOjphcHBseVNldHRpbmdzKCkKICAgICAgICAgZ2xvYmFsUHJvcHMuc2V0RGlyUHJvcGVydGll cyhwcm9wcyk7CiAgICAgfQogCisgICAgc2V0dGluZ3MtPnNldFNob3dLbG9va1RvZ2dsZShtX3No b3dLbG9va1RvZ2dsZS0+aXNDaGVja2VkKCkpOwogICAgIGNvbnN0IGJvb2wgbmF0dXJhbFNvcnRp bmcgPSBtX25hdHVyYWxTb3J0aW5nLT5pc0NoZWNrZWQoKTsKICAgICBpZiAoS0dsb2JhbFNldHRp bmdzOjpuYXR1cmFsU29ydGluZygpICE9IG5hdHVyYWxTb3J0aW5nKSB7CiAgICAgICAgIEtDb25m aWdHcm91cCBncm91cChLR2xvYmFsOjpjb25maWcoKSwgIktERSIpOwpAQCAtMTMwLDYgKzEzOCw3 IEBAIHZvaWQgQmVoYXZpb3JTZXR0aW5nc1BhZ2U6OmxvYWRTZXR0aW5ncygpCiAKICAgICBtX3No b3dUb29sVGlwcy0+c2V0Q2hlY2tlZChHZW5lcmFsU2V0dGluZ3M6OnNob3dUb29sVGlwcygpKTsK ICAgICBtX3Nob3dTZWxlY3Rpb25Ub2dnbGUtPnNldENoZWNrZWQoR2VuZXJhbFNldHRpbmdzOjpz aG93U2VsZWN0aW9uVG9nZ2xlKCkpOworICAgIG1fc2hvd0tsb29rVG9nZ2xlLT5zZXRDaGVja2Vk KEdlbmVyYWxTZXR0aW5nczo6c2hvd0tsb29rVG9nZ2xlKCkpOwogICAgIG1fbmF0dXJhbFNvcnRp bmctPnNldENoZWNrZWQoS0dsb2JhbFNldHRpbmdzOjpuYXR1cmFsU29ydGluZygpKTsKIH0KIApk aWZmIC0tZ2l0IGEvZG9scGhpbi9zcmMvc2V0dGluZ3MvZ2VuZXJhbC9iZWhhdmlvcnNldHRpbmdz cGFnZS5oIGIvZG9scGhpbi9zcmMvc2V0dGluZ3MvZ2VuZXJhbC9iZWhhdmlvcnNldHRpbmdzcGFn ZS5oCmluZGV4IDM5ODk4NjIuLjhlODEwZmUgMTAwNjQ0Ci0tLSBhL2RvbHBoaW4vc3JjL3NldHRp bmdzL2dlbmVyYWwvYmVoYXZpb3JzZXR0aW5nc3BhZ2UuaAorKysgYi9kb2xwaGluL3NyYy9zZXR0 aW5ncy9nZW5lcmFsL2JlaGF2aW9yc2V0dGluZ3NwYWdlLmgKQEAgLTU4LDYgKzU4LDcgQEAgcHJp dmF0ZToKICAgICBRTGFiZWwqIG1fY29uZmlndXJlVG9vbFRpcHM7CiAgICAgUUNoZWNrQm94KiBt X3Nob3dTZWxlY3Rpb25Ub2dnbGU7CiAgICAgUUNoZWNrQm94KiBtX25hdHVyYWxTb3J0aW5nOwor ICAgIFFDaGVja0JveCogbV9zaG93S2xvb2tUb2dnbGU7CiB9OwogCiAjZW5kaWYKZGlmZiAtLWdp dCBhL2RvbHBoaW4vc3JjL3ZpZXdzL2RvbHBoaW5pdGVtbGlzdHZpZXcuY3BwIGIvZG9scGhpbi9z cmMvdmlld3MvZG9scGhpbml0ZW1saXN0dmlldy5jcHAKaW5kZXggMDM5YjVmMi4uODE2OTRkYyAx MDA2NDQKLS0tIGEvZG9scGhpbi9zcmMvdmlld3MvZG9scGhpbml0ZW1saXN0dmlldy5jcHAKKysr IGIvZG9scGhpbi9zcmMvdmlld3MvZG9scGhpbml0ZW1saXN0dmlldy5jcHAKQEAgLTQxLDYgKzQx LDcgQEAgRG9scGhpbkl0ZW1MaXN0Vmlldzo6RG9scGhpbkl0ZW1MaXN0VmlldyhRR3JhcGhpY3NX aWRnZXQqIHBhcmVudCkgOgogICAgIEtGaWxlSXRlbUxpc3RWaWV3KHBhcmVudCksCiAgICAgbV96 b29tTGV2ZWwoMCkKIHsKKyAgICBzZXRFbmFibGVkS2xvb2tUb2dnbGVzKEdlbmVyYWxTZXR0aW5n czo6c2hvd0tsb29rVG9nZ2xlKCkpOwogICAgIHVwZGF0ZUZvbnQoKTsKICAgICB1cGRhdGVHcmlk U2l6ZSgpOwogfQpAQCAtODksNiArOTAsNyBAQCB2b2lkIERvbHBoaW5JdGVtTGlzdFZpZXc6OnJl YWRTZXR0aW5ncygpCiAgICAgYmVnaW5UcmFuc2FjdGlvbigpOwogCiAgICAgc2V0RW5hYmxlZFNl bGVjdGlvblRvZ2dsZXMoR2VuZXJhbFNldHRpbmdzOjpzaG93U2VsZWN0aW9uVG9nZ2xlKCkpOwor ICAgIHNldEVuYWJsZWRLbG9va1RvZ2dsZXMoR2VuZXJhbFNldHRpbmdzOjpzaG93S2xvb2tUb2dn bGUoKSk7CiAKICAgICBjb25zdCBib29sIGV4cGFuZGFibGVGb2xkZXJzID0gKGl0ZW1MYXlvdXQo KSA9PSBLRmlsZUl0ZW1MaXN0Vmlldzo6RGV0YWlsc0xheW91dCkgJiYKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRGV0YWlsc01vZGVTZXR0aW5nczo6ZXhwYW5kYWJsZUZvbGRl cnMoKTsKZGlmZiAtLWdpdCBhL2RvbHBoaW4vc3JjL3ZpZXdzL2RvbHBoaW52aWV3LmNwcCBiL2Rv bHBoaW4vc3JjL3ZpZXdzL2RvbHBoaW52aWV3LmNwcAppbmRleCA4MDUwNDE1Li44NmRmZjkxIDEw MDY0NAotLS0gYS9kb2xwaGluL3NyYy92aWV3cy9kb2xwaGludmlldy5jcHAKKysrIGIvZG9scGhp bi9zcmMvdmlld3MvZG9scGhpbnZpZXcuY3BwCkBAIC0xNDgsNiArMTQ4LDcgQEAgRG9scGhpblZp ZXc6OkRvbHBoaW5WaWV3KGNvbnN0IEtVcmwmIHVybCwgUVdpZGdldCogcGFyZW50KSA6CiAgICAg Y29ubmVjdChjb250cm9sbGVyLCBTSUdOQUwoaXRlbVVuaG92ZXJlZChpbnQpKSwgdGhpcywgU0xP VChzbG90SXRlbVVuaG92ZXJlZChpbnQpKSk7CiAgICAgY29ubmVjdChjb250cm9sbGVyLCBTSUdO QUwoaXRlbURyb3BFdmVudChpbnQsUUdyYXBoaWNzU2NlbmVEcmFnRHJvcEV2ZW50KikpLCB0aGlz LCBTTE9UKHNsb3RJdGVtRHJvcEV2ZW50KGludCxRR3JhcGhpY3NTY2VuZURyYWdEcm9wRXZlbnQq KSkpOwogICAgIGNvbm5lY3QoY29udHJvbGxlciwgU0lHTkFMKG1vZGVsQ2hhbmdlZChLSXRlbU1v ZGVsQmFzZSosS0l0ZW1Nb2RlbEJhc2UqKSksIHRoaXMsIFNMT1Qoc2xvdE1vZGVsQ2hhbmdlZChL SXRlbU1vZGVsQmFzZSosS0l0ZW1Nb2RlbEJhc2UqKSkpOworICAgIGNvbm5lY3QoY29udHJvbGxl ciwgU0lHTkFMKGtsb29rVHJpZ2dlcigpKSwgdGhpcywgU0lHTkFMKGtsb29rVHJpZ2dlcigpKSk7 CiAKICAgICBjb25uZWN0KG1fbW9kZWwsIFNJR05BTChkaXJlY3RvcnlMb2FkaW5nU3RhcnRlZCgp KSwgICAgICAgdGhpcywgU0xPVChzbG90RGlyZWN0b3J5TG9hZGluZ1N0YXJ0ZWQoKSkpOwogICAg IGNvbm5lY3QobV9tb2RlbCwgU0lHTkFMKGRpcmVjdG9yeUxvYWRpbmdDb21wbGV0ZWQoKSksICAg ICB0aGlzLCBTTE9UKHNsb3REaXJlY3RvcnlMb2FkaW5nQ29tcGxldGVkKCkpKTsKQEAgLTE1Mjgs NCArMTUyOSwxNCBAQCBLVXJsIERvbHBoaW5WaWV3Ojp2aWV3UHJvcGVydGllc1VybCgpIGNvbnN0 CiAgICAgcmV0dXJuIHVybDsKIH0KIAorS0ZpbGVJdGVtTGlzdCBEb2xwaGluVmlldzo6c29ydGVk SXRlbXMoKSBjb25zdAoreworICAgIEtGaWxlSXRlbUxpc3QgIGxpc3Q7CisgICAgZm9yIChpbnQg aSA9IDA7IGkgPCBtX21vZGVsLT5jb3VudCgpOyBpKyspIHsKKyAgICAgICAgbGlzdC5hcHBlbmQo bV9tb2RlbC0+ZmlsZUl0ZW0oaSkpOworICAgIH0KKyAgICByZXR1cm4gbGlzdDsKK30KKworCiAj aW5jbHVkZSAiZG9scGhpbnZpZXcubW9jIgpkaWZmIC0tZ2l0IGEvZG9scGhpbi9zcmMvdmlld3Mv ZG9scGhpbnZpZXcuaCBiL2RvbHBoaW4vc3JjL3ZpZXdzL2RvbHBoaW52aWV3LmgKaW5kZXggMTBm NjNjNS4uYTUzZWU4YSAxMDA2NDQKLS0tIGEvZG9scGhpbi9zcmMvdmlld3MvZG9scGhpbnZpZXcu aAorKysgYi9kb2xwaGluL3NyYy92aWV3cy9kb2xwaGludmlldy5oCkBAIC0yOTUsNiArMjk1LDgg QEAgcHVibGljOgogICAgICAqLwogICAgIHZvaWQgc2V0Vmlld1Byb3BlcnRpZXNDb250ZXh0KGNv bnN0IFFTdHJpbmcmIGNvbnRleHQpOwogICAgIFFTdHJpbmcgdmlld1Byb3BlcnRpZXNDb250ZXh0 KCkgY29uc3Q7CisgICAgCisgICAgS0ZpbGVJdGVtTGlzdCBzb3J0ZWRJdGVtcygpIGNvbnN0Owog CiBwdWJsaWMgc2xvdHM6CiAgICAgLyoqCkBAIC01MDYsNiArNTA4LDggQEAgc2lnbmFsczoKICAg ICAgKi8KICAgICB2b2lkIHdyaXRlU3RhdGVDaGFuZ2VkKGJvb2wgaXNGb2xkZXJXcml0YWJsZSk7 CiAKKyAgICB2b2lkIGtsb29rVHJpZ2dlcigpOworCiAgICAgLyoqCiAgICAgICogSXMgZW1pdHRl ZCBpZiB0aGUgVVJMIHNob3VsZCBiZSBjaGFuZ2VkIHRvIHRoZSBwcmV2aW91cyBVUkwgb2YgdGhl CiAgICAgICogaGlzdG9yeSAoZS5nLiBiZWNhdXNlIHRoZSAiYmFjayItbW91c2VidXR0b24gaGFz IGJlZW4gcHJlc3NlZCkuCg== --20cf307d05b013b10804c86ad35f--