<?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>61690</bug_id>
          
          <creation_ts>2011-05-28 12:48:46 -0700</creation_ts>
          <short_desc>[GTK] Remove PasteboardHelperGtk</short_desc>
          <delta_ts>2011-06-02 18:12:58 -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>WebKitGTK</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>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>61734</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>gustavo</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>411882</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-28 12:48:46 -0700</bug_when>
    <thetext>PasteboardHelperGtk is an implementation of an abstract class, PasteboardHelper, that allows the GtkClipboard IDs to be defined in WebKit and used in WebCore. Instead of this convoluted approach, it would be better to simply use the default WebCore values and assert that they are equal in WebKit. The pattern is already in use -- see WebCoreSupport/AssertMatchingEnums.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411897</commentid>
    <comment_count>1</comment_count>
      <attachid>95272</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-28 13:43:26 -0700</bug_when>
    <thetext>Created attachment 95272
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414524</commentid>
    <comment_count>2</comment_count>
      <attachid>95272</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-06-02 16:15:38 -0700</bug_when>
    <thetext>Comment on attachment 95272
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=95272&amp;action=review

yay; need to go through this simplification drill on the fullscreen video stuff sometime

&gt; Source/WebCore/ChangeLog:5
&gt; +        [GTK] Remove PastboardHelperGtk

missing e on Paste

&gt; Source/WebCore/ChangeLog:15
&gt; +        * platform/Pasteboard.h: Remove GTK+ specific methods. They are no longer needed.j

trailing j

&gt; Source/WebCore/platform/gtk/PasteboardGtk.cpp:59
&gt; +    PasteboardHelper* defaultHelper = PasteboardHelper::defaultPasteboardHelper();

just a suggestion, I&apos;d use helper here instead of defaultHelper for the variable name; &apos;default&apos; doesn&apos;t really add much information</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414583</commentid>
    <comment_count>3</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-06-02 18:05:46 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 95272 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=95272&amp;action=review
&gt; 
&gt; yay; need to go through this simplification drill on the fullscreen video stuff sometime

Thanks for the review!

&gt; &gt; Source/WebCore/ChangeLog:5
&gt; &gt; +        [GTK] Remove PastboardHelperGtk
&gt; missing e on Paste

Oops! Fixed.

&gt; &gt; Source/WebCore/ChangeLog:15
&gt; &gt; +        * platform/Pasteboard.h: Remove GTK+ specific methods. They are no longer needed.j
&gt; 
&gt; trailing j

Fixed.

&gt; &gt; Source/WebCore/platform/gtk/PasteboardGtk.cpp:59
&gt; &gt; +    PasteboardHelper* defaultHelper = PasteboardHelper::defaultPasteboardHelper();
&gt; just a suggestion, I&apos;d use helper here instead of defaultHelper for the variable name; &apos;default&apos; doesn&apos;t really add much information

Made this change across the entire file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414584</commentid>
    <comment_count>4</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-06-02 18:06:10 -0700</bug_when>
    <thetext>Committed r87978: &lt;http://trac.webkit.org/changeset/87978&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95272</attachid>
            <date>2011-05-28 13:43:26 -0700</date>
            <delta_ts>2011-06-02 18:12:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61690-20110528134325.patch</filename>
            <type>text/plain</type>
            <size>37140</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODc2MTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjY2RkMDU3NmUyODRmMTk1
MThlMWQ0MjkwYzc2NmJmMDM2ZTcxNWNjLi4zZjVkZGVhZGQ4YmRjNDVhZDFkZDIxMGE1MmViYTdh
MDAwZTk4NzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDUtMjggIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIFJlbW92ZSBQYXN0Ym9hcmRIZWxwZXJH
dGsKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxNjkw
CisKKyAgICAgICAgUmVtb3ZlIHRoZSB2aXJ0dWFsIG1ldGhvZHMgZnJvbSBQYXN0ZWJvYXJkSGVs
cGVyLCBzbyB0aGF0IFBhc3RlYm9hcmRIZWxwZXJHdGsKKyAgICAgICAgY2FuIGJlIHJlbW92ZWQu
IFNpbmNlIHRoZSBHdGtDbGlwYm9hcmQgSURzIGFyZSB2ZXJpZmllZCB0byBiZSB0aGUgc2FtZSBi
ZXR3ZWVuCisgICAgICAgIFdlYktpdCBhbmQgV2ViQ29yZSB3ZSBubyBsb25nZXIgbmVlZCB0byBj
b21tdW5pY2F0ZSBmcm9tIFdlYkNvcmUgdG8gV2ViS2l0IHRvCisgICAgICAgIGdldCB0aGVtLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBpcyBqdXN0IGEgY29kZSByZWZhY3Rvci4KKwor
ICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDogUmVtb3ZlIEdUSysgc3BlY2lmaWMgbWV0
aG9kcy4gVGhleSBhcmUgbm8gbG9uZ2VyIG5lZWRlZC5qCisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L0NsaXBib2FyZEd0ay5jcHA6IFJlbW92ZSB0aGUgbV9oZWxwZXIgbWVtYmVyIGFuZCBhY2Nlc3Mg
dGhlCisgICAgICAgIFBhc3RlYm9hcmRIZWxwZXIgc2luZ2xldG9uIGRpcmVjdGx5LgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZv
cm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsv
UGFzdGVib2FyZEhlbHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVNYXJrdXBQcmVm
aXgpOiBSZW1vdmUgYW4gZXh0cmEgbGluZS4KKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRI
ZWxwZXI6OmRlZmF1bHRQYXN0ZWJvYXJkSGVscGVyKTogQWRkZWQgdGhpcyBzdGF0aWMgZ2V0dGVy
CisgICAgICAgIGZvciB0aGUgc2luZ2xldG9uLgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZEhlbHBlcjo6UGFzdGVib2FyZEhlbHBlcik6IE1vdmVkIHRoZSBjb250ZW50cyBvZiBpbml0VGFy
Z2V0TGlzdCBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEhlbHBlcjo6Z2V0Q3Vy
cmVudENsaXBib2FyZCk6IEluc3RlYWQgb2YgdGFsa2luZyB3aXRoIFdlYktpdCB0byBkZXRlcm1p
bmUKKyAgICAgICAgd2hldGhlciBvciBub3QgdG8gdXNlIHRoZSBwcmltYXJ5IHNlbGVjdGlvbiBj
bGlwYm9hcmQsIGp1c3QgdXNlIG91ciBuZXcgbWVtYmVyLgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZEhlbHBlcjo6ZmlsbFNlbGVjdGlvbkRhdGEpOiBVc2Ugb3VyIGxvY2FsIGVudW0gdG8g
Z2V0IHRoZSBJRC4KKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRIZWxwZXI6OnRhcmdldExp
c3RGb3JEYXRhT2JqZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSGVs
cGVyOjpkcm9wQXRvbXNGb3JDb250ZXh0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpnZXRD
bGlwYm9hcmRDb250ZW50c0NhbGxiYWNrKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1Bhc3RlYm9hcmRIZWxwZXIuaDogUGFzdGVib2FyZEhlbHBlciBub3cga2VlcHMgdHJhY2sgb2Yg
d2hldGhlciBvcgorICAgICAgICBub3QgdG8gdXNlIHRoZSBwcmltYXJ5IHNlbGVjdGlvbiBjbGlw
Ym9hcmQgaW50ZXJuYWxseS4KKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRIZWxwZXI6OnNl
dFVzZVByaW1hcnlTZWxlY3Rpb25DbGlwYm9hcmQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmRIZWxwZXI6OnVzZVByaW1hcnlTZWxlY3Rpb25DbGlwYm9hcmQpOiBBZGRlZC4K
KwogMjAxMS0wNS0yNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZC5oCmluZGV4IGI1YWI2OTBiNTRmNjMxNzQ4MGFhYTI0MDVhNDM1NjRlYTI5NjRkMDQu
LjRiODNhYjNmNTA2N2U4YjMyN2M1NTUzYzk1OTg0ODcyZjFjZDZmZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTExMyw4ICsxMTMsNiBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKEdUSykKLSAgICB2b2lkIHNldEhlbHBlcihQYXN0ZWJvYXJkSGVscGVy
Kik7Ci0gICAgUGFzdGVib2FyZEhlbHBlciogaGVscGVyKCk7CiAgICAgflBhc3RlYm9hcmQoKTsK
ICNlbmRpZgogCkBAIC0xMzksMTAgKzEzNyw2IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ0hS
T01JVU0pCiAgICAgUGFzdGVib2FyZFByaXZhdGUgcDsKICNlbmRpZgotCi0jaWYgUExBVEZPUk0o
R1RLKQotICAgIFBhc3RlYm9hcmRIZWxwZXIqIG1faGVscGVyOwotI2VuZGlmCiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvQ2xpcGJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9h
cmRHdGsuY3BwCmluZGV4IDI0NTgwZWEzNWZlNmE5OTNiZWRjYjYyNTZjNDllNTJhN2NjYmVmN2Iu
LjFiZjk3OGRkZGZmM2ZkOWMzYzg0NGNkODliZWZlY2Q2YjA5ZmJlMTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCkBAIC02MCw3ICs2MCw2IEBAIENs
aXBib2FyZEd0azo6Q2xpcGJvYXJkR3RrKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEd0
a0NsaXBib2FyZCogY2xpcGJvYXJkCiAgICAgOiBDbGlwYm9hcmQocG9saWN5LCBDb3B5QW5kUGFz
dGUpCiAgICAgLCBtX2RhdGFPYmplY3QoRGF0YU9iamVjdEd0azo6Zm9yQ2xpcGJvYXJkKGNsaXBi
b2FyZCkpCiAgICAgLCBtX2NsaXBib2FyZChjbGlwYm9hcmQpCi0gICAgLCBtX2hlbHBlcihQYXN0
ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5oZWxwZXIoKSkKICAgICAsIG1fZnJhbWUoZnJh
bWUpCiB7CiB9CkBAIC02OSw3ICs2OCw2IEBAIENsaXBib2FyZEd0azo6Q2xpcGJvYXJkR3RrKENs
aXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIFBhc3NSZWZQdHI8RGF0YU9iamVjdEd0CiAgICAg
OiBDbGlwYm9hcmQocG9saWN5LCBjbGlwYm9hcmRUeXBlKQogICAgICwgbV9kYXRhT2JqZWN0KGRh
dGFPYmplY3QpCiAgICAgLCBtX2NsaXBib2FyZCgwKQotICAgICwgbV9oZWxwZXIoUGFzdGVib2Fy
ZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+aGVscGVyKCkpCiAgICAgLCBtX2ZyYW1lKGZyYW1lKQog
ewogfQpAQCAtMTI0LDcgKzEyMiw3IEBAIHZvaWQgQ2xpcGJvYXJkR3RrOjpjbGVhckRhdGEoY29u
c3QgU3RyaW5nJiB0eXBlU3RyaW5nKQogICAgIH0KIAogICAgIGlmIChtX2NsaXBib2FyZCkKLSAg
ICAgICAgbV9oZWxwZXItPndyaXRlQ2xpcGJvYXJkQ29udGVudHMobV9jbGlwYm9hcmQpOworICAg
ICAgICBQYXN0ZWJvYXJkSGVscGVyOjpkZWZhdWx0UGFzdGVib2FyZEhlbHBlcigpLT53cml0ZUNs
aXBib2FyZENvbnRlbnRzKG1fY2xpcGJvYXJkKTsKIH0KIAogCkBAIC0xMzYsNyArMTM0LDcgQEAg
dm9pZCBDbGlwYm9hcmRHdGs6OmNsZWFyQWxsRGF0YSgpCiAgICAgbV9kYXRhT2JqZWN0LT5jbGVh
cigpOwogCiAgICAgaWYgKG1fY2xpcGJvYXJkKQotICAgICAgICBtX2hlbHBlci0+d3JpdGVDbGlw
Ym9hcmRDb250ZW50cyhtX2NsaXBib2FyZCk7CisgICAgICAgIFBhc3RlYm9hcmRIZWxwZXI6OmRl
ZmF1bHRQYXN0ZWJvYXJkSGVscGVyKCktPndyaXRlQ2xpcGJvYXJkQ29udGVudHMobV9jbGlwYm9h
cmQpOwogfQogCiBTdHJpbmcgQ2xpcGJvYXJkR3RrOjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlw
ZVN0cmluZywgYm9vbCYgc3VjY2VzcykgY29uc3QKQEAgLTE1MCw3ICsxNDgsNyBAQCBTdHJpbmcg
Q2xpcGJvYXJkR3RrOjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZywgYm9vbCYgc3Vj
Y2VzcykgY29uc3QKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgaWYgKG1fY2xpcGJv
YXJkKQotICAgICAgICBtX2hlbHBlci0+Z2V0Q2xpcGJvYXJkQ29udGVudHMobV9jbGlwYm9hcmQp
OworICAgICAgICBQYXN0ZWJvYXJkSGVscGVyOjpkZWZhdWx0UGFzdGVib2FyZEhlbHBlcigpLT5n
ZXRDbGlwYm9hcmRDb250ZW50cyhtX2NsaXBib2FyZCk7CiAKICAgICBDbGlwYm9hcmREYXRhVHlw
ZSB0eXBlID0gZGF0YU9iamVjdFR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUodHlwZVN0cmluZyk7
CiAgICAgaWYgKHR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVVUklMaXN0KQpAQCAtMTg0LDcgKzE4
Miw3IEBAIGJvb2wgQ2xpcGJvYXJkR3RrOjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZVN0cmlu
ZywgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgIH0KIAogICAgIGlmIChzdWNjZXNzICYmIG1fY2xp
cGJvYXJkKQotICAgICAgICBtX2hlbHBlci0+d3JpdGVDbGlwYm9hcmRDb250ZW50cyhtX2NsaXBi
b2FyZCk7CisgICAgICAgIFBhc3RlYm9hcmRIZWxwZXI6OmRlZmF1bHRQYXN0ZWJvYXJkSGVscGVy
KCktPndyaXRlQ2xpcGJvYXJkQ29udGVudHMobV9jbGlwYm9hcmQpOwogCiAgICAgcmV0dXJuIHN1
Y2Nlc3M7CiB9CkBAIC0xOTUsNyArMTkzLDcgQEAgSGFzaFNldDxTdHJpbmc+IENsaXBib2FyZEd0
azo6dHlwZXMoKSBjb25zdAogICAgICAgICByZXR1cm4gSGFzaFNldDxTdHJpbmc+KCk7CiAKICAg
ICBpZiAobV9jbGlwYm9hcmQpCi0gICAgICAgIG1faGVscGVyLT5nZXRDbGlwYm9hcmRDb250ZW50
cyhtX2NsaXBib2FyZCk7CisgICAgICAgIFBhc3RlYm9hcmRIZWxwZXI6OmRlZmF1bHRQYXN0ZWJv
YXJkSGVscGVyKCktPmdldENsaXBib2FyZENvbnRlbnRzKG1fY2xpcGJvYXJkKTsKIAogICAgIEhh
c2hTZXQ8U3RyaW5nPiB0eXBlczsKICAgICBpZiAobV9kYXRhT2JqZWN0LT5oYXNUZXh0KCkpIHsK
QEAgLTIyNCw3ICsyMjIsNyBAQCBQYXNzUmVmUHRyPEZpbGVMaXN0PiBDbGlwYm9hcmRHdGs6OmZp
bGVzKCkgY29uc3QKICAgICAgICAgcmV0dXJuIEZpbGVMaXN0OjpjcmVhdGUoKTsKIAogICAgIGlm
IChtX2NsaXBib2FyZCkKLSAgICAgICAgbV9oZWxwZXItPmdldENsaXBib2FyZENvbnRlbnRzKG1f
Y2xpcGJvYXJkKTsKKyAgICAgICAgUGFzdGVib2FyZEhlbHBlcjo6ZGVmYXVsdFBhc3RlYm9hcmRI
ZWxwZXIoKS0+Z2V0Q2xpcGJvYXJkQ29udGVudHMobV9jbGlwYm9hcmQpOwogCiAgICAgUmVmUHRy
PEZpbGVMaXN0PiBmaWxlTGlzdCA9IEZpbGVMaXN0OjpjcmVhdGUoKTsKICAgICBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZmlsZW5hbWVzID0gbV9kYXRhT2JqZWN0LT5maWxlbmFtZXMoKTsKQEAgLTMw
Miw3ICszMDAsNyBAQCB2b2lkIENsaXBib2FyZEd0azo6d3JpdGVVUkwoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBGcmFtZSopCiB7CiAgICAgbV9kYXRhT2JqZWN0LT5zZXRV
UkwodXJsLCBsYWJlbCk7CiAgICAgaWYgKG1fY2xpcGJvYXJkKQotICAgICAgICBtX2hlbHBlci0+
d3JpdGVDbGlwYm9hcmRDb250ZW50cyhtX2NsaXBib2FyZCk7CisgICAgICAgIFBhc3RlYm9hcmRI
ZWxwZXI6OmRlZmF1bHRQYXN0ZWJvYXJkSGVscGVyKCktPndyaXRlQ2xpcGJvYXJkQ29udGVudHMo
bV9jbGlwYm9hcmQpOwogfQogCiB2b2lkIENsaXBib2FyZEd0azo6d3JpdGVSYW5nZShSYW5nZSog
cmFuZ2UsIEZyYW1lKiBmcmFtZSkKQEAgLTMxMyw3ICszMTEsNyBAQCB2b2lkIENsaXBib2FyZEd0
azo6d3JpdGVSYW5nZShSYW5nZSogcmFuZ2UsIEZyYW1lKiBmcmFtZSkKICAgICBtX2RhdGFPYmpl
Y3QtPnNldE1hcmt1cChjcmVhdGVNYXJrdXAocmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJjaGFu
Z2UsIGZhbHNlLCBBYnNvbHV0ZVVSTHMpKTsKIAogICAgIGlmIChtX2NsaXBib2FyZCkKLSAgICAg
ICAgbV9oZWxwZXItPndyaXRlQ2xpcGJvYXJkQ29udGVudHMobV9jbGlwYm9hcmQpOworICAgICAg
ICBQYXN0ZWJvYXJkSGVscGVyOjpkZWZhdWx0UGFzdGVib2FyZEhlbHBlcigpLT53cml0ZUNsaXBi
b2FyZENvbnRlbnRzKG1fY2xpcGJvYXJkKTsKIH0KIAogdm9pZCBDbGlwYm9hcmRHdGs6OndyaXRl
UGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKQEAgLTMyMSwxMyArMzE5LDEzIEBAIHZvaWQg
Q2xpcGJvYXJkR3RrOjp3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgbV9k
YXRhT2JqZWN0LT5zZXRUZXh0KHRleHQpOwogCiAgICAgaWYgKG1fY2xpcGJvYXJkKQotICAgICAg
ICBtX2hlbHBlci0+d3JpdGVDbGlwYm9hcmRDb250ZW50cyhtX2NsaXBib2FyZCk7CisgICAgICAg
IFBhc3RlYm9hcmRIZWxwZXI6OmRlZmF1bHRQYXN0ZWJvYXJkSGVscGVyKCktPndyaXRlQ2xpcGJv
YXJkQ29udGVudHMobV9jbGlwYm9hcmQpOwogfQogCiBib29sIENsaXBib2FyZEd0azo6aGFzRGF0
YSgpCiB7CiAgICAgaWYgKG1fY2xpcGJvYXJkKQotICAgICAgICBtX2hlbHBlci0+Z2V0Q2xpcGJv
YXJkQ29udGVudHMobV9jbGlwYm9hcmQpOworICAgICAgICBQYXN0ZWJvYXJkSGVscGVyOjpkZWZh
dWx0UGFzdGVib2FyZEhlbHBlcigpLT5nZXRDbGlwYm9hcmRDb250ZW50cyhtX2NsaXBib2FyZCk7
CiAKICAgICByZXR1cm4gbV9kYXRhT2JqZWN0LT5oYXNUZXh0KCkgfHwgbV9kYXRhT2JqZWN0LT5o
YXNNYXJrdXAoKQogICAgICAgICB8fCBtX2RhdGFPYmplY3QtPmhhc1VSSUxpc3QoKSB8fCBtX2Rh
dGFPYmplY3QtPmhhc0ltYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvQ2xpcGJvYXJkR3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJv
YXJkR3RrLmgKaW5kZXggMGMwN2MwNzc1YjkyYTMwYTg3Y2UwMDFiYjM2N2NlZWI0ZjY2N2FjYi4u
NjA3ZDUxODUxMzA3N2RlOTllZjk3NTI1MjE4ZTU1YzZiNTA1MzlmOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaApAQCAtNzQsNyArNzQsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCBib29sIGhhc0RhdGEoKTsKIAotICAgICAg
ICBQYXN0ZWJvYXJkSGVscGVyKiBoZWxwZXIoKSB7IHJldHVybiBtX2hlbHBlcjsgfQogICAgICAg
ICBQYXNzUmVmUHRyPERhdGFPYmplY3RHdGs+IGRhdGFPYmplY3QoKSB7IHJldHVybiBtX2RhdGFP
YmplY3Q7IH0KIAogICAgIHByaXZhdGU6CkBAIC04Myw3ICs4Miw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgICAgICBSZWZQdHI8RGF0YU9iamVjdEd0az4gbV9kYXRhT2JqZWN0OwogICAg
ICAgICBHdGtDbGlwYm9hcmQqIG1fY2xpcGJvYXJkOwotICAgICAgICBQYXN0ZWJvYXJkSGVscGVy
KiBtX2hlbHBlcjsKICAgICAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgfTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAppbmRleCA1ZWI5OWY3ODkx
ODhmNDY1NmYxYzBiNzBiOTAzZmRjMWJhZjdiODJiLi42ZmMyMmRlMGE3MjdjOWNmYzlhMzM2Nzk4
NDIwOGJlZmUwMzk0YWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UGFzdGVib2FyZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3Rl
Ym9hcmRHdGsuY3BwCkBAIC01MiwzMSArNTIsMTYgQEAgUGFzdGVib2FyZCogUGFzdGVib2FyZDo6
Z2VuZXJhbFBhc3RlYm9hcmQoKQogCiBQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKCkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi1QYXN0ZWJvYXJkOjp+UGFzdGVib2FyZCgpCi17Ci0gICAg
ZGVsZXRlIG1faGVscGVyOwotfQotCi1QYXN0ZWJvYXJkSGVscGVyKiBQYXN0ZWJvYXJkOjpoZWxw
ZXIoKQotewotICAgIHJldHVybiBtX2hlbHBlcjsKLX0KLQotdm9pZCBQYXN0ZWJvYXJkOjpzZXRI
ZWxwZXIoUGFzdGVib2FyZEhlbHBlciogaGVscGVyKQotewotICAgIG1faGVscGVyID0gaGVscGVy
OwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiBzZWxlY3RlZFJh
bmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSogZnJhbWUpCiB7Ci0gICAgR3Rr
Q2xpcGJvYXJkKiBjbGlwYm9hcmQgPSBtX2hlbHBlci0+Z2V0Q2xpcGJvYXJkKGZyYW1lKTsKKyAg
ICBQYXN0ZWJvYXJkSGVscGVyKiBkZWZhdWx0SGVscGVyID0gUGFzdGVib2FyZEhlbHBlcjo6ZGVm
YXVsdFBhc3RlYm9hcmRIZWxwZXIoKTsKKyAgICBHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCA9IGRl
ZmF1bHRIZWxwZXItPmdldENsaXBib2FyZChmcmFtZSk7CiAgICAgRGF0YU9iamVjdEd0ayogZGF0
YU9iamVjdCA9IERhdGFPYmplY3RHdGs6OmZvckNsaXBib2FyZChjbGlwYm9hcmQpOwogICAgIGRh
dGFPYmplY3QtPnNldFRleHQoZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKSk7CiAgICAg
ZGF0YU9iamVjdC0+c2V0TWFya3VwKGNyZWF0ZU1hcmt1cChzZWxlY3RlZFJhbmdlLCAwLCBBbm5v
dGF0ZUZvckludGVyY2hhbmdlLCBmYWxzZSwgQWJzb2x1dGVVUkxzKSk7Ci0gICAgbV9oZWxwZXIt
PndyaXRlQ2xpcGJvYXJkQ29udGVudHMoY2xpcGJvYXJkKTsKKyAgICBkZWZhdWx0SGVscGVyLT53
cml0ZUNsaXBib2FyZENvbnRlbnRzKGNsaXBib2FyZCk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6
d3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQpAQCAtODQsNyArNjksNyBAQCB2b2lk
IFBhc3RlYm9hcmQ6OndyaXRlUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBHdGtD
bGlwYm9hcmQqIGNsaXBib2FyZCA9IGd0a19jbGlwYm9hcmRfZ2V0X2Zvcl9kaXNwbGF5KGdka19k
aXNwbGF5X2dldF9kZWZhdWx0KCksIEdES19TRUxFQ1RJT05fQ0xJUEJPQVJEKTsKICAgICBEYXRh
T2JqZWN0R3RrKiBkYXRhT2JqZWN0ID0gRGF0YU9iamVjdEd0azo6Zm9yQ2xpcGJvYXJkKGNsaXBi
b2FyZCk7CiAgICAgZGF0YU9iamVjdC0+c2V0VGV4dCh0ZXh0KTsKLSAgICBtX2hlbHBlci0+d3Jp
dGVDbGlwYm9hcmRDb250ZW50cyhjbGlwYm9hcmQpOworICAgIFBhc3RlYm9hcmRIZWxwZXI6OmRl
ZmF1bHRQYXN0ZWJvYXJkSGVscGVyKCktPndyaXRlQ2xpcGJvYXJkQ29udGVudHMoY2xpcGJvYXJk
KTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgbGFiZWwsIEZyYW1lKiBmcmFtZSkKQEAgLTkyLDEwICs3NywxMSBAQCB2b2lkIFBh
c3RlYm9hcmQ6OndyaXRlVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBsYWJlbCwg
RnJhbWUqIGZyYW1lKQogICAgIGlmICh1cmwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCA9IG1faGVscGVyLT5nZXRDbGlwYm9hcmQoZnJh
bWUpOworICAgIFBhc3RlYm9hcmRIZWxwZXIqIGRlZmF1bHRIZWxwZXIgPSBQYXN0ZWJvYXJkSGVs
cGVyOjpkZWZhdWx0UGFzdGVib2FyZEhlbHBlcigpOworICAgIEd0a0NsaXBib2FyZCogY2xpcGJv
YXJkID0gZGVmYXVsdEhlbHBlci0+Z2V0Q2xpcGJvYXJkKGZyYW1lKTsKICAgICBEYXRhT2JqZWN0
R3RrKiBkYXRhT2JqZWN0ID0gRGF0YU9iamVjdEd0azo6Zm9yQ2xpcGJvYXJkKGNsaXBib2FyZCk7
CiAgICAgZGF0YU9iamVjdC0+c2V0VVJMKHVybCwgbGFiZWwpOwotICAgIG1faGVscGVyLT53cml0
ZUNsaXBib2FyZENvbnRlbnRzKGNsaXBib2FyZCk7CisgICAgZGVmYXVsdEhlbHBlci0+d3JpdGVD
bGlwYm9hcmRDb250ZW50cyhjbGlwYm9hcmQpOwogfQogCiBzdGF0aWMgS1VSTCBnZXRVUkxGb3JJ
bWFnZU5vZGUoTm9kZSogbm9kZSkKQEAgLTE0Myw3ICsxMjksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlSW1hZ2UoTm9kZSogbm9kZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUp
CiAgICAgR1JlZlB0cjxHZGtQaXhidWY+IHBpeGJ1ZiA9IGFkb3B0R1JlZihpbWFnZS0+Z2V0R2Rr
UGl4YnVmKCkpOwogICAgIGRhdGFPYmplY3QtPnNldEltYWdlKHBpeGJ1Zi5nZXQoKSk7CiAKLSAg
ICBtX2hlbHBlci0+d3JpdGVDbGlwYm9hcmRDb250ZW50cyhjbGlwYm9hcmQpOworICAgIFBhc3Rl
Ym9hcmRIZWxwZXI6OmRlZmF1bHRQYXN0ZWJvYXJkSGVscGVyKCktPndyaXRlQ2xpcGJvYXJkQ29u
dGVudHMoY2xpcGJvYXJkKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjpjbGVhcigpCkBAIC0xNjAs
OSArMTQ2LDEwIEBAIGJvb2wgUGFzdGVib2FyZDo6Y2FuU21hcnRSZXBsYWNlKCkKIFBhc3NSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4gUGFzdGVib2FyZDo6ZG9jdW1lbnRGcmFnbWVudChGcmFtZSog
ZnJhbWUsIFBhc3NSZWZQdHI8UmFuZ2U+IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhbGxvd1BsYWluVGV4dCwg
Ym9vbCYgY2hvc2VQbGFpblRleHQpCiB7Ci0gICAgR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQgPSBt
X2hlbHBlci0+Z2V0Q3VycmVudENsaXBib2FyZChmcmFtZSk7CisgICAgUGFzdGVib2FyZEhlbHBl
ciogZGVmYXVsdEhlbHBlciA9IFBhc3RlYm9hcmRIZWxwZXI6OmRlZmF1bHRQYXN0ZWJvYXJkSGVs
cGVyKCk7CisgICAgR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQgPSBkZWZhdWx0SGVscGVyLT5nZXRD
dXJyZW50Q2xpcGJvYXJkKGZyYW1lKTsKICAgICBEYXRhT2JqZWN0R3RrKiBkYXRhT2JqZWN0ID0g
RGF0YU9iamVjdEd0azo6Zm9yQ2xpcGJvYXJkKGNsaXBib2FyZCk7Ci0gICAgbV9oZWxwZXItPmdl
dENsaXBib2FyZENvbnRlbnRzKGNsaXBib2FyZCk7CisgICAgZGVmYXVsdEhlbHBlci0+Z2V0Q2xp
cGJvYXJkQ29udGVudHMoY2xpcGJvYXJkKTsKIAogICAgIGNob3NlUGxhaW5UZXh0ID0gZmFsc2U7
CiAKQEAgLTE4NywxMCArMTc0LDExIEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gUGFz
dGVib2FyZDo6ZG9jdW1lbnRGcmFnbWVudChGcmFtZSogZnJhbWUsIFBhc3NSZWZQCiAKIFN0cmlu
ZyBQYXN0ZWJvYXJkOjpwbGFpblRleHQoRnJhbWUqIGZyYW1lKQogewotICAgIEd0a0NsaXBib2Fy
ZCogY2xpcGJvYXJkID0gbV9oZWxwZXItPmdldEN1cnJlbnRDbGlwYm9hcmQoZnJhbWUpOworICAg
IFBhc3RlYm9hcmRIZWxwZXIqIGRlZmF1bHRIZWxwZXIgPSBQYXN0ZWJvYXJkSGVscGVyOjpkZWZh
dWx0UGFzdGVib2FyZEhlbHBlcigpOworICAgIEd0a0NsaXBib2FyZCogY2xpcGJvYXJkID0gZGVm
YXVsdEhlbHBlci0+Z2V0Q3VycmVudENsaXBib2FyZChmcmFtZSk7CiAgICAgRGF0YU9iamVjdEd0
ayogZGF0YU9iamVjdCA9IERhdGFPYmplY3RHdGs6OmZvckNsaXBib2FyZChjbGlwYm9hcmQpOwog
Ci0gICAgbV9oZWxwZXItPmdldENsaXBib2FyZENvbnRlbnRzKGNsaXBib2FyZCk7CisgICAgZGVm
YXVsdEhlbHBlci0+Z2V0Q2xpcGJvYXJkQ29udGVudHMoY2xpcGJvYXJkKTsKICAgICByZXR1cm4g
ZGF0YU9iamVjdC0+dGV4dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGFzdGVib2FyZEhlbHBlci5jcHAKaW5kZXggZmMzZWRlNDMyODFmZTI5ODE0MjFlNjNiYTM3
OTdjZDU2YTMzZjIxOC4uM2QwZGIxNDVmYTAzODI0YjlmMGZiMDVkZjZhNmY1YmM5MWRhNGQxOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNw
cApAQCAtNDIsNyArNDIsNiBAQCBzdGF0aWMgU3RyaW5nIGdNYXJrdXBQcmVmaXg7CiAKIHN0YXRp
YyB2b2lkIHJlbW92ZU1hcmt1cFByZWZpeChTdHJpbmcmIG1hcmt1cCkKIHsKLQogICAgIC8vIFRo
ZSBtYXJrdXAgcHJlZml4IGlzIG5vdCBoYXJtZnVsLCBidXQgd2UgcmVtb3ZlIGl0IGZyb20gdGhl
IHN0cmluZyBhbnl3YXksIHNvIHRoYXQKICAgICAvLyB3ZSBjYW4gaGF2ZSBjb25zaXN0ZW50IHJl
c3VsdHMgd2l0aCBvdGhlciBwb3J0cyBkdXJpbmcgdGhlIGxheW91dCB0ZXN0cy4KICAgICBpZiAo
bWFya3VwLnN0YXJ0c1dpdGgoZ01hcmt1cFByZWZpeCkpCkBAIC02NSwxMCArNjQsMjMgQEAgc3Rh
dGljIHZvaWQgaW5pdEdka0F0b21zKCkKICAgICBnTWFya3VwUHJlZml4ID0gIjxtZXRhIGh0dHAt
ZXF1aXY9XCJjb250ZW50LXR5cGVcIiBjb250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
XCI+IjsKIH0KIAorUGFzdGVib2FyZEhlbHBlciogUGFzdGVib2FyZEhlbHBlcjo6ZGVmYXVsdFBh
c3RlYm9hcmRIZWxwZXIoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUGFzdGVib2FyZEhl
bHBlciwgZGVmYXVsdEhlbHBlciwgKCkpOworICAgIHJldHVybiAmZGVmYXVsdEhlbHBlcjsKK30K
KwogUGFzdGVib2FyZEhlbHBlcjo6UGFzdGVib2FyZEhlbHBlcigpCiAgICAgOiBtX3RhcmdldExp
c3QoZ3RrX3RhcmdldF9saXN0X25ldygwLCAwKSkKKyAgICAsIG1fdXNlUHJpbWFyeVNlbGVjdGlv
bkNsaXBib2FyZChmYWxzZSkKIHsKICAgICBpbml0R2RrQXRvbXMoKTsKKworICAgIGd0a190YXJn
ZXRfbGlzdF9hZGRfdGV4dF90YXJnZXRzKG1fdGFyZ2V0TGlzdCwgUGFzdGVib2FyZEhlbHBlcjo6
VGFyZ2V0VHlwZVRleHQpOworICAgIGd0a190YXJnZXRfbGlzdF9hZGQobV90YXJnZXRMaXN0LCBt
YXJrdXBBdG9tLCAwLCBQYXN0ZWJvYXJkSGVscGVyOjpUYXJnZXRUeXBlTWFya3VwKTsKKyAgICBn
dGtfdGFyZ2V0X2xpc3RfYWRkX3VyaV90YXJnZXRzKG1fdGFyZ2V0TGlzdCwgUGFzdGVib2FyZEhl
bHBlcjo6VGFyZ2V0VHlwZVVSSUxpc3QpOworICAgIGd0a190YXJnZXRfbGlzdF9hZGQobV90YXJn
ZXRMaXN0LCBuZXRzY2FwZVVSTEF0b20sIDAsIFBhc3RlYm9hcmRIZWxwZXI6OlRhcmdldFR5cGVO
ZXRzY2FwZVVSTCk7CisgICAgZ3RrX3RhcmdldF9saXN0X2FkZF9pbWFnZV90YXJnZXRzKG1fdGFy
Z2V0TGlzdCwgUGFzdGVib2FyZEhlbHBlcjo6VGFyZ2V0VHlwZUltYWdlLCBUUlVFKTsKIH0KIAog
UGFzdGVib2FyZEhlbHBlcjo6flBhc3RlYm9hcmRIZWxwZXIoKQpAQCAtNzYsMTUgKzg4LDYgQEAg
UGFzdGVib2FyZEhlbHBlcjo6flBhc3RlYm9hcmRIZWxwZXIoKQogICAgIGd0a190YXJnZXRfbGlz
dF91bnJlZihtX3RhcmdldExpc3QpOwogfQogCi12b2lkIFBhc3RlYm9hcmRIZWxwZXI6OmluaXRp
YWxpemVUYXJnZXRMaXN0KCkKLXsKLSAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3RleHRfdGFyZ2V0
cyhtX3RhcmdldExpc3QsIGdldElkRm9yVGFyZ2V0VHlwZShUYXJnZXRUeXBlVGV4dCkpOwotICAg
IGd0a190YXJnZXRfbGlzdF9hZGQobV90YXJnZXRMaXN0LCBtYXJrdXBBdG9tLCAwLCBnZXRJZEZv
clRhcmdldFR5cGUoVGFyZ2V0VHlwZU1hcmt1cCkpOwotICAgIGd0a190YXJnZXRfbGlzdF9hZGRf
dXJpX3RhcmdldHMobV90YXJnZXRMaXN0LCBnZXRJZEZvclRhcmdldFR5cGUoVGFyZ2V0VHlwZVVS
SUxpc3QpKTsKLSAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKG1fdGFyZ2V0TGlzdCwgbmV0c2NhcGVV
UkxBdG9tLCAwLCBnZXRJZEZvclRhcmdldFR5cGUoVGFyZ2V0VHlwZU5ldHNjYXBlVVJMKSk7Ci0g
ICAgZ3RrX3RhcmdldF9saXN0X2FkZF9pbWFnZV90YXJnZXRzKG1fdGFyZ2V0TGlzdCwgZ2V0SWRG
b3JUYXJnZXRUeXBlKFRhcmdldFR5cGVJbWFnZSksIFRSVUUpOwotfQotCiBzdGF0aWMgaW5saW5l
IEd0a1dpZGdldCogd2lkZ2V0RnJvbUZyYW1lKEZyYW1lKiBmcmFtZSkKIHsKICAgICBBU1NFUlQo
ZnJhbWUpOwpAQCAtOTksNyArMTAyLDcgQEAgc3RhdGljIGlubGluZSBHdGtXaWRnZXQqIHdpZGdl
dEZyb21GcmFtZShGcmFtZSogZnJhbWUpCiAKIEd0a0NsaXBib2FyZCogUGFzdGVib2FyZEhlbHBl
cjo6Z2V0Q3VycmVudENsaXBib2FyZChGcmFtZSogZnJhbWUpCiB7Ci0gICAgaWYgKHVzZVByaW1h
cnlTZWxlY3Rpb25DbGlwYm9hcmQod2lkZ2V0RnJvbUZyYW1lKGZyYW1lKSkpCisgICAgaWYgKG1f
dXNlUHJpbWFyeVNlbGVjdGlvbkNsaXBib2FyZCkKICAgICAgICAgcmV0dXJuIGdldFByaW1hcnlT
ZWxlY3Rpb25DbGlwYm9hcmQoZnJhbWUpOwogICAgIHJldHVybiBnZXRDbGlwYm9hcmQoZnJhbWUp
OwogfQpAQCAtMTU2LDIyICsxNTksMjIgQEAgdm9pZCBQYXN0ZWJvYXJkSGVscGVyOjpnZXRDbGlw
Ym9hcmRDb250ZW50cyhHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCkKIAogdm9pZCBQYXN0ZWJvYXJk
SGVscGVyOjpmaWxsU2VsZWN0aW9uRGF0YShHdGtTZWxlY3Rpb25EYXRhKiBzZWxlY3Rpb25EYXRh
LCBndWludCBpbmZvLCBEYXRhT2JqZWN0R3RrKiBkYXRhT2JqZWN0KQogewotICAgIGlmIChpbmZv
ID09IGdldElkRm9yVGFyZ2V0VHlwZShUYXJnZXRUeXBlVGV4dCkpCisgICAgaWYgKGluZm8gPT0g
VGFyZ2V0VHlwZVRleHQpCiAgICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXRfdGV4dChzZWxl
Y3Rpb25EYXRhLCBkYXRhT2JqZWN0LT50ZXh0KCkudXRmOCgpLmRhdGEoKSwgLTEpOwogCi0gICAg
ZWxzZSBpZiAoaW5mbyA9PSBnZXRJZEZvclRhcmdldFR5cGUoVGFyZ2V0VHlwZU1hcmt1cCkpIHsK
KyAgICBlbHNlIGlmIChpbmZvID09IFRhcmdldFR5cGVNYXJrdXApIHsKICAgICAgICAgLy8gU29t
ZSBMaW51eCBhcHBsaWNhdGlvbnMgcmVmdXNlIHRvIGFjY2VwdCBwYXN0ZWQgbWFya3VwIHVubGVz
cyBpdCBpcwogICAgICAgICAvLyBwcmVmaXhlZCBieSBhIGNvbnRlbnQtdHlwZSBtZXRhIHRhZy4K
ICAgICAgICAgQ1N0cmluZyBtYXJrdXAgPSBTdHJpbmcoZ01hcmt1cFByZWZpeCArIGRhdGFPYmpl
Y3QtPm1hcmt1cCgpKS51dGY4KCk7CiAgICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXQoc2Vs
ZWN0aW9uRGF0YSwgbWFya3VwQXRvbSwgOCwKICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgZ3VjaGFyKj4obWFya3VwLmRhdGEoKSksIG1hcmt1cC5sZW5ndGgoKSArIDEpOwogCi0g
ICAgfSBlbHNlIGlmIChpbmZvID09IGdldElkRm9yVGFyZ2V0VHlwZShUYXJnZXRUeXBlVVJJTGlz
dCkpIHsKKyAgICB9IGVsc2UgaWYgKGluZm8gPT0gVGFyZ2V0VHlwZVVSSUxpc3QpIHsKICAgICAg
ICAgQ1N0cmluZyB1cmlMaXN0ID0gZGF0YU9iamVjdC0+dXJpTGlzdCgpLnV0ZjgoKTsKICAgICAg
ICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChzZWxlY3Rpb25EYXRhLCB1cmlMaXN0QXRvbSwgOCwK
ICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4odXJpTGlzdC5kYXRh
KCkpLCB1cmlMaXN0Lmxlbmd0aCgpICsgMSk7CiAKLSAgICB9IGVsc2UgaWYgKGluZm8gPT0gZ2V0
SWRGb3JUYXJnZXRUeXBlKFRhcmdldFR5cGVOZXRzY2FwZVVSTCkgJiYgZGF0YU9iamVjdC0+aGFz
VVJMKCkpIHsKKyAgICB9IGVsc2UgaWYgKGluZm8gPT0gVGFyZ2V0VHlwZU5ldHNjYXBlVVJMICYm
IGRhdGFPYmplY3QtPmhhc1VSTCgpKSB7CiAgICAgICAgIFN0cmluZyB1cmwoZGF0YU9iamVjdC0+
dXJsKCkpOwogICAgICAgICBTdHJpbmcgcmVzdWx0KHVybCk7CiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoIlxuIik7CkBAIC0xODUsNyArMTg4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkSGVscGVyOjpmaWxs
U2VsZWN0aW9uRGF0YShHdGtTZWxlY3Rpb25EYXRhKiBzZWxlY3Rpb25EYXRhLCBndWludAogICAg
ICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbkRhdGEsIG5ldHNjYXBlVVJMQXRv
bSwgOCwKICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4ocmVzdWx0
RGF0YS5nZXQoKSksIHN0cmxlbihyZXN1bHREYXRhLmdldCgpKSArIDEpOwogCi0gICAgfSBlbHNl
IGlmIChpbmZvID09IGdldElkRm9yVGFyZ2V0VHlwZShUYXJnZXRUeXBlSW1hZ2UpKQorICAgIH0g
ZWxzZSBpZiAoaW5mbyA9PSBUYXJnZXRUeXBlSW1hZ2UpCiAgICAgICAgIGd0a19zZWxlY3Rpb25f
ZGF0YV9zZXRfcGl4YnVmKHNlbGVjdGlvbkRhdGEsIGRhdGFPYmplY3QtPmltYWdlKCkpOwogfQog
CkBAIC0xOTQsMTggKzE5NywxOCBAQCBHdGtUYXJnZXRMaXN0KiBQYXN0ZWJvYXJkSGVscGVyOjp0
YXJnZXRMaXN0Rm9yRGF0YU9iamVjdChEYXRhT2JqZWN0R3RrKiBkYXRhT2JqZQogICAgIEd0a1Rh
cmdldExpc3QqIGxpc3QgPSBndGtfdGFyZ2V0X2xpc3RfbmV3KDAsIDApOwogCiAgICAgaWYgKGRh
dGFPYmplY3QtPmhhc1RleHQoKSkKLSAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZF90ZXh0X3Rh
cmdldHMobGlzdCwgZ2V0SWRGb3JUYXJnZXRUeXBlKFRhcmdldFR5cGVUZXh0KSk7CisgICAgICAg
IGd0a190YXJnZXRfbGlzdF9hZGRfdGV4dF90YXJnZXRzKGxpc3QsIFRhcmdldFR5cGVUZXh0KTsK
IAogICAgIGlmIChkYXRhT2JqZWN0LT5oYXNNYXJrdXAoKSkKLSAgICAgICAgZ3RrX3RhcmdldF9s
aXN0X2FkZChsaXN0LCBtYXJrdXBBdG9tLCAwLCBnZXRJZEZvclRhcmdldFR5cGUoVGFyZ2V0VHlw
ZU1hcmt1cCkpOworICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QsIG1hcmt1cEF0b20s
IDAsIFRhcmdldFR5cGVNYXJrdXApOwogCiAgICAgaWYgKGRhdGFPYmplY3QtPmhhc1VSSUxpc3Qo
KSkgewotICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3VyaV90YXJnZXRzKGxpc3QsIGdldElk
Rm9yVGFyZ2V0VHlwZShUYXJnZXRUeXBlVVJJTGlzdCkpOwotICAgICAgICBndGtfdGFyZ2V0X2xp
c3RfYWRkKGxpc3QsIG5ldHNjYXBlVVJMQXRvbSwgMCwgZ2V0SWRGb3JUYXJnZXRUeXBlKFRhcmdl
dFR5cGVOZXRzY2FwZVVSTCkpOworICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3VyaV90YXJn
ZXRzKGxpc3QsIFRhcmdldFR5cGVVUklMaXN0KTsKKyAgICAgICAgZ3RrX3RhcmdldF9saXN0X2Fk
ZChsaXN0LCBuZXRzY2FwZVVSTEF0b20sIDAsIFRhcmdldFR5cGVOZXRzY2FwZVVSTCk7CiAgICAg
fQogCiAgICAgaWYgKGRhdGFPYmplY3QtPmhhc0ltYWdlKCkpCi0gICAgICAgIGd0a190YXJnZXRf
bGlzdF9hZGRfaW1hZ2VfdGFyZ2V0cyhsaXN0LCBnZXRJZEZvclRhcmdldFR5cGUoVGFyZ2V0VHlw
ZUltYWdlKSwgVFJVRSk7CisgICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGRfaW1hZ2VfdGFyZ2V0
cyhsaXN0LCBUYXJnZXRUeXBlSW1hZ2UsIFRSVUUpOwogCiAgICAgcmV0dXJuIGxpc3Q7CiB9CkBA
IC0yNDksNyArMjUyLDcgQEAgVmVjdG9yPEdka0F0b20+IFBhc3RlYm9hcmRIZWxwZXI6OmRyb3BB
dG9tc0ZvckNvbnRleHQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0RyYWcKIAogICAgIC8vIEZvciBp
bWFnZXMsIHRyeSB0byBmaW5kIHRoZSBtb3N0IGFwcGxpY2FibGUgaW1hZ2UgdHlwZS4KICAgICBH
UmVmUHRyPEd0a1RhcmdldExpc3Q+IGxpc3QoZ3RrX3RhcmdldF9saXN0X25ldygwLCAwKSk7Ci0g
ICAgZ3RrX3RhcmdldF9saXN0X2FkZF9pbWFnZV90YXJnZXRzKGxpc3QuZ2V0KCksIGdldElkRm9y
VGFyZ2V0VHlwZShUYXJnZXRUeXBlSW1hZ2UpLCBUUlVFKTsKKyAgICBndGtfdGFyZ2V0X2xpc3Rf
YWRkX2ltYWdlX3RhcmdldHMobGlzdC5nZXQoKSwgVGFyZ2V0VHlwZUltYWdlLCBUUlVFKTsKICAg
ICBHZGtBdG9tIGF0b20gPSBndGtfZHJhZ19kZXN0X2ZpbmRfdGFyZ2V0KHdpZGdldCwgY29udGV4
dCwgbGlzdC5nZXQoKSk7CiAgICAgaWYgKGF0b20gIT0gR0RLX05PTkUpCiAgICAgICAgIGRyb3BB
dG9tcy5hcHBlbmQoYXRvbSk7CkBAIC0yNjMsNyArMjY2LDcgQEAgc3RhdGljIHZvaWQgZ2V0Q2xp
cGJvYXJkQ29udGVudHNDYWxsYmFjayhHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCwgR3RrU2VsZWN0
aW9uRGEKIHsKICAgICBEYXRhT2JqZWN0R3RrKiBkYXRhT2JqZWN0ID0gRGF0YU9iamVjdEd0azo6
Zm9yQ2xpcGJvYXJkKGNsaXBib2FyZCk7CiAgICAgQVNTRVJUKGRhdGFPYmplY3QpOwotICAgIFBh
c3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPmhlbHBlcigpLT5maWxsU2VsZWN0aW9uRGF0
YShzZWxlY3Rpb25EYXRhLCBpbmZvLCBkYXRhT2JqZWN0KTsKKyAgICBQYXN0ZWJvYXJkSGVscGVy
OjpkZWZhdWx0UGFzdGVib2FyZEhlbHBlcigpLT5maWxsU2VsZWN0aW9uRGF0YShzZWxlY3Rpb25E
YXRhLCBpbmZvLCBkYXRhT2JqZWN0KTsKIH0KIAogc3RhdGljIHZvaWQgY2xlYXJDbGlwYm9hcmRD
b250ZW50c0NhbGxiYWNrKEd0a0NsaXBib2FyZCogY2xpcGJvYXJkLCBncG9pbnRlciBkYXRhKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmgKaW5kZXgg
YmIxYjU4MDc0MzA2ZDU0OTdhNTU0NzYwZmY0MDIzYTAxNmNhNDc2ZC4uMzE2MWM5MTkyODAwZDgy
NTdjYTA2MDVlNjllZjRlNzE1OTJmM2JhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvUGFzdGVib2FyZEhlbHBlci5oCkBAIC0yNSwxMSArMjUsNiBAQAogI2lmbmRlZiBQYXN0
ZWJvYXJkSGVscGVyX2gKICNkZWZpbmUgUGFzdGVib2FyZEhlbHBlcl9oCiAKLS8qCi0gKiBGSVhN
RTogdGhpcyBpcyBmb3IgV2ViQ29yZSBzdXBwb3J0IGFuZCBtdXN0IGJlIHJlbW92ZWQgb25jZQot
ICogYSBiZXR0ZXIgc29sdXRpb24gaXMgZm91bmQKLSAqLwotCiAjaW5jbHVkZSAiRnJhbWUuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsNiArMzUsMTAgQEAgY2xhc3MgUGFzdGVib2Fy
ZEhlbHBlciB7CiBwdWJsaWM6CiAgICAgUGFzdGVib2FyZEhlbHBlcigpOwogICAgIHZpcnR1YWwg
flBhc3RlYm9hcmRIZWxwZXIoKTsKKyAgICBzdGF0aWMgUGFzdGVib2FyZEhlbHBlciogZGVmYXVs
dFBhc3RlYm9hcmRIZWxwZXIoKTsKKworICAgIHZvaWQgc2V0VXNlUHJpbWFyeVNlbGVjdGlvbkNs
aXBib2FyZChib29sIHVzZVByaW1hcnkpIHsgbV91c2VQcmltYXJ5U2VsZWN0aW9uQ2xpcGJvYXJk
ID0gdXNlUHJpbWFyeTsgfQorICAgIGJvb2wgdXNlUHJpbWFyeVNlbGVjdGlvbkNsaXBib2FyZCgp
IHsgcmV0dXJuIG1fdXNlUHJpbWFyeVNlbGVjdGlvbkNsaXBib2FyZDsgfQogCiAgICAgR3RrQ2xp
cGJvYXJkKiBnZXRDdXJyZW50Q2xpcGJvYXJkKEZyYW1lKik7CiAgICAgR3RrQ2xpcGJvYXJkKiBn
ZXRDbGlwYm9hcmQoRnJhbWUqKSBjb25zdDsKQEAgLTUyLDE1ICs1MSwxMSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB3cml0ZUNsaXBib2FyZENvbnRlbnRzKEd0a0NsaXBib2FyZCosIEdDbG9zdXJlKiBj
bG9zdXJlID0gMCk7CiAgICAgdm9pZCBnZXRDbGlwYm9hcmRDb250ZW50cyhHdGtDbGlwYm9hcmQq
KTsKIAotICAgIGVudW0gUGFzdGVib2FyZFRhcmdldFR5cGUgeyBUYXJnZXRUeXBlVGV4dCwgVGFy
Z2V0VHlwZU1hcmt1cCwgVGFyZ2V0VHlwZVVSSUxpc3QsIFRhcmdldFR5cGVOZXRzY2FwZVVSTCwg
VGFyZ2V0VHlwZUltYWdlLCBUYXJnZXRUeXBlVW5rbm93biB9OwotICAgIHZpcnR1YWwgZ3VpbnQg
Z2V0SWRGb3JUYXJnZXRUeXBlKFBhc3RlYm9hcmRUYXJnZXRUeXBlKSA9IDA7Ci0KLXByb3RlY3Rl
ZDoKLSAgICB2b2lkIGluaXRpYWxpemVUYXJnZXRMaXN0KCk7Ci0gICAgdmlydHVhbCBib29sIHVz
ZVByaW1hcnlTZWxlY3Rpb25DbGlwYm9hcmQoR3RrV2lkZ2V0KikgPSAwOworICAgIGVudW0gUGFz
dGVib2FyZFRhcmdldFR5cGUgeyBUYXJnZXRUeXBlTWFya3VwLCBUYXJnZXRUeXBlVGV4dCwgVGFy
Z2V0VHlwZUltYWdlLCBUYXJnZXRUeXBlVVJJTGlzdCwgVGFyZ2V0VHlwZU5ldHNjYXBlVVJMLCBU
YXJnZXRUeXBlVW5rbm93biB9OwogCiBwcml2YXRlOgogICAgIEd0a1RhcmdldExpc3QqIG1fdGFy
Z2V0TGlzdDsKKyAgICBib29sIG1fdXNlUHJpbWFyeVNlbGVjdGlvbkNsaXBib2FyZDsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZwppbmRleCAxNzMwODJlZGMzODlmNTUzYzRjMTVjOGNmZDYyYWJmNDU1
NWJkMDA4Li5kNGZmNmY3ZmUwZDJhYTMxODdiYzExODE5ZGI1ZTViM2U1ZDQ5NzA0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDUtMjggIE1hcnRpbiBSb2JpbnNvbiAg
PG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtHVEtdIFJlbW92ZSBQYXN0Ym9hcmRIZWxwZXJHdGsKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxNjkwCisKKyAgICAgICAg
UmVtb3ZlIFBhc3RlYm9hcmRIZWxwZXJHdGsgYW5kIHRhbGsgZGlyZWN0bHkgdG8gV2ViQ29yZSBm
b3IgcGFzdGVib2FyZAorICAgICAgICBhY3Rpdml0eS4gVGhpcyBjaGFuZ2UgbW92ZXMgdGhlIFBh
c3RlYm9hcmRIZWxwZXIgc2luZ2xldG9uIGZyb20gV2ViS2l0CisgICAgICAgIHRvIFdlYkNvcmUu
CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogUmVtb3ZlIFBhc3RlYm9hcmRIZWxwZXJHdGsg
ZnJvbSB0aGUgc291cmNlIGxpc3QuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQXNzZXJ0TWF0
Y2hpbmdFbnVtcy5jcHA6IEFkZGVkIGFzc2VydGlvbnMgdmVyaWZ5aW5nIHRoYXQgdGhlCisgICAg
ICAgIFdlYkNvcmUgdmVyc2lvbnMgb2YgdGhlIEd0a0NsaXBib2FyZCBlbnVtcyBtYXRjaCB0aG9z
ZSBpbiB0aGUgV2ViS2l0IEFQSS4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50
R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhZ0NsaWVudDo6c3RhcnREcmFnKTogQWNjZXNz
IHRoZSBwYXN0ZWJvYXJkIGhlbHBlciB2aWEgYSBzdGF0aWMgbWV0aG9kLgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNldFNl
bGVjdGlvblByaW1hcnlDbGlwYm9hcmRJZk5lZWRlZCk6IERpdHRvLiBDYWxsIGludG8gdGhlIGhl
bHBlciB0byBzcGVjaWZ5CisgICAgICAgIHRoYXQgdGhlIGN1cnJlbnQgY2xpcGJvYXJkIGlzIHNl
bGVjdGlvbiBwcmltYXJ5IG5vdy4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJk
SGVscGVyR3RrLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJraXQvd2Via2l0Z2xvYmFscy5j
cHA6IFJlbW92ZSBmdW5jdGlvbiB0byBzZXQgYW5kIGdldCB0aGUgcGFzdGVib2FyZCBoZWxwZXIu
CisgICAgICAgICogd2Via2l0L3dlYmtpdGdsb2JhbHNwcml2YXRlLmg6IERpdHRvLgorICAgICAg
ICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19i
dXR0b25fcHJlc3NfZXZlbnQpOiBBY2Nlc3MgdGhlIHBhc3RlYm9hcmQgaGVscGVyIHZpYSBhIHN0
YXRpYyBtZXRob2QuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZHJhZ19kYXRhX2dldCk6IERp
dHRvLgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2RyYWdfbW90aW9uKTogRGl0dG8uCisgICAg
ICAgICh3ZWJraXRfd2ViX3ZpZXdfZHJhZ19kYXRhX3JlY2VpdmVkKTogRGl0dG8uCisgICAgICAg
ICh3ZWJraXRfd2ViX3ZpZXdfaW5pdCk6IERpdHRvLgorICAgICAgICAod2Via2l0X3dlYl92aWV3
X2dldF9jb3B5X3RhcmdldF9saXN0KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3Bhc3RlX3RhcmdldF9saXN0KTogRGl0dG8uCisgICAgICAgICogd2Via2l0L3dlYmtpdHdl
YnZpZXdwcml2YXRlLmg6IERpdHRvLgorCiAyMDExLTA1LTI2ICBHdXN0YXZvIE5vcm9uaGEgU2ls
dmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBNYXJ0aW4gUm9iaW5zb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtl
ZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IDg2MWY1ZWQ2
NmI0YWI3YTNjNzgzYjViNjc2YzhlMGVhZWNkYjRiZmYuLjdlZmRkODEwNjJhYjQ2NDQ1OTI0ZjZl
OWI1NDcwOTdhNTdhYzUwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2Vm
aWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCkBAIC0xOTQsOCAr
MTk0LDYgQEAgd2Via2l0Z3RrX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0d0a0FkanVzdG1lbnRXYXRjaGVyLmggXAogCVNvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oIFwKLQlTb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmNwcCBcCi0JU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5oIFwKIAlTb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0YXBwbGljYXRpb25jYWNoZS5jcHAgXAogCVNvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXRkb3dubG9hZC5jcHAgXAogCVNvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRkb3dubG9hZHByaXZhdGUuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcCBiL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCmluZGV4IDI5OGYz
MjljYzFlN2QxM2NiZGYzYjk2Y2M5ZWY5ODEzOTViOGJlM2MuLjgxOTdhMzUzZDhmNjg5ZmE0ODNh
NmFjOWI3MDJiNDczY2EyMDU3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCkBAIC0yNSw4ICsyNSwxMCBA
QAogI2luY2x1ZGUgIkVkaXRpbmdCZWhhdmlvclR5cGVzLmgiCiAjaW5jbHVkZSAiRmluZE9wdGlv
bnMuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCisjaW5jbHVkZSAiUGFzdGVib2Fy
ZEhlbHBlci5oIgogI2luY2x1ZGUgIndlYmtpdHdlYm5hdmlnYXRpb25hY3Rpb24uaCIKICNpbmNs
dWRlICJ3ZWJraXR3ZWJzZXR0aW5ncy5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCiAjZGVmaW5lIENPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0od2Via2l0X25hbWUsIHdlYmNvcmVfbmFtZSkgXApAQCAtNDgsMyArNTAsOSBAQCBD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYktpdDo6V2ViRmluZE9wdGlvbnNUcmVhdE1l
ZGlhbENhcGl0YWxBc1dvcmRTdGFydAogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJL
aXQ6OldlYkZpbmRPcHRpb25zQmFja3dhcmRzLCBCYWNrd2FyZHMpOwogQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShXZWJLaXQ6OldlYkZpbmRPcHRpb25zV3JhcEFyb3VuZCwgV3JhcEFyb3Vu
ZCk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYktpdDo6V2ViRmluZE9wdGlvbnNT
dGFydEluU2VsZWN0aW9uLCBTdGFydEluU2VsZWN0aW9uKTsKKworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRNTCwgUGFzdGVib2FyZEhl
bHBlcjo6VGFyZ2V0VHlwZU1hcmt1cCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdF
QktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19URVhULCBQYXN0ZWJvYXJkSGVscGVyOjpUYXJnZXRU
eXBlVGV4dCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdFQktJVF9XRUJfVklFV19U
QVJHRVRfSU5GT19JTUFHRSwgUGFzdGVib2FyZEhlbHBlcjo6VGFyZ2V0VHlwZUltYWdlKTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1VS
SV9MSVNULCBQYXN0ZWJvYXJkSGVscGVyOjpUYXJnZXRUeXBlVVJJTGlzdCk7CitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19ORVRTQ0FQRV9V
UkwsIFBhc3RlYm9hcmRIZWxwZXI6OlRhcmdldFR5cGVOZXRzY2FwZVVSTCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuY3BwCmluZGV4IGJm
YzhhNTI3NDNlMTc2OGRlYTYyMDA2ZjFhMDhlNzI0MmVkZDM4NWEuLjQxYWM2ZTk2NzA2MjIwZDMw
ZGI5ZTRhNTQ4YTQzNTQwMWJkMTE1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBE
cmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRQb2ludCYg
ZHJhZ0ltYWdlT3JpZ2luLAogCiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IHdlYmtpdF93
ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KGtpdChmcmFtZSkpOwogICAgIFJlZlB0cjxEYXRhT2JqZWN0
R3RrPiBkYXRhT2JqZWN0ID0gY2xpcGJvYXJkR3RrLT5kYXRhT2JqZWN0KCk7Ci0gICAgR1JlZlB0
cjxHdGtUYXJnZXRMaXN0PiB0YXJnZXRMaXN0KGNsaXBib2FyZEd0ay0+aGVscGVyKCktPnRhcmdl
dExpc3RGb3JEYXRhT2JqZWN0KGRhdGFPYmplY3QuZ2V0KCkpKTsKKyAgICBHUmVmUHRyPEd0a1Rh
cmdldExpc3Q+IHRhcmdldExpc3QoUGFzdGVib2FyZEhlbHBlcjo6ZGVmYXVsdFBhc3RlYm9hcmRI
ZWxwZXIoKS0+dGFyZ2V0TGlzdEZvckRhdGFPYmplY3QoZGF0YU9iamVjdC5nZXQoKSkpOwogICAg
IEdPd25QdHI8R2RrRXZlbnQ+IGN1cnJlbnRFdmVudChndGtfZ2V0X2N1cnJlbnRfZXZlbnQoKSk7
CiAKICAgICBHZGtEcmFnQ29udGV4dCogY29udGV4dCA9IGd0a19kcmFnX2JlZ2luKEdUS19XSURH
RVQobV93ZWJWaWV3KSwgdGFyZ2V0TGlzdC5nZXQoKSwgZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0Fj
dGlvbnMoY2xpcGJvYXJkLT5zb3VyY2VPcGVyYXRpb24oKSksIDEsIGN1cnJlbnRFdmVudC5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50R3RrLmNwcAppbmRleCA4NTUxZTNjODEwOWJjMGJmNThkOWI3Y2U4NTZhZDE5ZTc0MTE3ZDIy
Li4yNTQ4NzlhMTNlZmI2ZDBhZDJlZDBlNzQyYjk3MGYzNjkzZjM1YTE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKQEAg
LTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJQYXN0ZWJvYXJkSGVscGVyR3Rr
LmgiCisjaW5jbHVkZSAiUGFzdGVib2FyZEhlbHBlci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5
Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIldlYktpdERPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJX
ZWJLaXRET01DU1NTdHlsZURlY2xhcmF0aW9uUHJpdmF0ZS5oIgpAQCAtMjk1LDcgKzI5NSw3IEBA
IHN0YXRpYyB2b2lkIHNldFNlbGVjdGlvblByaW1hcnlDbGlwYm9hcmRJZk5lZWRlZChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQogICAgIHZpZXdTZXR0aW5nQ2xpcGJvYXJkID0gd2ViVmlldzsKICAg
ICBHQ2xvc3VyZSogY2FsbGJhY2sgPSBnX2NjbG9zdXJlX25ld19vYmplY3QoR19DQUxMQkFDSyhj
b2xsYXBzZVNlbGVjdGlvbiksIEdfT0JKRUNUKHdlYlZpZXcpKTsKICAgICBnX2Nsb3N1cmVfc2V0
X21hcnNoYWwoY2FsbGJhY2ssIGdfY2Nsb3N1cmVfbWFyc2hhbF9WT0lEX19WT0lEKTsKLSAgICBw
YXN0ZWJvYXJkSGVscGVySW5zdGFuY2UoKS0+d3JpdGVDbGlwYm9hcmRDb250ZW50cyhjbGlwYm9h
cmQsIGNhbGxiYWNrKTsKKyAgICBQYXN0ZWJvYXJkSGVscGVyOjpkZWZhdWx0UGFzdGVib2FyZEhl
bHBlcigpLT53cml0ZUNsaXBib2FyZENvbnRlbnRzKGNsaXBib2FyZCwgY2FsbGJhY2spOwogICAg
IHZpZXdTZXR0aW5nQ2xpcGJvYXJkID0gMDsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTk5ZmM4NGMzY2U1NTRhMjQwZjBhZTQ0Y2NlYzQy
MzczMDhlMGJmZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAy
MDA3IEx1Y2EgQnJ1bm8gPGxldGhhbG1hbjg4QGdtYWlsLmNvbT4KLSAqICBDb3B5cmlnaHQgKEMp
IDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTAg
TWFydGluIFJvYmluc29uIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KLSAqCi0gKiAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEz
MDEgIFVTQQotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQYXN0ZWJvYXJk
SGVscGVyR3RrLmgiCi0KLSNpbmNsdWRlICJEYXRhT2JqZWN0R3RrLmgiCi0jaW5jbHVkZSAiRm9j
dXNDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJ3ZWJraXR3ZWJm
cmFtZS5oIgotI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKLSNpbmNsdWRlICJ3ZWJraXR3ZWJ2
aWV3cHJpdmF0ZS5oIgotI2luY2x1ZGUgPGd0ay9ndGsuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1QYXN0ZWJvYXJkSGVscGVyR3RrOjpQYXN0
ZWJvYXJkSGVscGVyR3RrKCkKLXsKLSAgICBpbml0aWFsaXplVGFyZ2V0TGlzdCgpOwotfQotCi1Q
YXN0ZWJvYXJkSGVscGVyR3RrOjp+UGFzdGVib2FyZEhlbHBlckd0aygpCi17Ci19Ci0KLWd1aW50
IFBhc3RlYm9hcmRIZWxwZXJHdGs6OmdldElkRm9yVGFyZ2V0VHlwZShQYXN0ZWJvYXJkVGFyZ2V0
VHlwZSB0eXBlKQotewotICAgIGlmICh0eXBlID09IFRhcmdldFR5cGVNYXJrdXApCi0gICAgICAg
IHJldHVybiBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRNTDsKLSAgICBpZiAodHlwZSA9
PSBUYXJnZXRUeXBlSW1hZ2UpCi0gICAgICAgIHJldHVybiBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VU
X0lORk9fSU1BR0U7Ci0gICAgaWYgKHR5cGUgPT0gVGFyZ2V0VHlwZVVSSUxpc3QpCi0gICAgICAg
IHJldHVybiBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVVJJX0xJU1Q7Ci0gICAgaWYgKHR5
cGUgPT0gVGFyZ2V0VHlwZU5ldHNjYXBlVVJMKQotICAgICAgICByZXR1cm4gV0VCS0lUX1dFQl9W
SUVXX1RBUkdFVF9JTkZPX05FVFNDQVBFX1VSTDsKLQotICAgIHJldHVybiBXRUJLSVRfV0VCX1ZJ
RVdfVEFSR0VUX0lORk9fVEVYVDsKLX0KLQotYm9vbCBQYXN0ZWJvYXJkSGVscGVyR3RrOjp1c2VQ
cmltYXJ5U2VsZWN0aW9uQ2xpcGJvYXJkKEd0a1dpZGdldCogd2lkZ2V0KQotewotICAgIHJldHVy
biB3ZWJraXRfd2ViX3ZpZXdfdXNlX3ByaW1hcnlfZm9yX3Bhc3RlKFdFQktJVF9XRUJfVklFVygo
d2lkZ2V0KSkpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0Z2xvYmFscy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0Z2xvYmFs
cy5jcHAKaW5kZXggOTExNjE0YzMzYmMxNzVmMzNjMmI1ZWY4OTlkZTdjYTM3NTE4OWExZC4uOGVi
YTI1NjMwN2MwOWY5N2MyNGRiYjYyOWU1YWQ4ZWE5NTM0NDRlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGdsb2JhbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXRnbG9iYWxzLmNwcApAQCAtMjczLDcgKzI3Myw2IEBAIHZvaWQgd2Vi
a2l0SW5pdCgpCiAKICAgICBQYWdlR3JvdXA6OnNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtzKHRy
dWUpOwogCi0gICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+c2V0SGVscGVyKFdl
YktpdDo6cGFzdGVib2FyZEhlbHBlckluc3RhbmNlKCkpOwogICAgIEdPd25QdHI8Z2NoYXI+IGlj
b25EYXRhYmFzZVBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3
ZWJraXQiLCAiaWNvbmRhdGFiYXNlIiwgTlVMTCkpOwogICAgIHdlYmtpdF9pY29uX2RhdGFiYXNl
X3NldF9wYXRoKHdlYmtpdF9nZXRfaWNvbl9kYXRhYmFzZSgpLCBpY29uRGF0YWJhc2VQYXRoLmdl
dCgpKTsKIApAQCAtMjkzLDExICsyOTIsNSBAQCB2b2lkIHdlYmtpdEluaXQoKQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotUGFzdGVib2FyZEhlbHBlckd0ayogcGFzdGVib2FyZEhlbHBlckluc3Rh
bmNlKCkKLXsKLSAgICBzdGF0aWMgUGFzdGVib2FyZEhlbHBlckd0ayogaGVscGVyID0gbmV3IFBh
c3RlYm9hcmRIZWxwZXJHdGsoKTsKLSAgICByZXR1cm4gaGVscGVyOwotfQotCiB9IC8qKiBlbmQg
bmFtZXNwYWNlIFdlYktpdCAqLwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0Z2xvYmFsc3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRnbG9iYWxzcHJpdmF0ZS5oCmluZGV4IDU5MjNmMmU0MDM3ZTRjMzIxYjlmN2IzZDI1YTIwZmNh
N2VkNGFlOTIuLmEyMjI3YjU4ZmVkOTg1YjBhMzU1ODBmNTBkYjU2ZjkxZDRkNDIwMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRnbG9iYWxzcHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRnbG9iYWxzcHJpdmF0ZS5oCkBAIC0y
OCwxMyArMjgsNiBAQAogI2RlZmluZSBXRUJLSVRfUEFSQU1fUkVBREFCTEUgKChHUGFyYW1GbGFn
cykoR19QQVJBTV9SRUFEQUJMRXxHX1BBUkFNX1NUQVRJQ19OQU1FfEdfUEFSQU1fU1RBVElDX05J
Q0t8R19QQVJBTV9TVEFUSUNfQkxVUkIpKQogI2RlZmluZSBXRUJLSVRfUEFSQU1fUkVBRFdSSVRF
ICgoR1BhcmFtRmxhZ3MpKEdfUEFSQU1fUkVBRFdSSVRFfEdfUEFSQU1fU1RBVElDX05BTUV8R19Q
QVJBTV9TVEFUSUNfTklDS3xHX1BBUkFNX1NUQVRJQ19CTFVSQikpCiAKLW5hbWVzcGFjZSBXZWJL
aXQgewotCi1jbGFzcyBQYXN0ZWJvYXJkSGVscGVyR3RrOwotUGFzdGVib2FyZEhlbHBlckd0ayog
cGFzdGVib2FyZEhlbHBlckluc3RhbmNlKCk7Ci0KLX0KLQogZXh0ZXJuICJDIiB7CiAKIHZvaWQg
d2Via2l0SW5pdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
CmluZGV4IDkyNTA0OTMxODNlZmNmNzhmMjJkNjAzZTViYWIwNTcyNDk1NGY3YjEuLjNhY2U0Mzc1
NDAzYWQ3YTk0OWNhMWJjNTBjNTFkNjdlYzllYjhhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTY5LDcgKzY5LDYgQEAKICNpbmNsdWRlICJQYWdl
Q2FjaGUuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZEhl
bHBlci5oIgotI2luY2x1ZGUgIlBhc3RlYm9hcmRIZWxwZXJHdGsuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybUtleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKICNp
bmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKQEAgLTE0MCwxMiArMTM5LDEyIEBACiAgKiA8L3By
b2dyYW1saXN0aW5nPgogICovCiAKLXN0YXRpYyBjb25zdCBkb3VibGUgZGVmYXVsdERQSSA9IDk2
LjA7Ci1zdGF0aWMgSW50UG9pbnQgZ2xvYmFsUG9pbnRGb3JDbGllbnRQb2ludChHZGtXaW5kb3cq
IHdpbmRvdywgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvaW50KTsKLQogdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitzdGF0aWMgY29uc3QgZG91Ymxl
IGRlZmF1bHREUEkgPSA5Ni4wOworc3RhdGljIEludFBvaW50IGdsb2JhbFBvaW50Rm9yQ2xpZW50
UG9pbnQoR2RrV2luZG93KiB3aW5kb3csIGNvbnN0IEludFBvaW50JiBjbGllbnRQb2ludCk7CisK
IGVudW0gewogICAgIC8qIG5vcm1hbCBzaWduYWxzICovCiAgICAgTkFWSUdBVElPTl9SRVFVRVNU
RUQsCkBAIC03ODIsMTQgKzc4MSwxNSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3
X2J1dHRvbl9wcmVzc19ldmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRCdQogI2lmIFBM
QVRGT1JNKFgxMSkKICAgICAvKiBDb3B5IHNlbGVjdGlvbiB0byB0aGUgWDExIHNlbGVjdGlvbiBj
bGlwYm9hcmQgKi8KICAgICBpZiAoZXZlbnQtPmJ1dHRvbiA9PSAyKSB7Ci0gICAgICAgIGJvb2wg
cHJpbWFyeSA9IHdlYlZpZXctPnByaXYtPnVzZVByaW1hcnlGb3JQYXN0ZTsKLSAgICAgICAgd2Vi
Vmlldy0+cHJpdi0+dXNlUHJpbWFyeUZvclBhc3RlID0gdHJ1ZTsKKyAgICAgICAgUGFzdGVib2Fy
ZEhlbHBlciogaGVscGVyID0gUGFzdGVib2FyZEhlbHBlcjo6ZGVmYXVsdFBhc3RlYm9hcmRIZWxw
ZXIoKTsKKyAgICAgICAgYm9vbCB3YXNVc2luZ1ByaW1hcnkgPSBoZWxwZXItPnVzZVByaW1hcnlT
ZWxlY3Rpb25DbGlwYm9hcmQoKTsKKyAgICAgICAgaGVscGVyLT5zZXRVc2VQcmltYXJ5U2VsZWN0
aW9uQ2xpcGJvYXJkKHRydWUpOwogCiAgICAgICAgIEVkaXRvciogZWRpdG9yID0gd2ViVmlldy0+
cHJpdi0+Y29yZVBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+
ZWRpdG9yKCk7CiAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCB8fCBlZGl0b3ItPmNhblBhc3RlKCkg
fHwgZWRpdG9yLT5jYW5ESFRNTFBhc3RlKCk7CiAgICAgICAgIGVkaXRvci0+cGFzdGUoKTsKIAot
ICAgICAgICB3ZWJWaWV3LT5wcml2LT51c2VQcmltYXJ5Rm9yUGFzdGUgPSBwcmltYXJ5OworICAg
ICAgICBoZWxwZXItPnNldFVzZVByaW1hcnlTZWxlY3Rpb25DbGlwYm9hcmQod2FzVXNpbmdQcmlt
YXJ5KTsKICAgICB9CiAjZW5kaWYKIApAQCAtMTQ5OCw3ICsxNDk4LDcgQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl92aWV3X2RyYWdfZGF0YV9nZXQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0RyYWdD
b250ZXh0KiBjb24KICAgICBpZiAoIXByaXYtPmRyYWdnaW5nRGF0YU9iamVjdHMuY29udGFpbnMo
Y29udGV4dCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBhc3RlYm9hcmRIZWxwZXJJbnN0YW5j
ZSgpLT5maWxsU2VsZWN0aW9uRGF0YShzZWxlY3Rpb25EYXRhLCBpbmZvLCBwcml2LT5kcmFnZ2lu
Z0RhdGFPYmplY3RzLmdldChjb250ZXh0KS5nZXQoKSk7CisgICAgUGFzdGVib2FyZEhlbHBlcjo6
ZGVmYXVsdFBhc3RlYm9hcmRIZWxwZXIoKS0+ZmlsbFNlbGVjdGlvbkRhdGEoc2VsZWN0aW9uRGF0
YSwgaW5mbywgcHJpdi0+ZHJhZ2dpbmdEYXRhT2JqZWN0cy5nZXQoY29udGV4dCkuZ2V0KCkpOwog
fQogCiBzdGF0aWMgZ2Jvb2xlYW4gZG9EcmFnTGVhdmVMYXRlcihEcm9wcGluZ0NvbnRleHQqIGNv
bnRleHQpCkBAIC0xNTU4LDcgKzE1NTgsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92
aWV3X2RyYWdfbW90aW9uKEd0a1dpZGdldCogd2lkZ2V0LCBHZGtEcmFnQ29udGV4dCogYwogICAg
ICAgICBkcm9wcGluZ0NvbnRleHQtPmxhc3RNb3Rpb25Qb3NpdGlvbiA9IHBvc2l0aW9uOwogICAg
ICAgICBwcml2LT5kcm9wcGluZ0NvbnRleHRzLnNldChjb250ZXh0LCBkcm9wcGluZ0NvbnRleHQp
OwogCi0gICAgICAgIFZlY3RvcjxHZGtBdG9tPiBhY2NlcHRhYmxlVGFyZ2V0cyhwYXN0ZWJvYXJk
SGVscGVySW5zdGFuY2UoKS0+ZHJvcEF0b21zRm9yQ29udGV4dCh3aWRnZXQsIGNvbnRleHQpKTsK
KyAgICAgICAgVmVjdG9yPEdka0F0b20+IGFjY2VwdGFibGVUYXJnZXRzKFBhc3RlYm9hcmRIZWxw
ZXI6OmRlZmF1bHRQYXN0ZWJvYXJkSGVscGVyKCktPmRyb3BBdG9tc0ZvckNvbnRleHQod2lkZ2V0
LCBjb250ZXh0KSk7CiAgICAgICAgIGRyb3BwaW5nQ29udGV4dC0+cGVuZGluZ0RhdGFSZXF1ZXN0
cyA9IGFjY2VwdGFibGVUYXJnZXRzLnNpemUoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBhY2NlcHRhYmxlVGFyZ2V0cy5zaXplKCk7IGkrKykKICAgICAgICAgICAgIGd0a19kcmFn
X2dldF9kYXRhKHdpZGdldCwgY29udGV4dCwgYWNjZXB0YWJsZVRhcmdldHMuYXQoaSksIHRpbWUp
OwpAQCAtMTU5MSw3ICsxNTkxLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2RyYWdf
ZGF0YV9yZWNlaXZlZChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRHJhZ0NvbnRleHQKIAogICAgIERy
b3BwaW5nQ29udGV4dCogZHJvcHBpbmdDb250ZXh0ID0gcHJpdi0+ZHJvcHBpbmdDb250ZXh0cy5n
ZXQoY29udGV4dCk7CiAgICAgZHJvcHBpbmdDb250ZXh0LT5wZW5kaW5nRGF0YVJlcXVlc3RzLS07
Ci0gICAgcGFzdGVib2FyZEhlbHBlckluc3RhbmNlKCktPmZpbGxEYXRhT2JqZWN0RnJvbURyb3BE
YXRhKHNlbGVjdGlvbkRhdGEsIGluZm8sIGRyb3BwaW5nQ29udGV4dC0+ZGF0YU9iamVjdC5nZXQo
KSk7CisgICAgUGFzdGVib2FyZEhlbHBlcjo6ZGVmYXVsdFBhc3RlYm9hcmRIZWxwZXIoKS0+Zmls
bERhdGFPYmplY3RGcm9tRHJvcERhdGEoc2VsZWN0aW9uRGF0YSwgaW5mbywgZHJvcHBpbmdDb250
ZXh0LT5kYXRhT2JqZWN0LmdldCgpKTsKIAogICAgIGlmIChkcm9wcGluZ0NvbnRleHQtPnBlbmRp
bmdEYXRhUmVxdWVzdHMpCiAgICAgICAgIHJldHVybjsKQEAgLTM0ODMsNyArMzQ4Myw3IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19pbml0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAg
ICAgcHJpdi0+c3ViUmVzb3VyY2VzID0gYWRvcHRHUmVmKGdfaGFzaF90YWJsZV9uZXdfZnVsbChn
X3N0cl9oYXNoLCBnX3N0cl9lcXVhbCwgZ19mcmVlLCBnX29iamVjdF91bnJlZikpOwogCiAgICAg
Z3RrX2RyYWdfZGVzdF9zZXQoR1RLX1dJREdFVCh3ZWJWaWV3KSwgc3RhdGljX2Nhc3Q8R3RrRGVz
dERlZmF1bHRzPigwKSwgMCwgMCwgc3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4oR0RLX0FDVElP
Tl9DT1BZIHwgR0RLX0FDVElPTl9DT1BZIHwgR0RLX0FDVElPTl9NT1ZFIHwgR0RLX0FDVElPTl9M
SU5LIHwgR0RLX0FDVElPTl9QUklWQVRFKSk7Ci0gICAgZ3RrX2RyYWdfZGVzdF9zZXRfdGFyZ2V0
X2xpc3QoR1RLX1dJREdFVCh3ZWJWaWV3KSwgcGFzdGVib2FyZEhlbHBlckluc3RhbmNlKCktPnRh
cmdldExpc3QoKSk7CisgICAgZ3RrX2RyYWdfZGVzdF9zZXRfdGFyZ2V0X2xpc3QoR1RLX1dJREdF
VCh3ZWJWaWV3KSwgUGFzdGVib2FyZEhlbHBlcjo6ZGVmYXVsdFBhc3RlYm9hcmRIZWxwZXIoKS0+
dGFyZ2V0TGlzdCgpKTsKIH0KIAogR3RrV2lkZ2V0KiB3ZWJraXRfd2ViX3ZpZXdfbmV3KHZvaWQp
CkBAIC0zNTI4LDExICszNTI4LDYgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9kb3du
bG9hZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXROZXR3b3JrUmVxdWUKICAgICAgICAg
d2Via2l0X2Rvd25sb2FkX3N0YXJ0KGRvd25sb2FkKTsKIH0KIAotYm9vbCB3ZWJraXRfd2ViX3Zp
ZXdfdXNlX3ByaW1hcnlfZm9yX3Bhc3RlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCi17Ci0gICAg
cmV0dXJuIHdlYlZpZXctPnByaXYtPnVzZVByaW1hcnlGb3JQYXN0ZTsKLX0KLQogLyoqCiAgKiB3
ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzOgogICogQHdlYlZpZXc6IGEgI1dlYktpdFdlYlZp
ZXcKQEAgLTQzMTYsNyArNDMxMSw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9lZGl0YWJs
ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBnYm9vbGVhbiBmbGFnKQogICoqLwogR3RrVGFyZ2V0
TGlzdCogd2Via2l0X3dlYl92aWV3X2dldF9jb3B5X3RhcmdldF9saXN0KFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiB7Ci0gICAgcmV0dXJuIHBhc3RlYm9hcmRIZWxwZXJJbnN0YW5jZSgpLT50YXJn
ZXRMaXN0KCk7CisgICAgcmV0dXJuIFBhc3RlYm9hcmRIZWxwZXI6OmRlZmF1bHRQYXN0ZWJvYXJk
SGVscGVyKCktPnRhcmdldExpc3QoKTsKIH0KIAogLyoqCkBAIC00MzMzLDcgKzQzMjgsNyBAQCBH
dGtUYXJnZXRMaXN0KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvcHlfdGFyZ2V0X2xpc3QoV2ViS2l0
V2ViVmlldyogd2ViVmlldykKICAqKi8KIEd0a1RhcmdldExpc3QqIHdlYmtpdF93ZWJfdmlld19n
ZXRfcGFzdGVfdGFyZ2V0X2xpc3QoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICByZXR1
cm4gcGFzdGVib2FyZEhlbHBlckluc3RhbmNlKCktPnRhcmdldExpc3QoKTsKKyAgICByZXR1cm4g
UGFzdGVib2FyZEhlbHBlcjo6ZGVmYXVsdFBhc3RlYm9hcmRIZWxwZXIoKS0+dGFyZ2V0TGlzdCgp
OwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdw
cml2YXRlLmgKaW5kZXggOTAzZmFiZDFkNmMwNGRiMDVjYTNhOGE1NTg3MWM0YjUxZWVlYWNiNS4u
NDhhZjgyYTEwZjU5YTk3NTJmOTM2YTBiMGE1ZGViMTU3NTU0MjcxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmgKQEAgLTg2LDcgKzg2LDYg
QEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAgQ1N0cmluZyBpY29uVVJJOwog
CiAgICAgZ2Jvb2xlYW4gZGlzcG9zaW5nOwotICAgIGdib29sZWFuIHVzZVByaW1hcnlGb3JQYXN0
ZTsKIAogI2lmIEVOQUJMRShWSURFTykKICAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBm
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOwpAQCAtMTIxLDcgKzEyMCw2IEBAIHZvaWQgd2Via2l0
X3dlYl92aWV3X3NldF90b29sdGlwX3RleHQoV2ViS2l0V2ViVmlldyosIGNvbnN0IGNoYXIqKTsK
IEd0a01lbnUqIHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dF9tZW51KFdlYktpdFdlYlZpZXcq
KTsKIAogV0VCS0lUX0FQSSBnY2hhciogd2Via2l0X3dlYl92aWV3X2dldF9zZWxlY3RlZF90ZXh0
KFdlYktpdFdlYlZpZXcqKTsKLWJvb2wgd2Via2l0X3dlYl92aWV3X3VzZV9wcmltYXJ5X2Zvcl9w
YXN0ZShXZWJLaXRXZWJWaWV3Kik7CiAKIHZvaWQgd2ViVmlld0VudGVyRnVsbHNjcmVlbihXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJDb3JlOjpOb2RlKik7CiB2b2lkIHdlYlZpZXdFeGl0RnVs
bHNjcmVlbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>