<?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>180916</bug_id>
          
          <creation_ts>2017-12-17 09:49:47 -0800</creation_ts>
          <short_desc>[JSC] Use IsoSpace for JSWeakMap and JSWeakSet to use finalizeUnconditionally</short_desc>
          <delta_ts>2017-12-17 21:27:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1382601</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-17 09:49:47 -0800</bug_when>
    <thetext>[JSC] Use IsoSpace for JSWeakMap and JSWeakSet to use finalizeUnconditionally</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382602</commentid>
    <comment_count>1</comment_count>
      <attachid>329604</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-17 09:56:25 -0800</bug_when>
    <thetext>Created attachment 329604
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382625</commentid>
    <comment_count>2</comment_count>
      <attachid>329615</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-17 11:56:47 -0800</bug_when>
    <thetext>Created attachment 329615
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382633</commentid>
    <comment_count>3</comment_count>
      <attachid>329615</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-12-17 12:17:52 -0800</bug_when>
    <thetext>Comment on attachment 329615
Patch

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

I see the performance benefit of this.

What is the performance cost? Will this use more memory or reduce locality of reference in a way that will affect speed of execution?

Is there a security benefit or a security cost?

&gt; Source/JavaScriptCore/ChangeLog:12
&gt; +        Currently we still have WeakReferenceHaverster in JSWeakMap and JSWeakSet. We should

typo: &quot;harvester&quot; rather than &quot;haverster&quot;

&gt; Source/JavaScriptCore/runtime/WeakMapImplInlines.h:33
&gt; +template &lt;typename WeakMapBucket&gt;

No space after &quot;template&quot; to match the style we prefer elsewhere.

&gt; Source/JavaScriptCore/runtime/WeakMapImplInlines.h:34
&gt; +inline void WeakMapImpl&lt;WeakMapBucket&gt;::finalizeUnconditionally(VM&amp;)

Do we really need to mark this inline? Since it’s a function template we don’t need it for correctness, so I presume it’s needed here only because it actually convinces some particular compiler to do the inlining.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382648</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-12-17 13:37:47 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 329615 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=329615&amp;action=review
&gt; 
&gt; I see the performance benefit of this.
&gt; 
&gt; What is the performance cost? Will this use more memory or reduce locality
&gt; of reference in a way that will affect speed of execution?

I previously found that if you have to iterate a bag of objects during GC then it’s up to 5x faster to have those objects allocated next to each other. This was an extreme case that happened in Dromaeo. Most other measurements show it to be neutral. 

&gt; 
&gt; Is there a security benefit or a security cost?

Security benefit. Allocating objects in isoheaps neutralizes their value for UAF-based RCE attacks. 

&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:12
&gt; &gt; +        Currently we still have WeakReferenceHaverster in JSWeakMap and JSWeakSet. We should
&gt; 
&gt; typo: &quot;harvester&quot; rather than &quot;haverster&quot;
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/WeakMapImplInlines.h:33
&gt; &gt; +template &lt;typename WeakMapBucket&gt;
&gt; 
&gt; No space after &quot;template&quot; to match the style we prefer elsewhere.
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/WeakMapImplInlines.h:34
&gt; &gt; +inline void WeakMapImpl&lt;WeakMapBucket&gt;::finalizeUnconditionally(VM&amp;)
&gt; 
&gt; Do we really need to mark this inline? Since it’s a function template we
&gt; don’t need it for correctness, so I presume it’s needed here only because it
&gt; actually convinces some particular compiler to do the inlining.

We put these in the same translation unit as their caller by having them be in an Inlines easer included from Heap.cpp. It would be ugly to define this knowing heap.cpp. I don’t know how profitable inlining is here, but we usually err on the side of giving the compiler an option to do it for GC critical paths.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382690</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-12-17 19:44:54 -0800</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #4)
&gt; (In reply to Darin Adler from comment #3)
&gt; &gt; Do we really need to mark this inline? Since it’s a function template we
&gt; &gt; don’t need it for correctness, so I presume it’s needed here only because it
&gt; &gt; actually convinces some particular compiler to do the inlining.
&gt; 
&gt; We put these in the same translation unit as their caller by having them be
&gt; in an Inlines easer included from Heap.cpp. It would be ugly to define this
&gt; knowing heap.cpp. I don’t know how profitable inlining is here, but we
&gt; usually err on the side of giving the compiler an option to do it for GC
&gt; critical paths.

My proposal is: leave this in a WeakMapImplInlines.h header and let the compiler inline it when compiling Heap.cpp. But do not explicitly mark it with the inline keyword because it’s a template and so we don’t need to.

I’m not sure my proposal is right, but it doesn’t necessarily interfere with anything you mentioned above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382693</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-12-17 19:56:37 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; (In reply to Filip Pizlo from comment #4)
&gt; &gt; (In reply to Darin Adler from comment #3)
&gt; &gt; &gt; Do we really need to mark this inline? Since it’s a function template we
&gt; &gt; &gt; don’t need it for correctness, so I presume it’s needed here only because it
&gt; &gt; &gt; actually convinces some particular compiler to do the inlining.
&gt; &gt; 
&gt; &gt; We put these in the same translation unit as their caller by having them be
&gt; &gt; in an Inlines easer included from Heap.cpp. It would be ugly to define this
&gt; &gt; knowing heap.cpp. I don’t know how profitable inlining is here, but we
&gt; &gt; usually err on the side of giving the compiler an option to do it for GC
&gt; &gt; critical paths.
&gt; 
&gt; My proposal is: leave this in a WeakMapImplInlines.h header and let the
&gt; compiler inline it when compiling Heap.cpp. But do not explicitly mark it
&gt; with the inline keyword because it’s a template and so we don’t need to.
&gt; 
&gt; I’m not sure my proposal is right, but it doesn’t necessarily interfere with
&gt; anything you mentioned above.

Oh!  Yes, you&apos;re right.  I missed the part about it being a template.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382707</commentid>
    <comment_count>7</comment_count>
      <attachid>329615</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-17 21:21:37 -0800</bug_when>
    <thetext>Comment on attachment 329615
Patch

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

Thanks!

&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:12
&gt;&gt;&gt; +        Currently we still have WeakReferenceHaverster in JSWeakMap and JSWeakSet. We should
&gt;&gt; 
&gt;&gt; typo: &quot;harvester&quot; rather than &quot;haverster&quot;
&gt; 
&gt; We put these in the same translation unit as their caller by having them be in an Inlines easer included from Heap.cpp. It would be ugly to define this knowing heap.cpp. I don’t know how profitable inlining is here, but we usually err on the side of giving the compiler an option to do it for GC critical paths.

Oops, fixed.

&gt;&gt; Source/JavaScriptCore/runtime/WeakMapImplInlines.h:33
&gt;&gt; +template &lt;typename WeakMapBucket&gt;
&gt; 
&gt; No space after &quot;template&quot; to match the style we prefer elsewhere.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/WeakMapImplInlines.h:34
&gt;&gt; +inline void WeakMapImpl&lt;WeakMapBucket&gt;::finalizeUnconditionally(VM&amp;)
&gt; 
&gt; Do we really need to mark this inline? Since it’s a function template we don’t need it for correctness, so I presume it’s needed here only because it actually convinces some particular compiler to do the inlining.

OK, drop this &quot;inline&quot; keyword, and let compiler decide inlining.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382708</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-17 21:24:12 -0800</bug_when>
    <thetext>Committed r226017: &lt;https://trac.webkit.org/changeset/226017&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382709</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-17 21:27:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/36099376&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329604</attachid>
            <date>2017-12-17 09:56:25 -0800</date>
            <delta_ts>2017-12-17 11:56:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180916-20171218025624.patch</filename>
            <type>text/plain</type>
            <size>11925</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
M2EyYzA0ZTIyYjU3MjUyMTQzNWJjMGMwYjhiYzIxN2NhN2M0YjI0Li41MjEyMTY4YmI3ZjliMmYw
YTdiOTY5ZjQ4ZDgwMTU3ZTRkZjViN2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAxNy0xMi0xNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBVc2UgSXNvU3BhY2UgZm9yIEpTV2Vha01hcCBhbmQgSlNX
ZWFrU2V0IHRvIHVzZSBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwOTE2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBkcm9wcyBVbmNvbmRpdGlv
bmFsRmluYWxpemVyIGZvciBKU1dlYWtNYXAgYW5kIEpTV2Vha1NldGJ5IHVzaW5nIElzb1NwYWNl
LgorICAgICAgICBTaW5jZSB0aGVzZSBjZWxscyBhbHdheXMgcmVxdWlyZSBjYWxsaW5nIGZpbmFs
aXplVW5jb25kaXRpb25hbGx5LCB3ZSBkbyBub3QgbmVlZCB0bworICAgICAgICB0cmFjayBjZWxs
cyBieSB1c2luZyBJc29DZWxsU2V0LgorCisgICAgICAgIEN1cnJlbnRseSB3ZSBzdGlsbCBoYXZl
IFdlYWtSZWZlcmVuY2VIYXZlcnN0ZXIgaW4gSlNXZWFrTWFwIGFuZCBKU1dlYWtTZXQuIFdlIHNo
b3VsZAorICAgICAgICBhdm9pZCB1c2luZyBhIGdsb2JhbCBsaW5rZWQtbGlzdCBmb3IgdGhpcyBp
biB0aGUgZnV0dXJlLgorCisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6
SGVhcDo6ZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemVyc0luSXNvU3Vic3BhY2UpOgorICAg
ICAgICAoSlNDOjpIZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpT
Qzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICogcnVudGltZS9X
ZWFrTWFwSW1wbC5jcHA6CisgICAgICAgIChKU0M6OldlYWtNYXBJbXBsPFdlYWtNYXBCdWNrZXQ+
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6V2Vha01hcEltcGw8V2Vha01hcEJ1Y2tl
dD46OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1l
L1dlYWtNYXBJbXBsLmg6CisgICAgICAgIChKU0M6OldlYWtNYXBJbXBsOjppc1dlYWtNYXApOgor
ICAgICAgICAoSlNDOjpXZWFrTWFwSW1wbDo6aXNXZWFrU2V0KToKKyAgICAgICAgKEpTQzo6V2Vh
a01hcEltcGw6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBJbXBsSW5s
aW5lcy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6V2Vha01hcEltcGw8V2Vha01hcEJ1Y2tldD46
OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKwogMjAxNy0xMi0xNiAgWXVzdWtlIFN1enVraSAg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBOdW1iZXIgb2YgU2xvdFZp
c2l0b3JzIGNhbiBpbmNyZWFzZSBhZnRlciBzZXR0aW5nIHVwIG1fdmlzaXRDb3VudGVycwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCAxMmMxYjZmODU2NmY5ZTVjMjRhY2M1YzY0
YTBlMWUxNWFlYmZkMDY4Li43ZWRiNjAwYTVjZWIwZGYxYjE2ZTdlOGZiMmQ2MzA4ZTVhOGRjNmU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtNTAsNiArNTAsOCBAQAogI2lu
Y2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAi
SlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgiCisjaW5jbHVkZSAiSlNXZWFrTWFwLmgiCisjaW5j
bHVkZSAiSlNXZWFrU2V0LmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oIgog
I2luY2x1ZGUgIk1hY2hpbmVTdGFja01hcmtlci5oIgogI2luY2x1ZGUgIk1hcmtTdGFja01lcmdp
bmdDb25zdHJhaW50LmgiCkBAIC03Miw2ICs3NCw3IEBACiAjaW5jbHVkZSAiVk0uaCIKICNpbmNs
dWRlICJWaXNpdENvdW50ZXIuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCisjaW5jbHVkZSAi
V2Vha01hcEltcGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2Vha1NldElubGluZXMuaCIKICNpbmNs
dWRlIDxhbGdvcml0aG0+CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNTYzLDEwICs1NjYsMjEgQEAg
dm9pZCBIZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKENlbGxTZXQmIGNlbGxT
ZXQpCiAgICAgICAgIH0pOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KK3ZvaWQg
SGVhcDo6ZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemVyc0luSXNvU3Vic3BhY2UoKQorewor
ICAgIEpTQzo6c3Vic3BhY2VGb3I8Q2VsbFR5cGU+KCp2bSgpKS0+Zm9yRWFjaE1hcmtlZENlbGwo
CisgICAgICAgIFsmXSAoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kKSB7CisgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxDZWxsVHlwZSo+KGNlbGwpLT5maW5hbGl6ZVVuY29uZGl0aW9uYWxs
eSgqdm0oKSk7CisgICAgICAgIH0pOworfQorCiB2b2lkIEhlYXA6OmZpbmFsaXplVW5jb25kaXRp
b25hbEZpbmFsaXplcnMoKQogewogICAgIGZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnM8
SW5mZXJyZWRUeXBlPih2bSgpLT5pbmZlcnJlZFR5cGVzV2l0aEZpbmFsaXplcnMpOwogICAgIGZp
bmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SW5mZXJyZWRWYWx1ZT4odm0oKS0+aW5mZXJy
ZWRWYWx1ZXNXaXRoRmluYWxpemVycyk7CisgICAgZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxp
emVyc0luSXNvU3Vic3BhY2U8SlNXZWFrU2V0PigpOworICAgIGZpbmFsaXplVW5jb25kaXRpb25h
bEZpbmFsaXplcnNJbklzb1N1YnNwYWNlPEpTV2Vha01hcD4oKTsKICAgICAKICAgICB3aGlsZSAo
bV91bmNvbmRpdGlvbmFsRmluYWxpemVycy5oYXNOZXh0KCkpIHsKICAgICAgICAgVW5jb25kaXRp
b25hbEZpbmFsaXplciogZmluYWxpemVyID0gbV91bmNvbmRpdGlvbmFsRmluYWxpemVycy5yZW1v
dmVOZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKaW5kZXggMGZjMmI3NTQ0ZGI4ZjU4
MjhiYzg2NTdiNDk3YmZiM2FiZWViNDg0NS4uNmJhODRhZTFlNWQ0ZjZmMGNjZWNlZDY2MjFmYjc4
OWRjMDViZDEyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaApAQCAtNDk5LDYgKzQ5OSw5
IEBAIGNsYXNzIEhlYXAgewogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIHR5cGVu
YW1lIENlbGxTZXQ+CiAgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKENl
bGxTZXQmKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHZvaWQgZmlu
YWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemVyc0luSXNvU3Vic3BhY2UoKTsKICAgICAKICAgICB2
b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKTsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4YTM4YTA2ZjA4YTJhNDI1YmE4Yzg4OGRlYjFkNGNl
MDQ5YmE5Mjc4Li4wNjVjMTg1OGRmN2U0Zjk0OGZmZjAyOGNkNTI1ODQxMTNjM2NiMjUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC04OCw2ICs4OCw3IEBACiAjaW5jbHVk
ZSAiSlNTdHJpbmdIZWFwQ2VsbFR5cGUuaCIKICNpbmNsdWRlICJKU1RlbXBsYXRlUmVnaXN0cnlL
ZXkuaCIKICNpbmNsdWRlICJKU1dlYWtNYXAuaCIKKyNpbmNsdWRlICJKU1dlYWtTZXQuaCIKICNp
bmNsdWRlICJKU1dlYkFzc2VtYmx5LmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUNvZGVCbG9j
a0hlYXBDZWxsVHlwZS5oIgogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCkBAIC0yMTYsNiArMjE3
LDggQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgcHJv
cGVydHlUYWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIFByb3BlcnR5VGFibGUpCiAgICAgLCBzdHJ1Y3R1cmVSYXJlRGF0
YVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5
cGUuZ2V0KCksIFN0cnVjdHVyZVJhcmVEYXRhKQogICAgICwgc3RydWN0dXJlU3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgU3Ry
dWN0dXJlKQorICAgICwgd2Vha1NldFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWFrU2V0KQorICAgICwgd2Vha01h
cFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNXZWFrTWFwKQogICAgICwgaW5mZXJyZWRUeXBlc1dpdGhGaW5hbGl6ZXJz
KGluZmVycmVkVHlwZVNwYWNlKQogICAgICwgaW5mZXJyZWRWYWx1ZXNXaXRoRmluYWxpemVycyhp
bmZlcnJlZFZhbHVlU3BhY2UpCiAgICAgLCB2bVR5cGUodm1UeXBlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKaW5kZXggMzg0YTM0M2NhMDc1ZmRhNDRjM2M3NjdjYTZjNDM3M2EzM2I2NTYz
My4uYzI0YmQxNWZlZjFlYjI1MDE0MmQ5MjExOTJmZmM1YjQ5N2JmOTE0MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCkBAIC0zNDksNiArMzQ5LDggQEAgY2xhc3MgVk0gOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+
IHsKICAgICBJc29TdWJzcGFjZSBwcm9wZXJ0eVRhYmxlU3BhY2U7CiAgICAgSXNvU3Vic3BhY2Ug
c3RydWN0dXJlUmFyZURhdGFTcGFjZTsKICAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVTcGFjZTsK
KyAgICBJc29TdWJzcGFjZSB3ZWFrU2V0U3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugd2Vha01hcFNw
YWNlOwogICAgIAogICAgIElzb0NlbGxTZXQgaW5mZXJyZWRUeXBlc1dpdGhGaW5hbGl6ZXJzOwog
ICAgIElzb0NlbGxTZXQgaW5mZXJyZWRWYWx1ZXNXaXRoRmluYWxpemVyczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBJbXBsLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBJbXBsLmNwcAppbmRleCA1ZmQ2ZjQzNmZiOWZj
YTg1NTFlZjM1ZTMyNjlhNjJlMjFiYjQyM2Y3Li5hYjYxYjI0NDkzNzYwNTJjMTMwNjExYTY2YjMy
M2VjNWNjNzk4ZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
ZWFrTWFwSW1wbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01h
cEltcGwuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiV2Vha01hcEltcGwuaCIKIAorI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ0LDEwICs0NSw4IEBA
IHZvaWQgV2Vha01hcEltcGw8V2Vha01hcEJ1Y2tldD46OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7CiAKLSAgICB2aXNpdG9yLmFkZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIoJnRoaXNP
YmplY3QtPm1fZGVhZEtleUNsZWFuZXIpOwotICAgIGlmIChzdGQ6OmlzX3NhbWU8V2Vha01hcEJ1
Y2tldCwgSlNDOjpXZWFrTWFwQnVja2V0PFdlYWtNYXBCdWNrZXREYXRhS2V5VmFsdWU+Pjo6dmFs
dWUpCisgICAgaWYgKGlzV2Vha01hcCgpKQogICAgICAgICB2aXNpdG9yLmFkZFdlYWtSZWZlcmVu
Y2VIYXJ2ZXN0ZXIoJnRoaXNPYmplY3QtPm1fZGVhZEtleUNsZWFuZXIpOwotCiAgICAgdmlzaXRv
ci5yZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQodGhpc09iamVjdC0+bV9jYXBhY2l0eSAqIHNpemVv
ZihXZWFrTWFwQnVja2V0KSk7CiB9CiAKQEAgLTc5LDI4ICs3OCw2IEBAIHZvaWQgV2Vha01hcElt
cGw8V2Vha01hcEJ1Y2tldDxXZWFrTWFwQnVja2V0RGF0YUtleVZhbHVlPj46OnZpc2l0V2Vha1Jl
ZmVyZW5jZXMoCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBXZWFrTWFwQnVja2V0Pgotdm9pZCBX
ZWFrTWFwSW1wbDxXZWFrTWFwQnVja2V0Pjo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKQotewot
ICAgIGF1dG8qIGJ1ZmZlciA9IHRoaXMtPmJ1ZmZlcigpOwotICAgIGZvciAodWludDMyX3QgaW5k
ZXggPSAwOyBpbmRleCA8IG1fY2FwYWNpdHk7ICsraW5kZXgpIHsKLSAgICAgICAgYXV0byogYnVj
a2V0ID0gYnVmZmVyICsgaW5kZXg7Ci0gICAgICAgIGlmIChidWNrZXQtPmlzRW1wdHkoKSB8fCBi
dWNrZXQtPmlzRGVsZXRlZCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYg
KEhlYXA6OmlzTWFya2VkKGJ1Y2tldC0+a2V5KCkpKQotICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgYnVja2V0LT5tYWtlRGVsZXRlZCgpOwotICAgICAgICArK21fZGVsZXRlQ291bnQ7
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fa2V5Q291bnQgPiAwKTsKLSAgICAgICAgLS1tX2tl
eUNvdW50OwotICAgIH0KLQotICAgIGlmIChzaG91bGRTaHJpbmsoKSkKLSAgICAgICAgcmVoYXNo
KFJlaGFzaE1vZGU6OlJlbW92ZUJhdGNoaW5nKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFdl
YWtNYXBCdWNrZXQ+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBcHBlbmRlcj4KIHZvaWQgV2Vha01hcElt
cGw8V2Vha01hcEJ1Y2tldD46OnRha2VTbmFwc2hvdEludGVybmFsKHVuc2lnbmVkIGxpbWl0LCBB
cHBlbmRlciBhcHBlbmRlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dlYWtNYXBJbXBsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
TWFwSW1wbC5oCmluZGV4IGUwMjUxMjdlYmI5MzRjNGQzMjAwNjU2YmU0NjVjYzI5ODZiOTc0OTEu
LjUwYzA1M2NiZTEzODI3MmYyNzIyNzlkM2ZjNzg1NTdlYjdiYjIzYmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBJbXBsLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcEltcGwuaApAQCAtMjg4LDYgKzI4OCwyNiBAQCBj
bGFzcyBXZWFrTWFwSW1wbCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgICAg
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoV2Vha01hcEltcGw8V2Vha01hcEJ1Y2tldFR5cGU+LCBt
X2NhcGFjaXR5KTsKICAgICB9CiAKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNXZWFrTWFw
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OmlzX3NhbWU8V2Vha01hcEJ1Y2tldFR5cGUs
IEpTQzo6V2Vha01hcEJ1Y2tldDxXZWFrTWFwQnVja2V0RGF0YUtleVZhbHVlPj46OnZhbHVlOwor
ICAgIH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1dlYWtTZXQoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6aXNfc2FtZTxXZWFrTWFwQnVja2V0VHlwZSwgSlNDOjpXZWFrTWFw
QnVja2V0PFdlYWtNYXBCdWNrZXREYXRhS2V5Pj46OnZhbHVlOworICAgIH0KKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgKGlzV2Vha01hcCgpKQorICAgICAgICAgICAg
cmV0dXJuICZ2bS53ZWFrTWFwU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ud2Vha1NldFNwYWNl
OworICAgIH0KKworICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mKTsKKwogcHJp
dmF0ZToKICAgICBBTFdBWVNfSU5MSU5FIFdlYWtNYXBCdWNrZXRUeXBlKiBmaW5kQnVja2V0KEpT
T2JqZWN0KiBrZXkpCiAgICAgewpAQCAtNDQ2LDcgKzQ2Niw3IEBAIGNsYXNzIFdlYWtNYXBJbXBs
IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBB
cHBlbmRlcj4KICAgICB2b2lkIHRha2VTbmFwc2hvdEludGVybmFsKHVuc2lnbmVkIGxpbWl0LCBB
cHBlbmRlcik7CiAKLSAgICBjbGFzcyBEZWFkS2V5Q2xlYW5lciA6IHB1YmxpYyBVbmNvbmRpdGlv
bmFsRmluYWxpemVyLCBwdWJsaWMgV2Vha1JlZmVyZW5jZUhhcnZlc3RlciB7CisgICAgY2xhc3Mg
RGVhZEtleUNsZWFuZXIgOiBwdWJsaWMgV2Vha1JlZmVyZW5jZUhhcnZlc3RlciB7CiAgICAgcHVi
bGljOgogICAgICAgICBXZWFrTWFwSW1wbCogdGFyZ2V0KCkKICAgICAgICAgewpAQCAtNDU4LDE1
ICs0NzgsOSBAQCBjbGFzcyBXZWFrTWFwSW1wbCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVj
dCB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHRhcmdldCgpLT52aXNpdFdlYWtSZWZlcmVuY2Vz
KHZpc2l0b3IpOwogICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9u
YWxseSgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRhcmdldCgpLT5maW5hbGl6
ZVVuY29uZGl0aW9uYWxseSgpOwotICAgICAgICB9CiAgICAgfTsKIAogICAgIHZvaWQgdmlzaXRX
ZWFrUmVmZXJlbmNlcyhTbG90VmlzaXRvciYpOwotICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlv
bmFsbHkoKTsKIAogICAgIE1hbGxvY1B0cjxXZWFrTWFwQnVmZmVyVHlwZSwgSlNWYWx1ZU1hbGxv
Yz4gbV9idWZmZXI7CiAgICAgdWludDMyX3QgbV9rZXlDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBJbXBsSW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcEltcGxJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDNi
ZGZjYWY3ZjY5Yzk0ZDkwMjA0MmEzYWE0YTQ0ZTcxMWVjMjdkOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBJbXBsSW5saW5lcy5oCkBAIC0w
LDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWFrTWFwSW1wbC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworLy8gTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gY2FuIGJlIGV4ZWN1dGVk
IGluIHBhcmFsbGVsIGFzIGxvbmcgYXMgdGhlIG11dGF0b3Igc3RvcHMuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgV2Vha01hcEJ1Y2tldD4KK3ZvaWQgV2Vha01hcEltcGw8V2Vha01hcEJ1Y2tldD46OmZp
bmFsaXplVW5jb25kaXRpb25hbGx5KFZNJikKK3sKKyAgICBhdXRvKiBidWZmZXIgPSB0aGlzLT5i
dWZmZXIoKTsKKyAgICBmb3IgKHVpbnQzMl90IGluZGV4ID0gMDsgaW5kZXggPCBtX2NhcGFjaXR5
OyArK2luZGV4KSB7CisgICAgICAgIGF1dG8qIGJ1Y2tldCA9IGJ1ZmZlciArIGluZGV4OworICAg
ICAgICBpZiAoYnVja2V0LT5pc0VtcHR5KCkgfHwgYnVja2V0LT5pc0RlbGV0ZWQoKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChIZWFwOjppc01hcmtlZChidWNrZXQtPmtl
eSgpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGJ1Y2tldC0+bWFrZURlbGV0
ZWQoKTsKKyAgICAgICAgKyttX2RlbGV0ZUNvdW50OworICAgICAgICBSRUxFQVNFX0FTU0VSVCht
X2tleUNvdW50ID4gMCk7CisgICAgICAgIC0tbV9rZXlDb3VudDsKKyAgICB9CisKKyAgICBpZiAo
c2hvdWxkU2hyaW5rKCkpCisgICAgICAgIHJlaGFzaChSZWhhc2hNb2RlOjpSZW1vdmVCYXRjaGlu
Zyk7Cit9CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329615</attachid>
            <date>2017-12-17 11:56:47 -0800</date>
            <delta_ts>2017-12-17 12:17:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180916-20171218045646.patch</filename>
            <type>text/plain</type>
            <size>24004</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MWMxMGUwYzViMmE2ZTVjMzczNjMyZjQ4NTFjNTZiZGIxYTllY2QzLi40NjFlNWUyOGNmNGE1OTI0
NTAxNzY1OGZkMDE0MzM5NTgxOTljN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwzNyBAQAogMjAxNy0xMi0xNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBbSlNDXSBVc2UgSXNvU3BhY2UgZm9yIEpTV2Vha01hcCBhbmQgSlNX
ZWFrU2V0IHRvIHVzZSBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwOTE2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBkcm9wcyBVbmNvbmRpdGlv
bmFsRmluYWxpemVyIGZvciBKU1dlYWtNYXAgYW5kIEpTV2Vha1NldGJ5IHVzaW5nIElzb1NwYWNl
LgorICAgICAgICBTaW5jZSB0aGVzZSBjZWxscyBhbHdheXMgcmVxdWlyZSBjYWxsaW5nIGZpbmFs
aXplVW5jb25kaXRpb25hbGx5LCB3ZSBkbyBub3QgbmVlZCB0bworICAgICAgICB0cmFjayBjZWxs
cyBieSB1c2luZyBJc29DZWxsU2V0LgorCisgICAgICAgIEN1cnJlbnRseSB3ZSBzdGlsbCBoYXZl
IFdlYWtSZWZlcmVuY2VIYXZlcnN0ZXIgaW4gSlNXZWFrTWFwIGFuZCBKU1dlYWtTZXQuIFdlIHNo
b3VsZAorICAgICAgICBhdm9pZCB1c2luZyBhIGdsb2JhbCBsaW5rZWQtbGlzdCBmb3IgdGhpcyBp
biB0aGUgZnV0dXJlLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFw
OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzSW5Jc29TdWJzcGFjZSk6CisgICAgICAg
IChKU0M6OkhlYXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMpOgorICAgICAgICAq
IGhlYXAvSGVhcC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpW
TTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiBydW50aW1lL1dlYWtN
YXBJbXBsLmNwcDoKKyAgICAgICAgKEpTQzo6V2Vha01hcEltcGw8V2Vha01hcEJ1Y2tldD46OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpXZWFrTWFwSW1wbDxXZWFrTWFwQnVja2V0Pjo6
ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvV2Vh
a01hcEltcGwuaDoKKyAgICAgICAgKEpTQzo6V2Vha01hcEltcGw6OmlzV2Vha01hcCk6CisgICAg
ICAgIChKU0M6OldlYWtNYXBJbXBsOjppc1dlYWtTZXQpOgorICAgICAgICAoSlNDOjpXZWFrTWFw
SW1wbDo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha01hcEltcGxJbmxpbmVz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpXZWFrTWFwSW1wbDxXZWFrTWFwQnVja2V0Pjo6Zmlu
YWxpemVVbmNvbmRpdGlvbmFsbHkpOgorCisyMDE3LTEyLTE3ICBZdXN1a2UgU3V6dWtpICA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorCiAgICAgICAgIFtKU0NdW1dlYkNvcmVdW0NTU0pJVF0gUmVt
b3ZlIFZNIHJlZmVyZW5jZSBpbiBDU1NKSVQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MDkxNwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDJiYTJjMjNhYjA0M2NhYjc2OTE0NjQxOWVmNmQyMWUyZTIyYjg1N2UuLmQ0Zjc5OWFiMGFk
ZGU5ZmQ2YTY5MjY0ZTE3MGVlZjYwNTAxOGE2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xNjk5LDYgKzE2OTksNyBAQAogCQlFMzVDQTE1NjFEQkMzQTVGMDBGODM1MTYgLyog
RE9NSklUQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzVDQTE1MDFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFw
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1
RTAzNjAxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1RTAzNUUx
QjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzk0RTc2MUI3
N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVs
ZUFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJRTM5M0FERDgxRkU3MDJEMDAwMjJENjgxIC8qIFdlYWtNYXBJbXBsSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5M0FERDcxRkU3
MDJDQzAwMjJENjgxIC8qIFdlYWtNYXBJbXBsSW5saW5lcy5oICovOyB9OwogCQlFMzlENDVGNTFE
MzkwMDU2MDBCM0IzNzcgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEOUQ4NDFEMzkwMDA2MDA2NjcyODIgLyog
SW50ZXJwcmV0ZXJJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTM5REE0QTcxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3Jk
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRB
NTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0EzMkJDNzFGQzgzMTQ3MDA3RDdFNzYg
LyogV2Vha01hcEltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzQTMyQkM2MUZDODMxMkUwMDdEN0U3NiAvKiBXZWFrTWFwSW1wbC5oICovOyB9OwpA
QCAtNDUzNSw2ICs0NTM2LDcgQEAKIAkJRTM4RDA2MEIxRjhFODE0MTAwNjQ5Q0YyIC8qIEpTU2Ny
aXB0RmV0Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
U2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
OEQwNjBDMUY4RTgxNDEwMDY0OUNGMiAvKiBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOEQwNjBEMUY4RTgxNDEwMDY0OUNGMiAvKiBKU1Nj
cmlwdEZldGNoUGFyYW1ldGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1NjcmlwdEZldGNoUGFyYW1ldGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUzOTNBREQ3MUZFNzAyQ0MwMDIyRDY4MSAvKiBXZWFrTWFwSW1wbElubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha01hcEltcGxJbmxpbmVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBO
b2Rlc0FuYWx5emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTm9kZXNBbmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJldGVySW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlcnByZXRlcklubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxl
UmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxl
UmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY1MTUsOSArNjUxNyw5
IEBACiAJCQkJRTE3ODYzM0YwRDlCRUMwMDAwRDc0RTc1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcu
aCAqLywKIAkJCQlFMzVFMDM1RDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uT2JqZWN0LmNwcCAqLywKIAkJCQlFMzVFMDM1RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi8sCi0JCQkJQTdBOEFGMkIxN0FEQjVGMzAw
NUFCMTc0IC8qIEludDhBcnJheS5oICovLAogCQkJCUE3QThBRjJDMTdBREI1RjMwMDVBQjE3NCAv
KiBJbnQxNkFycmF5LmggKi8sCiAJCQkJQTdBOEFGMkQxN0FEQjVGMzAwNUFCMTc0IC8qIEludDMy
QXJyYXkuaCAqLywKKwkJCQlBN0E4QUYyQjE3QURCNUYzMDA1QUIxNzQgLyogSW50OEFycmF5Lmgg
Ki8sCiAJCQkJQkM5QkI5NUIwRTE5NjgwNjAwREY4ODU1IC8qIEludGVybmFsRnVuY3Rpb24uY3Bw
ICovLAogCQkJCUJDMTE2NjdBMEUxOTlDMDUwMDgwNjZERCAvKiBJbnRlcm5hbEZ1bmN0aW9uLmgg
Ki8sCiAJCQkJQTFCOUUyMzMxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvci5jcHAgKi8s
CkBAIC02NjE4LDkgKzY2MjAsOSBAQAogCQkJCUJDNzU2RkM2MEUyMDMxQjIwMERFN0QxMiAvKiBK
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgKi8sCiAJCQkJQkM3NTZGQzcwRTIwMzFCMjAwREU3
RDEyIC8qIEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmggKi8sCiAJCQkJNzlCODE5OTIxREQyNUNG
NTAwRERDNzE0IC8qIEpTR2xvYmFsT2JqZWN0SW5saW5lcy5oICovLAotCQkJCTBGMkI2NkM5MTdC
NkI1QUIwMEE3QUUzRiAvKiBKU0ludDhBcnJheS5oICovLAogCQkJCTBGMkI2NkNBMTdCNkI1QUIw
MEE3QUUzRiAvKiBKU0ludDE2QXJyYXkuaCAqLywKIAkJCQkwRjJCNjZDQjE3QjZCNUFCMDBBN0FF
M0YgLyogSlNJbnQzMkFycmF5LmggKi8sCisJCQkJMEYyQjY2QzkxN0I2QjVBQjAwQTdBRTNGIC8q
IEpTSW50OEFycmF5LmggKi8sCiAJCQkJRTMzRjUwN0UxQjg0MjlBNDAwNDEzODU2IC8qIEpTSW50
ZXJuYWxQcm9taXNlLmNwcCAqLywKIAkJCQlFMzNGNTA3RjFCODQyOUE0MDA0MTM4NTYgLyogSlNJ
bnRlcm5hbFByb21pc2UuaCAqLywKIAkJCQlFMzNGNTA3NjFCODQyMjU3MDA0MTM4NTYgLyogSlNJ
bnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5jcHAgKi8sCkBAIC02NzA5LDEwICs2NzExLDEwIEBA
CiAJCQkJNTNGMjU2RTExQjg3RTI4MDAwQjRCNzY4IC8qIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5
cGUuY3BwICovLAogCQkJCTUzOTE3RTdDMUI3OTExMDYwMDBFQkQzMyAvKiBKU1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlLmggKi8sCiAJCQkJNjUwN0QyOTcwRTg3MUU0QTAwRDdEODk2IC8qIEpTVHlw
ZUluZm8uaCAqLywKLQkJCQkwRjJCNjZEMjE3QjZCNUFCMDBBN0FFM0YgLyogSlNVaW50OEFycmF5
LmggKi8sCi0JCQkJMEYyQjY2RDMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVWludDhDbGFtcGVkQXJy
YXkuaCAqLywKIAkJCQkwRjJCNjZENDE3QjZCNUFCMDBBN0FFM0YgLyogSlNVaW50MTZBcnJheS5o
ICovLAogCQkJCTBGMkI2NkQ1MTdCNkI1QUIwMEE3QUUzRiAvKiBKU1VpbnQzMkFycmF5LmggKi8s
CisJCQkJMEYyQjY2RDIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVWludDhBcnJheS5oICovLAorCQkJ
CTBGMkI2NkQzMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1VpbnQ4Q2xhbXBlZEFycmF5LmggKi8sCiAJ
CQkJQTdDQTNBRTExN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5jcHAgKi8sCiAJCQkJQTdD
QTNBRTIxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5oICovLAogCQkJCTcwOUZCODYxMUFF
MzM1QzYwMDM5RDA2OSAvKiBKU1dlYWtTZXQuY3BwICovLApAQCAtNjkyNiwxMSArNjkyOCwxMSBA
QAogCQkJCTBGMkQ0REUwMTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlUHJvZmlsZXJMb2cuaCAqLywK
IAkJCQkwRjJENERFMzE5ODMyRDkxMDA3RDRCMTkgLyogVHlwZVNldC5jcHAgKi8sCiAJCQkJMEYy
RDRERTQxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVTZXQuaCAqLywKLQkJCQlBN0E4QUYzMDE3QURC
NUYzMDA1QUIxNzQgLyogVWludDhBcnJheS5oICovLAotCQkJCUE3QThBRjMxMTdBREI1RjMwMDVB
QjE3NCAvKiBVaW50OENsYW1wZWRBcnJheS5oICovLAogCQkJCUE3QThBRjMyMTdBREI1RjMwMDVB
QjE3NCAvKiBVaW50MTZBcnJheS5oICovLAogCQkJCTg2NjczOUQxMTNCRkRFNzEwMDIzRDg3QyAv
KiBVaW50MTZXaXRoRnJhY3Rpb24uaCAqLywKIAkJCQlBN0E4QUYzMzE3QURCNUYzMDA1QUIxNzQg
LyogVWludDMyQXJyYXkuaCAqLywKKwkJCQlBN0E4QUYzMDE3QURCNUYzMDA1QUIxNzQgLyogVWlu
dDhBcnJheS5oICovLAorCQkJCUE3QThBRjMxMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OENsYW1w
ZWRBcnJheS5oICovLAogCQkJCTBGRTA1MDIzMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQu
Y3BwICovLAogCQkJCTBGRTA1MDI0MUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuaCAqLywK
IAkJCQlFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwICovLApAQCAtNjk0OCw2ICs2
OTUwLDcgQEAKIAkJCQlBN0NBM0FERTE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcENvbnN0cnVj
dG9yLmggKi8sCiAJCQkJRTNBMzJCQzUxRkM4MzEyRDAwN0Q3RTc2IC8qIFdlYWtNYXBJbXBsLmNw
cCAqLywKIAkJCQlFM0EzMkJDNjFGQzgzMTJFMDA3RDdFNzYgLyogV2Vha01hcEltcGwuaCAqLywK
KwkJCQlFMzkzQURENzFGRTcwMkNDMDAyMkQ2ODEgLyogV2Vha01hcEltcGxJbmxpbmVzLmggKi8s
CiAJCQkJQTdDQTNBREYxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBQcm90b3R5cGUuY3BwICov
LAogCQkJCUE3Q0EzQUUwMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwUHJvdG90eXBlLmggKi8s
CiAJCQkJNzA5RkI4NjMxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRDb25zdHJ1Y3Rvci5jcHAg
Ki8sCkBAIC03OTkzLDggKzc5OTYsOCBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKIAkJCWZpbGVzID0gKAogCQkJCUE3MjcwMUI5MERBREU5NDkwMEU1NDhENyAvKiBFeGNlcHRp
b25IZWxwZXJzLmggaW4gSGVhZGVycyAqLywKLQkJCQkxNDQwMDVDQjBBNTMzOEQxMDAwNUYwNjEg
LyogSlNOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzcwODA2QjFGRTIzMkRGMDAyOTlFNDQg
LyogSlNBcnJheUJ1ZmZlclZpZXcuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0NDAwNUNCMEE1MzM4
RDEwMDA1RjA2MSAvKiBKU05vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NDAwNzU3MEE1Mzcw
RDIwMDA1RjA2MSAvKiBKU05vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDQwMDVDQzBB
NTMzOEY4MDAwNUYwNjEgLyogTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ0MDA3NEEwQTUz
NkNDMjAwMDVGMDYxIC8qIE5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTgwMjEsNyArODAy
NCw2IEBACiAJCQkJMEZFQzg1NzIxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckJhc2ljQmxvY2suaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMkM2M0JDMUU2MzQ0MEMwMEMxMzgzOSAvKiBBaXJCbG9ja0lu
c2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMzg3OEUxQkZCQzQ0RDAwRTNBQjFF
IC8qIEFpckJsb2NrV29ya2xpc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGQjQ2NzgxMUZEREE2
RjcwMDNGQ0IwOSAvKiBJc29DZWxsU2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3
OUM3Q0ExRTc0QzkzQjAwRUIzNEQxIC8qIEFpckJyZWFrQ3JpdGljYWxFZGdlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY2MTgzMkExQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckNDYWxsaW5nQ29udmVu
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1NzQxQkRBQ0RDNzAwODBGRjc0IC8qIEFp
ckNDYWxsU3BlY2lhbC5oIGluIEhlYWRlcnMgKi8sCkBAIC04MTE4LDYgKzgxMjAsNyBAQAogCQkJ
CThCQzA2NDk2MUUxRDg0NUMwMEIyQjhDQSAvKiBBc3luY0l0ZXJhdG9yUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk2QTM4Q0ZBQTFFMzJCNUFCMDA2MDIwNkYgLyogQXN5bmNTdGFja1Ry
YWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdDRjk1NzFEQzEyNTkwMDA5OENDMTIgLyogQXRv
bWljc09iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZCNDY3N0YxRkREQTZFOTAwM0ZDQjA5
IC8qIEF0b21JbmRpY2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzBFNzE5RjVCMTAxMDA5
OEY1RUMgLyogQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNUVBNzBFODE5RjVCMTAxMDA5OEY1RUMgLyogQXVnbWVudGFibGVJbnNwZWN0b3JDb250
cm9sbGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjM4RDJBMjFENDQxOTY4MDA2ODA0
OTkgLyogQXV4aWxpYXJ5QmFycmllci5oIGluIEhlYWRlcnMgKi8sCkBAIC04NzM1LDggKzg3Mzgs
MTAgQEAKIAkJCQkwRkJGOTJCOTFGRDc2RkZGMDBBQzI4QTggLyogSW5mZXJyZWRTdHJ1Y3R1cmUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkY5MkJBMUZENzcwMDQwMEFDMjhBOCAvKiBJbmZlcnJl
ZFN0cnVjdHVyZVdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEE3NTIzMUI5NEJG
QTkwMDExMDY2MCAvKiBJbmZlcnJlZFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQjQ2Nzg1
MUZERkI0NTQwMDNGQ0IwOSAvKiBJbmZlcnJlZFR5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkZDOTIxMjFCOTRENERGMDA3MURENjYgLyogSW5mZXJyZWRUeXBlVGFibGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRjhCREVCMUFENENGNzEwMERGRTg4NCAvKiBJbmZlcnJlZFZhbHVl
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjRBRTA0MzFGRTBEMjU3MDBFMjA4MzkgLyogSW5mZXJy
ZWRWYWx1ZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDEwMEUxNkY1Q0QwMEIz
NDQ2MCAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTEzRTVC
ODE4NUI4QkQzMDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1MTRCMkMzMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlwdEJhc2UuaCBpbiBIZWFk
ZXJzICovLApAQCAtODc5NiwxMyArODgwMSwxNCBAQAogCQkJCTg2MEJEODAxMTQ4RUE2RjIwMDEx
MkIyRiAvKiBJbnRyaW5zaWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzNEUwMzU0MUU1M0JEMjkw
MDIxM0Y2NCAvKiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkRDRTEzMjFGQjExREE0MDA2RjM5MDEgLyogSXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEZCNDY3ODAxRkREQTZGMTAwM0ZDQjA5IC8qIElzb0NlbGxT
ZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQjQ2NzgxMUZEREE2RjcwMDNGQ0IwOSAvKiBJc29D
ZWxsU2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEQ0UxMkQxRkFGQjRFNTAwNkYz
OTAxIC8qIElzb1N1YnNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QjlGNkQ1NjFENTkxMkZB
MDAxQzczOUYgLyogSXRlcmF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU0RDU1Qjgx
QUU3MTZDQTAwNTJFNDU5IC8qIEl0ZXJhdGlvblN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NzAxMTNENEMxQThEQjA5MzAwMzg0OEM0IC8qIEl0ZXJhdG9yT3BlcmF0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzBEQzNFMEExQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxMzBFMTZGNUNEMDBCMzQ0NjAgLyogSmF2YVNj
cmlwdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZCNDY3ODUxRkRGQjQ1NDAwM0ZDQjA5IC8qIElu
ZmVycmVkVHlwZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MDNGQTFBMTg4RTBGQjAw
MDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4
QzQxNDBFMTZGNUNEMDBCMzQ0NjAgLyogSmF2YVNjcmlwdENvcmUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMThDNDE1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC04ODY5LDcgKzg4NzUsNyBAQAogCQkJCTE0OENEMUQ4MTA4Q0Y5MDIw
MDgxNjNDNiAvKiBKU0NvbnRleHRSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTJC
MEI3MzFGRDlFRjcwMDA3NURBNUYgLyogSlNDUG9pc29uLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RTJCMEI2OTFGRDIyN0UwMDA3NURBNUYgLyogSlNDUG9pc29uZWRQdHIuaCBpbiBIZWFkZXJzICov
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBNzIwMjhCODE3OTc2MDFFMDA5ODAy
OEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzIwMjhCODE3
OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3MkFBRjdDRTFEMEQzMUIzMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RUMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0
YVZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkVFMTdCNkI1QUIwMEE3QUUzRiAvKiBK
U0RhdGFWaWV3UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTg5OTgsNyArOTAwNCw2IEBA
CiAJCQkJQUQyRkNCRTUxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlJbnN0YW5jZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQURFODAyOTkxRTA4RjFERTAwNThERTc4IC8qIEpTV2ViQXNz
ZW1ibHlMaW5rRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUFEMkZDQkU3MURCNThEQUQwMEIz
RTczNiAvKiBKU1dlYkFzc2VtYmx5TWVtb3J5LmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkI0Njc3
RjFGRERBNkU5MDAzRkNCMDkgLyogQXRvbUluZGljZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUFE
MkZDQzA1MURCNThEQUQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5TW9kdWxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBRDJGQ0JFOTFEQjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNCRUIxREI1OERBRDAwQjNFNzM2IC8q
IEpTV2ViQXNzZW1ibHlUYWJsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05MTExLDcgKzkxMTYsNiBA
QAogCQkJCUUzQzI5NUREMUVEMkNCREEwMEQzMDE2RiAvKiBPYmplY3RQcm9wZXJ0eUNoYW5nZUFk
YXB0aXZlV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEM0U0MEExQjYxOEI2NjAw
QzgwRTFFIC8qIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkQzRTQwQzFCNjE4QjY2MDBDODBFMUUgLyogT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaCBp
biBIZWFkZXJzICovLAotCQkJCTBGNEFFMDQzMUZFMEQyNTcwMEUyMDgzOSAvKiBJbmZlcnJlZFZh
bHVlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NDYwRTE2RjVDRDAwQjM0NDYw
IC8qIE9iamVjdFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyNEE4RjcwRTU1NTc3
NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDc5
QjBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTkyODksNyAr
OTI5Myw2IEBACiAJCQkJQzIwQkE5MkQxNkJCMUMxNTAwQjNBRUEyIC8qIFN0cnVjdHVyZVJhcmVE
YXRhSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTUxNENBN0RERDAwODVGM0M2
IC8qIFN0cnVjdHVyZVNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZEMzkxNUFFNEExRjAw
OEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCBpbiBIZWFkZXJzICov
LAotCQkJCTBGQjQ2NzgwMUZEREE2RjEwMDNGQ0IwOSAvKiBJc29DZWxsU2V0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0NGMEQwODBFRjBBQUI5MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8u
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDOTA0MTQ4MEVCOTI1MDkwMEZFMjZGQSAvKiBTdHJ1Y3R1
cmVUcmFuc2l0aW9uVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0RGMTM3MUUyOTcwRTEw
MDk1OTUxQiAvKiBTdWJzcGFjZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDIwLDYgKzk0MjMsNyBA
QAogCQkJCTE0QkU3RDMzMTcxMzVDRjQwMEQxODA3QSAvKiBXZWFrSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdDQTNBRTQxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTNBMzJCQzcxRkM4MzE0NzAwN0Q3RTc2IC8qIFdlYWtN
YXBJbXBsLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzkzQUREODFGRTcwMkQwMDAyMkQ2ODEgLyog
V2Vha01hcEltcGxJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0NBM0FFNjE3REE0MUFF
MDA2NTM4QUYgLyogV2Vha01hcFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNDJE
QTcxM0YzQjFFODAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0RTg0RkExMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrU2V0LmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggMTJjMWI2Zjg1NjZmOWU1
YzI0YWNjNWM2NGEwZTFlMTVhZWJmZDA2OC4uN2VkYjYwMGE1Y2ViMGRmMWIxNmU3ZThmYjJkNjMw
OGU1YThkYzZlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTUwLDYgKzUw
LDggQEAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgog
I2luY2x1ZGUgIkpTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oIgorI2luY2x1ZGUgIkpTV2Vha01h
cC5oIgorI2luY2x1ZGUgIkpTV2Vha1NldC5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlDb2Rl
QmxvY2suaCIKICNpbmNsdWRlICJNYWNoaW5lU3RhY2tNYXJrZXIuaCIKICNpbmNsdWRlICJNYXJr
U3RhY2tNZXJnaW5nQ29uc3RyYWludC5oIgpAQCAtNzIsNiArNzQsNyBAQAogI2luY2x1ZGUgIlZN
LmgiCiAjaW5jbHVkZSAiVmlzaXRDb3VudGVyLmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgor
I2luY2x1ZGUgIldlYWtNYXBJbXBsSW5saW5lcy5oIgogI2luY2x1ZGUgIldlYWtTZXRJbmxpbmVz
LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2lmIFBMQVRGT1JNKElPUykKQEAgLTU2MywxMCAr
NTY2LDIxIEBAIHZvaWQgSGVhcDo6ZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemVycyhDZWxs
U2V0JiBjZWxsU2V0KQogICAgICAgICB9KTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGU+Cit2b2lkIEhlYXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnNJbklzb1N1YnNw
YWNlKCkKK3sKKyAgICBKU0M6OnN1YnNwYWNlRm9yPENlbGxUeXBlPigqdm0oKSktPmZvckVhY2hN
YXJrZWRDZWxsKAorICAgICAgICBbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkg
eworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q2VsbFR5cGUqPihjZWxsKS0+ZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkoKnZtKCkpOworICAgICAgICB9KTsKK30KKwogdm9pZCBIZWFwOjpmaW5hbGl6
ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKCkKIHsKICAgICBmaW5hbGl6ZVVuY29uZGl0aW9uYWxG
aW5hbGl6ZXJzPEluZmVycmVkVHlwZT4odm0oKS0+aW5mZXJyZWRUeXBlc1dpdGhGaW5hbGl6ZXJz
KTsKICAgICBmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEluZmVycmVkVmFsdWU+KHZt
KCktPmluZmVycmVkVmFsdWVzV2l0aEZpbmFsaXplcnMpOworICAgIGZpbmFsaXplVW5jb25kaXRp
b25hbEZpbmFsaXplcnNJbklzb1N1YnNwYWNlPEpTV2Vha1NldD4oKTsKKyAgICBmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxGaW5hbGl6ZXJzSW5Jc29TdWJzcGFjZTxKU1dlYWtNYXA+KCk7CiAgICAgCiAg
ICAgd2hpbGUgKG1fdW5jb25kaXRpb25hbEZpbmFsaXplcnMuaGFzTmV4dCgpKSB7CiAgICAgICAg
IFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIqIGZpbmFsaXplciA9IG1fdW5jb25kaXRpb25hbEZpbmFs
aXplcnMucmVtb3ZlTmV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IDBmYzJi
NzU0NGRiOGY1ODI4YmM4NjU3YjQ5N2JmYjNhYmVlYjQ4NDUuLjZiYTg0YWUxZTVkNGY2ZjBjY2Vj
ZWQ2NjIxZmI3ODlkYzA1YmQxMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAgLTQ5
OSw2ICs0OTksOSBAQCBjbGFzcyBIZWFwIHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxU
eXBlLCB0eXBlbmFtZSBDZWxsU2V0PgogICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsRmlu
YWxpemVycyhDZWxsU2V0Jik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAg
ICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnNJbklzb1N1YnNwYWNlKCk7CiAg
ICAgCiAgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKCk7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNjkzNjQ5MDcwZWM5N2MzN2M1OTcw
YjhmZGQ3NmYwODBlNzJjNzc3ZS4uM2ZkMmFmZDNjZmI0OWRkNWQ2YjdlMzVmYTE2ODk0Zjk1YzEy
Nzc3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtODgsNiArODgsNyBA
QAogI2luY2x1ZGUgIkpTU3RyaW5nSGVhcENlbGxUeXBlLmgiCiAjaW5jbHVkZSAiSlNUZW1wbGF0
ZVJlZ2lzdHJ5S2V5LmgiCiAjaW5jbHVkZSAiSlNXZWFrTWFwLmgiCisjaW5jbHVkZSAiSlNXZWFr
U2V0LmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseS5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1i
bHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgpAQCAt
MjU4LDYgKzI1OSw4IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkK
ICAgICAsIHByb3BlcnR5VGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBQcm9wZXJ0eVRhYmxlKQogICAgICwgc3RydWN0
dXJlUmFyZURhdGFTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBTdHJ1Y3R1cmVSYXJlRGF0YSkKICAgICAsIHN0cnVjdHVyZVNw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIFN0cnVjdHVyZSkKKyAgICAsIHdlYWtTZXRTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCho
ZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2Vha1NldCkKKyAg
ICAsIHdlYWtNYXBTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2Vha01hcCkKICAgICAsIGluZmVycmVkVHlwZXNXaXRo
RmluYWxpemVycyhpbmZlcnJlZFR5cGVTcGFjZSkKICAgICAsIGluZmVycmVkVmFsdWVzV2l0aEZp
bmFsaXplcnMoaW5mZXJyZWRWYWx1ZVNwYWNlKQogICAgICwgdm1UeXBlKHZtVHlwZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDgyNTFhNjUwZTEwNWE4ZDJiMmMyYTk1MzBhZjlm
MmYzZWRiNWNlOTkuLmMyOTA3M2QyMDhhNWQ2Mjk5YzQ3YTk2MjEwZjg4OTE2ZjI5NTdhMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzQ5LDYgKzM0OSw4IEBAIGNsYXNzIFZN
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExp
c3ROb2RlPFZNPiB7CiAgICAgSXNvU3Vic3BhY2UgcHJvcGVydHlUYWJsZVNwYWNlOwogICAgIElz
b1N1YnNwYWNlIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2U7CiAgICAgSXNvU3Vic3BhY2Ugc3RydWN0
dXJlU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugd2Vha1NldFNwYWNlOworICAgIElzb1N1YnNwYWNl
IHdlYWtNYXBTcGFjZTsKICAgICAKICAgICBJc29DZWxsU2V0IGluZmVycmVkVHlwZXNXaXRoRmlu
YWxpemVyczsKICAgICBJc29DZWxsU2V0IGluZmVycmVkVmFsdWVzV2l0aEZpbmFsaXplcnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwSW1wbC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwSW1wbC5jcHAKaW5kZXggNWZk
NmY0MzZmYjlmY2E4NTUxZWYzNWUzMjY5YTYyZTIxYmI0MjNmNy4uZmM1ZWJkY2M0ZmEwMjY5MjIz
ZDY2NDQ3OGI3MTIyMzJlNmMyMWFiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha01hcEltcGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dlYWtNYXBJbXBsLmNwcApAQCAtMjcsNyArMjcsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIldlYWtNYXBJbXBsLmgiCiAKKyNpbmNsdWRlICJJc29DZWxsU2V0SW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJXZWFrTWFwSW1wbElubGlu
ZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ0LDEwICs0Niw4IEBAIHZvaWQgV2Vha01h
cEltcGw8V2Vha01hcEJ1Y2tldD46OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBp
bmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAK
LSAgICB2aXNpdG9yLmFkZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIoJnRoaXNPYmplY3QtPm1fZGVh
ZEtleUNsZWFuZXIpOwotICAgIGlmIChzdGQ6OmlzX3NhbWU8V2Vha01hcEJ1Y2tldCwgSlNDOjpX
ZWFrTWFwQnVja2V0PFdlYWtNYXBCdWNrZXREYXRhS2V5VmFsdWU+Pjo6dmFsdWUpCisgICAgaWYg
KGlzV2Vha01hcCgpKQogICAgICAgICB2aXNpdG9yLmFkZFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIo
JnRoaXNPYmplY3QtPm1fZGVhZEtleUNsZWFuZXIpOwotCiAgICAgdmlzaXRvci5yZXBvcnRFeHRy
YU1lbW9yeVZpc2l0ZWQodGhpc09iamVjdC0+bV9jYXBhY2l0eSAqIHNpemVvZihXZWFrTWFwQnVj
a2V0KSk7CiB9CiAKQEAgLTc5LDI4ICs3OSw2IEBAIHZvaWQgV2Vha01hcEltcGw8V2Vha01hcEJ1
Y2tldDxXZWFrTWFwQnVja2V0RGF0YUtleVZhbHVlPj46OnZpc2l0V2Vha1JlZmVyZW5jZXMoCiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBXZWFrTWFwQnVja2V0Pgotdm9pZCBXZWFrTWFwSW1wbDxX
ZWFrTWFwQnVja2V0Pjo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKQotewotICAgIGF1dG8qIGJ1
ZmZlciA9IHRoaXMtPmJ1ZmZlcigpOwotICAgIGZvciAodWludDMyX3QgaW5kZXggPSAwOyBpbmRl
eCA8IG1fY2FwYWNpdHk7ICsraW5kZXgpIHsKLSAgICAgICAgYXV0byogYnVja2V0ID0gYnVmZmVy
ICsgaW5kZXg7Ci0gICAgICAgIGlmIChidWNrZXQtPmlzRW1wdHkoKSB8fCBidWNrZXQtPmlzRGVs
ZXRlZCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKEhlYXA6OmlzTWFy
a2VkKGJ1Y2tldC0+a2V5KCkpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgYnVj
a2V0LT5tYWtlRGVsZXRlZCgpOwotICAgICAgICArK21fZGVsZXRlQ291bnQ7Ci0gICAgICAgIFJF
TEVBU0VfQVNTRVJUKG1fa2V5Q291bnQgPiAwKTsKLSAgICAgICAgLS1tX2tleUNvdW50OwotICAg
IH0KLQotICAgIGlmIChzaG91bGRTaHJpbmsoKSkKLSAgICAgICAgcmVoYXNoKFJlaGFzaE1vZGU6
OlJlbW92ZUJhdGNoaW5nKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFdlYWtNYXBCdWNrZXQ+
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBcHBlbmRlcj4KIHZvaWQgV2Vha01hcEltcGw8V2Vha01hcEJ1
Y2tldD46OnRha2VTbmFwc2hvdEludGVybmFsKHVuc2lnbmVkIGxpbWl0LCBBcHBlbmRlciBhcHBl
bmRlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtN
YXBJbXBsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwSW1wbC5oCmlu
ZGV4IGUwMjUxMjdlYmI5MzRjNGQzMjAwNjU2YmU0NjVjYzI5ODZiOTc0OTEuLjUwYzA1M2NiZTEz
ODI3MmYyNzIyNzlkM2ZjNzg1NTdlYjdiYjIzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtNYXBJbXBsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha01hcEltcGwuaApAQCAtMjg4LDYgKzI4OCwyNiBAQCBjbGFzcyBXZWFrTWFw
SW1wbCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgICAgIHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoV2Vha01hcEltcGw8V2Vha01hcEJ1Y2tldFR5cGU+LCBtX2NhcGFjaXR5KTsK
ICAgICB9CiAKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNXZWFrTWFwKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBzdGQ6OmlzX3NhbWU8V2Vha01hcEJ1Y2tldFR5cGUsIEpTQzo6V2Vha01h
cEJ1Y2tldDxXZWFrTWFwQnVja2V0RGF0YUtleVZhbHVlPj46OnZhbHVlOworICAgIH0KKworICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1dlYWtTZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6aXNfc2FtZTxXZWFrTWFwQnVja2V0VHlwZSwgSlNDOjpXZWFrTWFwQnVja2V0PFdlYWtN
YXBCdWNrZXREYXRhS2V5Pj46OnZhbHVlOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQor
ICAgIHsKKyAgICAgICAgaWYgKGlzV2Vha01hcCgpKQorICAgICAgICAgICAgcmV0dXJuICZ2bS53
ZWFrTWFwU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ud2Vha1NldFNwYWNlOworICAgIH0KKwor
ICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mKTsKKwogcHJpdmF0ZToKICAgICBB
TFdBWVNfSU5MSU5FIFdlYWtNYXBCdWNrZXRUeXBlKiBmaW5kQnVja2V0KEpTT2JqZWN0KiBrZXkp
CiAgICAgewpAQCAtNDQ2LDcgKzQ2Niw3IEBAIGNsYXNzIFdlYWtNYXBJbXBsIDogcHVibGljIEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBcHBlbmRlcj4KICAg
ICB2b2lkIHRha2VTbmFwc2hvdEludGVybmFsKHVuc2lnbmVkIGxpbWl0LCBBcHBlbmRlcik7CiAK
LSAgICBjbGFzcyBEZWFkS2V5Q2xlYW5lciA6IHB1YmxpYyBVbmNvbmRpdGlvbmFsRmluYWxpemVy
LCBwdWJsaWMgV2Vha1JlZmVyZW5jZUhhcnZlc3RlciB7CisgICAgY2xhc3MgRGVhZEtleUNsZWFu
ZXIgOiBwdWJsaWMgV2Vha1JlZmVyZW5jZUhhcnZlc3RlciB7CiAgICAgcHVibGljOgogICAgICAg
ICBXZWFrTWFwSW1wbCogdGFyZ2V0KCkKICAgICAgICAgewpAQCAtNDU4LDE1ICs0NzgsOSBAQCBj
bGFzcyBXZWFrTWFwSW1wbCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgICAg
IHsKICAgICAgICAgICAgIHRhcmdldCgpLT52aXNpdFdlYWtSZWZlcmVuY2VzKHZpc2l0b3IpOwog
ICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpIG92ZXJy
aWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRhcmdldCgpLT5maW5hbGl6ZVVuY29uZGl0aW9u
YWxseSgpOwotICAgICAgICB9CiAgICAgfTsKIAogICAgIHZvaWQgdmlzaXRXZWFrUmVmZXJlbmNl
cyhTbG90VmlzaXRvciYpOwotICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKTsKIAog
ICAgIE1hbGxvY1B0cjxXZWFrTWFwQnVmZmVyVHlwZSwgSlNWYWx1ZU1hbGxvYz4gbV9idWZmZXI7
CiAgICAgdWludDMyX3QgbV9rZXlDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtNYXBJbXBsSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha01hcEltcGxJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2UzYmY3ODI3OTYwMjk1
NmI3ZTUwOTA0ZjIyM2IwYmViNDllZGIyZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBJbXBsSW5saW5lcy5oCkBAIC0wLDAgKzEsNTUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWFrTWFwSW1wbC5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworLy8gTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gY2FuIGJlIGV4ZWN1dGVkIGluIHBhcmFsbGVs
IGFzIGxvbmcgYXMgdGhlIG11dGF0b3Igc3RvcHMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgV2Vha01h
cEJ1Y2tldD4KK2lubGluZSB2b2lkIFdlYWtNYXBJbXBsPFdlYWtNYXBCdWNrZXQ+OjpmaW5hbGl6
ZVVuY29uZGl0aW9uYWxseShWTSYpCit7CisgICAgYXV0byogYnVmZmVyID0gdGhpcy0+YnVmZmVy
KCk7CisgICAgZm9yICh1aW50MzJfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9jYXBhY2l0eTsgKytp
bmRleCkgeworICAgICAgICBhdXRvKiBidWNrZXQgPSBidWZmZXIgKyBpbmRleDsKKyAgICAgICAg
aWYgKGJ1Y2tldC0+aXNFbXB0eSgpIHx8IGJ1Y2tldC0+aXNEZWxldGVkKCkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQoYnVja2V0LT5rZXkoKSkp
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBidWNrZXQtPm1ha2VEZWxldGVkKCk7
CisgICAgICAgICsrbV9kZWxldGVDb3VudDsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9rZXlD
b3VudCA+IDApOworICAgICAgICAtLW1fa2V5Q291bnQ7CisgICAgfQorCisgICAgaWYgKHNob3Vs
ZFNocmluaygpKQorICAgICAgICByZWhhc2goUmVoYXNoTW9kZTo6UmVtb3ZlQmF0Y2hpbmcpOwor
fQorCit9Cg==
</data>
<flag name="review"
          id="348679"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>