<?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>159843</bug_id>
          
          <creation_ts>2016-07-15 16:08:10 -0700</creation_ts>
          <short_desc>Mac UI process needs to know about element focus and blur, much like iOS</short_desc>
          <delta_ts>2016-07-15 17:41:05 -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>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>enrica</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1211637</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-07-15 16:08:10 -0700</bug_when>
    <thetext>Mac UI process needs to know about element focus and blur, much like iOS

rdar://problem/27229504</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211645</commentid>
    <comment_count>1</comment_count>
      <attachid>283810</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-07-15 16:31:10 -0700</bug_when>
    <thetext>Created attachment 283810
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211646</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-15 16:32:26 -0700</bug_when>
    <thetext>Attachment 283810 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/Cocoa/WebViewImpl.h:275:  The parameter name &quot;editableElementIsFocused&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:1423:  The parameter name &quot;editableElementIsFocused&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211648</commentid>
    <comment_count>3</comment_count>
      <attachid>283812</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-07-15 16:33:49 -0700</bug_when>
    <thetext>Created attachment 283812
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211663</commentid>
    <comment_count>4</comment_count>
      <attachid>283812</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-07-15 16:41:50 -0700</bug_when>
    <thetext>Comment on attachment 283812
Patch

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

&gt; Source/WebKit2/UIProcess/mac/PageClientImpl.h:174
&gt; +#if PLATFORM(MAC)

This file is already platform(mac)!

&gt; Source/WebKit2/UIProcess/mac/PageClientImpl.mm:624
&gt; +#if PLATFORM(MAC)

Ditto!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211668</commentid>
    <comment_count>5</comment_count>
      <attachid>283815</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-07-15 16:56:12 -0700</bug_when>
    <thetext>Created attachment 283815
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211677</commentid>
    <comment_count>6</comment_count>
      <attachid>283819</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-07-15 17:05:04 -0700</bug_when>
    <thetext>Created attachment 283819
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211699</commentid>
    <comment_count>7</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-07-15 17:41:05 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/203312</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283810</attachid>
            <date>2016-07-15 16:31:10 -0700</date>
            <delta_ts>2016-07-15 16:33:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>22181</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzMwNikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBACisyMDE2LTA3LTE1ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBNYWMgVUkgcHJvY2VzcyBuZWVkcyB0
byBrbm93IGFib3V0IGVsZW1lbnQgZm9jdXMgYW5kIGJsdXIsIG11Y2ggbGlrZSBpT1MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTg0MworICAgICAg
ICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzI3MjI5NTA0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBtYWtlcyB0aGUgZXhpc3RpbmcgaU9TIG1hY2hpbmVyeSB0byBoYW5kbGUgZm9jdXMgYW5kIGJs
dXJyaW5nIG9mIAorICAgICAgICBlbGVtZW50cyBjcm9zcy1wbGF0Zm9ybS4gSW5zdGVhZCBvZiB1
c2luZyB0aGUgZXhpc3RpbmcgaU9TIG1lc3NhZ2VzIGZvciAKKyAgICAgICAgc3RhcnRBc3Npc3Rp
bmdOb2RlL3N0b3BBc3Npc3RpbmdOb2RlLCB0aGlzIHBhdGNoIGFkZHMgYSBuZXcgbWVzc2FnZSB0
aGF0IAorICAgICAgICByZXF1aXJlIG9ubHkgYSBib29sZWFuIHBhcmFtZXRlcjogc2V0RWRpdGFi
bGVFbGVtZW50SXNGb2N1c2VkLgorCisgICAgICAgIE5vdyB0aGF0IG1vcmUgb2YgdGhpcyBjb2Rl
IGlzIHNoYXJlZCwgdGhpcyBwYXRjaCB0ZWFzZXMgCisgICAgICAgIG1faGFzRm9jdXNlZER1ZVRv
VXNlckludGVyYWN0aW9uIG91dCBpbnRvIHR3byB2YXJpYWJsZXMuIEkgcmVhbGl6ZWQgdGhhdCBp
dCAKKyAgICAgICAgd2FzIGJlaW5nIHVzZWQgdG8gbWVhbiB0d28gc2xpZ2h0bHkgZGlmZmVyZW50
IHRoaW5ncyBvbiBNYWMgYW5kIGlPUywgd2hpY2ggCisgICAgICAgIHdhcyB2ZXJ5IGNvbmZ1c2lu
Zy4gTm93IHdlIGhhdmUgbV9pc0Fzc2lzdGluZ05vZGVEdWVUb1VzZXJJbnRlcmFjdGlvbiB0byAK
KyAgICAgICAgcmVwcmVzZW50IHRoZSB3YXkgaU9TIHdhcyB1c2luZyB0aGUgdmFyaWFibGUsIGFu
ZCB3ZSBoYXZlIAorICAgICAgICBtX2hhc0V2ZXJGb2N1c2VkRWxlbWVudER1ZVRvVXNlckludGVy
YWN0aW9uU2luY2VQYWdlVHJhbnNpdGlvbiB0byByZXByZXNlbnQgCisgICAgICAgIGhvdyBNYWMg
d2FzIHVzaW5nIHRoZSB2YXJpYWJsZS4gVGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkgYmVoYXZpb3Ig
Y2hhbmdlcyB3aXRoIAorICAgICAgICB0aGlzIHJlLW5hbWUsIGp1c3QgYWRkZWQgY2xhcml0eS4K
KworICAgICAgICBXZWJWaWV3SW1wbCBoYXMgYSBuZXcgbWVtYmVyIHZhcmlhYmxlIG1fZWRpdGFi
bGVFbGVtZW50SXNGb2N1c2VkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OnNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCk6CisKKyAg
ICAgICAgUGlwZSB0aGUgbmV3IHNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCBtZXNzYWdlIHRv
IFdlYlZpZXdJbXBsLgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6c2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OnNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCk6CisKKyAgICAgICAgZWxl
bWVudERpZEZvY3VzKCkgYW5kIGVsZW1lbnREaWRCbHVyKCkgYXJlIG5vdyBQTEFURk9STShDT0NP
QSkgaW5zdGVhZCBvZiAKKyAgICAgICAgUExBVEZPUk0oSU9TKQorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQ2hyb21lQ2xpZW50OjplbGVtZW50RGlkRm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
aHJvbWVDbGllbnQ6OmVsZW1lbnREaWRCbHVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYkNocm9tZUNsaWVudElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q2hyb21lQ2xpZW50OjplbGVtZW50RGlkRm9jdXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJDaHJvbWVDbGllbnQ6OmVsZW1lbnREaWRCbHVyKTogRGVsZXRlZC4KKworICAgICAgICBt
X2hhc1BlbmRpbmdCbHVyTm90aWZpY2F0aW9uIGlzIG5vIGxvbmdlciBpT1Mtb25seS4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisKKyAgICAgICAgVXNlIG91ciB0
d28gbmV3IGJvb2xzIG1faXNBc3Npc3RpbmdOb2RlRHVlVG9Vc2VySW50ZXJhY3Rpb24gYW5kIAor
ICAgICAgICBtX2hhc0V2ZXJGb2N1c2VkRWxlbWVudER1ZVRvVXNlckludGVyYWN0aW9uU2luY2VQ
YWdlVHJhbnNpdGlvbiAKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkU3RhcnRQYWdlVHJh
bnNpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZENoYW5nZVNlbGVjdGlvbik6
CisKKyAgICAgICAgVGhlc2UgZnVuY3Rpb25zIGFyZSBhbGwgbmV3bHkgY3Jvc3MtcGxhdGZvcm0u
IFRoZSBNZXNzYWdlcyB0aGV5IHNlbmQgYXJlIAorICAgICAgICBzdGlsbCBwbGF0Zm9ybS1zcGVj
aWZpYywgYnV0IG90aGVyd2lzZSB0aGUgbG9naWMgaXMgdGhlIHNhbWUuIFdlIAorICAgICAgICBk
aXNwYXRjaF9hc3luYyB0aGUgYmx1ciBtZXNzYWdlcyBzbyB0aGF0IHRoZSBVSSBwcm9jZXNzIGZl
YXR1cmVzIHdvbuKAmXQgYmUgCisgICAgICAgIGZsYXNoeSB3aGVuIHRoZSB1c2VyIGlzIHRhcHBp
bmcsIHRhYmJpbmcsIG9yIGNsaWNraW5nIHRocm91Z2ggZm9ybSBmaWVsZHMuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnJlc2V0QXNzaXN0ZWROb2RlRm9yRnJhbWUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjplbGVtZW50RGlkRm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjplbGVtZW50RGlkQmx1cik6CisKKyAgICAgICAgcmVzZXRBc3Npc3RlZE5vZGVGb3JGcmFtZSgp
IGlzIG5vIGxvbmdlciBpT1Mtb25seS4gCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZENv
bW1pdExvYWQpOgorCisgICAgICAgIE1vdmUgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgYXJvdW5k
IHNvIHRoYXQgdGhleSBhcmUgZGVmaW5lZCBmb3IgdGhlIHJpZ2h0IAorICAgICAgICBwbGF0Zm9y
bSwgYW5kIGRlY2xhcmUgdGhlIHR3byBuZXcgYm9vbHMgaW4gcGxhY2Ugb2YgdGhlIG9sZCBvbmUu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKworICAgICAgICBUaGVz
ZSBmdW5jdGlvbnMgYXJlIG5vdyBkZWZpbmVkIGluIFdlYlBhZ2UuY3BwCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpyZXNldEFzc2lzdGVkTm9kZUZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6ZWxlbWVudERpZEZvY3VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZWxlbWVudERpZEJsdXIpOiBEZWxldGVkLgorCiAyMDE2LTA3LTE1ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkZWQgYSBtYWtlUmVmPFQ+
IGhlbHBlcgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCShyZXZpc2lv
biAyMDMxNzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzUsNiArMjc1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3Rlckluc2VydGlvblVuZG9Hcm91cGluZygpID0gMDsKICNlbmRpZiAvLyBVU0UoSU5TRVJU
SU9OX1VORE9fR1JPVVBJTkcpCiAjZW5kaWYgLy8gVVNFKEFQUEtJVCkKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGJvb2wpID0gMDsKICNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpCiAKICNpZiBQTEFURk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjAzMTcyKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5NTUsNiAr
NTk1NSwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzCiB9CiAj
ZW5kaWYKIAordm9pZCBXZWJQYWdlUHJveHk6OnNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZChi
b29sIGVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCkKK3sKKyAgICBtX3BhZ2VDbGllbnQuc2V0RWRp
dGFibGVFbGVtZW50SXNGb2N1c2VkKGVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCk7Cit9CisKICNl
bmRpZiAvLyBQTEFURk9STShNQUMpCiAKICNpZiBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDIwMzE3MikKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
MTQxOSw2ICsxNDE5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVy
bmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KTsKICAgICB2b2lkIGRpY3RhdGlvbkFs
dGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0LCBWZWN0b3I8U3RyaW5nPiYgcmVz
dWx0KTsKICNlbmRpZgorCisgICAgdm9pZCBzZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoYm9v
bCBlZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQpOwogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAog
I2lmIFBMQVRGT1JNKElPUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjAzMTcyKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpA
QCAtMzQyLDYgKzM0Miw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlzbWlz
c0NvcnJlY3Rpb25QYW5lbChpbnQzMl90IHJlYXNvbikKICAgICBEaXNtaXNzQ29ycmVjdGlvblBh
bmVsU29vbihpbnQzMl90IHJlYXNvbikgLT4gKFN0cmluZyByZXN1bHQpCiAgICAgUmVjb3JkQXV0
b2NvcnJlY3Rpb25SZXNwb25zZShpbnQzMl90IHJlc3BvbnNlVHlwZSwgU3RyaW5nIHJlcGxhY2Vk
U3RyaW5nLCBTdHJpbmcgcmVwbGFjZW1lbnRTdHJpbmcpOworCisgICAgU2V0RWRpdGFibGVFbGVt
ZW50SXNGb2N1c2VkKGJvb2wgZWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKQogI2VuZGlmCiAKICNp
ZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCShyZXZpc2lvbiAyMDMxNzIpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcyLDYgKzI3Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZUZvbnRQYW5lbElmTmVlZGVk
KCk7CiAgICAgdm9pZCBjaGFuZ2VGb250RnJvbUZvbnRQYW5lbCgpOwogICAgIGJvb2wgdmFsaWRh
dGVVc2VySW50ZXJmYWNlSXRlbShpZCA8TlNWYWxpZGF0ZWRVc2VySW50ZXJmYWNlSXRlbT4pOwor
ICAgIHZvaWQgc2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGJvb2wgZWRpdGFibGVFbGVtZW50
SXNGb2N1c2VkKTsKIAogICAgIHZvaWQgc3RhcnRTcGVha2luZygpOwogICAgIHZvaWQgc3RvcFNw
ZWFraW5nKGlkKTsKQEAgLTY0Niw2ICs2NDcsNyBAQCBwcml2YXRlOgogICAgIE5TUmFuZ2UgbV9z
b2Z0U3BhY2VSYW5nZSB7IE5TTm90Rm91bmQsIDAgfTsKICAgICBib29sIG1faXNIYW5kbGluZ0Fj
Y2VwdGVkQ2FuZGlkYXRlIHsgZmFsc2UgfTsKICAgICBib29sIG1fcmVxdWlyZXNVc2VyQWN0aW9u
Rm9yRWRpdGluZ0NvbnRyb2xzTWFuYWdlciB7IGZhbHNlIH07CisgICAgYm9vbCBtX2VkaXRhYmxl
RWxlbWVudElzRm9jdXNlZCB7IGZhbHNlIH07CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tCShyZXZpc2lvbiAyMDMxNzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ1Myw2ICs0NTMsMTEgQEAgdm9pZCBX
ZWJWaWV3SW1wbDo6d2ViVmlld0ltcGxBZGRpdGlvbnNXaQogewogfQogCit2b2lkIFdlYlZpZXdJ
bXBsOjpzZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoYm9vbCBlZGl0YWJsZUVsZW1lbnRJc0Zv
Y3VzZWQpCit7CisgICAgbV9lZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQgPSBlZGl0YWJsZUVsZW1l
bnRJc0ZvY3VzZWQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogI2VuZGlmIC8vIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwICYmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsLmgJKHJldmlzaW9uIDIwMzE3MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDYgKzE3MSw5IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlv
bkNvbnRleHQpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0
aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSBvdmVycmlkZTsKICNlbmRpZgorI2lmIFBM
QVRGT1JNKE1BQykKKyAgICB2b2lkIHNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZChib29sKSBv
dmVycmlkZTsKKyNlbmRpZgogI2lmIFVTRShJTlNFUlRJT05fVU5ET19HUk9VUElORykKICAgICB2
b2lkIHJlZ2lzdGVySW5zZXJ0aW9uVW5kb0dyb3VwaW5nKCkgb3ZlcnJpZGU7CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQko
cmV2aXNpb24gMjAzMTcyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtNjIxLDYgKzYyMSwxMyBAQCBWZWN0b3I8U3Ry
aW5nPiBQYWdlQ2xpZW50SW1wbDo6ZGljdGF0aW9uCiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JN
KE1BQykKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZChi
b29sIGVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCkKK3sKKyAgICBtX2ltcGwtPnNldEVkaXRhYmxl
RWxlbWVudElzRm9jdXNlZChlZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQpOworfQorI2VuZGlmCisK
ICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAKIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlD
bGllbnQmIFBhZ2VDbGllbnRJbXBsOjpmdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50KCkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJldmlzaW9uIDIwMzE3MikKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTY5LDYgKzE2OSwxNiBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6dW5m
b2N1cygpCiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpl
bGVtZW50RGlkRm9jdXMoY29uc3QgV2ViQ29yZTo6Tm9kZSogbm9kZSkKK3sKKyAgICBtX3BhZ2Ut
PmVsZW1lbnREaWRGb2N1cyhjb25zdF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihub2RlKSk7Cit9CisK
K3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjplbGVtZW50RGlkQmx1cihjb25zdCBXZWJDb3JlOjpOb2Rl
KiBub2RlKQoreworICAgIG1fcGFnZS0+ZWxlbWVudERpZEJsdXIoY29uc3RfY2FzdDxXZWJDb3Jl
OjpOb2RlKj4obm9kZSkpOworfQorCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6bWFrZUZpcnN0UmVz
cG9uZGVyKCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6TWFr
ZUZpcnN0UmVzcG9uZGVyKCkpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiAy
MDMxNzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsOCArMjM2LDYgQEAgcHJpdmF0ZToK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZvaWQgZWxlbWVudERpZEZvY3VzKGNv
bnN0IFdlYkNvcmU6Ok5vZGUqKSBvdmVycmlkZTsKLSAgICB2b2lkIGVsZW1lbnREaWRCbHVyKGNv
bnN0IFdlYkNvcmU6Ok5vZGUqKSBvdmVycmlkZTsKICAgICB2b2lkIGVsZW1lbnREaWRSZWZvY3Vz
KGNvbnN0IFdlYkNvcmU6Ok5vZGUqKSBvdmVycmlkZTsKICNlbmRpZgogCkBAIC0yNTksNiArMjU3
LDkgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBl
bGVtZW50RGlkRm9jdXMoY29uc3QgV2ViQ29yZTo6Tm9kZSopIG92ZXJyaWRlOworICAgIHZvaWQg
ZWxlbWVudERpZEJsdXIoY29uc3QgV2ViQ29yZTo6Tm9kZSopIG92ZXJyaWRlOworCiAgICAgdm9p
ZCBtYWtlRmlyc3RSZXNwb25kZXIoKSBvdmVycmlkZTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJDaHJvbWVDbGllbnRJT1Mu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9pb3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCShyZXZpc2lvbiAyMDMxNzIpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJDaHJvbWVDbGllbnRJT1Mu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE2ICs0NCw2IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50
OjpkaWRQcmV2ZW50RGVmYXVsdEYKIH0KICNlbmRpZgogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6
ZWxlbWVudERpZEZvY3VzKGNvbnN0IFdlYkNvcmU6Ok5vZGUqIG5vZGUpCi17Ci0gICAgbV9wYWdl
LT5lbGVtZW50RGlkRm9jdXMoY29uc3RfY2FzdDxXZWJDb3JlOjpOb2RlKj4obm9kZSkpOwotfQot
Ci12b2lkIFdlYkNocm9tZUNsaWVudDo6ZWxlbWVudERpZEJsdXIoY29uc3QgV2ViQ29yZTo6Tm9k
ZSogbm9kZSkKLXsKLSAgICBtX3BhZ2UtPmVsZW1lbnREaWRCbHVyKGNvbnN0X2Nhc3Q8V2ViQ29y
ZTo6Tm9kZSo+KG5vZGUpKTsKLX0KLQogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmVsZW1lbnREaWRS
ZWZvY3VzKGNvbnN0IFdlYkNvcmU6Ok5vZGUqIG5vZGUpCiB7CiAgICAgZWxlbWVudERpZEZvY3Vz
KG5vZGUpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAkocmV2aXNpb24gMjAzMTcyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDgsMTMgKzM0OCwxMyBAQCBX
ZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgCiAjaWYgRU5BQkxFKENPTlRF
WFRfTUVOVVMpCiAgICAgLCBtX2lzU2hvd2luZ0NvbnRleHRNZW51KGZhbHNlKQogI2VuZGlmCisg
ICAgLCBtX2hhc1BlbmRpbmdCbHVyTm90aWZpY2F0aW9uKGZhbHNlKQogI2lmIFBMQVRGT1JNKElP
UykKICAgICAsIG1fc2VsZWN0aW9uQW5jaG9yKFN0YXJ0KQogICAgICwgbV9oYXNSZWNlaXZlZFZp
c2libGVDb250ZW50UmVjdHNBZnRlckRpZENvbW1pdExvYWQoZmFsc2UpCiAgICAgLCBtX3NjYWxl
V2FzU2V0QnlVSVByb2Nlc3MoZmFsc2UpCiAgICAgLCBtX3VzZXJIYXNDaGFuZ2VkUGFnZVNjYWxl
RmFjdG9yKGZhbHNlKQogICAgICwgbV9oYXNTdGFibGVQYWdlU2NhbGVGYWN0b3IodHJ1ZSkKLSAg
ICAsIG1faGFzUGVuZGluZ0JsdXJOb3RpZmljYXRpb24oZmFsc2UpCiAgICAgLCBtX3VzZVRlc3Rp
bmdWaWV3cG9ydENvbmZpZ3VyYXRpb24oZmFsc2UpCiAgICAgLCBtX2lzSW5TdGFibGVTdGF0ZSh0
cnVlKQogICAgICwgbV9mb3JjZUFsd2F5c1VzZXJTY2FsYWJsZShwYXJhbWV0ZXJzLmlnbm9yZXNW
aWV3cG9ydFNjYWxlTGltaXRzKQpAQCAtMjYwOCwxMiArMjYwOCwxMyBAQCB2b2lkIFdlYlBhZ2U6
OmRpZFN0YXJ0UGFnZVRyYW5zaXRpb24oKQogICAgIG1fZHJhd2luZ0FyZWEtPnNldExheWVyVHJl
ZVN0YXRlSXNGcm96ZW4odHJ1ZSk7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgYm9vbCBoYXNQ
cmV2aW91c2x5Rm9jdXNlZER1ZVRvVXNlckludGVyYWN0aW9uID0gbV9oYXNGb2N1c2VkRHVlVG9V
c2VySW50ZXJhY3Rpb247CisgICAgYm9vbCBoYXNQcmV2aW91c2x5Rm9jdXNlZER1ZVRvVXNlcklu
dGVyYWN0aW9uID0gbV9oYXNFdmVyRm9jdXNlZEVsZW1lbnREdWVUb1VzZXJJbnRlcmFjdGlvblNp
bmNlUGFnZVRyYW5zaXRpb247CiAjZW5kaWYKLSAgICBtX2hhc0ZvY3VzZWREdWVUb1VzZXJJbnRl
cmFjdGlvbiA9IGZhbHNlOworICAgIG1faGFzRXZlckZvY3VzZWRFbGVtZW50RHVlVG9Vc2VySW50
ZXJhY3Rpb25TaW5jZVBhZ2VUcmFuc2l0aW9uID0gZmFsc2U7CisgICAgbV9pc0Fzc2lzdGluZ05v
ZGVEdWVUb1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBp
ZiAoaGFzUHJldmlvdXNseUZvY3VzZWREdWVUb1VzZXJJbnRlcmFjdGlvbikKLSAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRIYXNIYWRTZWxlY3Rpb25DaGFuZ2VzRnJvbVVz
ZXJJbnRlcmFjdGlvbihtX2hhc0ZvY3VzZWREdWVUb1VzZXJJbnRlcmFjdGlvbikpOworICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldEhhc0hhZFNlbGVjdGlvbkNoYW5nZXNG
cm9tVXNlckludGVyYWN0aW9uKG1faGFzRXZlckZvY3VzZWRFbGVtZW50RHVlVG9Vc2VySW50ZXJh
Y3Rpb25TaW5jZVBhZ2VUcmFuc2l0aW9uKSk7CiAjZW5kaWYKIH0KIApAQCAtNDc1MywxMCArNDc1
NCwxMSBAQCB2b2lkIFdlYlBhZ2U6OmRpZENoYW5nZVNlbGVjdGlvbigpCiAgICAgbV9pc0VkaXRv
clN0YXRlTWlzc2luZ1Bvc3RMYXlvdXREYXRhID0gZWRpdG9yU3RhdGUuaXNNaXNzaW5nUG9zdExh
eW91dERhdGE7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgYm9vbCBoYXNQcmV2aW91c2x5Rm9j
dXNlZER1ZVRvVXNlckludGVyYWN0aW9uID0gbV9oYXNGb2N1c2VkRHVlVG9Vc2VySW50ZXJhY3Rp
b247Ci0gICAgbV9oYXNGb2N1c2VkRHVlVG9Vc2VySW50ZXJhY3Rpb24gfD0gbV91c2VySXNJbnRl
cmFjdGluZzsKLSAgICBpZiAoIWhhc1ByZXZpb3VzbHlGb2N1c2VkRHVlVG9Vc2VySW50ZXJhY3Rp
b24gJiYgbV9oYXNGb2N1c2VkRHVlVG9Vc2VySW50ZXJhY3Rpb24pCi0gICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0SGFzSGFkU2VsZWN0aW9uQ2hhbmdlc0Zyb21Vc2VySW50
ZXJhY3Rpb24obV9oYXNGb2N1c2VkRHVlVG9Vc2VySW50ZXJhY3Rpb24pKTsKKyAgICBib29sIGhh
c1ByZXZpb3VzbHlGb2N1c2VkRHVlVG9Vc2VySW50ZXJhY3Rpb24gPSBtX2hhc0V2ZXJGb2N1c2Vk
RWxlbWVudER1ZVRvVXNlckludGVyYWN0aW9uU2luY2VQYWdlVHJhbnNpdGlvbjsKKyAgICBtX2hh
c0V2ZXJGb2N1c2VkRWxlbWVudER1ZVRvVXNlckludGVyYWN0aW9uU2luY2VQYWdlVHJhbnNpdGlv
biB8PSBtX3VzZXJJc0ludGVyYWN0aW5nOworCisgICAgaWYgKCFoYXNQcmV2aW91c2x5Rm9jdXNl
ZER1ZVRvVXNlckludGVyYWN0aW9uICYmIG1faGFzRXZlckZvY3VzZWRFbGVtZW50RHVlVG9Vc2Vy
SW50ZXJhY3Rpb25TaW5jZVBhZ2VUcmFuc2l0aW9uKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlNldEhhc0hhZFNlbGVjdGlvbkNoYW5nZXNGcm9tVXNlckludGVyYWN0aW9u
KG1faGFzRXZlckZvY3VzZWRFbGVtZW50RHVlVG9Vc2VySW50ZXJhY3Rpb25TaW5jZVBhZ2VUcmFu
c2l0aW9uKSk7CiAKICAgICAvLyBBYmFuZG9uIHRoZSBjdXJyZW50IGlubGluZSBpbnB1dCBzZXNz
aW9uIGlmIHNlbGVjdGlvbiBjaGFuZ2VkIGZvciBhbnkgb3RoZXIgcmVhc29uIGJ1dCBhbiBpbnB1
dCBtZXRob2QgZGlyZWN0IGFjdGlvbi4KICAgICAvLyBGSVhNRTogVGhpcyBsb2dpYyBzaG91bGQg
YmUgaW4gV2ViQ29yZS4KQEAgLTQ3NzYsNiArNDc3OCw2OCBAQCB2b2lkIFdlYlBhZ2U6OmRpZENo
YW5nZVNlbGVjdGlvbigpCiAjZW5kaWYKIH0KIAordm9pZCBXZWJQYWdlOjpyZXNldEFzc2lzdGVk
Tm9kZUZvckZyYW1lKFdlYkZyYW1lKiBmcmFtZSkKK3sKKyAgICBpZiAoIW1fYXNzaXN0ZWROb2Rl
KQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1fYXNzaXN0ZWROb2RlLT5kb2N1bWVudCgpLmZy
YW1lKCkgPT0gZnJhbWUtPmNvcmVGcmFtZSgpKSB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0b3BBc3Npc3RpbmdOb2RlKCkpOworI2Vs
aWYgUExBVEZPUk0oTUFDKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNl
dEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZChmYWxzZSkpOworI2VuZGlmCisgICAgICAgIG1fYXNz
aXN0ZWROb2RlID0gbnVsbHB0cjsKKyAgICB9Cit9CisKK3ZvaWQgV2ViUGFnZTo6ZWxlbWVudERp
ZEZvY3VzKFdlYkNvcmU6Ok5vZGUqIG5vZGUpCit7CisgICAgaWYgKG1fYXNzaXN0ZWROb2RlID09
IG5vZGUgJiYgbV9pc0Fzc2lzdGluZ05vZGVEdWVUb1VzZXJJbnRlcmFjdGlvbikKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoV2ViQ29yZTo6SFRNTE5hbWVzOjpz
ZWxlY3RUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUoV2ViQ29yZTo6SFRNTE5hbWVzOjppbnB1dFRh
ZykgfHwgbm9kZS0+aGFzVGFnTmFtZShXZWJDb3JlOjpIVE1MTmFtZXM6OnRleHRhcmVhVGFnKSB8
fCBub2RlLT5oYXNFZGl0YWJsZVN0eWxlKCkpIHsKKyAgICAgICAgbV9hc3Npc3RlZE5vZGUgPSBu
b2RlOworICAgICAgICBtX2lzQXNzaXN0aW5nTm9kZUR1ZVRvVXNlckludGVyYWN0aW9uIHw9IG1f
dXNlcklzSW50ZXJhY3Rpbmc7CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIEFzc2lzdGVk
Tm9kZUluZm9ybWF0aW9uIGluZm9ybWF0aW9uOworICAgICAgICBnZXRBc3Npc3RlZE5vZGVJbmZv
cm1hdGlvbihpbmZvcm1hdGlvbik7CisgICAgICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRh
dGE7CisKKyAgICAgICAgbV9mb3JtQ2xpZW50LT53aWxsQmVnaW5JbnB1dFNlc3Npb24odGhpcywg
ZG93bmNhc3Q8RWxlbWVudD4obm9kZSksIFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpub2RlLT5k
b2N1bWVudCgpLmZyYW1lKCkpLCB1c2VyRGF0YSwgbV91c2VySXNJbnRlcmFjdGluZyk7CisKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdGFydEFzc2lzdGluZ05vZGUoaW5m
b3JtYXRpb24sIG1fdXNlcklzSW50ZXJhY3RpbmcsIG1faGFzUGVuZGluZ0JsdXJOb3RpZmljYXRp
b24sIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hh
bmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOworI2VsaWYgUExBVEZPUk0oTUFDKQorICAg
ICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShXZWJDb3JlOjpIVE1MTmFtZXM6OnNlbGVjdFRhZykp
CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldEVkaXRhYmxlRWxl
bWVudElzRm9jdXNlZChmYWxzZSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCh0cnVlKSk7
CisjZW5kaWYKKyAgICAgICAgbV9oYXNQZW5kaW5nQmx1ck5vdGlmaWNhdGlvbiA9IGZhbHNlOwor
ICAgIH0KK30KKwordm9pZCBXZWJQYWdlOjplbGVtZW50RGlkQmx1cihXZWJDb3JlOjpOb2RlKiBu
b2RlKQoreworICAgIGlmIChtX2Fzc2lzdGVkTm9kZSA9PSBub2RlKSB7CisgICAgICAgIG1faGFz
UGVuZGluZ0JsdXJOb3RpZmljYXRpb24gPSB0cnVlOworICAgICAgICBSZWZQdHI8V2ViUGFnZT4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVk
VGhpc10geworICAgICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1faGFzUGVuZGluZ0JsdXJO
b3RpZmljYXRpb24pIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgICAgICAgICAgcHJvdGVj
dGVkVGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdG9wQXNzaXN0aW5nTm9kZSgp
KTsKKyNlbGlmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZChm
YWxzZSkpOworI2VuZGlmCisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5tX2hhc1BlbmRpbmdCbHVyTm90aWZpY2F0aW9uID0gZmFsc2U7CisgICAgICAgIH0pOworCisg
ICAgICAgIG1faXNBc3Npc3RpbmdOb2RlRHVlVG9Vc2VySW50ZXJhY3Rpb24gPSBmYWxzZTsKKyAg
ICAgICAgbV9hc3Npc3RlZE5vZGUgPSBudWxscHRyOworICAgIH0KK30KKwogdm9pZCBXZWJQYWdl
OjpzZW5kUG9zdExheW91dEVkaXRvclN0YXRlSWZOZWVkZWQoKQogewogICAgIGlmICghbV9pc0Vk
aXRvclN0YXRlTWlzc2luZ1Bvc3RMYXlvdXREYXRhKQpAQCAtNDkxNCw4ICs0OTc4LDggQEAgdm9p
ZCBXZWJQYWdlOjpkaWRDb21taXRMb2FkKFdlYkZyYW1lKiBmcgogI2lmIFBMQVRGT1JNKElPUykK
ICAgICBmcmFtZS0+c2V0Rmlyc3RMYXllclRyZWVUcmFuc2FjdGlvbklEQWZ0ZXJEaWRDb21taXRM
b2FkKGRvd25jYXN0PFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhPigqbV9kcmF3aW5nQXJlYSku
bmV4dFRyYW5zYWN0aW9uSUQoKSk7CiAgICAgY2FuY2VsUG90ZW50aWFsVGFwSW5GcmFtZSgqZnJh
bWUpOwotICAgIHJlc2V0QXNzaXN0ZWROb2RlRm9yRnJhbWUoZnJhbWUpOwogI2VuZGlmCisgICAg
cmVzZXRBc3Npc3RlZE5vZGVGb3JGcmFtZShmcmFtZSk7CiAKICAgICBpZiAoIWZyYW1lLT5pc01h
aW5GcmFtZSgpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDIwMzE3MikKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5Niw2
ICs0OTYsMTAgQEAgcHVibGljOgogICAgIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
ciYgdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkgeyByZXR1cm4gbV91c2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7IH0KICNlbmRpZgogCisgICAgdm9pZCBlbGVtZW50
RGlkRm9jdXMoV2ViQ29yZTo6Tm9kZSopOworICAgIHZvaWQgZWxlbWVudERpZEJsdXIoV2ViQ29y
ZTo6Tm9kZSopOworICAgIHZvaWQgcmVzZXRBc3Npc3RlZE5vZGVGb3JGcmFtZShXZWJGcmFtZSop
OworCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBzY3JlZW5TaXpl
KCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIGF2YWlsYWJsZVNjcmVlblNpemUoKSBj
b25zdDsKQEAgLTUzOCw4ICs1NDIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVTZWxlY3Rp
b25XaXRoRXh0ZW50UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29sIGlzSW50ZXJh
Y3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIHVw
ZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Np
c3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCi0gICAgdm9pZCBlbGVtZW50RGlkRm9j
dXMoV2ViQ29yZTo6Tm9kZSopOwotICAgIHZvaWQgZWxlbWVudERpZEJsdXIoV2ViQ29yZTo6Tm9k
ZSopOwogICAgIHZvaWQgcmVxdWVzdERpY3RhdGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJhY2tJ
RCk7CiAgICAgdm9pZCByZXBsYWNlRGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwg
Y29uc3QgU3RyaW5nJiBuZXdUZXh0KTsKICAgICB2b2lkIHJlcGxhY2VTZWxlY3RlZFRleHQoY29u
c3QgU3RyaW5nJiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpOwpAQCAtNTU3LDcgKzU1
OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFzc2lzdGVkTm9kZVZhbHVlKGNvbnN0IFN0cmlu
ZyYpOwogICAgIHZvaWQgc2V0QXNzaXN0ZWROb2RlVmFsdWVBc051bWJlcihkb3VibGUpOwogICAg
IHZvaWQgc2V0QXNzaXN0ZWROb2RlU2VsZWN0ZWRJbmRleCh1aW50MzJfdCBpbmRleCwgYm9vbCBh
bGxvd011bHRpcGxlU2VsZWN0aW9uKTsKLSAgICB2b2lkIHJlc2V0QXNzaXN0ZWROb2RlRm9yRnJh
bWUoV2ViRnJhbWUqKTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3RGb3JFbGVtZW50QXRJbnRl
cmFjdGlvbkxvY2F0aW9uKCk7CiAgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25BcHBlYXJhbmNlKCk7
CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Db250ZXh0KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpAQCAt
MTM4OCwxNCArMTM4OSwxNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hdXRvU2l6aW5nU2hvdWxk
RXhwYW5kVG9WaWV3SGVpZ2h0OwogCiAgICAgYm9vbCBtX3VzZXJJc0ludGVyYWN0aW5nOwotICAg
IGJvb2wgbV9oYXNGb2N1c2VkRHVlVG9Vc2VySW50ZXJhY3Rpb24geyBmYWxzZSB9OworICAgIGJv
b2wgbV9pc0Fzc2lzdGluZ05vZGVEdWVUb1VzZXJJbnRlcmFjdGlvbiB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX2hhc0V2ZXJGb2N1c2VkRWxlbWVudER1ZVRvVXNlckludGVyYWN0aW9uU2luY2VQYWdl
VHJhbnNpdGlvbiB7IGZhbHNlIH07CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBi
b29sIG1faXNTaG93aW5nQ29udGV4dE1lbnU7CiAjZW5kaWYKKworICAgIFJlZlB0cjxXZWJDb3Jl
OjpOb2RlPiBtX2Fzc2lzdGVkTm9kZTsKKyAgICBib29sIG1faGFzUGVuZGluZ0JsdXJOb3RpZmlj
YXRpb247CiAgICAgCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIFJlZlB0cjxXZWJDb3JlOjpOb2Rl
PiBtX2Fzc2lzdGVkTm9kZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IG1fY3VycmVudFdv
cmRSYW5nZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6Tm9kZT4gbV9pbnRlcmFjdGlvbk5vZGU7CiAg
ICAgV2ViQ29yZTo6SW50UG9pbnQgbV9sYXN0SW50ZXJhY3Rpb25Mb2NhdGlvbjsKQEAgLTE0MTQs
NyArMTQxOCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3NjYWxlV2FzU2V0QnlVSVByb2Nlc3M7
CiAgICAgYm9vbCBtX3VzZXJIYXNDaGFuZ2VkUGFnZVNjYWxlRmFjdG9yOwogICAgIGJvb2wgbV9o
YXNTdGFibGVQYWdlU2NhbGVGYWN0b3I7Ci0gICAgYm9vbCBtX2hhc1BlbmRpbmdCbHVyTm90aWZp
Y2F0aW9uOwogICAgIGJvb2wgbV91c2VUZXN0aW5nVmlld3BvcnRDb25maWd1cmF0aW9uOwogICAg
IGJvb2wgbV9pc0luU3RhYmxlU3RhdGU7CiAgICAgYm9vbCBtX2ZvcmNlQWx3YXlzVXNlclNjYWxh
YmxlOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbQkocmV2aXNpb24gMjAzMTcyKQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNjMy
LDUwICsyNjMyLDYgQEAgdm9pZCBXZWJQYWdlOjpnZXRBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbgog
ICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjpyZXNldEFzc2lzdGVkTm9kZUZvckZyYW1lKFdlYkZy
YW1lKiBmcmFtZSkKLXsKLSAgICBpZiAoIW1fYXNzaXN0ZWROb2RlKQotICAgICAgICByZXR1cm47
Ci0gICAgaWYgKG1fYXNzaXN0ZWROb2RlLT5kb2N1bWVudCgpLmZyYW1lKCkgPT0gZnJhbWUtPmNv
cmVGcmFtZSgpKSB7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RvcEFz
c2lzdGluZ05vZGUoKSk7Ci0gICAgICAgIG1fYXNzaXN0ZWROb2RlID0gbnVsbHB0cjsKLSAgICB9
Ci19Ci0KLXZvaWQgV2ViUGFnZTo6ZWxlbWVudERpZEZvY3VzKFdlYkNvcmU6Ok5vZGUqIG5vZGUp
Ci17Ci0gICAgaWYgKG1fYXNzaXN0ZWROb2RlID09IG5vZGUgJiYgbV9oYXNGb2N1c2VkRHVlVG9V
c2VySW50ZXJhY3Rpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChub2RlLT5oYXNUYWdO
YW1lKFdlYkNvcmU6OkhUTUxOYW1lczo6c2VsZWN0VGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKFdl
YkNvcmU6OkhUTUxOYW1lczo6aW5wdXRUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUoV2ViQ29yZTo6
SFRNTE5hbWVzOjp0ZXh0YXJlYVRhZykgfHwgbm9kZS0+aGFzRWRpdGFibGVTdHlsZSgpKSB7Ci0g
ICAgICAgIG1fYXNzaXN0ZWROb2RlID0gbm9kZTsKLSAgICAgICAgbV9oYXNGb2N1c2VkRHVlVG9V
c2VySW50ZXJhY3Rpb24gfD0gbV91c2VySXNJbnRlcmFjdGluZzsKLSAgICAgICAgQXNzaXN0ZWRO
b2RlSW5mb3JtYXRpb24gaW5mb3JtYXRpb247Ci0gICAgICAgIGdldEFzc2lzdGVkTm9kZUluZm9y
bWF0aW9uKGluZm9ybWF0aW9uKTsKLSAgICAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0
YTsKLQotICAgICAgICBtX2Zvcm1DbGllbnQtPndpbGxCZWdpbklucHV0U2Vzc2lvbih0aGlzLCBk
b3duY2FzdDxFbGVtZW50Pihub2RlKSwgV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKm5vZGUtPmRv
Y3VtZW50KCkuZnJhbWUoKSksIHVzZXJEYXRhLCBtX3VzZXJJc0ludGVyYWN0aW5nKTsKLQotICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0YXJ0QXNzaXN0aW5nTm9kZShpbmZv
cm1hdGlvbiwgbV91c2VySXNJbnRlcmFjdGluZywgbV9oYXNQZW5kaW5nQmx1ck5vdGlmaWNhdGlv
biwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFu
ZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7Ci0gICAgICAgIG1faGFzUGVuZGluZ0JsdXJO
b3RpZmljYXRpb24gPSBmYWxzZTsKLSAgICB9Ci19Ci0KLXZvaWQgV2ViUGFnZTo6ZWxlbWVudERp
ZEJsdXIoV2ViQ29yZTo6Tm9kZSogbm9kZSkKLXsKLSAgICBpZiAobV9hc3Npc3RlZE5vZGUgPT0g
bm9kZSkgewotICAgICAgICBtX2hhc1BlbmRpbmdCbHVyTm90aWZpY2F0aW9uID0gdHJ1ZTsKLSAg
ICAgICAgUmVmUHRyPFdlYlBhZ2U+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzXSB7Ci0g
ICAgICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9oYXNQZW5kaW5nQmx1ck5vdGlmaWNhdGlv
bikKLSAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlN0b3BBc3Npc3RpbmdOb2RlKCkpOwotICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+
bV9oYXNQZW5kaW5nQmx1ck5vdGlmaWNhdGlvbiA9IGZhbHNlOwotICAgICAgICB9KTsKLSAgICAg
ICAgbV9oYXNGb2N1c2VkRHVlVG9Vc2VySW50ZXJhY3Rpb24gPSBmYWxzZTsKLSAgICAgICAgbV9h
c3Npc3RlZE5vZGUgPSBudWxscHRyOwotICAgIH0KLX0KLQogdm9pZCBXZWJQYWdlOjpzZXRWaWV3
cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUp
CiB7CiAgICAgaWYgKG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnNldE1pbmltdW1MYXlvdXRTaXpl
KHNpemUpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283812</attachid>
            <date>2016-07-15 16:33:49 -0700</date>
            <delta_ts>2016-07-15 16:41:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-2.txt</filename>
            <type>text/plain</type>
            <size>22131</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzMwNikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBACisyMDE2LTA3LTE1ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBNYWMgVUkgcHJvY2VzcyBuZWVkcyB0
byBrbm93IGFib3V0IGVsZW1lbnQgZm9jdXMgYW5kIGJsdXIsIG11Y2ggbGlrZSBpT1MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTg0MworICAgICAg
ICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzI3MjI5NTA0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBtYWtlcyB0aGUgZXhpc3RpbmcgaU9TIG1hY2hpbmVyeSB0byBoYW5kbGUgZm9jdXMgYW5kIGJs
dXJyaW5nIG9mIAorICAgICAgICBlbGVtZW50cyBjcm9zcy1wbGF0Zm9ybS4gSW5zdGVhZCBvZiB1
c2luZyB0aGUgZXhpc3RpbmcgaU9TIG1lc3NhZ2VzIGZvciAKKyAgICAgICAgc3RhcnRBc3Npc3Rp
bmdOb2RlL3N0b3BBc3Npc3RpbmdOb2RlLCB0aGlzIHBhdGNoIGFkZHMgYSBuZXcgbWVzc2FnZSB0
aGF0IAorICAgICAgICByZXF1aXJlIG9ubHkgYSBib29sZWFuIHBhcmFtZXRlcjogc2V0RWRpdGFi
bGVFbGVtZW50SXNGb2N1c2VkLgorCisgICAgICAgIE5vdyB0aGF0IG1vcmUgb2YgdGhpcyBjb2Rl
IGlzIHNoYXJlZCwgdGhpcyBwYXRjaCB0ZWFzZXMgCisgICAgICAgIG1faGFzRm9jdXNlZER1ZVRv
VXNlckludGVyYWN0aW9uIG91dCBpbnRvIHR3byB2YXJpYWJsZXMuIEkgcmVhbGl6ZWQgdGhhdCBp
dCAKKyAgICAgICAgd2FzIGJlaW5nIHVzZWQgdG8gbWVhbiB0d28gc2xpZ2h0bHkgZGlmZmVyZW50
IHRoaW5ncyBvbiBNYWMgYW5kIGlPUywgd2hpY2ggCisgICAgICAgIHdhcyB2ZXJ5IGNvbmZ1c2lu
Zy4gTm93IHdlIGhhdmUgbV9pc0Fzc2lzdGluZ05vZGVEdWVUb1VzZXJJbnRlcmFjdGlvbiB0byAK
KyAgICAgICAgcmVwcmVzZW50IHRoZSB3YXkgaU9TIHdhcyB1c2luZyB0aGUgdmFyaWFibGUsIGFu
ZCB3ZSBoYXZlIAorICAgICAgICBtX2hhc0V2ZXJGb2N1c2VkRWxlbWVudER1ZVRvVXNlckludGVy
YWN0aW9uU2luY2VQYWdlVHJhbnNpdGlvbiB0byByZXByZXNlbnQgCisgICAgICAgIGhvdyBNYWMg
d2FzIHVzaW5nIHRoZSB2YXJpYWJsZS4gVGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkgYmVoYXZpb3Ig
Y2hhbmdlcyB3aXRoIAorICAgICAgICB0aGlzIHJlLW5hbWUsIGp1c3QgYWRkZWQgY2xhcml0eS4K
KworICAgICAgICBXZWJWaWV3SW1wbCBoYXMgYSBuZXcgbWVtYmVyIHZhcmlhYmxlIG1fZWRpdGFi
bGVFbGVtZW50SXNGb2N1c2VkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OnNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCk6CisKKyAg
ICAgICAgUGlwZSB0aGUgbmV3IHNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCBtZXNzYWdlIHRv
IFdlYlZpZXdJbXBsLgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6c2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OnNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCk6CisKKyAgICAgICAgZWxl
bWVudERpZEZvY3VzKCkgYW5kIGVsZW1lbnREaWRCbHVyKCkgYXJlIG5vdyBQTEFURk9STShDT0NP
QSkgaW5zdGVhZCBvZiAKKyAgICAgICAgUExBVEZPUk0oSU9TKQorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQ2hyb21lQ2xpZW50OjplbGVtZW50RGlkRm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
aHJvbWVDbGllbnQ6OmVsZW1lbnREaWRCbHVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYkNocm9tZUNsaWVudElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q2hyb21lQ2xpZW50OjplbGVtZW50RGlkRm9jdXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJDaHJvbWVDbGllbnQ6OmVsZW1lbnREaWRCbHVyKTogRGVsZXRlZC4KKworICAgICAgICBt
X2hhc1BlbmRpbmdCbHVyTm90aWZpY2F0aW9uIGlzIG5vIGxvbmdlciBpT1Mtb25seS4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisKKyAgICAgICAgVXNlIG91ciB0
d28gbmV3IGJvb2xzIG1faXNBc3Npc3RpbmdOb2RlRHVlVG9Vc2VySW50ZXJhY3Rpb24gYW5kIAor
ICAgICAgICBtX2hhc0V2ZXJGb2N1c2VkRWxlbWVudER1ZVRvVXNlckludGVyYWN0aW9uU2luY2VQ
YWdlVHJhbnNpdGlvbiAKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkU3RhcnRQYWdlVHJh
bnNpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZENoYW5nZVNlbGVjdGlvbik6
CisKKyAgICAgICAgVGhlc2UgZnVuY3Rpb25zIGFyZSBhbGwgbmV3bHkgY3Jvc3MtcGxhdGZvcm0u
IFRoZSBNZXNzYWdlcyB0aGV5IHNlbmQgYXJlIAorICAgICAgICBzdGlsbCBwbGF0Zm9ybS1zcGVj
aWZpYywgYnV0IG90aGVyd2lzZSB0aGUgbG9naWMgaXMgdGhlIHNhbWUuIFdlIAorICAgICAgICBk
aXNwYXRjaF9hc3luYyB0aGUgYmx1ciBtZXNzYWdlcyBzbyB0aGF0IHRoZSBVSSBwcm9jZXNzIGZl
YXR1cmVzIHdvbuKAmXQgYmUgCisgICAgICAgIGZsYXNoeSB3aGVuIHRoZSB1c2VyIGlzIHRhcHBp
bmcsIHRhYmJpbmcsIG9yIGNsaWNraW5nIHRocm91Z2ggZm9ybSBmaWVsZHMuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnJlc2V0QXNzaXN0ZWROb2RlRm9yRnJhbWUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjplbGVtZW50RGlkRm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjplbGVtZW50RGlkQmx1cik6CisKKyAgICAgICAgcmVzZXRBc3Npc3RlZE5vZGVGb3JGcmFtZSgp
IGlzIG5vIGxvbmdlciBpT1Mtb25seS4gCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZENv
bW1pdExvYWQpOgorCisgICAgICAgIE1vdmUgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgYXJvdW5k
IHNvIHRoYXQgdGhleSBhcmUgZGVmaW5lZCBmb3IgdGhlIHJpZ2h0IAorICAgICAgICBwbGF0Zm9y
bSwgYW5kIGRlY2xhcmUgdGhlIHR3byBuZXcgYm9vbHMgaW4gcGxhY2Ugb2YgdGhlIG9sZCBvbmUu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKworICAgICAgICBUaGVz
ZSBmdW5jdGlvbnMgYXJlIG5vdyBkZWZpbmVkIGluIFdlYlBhZ2UuY3BwCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpyZXNldEFzc2lzdGVkTm9kZUZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6ZWxlbWVudERpZEZvY3VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZWxlbWVudERpZEJsdXIpOiBEZWxldGVkLgorCiAyMDE2LTA3LTE1ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkZWQgYSBtYWtlUmVmPFQ+
IGhlbHBlcgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCShyZXZpc2lv
biAyMDMxNzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzUsNiArMjc1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3Rlckluc2VydGlvblVuZG9Hcm91cGluZygpID0gMDsKICNlbmRpZiAvLyBVU0UoSU5TRVJU
SU9OX1VORE9fR1JPVVBJTkcpCiAjZW5kaWYgLy8gVVNFKEFQUEtJVCkKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGJvb2wpID0gMDsKICNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpCiAKICNpZiBQTEFURk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjAzMTcyKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5NTUsNiAr
NTk1NSwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzCiB9CiAj
ZW5kaWYKIAordm9pZCBXZWJQYWdlUHJveHk6OnNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZChi
b29sIGVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCkKK3sKKyAgICBtX3BhZ2VDbGllbnQuc2V0RWRp
dGFibGVFbGVtZW50SXNGb2N1c2VkKGVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCk7Cit9CisKICNl
bmRpZiAvLyBQTEFURk9STShNQUMpCiAKICNpZiBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDIwMzE3MikKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
MTQxOSw2ICsxNDE5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVy
bmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KTsKICAgICB2b2lkIGRpY3RhdGlvbkFs
dGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0LCBWZWN0b3I8U3RyaW5nPiYgcmVz
dWx0KTsKICNlbmRpZgorCisgICAgdm9pZCBzZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoYm9v
bCk7CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiAjaWYgUExBVEZPUk0oSU9TKQpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CShyZXZpc2lvbiAyMDMxNzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNDIsNiArMzQyLDggQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaXNtaXNzQ29ycmVjdGlvblBhbmVsKGludDMyX3Qg
cmVhc29uKQogICAgIERpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKGludDMyX3QgcmVhc29uKSAt
PiAoU3RyaW5nIHJlc3VsdCkKICAgICBSZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGludDMy
X3QgcmVzcG9uc2VUeXBlLCBTdHJpbmcgcmVwbGFjZWRTdHJpbmcsIFN0cmluZyByZXBsYWNlbWVu
dFN0cmluZyk7CisKKyAgICBTZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoYm9vbCBlZGl0YWJs
ZUVsZW1lbnRJc0ZvY3VzZWQpCiAjZW5kaWYKIAogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJ
VkVTKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
LmgJKHJldmlzaW9uIDIwMzE3MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzIsNiArMjcyLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgdXBkYXRlRm9udFBhbmVsSWZOZWVkZWQoKTsKICAgICB2b2lkIGNoYW5nZUZvbnRG
cm9tRm9udFBhbmVsKCk7CiAgICAgYm9vbCB2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtKGlkIDxO
U1ZhbGlkYXRlZFVzZXJJbnRlcmZhY2VJdGVtPik7CisgICAgdm9pZCBzZXRFZGl0YWJsZUVsZW1l
bnRJc0ZvY3VzZWQoYm9vbCk7CiAKICAgICB2b2lkIHN0YXJ0U3BlYWtpbmcoKTsKICAgICB2b2lk
IHN0b3BTcGVha2luZyhpZCk7CkBAIC02NDYsNiArNjQ3LDcgQEAgcHJpdmF0ZToKICAgICBOU1Jh
bmdlIG1fc29mdFNwYWNlUmFuZ2UgeyBOU05vdEZvdW5kLCAwIH07CiAgICAgYm9vbCBtX2lzSGFu
ZGxpbmdBY2NlcHRlZENhbmRpZGF0ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3JlcXVpcmVzVXNl
ckFjdGlvbkZvckVkaXRpbmdDb250cm9sc01hbmFnZXIgeyBmYWxzZSB9OworICAgIGJvb2wgbV9l
ZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQgeyBmYWxzZSB9OwogfTsKICAgICAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQkocmV2aXNpb24gMjAzMTcyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NTMsNiArNDUzLDExIEBA
IHZvaWQgV2ViVmlld0ltcGw6OndlYlZpZXdJbXBsQWRkaXRpb25zV2kKIHsKIH0KIAordm9pZCBX
ZWJWaWV3SW1wbDo6c2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGJvb2wgZWRpdGFibGVFbGVt
ZW50SXNGb2N1c2VkKQoreworICAgIG1fZWRpdGFibGVFbGVtZW50SXNGb2N1c2VkID0gZWRpdGFi
bGVFbGVtZW50SXNGb2N1c2VkOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKICNlbmRpZiAv
LyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCAmJiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAyMDMxNzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEs
OSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBk
aWN0YXRpb25Db250ZXh0KSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25B
bHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgb3ZlcnJpZGU7CiAjZW5kaWYK
KyNpZiBQTEFURk9STShNQUMpCisgICAgdm9pZCBzZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQo
Ym9vbCkgb3ZlcnJpZGU7CisjZW5kaWYKICNpZiBVU0UoSU5TRVJUSU9OX1VORE9fR1JPVVBJTkcp
CiAgICAgdm9pZCByZWdpc3Rlckluc2VydGlvblVuZG9Hcm91cGluZygpIG92ZXJyaWRlOwogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGwubW0JKHJldmlzaW9uIDIwMzE3MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTYyMSw2ICs2MjEsMTMgQEAgVmVj
dG9yPFN0cmluZz4gUGFnZUNsaWVudEltcGw6OmRpY3RhdGlvbgogfQogI2VuZGlmCiAKKyNpZiBQ
TEFURk9STShNQUMpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRFZGl0YWJsZUVsZW1lbnRJc0Zv
Y3VzZWQoYm9vbCBlZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQpCit7CisgICAgbV9pbXBsLT5zZXRF
ZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoZWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKTsKK30KKyNl
bmRpZgorCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogCiBXZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5Q2xpZW50JiBQYWdlQ2xpZW50SW1wbDo6ZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVu
dCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiAyMDMxNzIpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw2ICsxNjksMTYgQEAgdm9pZCBXZWJDaHJvbWVDbGll
bnQ6OnVuZm9jdXMoKQogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFdlYkNocm9tZUNs
aWVudDo6ZWxlbWVudERpZEZvY3VzKGNvbnN0IFdlYkNvcmU6Ok5vZGUqIG5vZGUpCit7CisgICAg
bV9wYWdlLT5lbGVtZW50RGlkRm9jdXMoY29uc3RfY2FzdDxXZWJDb3JlOjpOb2RlKj4obm9kZSkp
OworfQorCit2b2lkIFdlYkNocm9tZUNsaWVudDo6ZWxlbWVudERpZEJsdXIoY29uc3QgV2ViQ29y
ZTo6Tm9kZSogbm9kZSkKK3sKKyAgICBtX3BhZ2UtPmVsZW1lbnREaWRCbHVyKGNvbnN0X2Nhc3Q8
V2ViQ29yZTo6Tm9kZSo+KG5vZGUpKTsKK30KKwogdm9pZCBXZWJDaHJvbWVDbGllbnQ6Om1ha2VG
aXJzdFJlc3BvbmRlcigpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6Ok1ha2VGaXJzdFJlc3BvbmRlcigpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkocmV2
aXNpb24gMjAzMTcyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjM2LDggKzIzNiw2IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2b2lkIGVsZW1lbnREaWRG
b2N1cyhjb25zdCBXZWJDb3JlOjpOb2RlKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbGVtZW50RGlk
Qmx1cihjb25zdCBXZWJDb3JlOjpOb2RlKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBlbGVtZW50RGlk
UmVmb2N1cyhjb25zdCBXZWJDb3JlOjpOb2RlKikgb3ZlcnJpZGU7CiAjZW5kaWYKIApAQCAtMjU5
LDYgKzI1Nyw5IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IHZvaWQgZWxlbWVudERpZEZvY3VzKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGVsZW1lbnREaWRCbHVyKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKSBvdmVycmlkZTsKKwog
ICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIApJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViQ2hyb21lQ2xp
ZW50SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYkNocm9tZUNsaWVudElPUy5tbQkocmV2aXNpb24gMjAzMTcyKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViQ2hyb21lQ2xp
ZW50SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxNiArNDQsNiBAQCB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6ZGlkUHJldmVudERlZmF1bHRGCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJDaHJvbWVD
bGllbnQ6OmVsZW1lbnREaWRGb2N1cyhjb25zdCBXZWJDb3JlOjpOb2RlKiBub2RlKQotewotICAg
IG1fcGFnZS0+ZWxlbWVudERpZEZvY3VzKGNvbnN0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KG5vZGUp
KTsKLX0KLQotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmVsZW1lbnREaWRCbHVyKGNvbnN0IFdlYkNv
cmU6Ok5vZGUqIG5vZGUpCi17Ci0gICAgbV9wYWdlLT5lbGVtZW50RGlkQmx1cihjb25zdF9jYXN0
PFdlYkNvcmU6Ok5vZGUqPihub2RlKSk7Ci19Ci0KIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjplbGVt
ZW50RGlkUmVmb2N1cyhjb25zdCBXZWJDb3JlOjpOb2RlKiBub2RlKQogewogICAgIGVsZW1lbnRE
aWRGb2N1cyhub2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDIwMzE3MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ4LDEzICszNDgs
MTMgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IAogI2lmIEVOQUJM
RShDT05URVhUX01FTlVTKQogICAgICwgbV9pc1Nob3dpbmdDb250ZXh0TWVudShmYWxzZSkKICNl
bmRpZgorICAgICwgbV9oYXNQZW5kaW5nQmx1ck5vdGlmaWNhdGlvbihmYWxzZSkKICNpZiBQTEFU
Rk9STShJT1MpCiAgICAgLCBtX3NlbGVjdGlvbkFuY2hvcihTdGFydCkKICAgICAsIG1faGFzUmVj
ZWl2ZWRWaXNpYmxlQ29udGVudFJlY3RzQWZ0ZXJEaWRDb21taXRMb2FkKGZhbHNlKQogICAgICwg
bV9zY2FsZVdhc1NldEJ5VUlQcm9jZXNzKGZhbHNlKQogICAgICwgbV91c2VySGFzQ2hhbmdlZFBh
Z2VTY2FsZUZhY3RvcihmYWxzZSkKICAgICAsIG1faGFzU3RhYmxlUGFnZVNjYWxlRmFjdG9yKHRy
dWUpCi0gICAgLCBtX2hhc1BlbmRpbmdCbHVyTm90aWZpY2F0aW9uKGZhbHNlKQogICAgICwgbV91
c2VUZXN0aW5nVmlld3BvcnRDb25maWd1cmF0aW9uKGZhbHNlKQogICAgICwgbV9pc0luU3RhYmxl
U3RhdGUodHJ1ZSkKICAgICAsIG1fZm9yY2VBbHdheXNVc2VyU2NhbGFibGUocGFyYW1ldGVycy5p
Z25vcmVzVmlld3BvcnRTY2FsZUxpbWl0cykKQEAgLTI2MDgsMTIgKzI2MDgsMTMgQEAgdm9pZCBX
ZWJQYWdlOjpkaWRTdGFydFBhZ2VUcmFuc2l0aW9uKCkKICAgICBtX2RyYXdpbmdBcmVhLT5zZXRM
YXllclRyZWVTdGF0ZUlzRnJvemVuKHRydWUpOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGJv
b2wgaGFzUHJldmlvdXNseUZvY3VzZWREdWVUb1VzZXJJbnRlcmFjdGlvbiA9IG1faGFzRm9jdXNl
ZER1ZVRvVXNlckludGVyYWN0aW9uOworICAgIGJvb2wgaGFzUHJldmlvdXNseUZvY3VzZWREdWVU
b1VzZXJJbnRlcmFjdGlvbiA9IG1faGFzRXZlckZvY3VzZWRFbGVtZW50RHVlVG9Vc2VySW50ZXJh
Y3Rpb25TaW5jZVBhZ2VUcmFuc2l0aW9uOwogI2VuZGlmCi0gICAgbV9oYXNGb2N1c2VkRHVlVG9V
c2VySW50ZXJhY3Rpb24gPSBmYWxzZTsKKyAgICBtX2hhc0V2ZXJGb2N1c2VkRWxlbWVudER1ZVRv
VXNlckludGVyYWN0aW9uU2luY2VQYWdlVHJhbnNpdGlvbiA9IGZhbHNlOworICAgIG1faXNBc3Np
c3RpbmdOb2RlRHVlVG9Vc2VySW50ZXJhY3Rpb24gPSBmYWxzZTsKICNpZiBQTEFURk9STShNQUMp
CiAgICAgaWYgKGhhc1ByZXZpb3VzbHlGb2N1c2VkRHVlVG9Vc2VySW50ZXJhY3Rpb24pCi0gICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0SGFzSGFkU2VsZWN0aW9uQ2hhbmdl
c0Zyb21Vc2VySW50ZXJhY3Rpb24obV9oYXNGb2N1c2VkRHVlVG9Vc2VySW50ZXJhY3Rpb24pKTsK
KyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRIYXNIYWRTZWxlY3Rpb25D
aGFuZ2VzRnJvbVVzZXJJbnRlcmFjdGlvbihtX2hhc0V2ZXJGb2N1c2VkRWxlbWVudER1ZVRvVXNl
ckludGVyYWN0aW9uU2luY2VQYWdlVHJhbnNpdGlvbikpOwogI2VuZGlmCiB9CiAKQEAgLTQ3NTMs
MTAgKzQ3NTQsMTEgQEAgdm9pZCBXZWJQYWdlOjpkaWRDaGFuZ2VTZWxlY3Rpb24oKQogICAgIG1f
aXNFZGl0b3JTdGF0ZU1pc3NpbmdQb3N0TGF5b3V0RGF0YSA9IGVkaXRvclN0YXRlLmlzTWlzc2lu
Z1Bvc3RMYXlvdXREYXRhOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGJvb2wgaGFzUHJldmlv
dXNseUZvY3VzZWREdWVUb1VzZXJJbnRlcmFjdGlvbiA9IG1faGFzRm9jdXNlZER1ZVRvVXNlcklu
dGVyYWN0aW9uOwotICAgIG1faGFzRm9jdXNlZER1ZVRvVXNlckludGVyYWN0aW9uIHw9IG1fdXNl
cklzSW50ZXJhY3Rpbmc7Ci0gICAgaWYgKCFoYXNQcmV2aW91c2x5Rm9jdXNlZER1ZVRvVXNlcklu
dGVyYWN0aW9uICYmIG1faGFzRm9jdXNlZER1ZVRvVXNlckludGVyYWN0aW9uKQotICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldEhhc0hhZFNlbGVjdGlvbkNoYW5nZXNGcm9t
VXNlckludGVyYWN0aW9uKG1faGFzRm9jdXNlZER1ZVRvVXNlckludGVyYWN0aW9uKSk7CisgICAg
Ym9vbCBoYXNQcmV2aW91c2x5Rm9jdXNlZER1ZVRvVXNlckludGVyYWN0aW9uID0gbV9oYXNFdmVy
Rm9jdXNlZEVsZW1lbnREdWVUb1VzZXJJbnRlcmFjdGlvblNpbmNlUGFnZVRyYW5zaXRpb247Cisg
ICAgbV9oYXNFdmVyRm9jdXNlZEVsZW1lbnREdWVUb1VzZXJJbnRlcmFjdGlvblNpbmNlUGFnZVRy
YW5zaXRpb24gfD0gbV91c2VySXNJbnRlcmFjdGluZzsKKworICAgIGlmICghaGFzUHJldmlvdXNs
eUZvY3VzZWREdWVUb1VzZXJJbnRlcmFjdGlvbiAmJiBtX2hhc0V2ZXJGb2N1c2VkRWxlbWVudER1
ZVRvVXNlckludGVyYWN0aW9uU2luY2VQYWdlVHJhbnNpdGlvbikKKyAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpTZXRIYXNIYWRTZWxlY3Rpb25DaGFuZ2VzRnJvbVVzZXJJbnRl
cmFjdGlvbihtX2hhc0V2ZXJGb2N1c2VkRWxlbWVudER1ZVRvVXNlckludGVyYWN0aW9uU2luY2VQ
YWdlVHJhbnNpdGlvbikpOwogCiAgICAgLy8gQWJhbmRvbiB0aGUgY3VycmVudCBpbmxpbmUgaW5w
dXQgc2Vzc2lvbiBpZiBzZWxlY3Rpb24gY2hhbmdlZCBmb3IgYW55IG90aGVyIHJlYXNvbiBidXQg
YW4gaW5wdXQgbWV0aG9kIGRpcmVjdCBhY3Rpb24uCiAgICAgLy8gRklYTUU6IFRoaXMgbG9naWMg
c2hvdWxkIGJlIGluIFdlYkNvcmUuCkBAIC00Nzc2LDYgKzQ3NzgsNjggQEAgdm9pZCBXZWJQYWdl
OjpkaWRDaGFuZ2VTZWxlY3Rpb24oKQogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViUGFnZTo6cmVzZXRB
c3Npc3RlZE5vZGVGb3JGcmFtZShXZWJGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKCFtX2Fzc2lz
dGVkTm9kZSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX2Fzc2lzdGVkTm9kZS0+ZG9jdW1l
bnQoKS5mcmFtZSgpID09IGZyYW1lLT5jb3JlRnJhbWUoKSkgeworI2lmIFBMQVRGT1JNKElPUykK
KyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdG9wQXNzaXN0aW5nTm9kZSgp
KTsKKyNlbGlmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpTZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoZmFsc2UpKTsKKyNlbmRpZgorICAgICAg
ICBtX2Fzc2lzdGVkTm9kZSA9IG51bGxwdHI7CisgICAgfQorfQorCit2b2lkIFdlYlBhZ2U6OmVs
ZW1lbnREaWRGb2N1cyhXZWJDb3JlOjpOb2RlKiBub2RlKQoreworICAgIGlmIChtX2Fzc2lzdGVk
Tm9kZSA9PSBub2RlICYmIG1faXNBc3Npc3RpbmdOb2RlRHVlVG9Vc2VySW50ZXJhY3Rpb24pCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKFdlYkNvcmU6OkhUTUxO
YW1lczo6c2VsZWN0VGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKFdlYkNvcmU6OkhUTUxOYW1lczo6
aW5wdXRUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUoV2ViQ29yZTo6SFRNTE5hbWVzOjp0ZXh0YXJl
YVRhZykgfHwgbm9kZS0+aGFzRWRpdGFibGVTdHlsZSgpKSB7CisgICAgICAgIG1fYXNzaXN0ZWRO
b2RlID0gbm9kZTsKKyAgICAgICAgbV9pc0Fzc2lzdGluZ05vZGVEdWVUb1VzZXJJbnRlcmFjdGlv
biB8PSBtX3VzZXJJc0ludGVyYWN0aW5nOworCisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICBB
c3Npc3RlZE5vZGVJbmZvcm1hdGlvbiBpbmZvcm1hdGlvbjsKKyAgICAgICAgZ2V0QXNzaXN0ZWRO
b2RlSW5mb3JtYXRpb24oaW5mb3JtYXRpb24pOworICAgICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+
IHVzZXJEYXRhOworCisgICAgICAgIG1fZm9ybUNsaWVudC0+d2lsbEJlZ2luSW5wdXRTZXNzaW9u
KHRoaXMsIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpLCBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgq
bm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKSwgdXNlckRhdGEsIG1fdXNlcklzSW50ZXJhY3Rpbmcp
OworCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RhcnRBc3Npc3RpbmdO
b2RlKGluZm9ybWF0aW9uLCBtX3VzZXJJc0ludGVyYWN0aW5nLCBtX2hhc1BlbmRpbmdCbHVyTm90
aWZpY2F0aW9uLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmpl
Y3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKKyNlbGlmIFBMQVRGT1JNKE1B
QykKKyAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoV2ViQ29yZTo6SFRNTE5hbWVzOjpzZWxl
Y3RUYWcpKQorICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRFZGl0
YWJsZUVsZW1lbnRJc0ZvY3VzZWQoZmFsc2UpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQo
dHJ1ZSkpOworI2VuZGlmCisgICAgICAgIG1faGFzUGVuZGluZ0JsdXJOb3RpZmljYXRpb24gPSBm
YWxzZTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViUGFnZTo6ZWxlbWVudERpZEJsdXIoV2ViQ29yZTo6
Tm9kZSogbm9kZSkKK3sKKyAgICBpZiAobV9hc3Npc3RlZE5vZGUgPT0gbm9kZSkgeworICAgICAg
ICBtX2hhc1BlbmRpbmdCbHVyTm90aWZpY2F0aW9uID0gdHJ1ZTsKKyAgICAgICAgUmVmUHRyPFdl
YlBhZ2U+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3By
b3RlY3RlZFRoaXNdIHsKKyAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX2hhc1BlbmRp
bmdCbHVyTm90aWZpY2F0aW9uKSB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICAgICAgICAg
IHByb3RlY3RlZFRoaXMtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RvcEFzc2lzdGlu
Z05vZGUoKSk7CisjZWxpZiBQTEFURk9STShNQUMpCisgICAgICAgICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRFZGl0YWJsZUVsZW1lbnRJc0Zv
Y3VzZWQoZmFsc2UpKTsKKyNlbmRpZgorICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJvdGVj
dGVkVGhpcy0+bV9oYXNQZW5kaW5nQmx1ck5vdGlmaWNhdGlvbiA9IGZhbHNlOworICAgICAgICB9
KTsKKworICAgICAgICBtX2lzQXNzaXN0aW5nTm9kZUR1ZVRvVXNlckludGVyYWN0aW9uID0gZmFs
c2U7CisgICAgICAgIG1fYXNzaXN0ZWROb2RlID0gbnVsbHB0cjsKKyAgICB9Cit9CisKIHZvaWQg
V2ViUGFnZTo6c2VuZFBvc3RMYXlvdXRFZGl0b3JTdGF0ZUlmTmVlZGVkKCkKIHsKICAgICBpZiAo
IW1faXNFZGl0b3JTdGF0ZU1pc3NpbmdQb3N0TGF5b3V0RGF0YSkKQEAgLTQ5MTQsOCArNDk3OCw4
IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ29tbWl0TG9hZChXZWJGcmFtZSogZnIKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgZnJhbWUtPnNldEZpcnN0TGF5ZXJUcmVlVHJhbnNhY3Rpb25JREFmdGVyRGlk
Q29tbWl0TG9hZChkb3duY2FzdDxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYT4oKm1fZHJhd2lu
Z0FyZWEpLm5leHRUcmFuc2FjdGlvbklEKCkpOwogICAgIGNhbmNlbFBvdGVudGlhbFRhcEluRnJh
bWUoKmZyYW1lKTsKLSAgICByZXNldEFzc2lzdGVkTm9kZUZvckZyYW1lKGZyYW1lKTsKICNlbmRp
ZgorICAgIHJlc2V0QXNzaXN0ZWROb2RlRm9yRnJhbWUoZnJhbWUpOwogCiAgICAgaWYgKCFmcmFt
ZS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyMDMxNzIpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OTYsNiArNDk2LDEwIEBAIHB1YmxpYzoKICAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXImIHVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpIHsgcmV0dXJuIG1f
dXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOyB9CiAjZW5kaWYKIAorICAgIHZvaWQg
ZWxlbWVudERpZEZvY3VzKFdlYkNvcmU6Ok5vZGUqKTsKKyAgICB2b2lkIGVsZW1lbnREaWRCbHVy
KFdlYkNvcmU6Ok5vZGUqKTsKKyAgICB2b2lkIHJlc2V0QXNzaXN0ZWROb2RlRm9yRnJhbWUoV2Vi
RnJhbWUqKTsKKwogI2lmIFBMQVRGT1JNKElPUykKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2Ny
ZWVuU2l6ZSgpIGNvbnN0OwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBhdmFpbGFibGVTY3JlZW5T
aXplKCkgY29uc3Q7CkBAIC01MzgsOCArNTQyLDYgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRl
U2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgYm9vbCBp
c0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAg
dm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdX
aXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKIAotICAgIHZvaWQgZWxlbWVu
dERpZEZvY3VzKFdlYkNvcmU6Ok5vZGUqKTsKLSAgICB2b2lkIGVsZW1lbnREaWRCbHVyKFdlYkNv
cmU6Ok5vZGUqKTsKICAgICB2b2lkIHJlcXVlc3REaWN0YXRpb25Db250ZXh0KHVpbnQ2NF90IGNh
bGxiYWNrSUQpOwogICAgIHZvaWQgcmVwbGFjZURpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIG9s
ZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCk7CiAgICAgdm9pZCByZXBsYWNlU2VsZWN0ZWRU
ZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KTsKQEAgLTU1
Nyw3ICs1NTksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBc3Npc3RlZE5vZGVWYWx1ZShjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEFzc2lzdGVkTm9kZVZhbHVlQXNOdW1iZXIoZG91Ymxl
KTsKICAgICB2b2lkIHNldEFzc2lzdGVkTm9kZVNlbGVjdGVkSW5kZXgodWludDMyX3QgaW5kZXgs
IGJvb2wgYWxsb3dNdWx0aXBsZVNlbGVjdGlvbik7Ci0gICAgdm9pZCByZXNldEFzc2lzdGVkTm9k
ZUZvckZyYW1lKFdlYkZyYW1lKik7CiAgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0Rm9yRWxlbWVu
dEF0SW50ZXJhY3Rpb25Mb2NhdGlvbigpOwogICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uQXBwZWFy
YW5jZSgpOwogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQ29udGV4dCh1aW50NjRfdCBjYWxsYmFja0lE
KTsKQEAgLTEzODgsMTQgKzEzODksMTcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fYXV0b1Npemlu
Z1Nob3VsZEV4cGFuZFRvVmlld0hlaWdodDsKIAogICAgIGJvb2wgbV91c2VySXNJbnRlcmFjdGlu
ZzsKLSAgICBib29sIG1faGFzRm9jdXNlZER1ZVRvVXNlckludGVyYWN0aW9uIHsgZmFsc2UgfTsK
KyAgICBib29sIG1faXNBc3Npc3RpbmdOb2RlRHVlVG9Vc2VySW50ZXJhY3Rpb24geyBmYWxzZSB9
OworICAgIGJvb2wgbV9oYXNFdmVyRm9jdXNlZEVsZW1lbnREdWVUb1VzZXJJbnRlcmFjdGlvblNp
bmNlUGFnZVRyYW5zaXRpb24geyBmYWxzZSB9OwogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
CiAgICAgYm9vbCBtX2lzU2hvd2luZ0NvbnRleHRNZW51OwogI2VuZGlmCisKKyAgICBSZWZQdHI8
V2ViQ29yZTo6Tm9kZT4gbV9hc3Npc3RlZE5vZGU7CisgICAgYm9vbCBtX2hhc1BlbmRpbmdCbHVy
Tm90aWZpY2F0aW9uOwogICAgIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6Tm9kZT4gbV9hc3Npc3RlZE5vZGU7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBtX2N1
cnJlbnRXb3JkUmFuZ2U7CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok5vZGU+IG1faW50ZXJhY3Rpb25O
b2RlOwogICAgIFdlYkNvcmU6OkludFBvaW50IG1fbGFzdEludGVyYWN0aW9uTG9jYXRpb247CkBA
IC0xNDE0LDcgKzE0MTgsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zY2FsZVdhc1NldEJ5VUlQ
cm9jZXNzOwogICAgIGJvb2wgbV91c2VySGFzQ2hhbmdlZFBhZ2VTY2FsZUZhY3RvcjsKICAgICBi
b29sIG1faGFzU3RhYmxlUGFnZVNjYWxlRmFjdG9yOwotICAgIGJvb2wgbV9oYXNQZW5kaW5nQmx1
ck5vdGlmaWNhdGlvbjsKICAgICBib29sIG1fdXNlVGVzdGluZ1ZpZXdwb3J0Q29uZmlndXJhdGlv
bjsKICAgICBib29sIG1faXNJblN0YWJsZVN0YXRlOwogICAgIGJvb2wgbV9mb3JjZUFsd2F5c1Vz
ZXJTY2FsYWJsZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHJldmlzaW9uIDIwMzE3MikKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjYzMiw1MCArMjYzMiw2IEBAIHZvaWQgV2ViUGFnZTo6Z2V0QXNzaXN0ZWROb2RlSW5mb3Jt
YXRpb24KICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVzZXRBc3Npc3RlZE5vZGVGb3JGcmFt
ZShXZWJGcmFtZSogZnJhbWUpCi17Ci0gICAgaWYgKCFtX2Fzc2lzdGVkTm9kZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGlmIChtX2Fzc2lzdGVkTm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpID09IGZy
YW1lLT5jb3JlRnJhbWUoKSkgewotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlN0b3BBc3Npc3RpbmdOb2RlKCkpOwotICAgICAgICBtX2Fzc2lzdGVkTm9kZSA9IG51bGxwdHI7
Ci0gICAgfQotfQotCi12b2lkIFdlYlBhZ2U6OmVsZW1lbnREaWRGb2N1cyhXZWJDb3JlOjpOb2Rl
KiBub2RlKQotewotICAgIGlmIChtX2Fzc2lzdGVkTm9kZSA9PSBub2RlICYmIG1faGFzRm9jdXNl
ZER1ZVRvVXNlckludGVyYWN0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobm9kZS0+
aGFzVGFnTmFtZShXZWJDb3JlOjpIVE1MTmFtZXM6OnNlbGVjdFRhZykgfHwgbm9kZS0+aGFzVGFn
TmFtZShXZWJDb3JlOjpIVE1MTmFtZXM6OmlucHV0VGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKFdl
YkNvcmU6OkhUTUxOYW1lczo6dGV4dGFyZWFUYWcpIHx8IG5vZGUtPmhhc0VkaXRhYmxlU3R5bGUo
KSkgewotICAgICAgICBtX2Fzc2lzdGVkTm9kZSA9IG5vZGU7Ci0gICAgICAgIG1faGFzRm9jdXNl
ZER1ZVRvVXNlckludGVyYWN0aW9uIHw9IG1fdXNlcklzSW50ZXJhY3Rpbmc7Ci0gICAgICAgIEFz
c2lzdGVkTm9kZUluZm9ybWF0aW9uIGluZm9ybWF0aW9uOwotICAgICAgICBnZXRBc3Npc3RlZE5v
ZGVJbmZvcm1hdGlvbihpbmZvcm1hdGlvbik7Ci0gICAgICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4g
dXNlckRhdGE7Ci0KLSAgICAgICAgbV9mb3JtQ2xpZW50LT53aWxsQmVnaW5JbnB1dFNlc3Npb24o
dGhpcywgZG93bmNhc3Q8RWxlbWVudD4obm9kZSksIFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpu
b2RlLT5kb2N1bWVudCgpLmZyYW1lKCkpLCB1c2VyRGF0YSwgbV91c2VySXNJbnRlcmFjdGluZyk7
Ci0KLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdGFydEFzc2lzdGluZ05v
ZGUoaW5mb3JtYXRpb24sIG1fdXNlcklzSW50ZXJhY3RpbmcsIG1faGFzUGVuZGluZ0JsdXJOb3Rp
ZmljYXRpb24sIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVj
dHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwotICAgICAgICBtX2hhc1BlbmRp
bmdCbHVyTm90aWZpY2F0aW9uID0gZmFsc2U7Ci0gICAgfQotfQotCi12b2lkIFdlYlBhZ2U6OmVs
ZW1lbnREaWRCbHVyKFdlYkNvcmU6Ok5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKG1fYXNzaXN0ZWRO
b2RlID09IG5vZGUpIHsKLSAgICAgICAgbV9oYXNQZW5kaW5nQmx1ck5vdGlmaWNhdGlvbiA9IHRy
dWU7Ci0gICAgICAgIFJlZlB0cjxXZWJQYWdlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgICAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhp
c10gewotICAgICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1faGFzUGVuZGluZ0JsdXJOb3Rp
ZmljYXRpb24pCi0gICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpTdG9wQXNzaXN0aW5nTm9kZSgpKTsKLSAgICAgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPm1faGFzUGVuZGluZ0JsdXJOb3RpZmljYXRpb24gPSBmYWxzZTsKLSAgICAgICAgfSk7
Ci0gICAgICAgIG1faGFzRm9jdXNlZER1ZVRvVXNlckludGVyYWN0aW9uID0gZmFsc2U7Ci0gICAg
ICAgIG1fYXNzaXN0ZWROb2RlID0gbnVsbHB0cjsKLSAgICB9Ci19Ci0KIHZvaWQgV2ViUGFnZTo6
c2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemUoY29uc3QgRmxvYXRTaXpl
JiBzaXplKQogewogICAgIGlmIChtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5zZXRNaW5pbXVtTGF5
b3V0U2l6ZShzaXplKSkK
</data>
<flag name="review"
          id="307477"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283815</attachid>
            <date>2016-07-15 16:56:12 -0700</date>
            <delta_ts>2016-07-15 17:05:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-3.txt</filename>
            <type>text/plain</type>
            <size>22481</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzMwOCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBACisyMDE2LTA3LTE1ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBNYWMgVUkgcHJvY2VzcyBuZWVkcyB0
byBrbm93IGFib3V0IGVsZW1lbnQgZm9jdXMgYW5kIGJsdXIsIG11Y2ggbGlrZSBpT1MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTg0MworICAgICAg
ICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzI3MjI5NTA0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBtYWtlcyB0aGUgZXhpc3RpbmcgaU9TIG1hY2hpbmVyeSB0byBoYW5kbGUgZm9jdXMgYW5kIGJs
dXJyaW5nIG9mIAorICAgICAgICBlbGVtZW50cyBjcm9zcy1wbGF0Zm9ybS4gSW5zdGVhZCBvZiB1
c2luZyB0aGUgZXhpc3RpbmcgaU9TIG1lc3NhZ2VzIGZvciAKKyAgICAgICAgc3RhcnRBc3Npc3Rp
bmdOb2RlL3N0b3BBc3Npc3RpbmdOb2RlLCB0aGlzIHBhdGNoIGFkZHMgYSBuZXcgbWVzc2FnZSB0
aGF0IAorICAgICAgICByZXF1aXJlIG9ubHkgYSBib29sZWFuIHBhcmFtZXRlcjogc2V0RWRpdGFi
bGVFbGVtZW50SXNGb2N1c2VkLgorCisgICAgICAgIE5vdyB0aGF0IG1vcmUgb2YgdGhpcyBjb2Rl
IGlzIHNoYXJlZCwgdGhpcyBwYXRjaCB0ZWFzZXMgCisgICAgICAgIG1faGFzRm9jdXNlZER1ZVRv
VXNlckludGVyYWN0aW9uIG91dCBpbnRvIHR3byB2YXJpYWJsZXMuIEkgcmVhbGl6ZWQgdGhhdCBp
dCAKKyAgICAgICAgd2FzIGJlaW5nIHVzZWQgdG8gbWVhbiB0d28gc2xpZ2h0bHkgZGlmZmVyZW50
IHRoaW5ncyBvbiBNYWMgYW5kIGlPUywgd2hpY2ggCisgICAgICAgIHdhcyB2ZXJ5IGNvbmZ1c2lu
Zy4gTm93IHdlIGhhdmUgbV9pc0Fzc2lzdGluZ05vZGVEdWVUb1VzZXJJbnRlcmFjdGlvbiB0byAK
KyAgICAgICAgcmVwcmVzZW50IHRoZSB3YXkgaU9TIHdhcyB1c2luZyB0aGUgdmFyaWFibGUsIGFu
ZCB3ZSBoYXZlIAorICAgICAgICBtX2hhc0V2ZXJGb2N1c2VkRWxlbWVudER1ZVRvVXNlckludGVy
YWN0aW9uU2luY2VQYWdlVHJhbnNpdGlvbiB0byByZXByZXNlbnQgCisgICAgICAgIGhvdyBNYWMg
d2FzIHVzaW5nIHRoZSB2YXJpYWJsZS4gVGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkgYmVoYXZpb3Ig
Y2hhbmdlcyB3aXRoIAorICAgICAgICB0aGlzIHJlLW5hbWUsIGp1c3QgYWRkZWQgY2xhcml0eS4K
KworICAgICAgICBXZWJWaWV3SW1wbCBoYXMgYSBuZXcgbWVtYmVyIHZhcmlhYmxlIG1fZWRpdGFi
bGVFbGVtZW50SXNGb2N1c2VkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OnNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCk6CisKKyAg
ICAgICAgUGlwZSB0aGUgbmV3IHNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCBtZXNzYWdlIHRv
IFdlYlZpZXdJbXBsLgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6c2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OnNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCk6CisKKyAgICAgICAgZWxl
bWVudERpZEZvY3VzKCkgYW5kIGVsZW1lbnREaWRCbHVyKCkgYXJlIG5vdyBQTEFURk9STShDT0NP
QSkgaW5zdGVhZCBvZiAKKyAgICAgICAgUExBVEZPUk0oSU9TKQorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQ2hyb21lQ2xpZW50OjplbGVtZW50RGlkRm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
aHJvbWVDbGllbnQ6OmVsZW1lbnREaWRCbHVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYkNocm9tZUNsaWVudElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q2hyb21lQ2xpZW50OjplbGVtZW50RGlkRm9jdXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJDaHJvbWVDbGllbnQ6OmVsZW1lbnREaWRCbHVyKTogRGVsZXRlZC4KKworICAgICAgICBt
X2hhc1BlbmRpbmdCbHVyTm90aWZpY2F0aW9uIGlzIG5vIGxvbmdlciBpT1Mtb25seS4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisKKyAgICAgICAgVXNlIG91ciB0
d28gbmV3IGJvb2xzIG1faXNBc3Npc3RpbmdOb2RlRHVlVG9Vc2VySW50ZXJhY3Rpb24gYW5kIAor
ICAgICAgICBtX2hhc0V2ZXJGb2N1c2VkRWxlbWVudER1ZVRvVXNlckludGVyYWN0aW9uU2luY2VQ
YWdlVHJhbnNpdGlvbiAKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkU3RhcnRQYWdlVHJh
bnNpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZENoYW5nZVNlbGVjdGlvbik6
CisKKyAgICAgICAgVGhlc2UgZnVuY3Rpb25zIGFyZSBhbGwgbmV3bHkgY3Jvc3MtcGxhdGZvcm0u
IFRoZSBNZXNzYWdlcyB0aGV5IHNlbmQgYXJlIAorICAgICAgICBzdGlsbCBwbGF0Zm9ybS1zcGVj
aWZpYywgYnV0IG90aGVyd2lzZSB0aGUgbG9naWMgaXMgdGhlIHNhbWUuIFdlIAorICAgICAgICBk
aXNwYXRjaF9hc3luYyB0aGUgYmx1ciBtZXNzYWdlcyBzbyB0aGF0IHRoZSBVSSBwcm9jZXNzIGZl
YXR1cmVzIHdvbuKAmXQgYmUgCisgICAgICAgIGZsYXNoeSB3aGVuIHRoZSB1c2VyIGlzIHRhcHBp
bmcsIHRhYmJpbmcsIG9yIGNsaWNraW5nIHRocm91Z2ggZm9ybSBmaWVsZHMuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnJlc2V0QXNzaXN0ZWROb2RlRm9yRnJhbWUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjplbGVtZW50RGlkRm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjplbGVtZW50RGlkQmx1cik6CisKKyAgICAgICAgcmVzZXRBc3Npc3RlZE5vZGVGb3JGcmFtZSgp
IGlzIG5vIGxvbmdlciBpT1Mtb25seS4gCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZENv
bW1pdExvYWQpOgorCisgICAgICAgIE1vdmUgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgYXJvdW5k
IHNvIHRoYXQgdGhleSBhcmUgZGVmaW5lZCBmb3IgdGhlIHJpZ2h0IAorICAgICAgICBwbGF0Zm9y
bSwgYW5kIGRlY2xhcmUgdGhlIHR3byBuZXcgYm9vbHMgaW4gcGxhY2Ugb2YgdGhlIG9sZCBvbmUu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKworICAgICAgICBUaGVz
ZSBmdW5jdGlvbnMgYXJlIG5vdyBkZWZpbmVkIGluIFdlYlBhZ2UuY3BwCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpyZXNldEFzc2lzdGVkTm9kZUZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6ZWxlbWVudERpZEZvY3VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZWxlbWVudERpZEJsdXIpOiBEZWxldGVkLgorCiAyMDE2LTA3LTE1ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkZWQgYSBtYWtlUmVmPFQ+
IGhlbHBlcgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCShyZXZpc2lv
biAyMDMzMDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzUsNiArMjc1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3Rlckluc2VydGlvblVuZG9Hcm91cGluZygpID0gMDsKICNlbmRpZiAvLyBVU0UoSU5TRVJU
SU9OX1VORE9fR1JPVVBJTkcpCiAjZW5kaWYgLy8gVVNFKEFQUEtJVCkKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGJvb2wpID0gMDsKICNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpCiAKICNpZiBQTEFURk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjAzMzA4KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5NTUsNiAr
NTk1NSwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzCiB9CiAj
ZW5kaWYKIAordm9pZCBXZWJQYWdlUHJveHk6OnNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZChi
b29sIGVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCkKK3sKKyAgICBtX3BhZ2VDbGllbnQuc2V0RWRp
dGFibGVFbGVtZW50SXNGb2N1c2VkKGVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCk7Cit9CisKICNl
bmRpZiAvLyBQTEFURk9STShNQUMpCiAKICNpZiBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDIwMzMwOCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
MTQxOSw2ICsxNDE5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVy
bmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KTsKICAgICB2b2lkIGRpY3RhdGlvbkFs
dGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0LCBWZWN0b3I8U3RyaW5nPiYgcmVz
dWx0KTsKICNlbmRpZgorCisgICAgdm9pZCBzZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoYm9v
bCk7CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiAjaWYgUExBVEZPUk0oSU9TKQpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CShyZXZpc2lvbiAyMDMzMDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNDIsNiArMzQyLDggQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaXNtaXNzQ29ycmVjdGlvblBhbmVsKGludDMyX3Qg
cmVhc29uKQogICAgIERpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKGludDMyX3QgcmVhc29uKSAt
PiAoU3RyaW5nIHJlc3VsdCkKICAgICBSZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGludDMy
X3QgcmVzcG9uc2VUeXBlLCBTdHJpbmcgcmVwbGFjZWRTdHJpbmcsIFN0cmluZyByZXBsYWNlbWVu
dFN0cmluZyk7CisKKyAgICBTZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoYm9vbCBlZGl0YWJs
ZUVsZW1lbnRJc0ZvY3VzZWQpCiAjZW5kaWYKIAogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJ
VkVTKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
LmgJKHJldmlzaW9uIDIwMzMwOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzIsNiArMjcyLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgdXBkYXRlRm9udFBhbmVsSWZOZWVkZWQoKTsKICAgICB2b2lkIGNoYW5nZUZvbnRG
cm9tRm9udFBhbmVsKCk7CiAgICAgYm9vbCB2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtKGlkIDxO
U1ZhbGlkYXRlZFVzZXJJbnRlcmZhY2VJdGVtPik7CisgICAgdm9pZCBzZXRFZGl0YWJsZUVsZW1l
bnRJc0ZvY3VzZWQoYm9vbCk7CiAKICAgICB2b2lkIHN0YXJ0U3BlYWtpbmcoKTsKICAgICB2b2lk
IHN0b3BTcGVha2luZyhpZCk7CkBAIC02NDcsNiArNjQ4LDcgQEAgcHJpdmF0ZToKICAgICBOU1Jh
bmdlIG1fc29mdFNwYWNlUmFuZ2UgeyBOU05vdEZvdW5kLCAwIH07CiAgICAgYm9vbCBtX2lzSGFu
ZGxpbmdBY2NlcHRlZENhbmRpZGF0ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3JlcXVpcmVzVXNl
ckFjdGlvbkZvckVkaXRpbmdDb250cm9sc01hbmFnZXIgeyBmYWxzZSB9OworICAgIGJvb2wgbV9l
ZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQgeyBmYWxzZSB9OwogfTsKICAgICAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQkocmV2aXNpb24gMjAzMzA4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NTMsNiArNDUzLDExIEBA
IHZvaWQgV2ViVmlld0ltcGw6OndlYlZpZXdJbXBsQWRkaXRpb25zV2kKIHsKIH0KIAordm9pZCBX
ZWJWaWV3SW1wbDo6c2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGJvb2wgZWRpdGFibGVFbGVt
ZW50SXNGb2N1c2VkKQoreworICAgIG1fZWRpdGFibGVFbGVtZW50SXNGb2N1c2VkID0gZWRpdGFi
bGVFbGVtZW50SXNGb2N1c2VkOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKICNlbmRpZiAv
LyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCAmJiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAyMDMzMDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEs
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBk
aWN0YXRpb25Db250ZXh0KSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25B
bHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgb3ZlcnJpZGU7CiAjZW5kaWYK
KyAgICB2b2lkIHNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZChib29sKSBvdmVycmlkZTsKKwog
I2lmIFVTRShJTlNFUlRJT05fVU5ET19HUk9VUElORykKICAgICB2b2lkIHJlZ2lzdGVySW5zZXJ0
aW9uVW5kb0dyb3VwaW5nKCkgb3ZlcnJpZGU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQkocmV2aXNpb24gMjAzMzA4KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjIxLDYgKzYyMSwxMSBAQCBWZWN0b3I8U3RyaW5nPiBQYWdlQ2xpZW50SW1w
bDo6ZGljdGF0aW9uCiB9CiAjZW5kaWYKIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0RWRpdGFi
bGVFbGVtZW50SXNGb2N1c2VkKGJvb2wgZWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKQoreworICAg
IG1faW1wbC0+c2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGVkaXRhYmxlRWxlbWVudElzRm9j
dXNlZCk7Cit9CisKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAKIFdlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHlDbGllbnQmIFBhZ2VDbGllbnRJbXBsOjpmdWxsU2NyZWVuTWFuYWdlclByb3h5
Q2xpZW50KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJldmlzaW9uIDIwMzMwOCkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDYgKzE2OSwxNiBAQCB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6dW5mb2N1cygpCiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKK3ZvaWQgV2ViQ2hy
b21lQ2xpZW50OjplbGVtZW50RGlkRm9jdXMoY29uc3QgV2ViQ29yZTo6Tm9kZSogbm9kZSkKK3sK
KyAgICBtX3BhZ2UtPmVsZW1lbnREaWRGb2N1cyhjb25zdF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihu
b2RlKSk7Cit9CisKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjplbGVtZW50RGlkQmx1cihjb25zdCBX
ZWJDb3JlOjpOb2RlKiBub2RlKQoreworICAgIG1fcGFnZS0+ZWxlbWVudERpZEJsdXIoY29uc3Rf
Y2FzdDxXZWJDb3JlOjpOb2RlKj4obm9kZSkpOworfQorCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6
bWFrZUZpcnN0UmVzcG9uZGVyKCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6TWFrZUZpcnN0UmVzcG9uZGVyKCkpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CShyZXZpc2lvbiAyMDMzMDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsOCArMjM2LDYg
QEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZvaWQgZWxlbWVu
dERpZEZvY3VzKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKSBvdmVycmlkZTsKLSAgICB2b2lkIGVsZW1l
bnREaWRCbHVyKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKSBvdmVycmlkZTsKICAgICB2b2lkIGVsZW1l
bnREaWRSZWZvY3VzKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKSBvdmVycmlkZTsKICNlbmRpZgogCkBA
IC0yNTksNiArMjU3LDkgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgdm9pZCBlbGVtZW50RGlkRm9jdXMoY29uc3QgV2ViQ29yZTo6Tm9kZSopIG92ZXJyaWRl
OworICAgIHZvaWQgZWxlbWVudERpZEJsdXIoY29uc3QgV2ViQ29yZTo6Tm9kZSopIG92ZXJyaWRl
OworCiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKSBvdmVycmlkZTsKICNlbmRpZgogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJDaHJv
bWVDbGllbnRJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9pb3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCShyZXZpc2lvbiAyMDMzMDgp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJDaHJv
bWVDbGllbnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE2ICs0NCw2IEBAIHZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjpkaWRQcmV2ZW50RGVmYXVsdEYKIH0KICNlbmRpZgogCi12b2lkIFdlYkNo
cm9tZUNsaWVudDo6ZWxlbWVudERpZEZvY3VzKGNvbnN0IFdlYkNvcmU6Ok5vZGUqIG5vZGUpCi17
Ci0gICAgbV9wYWdlLT5lbGVtZW50RGlkRm9jdXMoY29uc3RfY2FzdDxXZWJDb3JlOjpOb2RlKj4o
bm9kZSkpOwotfQotCi12b2lkIFdlYkNocm9tZUNsaWVudDo6ZWxlbWVudERpZEJsdXIoY29uc3Qg
V2ViQ29yZTo6Tm9kZSogbm9kZSkKLXsKLSAgICBtX3BhZ2UtPmVsZW1lbnREaWRCbHVyKGNvbnN0
X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KG5vZGUpKTsKLX0KLQogdm9pZCBXZWJDaHJvbWVDbGllbnQ6
OmVsZW1lbnREaWRSZWZvY3VzKGNvbnN0IFdlYkNvcmU6Ok5vZGUqIG5vZGUpCiB7CiAgICAgZWxl
bWVudERpZEZvY3VzKG5vZGUpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjAzMzA4KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElHZW9tZXRyeS5oIgog
I2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkFzc2lzdGVkTm9kZUluZm9ybWF0aW9u
LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRyYWdDb250cm9sbGVy
QWN0aW9uLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWEuaCIKQEAgLTM0OCwxMyArMzQ5LDEzIEBA
IFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCAKICNpZiBFTkFCTEUoQ09O
VEVYVF9NRU5VUykKICAgICAsIG1faXNTaG93aW5nQ29udGV4dE1lbnUoZmFsc2UpCiAjZW5kaWYK
KyAgICAsIG1faGFzUGVuZGluZ0JsdXJOb3RpZmljYXRpb24oZmFsc2UpCiAjaWYgUExBVEZPUk0o
SU9TKQogICAgICwgbV9zZWxlY3Rpb25BbmNob3IoU3RhcnQpCiAgICAgLCBtX2hhc1JlY2VpdmVk
VmlzaWJsZUNvbnRlbnRSZWN0c0FmdGVyRGlkQ29tbWl0TG9hZChmYWxzZSkKICAgICAsIG1fc2Nh
bGVXYXNTZXRCeVVJUHJvY2VzcyhmYWxzZSkKICAgICAsIG1fdXNlckhhc0NoYW5nZWRQYWdlU2Nh
bGVGYWN0b3IoZmFsc2UpCiAgICAgLCBtX2hhc1N0YWJsZVBhZ2VTY2FsZUZhY3Rvcih0cnVlKQot
ICAgICwgbV9oYXNQZW5kaW5nQmx1ck5vdGlmaWNhdGlvbihmYWxzZSkKICAgICAsIG1fdXNlVGVz
dGluZ1ZpZXdwb3J0Q29uZmlndXJhdGlvbihmYWxzZSkKICAgICAsIG1faXNJblN0YWJsZVN0YXRl
KHRydWUpCiAgICAgLCBtX2ZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKHBhcmFtZXRlcnMuaWdub3Jl
c1ZpZXdwb3J0U2NhbGVMaW1pdHMpCkBAIC0yNjA4LDEyICsyNjA5LDEzIEBAIHZvaWQgV2ViUGFn
ZTo6ZGlkU3RhcnRQYWdlVHJhbnNpdGlvbigpCiAgICAgbV9kcmF3aW5nQXJlYS0+c2V0TGF5ZXJU
cmVlU3RhdGVJc0Zyb3plbih0cnVlKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBib29sIGhh
c1ByZXZpb3VzbHlGb2N1c2VkRHVlVG9Vc2VySW50ZXJhY3Rpb24gPSBtX2hhc0ZvY3VzZWREdWVU
b1VzZXJJbnRlcmFjdGlvbjsKKyAgICBib29sIGhhc1ByZXZpb3VzbHlGb2N1c2VkRHVlVG9Vc2Vy
SW50ZXJhY3Rpb24gPSBtX2hhc0V2ZXJGb2N1c2VkRWxlbWVudER1ZVRvVXNlckludGVyYWN0aW9u
U2luY2VQYWdlVHJhbnNpdGlvbjsKICNlbmRpZgotICAgIG1faGFzRm9jdXNlZER1ZVRvVXNlcklu
dGVyYWN0aW9uID0gZmFsc2U7CisgICAgbV9oYXNFdmVyRm9jdXNlZEVsZW1lbnREdWVUb1VzZXJJ
bnRlcmFjdGlvblNpbmNlUGFnZVRyYW5zaXRpb24gPSBmYWxzZTsKKyAgICBtX2lzQXNzaXN0aW5n
Tm9kZUR1ZVRvVXNlckludGVyYWN0aW9uID0gZmFsc2U7CiAjaWYgUExBVEZPUk0oTUFDKQogICAg
IGlmIChoYXNQcmV2aW91c2x5Rm9jdXNlZER1ZVRvVXNlckludGVyYWN0aW9uKQotICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldEhhc0hhZFNlbGVjdGlvbkNoYW5nZXNGcm9t
VXNlckludGVyYWN0aW9uKG1faGFzRm9jdXNlZER1ZVRvVXNlckludGVyYWN0aW9uKSk7CisgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0SGFzSGFkU2VsZWN0aW9uQ2hhbmdl
c0Zyb21Vc2VySW50ZXJhY3Rpb24obV9oYXNFdmVyRm9jdXNlZEVsZW1lbnREdWVUb1VzZXJJbnRl
cmFjdGlvblNpbmNlUGFnZVRyYW5zaXRpb24pKTsKICNlbmRpZgogfQogCkBAIC00NzUzLDEwICs0
NzU1LDExIEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ2hhbmdlU2VsZWN0aW9uKCkKICAgICBtX2lzRWRp
dG9yU3RhdGVNaXNzaW5nUG9zdExheW91dERhdGEgPSBlZGl0b3JTdGF0ZS5pc01pc3NpbmdQb3N0
TGF5b3V0RGF0YTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBib29sIGhhc1ByZXZpb3VzbHlG
b2N1c2VkRHVlVG9Vc2VySW50ZXJhY3Rpb24gPSBtX2hhc0ZvY3VzZWREdWVUb1VzZXJJbnRlcmFj
dGlvbjsKLSAgICBtX2hhc0ZvY3VzZWREdWVUb1VzZXJJbnRlcmFjdGlvbiB8PSBtX3VzZXJJc0lu
dGVyYWN0aW5nOwotICAgIGlmICghaGFzUHJldmlvdXNseUZvY3VzZWREdWVUb1VzZXJJbnRlcmFj
dGlvbiAmJiBtX2hhc0ZvY3VzZWREdWVUb1VzZXJJbnRlcmFjdGlvbikKLSAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRIYXNIYWRTZWxlY3Rpb25DaGFuZ2VzRnJvbVVzZXJJ
bnRlcmFjdGlvbihtX2hhc0ZvY3VzZWREdWVUb1VzZXJJbnRlcmFjdGlvbikpOworICAgIGJvb2wg
aGFzUHJldmlvdXNseUZvY3VzZWREdWVUb1VzZXJJbnRlcmFjdGlvbiA9IG1faGFzRXZlckZvY3Vz
ZWRFbGVtZW50RHVlVG9Vc2VySW50ZXJhY3Rpb25TaW5jZVBhZ2VUcmFuc2l0aW9uOworICAgIG1f
aGFzRXZlckZvY3VzZWRFbGVtZW50RHVlVG9Vc2VySW50ZXJhY3Rpb25TaW5jZVBhZ2VUcmFuc2l0
aW9uIHw9IG1fdXNlcklzSW50ZXJhY3Rpbmc7CisKKyAgICBpZiAoIWhhc1ByZXZpb3VzbHlGb2N1
c2VkRHVlVG9Vc2VySW50ZXJhY3Rpb24gJiYgbV9oYXNFdmVyRm9jdXNlZEVsZW1lbnREdWVUb1Vz
ZXJJbnRlcmFjdGlvblNpbmNlUGFnZVRyYW5zaXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U2V0SGFzSGFkU2VsZWN0aW9uQ2hhbmdlc0Zyb21Vc2VySW50ZXJhY3Rp
b24obV9oYXNFdmVyRm9jdXNlZEVsZW1lbnREdWVUb1VzZXJJbnRlcmFjdGlvblNpbmNlUGFnZVRy
YW5zaXRpb24pKTsKIAogICAgIC8vIEFiYW5kb24gdGhlIGN1cnJlbnQgaW5saW5lIGlucHV0IHNl
c3Npb24gaWYgc2VsZWN0aW9uIGNoYW5nZWQgZm9yIGFueSBvdGhlciByZWFzb24gYnV0IGFuIGlu
cHV0IG1ldGhvZCBkaXJlY3QgYWN0aW9uLgogICAgIC8vIEZJWE1FOiBUaGlzIGxvZ2ljIHNob3Vs
ZCBiZSBpbiBXZWJDb3JlLgpAQCAtNDc3Niw2ICs0Nzc5LDY4IEBAIHZvaWQgV2ViUGFnZTo6ZGlk
Q2hhbmdlU2VsZWN0aW9uKCkKICNlbmRpZgogfQogCit2b2lkIFdlYlBhZ2U6OnJlc2V0QXNzaXN0
ZWROb2RlRm9yRnJhbWUoV2ViRnJhbWUqIGZyYW1lKQoreworICAgIGlmICghbV9hc3Npc3RlZE5v
ZGUpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9hc3Npc3RlZE5vZGUtPmRvY3VtZW50KCku
ZnJhbWUoKSA9PSBmcmFtZS0+Y29yZUZyYW1lKCkpIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RvcEFzc2lzdGluZ05vZGUoKSk7Cisj
ZWxpZiBQTEFURk9STShNQUMpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
U2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGZhbHNlKSk7CisjZW5kaWYKKyAgICAgICAgbV9h
c3Npc3RlZE5vZGUgPSBudWxscHRyOworICAgIH0KK30KKwordm9pZCBXZWJQYWdlOjplbGVtZW50
RGlkRm9jdXMoV2ViQ29yZTo6Tm9kZSogbm9kZSkKK3sKKyAgICBpZiAobV9hc3Npc3RlZE5vZGUg
PT0gbm9kZSAmJiBtX2lzQXNzaXN0aW5nTm9kZUR1ZVRvVXNlckludGVyYWN0aW9uKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShXZWJDb3JlOjpIVE1MTmFtZXM6
OnNlbGVjdFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShXZWJDb3JlOjpIVE1MTmFtZXM6OmlucHV0
VGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKFdlYkNvcmU6OkhUTUxOYW1lczo6dGV4dGFyZWFUYWcp
IHx8IG5vZGUtPmhhc0VkaXRhYmxlU3R5bGUoKSkgeworICAgICAgICBtX2Fzc2lzdGVkTm9kZSA9
IG5vZGU7CisgICAgICAgIG1faXNBc3Npc3RpbmdOb2RlRHVlVG9Vc2VySW50ZXJhY3Rpb24gfD0g
bV91c2VySXNJbnRlcmFjdGluZzsKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgQXNzaXN0
ZWROb2RlSW5mb3JtYXRpb24gaW5mb3JtYXRpb247CisgICAgICAgIGdldEFzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uKGluZm9ybWF0aW9uKTsKKyAgICAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2Vy
RGF0YTsKKworICAgICAgICBtX2Zvcm1DbGllbnQtPndpbGxCZWdpbklucHV0U2Vzc2lvbih0aGlz
LCBkb3duY2FzdDxFbGVtZW50Pihub2RlKSwgV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKm5vZGUt
PmRvY3VtZW50KCkuZnJhbWUoKSksIHVzZXJEYXRhLCBtX3VzZXJJc0ludGVyYWN0aW5nKTsKKwor
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0YXJ0QXNzaXN0aW5nTm9kZShp
bmZvcm1hdGlvbiwgbV91c2VySXNJbnRlcmFjdGluZywgbV9oYXNQZW5kaW5nQmx1ck5vdGlmaWNh
dGlvbiwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1Rv
SGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CisjZWxpZiBQTEFURk9STShNQUMpCisg
ICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKFdlYkNvcmU6OkhUTUxOYW1lczo6c2VsZWN0VGFn
KSkKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0RWRpdGFibGVF
bGVtZW50SXNGb2N1c2VkKGZhbHNlKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKHRydWUp
KTsKKyNlbmRpZgorICAgICAgICBtX2hhc1BlbmRpbmdCbHVyTm90aWZpY2F0aW9uID0gZmFsc2U7
CisgICAgfQorfQorCit2b2lkIFdlYlBhZ2U6OmVsZW1lbnREaWRCbHVyKFdlYkNvcmU6Ok5vZGUq
IG5vZGUpCit7CisgICAgaWYgKG1fYXNzaXN0ZWROb2RlID09IG5vZGUpIHsKKyAgICAgICAgbV9o
YXNQZW5kaW5nQmx1ck5vdGlmaWNhdGlvbiA9IHRydWU7CisgICAgICAgIFJlZlB0cjxXZWJQYWdl
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0
ZWRUaGlzXSB7CisgICAgICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9oYXNQZW5kaW5nQmx1
ck5vdGlmaWNhdGlvbikgeworI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0b3BBc3Npc3RpbmdOb2Rl
KCkpOworI2VsaWYgUExBVEZPUk0oTUFDKQorICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2Vk
KGZhbHNlKSk7CisjZW5kaWYKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByb3RlY3RlZFRo
aXMtPm1faGFzUGVuZGluZ0JsdXJOb3RpZmljYXRpb24gPSBmYWxzZTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgbV9pc0Fzc2lzdGluZ05vZGVEdWVUb1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlOwor
ICAgICAgICBtX2Fzc2lzdGVkTm9kZSA9IG51bGxwdHI7CisgICAgfQorfQorCiB2b2lkIFdlYlBh
Z2U6OnNlbmRQb3N0TGF5b3V0RWRpdG9yU3RhdGVJZk5lZWRlZCgpCiB7CiAgICAgaWYgKCFtX2lz
RWRpdG9yU3RhdGVNaXNzaW5nUG9zdExheW91dERhdGEpCkBAIC00OTE0LDggKzQ5NzksOCBAQCB2
b2lkIFdlYlBhZ2U6OmRpZENvbW1pdExvYWQoV2ViRnJhbWUqIGZyCiAjaWYgUExBVEZPUk0oSU9T
KQogICAgIGZyYW1lLT5zZXRGaXJzdExheWVyVHJlZVRyYW5zYWN0aW9uSURBZnRlckRpZENvbW1p
dExvYWQoZG93bmNhc3Q8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE+KCptX2RyYXdpbmdBcmVh
KS5uZXh0VHJhbnNhY3Rpb25JRCgpKTsKICAgICBjYW5jZWxQb3RlbnRpYWxUYXBJbkZyYW1lKCpm
cmFtZSk7Ci0gICAgcmVzZXRBc3Npc3RlZE5vZGVGb3JGcmFtZShmcmFtZSk7CiAjZW5kaWYKKyAg
ICByZXNldEFzc2lzdGVkTm9kZUZvckZyYW1lKGZyYW1lKTsKIAogICAgIGlmICghZnJhbWUtPmlz
TWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjAzMzA4KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDk2
LDYgKzQ5NiwxMCBAQCBwdWJsaWM6CiAgICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyJiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKSB7IHJldHVybiBtX3VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsgfQogI2VuZGlmCiAKKyAgICB2b2lkIGVsZW1l
bnREaWRGb2N1cyhXZWJDb3JlOjpOb2RlKik7CisgICAgdm9pZCBlbGVtZW50RGlkQmx1cihXZWJD
b3JlOjpOb2RlKik7CisgICAgdm9pZCByZXNldEFzc2lzdGVkTm9kZUZvckZyYW1lKFdlYkZyYW1l
Kik7CisKICNpZiBQTEFURk9STShJT1MpCiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNjcmVlblNp
emUoKSBjb25zdDsKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgYXZhaWxhYmxlU2NyZWVuU2l6ZSgp
IGNvbnN0OwpAQCAtNTM4LDggKzU0Miw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVNlbGVj
dGlvbldpdGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgaXNJbnRl
cmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQg
dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFz
c2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAKLSAgICB2b2lkIGVsZW1lbnREaWRG
b2N1cyhXZWJDb3JlOjpOb2RlKik7Ci0gICAgdm9pZCBlbGVtZW50RGlkQmx1cihXZWJDb3JlOjpO
b2RlKik7CiAgICAgdm9pZCByZXF1ZXN0RGljdGF0aW9uQ29udGV4dCh1aW50NjRfdCBjYWxsYmFj
a0lEKTsKICAgICB2b2lkIHJlcGxhY2VEaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0
LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpOwogICAgIHZvaWQgcmVwbGFjZVNlbGVjdGVkVGV4dChj
b25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCk7CkBAIC01NTcsNyAr
NTU5LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXNzaXN0ZWROb2RlVmFsdWUoY29uc3QgU3Ry
aW5nJik7CiAgICAgdm9pZCBzZXRBc3Npc3RlZE5vZGVWYWx1ZUFzTnVtYmVyKGRvdWJsZSk7CiAg
ICAgdm9pZCBzZXRBc3Npc3RlZE5vZGVTZWxlY3RlZEluZGV4KHVpbnQzMl90IGluZGV4LCBib29s
IGFsbG93TXVsdGlwbGVTZWxlY3Rpb24pOwotICAgIHZvaWQgcmVzZXRBc3Npc3RlZE5vZGVGb3JG
cmFtZShXZWJGcmFtZSopOwogICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdEZvckVsZW1lbnRBdElu
dGVyYWN0aW9uTG9jYXRpb24oKTsKICAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbkFwcGVhcmFuY2Uo
KTsKICAgICB2b2lkIGdldFNlbGVjdGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJhY2tJRCk7CkBA
IC0xMzg4LDE0ICsxMzg5LDE3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2F1dG9TaXppbmdTaG91
bGRFeHBhbmRUb1ZpZXdIZWlnaHQ7CiAKICAgICBib29sIG1fdXNlcklzSW50ZXJhY3Rpbmc7Ci0g
ICAgYm9vbCBtX2hhc0ZvY3VzZWREdWVUb1VzZXJJbnRlcmFjdGlvbiB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX2lzQXNzaXN0aW5nTm9kZUR1ZVRvVXNlckludGVyYWN0aW9uIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1faGFzRXZlckZvY3VzZWRFbGVtZW50RHVlVG9Vc2VySW50ZXJhY3Rpb25TaW5jZVBh
Z2VUcmFuc2l0aW9uIHsgZmFsc2UgfTsKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAg
IGJvb2wgbV9pc1Nob3dpbmdDb250ZXh0TWVudTsKICNlbmRpZgorCisgICAgUmVmUHRyPFdlYkNv
cmU6Ok5vZGU+IG1fYXNzaXN0ZWROb2RlOworICAgIGJvb2wgbV9oYXNQZW5kaW5nQmx1ck5vdGlm
aWNhdGlvbjsKICAgICAKICNpZiBQTEFURk9STShJT1MpCi0gICAgUmVmUHRyPFdlYkNvcmU6Ok5v
ZGU+IG1fYXNzaXN0ZWROb2RlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4gbV9jdXJyZW50
V29yZFJhbmdlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpOb2RlPiBtX2ludGVyYWN0aW9uTm9kZTsK
ICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX2xhc3RJbnRlcmFjdGlvbkxvY2F0aW9uOwpAQCAtMTQx
NCw3ICsxNDE4LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2NhbGVXYXNTZXRCeVVJUHJvY2Vz
czsKICAgICBib29sIG1fdXNlckhhc0NoYW5nZWRQYWdlU2NhbGVGYWN0b3I7CiAgICAgYm9vbCBt
X2hhc1N0YWJsZVBhZ2VTY2FsZUZhY3RvcjsKLSAgICBib29sIG1faGFzUGVuZGluZ0JsdXJOb3Rp
ZmljYXRpb247CiAgICAgYm9vbCBtX3VzZVRlc3RpbmdWaWV3cG9ydENvbmZpZ3VyYXRpb247CiAg
ICAgYm9vbCBtX2lzSW5TdGFibGVTdGF0ZTsKICAgICBib29sIG1fZm9yY2VBbHdheXNVc2VyU2Nh
bGFibGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCShyZXZpc2lvbiAyMDMzMDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5
LDcgKzI5LDYgQEAKICNpZiBQTEFURk9STShJT1MpCiAKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlJ
T1MuaCIKLSNpbXBvcnQgIkFzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmgiCiAjaW1wb3J0ICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJEcmF3aW5nQXJlYS5oIgogI2ltcG9ydCAiRWRpdGluZ1Jh
bmdlLmgiCkBAIC0yNjMyLDUwICsyNjMxLDYgQEAgdm9pZCBXZWJQYWdlOjpnZXRBc3Npc3RlZE5v
ZGVJbmZvcm1hdGlvbgogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjpyZXNldEFzc2lzdGVkTm9k
ZUZvckZyYW1lKFdlYkZyYW1lKiBmcmFtZSkKLXsKLSAgICBpZiAoIW1fYXNzaXN0ZWROb2RlKQot
ICAgICAgICByZXR1cm47Ci0gICAgaWYgKG1fYXNzaXN0ZWROb2RlLT5kb2N1bWVudCgpLmZyYW1l
KCkgPT0gZnJhbWUtPmNvcmVGcmFtZSgpKSB7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U3RvcEFzc2lzdGluZ05vZGUoKSk7Ci0gICAgICAgIG1fYXNzaXN0ZWROb2RlID0g
bnVsbHB0cjsKLSAgICB9Ci19Ci0KLXZvaWQgV2ViUGFnZTo6ZWxlbWVudERpZEZvY3VzKFdlYkNv
cmU6Ok5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKG1fYXNzaXN0ZWROb2RlID09IG5vZGUgJiYgbV9o
YXNGb2N1c2VkRHVlVG9Vc2VySW50ZXJhY3Rpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
IChub2RlLT5oYXNUYWdOYW1lKFdlYkNvcmU6OkhUTUxOYW1lczo6c2VsZWN0VGFnKSB8fCBub2Rl
LT5oYXNUYWdOYW1lKFdlYkNvcmU6OkhUTUxOYW1lczo6aW5wdXRUYWcpIHx8IG5vZGUtPmhhc1Rh
Z05hbWUoV2ViQ29yZTo6SFRNTE5hbWVzOjp0ZXh0YXJlYVRhZykgfHwgbm9kZS0+aGFzRWRpdGFi
bGVTdHlsZSgpKSB7Ci0gICAgICAgIG1fYXNzaXN0ZWROb2RlID0gbm9kZTsKLSAgICAgICAgbV9o
YXNGb2N1c2VkRHVlVG9Vc2VySW50ZXJhY3Rpb24gfD0gbV91c2VySXNJbnRlcmFjdGluZzsKLSAg
ICAgICAgQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24gaW5mb3JtYXRpb247Ci0gICAgICAgIGdldEFz
c2lzdGVkTm9kZUluZm9ybWF0aW9uKGluZm9ybWF0aW9uKTsKLSAgICAgICAgUmVmUHRyPEFQSTo6
T2JqZWN0PiB1c2VyRGF0YTsKLQotICAgICAgICBtX2Zvcm1DbGllbnQtPndpbGxCZWdpbklucHV0
U2Vzc2lvbih0aGlzLCBkb3duY2FzdDxFbGVtZW50Pihub2RlKSwgV2ViRnJhbWU6OmZyb21Db3Jl
RnJhbWUoKm5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKSksIHVzZXJEYXRhLCBtX3VzZXJJc0ludGVy
YWN0aW5nKTsKLQotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0YXJ0QXNz
aXN0aW5nTm9kZShpbmZvcm1hdGlvbiwgbV91c2VySXNJbnRlcmFjdGluZywgbV9oYXNQZW5kaW5n
Qmx1ck5vdGlmaWNhdGlvbiwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNm
b3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7Ci0gICAgICAgIG1f
aGFzUGVuZGluZ0JsdXJOb3RpZmljYXRpb24gPSBmYWxzZTsKLSAgICB9Ci19Ci0KLXZvaWQgV2Vi
UGFnZTo6ZWxlbWVudERpZEJsdXIoV2ViQ29yZTo6Tm9kZSogbm9kZSkKLXsKLSAgICBpZiAobV9h
c3Npc3RlZE5vZGUgPT0gbm9kZSkgewotICAgICAgICBtX2hhc1BlbmRpbmdCbHVyTm90aWZpY2F0
aW9uID0gdHJ1ZTsKLSAgICAgICAgUmVmUHRyPFdlYlBhZ2U+IHByb3RlY3RlZFRoaXModGhpcyk7
Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90
ZWN0ZWRUaGlzXSB7Ci0gICAgICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9oYXNQZW5kaW5n
Qmx1ck5vdGlmaWNhdGlvbikKLSAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0b3BBc3Npc3RpbmdOb2RlKCkpOwotICAgICAgICAgICAg
cHJvdGVjdGVkVGhpcy0+bV9oYXNQZW5kaW5nQmx1ck5vdGlmaWNhdGlvbiA9IGZhbHNlOwotICAg
ICAgICB9KTsKLSAgICAgICAgbV9oYXNGb2N1c2VkRHVlVG9Vc2VySW50ZXJhY3Rpb24gPSBmYWxz
ZTsKLSAgICAgICAgbV9hc3Npc3RlZE5vZGUgPSBudWxscHRyOwotICAgIH0KLX0KLQogdm9pZCBX
ZWJQYWdlOjpzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZShjb25zdCBG
bG9hdFNpemUmIHNpemUpCiB7CiAgICAgaWYgKG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnNldE1p
bmltdW1MYXlvdXRTaXplKHNpemUpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283819</attachid>
            <date>2016-07-15 17:05:04 -0700</date>
            <delta_ts>2016-07-15 17:05:04 -0700</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>for-review-4.txt</filename>
            <type>text/plain</type>
            <size>22297</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzMwOCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBACisyMDE2LTA3LTE1ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBNYWMgVUkgcHJvY2VzcyBuZWVkcyB0
byBrbm93IGFib3V0IGVsZW1lbnQgZm9jdXMgYW5kIGJsdXIsIG11Y2ggbGlrZSBpT1MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTg0MworICAgICAg
ICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzI3MjI5NTA0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBtYWtlcyB0aGUgZXhpc3RpbmcgaU9TIG1hY2hpbmVyeSB0byBoYW5kbGUgZm9jdXMgYW5kIGJs
dXJyaW5nIG9mIAorICAgICAgICBlbGVtZW50cyBjcm9zcy1wbGF0Zm9ybS4gSW5zdGVhZCBvZiB1
c2luZyB0aGUgZXhpc3RpbmcgaU9TIG1lc3NhZ2VzIGZvciAKKyAgICAgICAgc3RhcnRBc3Npc3Rp
bmdOb2RlL3N0b3BBc3Npc3RpbmdOb2RlLCB0aGlzIHBhdGNoIGFkZHMgYSBuZXcgbWVzc2FnZSB0
aGF0IAorICAgICAgICByZXF1aXJlIG9ubHkgYSBib29sZWFuIHBhcmFtZXRlcjogc2V0RWRpdGFi
bGVFbGVtZW50SXNGb2N1c2VkLgorCisgICAgICAgIE5vdyB0aGF0IG1vcmUgb2YgdGhpcyBjb2Rl
IGlzIHNoYXJlZCwgdGhpcyBwYXRjaCB0ZWFzZXMgCisgICAgICAgIG1faGFzRm9jdXNlZER1ZVRv
VXNlckludGVyYWN0aW9uIG91dCBpbnRvIHR3byB2YXJpYWJsZXMuIEkgcmVhbGl6ZWQgdGhhdCBp
dCAKKyAgICAgICAgd2FzIGJlaW5nIHVzZWQgdG8gbWVhbiB0d28gc2xpZ2h0bHkgZGlmZmVyZW50
IHRoaW5ncyBvbiBNYWMgYW5kIGlPUywgd2hpY2ggCisgICAgICAgIHdhcyB2ZXJ5IGNvbmZ1c2lu
Zy4gTm93IHdlIGhhdmUgbV9pc0Fzc2lzdGluZ05vZGVEdWVUb1VzZXJJbnRlcmFjdGlvbiB0byAK
KyAgICAgICAgcmVwcmVzZW50IHRoZSB3YXkgaU9TIHdhcyB1c2luZyB0aGUgdmFyaWFibGUsIGFu
ZCB3ZSBoYXZlIAorICAgICAgICBtX2hhc0V2ZXJGb2N1c2VkRWxlbWVudER1ZVRvVXNlckludGVy
YWN0aW9uU2luY2VQYWdlVHJhbnNpdGlvbiB0byByZXByZXNlbnQgCisgICAgICAgIGhvdyBNYWMg
d2FzIHVzaW5nIHRoZSB2YXJpYWJsZS4gVGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkgYmVoYXZpb3Ig
Y2hhbmdlcyB3aXRoIAorICAgICAgICB0aGlzIHJlLW5hbWUsIGp1c3QgYWRkZWQgY2xhcml0eS4K
KworICAgICAgICBXZWJWaWV3SW1wbCBoYXMgYSBuZXcgbWVtYmVyIHZhcmlhYmxlIG1fZWRpdGFi
bGVFbGVtZW50SXNGb2N1c2VkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OnNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCk6CisKKyAg
ICAgICAgUGlwZSB0aGUgbmV3IHNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCBtZXNzYWdlIHRv
IFdlYlZpZXdJbXBsLgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6c2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OnNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCk6CisKKyAgICAgICAgZWxl
bWVudERpZEZvY3VzKCkgYW5kIGVsZW1lbnREaWRCbHVyKCkgYXJlIG5vdyBQTEFURk9STShDT0NP
QSkgaW5zdGVhZCBvZiAKKyAgICAgICAgUExBVEZPUk0oSU9TKQorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQ2hyb21lQ2xpZW50OjplbGVtZW50RGlkRm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
aHJvbWVDbGllbnQ6OmVsZW1lbnREaWRCbHVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYkNocm9tZUNsaWVudElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q2hyb21lQ2xpZW50OjplbGVtZW50RGlkRm9jdXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJDaHJvbWVDbGllbnQ6OmVsZW1lbnREaWRCbHVyKTogRGVsZXRlZC4KKworICAgICAgICBt
X2hhc1BlbmRpbmdCbHVyTm90aWZpY2F0aW9uIGlzIG5vIGxvbmdlciBpT1Mtb25seS4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisKKyAgICAgICAgVXNlIG91ciB0
d28gbmV3IGJvb2xzIG1faXNBc3Npc3RpbmdOb2RlRHVlVG9Vc2VySW50ZXJhY3Rpb24gYW5kIAor
ICAgICAgICBtX2hhc0V2ZXJGb2N1c2VkRWxlbWVudER1ZVRvVXNlckludGVyYWN0aW9uU2luY2VQ
YWdlVHJhbnNpdGlvbiAKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkU3RhcnRQYWdlVHJh
bnNpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZENoYW5nZVNlbGVjdGlvbik6
CisKKyAgICAgICAgVGhlc2UgZnVuY3Rpb25zIGFyZSBhbGwgbmV3bHkgY3Jvc3MtcGxhdGZvcm0u
IFRoZSBNZXNzYWdlcyB0aGV5IHNlbmQgYXJlIAorICAgICAgICBzdGlsbCBwbGF0Zm9ybS1zcGVj
aWZpYywgYnV0IG90aGVyd2lzZSB0aGUgbG9naWMgaXMgdGhlIHNhbWUuIFdlIAorICAgICAgICBk
aXNwYXRjaF9hc3luYyB0aGUgYmx1ciBtZXNzYWdlcyBzbyB0aGF0IHRoZSBVSSBwcm9jZXNzIGZl
YXR1cmVzIHdvbuKAmXQgYmUgCisgICAgICAgIGZsYXNoeSB3aGVuIHRoZSB1c2VyIGlzIHRhcHBp
bmcsIHRhYmJpbmcsIG9yIGNsaWNraW5nIHRocm91Z2ggZm9ybSBmaWVsZHMuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnJlc2V0QXNzaXN0ZWROb2RlRm9yRnJhbWUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjplbGVtZW50RGlkRm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjplbGVtZW50RGlkQmx1cik6CisKKyAgICAgICAgcmVzZXRBc3Npc3RlZE5vZGVGb3JGcmFtZSgp
IGlzIG5vIGxvbmdlciBpT1Mtb25seS4gCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZENv
bW1pdExvYWQpOgorCisgICAgICAgIE1vdmUgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgYXJvdW5k
IHNvIHRoYXQgdGhleSBhcmUgZGVmaW5lZCBmb3IgdGhlIHJpZ2h0IAorICAgICAgICBwbGF0Zm9y
bSwgYW5kIGRlY2xhcmUgdGhlIHR3byBuZXcgYm9vbHMgaW4gcGxhY2Ugb2YgdGhlIG9sZCBvbmUu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKworICAgICAgICBUaGVz
ZSBmdW5jdGlvbnMgYXJlIG5vdyBkZWZpbmVkIGluIFdlYlBhZ2UuY3BwCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpyZXNldEFzc2lzdGVkTm9kZUZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6ZWxlbWVudERpZEZvY3VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZWxlbWVudERpZEJsdXIpOiBEZWxldGVkLgorCiAyMDE2LTA3LTE1ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkZWQgYSBtYWtlUmVmPFQ+
IGhlbHBlcgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCShyZXZpc2lv
biAyMDMzMDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzUsNiArMjc1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3Rlckluc2VydGlvblVuZG9Hcm91cGluZygpID0gMDsKICNlbmRpZiAvLyBVU0UoSU5TRVJU
SU9OX1VORE9fR1JPVVBJTkcpCiAjZW5kaWYgLy8gVVNFKEFQUEtJVCkKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGJvb2wpID0gMDsKICNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpCiAKICNpZiBQTEFURk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjAzMzA4KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5NTUsNiAr
NTk1NSwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzCiB9CiAj
ZW5kaWYKIAordm9pZCBXZWJQYWdlUHJveHk6OnNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZChi
b29sIGVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCkKK3sKKyAgICBtX3BhZ2VDbGllbnQuc2V0RWRp
dGFibGVFbGVtZW50SXNGb2N1c2VkKGVkaXRhYmxlRWxlbWVudElzRm9jdXNlZCk7Cit9CisKICNl
bmRpZiAvLyBQTEFURk9STShNQUMpCiAKICNpZiBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDIwMzMwOCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
MTQxOSw2ICsxNDE5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVy
bmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KTsKICAgICB2b2lkIGRpY3RhdGlvbkFs
dGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0LCBWZWN0b3I8U3RyaW5nPiYgcmVz
dWx0KTsKICNlbmRpZgorCisgICAgdm9pZCBzZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoYm9v
bCk7CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiAjaWYgUExBVEZPUk0oSU9TKQpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CShyZXZpc2lvbiAyMDMzMDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNDIsNiArMzQyLDggQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaXNtaXNzQ29ycmVjdGlvblBhbmVsKGludDMyX3Qg
cmVhc29uKQogICAgIERpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKGludDMyX3QgcmVhc29uKSAt
PiAoU3RyaW5nIHJlc3VsdCkKICAgICBSZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGludDMy
X3QgcmVzcG9uc2VUeXBlLCBTdHJpbmcgcmVwbGFjZWRTdHJpbmcsIFN0cmluZyByZXBsYWNlbWVu
dFN0cmluZyk7CisKKyAgICBTZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoYm9vbCBlZGl0YWJs
ZUVsZW1lbnRJc0ZvY3VzZWQpCiAjZW5kaWYKIAogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJ
VkVTKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
LmgJKHJldmlzaW9uIDIwMzMwOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzIsNiArMjcyLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgdXBkYXRlRm9udFBhbmVsSWZOZWVkZWQoKTsKICAgICB2b2lkIGNoYW5nZUZvbnRG
cm9tRm9udFBhbmVsKCk7CiAgICAgYm9vbCB2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtKGlkIDxO
U1ZhbGlkYXRlZFVzZXJJbnRlcmZhY2VJdGVtPik7CisgICAgdm9pZCBzZXRFZGl0YWJsZUVsZW1l
bnRJc0ZvY3VzZWQoYm9vbCk7CiAKICAgICB2b2lkIHN0YXJ0U3BlYWtpbmcoKTsKICAgICB2b2lk
IHN0b3BTcGVha2luZyhpZCk7CkBAIC02NDcsNiArNjQ4LDcgQEAgcHJpdmF0ZToKICAgICBOU1Jh
bmdlIG1fc29mdFNwYWNlUmFuZ2UgeyBOU05vdEZvdW5kLCAwIH07CiAgICAgYm9vbCBtX2lzSGFu
ZGxpbmdBY2NlcHRlZENhbmRpZGF0ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3JlcXVpcmVzVXNl
ckFjdGlvbkZvckVkaXRpbmdDb250cm9sc01hbmFnZXIgeyBmYWxzZSB9OworICAgIGJvb2wgbV9l
ZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQgeyBmYWxzZSB9OwogfTsKICAgICAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQkocmV2aXNpb24gMjAzMzA4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NTMsNiArNDUzLDExIEBA
IHZvaWQgV2ViVmlld0ltcGw6OndlYlZpZXdJbXBsQWRkaXRpb25zV2kKIHsKIH0KIAordm9pZCBX
ZWJWaWV3SW1wbDo6c2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGJvb2wgZWRpdGFibGVFbGVt
ZW50SXNGb2N1c2VkKQoreworICAgIG1fZWRpdGFibGVFbGVtZW50SXNGb2N1c2VkID0gZWRpdGFi
bGVFbGVtZW50SXNGb2N1c2VkOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKICNlbmRpZiAv
LyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCAmJiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAyMDMzMDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEs
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBk
aWN0YXRpb25Db250ZXh0KSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25B
bHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgb3ZlcnJpZGU7CiAjZW5kaWYK
KyAgICB2b2lkIHNldEVkaXRhYmxlRWxlbWVudElzRm9jdXNlZChib29sKSBvdmVycmlkZTsKKwog
I2lmIFVTRShJTlNFUlRJT05fVU5ET19HUk9VUElORykKICAgICB2b2lkIHJlZ2lzdGVySW5zZXJ0
aW9uVW5kb0dyb3VwaW5nKCkgb3ZlcnJpZGU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQkocmV2aXNpb24gMjAzMzA4KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjIxLDYgKzYyMSwxMSBAQCBWZWN0b3I8U3RyaW5nPiBQYWdlQ2xpZW50SW1w
bDo6ZGljdGF0aW9uCiB9CiAjZW5kaWYKIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0RWRpdGFi
bGVFbGVtZW50SXNGb2N1c2VkKGJvb2wgZWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKQoreworICAg
IG1faW1wbC0+c2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGVkaXRhYmxlRWxlbWVudElzRm9j
dXNlZCk7Cit9CisKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAKIFdlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHlDbGllbnQmIFBhZ2VDbGllbnRJbXBsOjpmdWxsU2NyZWVuTWFuYWdlclByb3h5
Q2xpZW50KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJldmlzaW9uIDIwMzMwOCkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDYgKzE2OSwxNiBAQCB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6dW5mb2N1cygpCiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKK3ZvaWQgV2ViQ2hy
b21lQ2xpZW50OjplbGVtZW50RGlkRm9jdXMoY29uc3QgV2ViQ29yZTo6Tm9kZSogbm9kZSkKK3sK
KyAgICBtX3BhZ2UtPmVsZW1lbnREaWRGb2N1cyhjb25zdF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihu
b2RlKSk7Cit9CisKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjplbGVtZW50RGlkQmx1cihjb25zdCBX
ZWJDb3JlOjpOb2RlKiBub2RlKQoreworICAgIG1fcGFnZS0+ZWxlbWVudERpZEJsdXIoY29uc3Rf
Y2FzdDxXZWJDb3JlOjpOb2RlKj4obm9kZSkpOworfQorCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6
bWFrZUZpcnN0UmVzcG9uZGVyKCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6TWFrZUZpcnN0UmVzcG9uZGVyKCkpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CShyZXZpc2lvbiAyMDMzMDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsOCArMjM2LDYg
QEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZvaWQgZWxlbWVu
dERpZEZvY3VzKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKSBvdmVycmlkZTsKLSAgICB2b2lkIGVsZW1l
bnREaWRCbHVyKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKSBvdmVycmlkZTsKICAgICB2b2lkIGVsZW1l
bnREaWRSZWZvY3VzKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKSBvdmVycmlkZTsKICNlbmRpZgogCkBA
IC0yNTksNiArMjU3LDkgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgdm9pZCBlbGVtZW50RGlkRm9jdXMoY29uc3QgV2ViQ29yZTo6Tm9kZSopIG92ZXJyaWRl
OworICAgIHZvaWQgZWxlbWVudERpZEJsdXIoY29uc3QgV2ViQ29yZTo6Tm9kZSopIG92ZXJyaWRl
OworCiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKSBvdmVycmlkZTsKICNlbmRpZgogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJDaHJv
bWVDbGllbnRJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9pb3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCShyZXZpc2lvbiAyMDMzMDgp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJDaHJv
bWVDbGllbnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE2ICs0NCw2IEBAIHZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjpkaWRQcmV2ZW50RGVmYXVsdEYKIH0KICNlbmRpZgogCi12b2lkIFdlYkNo
cm9tZUNsaWVudDo6ZWxlbWVudERpZEZvY3VzKGNvbnN0IFdlYkNvcmU6Ok5vZGUqIG5vZGUpCi17
Ci0gICAgbV9wYWdlLT5lbGVtZW50RGlkRm9jdXMoY29uc3RfY2FzdDxXZWJDb3JlOjpOb2RlKj4o
bm9kZSkpOwotfQotCi12b2lkIFdlYkNocm9tZUNsaWVudDo6ZWxlbWVudERpZEJsdXIoY29uc3Qg
V2ViQ29yZTo6Tm9kZSogbm9kZSkKLXsKLSAgICBtX3BhZ2UtPmVsZW1lbnREaWRCbHVyKGNvbnN0
X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KG5vZGUpKTsKLX0KLQogdm9pZCBXZWJDaHJvbWVDbGllbnQ6
OmVsZW1lbnREaWRSZWZvY3VzKGNvbnN0IFdlYkNvcmU6Ok5vZGUqIG5vZGUpCiB7CiAgICAgZWxl
bWVudERpZEZvY3VzKG5vZGUpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjAzMzA4KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElHZW9tZXRyeS5oIgog
I2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkFzc2lzdGVkTm9kZUluZm9ybWF0aW9u
LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRyYWdDb250cm9sbGVy
QWN0aW9uLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWEuaCIKQEAgLTM0OCwxMyArMzQ5LDEzIEBA
IFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCAKICNpZiBFTkFCTEUoQ09O
VEVYVF9NRU5VUykKICAgICAsIG1faXNTaG93aW5nQ29udGV4dE1lbnUoZmFsc2UpCiAjZW5kaWYK
KyAgICAsIG1faGFzUGVuZGluZ0JsdXJOb3RpZmljYXRpb24oZmFsc2UpCiAjaWYgUExBVEZPUk0o
SU9TKQogICAgICwgbV9zZWxlY3Rpb25BbmNob3IoU3RhcnQpCiAgICAgLCBtX2hhc1JlY2VpdmVk
VmlzaWJsZUNvbnRlbnRSZWN0c0FmdGVyRGlkQ29tbWl0TG9hZChmYWxzZSkKICAgICAsIG1fc2Nh
bGVXYXNTZXRCeVVJUHJvY2VzcyhmYWxzZSkKICAgICAsIG1fdXNlckhhc0NoYW5nZWRQYWdlU2Nh
bGVGYWN0b3IoZmFsc2UpCiAgICAgLCBtX2hhc1N0YWJsZVBhZ2VTY2FsZUZhY3Rvcih0cnVlKQot
ICAgICwgbV9oYXNQZW5kaW5nQmx1ck5vdGlmaWNhdGlvbihmYWxzZSkKICAgICAsIG1fdXNlVGVz
dGluZ1ZpZXdwb3J0Q29uZmlndXJhdGlvbihmYWxzZSkKICAgICAsIG1faXNJblN0YWJsZVN0YXRl
KHRydWUpCiAgICAgLCBtX2ZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKHBhcmFtZXRlcnMuaWdub3Jl
c1ZpZXdwb3J0U2NhbGVMaW1pdHMpCkBAIC0yNjA4LDEyICsyNjA5LDEzIEBAIHZvaWQgV2ViUGFn
ZTo6ZGlkU3RhcnRQYWdlVHJhbnNpdGlvbigpCiAgICAgbV9kcmF3aW5nQXJlYS0+c2V0TGF5ZXJU
cmVlU3RhdGVJc0Zyb3plbih0cnVlKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBib29sIGhh
c1ByZXZpb3VzbHlGb2N1c2VkRHVlVG9Vc2VySW50ZXJhY3Rpb24gPSBtX2hhc0ZvY3VzZWREdWVU
b1VzZXJJbnRlcmFjdGlvbjsKKyAgICBib29sIGhhc1ByZXZpb3VzbHlGb2N1c2VkRHVlVG9Vc2Vy
SW50ZXJhY3Rpb24gPSBtX2hhc0V2ZXJGb2N1c2VkRWxlbWVudER1ZVRvVXNlckludGVyYWN0aW9u
U2luY2VQYWdlVHJhbnNpdGlvbjsKICNlbmRpZgotICAgIG1faGFzRm9jdXNlZER1ZVRvVXNlcklu
dGVyYWN0aW9uID0gZmFsc2U7CisgICAgbV9oYXNFdmVyRm9jdXNlZEVsZW1lbnREdWVUb1VzZXJJ
bnRlcmFjdGlvblNpbmNlUGFnZVRyYW5zaXRpb24gPSBmYWxzZTsKKyAgICBtX2lzQXNzaXN0aW5n
Tm9kZUR1ZVRvVXNlckludGVyYWN0aW9uID0gZmFsc2U7CiAjaWYgUExBVEZPUk0oTUFDKQogICAg
IGlmIChoYXNQcmV2aW91c2x5Rm9jdXNlZER1ZVRvVXNlckludGVyYWN0aW9uKQotICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldEhhc0hhZFNlbGVjdGlvbkNoYW5nZXNGcm9t
VXNlckludGVyYWN0aW9uKG1faGFzRm9jdXNlZER1ZVRvVXNlckludGVyYWN0aW9uKSk7CisgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0SGFzSGFkU2VsZWN0aW9uQ2hhbmdl
c0Zyb21Vc2VySW50ZXJhY3Rpb24obV9oYXNFdmVyRm9jdXNlZEVsZW1lbnREdWVUb1VzZXJJbnRl
cmFjdGlvblNpbmNlUGFnZVRyYW5zaXRpb24pKTsKICNlbmRpZgogfQogCkBAIC00NzUzLDEwICs0
NzU1LDExIEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ2hhbmdlU2VsZWN0aW9uKCkKICAgICBtX2lzRWRp
dG9yU3RhdGVNaXNzaW5nUG9zdExheW91dERhdGEgPSBlZGl0b3JTdGF0ZS5pc01pc3NpbmdQb3N0
TGF5b3V0RGF0YTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBib29sIGhhc1ByZXZpb3VzbHlG
b2N1c2VkRHVlVG9Vc2VySW50ZXJhY3Rpb24gPSBtX2hhc0ZvY3VzZWREdWVUb1VzZXJJbnRlcmFj
dGlvbjsKLSAgICBtX2hhc0ZvY3VzZWREdWVUb1VzZXJJbnRlcmFjdGlvbiB8PSBtX3VzZXJJc0lu
dGVyYWN0aW5nOwotICAgIGlmICghaGFzUHJldmlvdXNseUZvY3VzZWREdWVUb1VzZXJJbnRlcmFj
dGlvbiAmJiBtX2hhc0ZvY3VzZWREdWVUb1VzZXJJbnRlcmFjdGlvbikKLSAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRIYXNIYWRTZWxlY3Rpb25DaGFuZ2VzRnJvbVVzZXJJ
bnRlcmFjdGlvbihtX2hhc0ZvY3VzZWREdWVUb1VzZXJJbnRlcmFjdGlvbikpOworICAgIGJvb2wg
aGFzUHJldmlvdXNseUZvY3VzZWREdWVUb1VzZXJJbnRlcmFjdGlvbiA9IG1faGFzRXZlckZvY3Vz
ZWRFbGVtZW50RHVlVG9Vc2VySW50ZXJhY3Rpb25TaW5jZVBhZ2VUcmFuc2l0aW9uOworICAgIG1f
aGFzRXZlckZvY3VzZWRFbGVtZW50RHVlVG9Vc2VySW50ZXJhY3Rpb25TaW5jZVBhZ2VUcmFuc2l0
aW9uIHw9IG1fdXNlcklzSW50ZXJhY3Rpbmc7CisKKyAgICBpZiAoIWhhc1ByZXZpb3VzbHlGb2N1
c2VkRHVlVG9Vc2VySW50ZXJhY3Rpb24gJiYgbV9oYXNFdmVyRm9jdXNlZEVsZW1lbnREdWVUb1Vz
ZXJJbnRlcmFjdGlvblNpbmNlUGFnZVRyYW5zaXRpb24pCisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U2V0SGFzSGFkU2VsZWN0aW9uQ2hhbmdlc0Zyb21Vc2VySW50ZXJhY3Rp
b24obV9oYXNFdmVyRm9jdXNlZEVsZW1lbnREdWVUb1VzZXJJbnRlcmFjdGlvblNpbmNlUGFnZVRy
YW5zaXRpb24pKTsKIAogICAgIC8vIEFiYW5kb24gdGhlIGN1cnJlbnQgaW5saW5lIGlucHV0IHNl
c3Npb24gaWYgc2VsZWN0aW9uIGNoYW5nZWQgZm9yIGFueSBvdGhlciByZWFzb24gYnV0IGFuIGlu
cHV0IG1ldGhvZCBkaXJlY3QgYWN0aW9uLgogICAgIC8vIEZJWE1FOiBUaGlzIGxvZ2ljIHNob3Vs
ZCBiZSBpbiBXZWJDb3JlLgpAQCAtNDc3Niw2ICs0Nzc5LDY4IEBAIHZvaWQgV2ViUGFnZTo6ZGlk
Q2hhbmdlU2VsZWN0aW9uKCkKICNlbmRpZgogfQogCit2b2lkIFdlYlBhZ2U6OnJlc2V0QXNzaXN0
ZWROb2RlRm9yRnJhbWUoV2ViRnJhbWUqIGZyYW1lKQoreworICAgIGlmICghbV9hc3Npc3RlZE5v
ZGUpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9hc3Npc3RlZE5vZGUtPmRvY3VtZW50KCku
ZnJhbWUoKSA9PSBmcmFtZS0+Y29yZUZyYW1lKCkpIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RvcEFzc2lzdGluZ05vZGUoKSk7Cisj
ZWxpZiBQTEFURk9STShNQUMpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
U2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGZhbHNlKSk7CisjZW5kaWYKKyAgICAgICAgbV9h
c3Npc3RlZE5vZGUgPSBudWxscHRyOworICAgIH0KK30KKwordm9pZCBXZWJQYWdlOjplbGVtZW50
RGlkRm9jdXMoV2ViQ29yZTo6Tm9kZSogbm9kZSkKK3sKKyAgICBpZiAobV9hc3Npc3RlZE5vZGUg
PT0gbm9kZSAmJiBtX2lzQXNzaXN0aW5nTm9kZUR1ZVRvVXNlckludGVyYWN0aW9uKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShXZWJDb3JlOjpIVE1MTmFtZXM6
OnNlbGVjdFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShXZWJDb3JlOjpIVE1MTmFtZXM6OmlucHV0
VGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKFdlYkNvcmU6OkhUTUxOYW1lczo6dGV4dGFyZWFUYWcp
IHx8IG5vZGUtPmhhc0VkaXRhYmxlU3R5bGUoKSkgeworICAgICAgICBtX2Fzc2lzdGVkTm9kZSA9
IG5vZGU7CisgICAgICAgIG1faXNBc3Npc3RpbmdOb2RlRHVlVG9Vc2VySW50ZXJhY3Rpb24gfD0g
bV91c2VySXNJbnRlcmFjdGluZzsKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgQXNzaXN0
ZWROb2RlSW5mb3JtYXRpb24gaW5mb3JtYXRpb247CisgICAgICAgIGdldEFzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uKGluZm9ybWF0aW9uKTsKKyAgICAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2Vy
RGF0YTsKKworICAgICAgICBtX2Zvcm1DbGllbnQtPndpbGxCZWdpbklucHV0U2Vzc2lvbih0aGlz
LCBkb3duY2FzdDxFbGVtZW50Pihub2RlKSwgV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKm5vZGUt
PmRvY3VtZW50KCkuZnJhbWUoKSksIHVzZXJEYXRhLCBtX3VzZXJJc0ludGVyYWN0aW5nKTsKKwor
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0YXJ0QXNzaXN0aW5nTm9kZShp
bmZvcm1hdGlvbiwgbV91c2VySXNJbnRlcmFjdGluZywgbV9oYXNQZW5kaW5nQmx1ck5vdGlmaWNh
dGlvbiwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1Rv
SGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CisjZWxpZiBQTEFURk9STShNQUMpCisg
ICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKFdlYkNvcmU6OkhUTUxOYW1lczo6c2VsZWN0VGFn
KSkKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0RWRpdGFibGVF
bGVtZW50SXNGb2N1c2VkKGZhbHNlKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKHRydWUp
KTsKKyNlbmRpZgorICAgICAgICBtX2hhc1BlbmRpbmdCbHVyTm90aWZpY2F0aW9uID0gZmFsc2U7
CisgICAgfQorfQorCit2b2lkIFdlYlBhZ2U6OmVsZW1lbnREaWRCbHVyKFdlYkNvcmU6Ok5vZGUq
IG5vZGUpCit7CisgICAgaWYgKG1fYXNzaXN0ZWROb2RlID09IG5vZGUpIHsKKyAgICAgICAgbV9o
YXNQZW5kaW5nQmx1ck5vdGlmaWNhdGlvbiA9IHRydWU7CisgICAgICAgIFJlZlB0cjxXZWJQYWdl
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0
ZWRUaGlzXSB7CisgICAgICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9oYXNQZW5kaW5nQmx1
ck5vdGlmaWNhdGlvbikgeworI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0b3BBc3Npc3RpbmdOb2Rl
KCkpOworI2VsaWYgUExBVEZPUk0oTUFDKQorICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2Vk
KGZhbHNlKSk7CisjZW5kaWYKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByb3RlY3RlZFRo
aXMtPm1faGFzUGVuZGluZ0JsdXJOb3RpZmljYXRpb24gPSBmYWxzZTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgbV9pc0Fzc2lzdGluZ05vZGVEdWVUb1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlOwor
ICAgICAgICBtX2Fzc2lzdGVkTm9kZSA9IG51bGxwdHI7CisgICAgfQorfQorCiB2b2lkIFdlYlBh
Z2U6OnNlbmRQb3N0TGF5b3V0RWRpdG9yU3RhdGVJZk5lZWRlZCgpCiB7CiAgICAgaWYgKCFtX2lz
RWRpdG9yU3RhdGVNaXNzaW5nUG9zdExheW91dERhdGEpCkBAIC00OTE0LDggKzQ5NzksOCBAQCB2
b2lkIFdlYlBhZ2U6OmRpZENvbW1pdExvYWQoV2ViRnJhbWUqIGZyCiAjaWYgUExBVEZPUk0oSU9T
KQogICAgIGZyYW1lLT5zZXRGaXJzdExheWVyVHJlZVRyYW5zYWN0aW9uSURBZnRlckRpZENvbW1p
dExvYWQoZG93bmNhc3Q8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE+KCptX2RyYXdpbmdBcmVh
KS5uZXh0VHJhbnNhY3Rpb25JRCgpKTsKICAgICBjYW5jZWxQb3RlbnRpYWxUYXBJbkZyYW1lKCpm
cmFtZSk7Ci0gICAgcmVzZXRBc3Npc3RlZE5vZGVGb3JGcmFtZShmcmFtZSk7CiAjZW5kaWYKKyAg
ICByZXNldEFzc2lzdGVkTm9kZUZvckZyYW1lKGZyYW1lKTsKIAogICAgIGlmICghZnJhbWUtPmlz
TWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjAzMzA4KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDk2
LDYgKzQ5NiwxMCBAQCBwdWJsaWM6CiAgICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyJiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKSB7IHJldHVybiBtX3VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsgfQogI2VuZGlmCiAKKyAgICB2b2lkIGVsZW1l
bnREaWRGb2N1cyhXZWJDb3JlOjpOb2RlKik7CisgICAgdm9pZCBlbGVtZW50RGlkQmx1cihXZWJD
b3JlOjpOb2RlKik7CisgICAgdm9pZCByZXNldEFzc2lzdGVkTm9kZUZvckZyYW1lKFdlYkZyYW1l
Kik7CisKICNpZiBQTEFURk9STShJT1MpCiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNjcmVlblNp
emUoKSBjb25zdDsKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgYXZhaWxhYmxlU2NyZWVuU2l6ZSgp
IGNvbnN0OwpAQCAtNTM4LDggKzU0Miw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVNlbGVj
dGlvbldpdGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgaXNJbnRl
cmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQg
dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFz
c2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAKLSAgICB2b2lkIGVsZW1lbnREaWRG
b2N1cyhXZWJDb3JlOjpOb2RlKik7Ci0gICAgdm9pZCBlbGVtZW50RGlkQmx1cihXZWJDb3JlOjpO
b2RlKik7CiAgICAgdm9pZCByZXF1ZXN0RGljdGF0aW9uQ29udGV4dCh1aW50NjRfdCBjYWxsYmFj
a0lEKTsKICAgICB2b2lkIHJlcGxhY2VEaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0
LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpOwogICAgIHZvaWQgcmVwbGFjZVNlbGVjdGVkVGV4dChj
b25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCk7CkBAIC01NTcsNyAr
NTU5LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXNzaXN0ZWROb2RlVmFsdWUoY29uc3QgU3Ry
aW5nJik7CiAgICAgdm9pZCBzZXRBc3Npc3RlZE5vZGVWYWx1ZUFzTnVtYmVyKGRvdWJsZSk7CiAg
ICAgdm9pZCBzZXRBc3Npc3RlZE5vZGVTZWxlY3RlZEluZGV4KHVpbnQzMl90IGluZGV4LCBib29s
IGFsbG93TXVsdGlwbGVTZWxlY3Rpb24pOwotICAgIHZvaWQgcmVzZXRBc3Npc3RlZE5vZGVGb3JG
cmFtZShXZWJGcmFtZSopOwogICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdEZvckVsZW1lbnRBdElu
dGVyYWN0aW9uTG9jYXRpb24oKTsKICAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbkFwcGVhcmFuY2Uo
KTsKICAgICB2b2lkIGdldFNlbGVjdGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJhY2tJRCk7CkBA
IC0xMzg4LDE0ICsxMzg5LDE3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2F1dG9TaXppbmdTaG91
bGRFeHBhbmRUb1ZpZXdIZWlnaHQ7CiAKICAgICBib29sIG1fdXNlcklzSW50ZXJhY3Rpbmc7Ci0g
ICAgYm9vbCBtX2hhc0ZvY3VzZWREdWVUb1VzZXJJbnRlcmFjdGlvbiB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX2lzQXNzaXN0aW5nTm9kZUR1ZVRvVXNlckludGVyYWN0aW9uIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1faGFzRXZlckZvY3VzZWRFbGVtZW50RHVlVG9Vc2VySW50ZXJhY3Rpb25TaW5jZVBh
Z2VUcmFuc2l0aW9uIHsgZmFsc2UgfTsKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAg
IGJvb2wgbV9pc1Nob3dpbmdDb250ZXh0TWVudTsKICNlbmRpZgorCisgICAgUmVmUHRyPFdlYkNv
cmU6Ok5vZGU+IG1fYXNzaXN0ZWROb2RlOworICAgIGJvb2wgbV9oYXNQZW5kaW5nQmx1ck5vdGlm
aWNhdGlvbjsKICAgICAKICNpZiBQTEFURk9STShJT1MpCi0gICAgUmVmUHRyPFdlYkNvcmU6Ok5v
ZGU+IG1fYXNzaXN0ZWROb2RlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4gbV9jdXJyZW50
V29yZFJhbmdlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpOb2RlPiBtX2ludGVyYWN0aW9uTm9kZTsK
ICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX2xhc3RJbnRlcmFjdGlvbkxvY2F0aW9uOwpAQCAtMTQx
NCw3ICsxNDE4LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2NhbGVXYXNTZXRCeVVJUHJvY2Vz
czsKICAgICBib29sIG1fdXNlckhhc0NoYW5nZWRQYWdlU2NhbGVGYWN0b3I7CiAgICAgYm9vbCBt
X2hhc1N0YWJsZVBhZ2VTY2FsZUZhY3RvcjsKLSAgICBib29sIG1faGFzUGVuZGluZ0JsdXJOb3Rp
ZmljYXRpb247CiAgICAgYm9vbCBtX3VzZVRlc3RpbmdWaWV3cG9ydENvbmZpZ3VyYXRpb247CiAg
ICAgYm9vbCBtX2lzSW5TdGFibGVTdGF0ZTsKICAgICBib29sIG1fZm9yY2VBbHdheXNVc2VyU2Nh
bGFibGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCShyZXZpc2lvbiAyMDMzMDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2
MzIsNTAgKzI2MzIsNiBAQCB2b2lkIFdlYlBhZ2U6OmdldEFzc2lzdGVkTm9kZUluZm9ybWF0aW9u
CiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OnJlc2V0QXNzaXN0ZWROb2RlRm9yRnJhbWUoV2Vi
RnJhbWUqIGZyYW1lKQotewotICAgIGlmICghbV9hc3Npc3RlZE5vZGUpCi0gICAgICAgIHJldHVy
bjsKLSAgICBpZiAobV9hc3Npc3RlZE5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKSA9PSBmcmFtZS0+
Y29yZUZyYW1lKCkpIHsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdG9w
QXNzaXN0aW5nTm9kZSgpKTsKLSAgICAgICAgbV9hc3Npc3RlZE5vZGUgPSBudWxscHRyOwotICAg
IH0KLX0KLQotdm9pZCBXZWJQYWdlOjplbGVtZW50RGlkRm9jdXMoV2ViQ29yZTo6Tm9kZSogbm9k
ZSkKLXsKLSAgICBpZiAobV9hc3Npc3RlZE5vZGUgPT0gbm9kZSAmJiBtX2hhc0ZvY3VzZWREdWVU
b1VzZXJJbnRlcmFjdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG5vZGUtPmhhc1Rh
Z05hbWUoV2ViQ29yZTo6SFRNTE5hbWVzOjpzZWxlY3RUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUo
V2ViQ29yZTo6SFRNTE5hbWVzOjppbnB1dFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShXZWJDb3Jl
OjpIVE1MTmFtZXM6OnRleHRhcmVhVGFnKSB8fCBub2RlLT5oYXNFZGl0YWJsZVN0eWxlKCkpIHsK
LSAgICAgICAgbV9hc3Npc3RlZE5vZGUgPSBub2RlOwotICAgICAgICBtX2hhc0ZvY3VzZWREdWVU
b1VzZXJJbnRlcmFjdGlvbiB8PSBtX3VzZXJJc0ludGVyYWN0aW5nOwotICAgICAgICBBc3Npc3Rl
ZE5vZGVJbmZvcm1hdGlvbiBpbmZvcm1hdGlvbjsKLSAgICAgICAgZ2V0QXNzaXN0ZWROb2RlSW5m
b3JtYXRpb24oaW5mb3JtYXRpb24pOwotICAgICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJE
YXRhOwotCi0gICAgICAgIG1fZm9ybUNsaWVudC0+d2lsbEJlZ2luSW5wdXRTZXNzaW9uKHRoaXMs
IGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpLCBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqbm9kZS0+
ZG9jdW1lbnQoKS5mcmFtZSgpKSwgdXNlckRhdGEsIG1fdXNlcklzSW50ZXJhY3RpbmcpOwotCi0g
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RhcnRBc3Npc3RpbmdOb2RlKGlu
Zm9ybWF0aW9uLCBtX3VzZXJJc0ludGVyYWN0aW5nLCBtX2hhc1BlbmRpbmdCbHVyTm90aWZpY2F0
aW9uLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9I
YW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKLSAgICAgICAgbV9oYXNQZW5kaW5nQmx1
ck5vdGlmaWNhdGlvbiA9IGZhbHNlOwotICAgIH0KLX0KLQotdm9pZCBXZWJQYWdlOjplbGVtZW50
RGlkQmx1cihXZWJDb3JlOjpOb2RlKiBub2RlKQotewotICAgIGlmIChtX2Fzc2lzdGVkTm9kZSA9
PSBub2RlKSB7Ci0gICAgICAgIG1faGFzUGVuZGluZ0JsdXJOb3RpZmljYXRpb24gPSB0cnVlOwot
ICAgICAgICBSZWZQdHI8V2ViUGFnZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICAgICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXNdIHsK
LSAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX2hhc1BlbmRpbmdCbHVyTm90aWZpY2F0
aW9uKQotICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U3RvcEFzc2lzdGluZ05vZGUoKSk7Ci0gICAgICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5tX2hhc1BlbmRpbmdCbHVyTm90aWZpY2F0aW9uID0gZmFsc2U7Ci0gICAgICAgIH0pOwotICAg
ICAgICBtX2hhc0ZvY3VzZWREdWVUb1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlOwotICAgICAgICBt
X2Fzc2lzdGVkTm9kZSA9IG51bGxwdHI7Ci0gICAgfQotfQotCiB2b2lkIFdlYlBhZ2U6OnNldFZp
ZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSkKIHsKICAgICBpZiAobV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0TWluaW11bUxheW91dFNp
emUoc2l6ZSkpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>