<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>21328</bug_id>
          
          <creation_ts>2008-10-02 23:40:56 -0700</creation_ts>
          <short_desc>Make invalidation of widgets more cross-platform</short_desc>
          <delta_ts>2008-10-03 00:06:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>93856</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-10-02 23:40:56 -0700</bug_when>
    <thetext>Make invalidation of widgets more cross-platform</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93857</commentid>
    <comment_count>1</comment_count>
      <attachid>24041</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-10-02 23:45:01 -0700</bug_when>
    <thetext>Created attachment 24041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93858</commentid>
    <comment_count>2</comment_count>
      <attachid>24041</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-10-03 00:00:55 -0700</bug_when>
    <thetext>Comment on attachment 24041
Patch

Couple of nits.

+    ::InvalidateRect(m_popup, &amp;r,false);
Missing space.

+/*
 void Widget::invalidateRect(const IntRect&amp; r)
Please remove this commented out code.

+    // Do windowless plugin invalidation.
+    invalidateWindowlessPluginRect(rect);
The comment doesn&apos;t really add anything here.


+    PluginWidget(NSView *view = 0)
+    : Widget(view)
The initializer list should be indented more.

+        [platformWidget() setNeedsDisplayInRect: rect];
Extra space.

-    : Widget(view)
+    : PluginWidget(view)
Initialize list issue again.

r=me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93859</commentid>
    <comment_count>3</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-10-03 00:06:49 -0700</bug_when>
    <thetext>Fixed in r37223.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24041</attachid>
            <date>2008-10-02 23:45:01 -0700</date>
            <delta_ts>2008-10-03 00:00:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>32713</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNzIyMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjAgQEAKKzIwMDgtMTAtMDIgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMy
OAorICAgICAgICAKKyAgICAgICAgTWFrZSB3aWRnZXQgaW52YWxpZGF0aW9uIG1vcmUgY3Jvc3Mt
cGxhdGZvcm0uCisgICAgICAgIAorICAgICAgICAoMSkgTWFrZSBpbnZhbGlkYXRlUmVjdCBhIHB1
cmUgdmlydHVhbCBmdW5jdGlvbiBvbiBXaWRnZXQuICBBbGwgbGVhZiB3aWRnZXRzIG11c3Qgbm93
IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uLgorICAgICAgICAKKyAgICAgICAgKDIpIFNjcm9sbGJh
cnMgbm93IHNlbmQgaW52YWxpZGF0aW9ucyB0aHJvdWdoIHRoZSBTY3JvbGxiYXJDbGllbnQuICB3
aW5kb3dDbGlwUmVjdCBvbiBTY3JvbGxiYXJDbGllbnQgaGFzIGJlZW4gcmVtb3ZlZCBhbmQgcmVw
bGFjZWQgd2l0aCB0aGlzIGludmFsaWRhdGlvbiBjYWxsLgorICAgICAgICBUaGlzIGFsbG93cyBh
bGwgc2Nyb2xsYmFyIGludmFsaWRhdGlvbnMgdG8gZ28gdGhyb3VnaCB0aGUgcmVuZGVyIHRyZWUg
c28gdGhhdCB0cmFuc2Zvcm1zIGFuZCByZWZsZWN0aW9ucyB3aWxsIGJlIHJlc3BlY3RlZC4KKyAg
ICAgICAgCisgICAgICAgICgzKSBQbHVnaW5zIG5vdyBoYXZlIHRoZSBuYXRpdmUgd2luZG93IGlu
dmFsaWRhdGlvbiBjb2RlIGZvciB3aW5kb3dlZCBwbHVnaW5zLiAgV2luZG93bGVzcyBwbHVnaW5z
IGRvIGEgcmVwYWludFJlY3RhbmdsZSBvbiB0aGUgcGx1Z2luJ3MgcmVuZGVyZXIuCisgICAgICAg
IAorICAgICAgICAoNCkgRnJhbWVWaWV3cyBub3cgZG8gYSByZXBhaW50UmVjdGFuZ2xlIG9uIHRo
ZWlyIG93bmVyIGVsZW1lbnQncyByZW5kZXJlci4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuYmFzZS5leHA6CisgICAgICAgICogcGFn
ZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjppbnZhbGlkYXRl
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmludmFsaWRhdGVTY3JvbGxiYXJS
ZWN0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bv
cHVwTWVudS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbFZpZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhcjo6aW52YWxpZGF0ZVJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhckNsaWVudC5oOgorICAgICAgICAqIHBsYXRm
b3JtL1dpZGdldC5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9XaWRnZXRNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vd2lu
L1BvcHVwTWVudVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OmludmFsaWRh
dGVTY3JvbGxiYXJSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNwcDoK
KyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luVmlldzo6aW52YWxpZGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2lu
Vmlldzo6aW52YWxpZGF0ZVdpbmRvd2xlc3NQbHVnaW5SZWN0KToKKyAgICAgICAgKiBwbHVnaW5z
L1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBwbHVnaW5zL2d0ay9QbHVnaW5WaWV3R3RrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmludmFsaWRhdGVSZWN0KToKKyAgICAgICAg
KiBwbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5W
aWV3OjppbnZhbGlkYXRlUmVjdCk6CisgICAgICAgICogcGx1Z2lucy93aW4vUGx1Z2luVmlld1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjppbnZhbGlkYXRlUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjppbnZhbGlkYXRlUmVnaW9uKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OmludmFsaWRhdGVTY3JvbGxiYXJSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludE9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMaXN0Qm94OjpwYWludFNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaXN0Qm94OjppbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guaDoKKwogMjAwOC0xMC0wMiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuIGFuZCBTYW0gV2Vp
bmlnLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZS5iYXNlLmV4cAkocmV2aXNpb24gMzcxODkpCisrKyBXZWJDb3JlL1dlYkNvcmUu
YmFzZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTUzMCw3ICs1MzAsNiBAQCBfX1pON1dlYkNvcmU2
U3RyaW5nQzFFUDhOU1N0cmluZwogX19aTjdXZWJDb3JlNlN0cmluZ0MxRVBLYwogX19aTjdXZWJD
b3JlNlN0cmluZ0MxRVBLY2oKIF9fWk43V2ViQ29yZTZTdHJpbmdDMUVSS04zSlNDN1VTdHJpbmdF
Ci1fX1pON1dlYkNvcmU2V2lkZ2V0MTRpbnZhbGlkYXRlUmVjdEVSS05TXzdJbnRSZWN0RQogX19a
TjdXZWJDb3JlNldpZGdldDE2cmVtb3ZlRnJvbVBhcmVudEV2CiBfX1pON1dlYkNvcmU2V2lkZ2V0
MTJzZXRGcmFtZVJlY3RFUktOU183SW50UmVjdEUKIF9fWk43V2ViQ29yZTZXaWRnZXQyMHJldGFp
blBsYXRmb3JtV2lkZ2V0RXYKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAzNzE5OCkKKysr
IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTksNiArMjU5
LDI3IEBAIHZvaWQgRnJhbWVWaWV3Ojppbml0U2Nyb2xsYmFycygpCiAgICAgc2V0U2Nyb2xsYmFy
TW9kZXMoZC0+bV9obW9kZSwgZC0+bV92bW9kZSk7CiB9CiAKK3ZvaWQgRnJhbWVWaWV3OjppbnZh
bGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIGlmICghcGFyZW50KCkpIHsK
KyAgICAgICAgaWYgKGhvc3RXaW5kb3coKSkKKyAgICAgICAgICAgIGhvc3RXaW5kb3coKS0+cmVw
YWludChyZWN0LCB0cnVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9m
cmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVuZGVyUGFydCogcmVuZGVyZXIgPSBtX2Zy
YW1lLT5vd25lclJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgSW50UmVjdCByZXBhaW50UmVjdCA9IHJlY3Q7CisgICAgcmVwYWludFJlY3QubW92
ZShyZW5kZXJlci0+Ym9yZGVyTGVmdCgpICsgcmVuZGVyZXItPnBhZGRpbmdMZWZ0KCksCisgICAg
ICAgICAgICAgICAgICAgICByZW5kZXJlci0+Ym9yZGVyVG9wKCkgKyByZW5kZXJlci0+cGFkZGlu
Z1RvcCgpKTsKKyAgICByZW5kZXJlci0+cmVwYWludFJlY3RhbmdsZShyZXBhaW50UmVjdCk7Cit9
CisKIHZvaWQgRnJhbWVWaWV3OjpzZXRNYXJnaW5XaWR0aChpbnQgdykKIHsKICAgICAvLyBtYWtl
IGl0IHVwZGF0ZSB0aGUgcmVuZGVyaW5nIGFyZWEgd2hlbiBzZXQKQEAgLTk3MSwxOCArOTkyLDYg
QEAgdm9pZCBGcmFtZVZpZXc6OmRpc3BhdGNoU2NoZWR1bGVkRXZlbnRzKAogICAgIH0KIH0KIAot
SW50UmVjdCBGcmFtZVZpZXc6OndpbmRvd0NsaXBSZWN0KGNvbnN0IFNjcm9sbGJhciopIGNvbnN0
Ci17Ci0gICAgLy8gV2hlbiB3ZSBnZXQgY2FsbGVkIGJ5IHRoZSBzY3JvbGxiYXIgY2xpZW50LCBp
dCBtZWFucyB0aGF0IHdlIGFyZSBub3QgY2xpcHBpbmcgdG8gY29udGVudHMsIHNpbmNlCi0gICAg
Ly8gdGhlc2Ugc2Nyb2xsYmFycyBhcmUgb3Vycy4KLSAgICByZXR1cm4gd2luZG93Q2xpcFJlY3Qo
ZmFsc2UpOwotfQotCi1JbnRSZWN0IEZyYW1lVmlldzo6d2luZG93Q2xpcFJlY3QoKSBjb25zdAot
ewotICAgIHJldHVybiB3aW5kb3dDbGlwUmVjdCh0cnVlKTsKLX0KLQogSW50UmVjdCBGcmFtZVZp
ZXc6OndpbmRvd0NsaXBSZWN0KGJvb2wgY2xpcFRvQ29udGVudHMpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKG1fZnJhbWUtPnZpZXcoKSA9PSB0aGlzKTsKQEAgLTEwMzQsNiArMTA0MywxNCBAQCB2b2lk
IEZyYW1lVmlldzo6dmFsdWVDaGFuZ2VkKFNjcm9sbGJhciogCiAgICAgICAgIGZyYW1lKCktPnNl
bmRTY3JvbGxFdmVudCgpOwogfQogCit2b2lkIEZyYW1lVmlldzo6aW52YWxpZGF0ZVNjcm9sbGJh
clJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAg
Ly8gQWRkIGluIG91ciBvZmZzZXQgd2l0aGluIHRoZSBGcmFtZVZpZXcuCisgICAgSW50UmVjdCBk
aXJ0eVJlY3QgPSByZWN0OworICAgIGRpcnR5UmVjdC5tb3ZlKHNjcm9sbGJhci0+eCgpLCBzY3Jv
bGxiYXItPnkoKSk7CisgICAgaW52YWxpZGF0ZVJlY3QoZGlydHlSZWN0KTsKK30KKwogSW50UmVj
dCBGcmFtZVZpZXc6OndpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3QKIHsKICAgICBQYWdlKiBwYWdl
ID0gZnJhbWUoKSA/IGZyYW1lKCktPnBhZ2UoKSA6IDA7CkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCShyZXZpc2lv
biAzNzE5OCkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAt
NjMsNiArNjMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RnJhbWVWaWV3KCk7CiAKICAgICB2
aXJ0dWFsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3coKSBjb25zdDsKKyAgICAKKyAgICB2aXJ0dWFs
IHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYpOwogCiAgICAgRnJhbWUqIGZyYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZS5nZXQoKTsgfQogICAgIHZvaWQgY2xlYXJGcmFtZSgp
OwpAQCAtMTExLDEyICsxMTMsMTEgQEAgcHVibGljOgogICAgIHZvaWQgYWRqdXN0Vmlld1NpemUo
KTsKICAgICB2b2lkIGluaXRTY3JvbGxiYXJzKCk7CiAgICAgCi0gICAgdmlydHVhbCBJbnRSZWN0
IHdpbmRvd0NsaXBSZWN0KGNvbnN0IFNjcm9sbGJhciopIGNvbnN0OwotICAgIHZpcnR1YWwgSW50
UmVjdCB3aW5kb3dDbGlwUmVjdCgpIGNvbnN0OwotICAgIEludFJlY3Qgd2luZG93Q2xpcFJlY3Qo
Ym9vbCBjbGlwVG9Db250ZW50cykgY29uc3Q7CisgICAgdmlydHVhbCBJbnRSZWN0IHdpbmRvd0Ns
aXBSZWN0KGJvb2wgY2xpcFRvQ29udGVudHMgPSB0cnVlKSBjb25zdDsKICAgICBJbnRSZWN0IHdp
bmRvd0NsaXBSZWN0Rm9yTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXIqLCBib29sIGNsaXBUb0xheWVy
Q29udGVudHMpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJhciosIGNvbnN0
IEludFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgdmFsdWVDaGFuZ2VkKFNjcm9sbGJhciopOwog
ICAgIAogICAgIHZpcnR1YWwgSW50UmVjdCB3aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0OwpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9Qb3B1cE1lbnUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL1BvcHVwTWVudS5oCShyZXZpc2lvbiAzNzE5OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0v
UG9wdXBNZW51LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw3ICsxNDQsNyBAQCBwcml2YXRlOgog
I2VsaWYgUExBVEZPUk0oV0lOKQogICAgIC8vIFNjcm9sbEJhckNsaWVudAogICAgIHZpcnR1YWwg
dm9pZCB2YWx1ZUNoYW5nZWQoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHdpbmRv
d0NsaXBSZWN0KGNvbnN0IFNjcm9sbGJhciopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdmly
dHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCBj
YWxjdWxhdGVQb3NpdGlvbkFuZFNpemUoY29uc3QgSW50UmVjdCYsIEZyYW1lVmlldyopOwpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCShyZXZpc2lvbiAzNzIwNCkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3OSw3ICszNzksNyBAQCB2
b2lkIFNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRzKGNvbnN0IEluCiB7CiAgICAgLy8gU2luY2Ug
c2Nyb2xsaW5nIGlzIGRvdWJsZSBidWZmZXJlZCwgd2Ugd2lsbCBiZSBibGl0dGluZyB0aGUgc2Ny
b2xsIHZpZXcncyBpbnRlcnNlY3Rpb24KICAgICAvLyB3aXRoIHRoZSBjbGlwIHJlY3QgZXZlcnkg
dGltZSB0byBrZWVwIGl0IHNtb290aC4KLSAgICBJbnRSZWN0IGNsaXBSZWN0ID0gc3RhdGljX2Nh
c3Q8V2lkZ2V0Kj4odGhpcyktPndpbmRvd0NsaXBSZWN0KCk7CisgICAgSW50UmVjdCBjbGlwUmVj
dCA9IHdpbmRvd0NsaXBSZWN0KCk7CiAgICAgSW50UmVjdCBzY3JvbGxWaWV3UmVjdCA9IGNvbnZl
cnRUb0NvbnRhaW5pbmdXaW5kb3coSW50UmVjdCgwLCAwLCB2aXNpYmxlV2lkdGgoKSwgdmlzaWJs
ZUhlaWdodCgpKSk7CiAgICAgSW50UmVjdCB1cGRhdGVSZWN0ID0gY2xpcFJlY3Q7CiAgICAgdXBk
YXRlUmVjdC5pbnRlcnNlY3Qoc2Nyb2xsVmlld1JlY3QpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3
LmgJKHJldmlzaW9uIDM3MjA0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgJKHdv
cmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDkgQEAgcHVibGljOgogICAgIC8vIGhvc3Qgd2luZG93
IGluIHRoZSB3aW5kb3cncyBjb29yZGluYXRlIHNwYWNlLgogICAgIHZpcnR1YWwgSG9zdFdpbmRv
dyogaG9zdFdpbmRvdygpIGNvbnN0ID0gMDsKIAorICAgIC8vIFJldHVybnMgYSBjbGlwIHJlY3Qg
aW4gaG9zdCB3aW5kb3cgY29vcmRpbmF0ZXMuICBVc2VkIHRvIGNsaXAgdGhlIGJsaXQgb24gYSBz
Y3JvbGwuCisgICAgdmlydHVhbCBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0KGJvb2wgY2xpcFRvQ29u
dGVudHMgPSB0cnVlKSBjb25zdCA9IDA7CisKICAgICAvLyBNZXRob2RzIGZvciBjaGlsZCBtYW5p
cHVsYXRpb24gYW5kIGluc3BlY3Rpb24uCiAgICAgY29uc3QgSGFzaFNldDxXaWRnZXQqPiogY2hp
bGRyZW4oKSBjb25zdCB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQogICAgIHZvaWQgYWRkQ2hpbGQo
V2lkZ2V0Kik7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCShyZXZpc2lvbiAzNzE5OCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE3LDIz
ICs0MTcsMTIgQEAgdm9pZCBTY3JvbGxiYXI6OnNldEVuYWJsZWQoYm9vbCBlKQogICAgIG1fZW5h
YmxlZCA9IGU7CiAgICAgaW52YWxpZGF0ZSgpOwogfQotICAgIAotSW50UmVjdCBTY3JvbGxiYXI6
OndpbmRvd0NsaXBSZWN0KCkgY29uc3QKLXsKLSAgICBJbnRSZWN0IGNsaXBSZWN0KDAsIDAsIHdp
ZHRoKCksIGhlaWdodCgpKTsKLQotICAgIGNsaXBSZWN0ID0gY29udmVydFRvQ29udGFpbmluZ1dp
bmRvdyhjbGlwUmVjdCk7Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBjbGlwUmVjdC5pbnRl
cnNlY3QobV9jbGllbnQtPndpbmRvd0NsaXBSZWN0KHRoaXMpKTsKLQotICAgIHJldHVybiBjbGlw
UmVjdDsKLX0KIAogdm9pZCBTY3JvbGxiYXI6OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3Qm
IHJlY3QpCiB7CiAgICAgaWYgKHN1cHByZXNzSW52YWxpZGF0aW9uKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBXaWRnZXQ6OmludmFsaWRhdGVSZWN0KHJlY3QpOworICAgIG1fY2xpZW50LT5pbnZh
bGlkYXRlU2Nyb2xsYmFyUmVjdCh0aGlzLCByZWN0KTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxiYXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGJhci5oCShyZXZpc2lvbiAzNzE4OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsxMTAsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgc2V0UGFyZW50KFNjcm9sbFZpZXcqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJhbWVS
ZWN0KGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIEludFJlY3Qgd2luZG93Q2xpcFJlY3Qo
KSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0
Jik7CiAgICAgCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhckNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyQ2xpZW50LmgJKHJldmlzaW9uIDM3
MTk4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzcsOCArMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+U2Nyb2xsYmFyQ2xpZW50
KCkge30KICAgICB2aXJ0dWFsIHZvaWQgdmFsdWVDaGFuZ2VkKFNjcm9sbGJhciopID0gMDsKIAot
ICAgIC8vIFVzZWQgdG8gb2J0YWluIGEgd2luZG93IGNsaXAgcmVjdC4KLSAgICB2aXJ0dWFsIElu
dFJlY3Qgd2luZG93Q2xpcFJlY3QoY29uc3QgU2Nyb2xsYmFyKikgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXIqLCBjb25zdCBJbnRS
ZWN0JikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3QgPSAwOwogfTsK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9XaWRnZXQuaAkocmV2aXNpb24gMzcxODkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL1dp
ZGdldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNyArMTMzLDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKICAg
ICB2b2lkIGludmFsaWRhdGUoKSB7IGludmFsaWRhdGVSZWN0KGJvdW5kc1JlY3QoKSk7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1
YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JikgPSAwOwogCiAgICAgdmlydHVh
bCB2b2lkIHNldEZvY3VzKCk7CiAKQEAgLTE1OCwxMSArMTU4LDYgQEAgcHVibGljOgogICAgIFNj
cm9sbFZpZXcqIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9CiAgICAgU2Nyb2xs
Vmlldyogcm9vdCgpIGNvbnN0OwogCi0gICAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCBieSBwbHVn
aW5zIG9uIGFsbCBwbGF0Zm9ybXMgdG8gb2J0YWluIGEgY2xpcCByZWN0IHRoYXQgaW5jbHVkZXMg
Y2xpcHMgc2V0IGJ5IFdlYkNvcmUsCi0gICAgLy8gZS5nLiwgaW4gb3ZlcmZsb3c6YXV0byBzZWN0
aW9ucy4gIFRoZSBjbGlwIHJlY3RzIGNvb3JkaW5hdGVzIGFyZSBpbiB0aGUgY29udGFpbmluZyB3
aW5kb3cncyBjb29yZGluYXRlIHNwYWNlLgotICAgIC8vIFRoaXMgY2xpcCBpbmNsdWRlcyBhbnkg
Y2xpcHMgdGhhdCB0aGUgd2lkZ2V0IGl0c2VsZiBzZXRzIHVwIGZvciBpdHMgY2hpbGRyZW4uCi0g
ICAgdmlydHVhbCBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVj
dCgpOyB9Ci0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoRXZlbnQqKSB7IH0KIAogICAg
IC8vIFRoZSBjb250YWluaW5nIHdpbmRvdyBpcyB1c2VkIGFzIHRoZSBjb29yZGluYXRlIHNwYWNl
IGZvciBldmVudCBoYW5kbGluZy4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldEd0
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0R3RrLmNwcAko
cmV2aXNpb24gMzcxODkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTEsMjkgKzE1MSw2IEBAIHZvaWQgV2lkZ2V0OjpzZXRJc1NlbGVj
dGVkKGJvb2wpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXaWRnZXQ6OmludmFs
aWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgaWYgKCFwYXJlbnQoKSkgewot
ICAgICAgICBndGtfd2lkZ2V0X3F1ZXVlX2RyYXdfYXJlYShHVEtfV0lER0VUKGNvbnRhaW5pbmdX
aW5kb3coKSksIHJlY3QueCgpLCByZWN0LnkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKLSAgICAgICAgaWYgKGlzRnJh
bWVWaWV3KCkpCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPih0aGlzKS0+YWRk
VG9EaXJ0eVJlZ2lvbihyZWN0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEdl
dCB0aGUgcm9vdCB3aWRnZXQuCi0gICAgU2Nyb2xsVmlldyogb3V0ZXJtb3N0VmlldyA9IHBhcmVu
dCgpOwotICAgIHdoaWxlIChvdXRlcm1vc3RWaWV3ICYmIG91dGVybW9zdFZpZXctPnBhcmVudCgp
KQotICAgICAgICBvdXRlcm1vc3RWaWV3ID0gb3V0ZXJtb3N0Vmlldy0+cGFyZW50KCk7Ci0gICAg
aWYgKCFvdXRlcm1vc3RWaWV3KQotICAgICAgICByZXR1cm47Ci0KLSAgICBJbnRSZWN0IHdpbmRv
d1JlY3QgPSBjb252ZXJ0VG9Db250YWluaW5nV2luZG93KHJlY3QpOwotICAgIGd0a193aWRnZXRf
cXVldWVfZHJhd19hcmVhKEdUS19XSURHRVQoY29udGFpbmluZ1dpbmRvdygpKSwgd2luZG93UmVj
dC54KCksIHdpbmRvd1JlY3QueSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdp
bmRvd1JlY3Qud2lkdGgoKSwgd2luZG93UmVjdC5oZWlnaHQoKSk7Ci0gICAgb3V0ZXJtb3N0Vmll
dy0+YWRkVG9EaXJ0eVJlZ2lvbih3aW5kb3dSZWN0KTsKLX0KLQogSW50UmVjdCBXaWRnZXQ6OmZy
YW1lUmVjdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZnJhbWU7CkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL21hYy9XaWRnZXRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2lkZ2V0TWFjLm1tCShyZXZpc2lvbiAzNzE4OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbWFj
L1dpZGdldE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjI5LDE5ICsyMjksNiBAQCB2b2lkIFdp
ZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBwLCBjCiAgICAgfQogfQogCi12b2lkIFdpZGdl
dDo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcikKLXsKLSAgICBpZiAoIXBsYXRmb3Jt
V2lkZ2V0KCkgJiYgcGFyZW50KCkpIHsKLSAgICAgICAgSW50UG9pbnQgbmV3UG9pbnQgPSBwYXJl
bnQoKS0+Y29udmVydENoaWxkVG9TZWxmKHRoaXMsIHIubG9jYXRpb24oKSk7Ci0gICAgICAgIHBh
cmVudCgpLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KG5ld1BvaW50LCByLnNpemUoKSkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwot
ICAgIFtwbGF0Zm9ybVdpZGdldCgpIHNldE5lZWRzRGlzcGxheUluUmVjdDogcl07Ci0gICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLX0KLQogdm9pZCBXaWRnZXQ6OnNldElzU2VsZWN0ZWQo
Ym9vbCBpc1NlbGVjdGVkKQogewogICAgIE5TVmlldyAqdmlldyA9IHBsYXRmb3JtV2lkZ2V0KCk7
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAJKHJldmlzaW9uIDM3MTk4
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTg0LDkgKzU4NCwxMiBAQCB2b2lkIFBvcHVwTWVudTo6dmFsdWVDaGFuZ2VkKFNjcm9s
bGJhciogCiAgICAgOjpVcGRhdGVXaW5kb3cobV9wb3B1cCk7CiB9CiAKLUludFJlY3QgUG9wdXBN
ZW51Ojp3aW5kb3dDbGlwUmVjdChjb25zdCBTY3JvbGxiYXIqKSBjb25zdAordm9pZCBQb3B1cE1l
bnU6OmludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQogewotICAgIHJldHVybiBtX3dpbmRvd1JlY3Q7CisgICAgSW50UmVjdCBz
Y3JvbGxSZWN0ID0gcmVjdDsKKyAgICBzY3JvbGxSZWN0Lm1vdmUoc2Nyb2xsYmFyLT54KCksIHNj
cm9sbGJhci0+eSgpKTsKKyAgICBSRUNUIHIgPSBzY3JvbGxSZWN0OworICAgIDo6SW52YWxpZGF0
ZVJlY3QobV9wb3B1cCwgJnIsZmFsc2UpOwogfQogCiBzdGF0aWMgQVRPTSByZWdpc3RlclBvcHVw
KCkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vd2luL1dpZGdldFdpbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNwcAkocmV2aXNpb24gMzcxODkpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
Myw2ICs4Myw3IEBAIHZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQqLCBjb24KIHsK
IH0KIAorLyoKIHZvaWQgV2lkZ2V0OjppbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiByKQog
ewogICAgIGlmICghcGFyZW50KCkpIHsKQEAgLTExMCw2ICsxMTEsNyBAQCB2b2lkIFdpZGdldDo6
aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjCiAgICAgOjpJbnZhbGlkYXRlUmVjdChjb250YWlu
aW5nV2luZG93KCksICZyZWN0LCBmYWxzZSk7CiAgICAgb3V0ZXJtb3N0Vmlldy0+YWRkVG9EaXJ0
eVJlZ2lvbih3aW5kb3dSZWN0KTsKIH0KKyovCiAKIHZvaWQgV2lkZ2V0OjpzZXRGb2N1cygpCiB7
CkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCShyZXZpc2lvbiAzNzE4OSkKKysrIFdlYkNvcmUv
cGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQAog
I2luY2x1ZGUgIlBsdWdpbkRlYnVnLmgiCiAjaW5jbHVkZSAiUGx1Z2luTWFpblRocmVhZFNjaGVk
dWxlci5oIgogI2luY2x1ZGUgIlBsdWdpblBhY2thZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmpl
Y3QuaCIKICNpbmNsdWRlICJjX2luc3RhbmNlLmgiCiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwu
aCIKICNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIKQEAgLTQzMSw3ICs0MzIsNyBAQCB2b2lkIFBs
dWdpblZpZXc6OmludmFsaWRhdGVUaW1lckZpcmVkKFRpCiAgICAgQVNTRVJUKHRpbWVyID09ICZt
X2ludmFsaWRhdGVUaW1lcik7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9pbnZh
bGlkUmVjdHMuc2l6ZSgpOyBpKyspCi0gICAgICAgIFdpZGdldDo6aW52YWxpZGF0ZVJlY3QobV9p
bnZhbGlkUmVjdHNbaV0pOworICAgICAgICBpbnZhbGlkYXRlUmVjdChtX2ludmFsaWRSZWN0c1tp
XSk7CiAgICAgbV9pbnZhbGlkUmVjdHMuY2xlYXIoKTsKIH0KIApAQCAtODc4LDQgKzg3OSwxOCBA
QCBOUEVycm9yIFBsdWdpblZpZXc6OmhhbmRsZVBvc3QoY29uc3QgY2hhCiAgICAgcmV0dXJuIGxv
YWQoZnJhbWVMb2FkUmVxdWVzdCwgc2VuZE5vdGlmaWNhdGlvbiwgbm90aWZ5RGF0YSk7CiB9CiAK
K3ZvaWQgUGx1Z2luVmlldzo6aW52YWxpZGF0ZVdpbmRvd2xlc3NQbHVnaW5SZWN0KGNvbnN0IElu
dFJlY3QmIHJlY3QpCit7CisgICAgaWYgKCFpc1Zpc2libGUoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2VsZW1lbnQtPnJlbmRlcmVyKCk7
CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEludFJlY3Qg
ZGlydHlSZWN0ID0gcmVjdDsKKyAgICBkaXJ0eVJlY3QubW92ZShyZW5kZXJlci0+Ym9yZGVyTGVm
dCgpICsgcmVuZGVyZXItPnBhZGRpbmdMZWZ0KCksIHJlbmRlcmVyLT5ib3JkZXJUb3AoKSArIHJl
bmRlcmVyLT5wYWRkaW5nVG9wKCkpOworICAgIHJlbmRlcmVyLT5yZXBhaW50UmVjdGFuZ2xlKGRp
cnR5UmVjdCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGx1
Z2lucy9QbHVnaW5WaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZp
ZXcuaAkocmV2aXNpb24gMzcxODkpCisrKyBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzYsNiArMTM2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIHB1c2hQb3B1cHNFbmFibGVkU3RhdGUoYm9vbCBzdGF0ZSk7CiAgICAgICAgIHZv
aWQgcG9wUG9wdXBzRW5hYmxlZFN0YXRlKCk7CiAKKyAgICAgICAgdmlydHVhbCB2b2lkIGludmFs
aWRhdGVSZWN0KGNvbnN0IEludFJlY3QmKTsKKwogICAgICAgICBib29sIGFyZVBvcHVwc0FsbG93
ZWQoKSBjb25zdDsKIAogICAgICAgICB2b2lkIHNldEphdmFTY3JpcHRQYXVzZWQoYm9vbCk7CkBA
IC0xNTAsNyArMTUyLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2
b2lkIHNob3coKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGhpZGUoKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAg
dmlydHVhbCBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0KCkgY29uc3Q7CisKKyAgICAgICAgLy8gVGhp
cyBtZXRob2QgaXMgdXNlZCBieSBwbHVnaW5zIG9uIGFsbCBwbGF0Zm9ybXMgdG8gb2J0YWluIGEg
Y2xpcCByZWN0IHRoYXQgaW5jbHVkZXMgY2xpcHMgc2V0IGJ5IFdlYkNvcmUsCisgICAgICAgIC8v
IGUuZy4sIGluIG92ZXJmbG93OmF1dG8gc2VjdGlvbnMuICBUaGUgY2xpcCByZWN0cyBjb29yZGlu
YXRlcyBhcmUgaW4gdGhlIGNvbnRhaW5pbmcgd2luZG93J3MgY29vcmRpbmF0ZSBzcGFjZS4KKyAg
ICAgICAgLy8gVGhpcyBjbGlwIGluY2x1ZGVzIGFueSBjbGlwcyB0aGF0IHRoZSB3aWRnZXQgaXRz
ZWxmIHNldHMgdXAgZm9yIGl0cyBjaGlsZHJlbi4KKyAgICAgICAgSW50UmVjdCB3aW5kb3dDbGlw
UmVjdCgpIGNvbnN0OworCiAgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChFdmVudCop
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0UGFyZW50KFNjcm9sbFZpZXcqKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIHNldFBhcmVudFZpc2libGUoYm9vbCk7CkBAIC0xOTAsNiArMTk3LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgdm9pZCBmcmVlU3RyaW5nQXJyYXko
Y2hhcioqIHN0cmluZ0FycmF5LCBpbnQgbGVuZ3RoKTsKICAgICAgICAgdm9pZCBzZXRDYWxsaW5n
UGx1Z2luKGJvb2wpIGNvbnN0OwogCisgICAgICAgIHZvaWQgaW52YWxpZGF0ZVdpbmRvd2xlc3NQ
bHVnaW5SZWN0KGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAgCiAgICAgICAgIEZyYW1lKiBtX3Bh
cmVudEZyYW1lOwogICAgICAgICBSZWZQdHI8UGx1Z2luUGFja2FnZT4gbV9wbHVnaW47CiAgICAg
ICAgIEVsZW1lbnQqIG1fZWxlbWVudDsKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2lu
Vmlld0d0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5WaWV3
R3RrLmNwcAkocmV2aXNpb24gMzcxODkpCisrKyBXZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZp
ZXdHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTIsNiArNDUyLDE3IEBAIE5QRXJyb3IgUGx1
Z2luVmlldzo6Z2V0VmFsdWUoTlBOVmFyaWFibGUKICAgICB9CiB9CiAKK3ZvaWQgUGx1Z2luVmll
dzo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAobV9pc1dp
bmRvd2VkKSB7CisgICAgICAgIGd0a193aWRnZXRfcXVldWVfZHJhd19hcmVhKEdUS19XSURHRVQo
cGxhdGZvcm1QbHVnaW5XaWRnZXQoKSksIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgp
LCByZWN0LmhlaWdodCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIERvIHdp
bmRvd2xlc3MgcGx1Z2luIGludmFsaWRhdGlvbi4KKyAgICBpbnZhbGlkYXRlV2luZG93bGVzc1Bs
dWdpblJlY3QocmVjdCk7Cit9CisKIHZvaWQgUGx1Z2luVmlldzo6aW52YWxpZGF0ZVJlY3QoTlBS
ZWN0KiByZWN0KQogewogICAgIGlmICghcmVjdCkgewpAQCAtNDYwLDcgKzQ3MSw3IEBAIHZvaWQg
UGx1Z2luVmlldzo6aW52YWxpZGF0ZVJlY3QoTlBSZWN0KiAKICAgICB9CiAKICAgICBJbnRSZWN0
IHIocmVjdC0+bGVmdCwgcmVjdC0+dG9wLCByZWN0LT5yaWdodCAtIHJlY3QtPmxlZnQsIHJlY3Qt
PmJvdHRvbSAtIHJlY3QtPnRvcCk7Ci0gICAgV2lkZ2V0OjppbnZhbGlkYXRlUmVjdChyKTsKKyAg
ICBpbnZhbGlkYXRlUmVjdChyKTsKIH0KIAogdm9pZCBQbHVnaW5WaWV3Ojpmb3JjZVJlZHJhdygp
CkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcAkocmV2aXNpb24gMzcxODkpCisr
KyBXZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgxLDYgKzM4MSwxNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlKE5QTlZhcmlhYmxl
CiAgICAgfQogfQogCit2b2lkIFBsdWdpblZpZXc6OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJl
Y3QmIHJlY3QpCit7CisgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpIHsKKyAgICAgICAgcGxhdGZv
cm1XaWRnZXQoKS0+dXBkYXRlKHJlY3QpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAor
ICAgIC8vIERvIHdpbmRvd2xlc3MgcGx1Z2luIGludmFsaWRhdGlvbi4KKyAgICBpbnZhbGlkYXRl
V2luZG93bGVzc1BsdWdpblJlY3QocmVjdCk7Cit9CisgICAgCiB2b2lkIFBsdWdpblZpZXc6Omlu
dmFsaWRhdGVSZWN0KE5QUmVjdCogcmVjdCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRl
eDogV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpblZpZXdXaW4uY3BwCShyZXZpc2lvbiAzNzE4OSkKKysr
IFdlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcyNSw2ICs3MjUsMTggQEAgTlBFcnJvciBQbHVnaW5WaWV3OjpnZXRWYWx1ZShOUE5WYXJpYWJs
ZQogICAgIH0KIH0KIAordm9pZCBQbHVnaW5WaWV3OjppbnZhbGlkYXRlUmVjdChjb25zdCBJbnRS
ZWN0JiByZWN0KQoreworICAgIGlmIChtX2lzV2luZG93ZWQpIHsKKyAgICAgICAgUkVDVCBpbnZh
bGlkUmVjdCA9IHJlY3Q7CisgICAgICAgIDo6SW52YWxpZGF0ZVJlY3QocGxhdGZvcm1QbHVnaW5X
aWRnZXQoKSwgJmludmFsaWRSZWN0LCBmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyBEbyB3aW5kb3dsZXNzIHBsdWdpbiBpbnZhbGlkYXRpb24uCisgICAgaW52YWxpZGF0
ZVdpbmRvd2xlc3NQbHVnaW5SZWN0KHJlY3QpOworfQorCiB2b2lkIFBsdWdpblZpZXc6OmludmFs
aWRhdGVSZWN0KE5QUmVjdCogcmVjdCkKIHsKICAgICBpZiAoIXJlY3QpIHsKQEAgLTc0Myw3ICs3
NTUsNyBAQCB2b2lkIFBsdWdpblZpZXc6OmludmFsaWRhdGVSZWN0KE5QUmVjdCogCiAgICAgICAg
ICAgICBpZiAoIW1faW52YWxpZGF0ZVRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgICAgICAgICAg
bV9pbnZhbGlkYXRlVGltZXIuc3RhcnRPbmVTaG90KDAuMDAxKTsKICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBXaWRnZXQ6OmludmFsaWRhdGVSZWN0KHIpOworICAgICAgICAgICAgaW52YWxp
ZGF0ZVJlY3Qocik7CiAgICAgfQogfQogCkBAIC03NjAsNyArNzcyLDcgQEAgdm9pZCBQbHVnaW5W
aWV3OjppbnZhbGlkYXRlUmVnaW9uKE5QUmVnaQogICAgIH0KIAogICAgIEludFJlY3QgcmVjdChJ
bnRQb2ludChyLmxlZnQsIHIudG9wKSwgSW50U2l6ZShyLnJpZ2h0LXIubGVmdCwgci5ib3R0b20t
ci50b3ApKTsKLSAgICBXaWRnZXQ6OmludmFsaWRhdGVSZWN0KHJlY3QpOworICAgIGludmFsaWRh
dGVSZWN0KHJlY3QpOwogfQogCiB2b2lkIFBsdWdpblZpZXc6OmZvcmNlUmVkcmF3KCkKSW5kZXg6
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDM3MTk4KQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDkyLDIyICsxMDky
LDIyIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnZhbHVlQ2hhbmdlZChTY3JvbGxiYXIKICAgICAgICAg
c2Nyb2xsVG9PZmZzZXQobmV3WCwgbmV3WSwgZmFsc2UpOwogfQogCi1JbnRSZWN0IFJlbmRlckxh
eWVyOjp3aW5kb3dDbGlwUmVjdChjb25zdCBTY3JvbGxiYXIqKSBjb25zdAotewotICAgIFJlbmRl
clZpZXcqIHZpZXcgPSByZW5kZXJlcigpLT52aWV3KCk7Ci0gICAgQVNTRVJUKHZpZXcpOwotICAg
IEZyYW1lVmlldyogZnJhbWVWaWV3ID0gdmlldy0+ZnJhbWVWaWV3KCk7Ci0gICAgaWYgKCFmcmFt
ZVZpZXcpCi0gICAgICAgIHJldHVybiBJbnRSZWN0KCk7Ci0gICAgcmV0dXJuIGZyYW1lVmlldy0+
d2luZG93Q2xpcFJlY3RGb3JMYXllcih0aGlzLCBmYWxzZSk7Ci19Ci0KIGJvb2wgUmVuZGVyTGF5
ZXI6OmlzQWN0aXZlKCkgY29uc3QKIHsKICAgICBQYWdlKiBwYWdlID0gcmVuZGVyZXIoKS0+ZG9j
dW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpOwogICAgIHJldHVybiBwYWdlICYmIHBhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5pc0FjdGl2ZSgpOwogfQogCit2b2lkIFJlbmRlckxheWVyOjppbnZhbGlk
YXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVj
dCkKK3sKKyAgICBJbnRSZWN0IHNjcm9sbFJlY3QgPSByZWN0OworICAgIGlmIChzY3JvbGxiYXIg
PT0gbV92QmFyLmdldCgpKQorICAgICAgICBzY3JvbGxSZWN0Lm1vdmUocmVuZGVyZXIoKS0+d2lk
dGgoKSAtIHJlbmRlcmVyKCktPmJvcmRlclJpZ2h0KCkgLSBzY3JvbGxiYXItPndpZHRoKCksIHJl
bmRlcmVyKCktPmJvcmRlclRvcCgpKTsKKyAgICBlbHNlCisgICAgICAgIHNjcm9sbFJlY3QubW92
ZShyZW5kZXJlcigpLT5oZWlnaHQoKSAtIHJlbmRlcmVyKCktPmJvcmRlckJvdHRvbSgpIC0gc2Ny
b2xsYmFyLT5oZWlnaHQoKSwgcmVuZGVyZXIoKS0+Ym9yZGVyTGVmdCgpKTsKKyAgICByZW5kZXJl
cigpLT5yZXBhaW50UmVjdGFuZ2xlKHNjcm9sbFJlY3QpOworfQorCiBQYXNzUmVmUHRyPFNjcm9s
bGJhcj4gUmVuZGVyTGF5ZXI6OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbiBv
cmllbnRhdGlvbikKIHsKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiB3aWRnZXQgPSBTY3JvbGxiYXI6
OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcih0aGlzLCBvcmllbnRhdGlvbiwgUmVndWxhclNjcm9sbGJh
cik7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgJKHJldmlzaW9uIDM3MTk4KQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQ5LDcgKzM0
OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRCZU92ZXJmbG93T25seSgpIGNvbnN0Owog
CiAgICAgdmlydHVhbCB2b2lkIHZhbHVlQ2hhbmdlZChTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFs
IEludFJlY3Qgd2luZG93Q2xpcFJlY3QoY29uc3QgU2Nyb2xsYmFyKikgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJhciosIGNvbnN0IEludFJl
Y3QmKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKIAogICAgIHZvaWQgdXBk
YXRlT3ZlcmZsb3dTdGF0dXMoYm9vbCBob3Jpem9udGFsT3ZlcmZsb3csIGJvb2wgdmVydGljYWxP
dmVyZmxvdyk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAkocmV2aXNpb24g
MzcxOTgpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRPYmplY3Qo
UGFpbnRJbmYKICAgICBSZW5kZXJCbG9jazo6cGFpbnRPYmplY3QocGFpbnRJbmZvLCB0eCwgdHkp
OwogCiAgICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlQmxvY2tCYWNrZ3JvdW5k
KQotICAgICAgICBwYWludFNjcm9sbGJhcihwYWludEluZm8pOworICAgICAgICBwYWludFNjcm9s
bGJhcihwYWludEluZm8sIHR4LCB0eSk7CiAgICAgZWxzZSBpZiAocGFpbnRJbmZvLnBoYXNlID09
IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZCB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFp
bnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kcykgewogICAgICAgICBpbnQgaW5kZXggPSBtX2lu
ZGV4T2Zmc2V0OwogICAgICAgICB3aGlsZSAoaW5kZXggPCBsaXN0SXRlbXNTaXplICYmIGluZGV4
IDw9IG1faW5kZXhPZmZzZXQgKyBudW1WaXNpYmxlSXRlbXMoKSkgewpAQCAtMjg3LDE2ICsyODcs
MTUgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludE9iamVjdChQYWludEluZgogICAgIH0KIH0K
IAotdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludFNjcm9sbGJhcihQYWludEluZm8mIHBhaW50SW5m
bykKK3ZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRTY3JvbGxiYXIoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGludCB0eCwgaW50IHR5KQogewogICAgIGlmIChtX3ZCYXIpIHsKLSAgICAgICAgSW50UmVj
dCBhYnNCb3VuZHMgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwotICAgICAgICBJbnRSZWN0
IHNjcm9sbFJlY3QoYWJzQm91bmRzLnJpZ2h0KCkgLSBib3JkZXJSaWdodCgpIC0gbV92QmFyLT53
aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzQm91bmRzLnkoKSArIGJvcmRl
clRvcCgpLAorICAgICAgICBJbnRSZWN0IHNjcm9sbFJlY3QodHggKyB3aWR0aCgpIC0gYm9yZGVy
UmlnaHQoKSAtIG1fdkJhci0+d2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5
ICsgYm9yZGVyVG9wKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3ZCYXItPndpZHRo
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNCb3VuZHMuaGVpZ2h0KCkgLSAoYm9y
ZGVyVG9wKCkgKyBib3JkZXJCb3R0b20oKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
aGVpZ2h0KCkgLSAoYm9yZGVyVG9wKCkgKyBib3JkZXJCb3R0b20oKSkpOwogICAgICAgICBtX3ZC
YXItPnNldEZyYW1lUmVjdChzY3JvbGxSZWN0KTsKLSAgICAgICAgbV92QmFyLT5wYWludChwYWlu
dEluZm8uY29udGV4dCwgc2Nyb2xsUmVjdCk7CisgICAgICAgIG1fdkJhci0+cGFpbnQocGFpbnRJ
bmZvLmNvbnRleHQsIHBhaW50SW5mby5yZWN0KTsKICAgICB9CiB9CiAKQEAgLTU5NiwyMSArNTk1
LDE5IEBAIEludFJlY3QgUmVuZGVyTGlzdEJveDo6Y29udHJvbENsaXBSZWN0KGkKICAgICByZXR1
cm4gY2xpcFJlY3Q7CiB9CiAKLUludFJlY3QgUmVuZGVyTGlzdEJveDo6d2luZG93Q2xpcFJlY3Qo
Y29uc3QgU2Nyb2xsYmFyKikgY29uc3QKLXsKLSAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHZp
ZXcoKS0+ZnJhbWVWaWV3KCk7Ci0gICAgaWYgKCFmcmFtZVZpZXcpCi0gICAgICAgIHJldHVybiBJ
bnRSZWN0KCk7Ci0KLSAgICByZXR1cm4gZnJhbWVWaWV3LT53aW5kb3dDbGlwUmVjdEZvckxheWVy
KGVuY2xvc2luZ0xheWVyKCksIHRydWUpOwotfQotCiBib29sIFJlbmRlckxpc3RCb3g6OmlzQWN0
aXZlKCkgY29uc3QKIHsKICAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFn
ZSgpOwogICAgIHJldHVybiBwYWdlICYmIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5pc0FjdGl2
ZSgpOwogfQogCit2b2lkIFJlbmRlckxpc3RCb3g6OmludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIEludFJlY3Qg
c2Nyb2xsUmVjdCA9IHJlY3Q7CisgICAgc2Nyb2xsUmVjdC5tb3ZlKHdpZHRoKCkgLSBib3JkZXJS
aWdodCgpIC0gc2Nyb2xsYmFyLT53aWR0aCgpLCBib3JkZXJUb3AoKSk7CisgICAgcmVwYWludFJl
Y3RhbmdsZShzY3JvbGxSZWN0KTsKK30KKwogYm9vbCBSZW5kZXJMaXN0Qm94Ojppc1Njcm9sbGFi
bGUoKSBjb25zdAogewogICAgIGlmIChudW1WaXNpYmxlSXRlbXMoKSA8IG51bUl0ZW1zKCkpCklu
ZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCShyZXZpc2lvbiAzNzE5OCkKKysrIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZFBhblNjcm9sbCgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFuU2Nyb2xsKGNvbnN0IEludFBvaW50
Jik7CiAKLSAgICBpbnQgc2Nyb2xsVG93YXJkKGNvbnN0IEludFBvaW50Jik7IC8vIFJldHVybnMg
dGhlIG5ldyBpbmRleCBvciAtMSBpZiBubyBzY3JvbGwgb2NjdXJlZAorICAgIGludCBzY3JvbGxU
b3dhcmQoY29uc3QgSW50UG9pbnQmKTsgLy8gUmV0dXJucyB0aGUgbmV3IGluZGV4IG9yIC0xIGlm
IG5vIHNjcm9sbCBvY2N1cnJlZAogCiAgICAgdmlydHVhbCBpbnQgdmVydGljYWxTY3JvbGxiYXJX
aWR0aCgpIGNvbnN0OwogICAgIHZpcnR1YWwgaW50IHNjcm9sbExlZnQoKSBjb25zdDsKQEAgLTk3
LDcgKzk3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICAvLyBTY3JvbGxiYXJDbGllbnQgaW50
ZXJmYWNlLgogICAgIHZpcnR1YWwgdm9pZCB2YWx1ZUNoYW5nZWQoU2Nyb2xsYmFyKik7Ci0gICAg
dmlydHVhbCBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0KGNvbnN0IFNjcm9sbGJhciopIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXIqLCBjb25z
dCBJbnRSZWN0Jik7CiAgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3Q7CiAKICAgICBp
bnQgaXRlbUhlaWdodCgpIGNvbnN0OwpAQCAtMTA2LDcgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAg
aW50IG51bVZpc2libGVJdGVtcygpIGNvbnN0OwogICAgIGludCBudW1JdGVtcygpIGNvbnN0Owog
ICAgIGludCBsaXN0SGVpZ2h0KCkgY29uc3Q7Ci0gICAgdm9pZCBwYWludFNjcm9sbGJhcihQYWlu
dEluZm8mKTsKKyAgICB2b2lkIHBhaW50U2Nyb2xsYmFyKFBhaW50SW5mbyYsIGludCB0eCwgaW50
IHR5KTsKICAgICB2b2lkIHBhaW50SXRlbUZvcmVncm91bmQoUGFpbnRJbmZvJiwgaW50IHR4LCBp
bnQgdHksIGludCBsaXN0SW5kZXgpOwogICAgIHZvaWQgcGFpbnRJdGVtQmFja2dyb3VuZChQYWlu
dEluZm8mLCBpbnQgdHgsIGludCB0eSwgaW50IGxpc3RJbmRleCk7CiAgICAgdm9pZCBzY3JvbGxU
b1JldmVhbFNlbGVjdGlvbigpOwpJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDM3MjIyKQorKysgV2ViS2l0L21h
Yy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAwOC0xMC0wMiAg
RGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzI4CisgICAgICAgIAorICAgICAgICBNYWtlIHdp
ZGdldCBpbnZhbGlkYXRpb24gbW9yZSBjcm9zcy1wbGF0Zm9ybS4KKyAgICAgICAgCisgICAgICAg
ICgxKSBNYWtlIGludmFsaWRhdGVSZWN0IGEgcHVyZSB2aXJ0dWFsIGZ1bmN0aW9uIG9uIFdpZGdl
dC4gIEFsbCBsZWFmIHdpZGdldHMgbXVzdCBub3cgaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24uCisg
ICAgICAgIAorICAgICAgICAoMikgU2Nyb2xsYmFycyBub3cgc2VuZCBpbnZhbGlkYXRpb25zIHRo
cm91Z2ggdGhlIFNjcm9sbGJhckNsaWVudC4gIHdpbmRvd0NsaXBSZWN0IG9uIFNjcm9sbGJhckNs
aWVudCBoYXMgYmVlbiByZW1vdmVkIGFuZCByZXBsYWNlZCB3aXRoIHRoaXMgaW52YWxpZGF0aW9u
IGNhbGwuCisgICAgICAgIFRoaXMgYWxsb3dzIGFsbCBzY3JvbGxiYXIgaW52YWxpZGF0aW9ucyB0
byBnbyB0aHJvdWdoIHRoZSByZW5kZXIgdHJlZSBzbyB0aGF0IHRyYW5zZm9ybXMgYW5kIHJlZmxl
Y3Rpb25zIHdpbGwgYmUgcmVzcGVjdGVkLgorICAgICAgICAKKyAgICAgICAgKDMpIFBsdWdpbnMg
bm93IGhhdmUgdGhlIG5hdGl2ZSB3aW5kb3cgaW52YWxpZGF0aW9uIGNvZGUgZm9yIHdpbmRvd2Vk
IHBsdWdpbnMuICBXaW5kb3dsZXNzIHBsdWdpbnMgZG8gYSByZXBhaW50UmVjdGFuZ2xlIG9uIHRo
ZSBwbHVnaW4ncyByZW5kZXJlci4KKyAgICAgICAgCisgICAgICAgICg0KSBGcmFtZVZpZXdzIG5v
dyBkbyBhIHJlcGFpbnRSZWN0YW5nbGUgb24gdGhlaXIgb3duZXIgZWxlbWVudCdzIHJlbmRlcmVy
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChQbHVnaW5XaWRn
ZXQ6OlBsdWdpbldpZGdldCk6CisgICAgICAgIChQbHVnaW5XaWRnZXQ6OmludmFsaWRhdGVSZWN0
KToKKyAgICAgICAgKE5ldHNjYXBlUGx1Z2luV2lkZ2V0OjpOZXRzY2FwZVBsdWdpbldpZGdldCk6
CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKToKKwogMjAwOC0x
MC0wMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgR2VvZmYgR2FyZW4uCkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDM3MTg5KQorKysgV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTIzNywxMiArMTIzNywyNSBAQCBzdGF0aWMgTlNWaWV3ICpwbHVnaW5WaWV3KFdlYkZyYW1lICpm
cmFtCiAgICAgcmV0dXJuIHZpZXc7CiB9CiAKK2NsYXNzIFBsdWdpbldpZGdldCA6IHB1YmxpYyBX
aWRnZXQgeworcHVibGljOgorICAgIFBsdWdpbldpZGdldChOU1ZpZXcgKnZpZXcgPSAwKQorICAg
IDogV2lkZ2V0KHZpZXcpCisgICAgeworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgaW52
YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB7CisgICAgICAgIFtwbGF0Zm9y
bVdpZGdldCgpIHNldE5lZWRzRGlzcGxheUluUmVjdDogcmVjdF07CisgICAgfQorfTsKKwogI2lm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCi1jbGFzcyBOZXRzY2FwZVBsdWdpbldpZGdl
dCA6IHB1YmxpYyBXaWRnZXQgeworY2xhc3MgTmV0c2NhcGVQbHVnaW5XaWRnZXQgOiBwdWJsaWMg
UGx1Z2luV2lkZ2V0IHsKIHB1YmxpYzoKICAgICBOZXRzY2FwZVBsdWdpbldpZGdldChXZWJOZXRz
Y2FwZVBsdWdpbkVtYmVkZGVkVmlldyAqdmlldykKLSAgICA6IFdpZGdldCh2aWV3KQorICAgIDog
UGx1Z2luV2lkZ2V0KHZpZXcpCiAgICAgewogICAgIH0KICAgICAKQEAgLTEyOTAsNyArMTMwMyw3
IEBAIFdpZGdldCogV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWcKICAgICAgICAgW2Fy
Z3VtZW50cyByZWxlYXNlXTsKIAogICAgICAgICBpZiAodmlldykKLSAgICAgICAgICAgIHJldHVy
biBuZXcgV2lkZ2V0KHZpZXcpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBQbHVnaW5XaWRnZXQo
dmlldyk7CiAgICAgfQogCiAgICAgTlNTdHJpbmcgKk1JTUVUeXBlOwpAQCAtMTM1Niw3ICsxMzY5
LDcgQEAgV2lkZ2V0KiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1ZwogICAgIH0KICAg
ICAKICAgICBBU1NFUlQodmlldyk7Ci0gICAgcmV0dXJuIG5ldyBXaWRnZXQodmlldyk7CisgICAg
cmV0dXJuIG5ldyBQbHVnaW5XaWRnZXQodmlldyk7CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TOwogCkBAIC0xNDQzLDExICsxNDU2LDExIEBAIFdpZGdldCogV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmNyZWF0ZUphdmEKICAgICB9CiAKICAgICBBU1NFUlQodmlldyk7Ci0gICAgcmV0dXJu
IG5ldyBXaWRnZXQodmlldyk7CisgICAgcmV0dXJuIG5ldyBQbHVnaW5XaWRnZXQodmlldyk7CiAK
ICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIAotICAgIHJldHVybiBuZXcgV2lk
Z2V0OworICAgIHJldHVybiBuZXcgUGx1Z2luV2lkZ2V0OwogfQogCiBTdHJpbmcgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6Om92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3QKSW5kZXg6IFdlYktpdC93aW4v
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAz
NzIyMikKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjcgQEAKKzIwMDgtMTAtMDIgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMyOAorICAgICAg
ICAKKyAgICAgICAgTWFrZSB3aWRnZXQgaW52YWxpZGF0aW9uIG1vcmUgY3Jvc3MtcGxhdGZvcm0u
CisgICAgICAgIAorICAgICAgICAoMSkgTWFrZSBpbnZhbGlkYXRlUmVjdCBhIHB1cmUgdmlydHVh
bCBmdW5jdGlvbiBvbiBXaWRnZXQuICBBbGwgbGVhZiB3aWRnZXRzIG11c3Qgbm93IGltcGxlbWVu
dCB0aGlzIGZ1bmN0aW9uLgorICAgICAgICAKKyAgICAgICAgKDIpIFNjcm9sbGJhcnMgbm93IHNl
bmQgaW52YWxpZGF0aW9ucyB0aHJvdWdoIHRoZSBTY3JvbGxiYXJDbGllbnQuICB3aW5kb3dDbGlw
UmVjdCBvbiBTY3JvbGxiYXJDbGllbnQgaGFzIGJlZW4gcmVtb3ZlZCBhbmQgcmVwbGFjZWQgd2l0
aCB0aGlzIGludmFsaWRhdGlvbiBjYWxsLgorICAgICAgICBUaGlzIGFsbG93cyBhbGwgc2Nyb2xs
YmFyIGludmFsaWRhdGlvbnMgdG8gZ28gdGhyb3VnaCB0aGUgcmVuZGVyIHRyZWUgc28gdGhhdCB0
cmFuc2Zvcm1zIGFuZCByZWZsZWN0aW9ucyB3aWxsIGJlIHJlc3BlY3RlZC4KKyAgICAgICAgCisg
ICAgICAgICgzKSBQbHVnaW5zIG5vdyBoYXZlIHRoZSBuYXRpdmUgd2luZG93IGludmFsaWRhdGlv
biBjb2RlIGZvciB3aW5kb3dlZCBwbHVnaW5zLiAgV2luZG93bGVzcyBwbHVnaW5zIGRvIGEgcmVw
YWludFJlY3RhbmdsZSBvbiB0aGUgcGx1Z2luJ3MgcmVuZGVyZXIuCisgICAgICAgIAorICAgICAg
ICAoNCkgRnJhbWVWaWV3cyBub3cgZG8gYSByZXBhaW50UmVjdGFuZ2xlIG9uIHRoZWlyIG93bmVy
IGVsZW1lbnQncyByZW5kZXJlci4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VtYmVkZGVkV2lkZ2V0LmNwcDoKKyAgICAg
ICAgKEVtYmVkZGVkV2lkZ2V0OjppbnZhbGlkYXRlUmVjdCk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRW1iZWRkZWRXaWRnZXQuaDoKKyAgICAgICAgKiBXZWJTY3JvbGxCYXIuY3BwOgorICAg
ICAgICAoV2ViU2Nyb2xsQmFyOjppbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdCk6CisgICAgICAgICog
V2ViU2Nyb2xsQmFyLmg6CisKIDIwMDgtMTAtMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIC0gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMzIxCkluZGV4OiBXZWJLaXQvd2luL1dlYlNjcm9sbEJhci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L3dpbi9XZWJTY3JvbGxCYXIuY3BwCShyZXZpc2lvbiAzNzE5OCkKKysrIFdlYktpdC93
aW4vV2ViU2Nyb2xsQmFyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYwLDEwICsyNjAsOSBAQCB2
b2lkIFdlYlNjcm9sbEJhcjo6dmFsdWVDaGFuZ2VkKFNjcm9sbGJhCiAgICAgbV9kZWxlZ2F0ZS0+
dmFsdWVDaGFuZ2VkKHRoaXMpOwogfQogCi1JbnRSZWN0IFdlYlNjcm9sbEJhcjo6d2luZG93Q2xp
cFJlY3QoY29uc3QgU2Nyb2xsYmFyKikgY29uc3QKK3ZvaWQgV2ViU2Nyb2xsQmFyOjppbnZhbGlk
YXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAg
IEhXTkQgc2JDb250YWluaW5nV2luZG93ID0gbV9zY3JvbGxCYXItPmNvbnRhaW5pbmdXaW5kb3co
KTsKLSAgICBSRUNUIGNsaWVudFJlY3Q7Ci0gICAgOjpHZXRDbGllbnRSZWN0KHNiQ29udGFpbmlu
Z1dpbmRvdywgJmNsaWVudFJlY3QpOwotICAgIHJldHVybiBJbnRSZWN0KGNsaWVudFJlY3QubGVm
dCwgY2xpZW50UmVjdC50b3AsIGNsaWVudFJlY3QucmlnaHQtY2xpZW50UmVjdC5sZWZ0LCBjbGll
bnRSZWN0LmJvdHRvbS1jbGllbnRSZWN0LnRvcCk7CisgICAgUkVDVCByID0gcmVjdDsKKyAgICA6
OkludmFsaWRhdGVSZWN0KHNiQ29udGFpbmluZ1dpbmRvdywgJnIsIGZhbHNlKTsKIH0KSW5kZXg6
IFdlYktpdC93aW4vV2ViU2Nyb2xsQmFyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJT
Y3JvbGxCYXIuaAkocmV2aXNpb24gMzcxOTgpCisrKyBXZWJLaXQvd2luL1dlYlNjcm9sbEJhci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgog
ICAgIC8vIFNjcm9sbGJhckNsaWVudAogICAgIHZpcnR1YWwgdm9pZCB2YWx1ZUNoYW5nZWQoU2Ny
b2xsYmFyKik7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0KGNvbnN0IFNjcm9s
bGJhciopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChT
Y3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHBy
b3ZpZGUgYSB3YXkgdG8gc2V0IHRoaXMgdmFsdWUuCiAgICAgdmlydHVhbCBib29sIGlzQWN0aXZl
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9FbWJlZGRlZFdpZGdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9FbWJlZGRlZFdpZGdldC5jcHAJKHJldmlzaW9uIDM3MTg5KQorKysgV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9FbWJlZGRlZFdpZGdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYg
KzY0LDE1IEBAIGJvb2wgRW1iZWRkZWRXaWRnZXQ6OmNyZWF0ZVdpbmRvdyhIV05EIHAKICAgICBy
ZXR1cm4gdHJ1ZTsNCiB9DQogDQordm9pZCBFbWJlZGRlZFdpZGdldDo6aW52YWxpZGF0ZVJlY3Qo
Y29uc3QgSW50UmVjdCYgcmVjdCkNCit7DQorICAgIGlmICghbV93aW5kb3cpDQorICAgICAgICBy
ZXR1cm47DQorDQorICAgIFJFQ1QgciA9IHJlY3Q7DQorICAgOjpJbnZhbGlkYXRlUmVjdChtX3dp
bmRvdywgJnIsIGZhbHNlKTsNCit9DQorDQogdm9pZCBFbWJlZGRlZFdpZGdldDo6c2V0RnJhbWVS
ZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpDQogew0KICAgICBpZiAobV9lbGVtZW50LT5kb2N1bWVu
dCgpLT5wcmludGluZygpKQ0KSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvRW1iZWRk
ZWRXaWRnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L0VtYmVk
ZGVkV2lkZ2V0LmgJKHJldmlzaW9uIDM3MTg5KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9FbWJlZGRlZFdpZGdldC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBAIHByaXZh
dGU6DQogDQogICAgIGJvb2wgY3JlYXRlV2luZG93KEhXTkQgcGFyZW50V2luZG93LCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBzaXplKTsNCiANCisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVS
ZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsNCiAgICAgdmlydHVhbCB2b2lkIHNldEZyYW1l
UmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7DQogICAgIHZpcnR1YWwgdm9pZCBmcmFtZVJl
Y3RzQ2hhbmdlZCgpIGNvbnN0Ow0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXMoKTsNCg==
</data>
<flag name="review"
          id="10880"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>