<?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>86843</bug_id>
          
          <creation_ts>2012-05-18 04:57:30 -0700</creation_ts>
          <short_desc>[GTK] Add GCancellable parameter to all methods using gio async pattern</short_desc>
          <delta_ts>2012-05-20 23:38:41 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>627571</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-05-18 04:57:30 -0700</bug_when>
    <thetext>For consistency and because it&apos;s something expected and useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627572</commentid>
    <comment_count>1</comment_count>
      <attachid>142688</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-05-18 05:00:38 -0700</bug_when>
    <thetext>Created attachment 142688
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627573</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-18 05:03:44 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627723</commentid>
    <comment_count>3</comment_count>
      <attachid>142688</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-05-18 08:40:03 -0700</bug_when>
    <thetext>Comment on attachment 142688
Patch

The patch looks fine to me, but I am curious about the motivation. What does cancellation support really gain us in these cases? It looks like the only practical gain would be it would be possible to get a &quot;cancelled&quot; error after the async request is finished, since we are not checking for cancellation anywhere else that would avoid continued processing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627730</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-05-18 08:53:08 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 142688 [details])
&gt; The patch looks fine to me, but I am curious about the motivation.

Mainly consistency, cancellable is something expected in functions using the gio async model.

&gt; What does cancellation support really gain us in these cases? It looks like the only practical gain would be it would be possible to get a &quot;cancelled&quot; error after the async request is finished, since we are not checking for cancellation anywhere else that would avoid continued processing.

Other methods follow the approach of async method + signals, for example, cancelling a download operation emits the error signal with cancelled error. And we have specific APIs for it webkit_download_cancel. Something similar happens when loadingf something in a web view (load error signal + stop_load method). 

For methods using the gio async model, we provide the standard way, a cancellable object that allow the user to cancel the operation (and from any thread). When the user finishes the operation CANCELLED error is returned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627762</commentid>
    <comment_count>5</comment_count>
      <attachid>142688</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-05-18 09:43:10 -0700</bug_when>
    <thetext>Comment on attachment 142688
Patch

OK, I guess we need cancellables anyway if we are to make the cancellation more useful in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628813</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-05-20 23:38:41 -0700</bug_when>
    <thetext>Committed r117735: &lt;http://trac.webkit.org/changeset/117735&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142688</attachid>
            <date>2012-05-18 05:00:38 -0700</date>
            <delta_ts>2012-05-18 09:43:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-cancellable.diff</filename>
            <type>text/plain</type>
            <size>32773</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5YjNiMzc5Li44NWFjYWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTItMDUtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEFkZCBHQ2FuY2VsbGFibGUgcGFyYW1ldGVyIHRvIGFsbCBtZXRo
b2RzIHVzaW5nIGdpbyBhc3luYyBwYXR0ZXJuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04Njg0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBhIHByaXZhdGUgbWFjcm8gV0VCS0lUX0RFRklORV9BU1lO
Q19EQVRBX1NUUlVDVCgpIHRvIG1ha2UgaXQKKyAgICAgICAgZWFzaWVyIHRvIGRlZmluZSB0ZW1w
b3Jhcnkgc3RydWN0cyB1c2VkIGluIGFzeW5jIG9wZXJhdGlvbnMuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKEdldEFjY2Vw
dFBvbGljeUFzeW5jRGF0YSk6CisgICAgICAgICh3ZWJraXRDb29raWVNYW5hZ2VyR2V0QWNjZXB0
UG9saWN5Q2FsbGJhY2spOgorICAgICAgICAod2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9hY2Nl
cHRfcG9saWN5KToKKyAgICAgICAgKHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfYWNjZXB0X3Bv
bGljeV9maW5pc2gpOgorICAgICAgICAoR2V0RG9tYWluc1dpdGhDb29raWVzQXN5bmNEYXRhKToK
KyAgICAgICAgKHdlYmtpdENvb2tpZU1hbmFnZXJHZXREb21haW5zV2l0aENvb2tpZXNDYWxsYmFj
ayk6CisgICAgICAgICh3ZWJraXRfY29va2llX21hbmFnZXJfZ2V0X2RvbWFpbnNfd2l0aF9jb29r
aWVzKToKKyAgICAgICAgKHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfZG9tYWluc193aXRoX2Nv
b2tpZXNfZmluaXNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb29raWVN
YW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAg
ICAod2Via2l0X3dlYl9jb250ZXh0X2dldF9wbHVnaW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJSZXNvdXJjZS5jcHA6CisgICAgICAgIChSZXNvdXJjZUdldERhdGFB
c3luY0RhdGEpOgorICAgICAgICAocmVzb3VyY2VEYXRhQ2FsbGJhY2spOgorICAgICAgICAod2Vi
a2l0X3dlYl9yZXNvdXJjZV9nZXRfZGF0YSk6CisgICAgICAgICh3ZWJraXRfd2ViX3Jlc291cmNl
X2dldF9kYXRhX2ZpbmlzaCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
UmVzb3VyY2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNw
cDoKKyAgICAgICAgKFZhbGlkYXRlRWRpdGluZ0NvbW1hbmRBc3luY0RhdGEpOgorICAgICAgICAo
ZGlkVmFsaWRhdGVDb21tYW5kKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jYW5fZXhlY3V0
ZV9lZGl0aW5nX2NvbW1hbmQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Nhbl9leGVjdXRl
X2VkaXRpbmdfY29tbWFuZF9maW5pc2gpOgorICAgICAgICAoUnVuSmF2YVNjcmlwdEFzeW5jRGF0
YTo6flJ1bkphdmFTY3JpcHRBc3luY0RhdGEpOgorICAgICAgICAoUnVuSmF2YVNjcmlwdEFzeW5j
RGF0YSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENhbGxiYWNrKToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdCk6CisgICAgICAgICh3ZWJraXRf
d2ViX3ZpZXdfcnVuX2phdmFzY3JpcHRfZmluaXNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
VGVzdENvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3Rz
L1Rlc3RSZXNvdXJjZXMuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rl
c3RXZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9U
ZXN0V2ViVmlld0VkaXRvci5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
V2ViVmlld1Rlc3QuY3BwOgorICAgICAgICAoV2ViVmlld1Rlc3Q6OnJ1bkphdmFTY3JpcHRBbmRX
YWl0VW50aWxGaW5pc2hlZCk6CisKIDIwMTItMDUtMTcgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9y
bWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIFdlYktpdDIgR1RLL1F0IGJ1
aWxkIGZpeCBhdHRlbXB0IGFmdGVyIHIxMTc1MTYuCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzQ5ZDI5OS4uOWUyODU5NyAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDEyLTA1LTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbR1RLXSBBZGQgR0NhbmNlbGxhYmxlIHBhcmFtZXRlciB0byBhbGwgbWV0aG9kcyB1
c2luZyBnaW8gYXN5bmMgcGF0dGVybgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODY4NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmM6CisgICAgICAg
IChicm93c2VyX3dpbmRvd19sb2FkX3VyaSk6CisKIDIwMTItMDUtMTcgIFJhcGhhZWwgS3VibyBk
YSBDb3N0YSAgPHJha3Vjb0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtFRkxdW0RSVF0gQ2FsbCBy
ZXNldEludGVybmFsc09iamVjdCgpIGFmdGVyIGVhY2ggdGVzdC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKaW5k
ZXggYjk5M2QyZS4uN2Q4YTEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKQEAgLTExNywxNiArMTE3LDI4
IEBAIHZvaWQgd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX3NldF9hY2NlcHRfcG9saWN5KFdlYktpdENv
b2tpZU1hbmFnZXIqIG1hbmFnZXIsIFdlYktpCiAgICAgV0tDb29raWVNYW5hZ2VyU2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShtYW5hZ2VyLT5wcml2LT53a0Nvb2tpZU1hbmFnZXIuZ2V0KCksIHBv
bGljeSk7CiB9CiAKK3N0cnVjdCBHZXRBY2NlcHRQb2xpY3lBc3luY0RhdGEgeworICAgIFdLSFRU
UENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3k7CisgICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IGNh
bmNlbGxhYmxlOworfTsKK1dFQktJVF9ERUZJTkVfQVNZTkNfREFUQV9TVFJVQ1QoR2V0QWNjZXB0
UG9saWN5QXN5bmNEYXRhKQorCiBzdGF0aWMgdm9pZCB3ZWJraXRDb29raWVNYW5hZ2VyR2V0QWNj
ZXB0UG9saWN5Q2FsbGJhY2soV0tIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgV0tFcnJv
clJlZiwgdm9pZCogY29udGV4dCkKIHsKICAgICBHUmVmUHRyPEdTaW1wbGVBc3luY1Jlc3VsdD4g
cmVzdWx0ID0gYWRvcHRHUmVmKEdfU0lNUExFX0FTWU5DX1JFU1VMVChjb250ZXh0KSk7Ci0gICAg
Z19zaW1wbGVfYXN5bmNfcmVzdWx0X3NldF9vcF9yZXNfZ3BvaW50ZXIocmVzdWx0LmdldCgpLCBH
VUlOVF9UT19QT0lOVEVSKHBvbGljeSksIDApOworICAgIEdldEFjY2VwdFBvbGljeUFzeW5jRGF0
YSogZGF0YSA9IHN0YXRpY19jYXN0PEdldEFjY2VwdFBvbGljeUFzeW5jRGF0YSo+KGdfc2ltcGxl
X2FzeW5jX3Jlc3VsdF9nZXRfb3BfcmVzX2dwb2ludGVyKHJlc3VsdC5nZXQoKSkpOworICAgIEdF
cnJvciogZXJyb3IgPSAwOworICAgIGlmIChnX2NhbmNlbGxhYmxlX3NldF9lcnJvcl9pZl9jYW5j
ZWxsZWQoZGF0YS0+Y2FuY2VsbGFibGUuZ2V0KCksICZlcnJvcikpCisgICAgICAgIGdfc2ltcGxl
X2FzeW5jX3Jlc3VsdF90YWtlX2Vycm9yKHJlc3VsdC5nZXQoKSwgZXJyb3IpOworICAgIGVsc2UK
KyAgICAgICAgZGF0YS0+cG9saWN5ID0gcG9saWN5OwogICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3Vs
dF9jb21wbGV0ZShyZXN1bHQuZ2V0KCkpOwogfQogCiAvKioKICAqIHdlYmtpdF9jb29raWVfbWFu
YWdlcl9nZXRfYWNjZXB0X3BvbGljeToKICAqIEBjb29raWVfbWFuYWdlcjogYSAjV2ViS2l0Q29v
a2llTWFuYWdlcgorICogQGNhbmNlbGxhYmxlOiAoYWxsb3ctbm9uZSk6IGEgI0dDYW5jZWxsYWJs
ZSBvciAlTlVMTCB0byBpZ25vcmUKICAqIEBjYWxsYmFjazogKHNjb3BlIGFzeW5jKTogYSAjR0Fz
eW5jUmVhZHlDYWxsYmFjayB0byBjYWxsIHdoZW4gdGhlIHJlcXVlc3QgaXMgc2F0aXNmaWVkCiAg
KiBAdXNlcl9kYXRhOiAoY2xvc3VyZSk6IHRoZSBkYXRhIHRvIHBhc3MgdG8gY2FsbGJhY2sgZnVu
Y3Rpb24KICAqCkBAIC0xMzUsMTIgKzE0NywxNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRDb29raWVN
YW5hZ2VyR2V0QWNjZXB0UG9saWN5Q2FsbGJhY2soV0tIVFRQQ29va2llQWNjZXB0UG9saWN5CiAg
KiBXaGVuIHRoZSBvcGVyYXRpb24gaXMgZmluaXNoZWQsIEBjYWxsYmFjayB3aWxsIGJlIGNhbGxl
ZC4gWW91IGNhbiB0aGVuIGNhbGwKICAqIHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfYWNjZXB0
X3BvbGljeV9maW5pc2goKSB0byBnZXQgdGhlIHJlc3VsdCBvZiB0aGUgb3BlcmF0aW9uLgogICov
Ci12b2lkIHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfYWNjZXB0X3BvbGljeShXZWJLaXRDb29r
aWVNYW5hZ2VyKiBtYW5hZ2VyLCBHQXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRl
ciB1c2VyRGF0YSkKK3ZvaWQgd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9hY2NlcHRfcG9saWN5
KFdlYktpdENvb2tpZU1hbmFnZXIqIG1hbmFnZXIsIEdDYW5jZWxsYWJsZSogY2FuY2VsbGFibGUs
IEdBc3luY1JlYWR5Q2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhKQogewogICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0NPT0tJRV9NQU5BR0VSKG1hbmFnZXIpKTsKIAog
ICAgIEdTaW1wbGVBc3luY1Jlc3VsdCogcmVzdWx0ID0gZ19zaW1wbGVfYXN5bmNfcmVzdWx0X25l
dyhHX09CSkVDVChtYW5hZ2VyKSwgY2FsbGJhY2ssIHVzZXJEYXRhLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9j
YXN0PGdwb2ludGVyPih3ZWJraXRfY29va2llX21hbmFnZXJfZ2V0X2FjY2VwdF9wb2xpY3kpKTsK
KyAgICBHZXRBY2NlcHRQb2xpY3lBc3luY0RhdGEqIGRhdGEgPSBjcmVhdGVHZXRBY2NlcHRQb2xp
Y3lBc3luY0RhdGEoKTsKKyAgICBkYXRhLT5jYW5jZWxsYWJsZSA9IGNhbmNlbGxhYmxlOworICAg
IGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9zZXRfb3BfcmVzX2dwb2ludGVyKHJlc3VsdCwgZGF0YSwg
cmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZGVzdHJveUdldEFjY2VwdFBvbGljeUFz
eW5jRGF0YSkpOworCiAgICAgV0tDb29raWVNYW5hZ2VyR2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShtYW5hZ2VyLT5wcml2LT53a0Nvb2tpZU1hbmFnZXIuZ2V0KCksIHJlc3VsdCwgd2Via2l0Q29v
a2llTWFuYWdlckdldEFjY2VwdFBvbGljeUNhbGxiYWNrKTsKIH0KIApAQCAtMTY1LDI4ICsxODEs
NDEgQEAgV2ViS2l0Q29va2llQWNjZXB0UG9saWN5IHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRf
YWNjZXB0X3BvbGljeV9maW5pc2goV2ViS2l0Q28KICAgICBpZiAoZ19zaW1wbGVfYXN5bmNfcmVz
dWx0X3Byb3BhZ2F0ZV9lcnJvcihzaW1wbGVSZXN1bHQsIGVycm9yKSkKICAgICAgICAgcmV0dXJu
IFdFQktJVF9DT09LSUVfUE9MSUNZX0FDQ0VQVF9OT19USElSRF9QQVJUWTsKIAotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxXZWJLaXRDb29raWVBY2NlcHRQb2xpY3k+KEdQT0lOVEVSX1RPX1VJTlQo
Z19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9vcF9yZXNfZ3BvaW50ZXIoc2ltcGxlUmVzdWx0KSkp
OworICAgIEdldEFjY2VwdFBvbGljeUFzeW5jRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PEdldEFj
Y2VwdFBvbGljeUFzeW5jRGF0YSo+KGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRfb3BfcmVzX2dw
b2ludGVyKHNpbXBsZVJlc3VsdCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXRDb29r
aWVBY2NlcHRQb2xpY3k+KGRhdGEtPnBvbGljeSk7CiB9CiAKK3N0cnVjdCBHZXREb21haW5zV2l0
aENvb2tpZXNBc3luY0RhdGEgeworICAgIEdSZWZQdHI8R1B0ckFycmF5PiBkb21haW5zOworICAg
IEdSZWZQdHI8R0NhbmNlbGxhYmxlPiBjYW5jZWxsYWJsZTsKK307CitXRUJLSVRfREVGSU5FX0FT
WU5DX0RBVEFfU1RSVUNUKEdldERvbWFpbnNXaXRoQ29va2llc0FzeW5jRGF0YSkKKwogc3RhdGlj
IHZvaWQgd2Via2l0Q29va2llTWFuYWdlckdldERvbWFpbnNXaXRoQ29va2llc0NhbGxiYWNrKFdL
QXJyYXlSZWYgd2tEb21haW5zLCBXS0Vycm9yUmVmLCB2b2lkKiBjb250ZXh0KQogewogICAgIEdS
ZWZQdHI8R1NpbXBsZUFzeW5jUmVzdWx0PiByZXN1bHQgPSBhZG9wdEdSZWYoR19TSU1QTEVfQVNZ
TkNfUkVTVUxUKGNvbnRleHQpKTsKLSAgICBHUHRyQXJyYXkqIGRvbWFpbnMgPSBnX3B0cl9hcnJh
eV9uZXdfd2l0aF9mcmVlX2Z1bmMoZ19mcmVlKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IFdLQXJyYXlHZXRTaXplKHdrRG9tYWlucyk7ICsraSkgewotICAgICAgICBXS1N0cmluZ1JlZiB3
a0RvbWFpbiA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgo
d2tEb21haW5zLCBpKSk7Ci0gICAgICAgIFN0cmluZyBkb21haW4gPSB0b0ltcGwod2tEb21haW4p
LT5zdHJpbmcoKTsKLSAgICAgICAgaWYgKGRvbWFpbi5pc0VtcHR5KCkpCi0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgZ19wdHJfYXJyYXlfYWRkKGRvbWFpbnMsIGdfc3RyZHVwKGRvbWFp
bi51dGY4KCkuZGF0YSgpKSk7CisgICAgR2V0RG9tYWluc1dpdGhDb29raWVzQXN5bmNEYXRhKiBk
YXRhID0gc3RhdGljX2Nhc3Q8R2V0RG9tYWluc1dpdGhDb29raWVzQXN5bmNEYXRhKj4oZ19zaW1w
bGVfYXN5bmNfcmVzdWx0X2dldF9vcF9yZXNfZ3BvaW50ZXIocmVzdWx0LmdldCgpKSk7CisgICAg
R0Vycm9yKiBlcnJvciA9IDA7CisgICAgaWYgKGdfY2FuY2VsbGFibGVfc2V0X2Vycm9yX2lmX2Nh
bmNlbGxlZChkYXRhLT5jYW5jZWxsYWJsZS5nZXQoKSwgJmVycm9yKSkKKyAgICAgICAgZ19zaW1w
bGVfYXN5bmNfcmVzdWx0X3Rha2VfZXJyb3IocmVzdWx0LmdldCgpLCBlcnJvcik7CisgICAgZWxz
ZSB7CisgICAgICAgIGRhdGEtPmRvbWFpbnMgPSBhZG9wdEdSZWYoZ19wdHJfYXJyYXlfbmV3X3dp
dGhfZnJlZV9mdW5jKGdfZnJlZSkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdL
QXJyYXlHZXRTaXplKHdrRG9tYWlucyk7ICsraSkgeworICAgICAgICAgICAgV0tTdHJpbmdSZWYg
d2tEb21haW4gPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tBcnJheUdldEl0ZW1BdEluZGV4
KHdrRG9tYWlucywgaSkpOworICAgICAgICAgICAgU3RyaW5nIGRvbWFpbiA9IHRvSW1wbCh3a0Rv
bWFpbiktPnN0cmluZygpOworICAgICAgICAgICAgaWYgKGRvbWFpbi5pc0VtcHR5KCkpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBnX3B0cl9hcnJheV9hZGQoZGF0YS0+
ZG9tYWlucy5nZXQoKSwgZ19zdHJkdXAoZG9tYWluLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAg
fQorICAgICAgICBnX3B0cl9hcnJheV9hZGQoZGF0YS0+ZG9tYWlucy5nZXQoKSwgMCk7CiAgICAg
fQotICAgIGdfcHRyX2FycmF5X2FkZChkb21haW5zLCAwKTsKLSAgICBnX3NpbXBsZV9hc3luY19y
ZXN1bHRfc2V0X29wX3Jlc19ncG9pbnRlcihyZXN1bHQuZ2V0KCksIGRvbWFpbnMsIHJlaW50ZXJw
cmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGdfcHRyX2FycmF5X3VucmVmKSk7CiAgICAgZ19zaW1w
bGVfYXN5bmNfcmVzdWx0X2NvbXBsZXRlKHJlc3VsdC5nZXQoKSk7CiB9CiAKIC8qKgogICogd2Vi
a2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9kb21haW5zX3dpdGhfY29va2llczoKICAqIEBjb29raWVf
bWFuYWdlcjogYSAjV2ViS2l0Q29va2llTWFuYWdlcgorICogQGNhbmNlbGxhYmxlOiAoYWxsb3ct
bm9uZSk6IGEgI0dDYW5jZWxsYWJsZSBvciAlTlVMTCB0byBpZ25vcmUKICAqIEBjYWxsYmFjazog
KHNjb3BlIGFzeW5jKTogYSAjR0FzeW5jUmVhZHlDYWxsYmFjayB0byBjYWxsIHdoZW4gdGhlIHJl
cXVlc3QgaXMgc2F0aXNmaWVkCiAgKiBAdXNlcl9kYXRhOiAoY2xvc3VyZSk6IHRoZSBkYXRhIHRv
IHBhc3MgdG8gY2FsbGJhY2sgZnVuY3Rpb24KICAqCkBAIC0xOTUsMTIgKzIyNCwxNSBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRDb29raWVNYW5hZ2VyR2V0RG9tYWluc1dpdGhDb29raWVzQ2FsbGJhY2so
V0tBcnJheVJlZiB3a0RvbWFpbgogICogV2hlbiB0aGUgb3BlcmF0aW9uIGlzIGZpbmlzaGVkLCBA
Y2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQuIFlvdSBjYW4gdGhlbiBjYWxsCiAgKiB3ZWJraXRfY29v
a2llX21hbmFnZXJfZ2V0X2RvbWFpbnNfd2l0aF9jb29raWVzX2ZpbmlzaCgpIHRvIGdldCB0aGUg
cmVzdWx0IG9mIHRoZSBvcGVyYXRpb24uCiAgKi8KLXZvaWQgd2Via2l0X2Nvb2tpZV9tYW5hZ2Vy
X2dldF9kb21haW5zX3dpdGhfY29va2llcyhXZWJLaXRDb29raWVNYW5hZ2VyKiBtYW5hZ2VyLCBH
QXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1c2VyRGF0YSkKK3ZvaWQgd2Vi
a2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9kb21haW5zX3dpdGhfY29va2llcyhXZWJLaXRDb29raWVN
YW5hZ2VyKiBtYW5hZ2VyLCBHQ2FuY2VsbGFibGUqIGNhbmNlbGxhYmxlLCBHQXN5bmNSZWFkeUNh
bGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1c2VyRGF0YSkKIHsKICAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9JU19DT09LSUVfTUFOQUdFUihtYW5hZ2VyKSk7CiAKICAgICBHU2ltcGxlQXN5
bmNSZXN1bHQqIHJlc3VsdCA9IGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9uZXcoR19PQkpFQ1QobWFu
YWdlciksIGNhbGxiYWNrLCB1c2VyRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4o
d2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9kb21haW5zX3dpdGhfY29va2llcykpOworICAgIEdl
dERvbWFpbnNXaXRoQ29va2llc0FzeW5jRGF0YSogZGF0YSA9IGNyZWF0ZUdldERvbWFpbnNXaXRo
Q29va2llc0FzeW5jRGF0YSgpOworICAgIGRhdGEtPmNhbmNlbGxhYmxlID0gY2FuY2VsbGFibGU7
CisgICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3NldF9vcF9yZXNfZ3BvaW50ZXIocmVzdWx0LCBk
YXRhLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5PihkZXN0cm95R2V0RG9tYWluc1dp
dGhDb29raWVzQXN5bmNEYXRhKSk7CiAgICAgV0tDb29raWVNYW5hZ2VyR2V0SG9zdG5hbWVzV2l0
aENvb2tpZXMobWFuYWdlci0+cHJpdi0+d2tDb29raWVNYW5hZ2VyLmdldCgpLCByZXN1bHQsIHdl
YmtpdENvb2tpZU1hbmFnZXJHZXREb21haW5zV2l0aENvb2tpZXNDYWxsYmFjayk7CiB9CiAKQEAg
LTIyOCw4ICsyNjAsOCBAQCBnY2hhcioqIHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfZG9tYWlu
c193aXRoX2Nvb2tpZXNfZmluaXNoKFdlYktpdENvb2tpZU1hbmFnZQogICAgIGlmIChnX3NpbXBs
ZV9hc3luY19yZXN1bHRfcHJvcGFnYXRlX2Vycm9yKHNpbXBsZVJlc3VsdCwgZXJyb3IpKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIEdQdHJBcnJheSogZG9tYWlucyA9IHN0YXRpY19jYXN0PEdQ
dHJBcnJheSo+KGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRfb3BfcmVzX2dwb2ludGVyKHNpbXBs
ZVJlc3VsdCkpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqKj4oZ19wdHJfYXJy
YXlfZnJlZShkb21haW5zLCBGQUxTRSkpOworICAgIEdldERvbWFpbnNXaXRoQ29va2llc0FzeW5j
RGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PEdldERvbWFpbnNXaXRoQ29va2llc0FzeW5jRGF0YSo+
KGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRfb3BfcmVzX2dwb2ludGVyKHNpbXBsZVJlc3VsdCkp
OworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqKj4oZ19wdHJfYXJyYXlfZnJlZShk
YXRhLT5kb21haW5zLmxlYWtSZWYoKSwgRkFMU0UpKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb29raWVNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb29raWVNYW5hZ2VyLmgKaW5k
ZXggNzkxYTYxZC4uMjQ3MmQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0Q29va2llTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXIuaApAQCAtNzQsNiArNzQsNyBAQCB3ZWJr
aXRfY29va2llX21hbmFnZXJfc2V0X2FjY2VwdF9wb2xpY3kgICAgICAgICAgICAgICAoV2ViS2l0
Q29va2llTWFuYWdlciAgICAgKgogCiBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9jb29raWVfbWFu
YWdlcl9nZXRfYWNjZXB0X3BvbGljeSAgICAgICAgICAgICAgIChXZWJLaXRDb29raWVNYW5hZ2Vy
ICAgICAqY29va2llX21hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0NhbmNlbGxhYmxlICAgICAgICAgICAgKmNhbmNlbGxhYmxl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdBc3luY1JlYWR5Q2FsbGJhY2sgICAgICBjYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgICAgICAg
ICAgdXNlcl9kYXRhKTsKIApAQCAtODQsNiArODUsNyBAQCB3ZWJraXRfY29va2llX21hbmFnZXJf
Z2V0X2FjY2VwdF9wb2xpY3lfZmluaXNoICAgICAgICAoV2ViS2l0Q29va2llTWFuYWdlciAgICAg
KgogCiBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfZG9tYWluc193
aXRoX2Nvb2tpZXMgICAgICAgIChXZWJLaXRDb29raWVNYW5hZ2VyICAgICAqY29va2llX21hbmFn
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0NhbmNlbGxhYmxlICAgICAgICAgICAgKmNhbmNlbGxhYmxlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1JlYWR5Q2FsbGJh
Y2sgICAgICBjYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgICAgICAgICAgdXNlcl9kYXRhKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oCmlu
ZGV4IDRiN2U5YWQuLjdkZjdiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRQcml2YXRlLmgKQEAgLTQ0LDYgKzQ0LDE5IEBACiAjZGVmaW5lIENPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0od2Via2l0TmFtZSwgd2ViY29yZU5hbWUpIFwKICAgICAg
ICAgQ09NUElMRV9BU1NFUlQoaW50KHdlYmtpdE5hbWUpID09IGludCh3ZWJjb3JlTmFtZSksIG1p
c21hdGNoaW5nRW51bXMpCiAKKyNkZWZpbmUgV0VCS0lUX0RFRklORV9BU1lOQ19EQVRBX1NUUlVD
VChzdHJ1Y3ROYW1lKSBcCitzdGF0aWMgc3RydWN0TmFtZSogY3JlYXRlIyNzdHJ1Y3ROYW1lKCkg
XAoreyBcCisgICAgc3RydWN0TmFtZSogZGF0YSA9IGdfc2xpY2VfbmV3MChzdHJ1Y3ROYW1lKTsg
XAorICAgIG5ldyAoZGF0YSkgc3RydWN0TmFtZSgpOyBcCisgICAgcmV0dXJuIGRhdGE7IFwKK30g
XAorc3RhdGljIHZvaWQgZGVzdHJveSMjc3RydWN0TmFtZShzdHJ1Y3ROYW1lKiBkYXRhKSBcCit7
IFwKKyAgICBkYXRhLT5+c3RydWN0TmFtZSgpOyBcCisgICAgZ19zbGljZV9mcmVlKHN0cnVjdE5h
bWUsIGRhdGEpOyBcCit9CisKIHVuc2lnbmVkIHdrRXZlbnRNb2RpZmllcnNUb0dka01vZGlmaWVy
cyhXS0V2ZW50TW9kaWZpZXJzKTsKIAogI2VuZGlmIC8vIFdlYktpdFByaXZhdGVfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNw
cAppbmRleCA1ZWM2NGQ5Li42ODFjMGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMjU2LDE5ICsyNTYsNyBA
QCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYWRkaXRpb25hbF9wbHVnaW5zX2RpcmVjdG9y
eShXZWJLaXRXZWJDb250ZXh0KiBjb250ZQogc3RydWN0IEdldFBsdWdpbnNBc3luY0RhdGEgewog
ICAgIFZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiBwbHVnaW5zOwogfTsKLQotc3RhdGljIEdldFBs
dWdpbnNBc3luY0RhdGEqIGdldFBsdWdpbnNBc3luY0RhdGFDcmVhdGUoKQotewotICAgIEdldFBs
dWdpbnNBc3luY0RhdGEqIGRhdGEgPSBnX3NsaWNlX25ldyhHZXRQbHVnaW5zQXN5bmNEYXRhKTsK
LSAgICBuZXcgKGRhdGEpIEdldFBsdWdpbnNBc3luY0RhdGEoKTsKLSAgICByZXR1cm4gZGF0YTsK
LX0KLQotc3RhdGljIHZvaWQgZ2V0UGx1Z2luc0FzeW5jRGF0YURlc3Ryb3koR2V0UGx1Z2luc0Fz
eW5jRGF0YSogZGF0YSkKLXsKLSAgICBkYXRhLT5+R2V0UGx1Z2luc0FzeW5jRGF0YSgpOwotICAg
IGdfc2xpY2VfZnJlZShHZXRQbHVnaW5zQXN5bmNEYXRhLCBkYXRhKTsKLX0KK1dFQktJVF9ERUZJ
TkVfQVNZTkNfREFUQV9TVFJVQ1QoR2V0UGx1Z2luc0FzeW5jRGF0YSkKIAogc3RhdGljIHZvaWQg
d2Via2l0V2ViQ29udGV4dEdldFBsdWdpblRocmVhZChHU2ltcGxlQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgR09iamVjdCogb2JqZWN0LCBHQ2FuY2VsbGFibGUqKQogewpAQCAtMjk0LDggKzI4Miw4IEBA
IHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2dldF9wbHVnaW5zKFdlYktpdFdlYkNvbnRleHQqIGNv
bnRleHQsIEdDYW5jZWxsYWJsZSogY2FuCiAKICAgICBHUmVmUHRyPEdTaW1wbGVBc3luY1Jlc3Vs
dD4gcmVzdWx0ID0gYWRvcHRHUmVmKGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9uZXcoR19PQkpFQ1Qo
Y29udGV4dCksIGNhbGxiYWNrLCB1c2VyRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxncG9pbnRlcj4od2Via2l0X3dlYl9jb250ZXh0X2dldF9wbHVnaW5zKSkpOwot
ICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9zZXRfb3BfcmVzX2dwb2ludGVyKHJlc3VsdC5nZXQo
KSwgZ2V0UGx1Z2luc0FzeW5jRGF0YUNyZWF0ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGdl
dFBsdWdpbnNBc3luY0RhdGFEZXN0cm95KSk7CisgICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3Nl
dF9vcF9yZXNfZ3BvaW50ZXIocmVzdWx0LmdldCgpLCBjcmVhdGVHZXRQbHVnaW5zQXN5bmNEYXRh
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZGVzdHJveUdldFBsdWdpbnNBc3luY0RhdGEpKTsK
ICAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfcnVuX2luX3RocmVhZChyZXN1bHQuZ2V0KCksIHdl
YmtpdFdlYkNvbnRleHRHZXRQbHVnaW5UaHJlYWQsIEdfUFJJT1JJVFlfREVGQVVMVCwgY2FuY2Vs
bGFibGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJSZXNvdXJjZS5jcHAKaW5kZXggNmJkNTFmYS4uN2ZiZTI4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViUmVzb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlJlc291cmNl
LmNwcApAQCAtMzAxLDE2ICszMDEsMjggQEAgV2ViS2l0VVJJUmVzcG9uc2UqIHdlYmtpdF93ZWJf
cmVzb3VyY2VfZ2V0X3Jlc3BvbnNlKFdlYktpdFdlYlJlc291cmNlKiByZXNvdXJjZSkKICAgICBy
ZXR1cm4gcmVzb3VyY2UtPnByaXYtPnJlc3BvbnNlLmdldCgpOwogfQogCi1zdGF0aWMgdm9pZCBy
ZXNvdXJjZURhdGFDYWxsYmFjayhXS0RhdGFSZWYgZGF0YSwgV0tFcnJvclJlZiwgdm9pZCogY29u
dGV4dCkKK3N0cnVjdCBSZXNvdXJjZUdldERhdGFBc3luY0RhdGEgeworICAgIFdLRGF0YVJlZiB3
a0RhdGE7CisgICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IGNhbmNlbGxhYmxlOworfTsKK1dFQktJ
VF9ERUZJTkVfQVNZTkNfREFUQV9TVFJVQ1QoUmVzb3VyY2VHZXREYXRhQXN5bmNEYXRhKQorCitz
dGF0aWMgdm9pZCByZXNvdXJjZURhdGFDYWxsYmFjayhXS0RhdGFSZWYgd2tEYXRhLCBXS0Vycm9y
UmVmLCB2b2lkKiBjb250ZXh0KQogewogICAgIEdSZWZQdHI8R1NpbXBsZUFzeW5jUmVzdWx0PiBy
ZXN1bHQgPSBhZG9wdEdSZWYoR19TSU1QTEVfQVNZTkNfUkVTVUxUKGNvbnRleHQpKTsKLSAgICBn
X3NpbXBsZV9hc3luY19yZXN1bHRfc2V0X29wX3Jlc19ncG9pbnRlcihyZXN1bHQuZ2V0KCksIGNv
bnN0X2Nhc3Q8T3BhcXVlV0tEYXRhKj4oZGF0YSksIDApOworICAgIFJlc291cmNlR2V0RGF0YUFz
eW5jRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PFJlc291cmNlR2V0RGF0YUFzeW5jRGF0YSo+KGdf
c2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRfb3BfcmVzX2dwb2ludGVyKHJlc3VsdC5nZXQoKSkpOwor
ICAgIEdFcnJvciogZXJyb3IgPSAwOworICAgIGlmIChnX2NhbmNlbGxhYmxlX3NldF9lcnJvcl9p
Zl9jYW5jZWxsZWQoZGF0YS0+Y2FuY2VsbGFibGUuZ2V0KCksICZlcnJvcikpCisgICAgICAgIGdf
c2ltcGxlX2FzeW5jX3Jlc3VsdF90YWtlX2Vycm9yKHJlc3VsdC5nZXQoKSwgZXJyb3IpOworICAg
IGVsc2UKKyAgICAgICAgZGF0YS0+d2tEYXRhID0gd2tEYXRhOwogICAgIGdfc2ltcGxlX2FzeW5j
X3Jlc3VsdF9jb21wbGV0ZShyZXN1bHQuZ2V0KCkpOwogfQogCiAvKioKICAqIHdlYmtpdF93ZWJf
cmVzb3VyY2VfZ2V0X2RhdGE6CiAgKiBAcmVzb3VyY2U6IGEgI1dlYktpdFdlYlJlc291cmNlCisg
KiBAY2FuY2VsbGFibGU6IChhbGxvdy1ub25lKTogYSAjR0NhbmNlbGxhYmxlIG9yICVOVUxMIHRv
IGlnbm9yZQogICogQGNhbGxiYWNrOiAoc2NvcGUgYXN5bmMpOiBhICNHQXN5bmNSZWFkeUNhbGxi
YWNrIHRvIGNhbGwgd2hlbiB0aGUgcmVxdWVzdCBpcyBzYXRpc2ZpZWQKICAqIEB1c2VyX2RhdGE6
IChjbG9zdXJlKTogdGhlIGRhdGEgdG8gcGFzcyB0byBjYWxsYmFjayBmdW5jdGlvbgogICoKQEAg
LTMxOSwxMiArMzMxLDE1IEBAIHN0YXRpYyB2b2lkIHJlc291cmNlRGF0YUNhbGxiYWNrKFdLRGF0
YVJlZiBkYXRhLCBXS0Vycm9yUmVmLCB2b2lkKiBjb250ZXh0KQogICogV2hlbiB0aGUgb3BlcmF0
aW9uIGlzIGZpbmlzaGVkLCBAY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQuIFlvdSBjYW4gdGhlbiBj
YWxsCiAgKiB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF9kYXRhX2ZpbmlzaCgpIHRvIGdldCB0aGUg
cmVzdWx0IG9mIHRoZSBvcGVyYXRpb24uCiAgKi8KLXZvaWQgd2Via2l0X3dlYl9yZXNvdXJjZV9n
ZXRfZGF0YShXZWJLaXRXZWJSZXNvdXJjZSogcmVzb3VyY2UsIEdBc3luY1JlYWR5Q2FsbGJhY2sg
Y2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhKQordm9pZCB3ZWJraXRfd2ViX3Jlc291cmNlX2dl
dF9kYXRhKFdlYktpdFdlYlJlc291cmNlKiByZXNvdXJjZSwgR0NhbmNlbGxhYmxlKiBjYW5jZWxs
YWJsZSwgR0FzeW5jUmVhZHlDYWxsYmFjayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEpCiB7
CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1JFU09VUkNFKHJlc291cmNlKSk7
CiAKICAgICBHU2ltcGxlQXN5bmNSZXN1bHQqIHJlc3VsdCA9IGdfc2ltcGxlX2FzeW5jX3Jlc3Vs
dF9uZXcoR19PQkpFQ1QocmVzb3VyY2UpLCBjYWxsYmFjaywgdXNlckRhdGEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8Z3BvaW50ZXI+KHdlYmtpdF93ZWJfcmVzb3VyY2VfZ2V0X2RhdGEpKTsKKyAgICBS
ZXNvdXJjZUdldERhdGFBc3luY0RhdGEqIGRhdGEgPSBjcmVhdGVSZXNvdXJjZUdldERhdGFBc3lu
Y0RhdGEoKTsKKyAgICBkYXRhLT5jYW5jZWxsYWJsZSA9IGNhbmNlbGxhYmxlOworICAgIGdfc2lt
cGxlX2FzeW5jX3Jlc3VsdF9zZXRfb3BfcmVzX2dwb2ludGVyKHJlc3VsdCwgZGF0YSwgcmVpbnRl
cnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZGVzdHJveVJlc291cmNlR2V0RGF0YUFzeW5jRGF0
YSkpOwogICAgIGlmIChyZXNvdXJjZS0+cHJpdi0+aXNNYWluUmVzb3VyY2UpCiAgICAgICAgIFdL
RnJhbWVHZXRNYWluUmVzb3VyY2VEYXRhKHJlc291cmNlLT5wcml2LT53a0ZyYW1lLmdldCgpLCBy
ZXNvdXJjZURhdGFDYWxsYmFjaywgcmVzdWx0KTsKICAgICBlbHNlIHsKQEAgLTM1Niw4ICszNzEs
OCBAQCBndWNoYXIqIHdlYmtpdF93ZWJfcmVzb3VyY2VfZ2V0X2RhdGFfZmluaXNoKFdlYktpdFdl
YlJlc291cmNlKiByZXNvdXJjZSwgR0FzeW5jUgogICAgIGlmIChnX3NpbXBsZV9hc3luY19yZXN1
bHRfcHJvcGFnYXRlX2Vycm9yKHNpbXBsZSwgZXJyb3IpKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIFdLRGF0YVJlZiB3a0RhdGEgPSBzdGF0aWNfY2FzdDxXS0RhdGFSZWY+KGdfc2ltcGxlX2Fz
eW5jX3Jlc3VsdF9nZXRfb3BfcmVzX2dwb2ludGVyKHNpbXBsZSkpOworICAgIFJlc291cmNlR2V0
RGF0YUFzeW5jRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PFJlc291cmNlR2V0RGF0YUFzeW5jRGF0
YSo+KGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRfb3BfcmVzX2dwb2ludGVyKHNpbXBsZSkpOwog
ICAgIGlmIChsZW5ndGgpCi0gICAgICAgICpsZW5ndGggPSBXS0RhdGFHZXRTaXplKHdrRGF0YSk7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGd1Y2hhcio+KGdfbWVtZHVwKFdLRGF0YUdldEJ5dGVz
KHdrRGF0YSksIFdLRGF0YUdldFNpemUod2tEYXRhKSkpOworICAgICAgICAqbGVuZ3RoID0gV0tE
YXRhR2V0U2l6ZShkYXRhLT53a0RhdGEpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxndWNoYXIq
PihnX21lbWR1cChXS0RhdGFHZXRCeXRlcyhkYXRhLT53a0RhdGEpLCBXS0RhdGFHZXRTaXplKGRh
dGEtPndrRGF0YSkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJSZXNvdXJjZS5oCmluZGV4IDM0YWY3NmUuLjFjZmFkYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlJlc291cmNlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViUmVzb3VyY2Uu
aApAQCAtNjMsNiArNjMsNyBAQCB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF9yZXNwb25zZSAgICAo
V2ViS2l0V2ViUmVzb3VyY2UgICpyZXNvdXJjZSk7CiAKIFdFQktJVF9BUEkgdm9pZAogd2Via2l0
X3dlYl9yZXNvdXJjZV9nZXRfZGF0YSAgICAgICAgKFdlYktpdFdlYlJlc291cmNlICAqcmVzb3Vy
Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NhbmNlbGxhYmxlICAg
ICAgICpjYW5jZWxsYWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
QXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdwb2ludGVyICAgICAgICAgICAgdXNlcl9kYXRhKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCA1NmIy
MWRmLi5hYmVlM2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMTYxOCwxMCArMTYxOCwyMSBAQCBnZG91YmxlIHdlYmtp
dF93ZWJfdmlld19nZXRfem9vbV9sZXZlbChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIHJl
dHVybiB6b29tVGV4dE9ubHkgPyBXS1BhZ2VHZXRUZXh0Wm9vbUZhY3Rvcih3a1BhZ2UpIDogV0tQ
YWdlR2V0UGFnZVpvb21GYWN0b3Iod2tQYWdlKTsKIH0KIAorc3RydWN0IFZhbGlkYXRlRWRpdGlu
Z0NvbW1hbmRBc3luY0RhdGEgeworICAgIGJvb2wgaXNFbmFibGVkOworICAgIEdSZWZQdHI8R0Nh
bmNlbGxhYmxlPiBjYW5jZWxsYWJsZTsKK307CitXRUJLSVRfREVGSU5FX0FTWU5DX0RBVEFfU1RS
VUNUKFZhbGlkYXRlRWRpdGluZ0NvbW1hbmRBc3luY0RhdGEpCisKIHN0YXRpYyB2b2lkIGRpZFZh
bGlkYXRlQ29tbWFuZChXS1N0cmluZ1JlZiBjb21tYW5kLCBib29sIGlzRW5hYmxlZCwgaW50MzJf
dCBzdGF0ZSwgV0tFcnJvclJlZiwgdm9pZCogY29udGV4dCkKIHsKICAgICBHUmVmUHRyPEdTaW1w
bGVBc3luY1Jlc3VsdD4gcmVzdWx0ID0gYWRvcHRHUmVmKEdfU0lNUExFX0FTWU5DX1JFU1VMVChj
b250ZXh0KSk7Ci0gICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3NldF9vcF9yZXNfZ2Jvb2xlYW4o
cmVzdWx0LmdldCgpLCBpc0VuYWJsZWQpOworICAgIFZhbGlkYXRlRWRpdGluZ0NvbW1hbmRBc3lu
Y0RhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxWYWxpZGF0ZUVkaXRpbmdDb21tYW5kQXN5bmNEYXRh
Kj4oZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9vcF9yZXNfZ3BvaW50ZXIocmVzdWx0LmdldCgp
KSk7CisgICAgR0Vycm9yKiBlcnJvciA9IDA7CisgICAgaWYgKGdfY2FuY2VsbGFibGVfc2V0X2Vy
cm9yX2lmX2NhbmNlbGxlZChkYXRhLT5jYW5jZWxsYWJsZS5nZXQoKSwgJmVycm9yKSkKKyAgICAg
ICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3Rha2VfZXJyb3IocmVzdWx0LmdldCgpLCBlcnJvcik7
CisgICAgZWxzZQorICAgICAgICBkYXRhLT5pc0VuYWJsZWQgPSBpc0VuYWJsZWQ7CiAgICAgZ19z
aW1wbGVfYXN5bmNfcmVzdWx0X2NvbXBsZXRlKHJlc3VsdC5nZXQoKSk7CiB9CiAKQEAgLTE2Mjks
NiArMTY0MCw3IEBAIHN0YXRpYyB2b2lkIGRpZFZhbGlkYXRlQ29tbWFuZChXS1N0cmluZ1JlZiBj
b21tYW5kLCBib29sIGlzRW5hYmxlZCwgaW50MzJfdCBzdGF0CiAgKiB3ZWJraXRfd2ViX3ZpZXdf
Y2FuX2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kOgogICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJW
aWV3CiAgKiBAY29tbWFuZDogdGhlIGNvbW1hbmQgdG8gY2hlY2sKKyAqIEBjYW5jZWxsYWJsZTog
KGFsbG93LW5vbmUpOiBhICNHQ2FuY2VsbGFibGUgb3IgJU5VTEwgdG8gaWdub3JlCiAgKiBAY2Fs
bGJhY2s6IChzY29wZSBhc3luYyk6IGEgI0dBc3luY1JlYWR5Q2FsbGJhY2sgdG8gY2FsbCB3aGVu
IHRoZSByZXF1ZXN0IGlzIHNhdGlzZmllZAogICogQHVzZXJfZGF0YTogKGNsb3N1cmUpOiB0aGUg
ZGF0YSB0byBwYXNzIHRvIGNhbGxiYWNrIGZ1bmN0aW9uCiAgKgpAQCAtMTYzNywxMyArMTY0OSwx
NyBAQCBzdGF0aWMgdm9pZCBkaWRWYWxpZGF0ZUNvbW1hbmQoV0tTdHJpbmdSZWYgY29tbWFuZCwg
Ym9vbCBpc0VuYWJsZWQsIGludDMyX3Qgc3RhdAogICogV2hlbiB0aGUgb3BlcmF0aW9uIGlzIGZp
bmlzaGVkLCBAY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQuIFlvdSBjYW4gdGhlbiBjYWxsCiAgKiB3
ZWJraXRfd2ViX3ZpZXdfY2FuX2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kX2ZpbmlzaCgpIHRvIGdl
dCB0aGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24uCiAgKi8KLXZvaWQgd2Via2l0X3dlYl92aWV3
X2Nhbl9leGVjdXRlX2VkaXRpbmdfY29tbWFuZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25z
dCBjaGFyKiBjb21tYW5kLCBHQXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1
c2VyRGF0YSkKK3ZvaWQgd2Via2l0X3dlYl92aWV3X2Nhbl9leGVjdXRlX2VkaXRpbmdfY29tbWFu
ZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBjaGFyKiBjb21tYW5kLCBHQ2FuY2VsbGFi
bGUqIGNhbmNlbGxhYmxlLCBHQXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1
c2VyRGF0YSkKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJW
aWV3KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChjb21tYW5kKTsKIAogICAgIEdTaW1wbGVBc3lu
Y1Jlc3VsdCogcmVzdWx0ID0gZ19zaW1wbGVfYXN5bmNfcmVzdWx0X25ldyhHX09CSkVDVCh3ZWJW
aWV3KSwgY2FsbGJhY2ssIHVzZXJEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGdwb2ludGVyPih3
ZWJraXRfd2ViX3ZpZXdfY2FuX2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKSk7CisgICAgVmFsaWRh
dGVFZGl0aW5nQ29tbWFuZEFzeW5jRGF0YSogZGF0YSA9IGNyZWF0ZVZhbGlkYXRlRWRpdGluZ0Nv
bW1hbmRBc3luY0RhdGEoKTsKKyAgICBkYXRhLT5jYW5jZWxsYWJsZSA9IGNhbmNlbGxhYmxlOwor
ICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9zZXRfb3BfcmVzX2dwb2ludGVyKHJlc3VsdCwgZGF0
YSwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZGVzdHJveVZhbGlkYXRlRWRpdGlu
Z0NvbW1hbmRBc3luY0RhdGEpKTsKKwogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYmtpdFdl
YlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSk7CiAgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrQ29tbWFuZChBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZyhjb21tYW5kKSk7CiAgICAgV0tQYWdlVmFsaWRhdGVDb21tYW5kKHRvQVBJ
KHBhZ2UpLCB3a0NvbW1hbmQuZ2V0KCksIHJlc3VsdCwgZGlkVmFsaWRhdGVDb21tYW5kKTsKQEAg
LTE2NjksNyArMTY4NSw5IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19jYW5fZXhlY3V0ZV9l
ZGl0aW5nX2NvbW1hbmRfZmluaXNoKFdlYktpdFdlYlZpZXcqIHdlYlZpCiAKICAgICBpZiAoZ19z
aW1wbGVfYXN5bmNfcmVzdWx0X3Byb3BhZ2F0ZV9lcnJvcihzaW1wbGUsIGVycm9yKSkKICAgICAg
ICAgcmV0dXJuIEZBTFNFOwotICAgIHJldHVybiBnX3NpbXBsZV9hc3luY19yZXN1bHRfZ2V0X29w
X3Jlc19nYm9vbGVhbihzaW1wbGUpOworCisgICAgVmFsaWRhdGVFZGl0aW5nQ29tbWFuZEFzeW5j
RGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PFZhbGlkYXRlRWRpdGluZ0NvbW1hbmRBc3luY0RhdGEq
PihnX3NpbXBsZV9hc3luY19yZXN1bHRfZ2V0X29wX3Jlc19ncG9pbnRlcihzaW1wbGUpKTsKKyAg
ICByZXR1cm4gZGF0YS0+aXNFbmFibGVkOwogfQogCiAvKioKQEAgLTE3MzAsMTUgKzE3NDgsMjkg
QEAgSlNHbG9iYWxDb250ZXh0UmVmIHdlYmtpdF93ZWJfdmlld19nZXRfamF2YXNjcmlwdF9nbG9i
YWxfY29udGV4dChXZWJLaXRXZWJWaWV3KgogICAgIHJldHVybiB3ZWJWaWV3LT5wcml2LT5qYXZh
c2NyaXB0R2xvYmFsQ29udGV4dDsKIH0KIAorc3RydWN0IFJ1bkphdmFTY3JpcHRBc3luY0RhdGEg
eworICAgIH5SdW5KYXZhU2NyaXB0QXN5bmNEYXRhKCkKKyAgICB7CisgICAgICAgIGlmIChzY3Jp
cHRSZXN1bHQpCisgICAgICAgICAgICB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfdW5yZWYoc2Ny
aXB0UmVzdWx0KTsKKyAgICB9CisKKyAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBzY3JpcHRS
ZXN1bHQ7CisgICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IGNhbmNlbGxhYmxlOworfTsKK1dFQktJ
VF9ERUZJTkVfQVNZTkNfREFUQV9TVFJVQ1QoUnVuSmF2YVNjcmlwdEFzeW5jRGF0YSkKKwogc3Rh
dGljIHZvaWQgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDYWxsYmFjayhXS1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZVJlZiB3a1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiwgdm9pZCog
Y29udGV4dCkKIHsKICAgICBHUmVmUHRyPEdTaW1wbGVBc3luY1Jlc3VsdD4gcmVzdWx0ID0gYWRv
cHRHUmVmKEdfU0lNUExFX0FTWU5DX1JFU1VMVChjb250ZXh0KSk7Ci0gICAgaWYgKHdrU2VyaWFs
aXplZFNjcmlwdFZhbHVlKSB7CisgICAgUnVuSmF2YVNjcmlwdEFzeW5jRGF0YSogZGF0YSA9IHN0
YXRpY19jYXN0PFJ1bkphdmFTY3JpcHRBc3luY0RhdGEqPihnX3NpbXBsZV9hc3luY19yZXN1bHRf
Z2V0X29wX3Jlc19ncG9pbnRlcihyZXN1bHQuZ2V0KCkpKTsKKyAgICBHRXJyb3IqIGVycm9yID0g
MDsKKyAgICBpZiAoZ19jYW5jZWxsYWJsZV9zZXRfZXJyb3JfaWZfY2FuY2VsbGVkKGRhdGEtPmNh
bmNlbGxhYmxlLmdldCgpLCAmZXJyb3IpKQorICAgICAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRf
dGFrZV9lcnJvcihyZXN1bHQuZ2V0KCksIGVycm9yKTsKKyAgICBlbHNlIGlmICh3a1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSkgewogICAgICAgICBHUmVmUHRyPFdlYktpdFdlYlZpZXc+IHdlYlZpZXcg
PSBhZG9wdEdSZWYoV0VCS0lUX1dFQl9WSUVXKGdfYXN5bmNfcmVzdWx0X2dldF9zb3VyY2Vfb2Jq
ZWN0KEdfQVNZTkNfUkVTVUxUKHJlc3VsdC5nZXQoKSkpKSk7Ci0gICAgICAgIFdlYktpdEphdmFz
Y3JpcHRSZXN1bHQqIHNjcmlwdFJlc3VsdCA9IHdlYmtpdEphdmFzY3JpcHRSZXN1bHRDcmVhdGUo
d2ViVmlldy5nZXQoKSwgd2tTZXJpYWxpemVkU2NyaXB0VmFsdWUpOwotICAgICAgICBnX3NpbXBs
ZV9hc3luY19yZXN1bHRfc2V0X29wX3Jlc19ncG9pbnRlcihyZXN1bHQuZ2V0KCksIHNjcmlwdFJl
c3VsdCwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4od2Via2l0X2phdmFzY3JpcHRf
cmVzdWx0X3VucmVmKSk7CisgICAgICAgIGRhdGEtPnNjcmlwdFJlc3VsdCA9IHdlYmtpdEphdmFz
Y3JpcHRSZXN1bHRDcmVhdGUod2ViVmlldy5nZXQoKSwgd2tTZXJpYWxpemVkU2NyaXB0VmFsdWUp
OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEdFcnJvciogZXJyb3IgPSAwOwogICAgICAgICBnX3Nl
dF9lcnJvcl9saXRlcmFsKCZlcnJvciwgV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1IsIFdFQktJVF9K
QVZBU0NSSVBUX0VSUk9SX1NDUklQVF9GQUlMRUQsIF8oIkFuIGV4Y2VwdGlvbiB3YXMgcmFpc2Vk
IGluIEphdmFTY3JpcHQiKSk7CiAgICAgICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF90YWtlX2Vy
cm9yKHJlc3VsdC5nZXQoKSwgZXJyb3IpOwogICAgIH0KQEAgLTE3NDksNiArMTc4MSw3IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soV0tTZXJpYWxpemVk
U2NyaXB0VmFsdWVSZWYgd2tTZXJpCiAgKiB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQ6
CiAgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKICAqIEBzY3JpcHQ6IHRoZSBzY3JpcHQg
dG8gcnVuCisgKiBAY2FuY2VsbGFibGU6IChhbGxvdy1ub25lKTogYSAjR0NhbmNlbGxhYmxlIG9y
ICVOVUxMIHRvIGlnbm9yZQogICogQGNhbGxiYWNrOiAoc2NvcGUgYXN5bmMpOiBhICNHQXN5bmNS
ZWFkeUNhbGxiYWNrIHRvIGNhbGwgd2hlbiB0aGUgc2NyaXB0IGZpbmlzaGVkCiAgKiBAdXNlcl9k
YXRhOiAoY2xvc3VyZSk6IHRoZSBkYXRhIHRvIHBhc3MgdG8gY2FsbGJhY2sgZnVuY3Rpb24KICAq
CkBAIC0xNzU3LDcgKzE3OTAsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3UnVuSmF2YVNj
cmlwdENhbGxiYWNrKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHdrU2VyaQogICogV2hlbiB0
aGUgb3BlcmF0aW9uIGlzIGZpbmlzaGVkLCBAY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQuIFlvdSBj
YW4gdGhlbiBjYWxsCiAgKiB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHRfZmluaXNoKCkg
dG8gZ2V0IHRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbi4KICAqLwotdm9pZCB3ZWJraXRfd2Vi
X3ZpZXdfcnVuX2phdmFzY3JpcHQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIq
IHNjcmlwdCwgR0FzeW5jUmVhZHlDYWxsYmFjayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEp
Cit2b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdChXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBjb25zdCBnY2hhciogc2NyaXB0LCBHQ2FuY2VsbGFibGUqIGNhbmNlbGxhYmxlLCBHQXN5
bmNSZWFkeUNhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1c2VyRGF0YSkKIHsKICAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CiAgICAgZ19yZXR1cm5f
aWZfZmFpbChzY3JpcHQpOwpAQCAtMTc2Niw2ICsxNzk5LDkgQEAgdm9pZCB3ZWJraXRfd2ViX3Zp
ZXdfcnVuX2phdmFzY3JpcHQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIqIHNj
cmlwdCwKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tTY3JpcHQgPSBhZG9wdFdLKFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjcmlwdCkpOwogICAgIEdTaW1wbGVBc3luY1Jl
c3VsdCogcmVzdWx0ID0gZ19zaW1wbGVfYXN5bmNfcmVzdWx0X25ldyhHX09CSkVDVCh3ZWJWaWV3
KSwgY2FsbGJhY2ssIHVzZXJEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGdwb2ludGVyPih3ZWJr
aXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQpKTsKKyAgICBSdW5KYXZhU2NyaXB0QXN5bmNEYXRh
KiBkYXRhID0gY3JlYXRlUnVuSmF2YVNjcmlwdEFzeW5jRGF0YSgpOworICAgIGRhdGEtPmNhbmNl
bGxhYmxlID0gY2FuY2VsbGFibGU7CisgICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3NldF9vcF9y
ZXNfZ3BvaW50ZXIocmVzdWx0LCBkYXRhLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5
PihkZXN0cm95UnVuSmF2YVNjcmlwdEFzeW5jRGF0YSkpOwogICAgIFdLUGFnZVJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZSh3a1BhZ2UsIHdrU2NyaXB0LmdldCgpLCByZXN1bHQsIHdlYmtpdFdlYlZp
ZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2spOwogfQogCkBAIC0xODQ0LDggKzE4ODAsOCBAQCBXZWJL
aXRKYXZhc2NyaXB0UmVzdWx0KiB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHRfZmluaXNo
KFdlYktpdFdlYlZpZXcqIHdlYgogICAgIGlmIChnX3NpbXBsZV9hc3luY19yZXN1bHRfcHJvcGFn
YXRlX2Vycm9yKHNpbXBsZVJlc3VsdCwgZXJyb3IpKQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIHNjcmlwdFJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYktp
dEphdmFzY3JpcHRSZXN1bHQqPihnX3NpbXBsZV9hc3luY19yZXN1bHRfZ2V0X29wX3Jlc19ncG9p
bnRlcihzaW1wbGVSZXN1bHQpKTsKLSAgICByZXR1cm4gc2NyaXB0UmVzdWx0ID8gd2Via2l0X2ph
dmFzY3JpcHRfcmVzdWx0X3JlZihzY3JpcHRSZXN1bHQpIDogMDsKKyAgICBSdW5KYXZhU2NyaXB0
QXN5bmNEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8UnVuSmF2YVNjcmlwdEFzeW5jRGF0YSo+KGdf
c2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRfb3BfcmVzX2dwb2ludGVyKHNpbXBsZVJlc3VsdCkpOwor
ICAgIHJldHVybiBkYXRhLT5zY3JpcHRSZXN1bHQgPyB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRf
cmVmKGRhdGEtPnNjcmlwdFJlc3VsdCkgOiAwOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCBjNTYyMDViLi45MjI2
NWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlldy5oCkBAIC0yNjMsNiArMjYzLDcgQEAgd2Via2l0X3dlYl92aWV3X2dldF96b29tX2xldmVs
ICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKncKIFdFQktJ
VF9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X2Nhbl9leGVjdXRlX2VkaXRpbmdfY29tbWFuZCAg
ICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAg
ICAgICAgICAgKmNvbW1hbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0NhbmNlbGxhYmxlICAgICAgICAgICAgICAqY2FuY2VsbGFibGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5j
UmVhZHlDYWxsYmFjayAgICAgICAgY2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAgICAgICAgICAgdXNl
cl9kYXRhKTsKIApAQCAtMjg0LDYgKzI4NSw3IEBAIHdlYmtpdF93ZWJfdmlld19nZXRfamF2YXNj
cmlwdF9nbG9iYWxfY29udGV4dCAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3CiBX
RUJLSVRfQVBJIHZvaWQKIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdCAgICAgICAgICAg
ICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAg
ICAgICAgICAgICAgICpzY3JpcHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0NhbmNlbGxhYmxlICAgICAgICAgICAgICAqY2FuY2VsbGFibGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Fz
eW5jUmVhZHlDYWxsYmFjayAgICAgICAgY2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAgICAgICAgICAg
dXNlcl9kYXRhKTsKIFdFQktJVF9BUEkgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCAqCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0Q29va2llTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0Q29v
a2llTWFuYWdlci5jcHAKaW5kZXggNmQyZWNmNS4uMWRkZmQ4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdENvb2tpZU1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RDb29raWVNYW5h
Z2VyLmNwcApAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgV2ViS2l0Q29va2llQWNjZXB0
UG9saWN5IGdldEFjY2VwdFBvbGljeSgpCiAgICAgewogICAgICAgICBtX2FjY2VwdFBvbGljeSA9
IFdFQktJVF9DT09LSUVfUE9MSUNZX0FDQ0VQVF9OT19USElSRF9QQVJUWTsKLSAgICAgICAgd2Vi
a2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9hY2NlcHRfcG9saWN5KG1fY29va2llTWFuYWdlciwgZ2V0
QWNjZXB0UG9saWN5UmVhZHlDYWxsYmFjaywgdGhpcyk7CisgICAgICAgIHdlYmtpdF9jb29raWVf
bWFuYWdlcl9nZXRfYWNjZXB0X3BvbGljeShtX2Nvb2tpZU1hbmFnZXIsIDAsIGdldEFjY2VwdFBv
bGljeVJlYWR5Q2FsbGJhY2ssIHRoaXMpOwogICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWlu
TG9vcCk7CiAKICAgICAgICAgcmV0dXJuIG1fYWNjZXB0UG9saWN5OwpAQCAtMTAwLDcgKzEwMCw3
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGdfc3RyZnJlZXYobV9kb21haW5zKTsKICAgICAg
ICAgbV9kb21haW5zID0gMDsKLSAgICAgICAgd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9kb21h
aW5zX3dpdGhfY29va2llcyhtX2Nvb2tpZU1hbmFnZXIsIGdldERvbWFpbnNSZWFkeUNhbGxiYWNr
LCB0aGlzKTsKKyAgICAgICAgd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9kb21haW5zX3dpdGhf
Y29va2llcyhtX2Nvb2tpZU1hbmFnZXIsIDAsIGdldERvbWFpbnNSZWFkeUNhbGxiYWNrLCB0aGlz
KTsKICAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwogCiAgICAgICAgIHJldHVy
biBtX2RvbWFpbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy9UZXN0UmVzb3VyY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL3Rlc3RzL1Rlc3RSZXNvdXJjZXMuY3BwCmluZGV4IGUwOGNmYjkuLjM5ODQxNzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RSZXNvdXJj
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RS
ZXNvdXJjZXMuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2hlY2tS
ZXNvdXJjZURhdGEoV2ViS2l0V2ViUmVzb3VyY2UqIHJlc291cmNlKQogICAgIHsKICAgICAgICAg
bV9yZXNvdXJjZURhdGFTaXplID0gMDsKLSAgICAgICAgd2Via2l0X3dlYl9yZXNvdXJjZV9nZXRf
ZGF0YShyZXNvdXJjZSwgcmVzb3VyY2VHZXREYXRhQ2FsbGJhY2ssIHRoaXMpOworICAgICAgICB3
ZWJraXRfd2ViX3Jlc291cmNlX2dldF9kYXRhKHJlc291cmNlLCAwLCByZXNvdXJjZUdldERhdGFD
YWxsYmFjaywgdGhpcyk7CiAgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKIAog
ICAgICAgICBjb25zdCBjaGFyKiB1cmkgPSB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF91cmkocmVz
b3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IGQ2NWU4YTYuLmU0YzYwYmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJL
aXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTY3NSw3ICs2NzUsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZXF1ZXN0RnVsbFNjcmVlbkFuZFdhaXRVbnRpbEVudGVyZWRGdWxsU2NyZWVuKCkKICAg
ICB7CiAgICAgICAgIG1fZXZlbnQgPSBOb25lOwotICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfcnVu
X2phdmFzY3JpcHQobV93ZWJWaWV3LCAiZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LndlYmtpdFJl
cXVlc3RGdWxsU2NyZWVuKCk7IiwgMCwgMCk7CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19ydW5f
amF2YXNjcmlwdChtX3dlYlZpZXcsICJkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQud2Via2l0UmVx
dWVzdEZ1bGxTY3JlZW4oKTsiLCAwLCAwLCAwKTsKICAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1f
bWFpbkxvb3ApOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvVGVzdFdlYlZpZXdFZGl0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYlZpZXdFZGl0b3IuY3BwCmluZGV4IDY0NDU4NGEu
Ljk3ZWJlNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL1Rlc3RXZWJWaWV3RWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9UZXN0V2ViVmlld0VkaXRvci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVi
bGljOgogICAgIGJvb2wgY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKGNvbnN0IGNoYXIqIGNvbW1h
bmQpCiAgICAgewogICAgICAgICBtX2NhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZCA9IGZhbHNlOwot
ICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfY2FuX2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKG1fd2Vi
VmlldywgY29tbWFuZCwgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihjYW5F
eGVjdXRlRWRpdGluZ0NvbW1hbmRSZWFkeUNhbGxiYWNrKSwgdGhpcyk7CisgICAgICAgIHdlYmtp
dF93ZWJfdmlld19jYW5fZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQobV93ZWJWaWV3LCBjb21tYW5k
LCAwLCByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KGNhbkV4ZWN1dGVFZGl0
aW5nQ29tbWFuZFJlYWR5Q2FsbGJhY2spLCB0aGlzKTsKICAgICAgICAgZ19tYWluX2xvb3BfcnVu
KG1fbWFpbkxvb3ApOwogICAgICAgICByZXR1cm4gbV9jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQ7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvV2ViVmlld1Rlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvV2ViVmlld1Rlc3QuY3BwCmluZGV4IDdhOWU0OWIuLjgzZDRiMDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJWaWV3VGVzdC5jcHAK
QEAgLTI2OCw3ICsyNjgsNyBAQCBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBXZWJWaWV3VGVzdDo6
cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYQogICAgICAgICB3ZWJr
aXRfamF2YXNjcmlwdF9yZXN1bHRfdW5yZWYobV9qYXZhc2NyaXB0UmVzdWx0KTsKICAgICBtX2ph
dmFzY3JpcHRSZXN1bHQgPSAwOwogICAgIG1famF2YXNjcmlwdEVycm9yID0gZXJyb3I7Ci0gICAg
d2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0KG1fd2ViVmlldywgamF2YXNjcmlwdCwgcmVp
bnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihydW5KYXZhU2NyaXB0UmVhZHlDYWxs
YmFjayksIHRoaXMpOworICAgIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdChtX3dlYlZp
ZXcsIGphdmFzY3JpcHQsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4o
cnVuSmF2YVNjcmlwdFJlYWR5Q2FsbGJhY2spLCB0aGlzKTsKICAgICBnX21haW5fbG9vcF9ydW4o
bV9tYWluTG9vcCk7CiAKICAgICByZXR1cm4gbV9qYXZhc2NyaXB0UmVzdWx0OwpkaWZmIC0tZ2l0
IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyBiL1Rvb2xzL01pbmlCcm93
c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKaW5kZXggZGEyMzMzMi4uNjgxMDE2NiAxMDA2NDQKLS0t
IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYworKysgYi9Ub29scy9NaW5p
QnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCkBAIC01MDgsNSArNTA4LDUgQEAgdm9pZCBicm93
c2VyX3dpbmRvd19sb2FkX3VyaShCcm93c2VyV2luZG93ICp3aW5kb3csIGNvbnN0IGNoYXIgKnVy
aSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHdlYmtpdF93ZWJfdmlld19ydW5famF2
YXNjcmlwdCh3aW5kb3ctPndlYlZpZXcsIHN0cnN0cih1cmksICJqYXZhc2NyaXB0OiIpLCBOVUxM
LCBOVUxMKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQod2luZG93LT53ZWJW
aWV3LCBzdHJzdHIodXJpLCAiamF2YXNjcmlwdDoiKSwgTlVMTCwgTlVMTCwgTlVMTCk7CiB9Cg==
</data>
<flag name="review"
          id="149078"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>