<?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>189401</bug_id>
          
          <creation_ts>2018-09-07 02:42:45 -0700</creation_ts>
          <short_desc>[WebAssembly] Optimize JS to Wasm call by using pointer of Signature as SignatureIndex</short_desc>
          <delta_ts>2018-09-13 14:12:47 -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>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>ews-watchlist</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>1457452</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-07 02:42:45 -0700</bug_when>
    <thetext>[WebAssembly] Optimize JS to Wasm call by using pointer of Signature as SignatureIndex</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457454</commentid>
    <comment_count>1</comment_count>
      <attachid>349131</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-07 02:52:02 -0700</bug_when>
    <thetext>Created attachment 349131
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457458</commentid>
    <comment_count>2</comment_count>
      <attachid>349134</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-07 03:11:30 -0700</bug_when>
    <thetext>Created attachment 349134
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457463</commentid>
    <comment_count>3</comment_count>
      <attachid>349136</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-07 05:17:05 -0700</bug_when>
    <thetext>Created attachment 349136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457466</commentid>
    <comment_count>4</comment_count>
      <attachid>349137</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-07 05:29:40 -0700</bug_when>
    <thetext>Created attachment 349137
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457467</commentid>
    <comment_count>5</comment_count>
      <attachid>349138</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-07 05:34:42 -0700</bug_when>
    <thetext>Created attachment 349138
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457468</commentid>
    <comment_count>6</comment_count>
      <attachid>349139</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-07 05:35:27 -0700</bug_when>
    <thetext>Created attachment 349139
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457469</commentid>
    <comment_count>7</comment_count>
      <attachid>349140</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-07 05:53:28 -0700</bug_when>
    <thetext>Created attachment 349140
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457474</commentid>
    <comment_count>8</comment_count>
      <attachid>349143</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-07 06:41:29 -0700</bug_when>
    <thetext>Created attachment 349143
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457526</commentid>
    <comment_count>9</comment_count>
      <attachid>349143</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-09-07 10:19:31 -0700</bug_when>
    <thetext>Comment on attachment 349143
Patch

r=me.  I think you should remove Signature::firstValidIndex since it is no longer used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457527</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-07 10:23:01 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #9)
&gt; Comment on attachment 349143 [details]
&gt; Patch
&gt; 
&gt; r=me.  I think you should remove Signature::firstValidIndex since it is no
&gt; longer used.

Right! Thanks. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457529</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-07 10:29:09 -0700</bug_when>
    <thetext>Committed r235786: &lt;https://trac.webkit.org/changeset/235786&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457531</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-07 10:30:44 -0700</bug_when>
    <thetext>&lt;rdar://problem/44228602&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459524</commentid>
    <comment_count>13</comment_count>
      <attachid>349143</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-09-13 14:12:47 -0700</bug_when>
    <thetext>Comment on attachment 349143
Patch

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

Nice change.

The only thing that&apos;s weird to me is that we&apos;re still calling it an index. We should revise the name since the old name indicated an implementation style. But we&apos;re no longer using it as an index. Maybe we could call it something like UniqueSignature.

&gt; Source/JavaScriptCore/ChangeLog:20
&gt; +        This change significantly optimizes JS to wasm calls (1e7 times) from 600ms to 320ms.

Our wasm entry is so slow :(</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349131</attachid>
            <date>2018-09-07 02:52:02 -0700</date>
            <delta_ts>2018-09-07 03:11:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189401-20180907185201.patch</filename>
            <type>text/plain</type>
            <size>24464</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1Nzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OTQ2MDg3MWZlNjkwN2QyNzFhNGQwMDg2ZjIzNTRhODU4OTk4YmJkLi5mNDI3NTFkY2RlZGZlOTQ5
Yjg2MjU5YmM5MDNiMWI1YzZkOGJjMWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAxOC0wOS0wNyAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtXZWJBc3NlbWJseV0gT3B0aW1pemUgSlMgdG8gV2FzbSBj
YWxsIGJ5IHVzaW5nIHBvaW50ZXIgb2YgU2lnbmF0dXJlIGFzIFNpZ25hdHVyZUluZGV4CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk0MDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaWduYXR1cmVJbmZv
cm1hdGlvbiBpcyBhIGdsb2JhbCByZXBvc2l0b3J5IGZvciBTaWduYXR1cmUgdG8gbWFrZSBTaWdu
YXR1cmUgYXRvbWljLgorICAgICAgICBJdCB0YWtlcyBSZWY8U2lnbmF0dXJlPiYmIGFuZCBnZW5l
cmF0ZXMgU2lnbmF0dXJlSW5kZXguIEFuZCB3ZSBnZXQgY29uc3QgU2lnbmF0dXJlJgorICAgICAg
ICBieSB1c2luZyB0aGlzIFNpZ25hdHVyZUluZGV4LiBIb3dldmVyLCBjb252ZXJ0aW5nIFNpZ25h
dHVyZUluZGV4IHRvIGNvbnN0IFNpZ25hdHVyZSYKKyAgICAgICAgYWx3YXlzIGxvb2tzIHVwIGEg
aGFzaCB0YWJsZS4gVGhpcyBpcyBjb3N0bHkgc2luY2UgSlMgdG8gV2FzbSBjYWxscyBhbHdheXMg
dXNlCisgICAgICAgIFNpZ25hdHVyZSYgdG8gY2hlY2sgdHlwZXMgb2YgYXJndW1lbnRzLgorCisg
ICAgICAgIEluc3RlYWQgb2YgdXNpbmcgdGhpcyBoYXNoIHRhYmxlLCB0aGlzIHBhdGNoIHVzZXMg
YSBwb2ludGVyIG9mIFNpZ25hdHVyZSBhcyBTaWduYXR1cmVJbmRleC4KKyAgICAgICAgVGhpcyBh
bGxvd3MgdXMgdG8gY29udmVydCBTaWduYXR1cmVJbmRleCB0byBTaWduYXR1cmUgYnkganVzdCBj
YXN0aW5nIGl0LiBJdCBzaWduaWZpY2FudGx5CisgICAgICAgIG9wdGltaXplcyBKUyB0byB3YXNt
IGNhbGxzIGZyb20gNjAwbXMgdG8gNDAwbXMuCisKKyAgICAgICAgSW4gdGhlIGZ1dHVyZSwgd2Ug
Y2FuIHJlbW92ZSBTaWduYXR1cmVJbmRleCBieSBkaXJlY3RseSBoYW5kbGluZyBSZWY8U2lnbmF0
dXJlPjogYWRkaW5nCisgICAgICAgIGRlcmVmKCkgb2YgU2lnbmF0dXJlIHdoaWNoIHVucmVnaXN0
ZXJzIGl0c2VsZiBmcm9tIFNpZ25hdHVyZUluZm9ybWF0aW9uIGNhcmVmdWxseS4KKworICAgICAg
ICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lS
R2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QpOgorICAgICAgICAqIHdhc20vV2FzbUJCUVBsYW4u
Y3BwOgorICAgICAgICAqIHdhc20vV2FzbUZvcm1hdC5oOgorICAgICAgICAoSlNDOjpXYXNtOjpX
YXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjpvZmZzZXRPZlNpZ25hdHVyZUluZGV4KToKKyAg
ICAgICAgKiB3YXNtL1dhc21GdW5jdGlvblBhcnNlci5oOgorICAgICAgICAqIHdhc20vV2FzbU1v
ZHVsZS5oOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgorICAgICAgICAqIHdhc20v
V2FzbVNlY3Rpb25QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2Vy
OjpwYXJzZVR5cGUpOgorICAgICAgICAqIHdhc20vV2FzbVNpZ25hdHVyZS5jcHA6CisgICAgICAg
IChKU0M6Oldhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjphZG9wdCk6CisgICAgICAgIChKU0M6
Oldhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjp0cnlDbGVhbnVwKToKKyAgICAgICAgKEpTQzo6
V2FzbTo6U2lnbmF0dXJlSW5mb3JtYXRpb246OnNpbmdsZXRvbik6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6Oldhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQpOiBEZWxldGVkLgorICAgICAg
ICAqIHdhc20vV2FzbVNpZ25hdHVyZS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpTaWduYXR1cmU6
OmluZGV4IGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2lnbmF0dXJlSGFzaDo6U2lnbmF0
dXJlSGFzaCk6CisgICAgICAgIChKU0M6Oldhc206OlNpZ25hdHVyZUhhc2g6OmlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2lnbmF0dXJlSGFzaDo6
ZW1wdHkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpTaWduYXR1cmVIYXNoOjpkZWxl
dGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL1dhc21TaWduYXR1cmVJbmxpbmVzLmg6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6c2luZ2xldG9u
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2lnbmF0dXJlSW5mb3JtYXRpb246OmdldCk6CisgICAg
ICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5TW9kdWxlLmg6CisgICAgICAgICogd2FzbS9qcy9XYXNtVG9KUy5jcHA6CisgICAgICAgIChK
U0M6Oldhc206Ondhc21Ub0pTKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rp
b24uY3BwOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwOgor
ICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwOgorCiAyMDE4
LTA5LTA2ICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CiAKICAg
ICAgICAgW1dlYkFzc2VtYmx5XSBPcHRpbWl6ZSBKUyB0byBXYXNtIGNhbGwgYnkgcmVtb3Zpbmcg
VmVjdG9yIGFsbG9jYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21C
M0lSR2VuZXJhdG9yLmNwcAppbmRleCAzZTdjZTYwYWQ3NGIwMDIwNDc0YTg2OTkzZGE3NmU3MTgw
ZGM2ZjI0Li5lMGJjMTU5OTMyMGMwZTI3NmRhNjU4MDNmYWQyZTRkMzI5OGJjMDVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC01
OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgogI2luY2x1ZGUgIldhc21PTUdQ
bGFuLmgiCiAjaW5jbHVkZSAiV2FzbU9wY29kZU9yaWdpbi5oIgorI2luY2x1ZGUgIldhc21TaWdu
YXR1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2FzbVRodW5rcy5oIgogI2luY2x1ZGUgPGxpbWl0
cz4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KQEAgLTEyMjksMTMgKzEyMzAsMTMgQEAgYXV0
byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1
cmUsIFZlY3RvcjxFeHByZXNzaW8KIAogICAgICAgICAvLyBDaGVjayB0aGF0IHRoZSBXYXNtVG9X
YXNtSW1wb3J0YWJsZUZ1bmN0aW9uIGlzIGluaXRpYWxpemVkLiBXZSB0cmFwIGlmIGl0IGlzbid0
LiBBbiAiaW52YWxpZCIgU2lnbmF0dXJlSW5kZXggaW5kaWNhdGVzIGl0J3Mgbm90IGluaXRpYWxp
emVkLgogICAgICAgICAvLyBGSVhNRTogd2hlbiB3ZSBoYXZlIHRyYXAgaGFuZGxlcnMsIHdlIGNh
biBqdXN0IGxldCB0aGUgY2FsbCBmYWlsIGJlY2F1c2UgU2lnbmF0dXJlOjppbnZhbGlkSW5kZXgg
aXMgMC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzIxMAotICAg
ICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjpz
aWduYXR1cmVJbmRleCkgPT0gc2l6ZW9mKHVpbnQzMl90KSwgIkxvYWQgY29kZWdlbiBhc3N1bWVz
IGkzMiIpOwotICAgICAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVTaWduYXR1cmVJbmRleCA9IG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgSW50MzIs
IG9yaWdpbigpLCBjYWxsYWJsZUZ1bmN0aW9uLCBzYWZlQ2FzdDxpbnQzMl90PihPQkpFQ1RfT0ZG
U0VUT0YoV2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbiwgc2lnbmF0dXJlSW5kZXgpKSk7Cisg
ICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb246
OnNpZ25hdHVyZUluZGV4KSA9PSBzaXplb2YodWludDY0X3QpLCAiTG9hZCBjb2RlZ2VuIGFzc3Vt
ZXMgaTY0Iik7CisgICAgICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZVNpZ25hdHVyZUluZGV4ID0g
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQ2
NCwgb3JpZ2luKCksIGNhbGxhYmxlRnVuY3Rpb24sIHNhZmVDYXN0PGludDMyX3Q+KFdhc21Ub1dh
c21JbXBvcnRhYmxlRnVuY3Rpb246Om9mZnNldE9mU2lnbmF0dXJlSW5kZXgoKSkpOwogICAgICAg
ICB7CiAgICAgICAgICAgICBDaGVja1ZhbHVlKiBjaGVjayA9IG1fY3VycmVudEJsb2NrLT5hcHBl
bmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2luKCksCiAgICAgICAgICAgICAg
ICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVhbCwgb3JpZ2lu
KCksCiAgICAgICAgICAgICAgICAgICAgIGNhbGxlZVNpZ25hdHVyZUluZGV4LAotICAgICAgICAg
ICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9j
LCBvcmlnaW4oKSwgU2lnbmF0dXJlOjppbnZhbGlkSW5kZXgpKSk7CisgICAgICAgICAgICAgICAg
ICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihtX3Byb2MsIG9yaWdp
bigpLCBTaWduYXR1cmU6OmludmFsaWRJbmRleCkpKTsKIAogICAgICAgICAgICAgY2hlY2stPnNl
dEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJikgewogICAgICAgICAgICAgICAgIHRoaXMtPmVtaXRFeGNlcHRpb25DaGVj
ayhqaXQsIEV4Y2VwdGlvblR5cGU6Ok51bGxUYWJsZUVudHJ5KTsKQEAgLTEyNDQsNyArMTI0NSw3
IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KGNvbnN0IFNpZ25hdHVyZSYg
c2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvCiAKICAgICAgICAgLy8gQ2hlY2sgdGhlIHNpZ25h
dHVyZSBtYXRjaGVzIHRoZSB2YWx1ZSB3ZSBleHBlY3QuCiAgICAgICAgIHsKLSAgICAgICAgICAg
IEV4cHJlc3Npb25UeXBlIGV4cGVjdGVkU2lnbmF0dXJlSW5kZXggPSBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgU2lnbmF0dXJlSW5mb3Jt
YXRpb246OmdldChzaWduYXR1cmUpKTsKKyAgICAgICAgICAgIEV4cHJlc3Npb25UeXBlIGV4cGVj
dGVkU2lnbmF0dXJlSW5kZXggPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0NjRWYWx1
ZT4obV9wcm9jLCBvcmlnaW4oKSwgU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmUp
KTsKICAgICAgICAgICAgIENoZWNrVmFsdWUqIGNoZWNrID0gbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBvcmlnaW4oKSwKICAgICAgICAgICAgICAg
ICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIE5vdEVxdWFsLCBvcmln
aW4oKSwgY2FsbGVlU2lnbmF0dXJlSW5kZXgsIGV4cGVjdGVkU2lnbmF0dXJlSW5kZXgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCmluZGV4IDQzYzhmNTYy
YWZhMWMzNjMzYTdlNmM2MWY0MDkyMmVjMGJlOTcyMTMuLjIyYTY1YzMxMTBjZmM4Y2RiOTRjZDEw
NWZiNmQ3YzNlNTNlNzcwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CQlFQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJR
UGxhbi5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJXYXNtRmF1bHRTaWduYWxIYW5k
bGVyLmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgogI2luY2x1ZGUgIldhc21Nb2R1bGVQYXJz
ZXIuaCIKKyNpbmNsdWRlICJXYXNtU2lnbmF0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIldhc21U
aWVyVXBDb3VudC5oIgogI2luY2x1ZGUgIldhc21WYWxpZGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9E
YXRhTG9nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9y
bWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKaW5kZXggZTQz
ZjRlZDkzNjE2N2ZmMjkzOGQ4MzdhMGNlMDg4ZDQzZDIwYTRlNi4uNDYzMjM5NGRiMmNlM2MyNThm
ZWRkNzZlYTAxM2ViYTVkMTc1YjczMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21G
b3JtYXQuaApAQCAtMjc2LDYgKzI3Niw3IEBAIHN0cnVjdCBJbnRlcm5hbEZ1bmN0aW9uIHsKIC8v
IG1lYW50IGFzIGZhc3QgbG9va3VwIHRhYmxlcyBmb3IgdGhlc2Ugb3Bjb2RlcyBhbmQgZG8gbm90
IG93biBjb2RlLgogc3RydWN0IFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb24gewogICAgIHVz
aW5nIExvYWRMb2NhdGlvbiA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxXYXNtRW50cnlQdHJUYWc+
KjsKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2lnbmF0dXJlSW5kZXgoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoV2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbiwgc2lnbmF0dXJl
SW5kZXgpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkVudHJ5cG9pbnRMb2FkTG9j
YXRpb24oKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoV2FzbVRvV2FzbUltcG9ydGFibGVGdW5j
dGlvbiwgZW50cnlwb2ludExvYWRMb2NhdGlvbik7IH0KIAogICAgIC8vIEZJWE1FOiBQYWNrIHNp
Z25hdHVyZSBpbmRleCBhbmQgY29kZSBwb2ludGVyIGludG8gb25lIDY0LWJpdCB2YWx1ZS4gU2Vl
IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NTExPi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXggODcz
NWNlOGU2YWNjYjM4ZTg0Yzg0YjdiOGUxMWQ1MzM3OWFiOGRiZS4uMDg4ZTcyOGNlNGNjNTRjZTNj
NjA2YjQwZjI1NWE2MDlkNTdiM2I5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCiAKICNpbmNsdWRlICJXYXNtUGFyc2VyLmgiCisjaW5jbHVkZSAiV2FzbVNpZ25h
dHVyZUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogCiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIFdhc20gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU1vZHVsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5o
CmluZGV4IGZhMzZhNjliODAzOTE1ZDYxYzM5NmZjMWIzZjliYzc2NDIwMGU2MzIuLjY1MmRkZDM3
ZGI4ZTU3ODhkMDU4NzVkMmMyZGZjN2ZhZGM5ZTczNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtTW9kdWxlLmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IENvbnRleHQ7CiBzdHJ1
Y3QgTW9kdWxlSW5mb3JtYXRpb247CiBjbGFzcyBQbGFuOwogCi11c2luZyBTaWduYXR1cmVJbmRl
eCA9IHVpbnQzMl90OwordXNpbmcgU2lnbmF0dXJlSW5kZXggPSB1aW50NjRfdDsKIAogY2xhc3Mg
TW9kdWxlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1vZHVsZT4gewogcHVibGljOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCmluZGV4IDllMGM0YTU2
NjZlNDRlMGVhY2MyMzEyYWJiYjc2NTQ1M2I4NzlmNDguLmUzMWI0NzFiNzkyNTJkY2VjZTY3ZjZm
YWZkZjA2YjcxNDgzMzI3YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21PTUdQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01H
UGxhbi5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJXYXNtTWFjaGluZVRocmVhZHMu
aCIKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2FzbU5hbWVTZWN0aW9uLmgi
CisjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJXYXNtVmFsaWRh
dGUuaCIKICNpbmNsdWRlICJXYXNtV29ya2xpc3QuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3Bw
CmluZGV4IDlhOWJhY2I2N2RlZDI1MDQ1MzVkOGMyZGU1YzVlZDgzM2RlZjE2MDIuLmFlODcyNWQw
NzljYzNjOWM4ODIwMDQ3MGRjMGJmZjdiZTc2NDRmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNp
bmNsdWRlICJXYXNtTmFtZVNlY3Rpb25QYXJzZXIuaCIKICNpbmNsdWRlICJXYXNtT3BzLmgiCiAj
aW5jbHVkZSAiV2FzbVNlY3Rpb25zLmgiCisjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMu
aCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIApAQCAtNzUsOCArNzYsNyBA
QCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlVHlwZSgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAg
ICAgICAgIHJldHVyblR5cGUgPSBUeXBlOjpWb2lkOwogICAgICAgICBzaWduYXR1cmUtPnJldHVy
blR5cGUoKSA9IHJldHVyblR5cGU7CiAKLSAgICAgICAgc3RkOjpwYWlyPFNpZ25hdHVyZUluZGV4
LCBSZWY8U2lnbmF0dXJlPj4gcmVzdWx0ID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmFkb3B0KFdU
Rk1vdmUoc2lnbmF0dXJlKSk7Ci0gICAgICAgIG1faW5mby0+dXNlZFNpZ25hdHVyZXMudW5jaGVj
a2VkQXBwZW5kKFdURk1vdmUocmVzdWx0LnNlY29uZCkpOworICAgICAgICBtX2luZm8tPnVzZWRT
aWduYXR1cmVzLnVuY2hlY2tlZEFwcGVuZChTaWduYXR1cmVJbmZvcm1hdGlvbjo6YWRvcHQoV1RG
TW92ZShzaWduYXR1cmUpKSk7CiAgICAgfQogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuY3BwCmluZGV4IDZhNDJkNTE3MTk1ZWE0
ZmI2MWQ5MmIxMGM4Y2MzNzczNjdjMmViOWQuLjI5Y2UyMTM3NTIxM2MzMTQ1NWFhMzNhMjk1ZThm
ODZlNGQ5YjRlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21T
aWduYXR1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1
cmUuY3BwCkBAIC00MSw2ICs0MSw5IEBAIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxz
ZTsKIH0KIH0KIAorU2lnbmF0dXJlSW5mb3JtYXRpb24qIFNpZ25hdHVyZUluZm9ybWF0aW9uOjp0
aGVPbmUgeyBudWxscHRyIH07CitzdGQ6Om9uY2VfZmxhZyBTaWduYXR1cmVJbmZvcm1hdGlvbjo6
c2lnbmF0dXJlSW5mb3JtYXRpb25GbGFnOworCiBTdHJpbmcgU2lnbmF0dXJlOjp0b1N0cmluZygp
IGNvbnN0CiB7CiAgICAgU3RyaW5nIHJlc3VsdChtYWtlU3RyaW5nKHJldHVyblR5cGUoKSkpOwpA
QCAtODMsNjAgKzg2LDIyIEBAIFNpZ25hdHVyZUluZm9ybWF0aW9uOjpTaWduYXR1cmVJbmZvcm1h
dGlvbigpCiB7CiB9CiAKLVNpZ25hdHVyZUluZm9ybWF0aW9uJiBTaWduYXR1cmVJbmZvcm1hdGlv
bjo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0aWMgU2lnbmF0dXJlSW5mb3JtYXRpb24qIHRoZU9u
ZTsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgc2lnbmF0dXJlSW5mb3JtYXRpb25GbGFnOwot
ICAgIHN0ZDo6Y2FsbF9vbmNlKHNpZ25hdHVyZUluZm9ybWF0aW9uRmxhZywgW10gKCkgewotICAg
ICAgICB0aGVPbmUgPSBuZXcgU2lnbmF0dXJlSW5mb3JtYXRpb247Ci0gICAgfSk7Ci0KLSAgICBy
ZXR1cm4gKnRoZU9uZTsKLX0KLQotc3RkOjpwYWlyPFNpZ25hdHVyZUluZGV4LCBSZWY8U2lnbmF0
dXJlPj4gU2lnbmF0dXJlSW5mb3JtYXRpb246OmFkb3B0KFJlZjxTaWduYXR1cmU+JiYgc2lnbmF0
dXJlKQorUmVmPFNpZ25hdHVyZT4gU2lnbmF0dXJlSW5mb3JtYXRpb246OmFkb3B0KFJlZjxTaWdu
YXR1cmU+JiYgc2lnbmF0dXJlKQogewogICAgIFNpZ25hdHVyZUluZm9ybWF0aW9uJiBpbmZvID0g
c2luZ2xldG9uKCk7CiAgICAgTG9ja0hvbGRlciBsb2NrKGluZm8ubV9sb2NrKTsKIAotICAgIFNp
Z25hdHVyZUluZGV4IG5leHRWYWx1ZSA9IGluZm8ubV9uZXh0SW5kZXg7Ci0gICAgYXV0byBhZGRS
ZXN1bHQgPSBpbmZvLm1fc2lnbmF0dXJlTWFwLmFkZChTaWduYXR1cmVIYXNoIHsgc2lnbmF0dXJl
LnB0cigpIH0sIG5leHRWYWx1ZSk7CisgICAgU2lnbmF0dXJlSW5kZXggbmV4dFZhbHVlID0gc2ln
bmF0dXJlLT5pbmRleCgpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gaW5mby5tX3NpZ25hdHVyZVNl
dC5hZGQoU2lnbmF0dXJlSGFzaCB7IHNpZ25hdHVyZS5jb3B5UmVmKCkgfSk7CiAgICAgaWYgKGFk
ZFJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgICsraW5mby5tX25leHRJbmRleDsKLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoaW5mby5tX25leHRJbmRleCA+IG5leHRWYWx1ZSk7IC8vIGNyYXNo
IG9uIG92ZXJmbG93LgotICAgICAgICBBU1NFUlQobmV4dFZhbHVlID09IGFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWUpOwogICAgICAgICBpZiAoV2FzbVNpZ25hdHVyZUludGVybmFsOjp2ZXJib3Nl
KQotICAgICAgICAgICAgZGF0YUxvZ0xuKCJBZG9wdCBuZXcgc2lnbmF0dXJlICIsIHNpZ25hdHVy
ZS5nZXQoKSwgIiB3aXRoIGluZGV4ICIsIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUsICIgaGFz
aDogIiwgc2lnbmF0dXJlLT5oYXNoKCkpOwotCi0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gaW5m
by5tX2luZGV4TWFwLmFkZChuZXh0VmFsdWUsIHNpZ25hdHVyZS5jb3B5UmVmKCkpOwotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgICAgIEFTU0VSVChp
bmZvLm1faW5kZXhNYXAuc2l6ZSgpID09IGluZm8ubV9zaWduYXR1cmVNYXAuc2l6ZSgpKTsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG5leHRWYWx1ZSwgV1RGTW92ZShzaWduYXR1cmUp
KTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiQWRvcHQgbmV3IHNpZ25hdHVyZSAiLCBzaWduYXR1
cmUuZ2V0KCksICIgd2l0aCBpbmRleCAiLCBuZXh0VmFsdWUsICIgaGFzaDogIiwgc2lnbmF0dXJl
LT5oYXNoKCkpOworICAgICAgICByZXR1cm4gV1RGTW92ZShzaWduYXR1cmUpOwogICAgIH0KKyAg
ICBuZXh0VmFsdWUgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPmtleS0+aW5kZXgoKTsKICAgICBpZiAo
V2FzbVNpZ25hdHVyZUludGVybmFsOjp2ZXJib3NlKQotICAgICAgICBkYXRhTG9nTG4oIkV4aXN0
aW5nIHNpZ25hdHVyZSAiLCBzaWduYXR1cmUuZ2V0KCksICIgd2l0aCBpbmRleCAiLCBhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLCAiIGhhc2g6ICIsIHNpZ25hdHVyZS0+aGFzaCgpKTsKLSAgICBB
U1NFUlQoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSAhPSBTaWduYXR1cmU6OmludmFsaWRJbmRl
eCk7Ci0gICAgQVNTRVJUKGluZm8ubV9pbmRleE1hcC5jb250YWlucyhhZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUsIFJlZjxTaWduYXR1cmU+KCppbmZvLm1faW5kZXhNYXAuZ2V0KGFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWUpKSk7Ci19Ci0KLWNvbnN0IFNpZ25hdHVyZSYgU2lnbmF0dXJlSW5mb3Jt
YXRpb246OmdldChTaWduYXR1cmVJbmRleCBpbmRleCkKLXsKLSAgICBBU1NFUlQoaW5kZXggIT0g
U2lnbmF0dXJlOjppbnZhbGlkSW5kZXgpOwotICAgIFNpZ25hdHVyZUluZm9ybWF0aW9uJiBpbmZv
ID0gc2luZ2xldG9uKCk7Ci0gICAgTG9ja0hvbGRlciBsb2NrKGluZm8ubV9sb2NrKTsKLQotICAg
IHJldHVybiAqaW5mby5tX2luZGV4TWFwLmdldChpbmRleCk7Ci19Ci0KLVNpZ25hdHVyZUluZGV4
IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpCi17
Ci0gICAgU2lnbmF0dXJlSW5mb3JtYXRpb24mIGluZm8gPSBzaW5nbGV0b24oKTsKLSAgICBMb2Nr
SG9sZGVyIGxvY2soaW5mby5tX2xvY2spOwotCi0gICAgYXV0byByZXN1bHQgPSBpbmZvLm1fc2ln
bmF0dXJlTWFwLmdldChTaWduYXR1cmVIYXNoIHsgJnNpZ25hdHVyZSB9KTsKLSAgICBBU1NFUlQo
cmVzdWx0ICE9IFNpZ25hdHVyZTo6aW52YWxpZEluZGV4KTsKLSAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICBkYXRhTG9nTG4oIkV4aXN0aW5nIHNpZ25hdHVyZSAiLCBzaWduYXR1cmUuZ2V0KCks
ICIgd2l0aCBpbmRleCAiLCBuZXh0VmFsdWUsICIgaGFzaDogIiwgc2lnbmF0dXJlLT5oYXNoKCkp
OworICAgIHJldHVybiBSZWY8U2lnbmF0dXJlPigqYWRkUmVzdWx0Lml0ZXJhdG9yLT5rZXkpOwog
fQogCiB2b2lkIFNpZ25hdHVyZUluZm9ybWF0aW9uOjp0cnlDbGVhbnVwKCkKQEAgLTE0NCwyNCAr
MTA5LDEwIEBAIHZvaWQgU2lnbmF0dXJlSW5mb3JtYXRpb246OnRyeUNsZWFudXAoKQogICAgIFNp
Z25hdHVyZUluZm9ybWF0aW9uJiBpbmZvID0gc2luZ2xldG9uKCk7CiAgICAgTG9ja0hvbGRlciBs
b2NrKGluZm8ubV9sb2NrKTsKIAotICAgIFZlY3RvcjxzdGQ6OnBhaXI8U2lnbmF0dXJlSW5kZXgs
IFNpZ25hdHVyZSo+PiB0b1JlbW92ZTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBpbmZv
Lm1faW5kZXhNYXApIHsKLSAgICAgICAgY29uc3QgUmVmPFNpZ25hdHVyZT4mIHNpZ25hdHVyZSA9
IHBhaXIudmFsdWU7Ci0gICAgICAgIGlmIChzaWduYXR1cmUtPnJlZkNvdW50KCkgPT0gMSkgewot
ICAgICAgICAgICAgLy8gV2UncmUgdGhlIG9ubHkgb3duZXIuCi0gICAgICAgICAgICB0b1JlbW92
ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIocGFpci5rZXksIHNpZ25hdHVyZS5wdHIoKSkpOwotICAg
ICAgICB9Ci0gICAgfQotICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IHRvUmVtb3ZlKSB7Ci0g
ICAgICAgIGJvb2wgcmVtb3ZlZCA9IGluZm8ubV9zaWduYXR1cmVNYXAucmVtb3ZlKFNpZ25hdHVy
ZUhhc2ggeyBwYWlyLnNlY29uZCB9KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkLCBy
ZW1vdmVkKTsKLSAgICAgICAgcmVtb3ZlZCA9IGluZm8ubV9pbmRleE1hcC5yZW1vdmUocGFpci5m
aXJzdCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZCwgcmVtb3ZlZCk7Ci0gICAgfQot
ICAgIGlmIChpbmZvLm1fc2lnbmF0dXJlTWFwLmlzRW1wdHkoKSkgewotICAgICAgICBBU1NFUlQo
aW5mby5tX2luZGV4TWFwLmlzRW1wdHkoKSk7Ci0gICAgICAgIGluZm8ubV9uZXh0SW5kZXggPSBT
aWduYXR1cmU6OmZpcnN0VmFsaWRJbmRleDsKLSAgICB9CisgICAgaW5mby5tX3NpZ25hdHVyZVNl
dC5yZW1vdmVJZihbJl0gKGF1dG8mIGhhc2gpIHsKKyAgICAgICAgY29uc3QgYXV0byYgc2lnbmF0
dXJlID0gaGFzaC5rZXk7CisgICAgICAgIHJldHVybiBzaWduYXR1cmUtPnJlZkNvdW50KCkgPT0g
MTsKKyAgICB9KTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuaAppbmRleCA5ZjQ5Y2NiMTQ1NjhkMjAxZjFm
OGFkY2VlZmIwYzEzMzFlYjc3ZjBiLi45OTljZGE5ODg5ODg1OTNjODlhNzEzNTdmNWFlNjIxZjRj
YWMxYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0
dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5oCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8Y3N0cmluZz4KICNpbmNsdWRlIDx3dGYvQ2hlY2tl
ZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC00
Nyw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogbmFtZXNwYWNlIFdhc20gewogCiB1c2luZyBT
aWduYXR1cmVBcmdDb3VudCA9IHVpbnQzMl90OwotdXNpbmcgU2lnbmF0dXJlSW5kZXggPSB1aW50
MzJfdDsKK3VzaW5nIFNpZ25hdHVyZUluZGV4ID0gdWludDY0X3Q7CiAKIGNsYXNzIFNpZ25hdHVy
ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaWduYXR1cmU+IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKQEAgLTgxLDYgKzgyLDcgQEAgY2xhc3MgU2lnbmF0dXJlIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNpZ25hdHVyZT4gewogICAgICAgICByZXR1cm4gKnN0
b3JhZ2UocmV0dXJuQ291bnQoKSArIGkpOwogICAgIH0KICAgICBUeXBlIGFyZ3VtZW50KFNpZ25h
dHVyZUFyZ0NvdW50IGkpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8U2lnbmF0dXJlKj4odGhp
cyktPmFyZ3VtZW50KGkpOyB9CisgICAgU2lnbmF0dXJlSW5kZXggaW5kZXgoKSBjb25zdCB7IHJl
dHVybiBiaXR3aXNlX2Nhc3Q8U2lnbmF0dXJlSW5kZXg+KHRoaXMpOyB9CiAKICAgICBXVEY6OlN0
cmluZyB0b1N0cmluZygpIGNvbnN0OwogICAgIHZvaWQgZHVtcChXVEY6OlByaW50U3RyZWFtJiBv
dXQpIGNvbnN0OwpAQCAtMTExLDI4ICsxMTMsMjEgQEAgY2xhc3MgU2lnbmF0dXJlIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFNpZ25hdHVyZT4gewogfTsKIAogc3RydWN0IFNpZ25hdHVy
ZUhhc2ggewotICAgIGNvbnN0IFNpZ25hdHVyZSoga2V5OwotICAgIHN0YXRpYyBjb25zdCBTaWdu
YXR1cmUqIGVtcHR5KCkgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHN0YXRpYyBjb25zdCBTaWdu
YXR1cmUqIGRlbGV0ZWQoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IFNpZ25hdHVy
ZSo+KDEpOyB9Ci0gICAgU2lnbmF0dXJlSGFzaCgpCi0gICAgICAgIDoga2V5KGVtcHR5KCkpCisg
ICAgUmVmUHRyPFNpZ25hdHVyZT4ga2V5IHsgbnVsbHB0ciB9OworICAgIFNpZ25hdHVyZUhhc2go
KSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgU2lnbmF0dXJlSGFzaChSZWY8U2lnbmF0dXJlPiYm
IGtleSkKKyAgICAgICAgOiBrZXkoV1RGTW92ZShrZXkpKQogICAgIHsKICAgICB9Ci0gICAgZXhw
bGljaXQgU2lnbmF0dXJlSGFzaChjb25zdCBTaWduYXR1cmUqIGtleSkKLSAgICAgICAgOiBrZXko
a2V5KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGtleSAhPSBlbXB0eSgpKTsKLSAgICAgICAgQVNT
RVJUKGtleSAhPSBkZWxldGVkKCkpOwotICAgIH0KICAgICBleHBsaWNpdCBTaWduYXR1cmVIYXNo
KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICAgICAgOiBrZXkoZGVsZXRlZCgp
KQorICAgICAgICA6IGtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKICAgICB7CiAgICAg
fQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaWduYXR1cmVIYXNoJiByaHMpIGNvbnN0IHsg
cmV0dXJuIGVxdWFsKCp0aGlzLCByaHMpOyB9CiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
U2lnbmF0dXJlSGFzaCYgbGhzLCBjb25zdCBTaWduYXR1cmVIYXNoJiByaHMpIHsgcmV0dXJuIGxo
cy5rZXkgPT0gcmhzLmtleSB8fCAobGhzLmtleSAmJiByaHMua2V5ICYmICpsaHMua2V5ID09ICpy
aHMua2V5KTsgfQogICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNpZ25hdHVyZUhhc2gm
IHNpZ25hdHVyZSkgeyByZXR1cm4gc2lnbmF0dXJlLmtleS0+aGFzaCgpOyB9CiAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKLSAgICBi
b29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4ga2V5ID09IGRlbGV0
ZWQoKTsgfQorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVy
biBrZXkuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQogfTsKIAogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6Oldhc20KQEAgLTE2NSwxNiArMTYwLDE3IEBAIGNsYXNzIFNpZ25hdHVyZUluZm9ybWF0
aW9uIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgU2lnbmF0dXJlSW5mb3JtYXRpb24mIHNpbmdsZXRv
bigpOwogCi0gICAgc3RhdGljIHN0ZDo6cGFpcjxTaWduYXR1cmVJbmRleCwgUmVmPFNpZ25hdHVy
ZT4+IFdBUk5fVU5VU0VEX1JFVFVSTiBhZG9wdChSZWY8U2lnbmF0dXJlPiYmKTsKKyAgICBzdGF0
aWMgUmVmPFNpZ25hdHVyZT4gV0FSTl9VTlVTRURfUkVUVVJOIGFkb3B0KFJlZjxTaWduYXR1cmU+
JiYpOwogICAgIHN0YXRpYyBjb25zdCBTaWduYXR1cmUmIFdBUk5fVU5VU0VEX1JFVFVSTiBnZXQo
U2lnbmF0dXJlSW5kZXgpOwogICAgIHN0YXRpYyBTaWduYXR1cmVJbmRleCBXQVJOX1VOVVNFRF9S
RVRVUk4gZ2V0KGNvbnN0IFNpZ25hdHVyZSYpOwogICAgIHN0YXRpYyB2b2lkIHRyeUNsZWFudXAo
KTsKIAogcHJpdmF0ZToKLSAgICBIYXNoTWFwPFdhc206OlNpZ25hdHVyZUhhc2gsIFdhc206OlNp
Z25hdHVyZUluZGV4PiBtX3NpZ25hdHVyZU1hcDsKLSAgICBIYXNoTWFwPFdhc206OlNpZ25hdHVy
ZUluZGV4LCBSZWY8U2lnbmF0dXJlPj4gbV9pbmRleE1hcDsKLSAgICBTaWduYXR1cmVJbmRleCBt
X25leHRJbmRleCB7IFNpZ25hdHVyZTo6Zmlyc3RWYWxpZEluZGV4IH07CisgICAgSGFzaFNldDxX
YXNtOjpTaWduYXR1cmVIYXNoPiBtX3NpZ25hdHVyZVNldDsKICAgICBMb2NrIG1fbG9jazsKKwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTaWduYXR1cmVJbmZvcm1hdGlvbiogdGhlT25l
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBzaWduYXR1cmVJ
bmZvcm1hdGlvbkZsYWc7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZUlubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmVJbmxpbmVzLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTFhNTAxNDA1NmIwZDlkMjVkMjJmYzY0ZTQ2MmZhNmM1MWM0ODc0NAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmVJbmxpbmVz
LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBZdXN1a2Ug
U3V6dWtpIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4uCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2FzbVNp
Z25hdHVyZS5oIgorCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCituYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIFdhc20geworCitpbmxpbmUgU2lnbmF0dXJlSW5mb3JtYXRpb24mIFNpZ25hdHVy
ZUluZm9ybWF0aW9uOjpzaW5nbGV0b24oKQoreworICAgIHN0ZDo6Y2FsbF9vbmNlKHNpZ25hdHVy
ZUluZm9ybWF0aW9uRmxhZywgW10gKCkgeworICAgICAgICB0aGVPbmUgPSBuZXcgU2lnbmF0dXJl
SW5mb3JtYXRpb247CisgICAgfSk7CisgICAgcmV0dXJuICp0aGVPbmU7Cit9CisKK2lubGluZSBj
b25zdCBTaWduYXR1cmUmIFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoU2lnbmF0dXJlSW5kZXgg
aW5kZXgpCit7CisgICAgQVNTRVJUKGluZGV4ICE9IFNpZ25hdHVyZTo6aW52YWxpZEluZGV4KTsK
KyAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxjb25zdCBTaWduYXR1cmUqPihpbmRleCk7Cit9CisK
K2lubGluZSBTaWduYXR1cmVJbmRleCBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KGNvbnN0IFNp
Z25hdHVyZSYgc2lnbmF0dXJlKQoreworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAg
ICAgIFNpZ25hdHVyZUluZm9ybWF0aW9uJiBpbmZvID0gc2luZ2xldG9uKCk7CisgICAgICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2soaW5mby5tX2xvY2spOworICAgICAgICBBU1NFUlRfVU5VU0VE
KGluZm8sIGluZm8ubV9zaWduYXR1cmVTZXQuY29udGFpbnMoU2lnbmF0dXJlSGFzaCB7ICZzaWdu
YXR1cmUgfSkpOworICAgIH0KKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PFNpZ25hdHVyZUluZGV4
Pigmc2lnbmF0dXJlKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KKworI2VuZGlm
IC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTVG9XYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
VG9XYXNtLmNwcAppbmRleCBmY2I5YjBjNjE4YWU2OWUxNTExYTdmYTRjZjNiZjA2NTJkNmIzMTJk
Li4zNjRmN2M3NGJjMTlmYzU1YmYyYWQ2OWJhZDQ5MGVjZWVlZTkxOWRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgi
CiAjaW5jbHVkZSAiV2FzbUNhbGxpbmdDb252ZW50aW9uLmgiCisjaW5jbHVkZSAiV2FzbVNpZ25h
dHVyZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5o
CmluZGV4IGQzOTMwMDY5MTlkMjdhZDE3NDY5ZmUyNjk1ZGI4NDM4NDIzZDA4MmUuLjcyYTMwNjNh
NGIzN2M1NzBjZjk0MGQ3NmI1OWQxYzBjY2JjMDVlNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmgKQEAgLTQzLDcgKzQzLDcg
QEAgbmFtZXNwYWNlIFdhc20gewogY2xhc3MgTW9kdWxlOwogc3RydWN0IE1vZHVsZUluZm9ybWF0
aW9uOwogY2xhc3MgUGxhbjsKLXVzaW5nIFNpZ25hdHVyZUluZGV4ID0gdWludDMyX3Q7Cit1c2lu
ZyBTaWduYXR1cmVJbmRleCA9IHVpbnQ2NF90OwogfQogCiBjbGFzcyBTeW1ib2xUYWJsZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAppbmRleCAxMjcwYzc5YjFj
NDMxMGNjNWZjNjMwMjlhZTgzYmZiMThjNWUwM2M2Li5lZTAwZmM4OGUwY2FmMjU0NGQ5ZDc5ZWNj
OTNmNGUxMjMyNTM4YjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XYXNtVG9KUy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRv
SlMuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKICNpbmNs
dWRlICJXYXNtRXhjZXB0aW9uVHlwZS5oIgogI2luY2x1ZGUgIldhc21JbnN0YW5jZS5oIgorI2lu
Y2x1ZGUgIldhc21TaWduYXR1cmVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgV2FzbSB7CiAKQEAgLTMwMSw3ICszMDIsOCBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNKiB2bQog
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIzKTsKIAogICAgICAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86Om51bWJlck9m
QXJndW1lbnRSZWdpc3RlcnMgPj0gNCwgIldlIHJlbHkgb24gdGhpcyB3aXRoIHRoZSBjYWxsIGJl
bG93LiIpOwotICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUoY2FsbEZ1bmMpPihH
UFJJbmZvOjphcmd1bWVudEdQUjEsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHNpZ25hdHVy
ZUluZGV4KSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJ1ZmZlcikpOworICAgICAgICBz
dGF0aWNfYXNzZXJ0KHNpemVvZihTaWduYXR1cmVJbmRleCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwg
IkZvbGxvd2luZyBjb2RlIGFzc3VtZXMgU2lnbmF0dXJlSW5kZXggaXMgNjRiaXQuIik7CisgICAg
ICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShjYWxsRnVuYyk+KEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoc2lnbmF0dXJlSW5kZXgpLCBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYnVmZmVyKSk7CiAgICAgICAgIGF1dG8gY2FsbCA9IGpp
dC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAgICAgICAgIGF1dG8gbm9FeGNlcHRpb24gPSBqaXQu
ZW1pdEV4Y2VwdGlvbkNoZWNrKCp2bSwgQXNzZW1ibHlIZWxwZXJzOjpJbnZlcnRlZEV4Y2VwdGlv
bkNoZWNrKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUZ1bmN0aW9uLmNwcAppbmRleCAwMmI0YzI0YzQyYmNjZjEyZjgyM2FiMDc5NzUzYjA1
ZTVhM2FhNTRhLi41ZGI5MjRmOGVjZmIwM2E3ZTBiYTZmNWQwODQ4MjJiMzQ3MTFiYWM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0
aW9uLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCiAjaW5j
bHVkZSAiV2FzbUZvcm1hdC5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKKyNpbmNsdWRlICJX
YXNtU2lnbmF0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0VExTLmg+CiAjaW5jbHVk
ZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IGQ3NDQxN2Ni
MWE0YzFjYTNiMmYzOGVmYTIwNzdhNTM4YjE2NWVhMTIuLmU4Y2E1OGNiZjYwYWM0NmFiMjMwZWUz
ZGYwNGE1ZjRhMzAyOGYyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAK
ICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TGlua0Vycm9yLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3Nl
bWJseU1vZHVsZS5oIgogI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiV2Fz
bVNpZ25hdHVyZS5oIgorI2luY2x1ZGUgIldhc21TaWduYXR1cmVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiV2ViQXNzZW1ibHlGdW5jdGlvbi5oIgogI2luY2x1ZGUgPGxpbWl0cz4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rp
b24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVy
RnVuY3Rpb24uY3BwCmluZGV4IDM2ZjM3ODMwNmJlNzI3YzAyOTUzMWRiNDkyYThkMDA5MjcyOTFh
NmUuLjQ0NGVmYmY4YjRhN2EzNWY0MGYwMWNlYjRjNzllYzg0M2ViMTY0NmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJGdW5jdGlvblByb3Rv
dHlwZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5
SW5zdGFuY2UuaCIKKyNpbmNsdWRlICJXYXNtU2lnbmF0dXJlSW5saW5lcy5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349134</attachid>
            <date>2018-09-07 03:11:30 -0700</date>
            <delta_ts>2018-09-07 05:17:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189401-20180907191129.patch</filename>
            <type>text/plain</type>
            <size>24717</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1Nzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OTQ2MDg3MWZlNjkwN2QyNzFhNGQwMDg2ZjIzNTRhODU4OTk4YmJkLi44ZGU1YTk4MDg2MGQwMzVm
ZGMzMGNkY2VlZDBlNzI3MDE5MWZlYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NyBAQAorMjAxOC0wOS0wNyAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtXZWJBc3NlbWJseV0gT3B0aW1pemUgSlMgdG8gV2FzbSBj
YWxsIGJ5IHVzaW5nIHBvaW50ZXIgb2YgU2lnbmF0dXJlIGFzIFNpZ25hdHVyZUluZGV4CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk0MDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaWduYXR1cmVJbmZv
cm1hdGlvbiBpcyBhIGdsb2JhbCByZXBvc2l0b3J5IGZvciBTaWduYXR1cmUgdG8gbWFrZSBTaWdu
YXR1cmUgYXRvbWljLgorICAgICAgICBJdCB0YWtlcyBSZWY8U2lnbmF0dXJlPiYmIGFuZCBnZW5l
cmF0ZXMgU2lnbmF0dXJlSW5kZXguIEFuZCB3ZSBnZXQgY29uc3QgU2lnbmF0dXJlJgorICAgICAg
ICBieSB1c2luZyB0aGlzIFNpZ25hdHVyZUluZGV4LiBIb3dldmVyLCBjb252ZXJ0aW5nIFNpZ25h
dHVyZUluZGV4IHRvIGNvbnN0IFNpZ25hdHVyZSYKKyAgICAgICAgYWx3YXlzIGxvb2tzIHVwIGEg
aGFzaCB0YWJsZS4gVGhpcyBpcyBjb3N0bHkgc2luY2UgSlMgdG8gV2FzbSBjYWxscyBhbHdheXMg
dXNlCisgICAgICAgIFNpZ25hdHVyZSYgdG8gY2hlY2sgdHlwZXMgb2YgYXJndW1lbnRzLgorCisg
ICAgICAgIEluc3RlYWQgb2YgdXNpbmcgdGhpcyBoYXNoIHRhYmxlLCB0aGlzIHBhdGNoIHVzZXMg
YSBwb2ludGVyIG9mIFNpZ25hdHVyZSBhcyBTaWduYXR1cmVJbmRleC4KKyAgICAgICAgVGhpcyBh
bGxvd3MgdXMgdG8gY29udmVydCBTaWduYXR1cmVJbmRleCB0byBTaWduYXR1cmUgYnkganVzdCBj
YXN0aW5nIGl0LiBJdCBzaWduaWZpY2FudGx5CisgICAgICAgIG9wdGltaXplcyBKUyB0byB3YXNt
IGNhbGxzIGZyb20gNjAwbXMgdG8gNDAwbXMuIFdlIGFsc28gb3B0aW1pemUgU2lnbmF0dXJlSW5m
b3JtYXRpb246OnNpbmdsZXRvbgorICAgICAgICBieSBtYWtpbmcgYW4gYWNjZXNzb3IgZnVuY3Rp
b24gaW5saW5lZC4KKworICAgICAgICBJbiB0aGUgZnV0dXJlLCB3ZSBjYW4gcmVtb3ZlIFNpZ25h
dHVyZUluZGV4IGJ5IGRpcmVjdGx5IGhhbmRsaW5nIFJlZjxTaWduYXR1cmU+OiBhZGRpbmcKKyAg
ICAgICAgZGVyZWYoKSBvZiBTaWduYXR1cmUgd2hpY2ggdW5yZWdpc3RlcnMgaXRzZWxmIGZyb20g
U2lnbmF0dXJlSW5mb3JtYXRpb24gY2FyZWZ1bGx5LgorCisgICAgICAgICogd2FzbS9XYXNtQjNJ
UkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZENh
bGxJbmRpcmVjdCk6CisgICAgICAgICogd2FzbS9XYXNtQkJRUGxhbi5jcHA6CisgICAgICAgICog
d2FzbS9XYXNtRm9ybWF0Lmg6CisgICAgICAgIChKU0M6Oldhc206Oldhc21Ub1dhc21JbXBvcnRh
YmxlRnVuY3Rpb246Om9mZnNldE9mU2lnbmF0dXJlSW5kZXgpOgorICAgICAgICAqIHdhc20vV2Fz
bUZ1bmN0aW9uUGFyc2VyLmg6CisgICAgICAgICogd2FzbS9XYXNtTW9kdWxlLmg6CisgICAgICAg
ICogd2FzbS9XYXNtT01HUGxhbi5jcHA6CisgICAgICAgICogd2FzbS9XYXNtU2VjdGlvblBhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlVHlwZSk6Cisg
ICAgICAgICogd2FzbS9XYXNtU2lnbmF0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2ln
bmF0dXJlSW5mb3JtYXRpb246OmFkb3B0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2lnbmF0dXJl
SW5mb3JtYXRpb246OnRyeUNsZWFudXApOgorICAgICAgICAoSlNDOjpXYXNtOjpTaWduYXR1cmVJ
bmZvcm1hdGlvbjo6c2luZ2xldG9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6U2ln
bmF0dXJlSW5mb3JtYXRpb246OmdldCk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XYXNtU2ln
bmF0dXJlLmg6CisgICAgICAgIChKU0M6Oldhc206OlNpZ25hdHVyZTo6aW5kZXggY29uc3QpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpTaWduYXR1cmVIYXNoOjpTaWduYXR1cmVIYXNoKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6U2lnbmF0dXJlSGFzaDo6aGFzaCk6CisgICAgICAgIChKU0M6Oldhc206
OlNpZ25hdHVyZUhhc2g6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6V2FzbTo6U2lnbmF0dXJlSGFzaDo6ZW1wdHkpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpXYXNtOjpTaWduYXR1cmVIYXNoOjpkZWxldGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNt
L1dhc21TaWduYXR1cmVJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpTaWdu
YXR1cmVJbmZvcm1hdGlvbjo6c2luZ2xldG9uKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2lnbmF0
dXJlSW5mb3JtYXRpb246OmdldCk6CisgICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6Cisg
ICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmg6CisgICAgICAgICogd2FzbS9q
cy9XYXNtVG9KUy5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ondhc21Ub0pTKToKKyAgICAgICAg
KiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAgICAgICAqIHdhc20vanMvV2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlX
cmFwcGVyRnVuY3Rpb24uY3BwOgorCiAyMDE4LTA5LTA2ICBZdXN1a2UgU3V6dWtpICA8eXVzdWtl
c3V6dWtpQHNsb3dzdGFydC5vcmc+CiAKICAgICAgICAgW1dlYkFzc2VtYmx5XSBPcHRpbWl6ZSBK
UyB0byBXYXNtIGNhbGwgYnkgcmVtb3ZpbmcgVmVjdG9yIGFsbG9jYXRpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCAzZTdjZTYw
YWQ3NGIwMDIwNDc0YTg2OTkzZGE3NmU3MTgwZGM2ZjI0Li5lMGJjMTU5OTMyMGMwZTI3NmRhNjU4
MDNmYWQyZTRkMzI5OGJjMDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiV2FzbU1l
bW9yeS5oIgogI2luY2x1ZGUgIldhc21PTUdQbGFuLmgiCiAjaW5jbHVkZSAiV2FzbU9wY29kZU9y
aWdpbi5oIgorI2luY2x1ZGUgIldhc21TaWduYXR1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2Fz
bVRodW5rcy5oIgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
QEAgLTEyMjksMTMgKzEyMzAsMTMgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJl
Y3QoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW8KIAogICAgICAg
ICAvLyBDaGVjayB0aGF0IHRoZSBXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uIGlzIGluaXRp
YWxpemVkLiBXZSB0cmFwIGlmIGl0IGlzbid0LiBBbiAiaW52YWxpZCIgU2lnbmF0dXJlSW5kZXgg
aW5kaWNhdGVzIGl0J3Mgbm90IGluaXRpYWxpemVkLgogICAgICAgICAvLyBGSVhNRTogd2hlbiB3
ZSBoYXZlIHRyYXAgaGFuZGxlcnMsIHdlIGNhbiBqdXN0IGxldCB0aGUgY2FsbCBmYWlsIGJlY2F1
c2UgU2lnbmF0dXJlOjppbnZhbGlkSW5kZXggaXMgMC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NzIxMAotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihXYXNt
VG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjpzaWduYXR1cmVJbmRleCkgPT0gc2l6ZW9mKHVpbnQz
Ml90KSwgIkxvYWQgY29kZWdlbiBhc3N1bWVzIGkzMiIpOwotICAgICAgICBFeHByZXNzaW9uVHlw
ZSBjYWxsZWVTaWduYXR1cmVJbmRleCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KG1fcHJvYywgTG9hZCwgSW50MzIsIG9yaWdpbigpLCBjYWxsYWJsZUZ1bmN0aW9uLCBz
YWZlQ2FzdDxpbnQzMl90PihPQkpFQ1RfT0ZGU0VUT0YoV2FzbVRvV2FzbUltcG9ydGFibGVGdW5j
dGlvbiwgc2lnbmF0dXJlSW5kZXgpKSk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFdh
c21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb246OnNpZ25hdHVyZUluZGV4KSA9PSBzaXplb2YodWlu
dDY0X3QpLCAiTG9hZCBjb2RlZ2VuIGFzc3VtZXMgaTY0Iik7CisgICAgICAgIEV4cHJlc3Npb25U
eXBlIGNhbGxlZVNpZ25hdHVyZUluZGV4ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQ2NCwgb3JpZ2luKCksIGNhbGxhYmxlRnVuY3Rpb24s
IHNhZmVDYXN0PGludDMyX3Q+KFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb246Om9mZnNldE9m
U2lnbmF0dXJlSW5kZXgoKSkpOwogICAgICAgICB7CiAgICAgICAgICAgICBDaGVja1ZhbHVlKiBj
aGVjayA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVj
aywgb3JpZ2luKCksCiAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxW
YWx1ZT4obV9wcm9jLCBFcXVhbCwgb3JpZ2luKCksCiAgICAgICAgICAgICAgICAgICAgIGNhbGxl
ZVNpZ25hdHVyZUluZGV4LAotICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgU2lnbmF0dXJlOjppbnZhbGlk
SW5kZXgpKSk7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
Q29uc3Q2NFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBTaWduYXR1cmU6OmludmFsaWRJbmRleCkp
KTsKIAogICAgICAgICAgICAgY2hlY2stPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAgICAgICAg
ICAgIHRoaXMtPmVtaXRFeGNlcHRpb25DaGVjayhqaXQsIEV4Y2VwdGlvblR5cGU6Ok51bGxUYWJs
ZUVudHJ5KTsKQEAgLTEyNDQsNyArMTI0NSw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2Fs
bEluZGlyZWN0KGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvCiAK
ICAgICAgICAgLy8gQ2hlY2sgdGhlIHNpZ25hdHVyZSBtYXRjaGVzIHRoZSB2YWx1ZSB3ZSBleHBl
Y3QuCiAgICAgICAgIHsKLSAgICAgICAgICAgIEV4cHJlc3Npb25UeXBlIGV4cGVjdGVkU2lnbmF0
dXJlSW5kZXggPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9j
LCBvcmlnaW4oKSwgU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmUpKTsKKyAgICAg
ICAgICAgIEV4cHJlc3Npb25UeXBlIGV4cGVjdGVkU2lnbmF0dXJlSW5kZXggPSBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgU2lnbmF0dXJl
SW5mb3JtYXRpb246OmdldChzaWduYXR1cmUpKTsKICAgICAgICAgICAgIENoZWNrVmFsdWUqIGNo
ZWNrID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNr
LCBvcmlnaW4oKSwKICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZh
bHVlPihtX3Byb2MsIE5vdEVxdWFsLCBvcmlnaW4oKSwgY2FsbGVlU2lnbmF0dXJlSW5kZXgsIGV4
cGVjdGVkU2lnbmF0dXJlSW5kZXgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUJCUVBsYW4uY3BwCmluZGV4IDQzYzhmNTYyYWZhMWMzNjMzYTdlNmM2MWY0MDkyMmVjMGJlOTcy
MTMuLjIyYTY1YzMxMTBjZmM4Y2RiOTRjZDEwNWZiNmQ3YzNlNTNlNzcwYTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJXYXNtRmF1bHRTaWduYWxIYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5o
IgogI2luY2x1ZGUgIldhc21Nb2R1bGVQYXJzZXIuaCIKKyNpbmNsdWRlICJXYXNtU2lnbmF0dXJl
SW5saW5lcy5oIgogI2luY2x1ZGUgIldhc21UaWVyVXBDb3VudC5oIgogI2luY2x1ZGUgIldhc21W
YWxpZGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtRm9ybWF0LmgKaW5kZXggZTQzZjRlZDkzNjE2N2ZmMjkzOGQ4MzdhMGNlMDg4ZDQz
ZDIwYTRlNi4uNDYzMjM5NGRiMmNlM2MyNThmZWRkNzZlYTAxM2ViYTVkMTc1YjczMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaApAQCAtMjc2LDYgKzI3Niw3IEBAIHN0
cnVjdCBJbnRlcm5hbEZ1bmN0aW9uIHsKIC8vIG1lYW50IGFzIGZhc3QgbG9va3VwIHRhYmxlcyBm
b3IgdGhlc2Ugb3Bjb2RlcyBhbmQgZG8gbm90IG93biBjb2RlLgogc3RydWN0IFdhc21Ub1dhc21J
bXBvcnRhYmxlRnVuY3Rpb24gewogICAgIHVzaW5nIExvYWRMb2NhdGlvbiA9IE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxXYXNtRW50cnlQdHJUYWc+KjsKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mU2lnbmF0dXJlSW5kZXgoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoV2FzbVRvV2FzbUlt
cG9ydGFibGVGdW5jdGlvbiwgc2lnbmF0dXJlSW5kZXgpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZkVudHJ5cG9pbnRMb2FkTG9jYXRpb24oKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoV2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbiwgZW50cnlwb2ludExvYWRMb2NhdGlvbik7
IH0KIAogICAgIC8vIEZJWE1FOiBQYWNrIHNpZ25hdHVyZSBpbmRleCBhbmQgY29kZSBwb2ludGVy
IGludG8gb25lIDY0LWJpdCB2YWx1ZS4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY1NTExPi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21GdW5jdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXggODczNWNlOGU2YWNjYjM4ZTg0Yzg0YjdiOGUxMWQ1MzM3
OWFiOGRiZS4uMDg4ZTcyOGNlNGNjNTRjZTNjNjA2YjQwZjI1NWE2MDlkNTdiM2I5MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTI4
LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKICNpbmNsdWRlICJXYXNtUGFy
c2VyLmgiCisjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYv
RGF0YUxvZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5oCmluZGV4IGZhMzZhNjliODAzOTE1ZDYxYzM5NmZj
MWIzZjliYzc2NDIwMGU2MzIuLjY1MmRkZDM3ZGI4ZTU3ODhkMDU4NzVkMmMyZGZjN2ZhZGM5ZTcz
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmgKQEAgLTQxLDcgKzQx
LDcgQEAgc3RydWN0IENvbnRleHQ7CiBzdHJ1Y3QgTW9kdWxlSW5mb3JtYXRpb247CiBjbGFzcyBQ
bGFuOwogCi11c2luZyBTaWduYXR1cmVJbmRleCA9IHVpbnQzMl90OwordXNpbmcgU2lnbmF0dXJl
SW5kZXggPSB1aW50NjRfdDsKIAogY2xhc3MgTW9kdWxlIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPE1vZHVsZT4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bU9NR1BsYW4uY3BwCmluZGV4IDllMGM0YTU2NjZlNDRlMGVhY2MyMzEyYWJiYjc2NTQ1M2I4Nzlm
NDguLmUzMWI0NzFiNzkyNTJkY2VjZTY3ZjZmYWZkZjA2YjcxNDgzMzI3YTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNp
bmNsdWRlICJXYXNtTWFjaGluZVRocmVhZHMuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCiAj
aW5jbHVkZSAiV2FzbU5hbWVTZWN0aW9uLmgiCisjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGlu
ZXMuaCIKICNpbmNsdWRlICJXYXNtVmFsaWRhdGUuaCIKICNpbmNsdWRlICJXYXNtV29ya2xpc3Qu
aCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCmluZGV4IDlhOWJhY2I2N2RlZDI1MDQ1MzVkOGMy
ZGU1YzVlZDgzM2RlZjE2MDIuLmFlODcyNWQwNzljYzNjOWM4ODIwMDQ3MGRjMGJmZjdiZTc2NDRm
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNl
ci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJXYXNtTmFtZVNlY3Rpb25QYXJzZXIu
aCIKICNpbmNsdWRlICJXYXNtT3BzLmgiCiAjaW5jbHVkZSAiV2FzbVNlY3Rpb25zLmgiCisjaW5j
bHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBXYXNtIHsKIApAQCAtNzUsOCArNzYsNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlVHlw
ZSgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgICAgIHJldHVyblR5cGUgPSBUeXBlOjpWb2lk
OwogICAgICAgICBzaWduYXR1cmUtPnJldHVyblR5cGUoKSA9IHJldHVyblR5cGU7CiAKLSAgICAg
ICAgc3RkOjpwYWlyPFNpZ25hdHVyZUluZGV4LCBSZWY8U2lnbmF0dXJlPj4gcmVzdWx0ID0gU2ln
bmF0dXJlSW5mb3JtYXRpb246OmFkb3B0KFdURk1vdmUoc2lnbmF0dXJlKSk7Ci0gICAgICAgIG1f
aW5mby0+dXNlZFNpZ25hdHVyZXMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUocmVzdWx0LnNlY29u
ZCkpOworICAgICAgICBtX2luZm8tPnVzZWRTaWduYXR1cmVzLnVuY2hlY2tlZEFwcGVuZChTaWdu
YXR1cmVJbmZvcm1hdGlvbjo6YWRvcHQoV1RGTW92ZShzaWduYXR1cmUpKSk7CiAgICAgfQogICAg
IHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtU2lnbmF0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1
cmUuY3BwCmluZGV4IDZhNDJkNTE3MTk1ZWE0ZmI2MWQ5MmIxMGM4Y2MzNzczNjdjMmViOWQuLjI5
Y2UyMTM3NTIxM2MzMTQ1NWFhMzNhMjk1ZThmODZlNGQ5YjRlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuY3BwCkBAIC00MSw2ICs0MSw5IEBAIHN0YXRp
YyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKIH0KIH0KIAorU2lnbmF0dXJlSW5mb3JtYXRp
b24qIFNpZ25hdHVyZUluZm9ybWF0aW9uOjp0aGVPbmUgeyBudWxscHRyIH07CitzdGQ6Om9uY2Vf
ZmxhZyBTaWduYXR1cmVJbmZvcm1hdGlvbjo6c2lnbmF0dXJlSW5mb3JtYXRpb25GbGFnOworCiBT
dHJpbmcgU2lnbmF0dXJlOjp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHJlc3VsdCht
YWtlU3RyaW5nKHJldHVyblR5cGUoKSkpOwpAQCAtODMsNjAgKzg2LDIyIEBAIFNpZ25hdHVyZUlu
Zm9ybWF0aW9uOjpTaWduYXR1cmVJbmZvcm1hdGlvbigpCiB7CiB9CiAKLVNpZ25hdHVyZUluZm9y
bWF0aW9uJiBTaWduYXR1cmVJbmZvcm1hdGlvbjo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0aWMg
U2lnbmF0dXJlSW5mb3JtYXRpb24qIHRoZU9uZTsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
c2lnbmF0dXJlSW5mb3JtYXRpb25GbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKHNpZ25hdHVyZUlu
Zm9ybWF0aW9uRmxhZywgW10gKCkgewotICAgICAgICB0aGVPbmUgPSBuZXcgU2lnbmF0dXJlSW5m
b3JtYXRpb247Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gKnRoZU9uZTsKLX0KLQotc3RkOjpwYWly
PFNpZ25hdHVyZUluZGV4LCBSZWY8U2lnbmF0dXJlPj4gU2lnbmF0dXJlSW5mb3JtYXRpb246OmFk
b3B0KFJlZjxTaWduYXR1cmU+JiYgc2lnbmF0dXJlKQorUmVmPFNpZ25hdHVyZT4gU2lnbmF0dXJl
SW5mb3JtYXRpb246OmFkb3B0KFJlZjxTaWduYXR1cmU+JiYgc2lnbmF0dXJlKQogewogICAgIFNp
Z25hdHVyZUluZm9ybWF0aW9uJiBpbmZvID0gc2luZ2xldG9uKCk7CiAgICAgTG9ja0hvbGRlciBs
b2NrKGluZm8ubV9sb2NrKTsKIAotICAgIFNpZ25hdHVyZUluZGV4IG5leHRWYWx1ZSA9IGluZm8u
bV9uZXh0SW5kZXg7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBpbmZvLm1fc2lnbmF0dXJlTWFwLmFk
ZChTaWduYXR1cmVIYXNoIHsgc2lnbmF0dXJlLnB0cigpIH0sIG5leHRWYWx1ZSk7CisgICAgU2ln
bmF0dXJlSW5kZXggbmV4dFZhbHVlID0gc2lnbmF0dXJlLT5pbmRleCgpOworICAgIGF1dG8gYWRk
UmVzdWx0ID0gaW5mby5tX3NpZ25hdHVyZVNldC5hZGQoU2lnbmF0dXJlSGFzaCB7IHNpZ25hdHVy
ZS5jb3B5UmVmKCkgfSk7CiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAg
ICsraW5mby5tX25leHRJbmRleDsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5mby5tX25leHRJ
bmRleCA+IG5leHRWYWx1ZSk7IC8vIGNyYXNoIG9uIG92ZXJmbG93LgotICAgICAgICBBU1NFUlQo
bmV4dFZhbHVlID09IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogICAgICAgICBpZiAoV2Fz
bVNpZ25hdHVyZUludGVybmFsOjp2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZ0xuKCJBZG9w
dCBuZXcgc2lnbmF0dXJlICIsIHNpZ25hdHVyZS5nZXQoKSwgIiB3aXRoIGluZGV4ICIsIGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUsICIgaGFzaDogIiwgc2lnbmF0dXJlLT5oYXNoKCkpOwotCi0g
ICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gaW5mby5tX2luZGV4TWFwLmFkZChuZXh0VmFsdWUsIHNp
Z25hdHVyZS5jb3B5UmVmKCkpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChhZGRSZXN1bHQuaXNO
ZXdFbnRyeSk7Ci0gICAgICAgIEFTU0VSVChpbmZvLm1faW5kZXhNYXAuc2l6ZSgpID09IGluZm8u
bV9zaWduYXR1cmVNYXAuc2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG5l
eHRWYWx1ZSwgV1RGTW92ZShzaWduYXR1cmUpKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiQWRv
cHQgbmV3IHNpZ25hdHVyZSAiLCBzaWduYXR1cmUuZ2V0KCksICIgd2l0aCBpbmRleCAiLCBuZXh0
VmFsdWUsICIgaGFzaDogIiwgc2lnbmF0dXJlLT5oYXNoKCkpOworICAgICAgICByZXR1cm4gV1RG
TW92ZShzaWduYXR1cmUpOwogICAgIH0KKyAgICBuZXh0VmFsdWUgPSBhZGRSZXN1bHQuaXRlcmF0
b3ItPmtleS0+aW5kZXgoKTsKICAgICBpZiAoV2FzbVNpZ25hdHVyZUludGVybmFsOjp2ZXJib3Nl
KQotICAgICAgICBkYXRhTG9nTG4oIkV4aXN0aW5nIHNpZ25hdHVyZSAiLCBzaWduYXR1cmUuZ2V0
KCksICIgd2l0aCBpbmRleCAiLCBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLCAiIGhhc2g6ICIs
IHNpZ25hdHVyZS0+aGFzaCgpKTsKLSAgICBBU1NFUlQoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSAhPSBTaWduYXR1cmU6OmludmFsaWRJbmRleCk7Ci0gICAgQVNTRVJUKGluZm8ubV9pbmRleE1h
cC5jb250YWlucyhhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKSk7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV9wYWlyKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUsIFJlZjxTaWduYXR1cmU+KCppbmZv
Lm1faW5kZXhNYXAuZ2V0KGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUpKSk7Ci19Ci0KLWNvbnN0
IFNpZ25hdHVyZSYgU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChTaWduYXR1cmVJbmRleCBpbmRl
eCkKLXsKLSAgICBBU1NFUlQoaW5kZXggIT0gU2lnbmF0dXJlOjppbnZhbGlkSW5kZXgpOwotICAg
IFNpZ25hdHVyZUluZm9ybWF0aW9uJiBpbmZvID0gc2luZ2xldG9uKCk7Ci0gICAgTG9ja0hvbGRl
ciBsb2NrKGluZm8ubV9sb2NrKTsKLQotICAgIHJldHVybiAqaW5mby5tX2luZGV4TWFwLmdldChp
bmRleCk7Ci19Ci0KLVNpZ25hdHVyZUluZGV4IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoY29u
c3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpCi17Ci0gICAgU2lnbmF0dXJlSW5mb3JtYXRpb24mIGlu
Zm8gPSBzaW5nbGV0b24oKTsKLSAgICBMb2NrSG9sZGVyIGxvY2soaW5mby5tX2xvY2spOwotCi0g
ICAgYXV0byByZXN1bHQgPSBpbmZvLm1fc2lnbmF0dXJlTWFwLmdldChTaWduYXR1cmVIYXNoIHsg
JnNpZ25hdHVyZSB9KTsKLSAgICBBU1NFUlQocmVzdWx0ICE9IFNpZ25hdHVyZTo6aW52YWxpZElu
ZGV4KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBkYXRhTG9nTG4oIkV4aXN0aW5nIHNp
Z25hdHVyZSAiLCBzaWduYXR1cmUuZ2V0KCksICIgd2l0aCBpbmRleCAiLCBuZXh0VmFsdWUsICIg
aGFzaDogIiwgc2lnbmF0dXJlLT5oYXNoKCkpOworICAgIHJldHVybiBSZWY8U2lnbmF0dXJlPigq
YWRkUmVzdWx0Lml0ZXJhdG9yLT5rZXkpOwogfQogCiB2b2lkIFNpZ25hdHVyZUluZm9ybWF0aW9u
Ojp0cnlDbGVhbnVwKCkKQEAgLTE0NCwyNCArMTA5LDEwIEBAIHZvaWQgU2lnbmF0dXJlSW5mb3Jt
YXRpb246OnRyeUNsZWFudXAoKQogICAgIFNpZ25hdHVyZUluZm9ybWF0aW9uJiBpbmZvID0gc2lu
Z2xldG9uKCk7CiAgICAgTG9ja0hvbGRlciBsb2NrKGluZm8ubV9sb2NrKTsKIAotICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8U2lnbmF0dXJlSW5kZXgsIFNpZ25hdHVyZSo+PiB0b1JlbW92ZTsKLSAgICBm
b3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBpbmZvLm1faW5kZXhNYXApIHsKLSAgICAgICAgY29uc3Qg
UmVmPFNpZ25hdHVyZT4mIHNpZ25hdHVyZSA9IHBhaXIudmFsdWU7Ci0gICAgICAgIGlmIChzaWdu
YXR1cmUtPnJlZkNvdW50KCkgPT0gMSkgewotICAgICAgICAgICAgLy8gV2UncmUgdGhlIG9ubHkg
b3duZXIuCi0gICAgICAgICAgICB0b1JlbW92ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIocGFpci5r
ZXksIHNpZ25hdHVyZS5wdHIoKSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIGZvciAoY29uc3Qg
YXV0byYgcGFpciA6IHRvUmVtb3ZlKSB7Ci0gICAgICAgIGJvb2wgcmVtb3ZlZCA9IGluZm8ubV9z
aWduYXR1cmVNYXAucmVtb3ZlKFNpZ25hdHVyZUhhc2ggeyBwYWlyLnNlY29uZCB9KTsKLSAgICAg
ICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkLCByZW1vdmVkKTsKLSAgICAgICAgcmVtb3ZlZCA9IGlu
Zm8ubV9pbmRleE1hcC5yZW1vdmUocGFpci5maXJzdCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQo
cmVtb3ZlZCwgcmVtb3ZlZCk7Ci0gICAgfQotICAgIGlmIChpbmZvLm1fc2lnbmF0dXJlTWFwLmlz
RW1wdHkoKSkgewotICAgICAgICBBU1NFUlQoaW5mby5tX2luZGV4TWFwLmlzRW1wdHkoKSk7Ci0g
ICAgICAgIGluZm8ubV9uZXh0SW5kZXggPSBTaWduYXR1cmU6OmZpcnN0VmFsaWRJbmRleDsKLSAg
ICB9CisgICAgaW5mby5tX3NpZ25hdHVyZVNldC5yZW1vdmVJZihbJl0gKGF1dG8mIGhhc2gpIHsK
KyAgICAgICAgY29uc3QgYXV0byYgc2lnbmF0dXJlID0gaGFzaC5rZXk7CisgICAgICAgIHJldHVy
biBzaWduYXR1cmUtPnJlZkNvdW50KCkgPT0gMTsKKyAgICB9KTsKIH0KIAogfSB9IC8vIG5hbWVz
cGFjZSBKU0M6Oldhc20KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21TaWduYXR1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUu
aAppbmRleCA5ZjQ5Y2NiMTQ1NjhkMjAxZjFmOGFkY2VlZmIwYzEzMzFlYjc3ZjBiLi42ZGIyOGMz
ZjE5NDIyZTRjNjhhMzI4MGMxNjVjNzEzOGM2NzIzNWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVNpZ25hdHVyZS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8Y3N0
cmluZz4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hU
cmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC00Nyw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
bmFtZXNwYWNlIFdhc20gewogCiB1c2luZyBTaWduYXR1cmVBcmdDb3VudCA9IHVpbnQzMl90Owot
dXNpbmcgU2lnbmF0dXJlSW5kZXggPSB1aW50MzJfdDsKK3VzaW5nIFNpZ25hdHVyZUluZGV4ID0g
dWludDY0X3Q7CiAKIGNsYXNzIFNpZ25hdHVyZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxTaWduYXR1cmU+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTgxLDYgKzgy
LDcgQEAgY2xhc3MgU2lnbmF0dXJlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNpZ25h
dHVyZT4gewogICAgICAgICByZXR1cm4gKnN0b3JhZ2UocmV0dXJuQ291bnQoKSArIGkpOwogICAg
IH0KICAgICBUeXBlIGFyZ3VtZW50KFNpZ25hdHVyZUFyZ0NvdW50IGkpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0X2Nhc3Q8U2lnbmF0dXJlKj4odGhpcyktPmFyZ3VtZW50KGkpOyB9CisgICAgU2lnbmF0
dXJlSW5kZXggaW5kZXgoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8U2lnbmF0dXJlSW5k
ZXg+KHRoaXMpOyB9CiAKICAgICBXVEY6OlN0cmluZyB0b1N0cmluZygpIGNvbnN0OwogICAgIHZv
aWQgZHVtcChXVEY6OlByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwpAQCAtMTExLDI4ICsxMTMsMjEg
QEAgY2xhc3MgU2lnbmF0dXJlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNpZ25hdHVy
ZT4gewogfTsKIAogc3RydWN0IFNpZ25hdHVyZUhhc2ggewotICAgIGNvbnN0IFNpZ25hdHVyZSog
a2V5OwotICAgIHN0YXRpYyBjb25zdCBTaWduYXR1cmUqIGVtcHR5KCkgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHN0YXRpYyBjb25zdCBTaWduYXR1cmUqIGRlbGV0ZWQoKSB7IHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNvbnN0IFNpZ25hdHVyZSo+KDEpOyB9Ci0gICAgU2lnbmF0dXJlSGFzaCgp
Ci0gICAgICAgIDoga2V5KGVtcHR5KCkpCisgICAgUmVmUHRyPFNpZ25hdHVyZT4ga2V5IHsgbnVs
bHB0ciB9OworICAgIFNpZ25hdHVyZUhhc2goKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgU2ln
bmF0dXJlSGFzaChSZWY8U2lnbmF0dXJlPiYmIGtleSkKKyAgICAgICAgOiBrZXkoV1RGTW92ZShr
ZXkpKQogICAgIHsKICAgICB9Ci0gICAgZXhwbGljaXQgU2lnbmF0dXJlSGFzaChjb25zdCBTaWdu
YXR1cmUqIGtleSkKLSAgICAgICAgOiBrZXkoa2V5KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGtl
eSAhPSBlbXB0eSgpKTsKLSAgICAgICAgQVNTRVJUKGtleSAhPSBkZWxldGVkKCkpOwotICAgIH0K
ICAgICBleHBsaWNpdCBTaWduYXR1cmVIYXNoKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlw
ZSkKLSAgICAgICAgOiBrZXkoZGVsZXRlZCgpKQorICAgICAgICA6IGtleShXVEY6Okhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSkKICAgICB7CiAgICAgfQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
aWduYXR1cmVIYXNoJiByaHMpIGNvbnN0IHsgcmV0dXJuIGVxdWFsKCp0aGlzLCByaHMpOyB9CiAg
ICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU2lnbmF0dXJlSGFzaCYgbGhzLCBjb25zdCBTaWdu
YXR1cmVIYXNoJiByaHMpIHsgcmV0dXJuIGxocy5rZXkgPT0gcmhzLmtleSB8fCAobGhzLmtleSAm
JiByaHMua2V5ICYmICpsaHMua2V5ID09ICpyaHMua2V5KTsgfQotICAgIHN0YXRpYyB1bnNpZ25l
ZCBoYXNoKGNvbnN0IFNpZ25hdHVyZUhhc2gmIHNpZ25hdHVyZSkgeyByZXR1cm4gc2lnbmF0dXJl
LmtleS0+aGFzaCgpOyB9CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU2lnbmF0dXJl
SGFzaCYgc2lnbmF0dXJlKSB7IHJldHVybiBzaWduYXR1cmUua2V5ID8gc2lnbmF0dXJlLmtleS0+
aGFzaCgpIDogMDsgfQogICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5
T3JEZWxldGVkID0gZmFsc2U7Ci0gICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIGtleSA9PSBkZWxldGVkKCk7IH0KKyAgICBib29sIGlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4ga2V5LmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7
IH0KIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCkBAIC0xNjUsMTYgKzE2MCwxNyBA
QCBjbGFzcyBTaWduYXR1cmVJbmZvcm1hdGlvbiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFNpZ25h
dHVyZUluZm9ybWF0aW9uJiBzaW5nbGV0b24oKTsKIAotICAgIHN0YXRpYyBzdGQ6OnBhaXI8U2ln
bmF0dXJlSW5kZXgsIFJlZjxTaWduYXR1cmU+PiBXQVJOX1VOVVNFRF9SRVRVUk4gYWRvcHQoUmVm
PFNpZ25hdHVyZT4mJik7CisgICAgc3RhdGljIFJlZjxTaWduYXR1cmU+IFdBUk5fVU5VU0VEX1JF
VFVSTiBhZG9wdChSZWY8U2lnbmF0dXJlPiYmKTsKICAgICBzdGF0aWMgY29uc3QgU2lnbmF0dXJl
JiBXQVJOX1VOVVNFRF9SRVRVUk4gZ2V0KFNpZ25hdHVyZUluZGV4KTsKICAgICBzdGF0aWMgU2ln
bmF0dXJlSW5kZXggV0FSTl9VTlVTRURfUkVUVVJOIGdldChjb25zdCBTaWduYXR1cmUmKTsKICAg
ICBzdGF0aWMgdm9pZCB0cnlDbGVhbnVwKCk7CiAKIHByaXZhdGU6Ci0gICAgSGFzaE1hcDxXYXNt
OjpTaWduYXR1cmVIYXNoLCBXYXNtOjpTaWduYXR1cmVJbmRleD4gbV9zaWduYXR1cmVNYXA7Ci0g
ICAgSGFzaE1hcDxXYXNtOjpTaWduYXR1cmVJbmRleCwgUmVmPFNpZ25hdHVyZT4+IG1faW5kZXhN
YXA7Ci0gICAgU2lnbmF0dXJlSW5kZXggbV9uZXh0SW5kZXggeyBTaWduYXR1cmU6OmZpcnN0VmFs
aWRJbmRleCB9OworICAgIEhhc2hTZXQ8V2FzbTo6U2lnbmF0dXJlSGFzaD4gbV9zaWduYXR1cmVT
ZXQ7CiAgICAgTG9jayBtX2xvY2s7CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU2ln
bmF0dXJlSW5mb3JtYXRpb24qIHRoZU9uZTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgc2lnbmF0dXJlSW5mb3JtYXRpb25GbGFnOwogfTsKIAogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6Oldhc20KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TaWduYXR1cmVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
U2lnbmF0dXJlSW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxYTUwMTQwNTZiMGQ5ZDI1ZDIyZmM2NGU0
NjJmYTZjNTFjNDg3NDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtU2lnbmF0dXJlSW5saW5lcy5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggWXVzdWtlIFN1enVraSA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5v
cmc+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIldhc21TaWduYXR1cmUuaCIKKworI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKKworaW5saW5lIFNpZ25h
dHVyZUluZm9ybWF0aW9uJiBTaWduYXR1cmVJbmZvcm1hdGlvbjo6c2luZ2xldG9uKCkKK3sKKyAg
ICBzdGQ6OmNhbGxfb25jZShzaWduYXR1cmVJbmZvcm1hdGlvbkZsYWcsIFtdICgpIHsKKyAgICAg
ICAgdGhlT25lID0gbmV3IFNpZ25hdHVyZUluZm9ybWF0aW9uOworICAgIH0pOworICAgIHJldHVy
biAqdGhlT25lOworfQorCitpbmxpbmUgY29uc3QgU2lnbmF0dXJlJiBTaWduYXR1cmVJbmZvcm1h
dGlvbjo6Z2V0KFNpZ25hdHVyZUluZGV4IGluZGV4KQoreworICAgIEFTU0VSVChpbmRleCAhPSBT
aWduYXR1cmU6OmludmFsaWRJbmRleCk7CisgICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8Y29uc3Qg
U2lnbmF0dXJlKj4oaW5kZXgpOworfQorCitpbmxpbmUgU2lnbmF0dXJlSW5kZXggU2lnbmF0dXJl
SW5mb3JtYXRpb246OmdldChjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSkKK3sKKyAgICBpZiAo
IUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBTaWduYXR1cmVJbmZvcm1hdGlvbiYgaW5mbyA9
IHNpbmdsZXRvbigpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGluZm8ubV9sb2Nr
KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpbmZvLCBpbmZvLm1fc2lnbmF0dXJlU2V0LmNvbnRh
aW5zKFNpZ25hdHVyZUhhc2ggeyAmc2lnbmF0dXJlIH0pKTsKKyAgICB9CisgICAgcmV0dXJuIGJp
dHdpc2VfY2FzdDxTaWduYXR1cmVJbmRleD4oJnNpZ25hdHVyZSk7Cit9CisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpXYXNtCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKaW5kZXggZmNiOWIwYzYxOGFlNjll
MTUxMWE3ZmE0Y2YzYmYwNjUyZDZiMzEyZC4uMzY0ZjdjNzRiYzE5ZmM1NWJmMmFkNjliYWQ0OTBl
Y2VlZWU5MTlkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNU
b1dhc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNw
cApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUg
IkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgogI2luY2x1ZGUgIldhc21DYWxsaW5nQ29udmVudGlv
bi5oIgorI2luY2x1ZGUgIldhc21TaWduYXR1cmVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgV2FzbSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaAppbmRleCBkMzkzMDA2OTE5ZDI3YWQxNzQ2OWZlMjY5
NWRiODQzODQyM2QwODJlLi43MmEzMDYzYTRiMzdjNTcwY2Y5NDBkNzZiNTlkMWMwY2NiYzA1ZTQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
TW9kdWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eU1vZHVsZS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXYXNtIHsKIGNsYXNzIE1vZHVs
ZTsKIHN0cnVjdCBNb2R1bGVJbmZvcm1hdGlvbjsKIGNsYXNzIFBsYW47Ci11c2luZyBTaWduYXR1
cmVJbmRleCA9IHVpbnQzMl90OwordXNpbmcgU2lnbmF0dXJlSW5kZXggPSB1aW50NjRfdDsKIH0K
IAogY2xhc3MgU3ltYm9sVGFibGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XYXNtVG9KUy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNt
VG9KUy5jcHAKaW5kZXggMTI3MGM3OWIxYzQzMTBjYzVmYzYzMDI5YWU4M2JmYjE4YzVlMDNjNi4u
ZWUwMGZjODhlMGNhZjI1NDRkOWQ3OWVjYzkzZjRlMTIzMjUzOGIzMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1
ZGUgIldhc21Db250ZXh0LmgiCiAjaW5jbHVkZSAiV2FzbUV4Y2VwdGlvblR5cGUuaCIKICNpbmNs
dWRlICJXYXNtSW5zdGFuY2UuaCIKKyNpbmNsdWRlICJXYXNtU2lnbmF0dXJlSW5saW5lcy5oIgog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCkBAIC0zMDEsNyArMzAyLDggQEAg
RXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdG
YWlsdXJlPiB3YXNtVG9KUyhWTSogdm0KICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoMCksIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CiAKICAgICAgICAgc3RhdGlj
X2Fzc2VydChHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzID49IDQsICJXZSByZWx5
IG9uIHRoaXMgd2l0aCB0aGUgY2FsbCBiZWxvdy4iKTsKLSAgICAgICAgaml0LnNldHVwQXJndW1l
bnRzPGRlY2x0eXBlKGNhbGxGdW5jKT4oR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihzaWduYXR1cmVJbmRleCksIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihidWZmZXIpKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoU2lnbmF0dXJlSW5k
ZXgpID09IHNpemVvZih1aW50NjRfdCksICJGb2xsb3dpbmcgY29kZSBhc3N1bWVzIFNpZ25hdHVy
ZUluZGV4IGlzIDY0Yml0LiIpOworICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUo
Y2FsbEZ1bmMpPihHUFJJbmZvOjphcmd1bWVudEdQUjEsIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTY0KHNpZ25hdHVyZUluZGV4KSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJ1ZmZlcikp
OwogICAgICAgICBhdXRvIGNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwogICAgICAg
ICBhdXRvIG5vRXhjZXB0aW9uID0gaml0LmVtaXRFeGNlcHRpb25DaGVjaygqdm0sIEFzc2VtYmx5
SGVscGVyczo6SW52ZXJ0ZWRFeGNlcHRpb25DaGVjayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKaW5kZXggMDJiNGMy
NGM0MmJjY2YxMmY4MjNhYjA3OTc1M2IwNWU1YTNhYTU0YS4uNWRiOTI0ZjhlY2ZiMDNhN2UwYmE2
ZjVkMDg0ODIyYjM0NzExYmFjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNs
dWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldhc21Gb3JtYXQuaCIKICNpbmNsdWRlICJX
YXNtTWVtb3J5LmgiCisjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIKICNpbmNsdWRl
IDx3dGYvRmFzdFRMUy5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkLmNwcAppbmRleCBkNzQ0MTdjYjFhNGMxY2EzYjJmMzhlZmEyMDc3YTUzOGIxNjVlYTEy
Li5lOGNhNThjYmY2MGFjNDZhYjIzMGVlM2RmMDRhNWY0YTMwMjhmMmYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmQuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUxpbmtFcnJv
ci5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKICNpbmNsdWRlICJQcm90b0Nh
bGxGcmFtZS5oIgotI2luY2x1ZGUgIldhc21TaWduYXR1cmUuaCIKKyNpbmNsdWRlICJXYXNtU2ln
bmF0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIldlYkFzc2VtYmx5RnVuY3Rpb24uaCIKICNpbmNs
dWRlIDxsaW1pdHM+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcAppbmRleCAzNmYzNzgzMDZiZTcy
N2MwMjk1MzFkYjQ5MmE4ZDAwOTI3MjkxYTZlLi40NDRlZmJmOGI0YTdhMzVmNDBmMDFjZWI0Yzc5
ZWM4NDNlYjE2NDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCisjaW5jbHVkZSAiV2FzbVNpZ25h
dHVyZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349136</attachid>
            <date>2018-09-07 05:17:05 -0700</date>
            <delta_ts>2018-09-07 05:29:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189401-20180907211704.patch</filename>
            <type>text/plain</type>
            <size>31215</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1Nzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OTQ2MDg3MWZlNjkwN2QyNzFhNGQwMDg2ZjIzNTRhODU4OTk4YmJkLi5mMDA1YWNjOGNhMTM0ZDZh
MWNhZDU2MGNmOTc3MjQ1ZTUzZjJiZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OSBAQAorMjAxOC0wOS0wNyAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtXZWJBc3NlbWJseV0gT3B0aW1pemUgSlMgdG8gV2FzbSBj
YWxsIGJ5IHVzaW5nIHBvaW50ZXIgb2YgU2lnbmF0dXJlIGFzIFNpZ25hdHVyZUluZGV4CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk0MDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaWduYXR1cmVJbmZv
cm1hdGlvbiBpcyBhIGdsb2JhbCByZXBvc2l0b3J5IGZvciBTaWduYXR1cmUgdG8gbWFrZSBTaWdu
YXR1cmUgYXRvbWljLgorICAgICAgICBJdCB0YWtlcyBSZWY8U2lnbmF0dXJlPiYmIGFuZCBnZW5l
cmF0ZXMgU2lnbmF0dXJlSW5kZXguIEFuZCB3ZSBnZXQgY29uc3QgU2lnbmF0dXJlJgorICAgICAg
ICBieSB1c2luZyB0aGlzIFNpZ25hdHVyZUluZGV4LiBIb3dldmVyLCBjb252ZXJ0aW5nIFNpZ25h
dHVyZUluZGV4IHRvIGNvbnN0IFNpZ25hdHVyZSYKKyAgICAgICAgYWx3YXlzIGxvb2tzIHVwIGEg
aGFzaCB0YWJsZS4gVGhpcyBpcyBjb3N0bHkgc2luY2UgSlMgdG8gV2FzbSBjYWxscyBhbHdheXMg
dXNlCisgICAgICAgIFNpZ25hdHVyZSYgdG8gY2hlY2sgdHlwZXMgb2YgYXJndW1lbnRzLgorCisg
ICAgICAgIEluc3RlYWQgb2YgdXNpbmcgdGhpcyBoYXNoIHRhYmxlLCB0aGlzIHBhdGNoIHVzZXMg
YSBwb2ludGVyIG9mIFNpZ25hdHVyZSBhcyBTaWduYXR1cmVJbmRleC4KKyAgICAgICAgVGhpcyBh
bGxvd3MgdXMgdG8gY29udmVydCBTaWduYXR1cmVJbmRleCB0byBTaWduYXR1cmUgYnkganVzdCBj
YXN0aW5nIGl0LiBJdCBzaWduaWZpY2FudGx5CisgICAgICAgIG9wdGltaXplcyBKUyB0byB3YXNt
IGNhbGxzIGZyb20gNjAwbXMgdG8gNDAwbXMuIFdlIGFsc28gb3B0aW1pemUgU2lnbmF0dXJlSW5m
b3JtYXRpb246OnNpbmdsZXRvbgorICAgICAgICBieSBtYWtpbmcgYW4gYWNjZXNzb3IgZnVuY3Rp
b24gaW5saW5lZC4KKworICAgICAgICBJbiB0aGUgZnV0dXJlLCB3ZSBjYW4gcmVtb3ZlIFNpZ25h
dHVyZUluZGV4IGJ5IGRpcmVjdGx5IGhhbmRsaW5nIFJlZjxTaWduYXR1cmU+OiBhZGRpbmcKKyAg
ICAgICAgZGVyZWYoKSBvZiBTaWduYXR1cmUgd2hpY2ggdW5yZWdpc3RlcnMgaXRzZWxmIGZyb20g
U2lnbmF0dXJlSW5mb3JtYXRpb24gY2FyZWZ1bGx5LiBPciB3ZSBjYW4KKyAgICAgICAgbWFrZSBT
aWduYXR1cmVJbmRleCB1aW50MzJfdCBieSBpbnRyb2R1Y2luZyBhIG1lY2hhbmlzbSBzaW1pbGFy
IHRvIFN0cnVjdHVyZUlELgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KToKKyAgICAg
ICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoK
KyAgICAgICAgKEpTQzo6V2FzbTo6V2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbjo6b2Zmc2V0
T2ZTaWduYXR1cmVJbmRleCk6CisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaDoK
KyAgICAgICAgKiB3YXNtL1dhc21Nb2R1bGUuaDoKKyAgICAgICAgKiB3YXNtL1dhc21PTUdQbGFu
LmNwcDoKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VUeXBlKToKKyAgICAgICAgKiB3YXNtL1dhc21T
aWduYXR1cmUuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6
YWRvcHQpOgorICAgICAgICAoSlNDOjpXYXNtOjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6dHJ5Q2xl
YW51cCk6CisgICAgICAgIChKU0M6Oldhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjpzaW5nbGV0
b24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6
Z2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL1dhc21TaWduYXR1cmUuaDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6U2lnbmF0dXJlOjppbmRleCBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206
OlNpZ25hdHVyZUhhc2g6OlNpZ25hdHVyZUhhc2gpOgorICAgICAgICAoSlNDOjpXYXNtOjpTaWdu
YXR1cmVIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2lnbmF0dXJlSGFzaDo6aXNI
YXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpTaWduYXR1
cmVIYXNoOjplbXB0eSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206OlNpZ25hdHVyZUhh
c2g6OmRlbGV0ZWQpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbVNpZ25hdHVyZUlubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6Oldhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjpz
aW5nbGV0b24pOgorICAgICAgICAoSlNDOjpXYXNtOjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0
KToKKyAgICAgICAgKiB3YXNtL2pzL0pTVG9XYXNtLmNwcDoKKyAgICAgICAgKiB3YXNtL2pzL0pT
V2ViQXNzZW1ibHlNb2R1bGUuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dhc21Ub0pTLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6d2FzbVRvSlMpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1i
bHlGdW5jdGlvbi5jcHA6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29y
ZC5jcHA6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHA6
CisKIDIwMTgtMDktMDYgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9y
Zz4KIAogICAgICAgICBbV2ViQXNzZW1ibHldIE9wdGltaXplIEpTIHRvIFdhc20gY2FsbCBieSBy
ZW1vdmluZyBWZWN0b3IgYWxsb2NhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA1MGEwMTlhNjRlNjZjNGM3ZjQ4NzI0ZjFmOTkzZmQ2NmQ4ZTQ2Zjk3Li41NWFlMzJkZTJiZjIw
MGFlMWEyNjYzMWY2YWQzNDA1ZWJlMDE4MmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTUzNiw2ICsxNTM2LDcgQEAKIAkJQUQ1QzM2RUMxRjc1QUQ3QzAwMEJDQUFGIC8qIFdh
c21Ub0pTLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
REQwOUFFRTFGNUY2MjNGMDAxMzEzQzIgLyogV2FzbVRvSlMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBRDVDMzZFRjFGN0EyNjNBMDAwQkNBQUYg
LyogV2FzbU1lbW9yeU1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEFENUMzNkVFMUY3QTI2MjkwMDBCQ0FBRiAvKiBXYXNtTWVtb3J5TW9kZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFENzQzOEMw
MUUwNDU3QTQwMEZEMEMyQSAvKiBXYXNtU2lnbmF0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDc0MzhCRjFFMDQ1NzkyMDBGRDBDMkEgLyogV2Fz
bVNpZ25hdHVyZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTRCQUEwN0NFQjgxRjQ5QTI5NkUwMjIwMyAvKiBXYXNtU2lnbmF0dXJlSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzBBNUY0MDNG
MTFDNEY1OTlDRDU5NkQ1IC8qIFdhc21TaWduYXR1cmVJbmxpbmVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQUQ3QjRCMkUxRkEzRTI5ODAwQzlE
Rjc5IC8qIFdhc21OYW1lU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQUQ3QjRCMkQxRkEzRTI4NjAwQzlERjc5IC8qIFdhc21OYW1lU2VjdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFE
ODZBOTNFMUFBNEQ4OEQwMDJGRTc3RiAvKiBXZWFrR0NNYXBJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDg2QTkzRDFBQTREODdDMDAyRkU3
N0YgLyogV2Vha0dDTWFwSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUFEOEZGMzk4MUVCNUJEQjIwMDg3RkY4MiAvKiBXYXNtSW5kZXhP
ck5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFE
OEZGMzk1MUVCNUJEODUwMDg3RkY4MiAvKiBXYXNtSW5kZXhPck5hbWUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDM2NCw2ICs0MzY1LDcgQEAK
IAkJQUQ1QzM2RjAxRjdBMjZCRjAwMEJDQUFGIC8qIFdhc21NZW1vcnlNb2RlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdhc21NZW1vcnlNb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQUQ3NDM4QkUxRTA0NTc5MjAwRkQwQzJBIC8qIFdhc21TaWduYXR1cmUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbVNpZ25hdHVyZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFENzQzOEJGMUUwNDU3OTIwMEZEMEMyQSAvKiBXYXNt
U2lnbmF0dXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21TaWduYXR1
cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzBBNUY0MDNGMTFDNEY1OTlDRDU5
NkQ1IC8qIFdhc21TaWduYXR1cmVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdhc21TaWduYXR1cmVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUFEN0I0QjJEMUZBM0UyODYwMEM5REY3OSAvKiBXYXNtTmFtZVNlY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbU5hbWVTZWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUFEODZBOTNEMUFBNEQ4N0MwMDJGRTc3RiAvKiBXZWFrR0NNYXBJ
bmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtHQ01hcElubGlu
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ4REQ2Q0YxRjY3MDg5RjAwMDRF
QjUyIC8qIEpTVG9XYXNtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTVG9XYXNtLmg7IHBhdGggPSBqcy9K
U1RvV2FzbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTUwOCw4ICs1NTEwLDgg
QEAKIAkJCQk3OTZEQUEyQTFFODlDQ0Q2MDA1REYyNEEgLyogQ2FsbGVlQml0cy5oICovLAogCQkJ
CTE0MjlEOERCMEVEMjIwNUIwMEI4OTYxOSAvKiBDYWxsRnJhbWUuY3BwICovLAogCQkJCTE0MjlE
OERDMEVEMjIwNUIwMEI4OTYxOSAvKiBDYWxsRnJhbWUuaCAqLywKLQkJCQlGRUEzQkJBNzIxMkI2
NTU4MDBFOTNBRDEgLyogQ2FsbEZyYW1lSW5saW5lcy5oICovLAogCQkJCUE3Rjg2OUVDMEY5NUMy
RUMwMDU1ODY5NyAvKiBDYWxsRnJhbWVDbG9zdXJlLmggKi8sCisJCQkJRkVBM0JCQTcyMTJCNjU1
ODAwRTkzQUQxIC8qIENhbGxGcmFtZUlubGluZXMuaCAqLywKIAkJCQkxNDI5RDg1QjBFRDIxOEU5
MDBCODk2MTkgLyogQ0xvb3BTdGFjay5jcHAgKi8sCiAJCQkJMTRENzkyNjQwREFBMDNGQjAwMUE5
RjA1IC8qIENMb29wU3RhY2suaCAqLywKIAkJCQlBN0MxRUFFQjE3OTg3QUI2MDAyOTlEQjIgLyog
Q0xvb3BTdGFja0lubGluZXMuaCAqLywKQEAgLTYzNjIsNiArNjM2NCw3IEBACiAJCQkJNTNGNDBF
ODQxRDU4Rjk3NzAwOTlBMUI2IC8qIFdhc21TZWN0aW9ucy5oICovLAogCQkJCUFENzQzOEJFMUUw
NDU3OTIwMEZEMEMyQSAvKiBXYXNtU2lnbmF0dXJlLmNwcCAqLywKIAkJCQlBRDc0MzhCRjFFMDQ1
NzkyMDBGRDBDMkEgLyogV2FzbVNpZ25hdHVyZS5oICovLAorCQkJCTMwQTVGNDAzRjExQzRGNTk5
Q0Q1OTZENSAvKiBXYXNtU2lnbmF0dXJlSW5saW5lcy5oICovLAogCQkJCUUzQTA1MzE5MjEzNDJC
NjcwMDIyRUMxNCAvKiBXYXNtU3RyZWFtaW5nUGFyc2VyLmNwcCAqLywKIAkJCQlFM0EwNTMxNjIx
MzQyQjY2MDAyMkVDMTQgLyogV2FzbVN0cmVhbWluZ1BhcnNlci5oICovLAogCQkJCUFENUMzNkUz
MUY2OUVDOEIwMDBCQ0FBRiAvKiBXYXNtVGFibGUuY3BwICovLApAQCAtODQ0NCw3ICs4NDQ3LDYg
QEAKIAkJCQk5OURBMDBBMzFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdG9yLnB5
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTlEQTAwQTQxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5z
X21vZGVsLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJOTlEQTAwQTUxQkQ1OTkzMTAwRjQ1NzVDIC8q
IGJ1aWx0aW5zX3RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovLAotCQkJCUZFQTNCQkE4MjEyQjY1
NTkwMEU5M0FEMSAvKiBDYWxsRnJhbWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURF
QTEzMjFCOUYzMTYzMDA2RDY1REQgLyogQnVpbHRpblV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5RTcyOTQwQjE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZCN0YzOTcxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZseS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC04NDY5LDYgKzg0NzEsNyBAQAogCQkJCTBGNjRCMjdBMUE3OTU3QjIwMDZFNEU2NiAv
KiBDYWxsRWRnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzk2REFBMkIxRTg5Q0NENjAwNURGMjRB
IC8qIENhbGxlZUJpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MjlEOERFMEVEMjIwNUIwMEI4
OTYxOSAvKiBDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFQTNCQkE4MjEyQjY1NTkw
MEU5M0FEMSAvKiBDYWxsRnJhbWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk2MkVDOUJC
NzFCN0VCMDdDMDAzMDNBRDEgLyogQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaCBpbiBIZWFkZXJzICov
LAogCQkJCTYyRDc1NUQ3MUI4NEZCNEEwMDE4MDFGQSAvKiBDYWxsRnJhbWVTaHVmZmxlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjExNEJDRjcxODAwODg1QjRGIC8qIENhbGxMaW5rSW5m
by5oIGluIEhlYWRlcnMgKi8sCkBAIC04NzU5LDYgKzg3NjIsNyBAQAogCQkJCUE3MDQ0N0VFMTdB
MEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzMThG
RTAxQ0FDOTgyRjAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCBp
biBIZWFkZXJzICovLAogCQkJCTJBODM2Mzg2MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rp
dml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTA4NkJDQTIxMjNERUZCMDAzRjI5
MjkgLyogRW50cnlGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFEMkVERkIxOTc5OUUzODAw
NEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzMDQ2MDcw
RTFGNDk3RjAwMzIzMkNGIC8qIEVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAyRTkwRDBF
MTgzOURCMDAwRjkyOTcgLyogRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCkBAIC05
MDk1LDcgKzkwOTksNiBAQAogCQkJCTk3ODgwMTQxMTQ3MUFEOTIwMDQxQjAxNiAvKiBKU0RhdGVN
YXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkE3RjY4ODE2MDQzMkQ0MDBGNzZCOTggLyogSlNE
ZXN0cnVjdGlibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0RGMTNDMUUyOTcxMTMw
MDk1OTUxQiAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJRkUwODZCQ0EyMTIzREVGQjAwM0YyOTI5IC8qIEVudHJ5RnJhbWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZFMzg0RUU2MUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NkUzQzYxNDE2N0JBQkQ3MDA2RDc2MEEgLyogSlNFeHBvcnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3QjRBQ0FGMTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4cG9ydE1h
Y3Jvcy5oIGluIEhlYWRlcnMgKi8sCkBAIC05NjIyLDYgKzk2MjUsNyBAQAogCQkJCUUzQTA1MzFD
MjEzNDJCNjgwMDIyRUMxNCAvKiBXYXNtU2VjdGlvblBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTNGNDBFODUxRDU4Rjk3NzAwOTlBMUI2IC8qIFdhc21TZWN0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQUQ3NDM4QzAxRTA0NTdBNDAwRkQwQzJBIC8qIFdhc21TaWduYXR1cmUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTRCQUEwN0NFQjgxRjQ5QTI5NkUwMjIwMyAvKiBXYXNtU2lnbmF0dXJl
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTNBMDUzMUEyMTM0MkI2ODAwMjJFQzE0IC8q
IFdhc21TdHJlYW1pbmdQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUFENUMzNkU2MUY2OUVD
OTEwMDBCQ0FBRiAvKiBXYXNtVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyNTBEMkQyMUU4
REEwNUEwMDI5QTkzMiAvKiBXYXNtVGh1bmtzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCAzZTdjZTYw
YWQ3NGIwMDIwNDc0YTg2OTkzZGE3NmU3MTgwZGM2ZjI0Li5lMGJjMTU5OTMyMGMwZTI3NmRhNjU4
MDNmYWQyZTRkMzI5OGJjMDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiV2FzbU1l
bW9yeS5oIgogI2luY2x1ZGUgIldhc21PTUdQbGFuLmgiCiAjaW5jbHVkZSAiV2FzbU9wY29kZU9y
aWdpbi5oIgorI2luY2x1ZGUgIldhc21TaWduYXR1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2Fz
bVRodW5rcy5oIgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
QEAgLTEyMjksMTMgKzEyMzAsMTMgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJl
Y3QoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW8KIAogICAgICAg
ICAvLyBDaGVjayB0aGF0IHRoZSBXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uIGlzIGluaXRp
YWxpemVkLiBXZSB0cmFwIGlmIGl0IGlzbid0LiBBbiAiaW52YWxpZCIgU2lnbmF0dXJlSW5kZXgg
aW5kaWNhdGVzIGl0J3Mgbm90IGluaXRpYWxpemVkLgogICAgICAgICAvLyBGSVhNRTogd2hlbiB3
ZSBoYXZlIHRyYXAgaGFuZGxlcnMsIHdlIGNhbiBqdXN0IGxldCB0aGUgY2FsbCBmYWlsIGJlY2F1
c2UgU2lnbmF0dXJlOjppbnZhbGlkSW5kZXggaXMgMC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NzIxMAotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihXYXNt
VG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjpzaWduYXR1cmVJbmRleCkgPT0gc2l6ZW9mKHVpbnQz
Ml90KSwgIkxvYWQgY29kZWdlbiBhc3N1bWVzIGkzMiIpOwotICAgICAgICBFeHByZXNzaW9uVHlw
ZSBjYWxsZWVTaWduYXR1cmVJbmRleCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KG1fcHJvYywgTG9hZCwgSW50MzIsIG9yaWdpbigpLCBjYWxsYWJsZUZ1bmN0aW9uLCBz
YWZlQ2FzdDxpbnQzMl90PihPQkpFQ1RfT0ZGU0VUT0YoV2FzbVRvV2FzbUltcG9ydGFibGVGdW5j
dGlvbiwgc2lnbmF0dXJlSW5kZXgpKSk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFdh
c21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb246OnNpZ25hdHVyZUluZGV4KSA9PSBzaXplb2YodWlu
dDY0X3QpLCAiTG9hZCBjb2RlZ2VuIGFzc3VtZXMgaTY0Iik7CisgICAgICAgIEV4cHJlc3Npb25U
eXBlIGNhbGxlZVNpZ25hdHVyZUluZGV4ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQ2NCwgb3JpZ2luKCksIGNhbGxhYmxlRnVuY3Rpb24s
IHNhZmVDYXN0PGludDMyX3Q+KFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb246Om9mZnNldE9m
U2lnbmF0dXJlSW5kZXgoKSkpOwogICAgICAgICB7CiAgICAgICAgICAgICBDaGVja1ZhbHVlKiBj
aGVjayA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVj
aywgb3JpZ2luKCksCiAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxW
YWx1ZT4obV9wcm9jLCBFcXVhbCwgb3JpZ2luKCksCiAgICAgICAgICAgICAgICAgICAgIGNhbGxl
ZVNpZ25hdHVyZUluZGV4LAotICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgU2lnbmF0dXJlOjppbnZhbGlk
SW5kZXgpKSk7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
Q29uc3Q2NFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBTaWduYXR1cmU6OmludmFsaWRJbmRleCkp
KTsKIAogICAgICAgICAgICAgY2hlY2stPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAgICAgICAg
ICAgIHRoaXMtPmVtaXRFeGNlcHRpb25DaGVjayhqaXQsIEV4Y2VwdGlvblR5cGU6Ok51bGxUYWJs
ZUVudHJ5KTsKQEAgLTEyNDQsNyArMTI0NSw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2Fs
bEluZGlyZWN0KGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvCiAK
ICAgICAgICAgLy8gQ2hlY2sgdGhlIHNpZ25hdHVyZSBtYXRjaGVzIHRoZSB2YWx1ZSB3ZSBleHBl
Y3QuCiAgICAgICAgIHsKLSAgICAgICAgICAgIEV4cHJlc3Npb25UeXBlIGV4cGVjdGVkU2lnbmF0
dXJlSW5kZXggPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9j
LCBvcmlnaW4oKSwgU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmUpKTsKKyAgICAg
ICAgICAgIEV4cHJlc3Npb25UeXBlIGV4cGVjdGVkU2lnbmF0dXJlSW5kZXggPSBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgU2lnbmF0dXJl
SW5mb3JtYXRpb246OmdldChzaWduYXR1cmUpKTsKICAgICAgICAgICAgIENoZWNrVmFsdWUqIGNo
ZWNrID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNr
LCBvcmlnaW4oKSwKICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZh
bHVlPihtX3Byb2MsIE5vdEVxdWFsLCBvcmlnaW4oKSwgY2FsbGVlU2lnbmF0dXJlSW5kZXgsIGV4
cGVjdGVkU2lnbmF0dXJlSW5kZXgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUJCUVBsYW4uY3BwCmluZGV4IDQzYzhmNTYyYWZhMWMzNjMzYTdlNmM2MWY0MDkyMmVjMGJlOTcy
MTMuLjIyYTY1YzMxMTBjZmM4Y2RiOTRjZDEwNWZiNmQ3YzNlNTNlNzcwYTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJXYXNtRmF1bHRTaWduYWxIYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5o
IgogI2luY2x1ZGUgIldhc21Nb2R1bGVQYXJzZXIuaCIKKyNpbmNsdWRlICJXYXNtU2lnbmF0dXJl
SW5saW5lcy5oIgogI2luY2x1ZGUgIldhc21UaWVyVXBDb3VudC5oIgogI2luY2x1ZGUgIldhc21W
YWxpZGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtRm9ybWF0LmgKaW5kZXggZTQzZjRlZDkzNjE2N2ZmMjkzOGQ4MzdhMGNlMDg4ZDQz
ZDIwYTRlNi4uNDYzMjM5NGRiMmNlM2MyNThmZWRkNzZlYTAxM2ViYTVkMTc1YjczMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaApAQCAtMjc2LDYgKzI3Niw3IEBAIHN0
cnVjdCBJbnRlcm5hbEZ1bmN0aW9uIHsKIC8vIG1lYW50IGFzIGZhc3QgbG9va3VwIHRhYmxlcyBm
b3IgdGhlc2Ugb3Bjb2RlcyBhbmQgZG8gbm90IG93biBjb2RlLgogc3RydWN0IFdhc21Ub1dhc21J
bXBvcnRhYmxlRnVuY3Rpb24gewogICAgIHVzaW5nIExvYWRMb2NhdGlvbiA9IE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxXYXNtRW50cnlQdHJUYWc+KjsKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mU2lnbmF0dXJlSW5kZXgoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoV2FzbVRvV2FzbUlt
cG9ydGFibGVGdW5jdGlvbiwgc2lnbmF0dXJlSW5kZXgpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZkVudHJ5cG9pbnRMb2FkTG9jYXRpb24oKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoV2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbiwgZW50cnlwb2ludExvYWRMb2NhdGlvbik7
IH0KIAogICAgIC8vIEZJWE1FOiBQYWNrIHNpZ25hdHVyZSBpbmRleCBhbmQgY29kZSBwb2ludGVy
IGludG8gb25lIDY0LWJpdCB2YWx1ZS4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY1NTExPi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21GdW5jdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXggODczNWNlOGU2YWNjYjM4ZTg0Yzg0YjdiOGUxMWQ1MzM3
OWFiOGRiZS4uMDg4ZTcyOGNlNGNjNTRjZTNjNjA2YjQwZjI1NWE2MDlkNTdiM2I5MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTI4
LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKICNpbmNsdWRlICJXYXNtUGFy
c2VyLmgiCisjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYv
RGF0YUxvZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5oCmluZGV4IGZhMzZhNjliODAzOTE1ZDYxYzM5NmZj
MWIzZjliYzc2NDIwMGU2MzIuLjY1MmRkZDM3ZGI4ZTU3ODhkMDU4NzVkMmMyZGZjN2ZhZGM5ZTcz
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmgKQEAgLTQxLDcgKzQx
LDcgQEAgc3RydWN0IENvbnRleHQ7CiBzdHJ1Y3QgTW9kdWxlSW5mb3JtYXRpb247CiBjbGFzcyBQ
bGFuOwogCi11c2luZyBTaWduYXR1cmVJbmRleCA9IHVpbnQzMl90OwordXNpbmcgU2lnbmF0dXJl
SW5kZXggPSB1aW50NjRfdDsKIAogY2xhc3MgTW9kdWxlIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPE1vZHVsZT4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bU9NR1BsYW4uY3BwCmluZGV4IDllMGM0YTU2NjZlNDRlMGVhY2MyMzEyYWJiYjc2NTQ1M2I4Nzlm
NDguLmUzMWI0NzFiNzkyNTJkY2VjZTY3ZjZmYWZkZjA2YjcxNDgzMzI3YTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNp
bmNsdWRlICJXYXNtTWFjaGluZVRocmVhZHMuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCiAj
aW5jbHVkZSAiV2FzbU5hbWVTZWN0aW9uLmgiCisjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGlu
ZXMuaCIKICNpbmNsdWRlICJXYXNtVmFsaWRhdGUuaCIKICNpbmNsdWRlICJXYXNtV29ya2xpc3Qu
aCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCmluZGV4IDlhOWJhY2I2N2RlZDI1MDQ1MzVkOGMy
ZGU1YzVlZDgzM2RlZjE2MDIuLmFlODcyNWQwNzljYzNjOWM4ODIwMDQ3MGRjMGJmZjdiZTc2NDRm
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNl
ci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJXYXNtTmFtZVNlY3Rpb25QYXJzZXIu
aCIKICNpbmNsdWRlICJXYXNtT3BzLmgiCiAjaW5jbHVkZSAiV2FzbVNlY3Rpb25zLmgiCisjaW5j
bHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBXYXNtIHsKIApAQCAtNzUsOCArNzYsNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlVHlw
ZSgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgICAgIHJldHVyblR5cGUgPSBUeXBlOjpWb2lk
OwogICAgICAgICBzaWduYXR1cmUtPnJldHVyblR5cGUoKSA9IHJldHVyblR5cGU7CiAKLSAgICAg
ICAgc3RkOjpwYWlyPFNpZ25hdHVyZUluZGV4LCBSZWY8U2lnbmF0dXJlPj4gcmVzdWx0ID0gU2ln
bmF0dXJlSW5mb3JtYXRpb246OmFkb3B0KFdURk1vdmUoc2lnbmF0dXJlKSk7Ci0gICAgICAgIG1f
aW5mby0+dXNlZFNpZ25hdHVyZXMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUocmVzdWx0LnNlY29u
ZCkpOworICAgICAgICBtX2luZm8tPnVzZWRTaWduYXR1cmVzLnVuY2hlY2tlZEFwcGVuZChTaWdu
YXR1cmVJbmZvcm1hdGlvbjo6YWRvcHQoV1RGTW92ZShzaWduYXR1cmUpKSk7CiAgICAgfQogICAg
IHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtU2lnbmF0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1
cmUuY3BwCmluZGV4IDZhNDJkNTE3MTk1ZWE0ZmI2MWQ5MmIxMGM4Y2MzNzczNjdjMmViOWQuLjI5
Y2UyMTM3NTIxM2MzMTQ1NWFhMzNhMjk1ZThmODZlNGQ5YjRlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuY3BwCkBAIC00MSw2ICs0MSw5IEBAIHN0YXRp
YyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKIH0KIH0KIAorU2lnbmF0dXJlSW5mb3JtYXRp
b24qIFNpZ25hdHVyZUluZm9ybWF0aW9uOjp0aGVPbmUgeyBudWxscHRyIH07CitzdGQ6Om9uY2Vf
ZmxhZyBTaWduYXR1cmVJbmZvcm1hdGlvbjo6c2lnbmF0dXJlSW5mb3JtYXRpb25GbGFnOworCiBT
dHJpbmcgU2lnbmF0dXJlOjp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHJlc3VsdCht
YWtlU3RyaW5nKHJldHVyblR5cGUoKSkpOwpAQCAtODMsNjAgKzg2LDIyIEBAIFNpZ25hdHVyZUlu
Zm9ybWF0aW9uOjpTaWduYXR1cmVJbmZvcm1hdGlvbigpCiB7CiB9CiAKLVNpZ25hdHVyZUluZm9y
bWF0aW9uJiBTaWduYXR1cmVJbmZvcm1hdGlvbjo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0aWMg
U2lnbmF0dXJlSW5mb3JtYXRpb24qIHRoZU9uZTsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
c2lnbmF0dXJlSW5mb3JtYXRpb25GbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKHNpZ25hdHVyZUlu
Zm9ybWF0aW9uRmxhZywgW10gKCkgewotICAgICAgICB0aGVPbmUgPSBuZXcgU2lnbmF0dXJlSW5m
b3JtYXRpb247Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gKnRoZU9uZTsKLX0KLQotc3RkOjpwYWly
PFNpZ25hdHVyZUluZGV4LCBSZWY8U2lnbmF0dXJlPj4gU2lnbmF0dXJlSW5mb3JtYXRpb246OmFk
b3B0KFJlZjxTaWduYXR1cmU+JiYgc2lnbmF0dXJlKQorUmVmPFNpZ25hdHVyZT4gU2lnbmF0dXJl
SW5mb3JtYXRpb246OmFkb3B0KFJlZjxTaWduYXR1cmU+JiYgc2lnbmF0dXJlKQogewogICAgIFNp
Z25hdHVyZUluZm9ybWF0aW9uJiBpbmZvID0gc2luZ2xldG9uKCk7CiAgICAgTG9ja0hvbGRlciBs
b2NrKGluZm8ubV9sb2NrKTsKIAotICAgIFNpZ25hdHVyZUluZGV4IG5leHRWYWx1ZSA9IGluZm8u
bV9uZXh0SW5kZXg7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBpbmZvLm1fc2lnbmF0dXJlTWFwLmFk
ZChTaWduYXR1cmVIYXNoIHsgc2lnbmF0dXJlLnB0cigpIH0sIG5leHRWYWx1ZSk7CisgICAgU2ln
bmF0dXJlSW5kZXggbmV4dFZhbHVlID0gc2lnbmF0dXJlLT5pbmRleCgpOworICAgIGF1dG8gYWRk
UmVzdWx0ID0gaW5mby5tX3NpZ25hdHVyZVNldC5hZGQoU2lnbmF0dXJlSGFzaCB7IHNpZ25hdHVy
ZS5jb3B5UmVmKCkgfSk7CiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAg
ICsraW5mby5tX25leHRJbmRleDsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5mby5tX25leHRJ
bmRleCA+IG5leHRWYWx1ZSk7IC8vIGNyYXNoIG9uIG92ZXJmbG93LgotICAgICAgICBBU1NFUlQo
bmV4dFZhbHVlID09IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogICAgICAgICBpZiAoV2Fz
bVNpZ25hdHVyZUludGVybmFsOjp2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZ0xuKCJBZG9w
dCBuZXcgc2lnbmF0dXJlICIsIHNpZ25hdHVyZS5nZXQoKSwgIiB3aXRoIGluZGV4ICIsIGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUsICIgaGFzaDogIiwgc2lnbmF0dXJlLT5oYXNoKCkpOwotCi0g
ICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gaW5mby5tX2luZGV4TWFwLmFkZChuZXh0VmFsdWUsIHNp
Z25hdHVyZS5jb3B5UmVmKCkpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChhZGRSZXN1bHQuaXNO
ZXdFbnRyeSk7Ci0gICAgICAgIEFTU0VSVChpbmZvLm1faW5kZXhNYXAuc2l6ZSgpID09IGluZm8u
bV9zaWduYXR1cmVNYXAuc2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG5l
eHRWYWx1ZSwgV1RGTW92ZShzaWduYXR1cmUpKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiQWRv
cHQgbmV3IHNpZ25hdHVyZSAiLCBzaWduYXR1cmUuZ2V0KCksICIgd2l0aCBpbmRleCAiLCBuZXh0
VmFsdWUsICIgaGFzaDogIiwgc2lnbmF0dXJlLT5oYXNoKCkpOworICAgICAgICByZXR1cm4gV1RG
TW92ZShzaWduYXR1cmUpOwogICAgIH0KKyAgICBuZXh0VmFsdWUgPSBhZGRSZXN1bHQuaXRlcmF0
b3ItPmtleS0+aW5kZXgoKTsKICAgICBpZiAoV2FzbVNpZ25hdHVyZUludGVybmFsOjp2ZXJib3Nl
KQotICAgICAgICBkYXRhTG9nTG4oIkV4aXN0aW5nIHNpZ25hdHVyZSAiLCBzaWduYXR1cmUuZ2V0
KCksICIgd2l0aCBpbmRleCAiLCBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLCAiIGhhc2g6ICIs
IHNpZ25hdHVyZS0+aGFzaCgpKTsKLSAgICBBU1NFUlQoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSAhPSBTaWduYXR1cmU6OmludmFsaWRJbmRleCk7Ci0gICAgQVNTRVJUKGluZm8ubV9pbmRleE1h
cC5jb250YWlucyhhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKSk7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV9wYWlyKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUsIFJlZjxTaWduYXR1cmU+KCppbmZv
Lm1faW5kZXhNYXAuZ2V0KGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUpKSk7Ci19Ci0KLWNvbnN0
IFNpZ25hdHVyZSYgU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChTaWduYXR1cmVJbmRleCBpbmRl
eCkKLXsKLSAgICBBU1NFUlQoaW5kZXggIT0gU2lnbmF0dXJlOjppbnZhbGlkSW5kZXgpOwotICAg
IFNpZ25hdHVyZUluZm9ybWF0aW9uJiBpbmZvID0gc2luZ2xldG9uKCk7Ci0gICAgTG9ja0hvbGRl
ciBsb2NrKGluZm8ubV9sb2NrKTsKLQotICAgIHJldHVybiAqaW5mby5tX2luZGV4TWFwLmdldChp
bmRleCk7Ci19Ci0KLVNpZ25hdHVyZUluZGV4IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoY29u
c3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpCi17Ci0gICAgU2lnbmF0dXJlSW5mb3JtYXRpb24mIGlu
Zm8gPSBzaW5nbGV0b24oKTsKLSAgICBMb2NrSG9sZGVyIGxvY2soaW5mby5tX2xvY2spOwotCi0g
ICAgYXV0byByZXN1bHQgPSBpbmZvLm1fc2lnbmF0dXJlTWFwLmdldChTaWduYXR1cmVIYXNoIHsg
JnNpZ25hdHVyZSB9KTsKLSAgICBBU1NFUlQocmVzdWx0ICE9IFNpZ25hdHVyZTo6aW52YWxpZElu
ZGV4KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBkYXRhTG9nTG4oIkV4aXN0aW5nIHNp
Z25hdHVyZSAiLCBzaWduYXR1cmUuZ2V0KCksICIgd2l0aCBpbmRleCAiLCBuZXh0VmFsdWUsICIg
aGFzaDogIiwgc2lnbmF0dXJlLT5oYXNoKCkpOworICAgIHJldHVybiBSZWY8U2lnbmF0dXJlPigq
YWRkUmVzdWx0Lml0ZXJhdG9yLT5rZXkpOwogfQogCiB2b2lkIFNpZ25hdHVyZUluZm9ybWF0aW9u
Ojp0cnlDbGVhbnVwKCkKQEAgLTE0NCwyNCArMTA5LDEwIEBAIHZvaWQgU2lnbmF0dXJlSW5mb3Jt
YXRpb246OnRyeUNsZWFudXAoKQogICAgIFNpZ25hdHVyZUluZm9ybWF0aW9uJiBpbmZvID0gc2lu
Z2xldG9uKCk7CiAgICAgTG9ja0hvbGRlciBsb2NrKGluZm8ubV9sb2NrKTsKIAotICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8U2lnbmF0dXJlSW5kZXgsIFNpZ25hdHVyZSo+PiB0b1JlbW92ZTsKLSAgICBm
b3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBpbmZvLm1faW5kZXhNYXApIHsKLSAgICAgICAgY29uc3Qg
UmVmPFNpZ25hdHVyZT4mIHNpZ25hdHVyZSA9IHBhaXIudmFsdWU7Ci0gICAgICAgIGlmIChzaWdu
YXR1cmUtPnJlZkNvdW50KCkgPT0gMSkgewotICAgICAgICAgICAgLy8gV2UncmUgdGhlIG9ubHkg
b3duZXIuCi0gICAgICAgICAgICB0b1JlbW92ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIocGFpci5r
ZXksIHNpZ25hdHVyZS5wdHIoKSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIGZvciAoY29uc3Qg
YXV0byYgcGFpciA6IHRvUmVtb3ZlKSB7Ci0gICAgICAgIGJvb2wgcmVtb3ZlZCA9IGluZm8ubV9z
aWduYXR1cmVNYXAucmVtb3ZlKFNpZ25hdHVyZUhhc2ggeyBwYWlyLnNlY29uZCB9KTsKLSAgICAg
ICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkLCByZW1vdmVkKTsKLSAgICAgICAgcmVtb3ZlZCA9IGlu
Zm8ubV9pbmRleE1hcC5yZW1vdmUocGFpci5maXJzdCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQo
cmVtb3ZlZCwgcmVtb3ZlZCk7Ci0gICAgfQotICAgIGlmIChpbmZvLm1fc2lnbmF0dXJlTWFwLmlz
RW1wdHkoKSkgewotICAgICAgICBBU1NFUlQoaW5mby5tX2luZGV4TWFwLmlzRW1wdHkoKSk7Ci0g
ICAgICAgIGluZm8ubV9uZXh0SW5kZXggPSBTaWduYXR1cmU6OmZpcnN0VmFsaWRJbmRleDsKLSAg
ICB9CisgICAgaW5mby5tX3NpZ25hdHVyZVNldC5yZW1vdmVJZihbJl0gKGF1dG8mIGhhc2gpIHsK
KyAgICAgICAgY29uc3QgYXV0byYgc2lnbmF0dXJlID0gaGFzaC5rZXk7CisgICAgICAgIHJldHVy
biBzaWduYXR1cmUtPnJlZkNvdW50KCkgPT0gMTsKKyAgICB9KTsKIH0KIAogfSB9IC8vIG5hbWVz
cGFjZSBKU0M6Oldhc20KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21TaWduYXR1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUu
aAppbmRleCA5ZjQ5Y2NiMTQ1NjhkMjAxZjFmOGFkY2VlZmIwYzEzMzFlYjc3ZjBiLi42ZGIyOGMz
ZjE5NDIyZTRjNjhhMzI4MGMxNjVjNzEzOGM2NzIzNWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVNpZ25hdHVyZS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8Y3N0
cmluZz4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hU
cmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC00Nyw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
bmFtZXNwYWNlIFdhc20gewogCiB1c2luZyBTaWduYXR1cmVBcmdDb3VudCA9IHVpbnQzMl90Owot
dXNpbmcgU2lnbmF0dXJlSW5kZXggPSB1aW50MzJfdDsKK3VzaW5nIFNpZ25hdHVyZUluZGV4ID0g
dWludDY0X3Q7CiAKIGNsYXNzIFNpZ25hdHVyZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxTaWduYXR1cmU+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTgxLDYgKzgy
LDcgQEAgY2xhc3MgU2lnbmF0dXJlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNpZ25h
dHVyZT4gewogICAgICAgICByZXR1cm4gKnN0b3JhZ2UocmV0dXJuQ291bnQoKSArIGkpOwogICAg
IH0KICAgICBUeXBlIGFyZ3VtZW50KFNpZ25hdHVyZUFyZ0NvdW50IGkpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0X2Nhc3Q8U2lnbmF0dXJlKj4odGhpcyktPmFyZ3VtZW50KGkpOyB9CisgICAgU2lnbmF0
dXJlSW5kZXggaW5kZXgoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8U2lnbmF0dXJlSW5k
ZXg+KHRoaXMpOyB9CiAKICAgICBXVEY6OlN0cmluZyB0b1N0cmluZygpIGNvbnN0OwogICAgIHZv
aWQgZHVtcChXVEY6OlByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwpAQCAtMTExLDI4ICsxMTMsMjEg
QEAgY2xhc3MgU2lnbmF0dXJlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNpZ25hdHVy
ZT4gewogfTsKIAogc3RydWN0IFNpZ25hdHVyZUhhc2ggewotICAgIGNvbnN0IFNpZ25hdHVyZSog
a2V5OwotICAgIHN0YXRpYyBjb25zdCBTaWduYXR1cmUqIGVtcHR5KCkgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHN0YXRpYyBjb25zdCBTaWduYXR1cmUqIGRlbGV0ZWQoKSB7IHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNvbnN0IFNpZ25hdHVyZSo+KDEpOyB9Ci0gICAgU2lnbmF0dXJlSGFzaCgp
Ci0gICAgICAgIDoga2V5KGVtcHR5KCkpCisgICAgUmVmUHRyPFNpZ25hdHVyZT4ga2V5IHsgbnVs
bHB0ciB9OworICAgIFNpZ25hdHVyZUhhc2goKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgU2ln
bmF0dXJlSGFzaChSZWY8U2lnbmF0dXJlPiYmIGtleSkKKyAgICAgICAgOiBrZXkoV1RGTW92ZShr
ZXkpKQogICAgIHsKICAgICB9Ci0gICAgZXhwbGljaXQgU2lnbmF0dXJlSGFzaChjb25zdCBTaWdu
YXR1cmUqIGtleSkKLSAgICAgICAgOiBrZXkoa2V5KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGtl
eSAhPSBlbXB0eSgpKTsKLSAgICAgICAgQVNTRVJUKGtleSAhPSBkZWxldGVkKCkpOwotICAgIH0K
ICAgICBleHBsaWNpdCBTaWduYXR1cmVIYXNoKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlw
ZSkKLSAgICAgICAgOiBrZXkoZGVsZXRlZCgpKQorICAgICAgICA6IGtleShXVEY6Okhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSkKICAgICB7CiAgICAgfQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
aWduYXR1cmVIYXNoJiByaHMpIGNvbnN0IHsgcmV0dXJuIGVxdWFsKCp0aGlzLCByaHMpOyB9CiAg
ICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU2lnbmF0dXJlSGFzaCYgbGhzLCBjb25zdCBTaWdu
YXR1cmVIYXNoJiByaHMpIHsgcmV0dXJuIGxocy5rZXkgPT0gcmhzLmtleSB8fCAobGhzLmtleSAm
JiByaHMua2V5ICYmICpsaHMua2V5ID09ICpyaHMua2V5KTsgfQotICAgIHN0YXRpYyB1bnNpZ25l
ZCBoYXNoKGNvbnN0IFNpZ25hdHVyZUhhc2gmIHNpZ25hdHVyZSkgeyByZXR1cm4gc2lnbmF0dXJl
LmtleS0+aGFzaCgpOyB9CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU2lnbmF0dXJl
SGFzaCYgc2lnbmF0dXJlKSB7IHJldHVybiBzaWduYXR1cmUua2V5ID8gc2lnbmF0dXJlLmtleS0+
aGFzaCgpIDogMDsgfQogICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5
T3JEZWxldGVkID0gZmFsc2U7Ci0gICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIGtleSA9PSBkZWxldGVkKCk7IH0KKyAgICBib29sIGlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4ga2V5LmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7
IH0KIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCkBAIC0xNjUsMTYgKzE2MCwxNyBA
QCBjbGFzcyBTaWduYXR1cmVJbmZvcm1hdGlvbiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFNpZ25h
dHVyZUluZm9ybWF0aW9uJiBzaW5nbGV0b24oKTsKIAotICAgIHN0YXRpYyBzdGQ6OnBhaXI8U2ln
bmF0dXJlSW5kZXgsIFJlZjxTaWduYXR1cmU+PiBXQVJOX1VOVVNFRF9SRVRVUk4gYWRvcHQoUmVm
PFNpZ25hdHVyZT4mJik7CisgICAgc3RhdGljIFJlZjxTaWduYXR1cmU+IFdBUk5fVU5VU0VEX1JF
VFVSTiBhZG9wdChSZWY8U2lnbmF0dXJlPiYmKTsKICAgICBzdGF0aWMgY29uc3QgU2lnbmF0dXJl
JiBXQVJOX1VOVVNFRF9SRVRVUk4gZ2V0KFNpZ25hdHVyZUluZGV4KTsKICAgICBzdGF0aWMgU2ln
bmF0dXJlSW5kZXggV0FSTl9VTlVTRURfUkVUVVJOIGdldChjb25zdCBTaWduYXR1cmUmKTsKICAg
ICBzdGF0aWMgdm9pZCB0cnlDbGVhbnVwKCk7CiAKIHByaXZhdGU6Ci0gICAgSGFzaE1hcDxXYXNt
OjpTaWduYXR1cmVIYXNoLCBXYXNtOjpTaWduYXR1cmVJbmRleD4gbV9zaWduYXR1cmVNYXA7Ci0g
ICAgSGFzaE1hcDxXYXNtOjpTaWduYXR1cmVJbmRleCwgUmVmPFNpZ25hdHVyZT4+IG1faW5kZXhN
YXA7Ci0gICAgU2lnbmF0dXJlSW5kZXggbV9uZXh0SW5kZXggeyBTaWduYXR1cmU6OmZpcnN0VmFs
aWRJbmRleCB9OworICAgIEhhc2hTZXQ8V2FzbTo6U2lnbmF0dXJlSGFzaD4gbV9zaWduYXR1cmVT
ZXQ7CiAgICAgTG9jayBtX2xvY2s7CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU2ln
bmF0dXJlSW5mb3JtYXRpb24qIHRoZU9uZTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgc2lnbmF0dXJlSW5mb3JtYXRpb25GbGFnOwogfTsKIAogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6Oldhc20KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TaWduYXR1cmVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
U2lnbmF0dXJlSW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxYTUwMTQwNTZiMGQ5ZDI1ZDIyZmM2NGU0
NjJmYTZjNTFjNDg3NDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtU2lnbmF0dXJlSW5saW5lcy5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggWXVzdWtlIFN1enVraSA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5v
cmc+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIldhc21TaWduYXR1cmUuaCIKKworI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKKworaW5saW5lIFNpZ25h
dHVyZUluZm9ybWF0aW9uJiBTaWduYXR1cmVJbmZvcm1hdGlvbjo6c2luZ2xldG9uKCkKK3sKKyAg
ICBzdGQ6OmNhbGxfb25jZShzaWduYXR1cmVJbmZvcm1hdGlvbkZsYWcsIFtdICgpIHsKKyAgICAg
ICAgdGhlT25lID0gbmV3IFNpZ25hdHVyZUluZm9ybWF0aW9uOworICAgIH0pOworICAgIHJldHVy
biAqdGhlT25lOworfQorCitpbmxpbmUgY29uc3QgU2lnbmF0dXJlJiBTaWduYXR1cmVJbmZvcm1h
dGlvbjo6Z2V0KFNpZ25hdHVyZUluZGV4IGluZGV4KQoreworICAgIEFTU0VSVChpbmRleCAhPSBT
aWduYXR1cmU6OmludmFsaWRJbmRleCk7CisgICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8Y29uc3Qg
U2lnbmF0dXJlKj4oaW5kZXgpOworfQorCitpbmxpbmUgU2lnbmF0dXJlSW5kZXggU2lnbmF0dXJl
SW5mb3JtYXRpb246OmdldChjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSkKK3sKKyAgICBpZiAo
IUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBTaWduYXR1cmVJbmZvcm1hdGlvbiYgaW5mbyA9
IHNpbmdsZXRvbigpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGluZm8ubV9sb2Nr
KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpbmZvLCBpbmZvLm1fc2lnbmF0dXJlU2V0LmNvbnRh
aW5zKFNpZ25hdHVyZUhhc2ggeyAmc2lnbmF0dXJlIH0pKTsKKyAgICB9CisgICAgcmV0dXJuIGJp
dHdpc2VfY2FzdDxTaWduYXR1cmVJbmRleD4oJnNpZ25hdHVyZSk7Cit9CisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpXYXNtCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKaW5kZXggZmNiOWIwYzYxOGFlNjll
MTUxMWE3ZmE0Y2YzYmYwNjUyZDZiMzEyZC4uMzY0ZjdjNzRiYzE5ZmM1NWJmMmFkNjliYWQ0OTBl
Y2VlZWU5MTlkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNU
b1dhc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNw
cApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUg
IkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgogI2luY2x1ZGUgIldhc21DYWxsaW5nQ29udmVudGlv
bi5oIgorI2luY2x1ZGUgIldhc21TaWduYXR1cmVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgV2FzbSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaAppbmRleCBkMzkzMDA2OTE5ZDI3YWQxNzQ2OWZlMjY5
NWRiODQzODQyM2QwODJlLi43MmEzMDYzYTRiMzdjNTcwY2Y5NDBkNzZiNTlkMWMwY2NiYzA1ZTQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
TW9kdWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eU1vZHVsZS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXYXNtIHsKIGNsYXNzIE1vZHVs
ZTsKIHN0cnVjdCBNb2R1bGVJbmZvcm1hdGlvbjsKIGNsYXNzIFBsYW47Ci11c2luZyBTaWduYXR1
cmVJbmRleCA9IHVpbnQzMl90OwordXNpbmcgU2lnbmF0dXJlSW5kZXggPSB1aW50NjRfdDsKIH0K
IAogY2xhc3MgU3ltYm9sVGFibGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XYXNtVG9KUy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNt
VG9KUy5jcHAKaW5kZXggMTI3MGM3OWIxYzQzMTBjYzVmYzYzMDI5YWU4M2JmYjE4YzVlMDNjNi4u
ZWUwMGZjODhlMGNhZjI1NDRkOWQ3OWVjYzkzZjRlMTIzMjUzOGIzMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1
ZGUgIldhc21Db250ZXh0LmgiCiAjaW5jbHVkZSAiV2FzbUV4Y2VwdGlvblR5cGUuaCIKICNpbmNs
dWRlICJXYXNtSW5zdGFuY2UuaCIKKyNpbmNsdWRlICJXYXNtU2lnbmF0dXJlSW5saW5lcy5oIgog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCkBAIC0zMDEsNyArMzAyLDggQEAg
RXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdG
YWlsdXJlPiB3YXNtVG9KUyhWTSogdm0KICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoMCksIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CiAKICAgICAgICAgc3RhdGlj
X2Fzc2VydChHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzID49IDQsICJXZSByZWx5
IG9uIHRoaXMgd2l0aCB0aGUgY2FsbCBiZWxvdy4iKTsKLSAgICAgICAgaml0LnNldHVwQXJndW1l
bnRzPGRlY2x0eXBlKGNhbGxGdW5jKT4oR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihzaWduYXR1cmVJbmRleCksIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihidWZmZXIpKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoU2lnbmF0dXJlSW5k
ZXgpID09IHNpemVvZih1aW50NjRfdCksICJGb2xsb3dpbmcgY29kZSBhc3N1bWVzIFNpZ25hdHVy
ZUluZGV4IGlzIDY0Yml0LiIpOworICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUo
Y2FsbEZ1bmMpPihHUFJJbmZvOjphcmd1bWVudEdQUjEsIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTY0KHNpZ25hdHVyZUluZGV4KSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJ1ZmZlcikp
OwogICAgICAgICBhdXRvIGNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwogICAgICAg
ICBhdXRvIG5vRXhjZXB0aW9uID0gaml0LmVtaXRFeGNlcHRpb25DaGVjaygqdm0sIEFzc2VtYmx5
SGVscGVyczo6SW52ZXJ0ZWRFeGNlcHRpb25DaGVjayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKaW5kZXggMDJiNGMy
NGM0MmJjY2YxMmY4MjNhYjA3OTc1M2IwNWU1YTNhYTU0YS4uNWRiOTI0ZjhlY2ZiMDNhN2UwYmE2
ZjVkMDg0ODIyYjM0NzExYmFjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNs
dWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldhc21Gb3JtYXQuaCIKICNpbmNsdWRlICJX
YXNtTWVtb3J5LmgiCisjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIKICNpbmNsdWRl
IDx3dGYvRmFzdFRMUy5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkLmNwcAppbmRleCBkNzQ0MTdjYjFhNGMxY2EzYjJmMzhlZmEyMDc3YTUzOGIxNjVlYTEy
Li5lOGNhNThjYmY2MGFjNDZhYjIzMGVlM2RmMDRhNWY0YTMwMjhmMmYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmQuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUxpbmtFcnJv
ci5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKICNpbmNsdWRlICJQcm90b0Nh
bGxGcmFtZS5oIgotI2luY2x1ZGUgIldhc21TaWduYXR1cmUuaCIKKyNpbmNsdWRlICJXYXNtU2ln
bmF0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIldlYkFzc2VtYmx5RnVuY3Rpb24uaCIKICNpbmNs
dWRlIDxsaW1pdHM+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcAppbmRleCAzNmYzNzgzMDZiZTcy
N2MwMjk1MzFkYjQ5MmE4ZDAwOTI3MjkxYTZlLi40NDRlZmJmOGI0YTdhMzVmNDBmMDFjZWI0Yzc5
ZWM4NDNlYjE2NDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCisjaW5jbHVkZSAiV2FzbVNpZ25h
dHVyZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349137</attachid>
            <date>2018-09-07 05:29:40 -0700</date>
            <delta_ts>2018-09-07 05:34:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189401-20180907212939.patch</filename>
            <type>text/plain</type>
            <size>36277</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1Nzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OTQ2MDg3MWZlNjkwN2QyNzFhNGQwMDg2ZjIzNTRhODU4OTk4YmJkLi5hNWFhZGRkZTcyODZjMWVj
ZDUzZThiYmY4N2NiZjkyNTZiYTliYzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NyBAQAorMjAxOC0wOS0wNyAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtXZWJBc3NlbWJseV0gT3B0aW1pemUgSlMgdG8gV2FzbSBj
YWxsIGJ5IHVzaW5nIHBvaW50ZXIgb2YgU2lnbmF0dXJlIGFzIFNpZ25hdHVyZUluZGV4CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk0MDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaWduYXR1cmVJbmZv
cm1hdGlvbiBpcyBhIGdsb2JhbCByZXBvc2l0b3J5IGZvciBTaWduYXR1cmUgdG8gbWFrZSBTaWdu
YXR1cmUgYXRvbWljLgorICAgICAgICBJdCB0YWtlcyBSZWY8U2lnbmF0dXJlPiYmIGFuZCBnZW5l
cmF0ZXMgU2lnbmF0dXJlSW5kZXguIEFuZCB3ZSBnZXQgY29uc3QgU2lnbmF0dXJlJgorICAgICAg
ICBieSB1c2luZyB0aGlzIFNpZ25hdHVyZUluZGV4LiBIb3dldmVyLCBjb252ZXJ0aW5nIFNpZ25h
dHVyZUluZGV4IHRvIGNvbnN0IFNpZ25hdHVyZSYKKyAgICAgICAgYWx3YXlzIGxvb2tzIHVwIGEg
aGFzaCB0YWJsZS4gVGhpcyBpcyBjb3N0bHkgc2luY2UgSlMgdG8gV2FzbSBjYWxscyBhbHdheXMg
dXNlCisgICAgICAgIFNpZ25hdHVyZSYgdG8gY2hlY2sgdHlwZXMgb2YgYXJndW1lbnRzLgorCisg
ICAgICAgIEluc3RlYWQgb2YgdXNpbmcgdGhpcyBoYXNoIHRhYmxlLCB0aGlzIHBhdGNoIHVzZXMg
YSBwb2ludGVyIG9mIFNpZ25hdHVyZSBhcyBTaWduYXR1cmVJbmRleC4KKyAgICAgICAgVGhpcyBh
bGxvd3MgdXMgdG8gY29udmVydCBTaWduYXR1cmVJbmRleCB0byBTaWduYXR1cmUgYnkganVzdCBj
YXN0aW5nIGl0LgorCisgICAgICAgIFdlIGFsc28gb3B0aW1pemUgU2lnbmF0dXJlSW5mb3JtYXRp
b246OnNpbmdsZXRvbiBieSBtYWtpbmcgYW4gYWNjZXNzb3IgZnVuY3Rpb24gaW5saW5lZC4KKyAg
ICAgICAgQW5kIHdlIG1vdmUgUHJvdG9DYWxsRnJhbWU6OmluaXQgdG8gdGhlIGhlYWRlciBzaW5j
ZSBpdCdzIGp1c3Qgc2V0dGluZyB2YWx1ZXMuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ugc2lnbmlm
aWNhbnRseSBvcHRpbWl6ZXMgSlMgdG8gd2FzbSBjYWxscyAoMWU3IHRpbWVzKSBmcm9tIDYwMG1z
IHRvIDMyMG1zLgorCisgICAgICAgIEluIHRoZSBmdXR1cmUsIHdlIGNhbiByZW1vdmUgU2lnbmF0
dXJlSW5kZXggYnkgZGlyZWN0bHkgaGFuZGxpbmcgUmVmPFNpZ25hdHVyZT46IGFkZGluZworICAg
ICAgICBkZXJlZigpIG9mIFNpZ25hdHVyZSB3aGljaCB1bnJlZ2lzdGVycyBpdHNlbGYgZnJvbSBT
aWduYXR1cmVJbmZvcm1hdGlvbiBjYXJlZnVsbHkuIE9yIHdlIGNhbgorICAgICAgICBtYWtlIFNp
Z25hdHVyZUluZGV4IHVpbnQzMl90IGJ5IGludHJvZHVjaW5nIGEgbWVjaGFuaXNtIHNpbWlsYXIg
dG8gU3RydWN0dXJlSUQuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGludGVycHJl
dGVyL1Byb3RvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvdG9DYWxsRnJhbWU6Omlu
aXQpOiBEZWxldGVkLgorICAgICAgICAqIGludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmg6Cisg
ICAgICAgIChKU0M6OlByb3RvQ2FsbEZyYW1lOjppbml0KToKKyAgICAgICAgKiB3YXNtL1dhc21C
M0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRk
Q2FsbEluZGlyZWN0KToKKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAg
KiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6V2FzbVRvV2FzbUltcG9y
dGFibGVGdW5jdGlvbjo6b2Zmc2V0T2ZTaWduYXR1cmVJbmRleCk6CisgICAgICAgICogd2FzbS9X
YXNtRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAgICAgKiB3YXNtL1dhc21Nb2R1bGUuaDoKKyAgICAg
ICAgKiB3YXNtL1dhc21PTUdQbGFuLmNwcDoKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VUeXBlKToK
KyAgICAgICAgKiB3YXNtL1dhc21TaWduYXR1cmUuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpT
aWduYXR1cmVJbmZvcm1hdGlvbjo6YWRvcHQpOgorICAgICAgICAoSlNDOjpXYXNtOjpTaWduYXR1
cmVJbmZvcm1hdGlvbjo6dHJ5Q2xlYW51cCk6CisgICAgICAgIChKU0M6Oldhc206OlNpZ25hdHVy
ZUluZm9ybWF0aW9uOjpzaW5nbGV0b24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpT
aWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL1dhc21T
aWduYXR1cmUuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2lnbmF0dXJlOjppbmRleCBjb25zdCk6
CisgICAgICAgIChKU0M6Oldhc206OlNpZ25hdHVyZUhhc2g6OlNpZ25hdHVyZUhhc2gpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpTaWduYXR1cmVIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6U2lnbmF0dXJlSGFzaDo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpXYXNtOjpTaWduYXR1cmVIYXNoOjplbXB0eSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Oldhc206OlNpZ25hdHVyZUhhc2g6OmRlbGV0ZWQpOiBEZWxldGVkLgorICAgICAgICAqIHdh
c20vV2FzbVNpZ25hdHVyZUlubGluZXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcC4KKyAgICAgICAgKEpTQzo6V2FzbTo6
U2lnbmF0dXJlSW5mb3JtYXRpb246OnNpbmdsZXRvbik6CisgICAgICAgIChKU0M6Oldhc206OlNp
Z25hdHVyZUluZm9ybWF0aW9uOjpnZXQpOgorICAgICAgICAqIHdhc20vanMvSlNUb1dhc20uY3Bw
OgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5oOgorICAgICAgICAqIHdh
c20vanMvV2FzbVRvSlMuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9KUyk6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKiB3YXNtL2pz
L1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2Vt
Ymx5V3JhcHBlckZ1bmN0aW9uLmNwcDoKKwogMjAxOC0wOS0wNiAgWXVzdWtlIFN1enVraSAgPHl1
c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgogCiAgICAgICAgIFtXZWJBc3NlbWJseV0gT3B0aW1p
emUgSlMgdG8gV2FzbSBjYWxsIGJ5IHJlbW92aW5nIFZlY3RvciBhbGxvY2F0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUwYTAxOWE2NGU2NmM0YzdmNDg3MjRmMWY5OTNmZDY2
ZDhlNDZmOTcuLmY1YmIwNTVmZTZjNmQ4YzBiMjVkZGM2NzNiMmQ2MjM3NmI1MmIwYmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTM2LDYgKzE1MzYsNyBAQAogCQlBRDVDMzZF
QzFGNzVBRDdDMDAwQkNBQUYgLyogV2FzbVRvSlMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFERDA5QUVFMUY1RjYyM0YwMDEzMTNDMiAvKiBXYXNtVG9K
Uy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFE
NUMzNkVGMUY3QTI2M0EwMDBCQ0FBRiAvKiBXYXNtTWVtb3J5TW9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ1QzM2RUUxRjdBMjYyOTAwMEJDQUFG
IC8qIFdhc21NZW1vcnlNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQUQ3NDM4QzAxRTA0NTdBNDAwRkQwQzJBIC8qIFdhc21TaWduYXR1cmUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENzQzOEJG
MUUwNDU3OTIwMEZEMEMyQSAvKiBXYXNtU2lnbmF0dXJlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNEJBQTA3Q0VCODFGNDlBMjk2RTAyMjAzIC8q
IFdhc21TaWduYXR1cmVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMEE1RjQwM0YxMUM0RjU5OUNENTk2RDUgLyogV2FzbVNpZ25hdHVyZUlu
bGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlBRDdCNEIyRTFGQTNFMjk4MDBDOURGNzkgLyogV2FzbU5hbWVTZWN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDdCNEIyRDFGQTNFMjg2MDBD
OURGNzkgLyogV2FzbU5hbWVTZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQUQ4NkE5M0UxQUE0RDg4RDAwMkZFNzdGIC8qIFdlYWtHQ01h
cElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFEODZBOTNEMUFBNEQ4N0MwMDJGRTc3RiAvKiBXZWFrR0NNYXBJbmxpbmVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQUQ4RkYzOTgxRUI1QkRC
MjAwODdGRjgyIC8qIFdhc21JbmRleE9yTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ4RkYzOTUxRUI1QkQ4NTAwODdGRjgyIC8qIFdhc21JbmRl
eE9yTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0zNTk5LDcgKzM2MDAsNiBAQAogCQk2NUVBNzM2MjBCQUUzNUQxMDAxQkI1NjAgLyogQ29t
bW9uSWRlbnRpZmllcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENvbW1vbklkZW50aWZpZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVF
QTczNjMwQkFFMzVEMTAwMUJCNTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25JZGVudGlmaWVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2NUZCNTExNTE4NEVFOEY4MDBDMTJCNzAgLyogUHJvdG9DYWxsRnJh
bWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvdG9DYWxsRnJhbWUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjVGQjUxMTYxODRFRTlCQzAwQzEyQjcwIC8q
IFByb3RvQ2FsbEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFByb3RvQ2FsbEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkEzOENG
QTcxRTMyQjU4QjAwNjAyMDZGIC8qIEFzeW5jU3RhY2tUcmFjZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBc3luY1N0YWNrVHJhY2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2QTM4Q0ZBODFFMzJCNThCMDA2MDIwNkYgLyogQXN5bmNTdGFja1Ry
YWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jU3RhY2tUcmFjZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QUQyQ0I0QzE5QjkxNDAxMDAwNjU3MTkg
LyogRGVidWdnZXJFdmFsRW5hYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEZWJ1Z2dlckV2YWxFbmFibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00
MzY0LDYgKzQzNjQsNyBAQAogCQlBRDVDMzZGMDFGN0EyNkJGMDAwQkNBQUYgLyogV2FzbU1lbW9y
eU1vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbU1lbW9yeU1vZGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBRDc0MzhCRTFFMDQ1NzkyMDBGRDBDMkEgLyogV2FzbVNp
Z25hdHVyZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtU2ln
bmF0dXJlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ3NDM4QkYxRTA0NTc5
MjAwRkQwQzJBIC8qIFdhc21TaWduYXR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2FzbVNpZ25hdHVyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMEE1
RjQwM0YxMUM0RjU5OUNENTk2RDUgLyogV2FzbVNpZ25hdHVyZUlubGluZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbVNpZ25hdHVyZUlubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ3QjRCMkQxRkEzRTI4NjAwQzlERjc5IC8qIFdhc21OYW1l
U2VjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtTmFtZVNlY3Rp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ4NkE5M0QxQUE0RDg3QzAwMkZF
NzdGIC8qIFdlYWtHQ01hcElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2Vha0dDTWFwSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRDhE
RDZDRjFGNjcwODlGMDAwNEVCNTIgLyogSlNUb1dhc20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNUb1dh
c20uaDsgcGF0aCA9IGpzL0pTVG9XYXNtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01NTA4LDggKzU1MDksOCBAQAogCQkJCTc5NkRBQTJBMUU4OUNDRDYwMDVERjI0QSAvKiBDYWxs
ZWVCaXRzLmggKi8sCiAJCQkJMTQyOUQ4REIwRUQyMjA1QjAwQjg5NjE5IC8qIENhbGxGcmFtZS5j
cHAgKi8sCiAJCQkJMTQyOUQ4REMwRUQyMjA1QjAwQjg5NjE5IC8qIENhbGxGcmFtZS5oICovLAot
CQkJCUZFQTNCQkE3MjEyQjY1NTgwMEU5M0FEMSAvKiBDYWxsRnJhbWVJbmxpbmVzLmggKi8sCiAJ
CQkJQTdGODY5RUMwRjk1QzJFQzAwNTU4Njk3IC8qIENhbGxGcmFtZUNsb3N1cmUuaCAqLywKKwkJ
CQlGRUEzQkJBNzIxMkI2NTU4MDBFOTNBRDEgLyogQ2FsbEZyYW1lSW5saW5lcy5oICovLAogCQkJ
CTE0MjlEODVCMEVEMjE4RTkwMEI4OTYxOSAvKiBDTG9vcFN0YWNrLmNwcCAqLywKIAkJCQkxNEQ3
OTI2NDBEQUEwM0ZCMDAxQTlGMDUgLyogQ0xvb3BTdGFjay5oICovLAogCQkJCUE3QzFFQUVCMTc5
ODdBQjYwMDI5OURCMiAvKiBDTG9vcFN0YWNrSW5saW5lcy5oICovLApAQCAtNTUxOCw3ICs1NTE5
LDYgQEAKIAkJCQkxNDI5RDdEMzBFRDIxMjgyMDBCODk2MTkgLyogSW50ZXJwcmV0ZXIuY3BwICov
LAogCQkJCTE0MjlENzdCMEVEMjBENzMwMEI4OTYxOSAvKiBJbnRlcnByZXRlci5oICovLAogCQkJ
CUUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRlcnByZXRlcklubGluZXMuaCAqLywKLQkJ
CQk2NUZCNTExNjE4NEVFOUJDMDBDMTJCNzAgLyogUHJvdG9DYWxsRnJhbWUuY3BwICovLAogCQkJ
CTY1RkI1MTE1MTg0RUU4RjgwMEMxMkI3MCAvKiBQcm90b0NhbGxGcmFtZS5oICovLAogCQkJCTE0
OUIyNEZGMEQ4QUY2RDEwMDlDQjhDNyAvKiBSZWdpc3Rlci5oICovLAogCQkJCURDMTdFODEzMUM5
QzdGRDQwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuLmNwcCAqLywKQEAgLTYzNjIsNiArNjM2Miw3
IEBACiAJCQkJNTNGNDBFODQxRDU4Rjk3NzAwOTlBMUI2IC8qIFdhc21TZWN0aW9ucy5oICovLAog
CQkJCUFENzQzOEJFMUUwNDU3OTIwMEZEMEMyQSAvKiBXYXNtU2lnbmF0dXJlLmNwcCAqLywKIAkJ
CQlBRDc0MzhCRjFFMDQ1NzkyMDBGRDBDMkEgLyogV2FzbVNpZ25hdHVyZS5oICovLAorCQkJCTMw
QTVGNDAzRjExQzRGNTk5Q0Q1OTZENSAvKiBXYXNtU2lnbmF0dXJlSW5saW5lcy5oICovLAogCQkJ
CUUzQTA1MzE5MjEzNDJCNjcwMDIyRUMxNCAvKiBXYXNtU3RyZWFtaW5nUGFyc2VyLmNwcCAqLywK
IAkJCQlFM0EwNTMxNjIxMzQyQjY2MDAyMkVDMTQgLyogV2FzbVN0cmVhbWluZ1BhcnNlci5oICov
LAogCQkJCUFENUMzNkUzMUY2OUVDOEIwMDBCQ0FBRiAvKiBXYXNtVGFibGUuY3BwICovLApAQCAt
ODQ0NCw3ICs4NDQ1LDYgQEAKIAkJCQk5OURBMDBBMzFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRp
bnNfZ2VuZXJhdG9yLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJOTlEQTAwQTQxQkQ1OTkzMTAwRjQ1
NzVDIC8qIGJ1aWx0aW5zX21vZGVsLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJOTlEQTAwQTUxQkQ1
OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX3RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovLAotCQkJ
CUZFQTNCQkE4MjEyQjY1NTkwMEU5M0FEMSAvKiBDYWxsRnJhbWVJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MURFQTEzMjFCOUYzMTYzMDA2RDY1REQgLyogQnVpbHRpblV0aWxzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5RTcyOTQwQjE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTcxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZs
eS5oIGluIEhlYWRlcnMgKi8sCkBAIC04NDY5LDYgKzg0NjksNyBAQAogCQkJCTBGNjRCMjdBMUE3
OTU3QjIwMDZFNEU2NiAvKiBDYWxsRWRnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzk2REFBMkIx
RTg5Q0NENjAwNURGMjRBIC8qIENhbGxlZUJpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MjlE
OERFMEVEMjIwNUIwMEI4OTYxOSAvKiBDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZF
QTNCQkE4MjEyQjY1NTkwMEU5M0FEMSAvKiBDYWxsRnJhbWVJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk2MkVDOUJCNzFCN0VCMDdDMDAzMDNBRDEgLyogQ2FsbEZyYW1lU2h1ZmZsZURhdGEu
aCBpbiBIZWFkZXJzICovLAogCQkJCTYyRDc1NUQ3MUI4NEZCNEEwMDE4MDFGQSAvKiBDYWxsRnJh
bWVTaHVmZmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjExNEJDRjcxODAwODg1QjRG
IC8qIENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC04NzU5LDYgKzg3NjAsNyBAQAog
CQkJCUE3MDQ0N0VFMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkUzMThGRTAxQ0FDOTgyRjAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJu
YWxGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBODM2Mzg2MThEN0QwRUUwMDAwRUJD
QyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTA4NkJD
QTIxMjNERUZCMDAzRjI5MjkgLyogRW50cnlGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFE
MkVERkIxOTc5OUUzODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMzMDQ2MDcwRTFGNDk3RjAwMzIzMkNGIC8qIEVycm9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzAyRTkwRDBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCkBAIC05MDk1LDcgKzkwOTcsNiBAQAogCQkJCTk3ODgwMTQxMTQ3MUFEOTIwMDQx
QjAxNiAvKiBKU0RhdGVNYXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkE3RjY4ODE2MDQzMkQ0
MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
N0RGMTNDMUUyOTcxMTMwMDk1OTUxQiAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkUwODZCQ0EyMTIzREVGQjAwM0YyOTI5IC8qIEVudHJ5
RnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzg0RUU2MUFEREI3QUQwMDU1REUyQyAvKiBK
U0RvbGxhclZNLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkUzQzYxNDE2N0JBQkQ3MDA2RDc2MEEg
LyogSlNFeHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QjRBQ0FGMTQ4NEM5Q0UwMEIzOEEz
NiAvKiBKU0V4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCkBAIC05NjIyLDYgKzk2MjMsNyBA
QAogCQkJCUUzQTA1MzFDMjEzNDJCNjgwMDIyRUMxNCAvKiBXYXNtU2VjdGlvblBhcnNlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTNGNDBFODUxRDU4Rjk3NzAwOTlBMUI2IC8qIFdhc21TZWN0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ3NDM4QzAxRTA0NTdBNDAwRkQwQzJBIC8qIFdhc21T
aWduYXR1cmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTRCQUEwN0NFQjgxRjQ5QTI5NkUwMjIwMyAv
KiBXYXNtU2lnbmF0dXJlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTNBMDUzMUEyMTM0
MkI2ODAwMjJFQzE0IC8qIFdhc21TdHJlYW1pbmdQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUFENUMzNkU2MUY2OUVDOTEwMDBCQ0FBRiAvKiBXYXNtVGFibGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUyNTBEMkQyMUU4REEwNUEwMDI5QTkzMiAvKiBXYXNtVGh1bmtzLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBlMmJhZjFhNTc1NWZjN2U0ZjIzZjlk
MTRkOWRlMzQ5MWYzOTBhMThlLi4zODgzMDc2OGVmYmI2M2E0ZmRjM2ZiMzExYWIwNmViZDYzNmY2
NGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC01ODcsNyArNTg3LDYgQEAgaW50
ZXJwcmV0ZXIvQWJzdHJhY3RQQy5jcHAKIGludGVycHJldGVyL0NMb29wU3RhY2suY3BwCiBpbnRl
cnByZXRlci9DYWxsRnJhbWUuY3BwCiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKLWludGVy
cHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcAogaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAK
IGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAKaW5kZXggNTJiYzk4OGIxNzhi
N2I5NTMwMDhlMjYwNTU3MWNiMzMyYzQ3YThmNi4uZTAwOTQ0OTJmMjM2ZDZhYTg4ZWI3ZDMzYzVj
MDA2NzFkYmZlYzlmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1Byb3RvQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwCkBAIC0zMiwyMiArMzIsNCBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotdm9pZCBQcm90b0NhbGxGcmFtZTo6aW5pdChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
SlNPYmplY3QqIGNhbGxlZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIGludCBhcmdDb3VudEluY2x1ZGlu
Z1RoaXMsIEpTVmFsdWUqIG90aGVyQXJncykKLXsKLSAgICB0aGlzLT5hcmdzID0gb3RoZXJBcmdz
OwotICAgIHRoaXMtPnNldENvZGVCbG9jayhjb2RlQmxvY2spOwotICAgIHRoaXMtPnNldENhbGxl
ZShjYWxsZWUpOwotICAgIHRoaXMtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGFyZ0Nv
dW50SW5jbHVkaW5nVGhpcyk7Ci0gICAgaWYgKGNvZGVCbG9jayAmJiBhcmdDb3VudEluY2x1ZGlu
Z1RoaXMgPCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkKLSAgICAgICAgdGhpcy0+aGFzQXJp
dHlNaXNtYXRjaCA9IHRydWU7Ci0gICAgZWxzZQotICAgICAgICB0aGlzLT5oYXNBcml0eU1pc21h
dGNoID0gZmFsc2U7Ci0KLSAgICAvLyBSb3VuZCB1cCBhcmdDb3VudEluY2x1ZGluZ1RoaXMgdG8g
a2VlcCB0aGUgc3RhY2sgZnJhbWUgc2l6ZSBhbGlnbmVkLgotICAgIHNpemVfdCBwYWRkZWRBcmdz
Q291bnQgPSByb3VuZEFyZ3VtZW50Q291bnRUb0FsaWduRnJhbWUoYXJnQ291bnRJbmNsdWRpbmdU
aGlzKTsKLSAgICB0aGlzLT5zZXRQYWRkZWRBcmdDb3VudChwYWRkZWRBcmdzQ291bnQpOwotICAg
IHRoaXMtPmNsZWFyQ3VycmVudFZQQygpOwotICAgIHRoaXMtPnNldFRoaXNWYWx1ZSh0aGlzVmFs
dWUpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmgKaW5kZXggMTY3YjM5NDk5YzRmN2I4ZTNk
MDQwNzViZTg3OGFmMDM1MTdjMWZjYi4uNDg0ZDEwZjE3Njc4NDMzMjRkMGU2MGNkMDNjMzY1NDNl
YjMwMWJkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1By
b3RvQ2FsbEZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1By
b3RvQ2FsbEZyYW1lLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiUmVnaXN0ZXIuaCIKKyNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3JiaWRIZWFwQWxsb2NhdGlvbi5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTczLDQgKzc0
LDIyIEBAIHN0cnVjdCBKU19FWFBPUlRfUFJJVkFURSBQcm90b0NhbGxGcmFtZSB7CiAgICAgfQog
fTsKIAoraW5saW5lIHZvaWQgUHJvdG9DYWxsRnJhbWU6OmluaXQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEpTT2JqZWN0KiBjYWxsZWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBpbnQgYXJnQ291bnRJbmNs
dWRpbmdUaGlzLCBKU1ZhbHVlKiBvdGhlckFyZ3MpCit7CisgICAgdGhpcy0+YXJncyA9IG90aGVy
QXJnczsKKyAgICB0aGlzLT5zZXRDb2RlQmxvY2soY29kZUJsb2NrKTsKKyAgICB0aGlzLT5zZXRD
YWxsZWUoY2FsbGVlKTsKKyAgICB0aGlzLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhh
cmdDb3VudEluY2x1ZGluZ1RoaXMpOworICAgIGlmIChjb2RlQmxvY2sgJiYgYXJnQ291bnRJbmNs
dWRpbmdUaGlzIDwgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpCisgICAgICAgIHRoaXMtPmhh
c0FyaXR5TWlzbWF0Y2ggPSB0cnVlOworICAgIGVsc2UKKyAgICAgICAgdGhpcy0+aGFzQXJpdHlN
aXNtYXRjaCA9IGZhbHNlOworCisgICAgLy8gUm91bmQgdXAgYXJnQ291bnRJbmNsdWRpbmdUaGlz
IHRvIGtlZXAgdGhlIHN0YWNrIGZyYW1lIHNpemUgYWxpZ25lZC4KKyAgICBzaXplX3QgcGFkZGVk
QXJnc0NvdW50ID0gcm91bmRBcmd1bWVudENvdW50VG9BbGlnbkZyYW1lKGFyZ0NvdW50SW5jbHVk
aW5nVGhpcyk7CisgICAgdGhpcy0+c2V0UGFkZGVkQXJnQ291bnQocGFkZGVkQXJnc0NvdW50KTsK
KyAgICB0aGlzLT5jbGVhckN1cnJlbnRWUEMoKTsKKyAgICB0aGlzLT5zZXRUaGlzVmFsdWUodGhp
c1ZhbHVlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggM2U3Y2U2MGFkNzRiMDAyMDQ3
NGE4Njk5M2RhNzZlNzE4MGRjNmYyNC4uZTBiYzE1OTkzMjBjMGUyNzZkYTY1ODAzZmFkMmU0ZDMy
OThiYzA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKICNp
bmNsdWRlICJXYXNtT01HUGxhbi5oIgogI2luY2x1ZGUgIldhc21PcGNvZGVPcmlnaW4uaCIKKyNp
bmNsdWRlICJXYXNtU2lnbmF0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIldhc21UaHVua3MuaCIK
ICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC0xMjI5LDEz
ICsxMjMwLDEzIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KGNvbnN0IFNp
Z25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvCiAKICAgICAgICAgLy8gQ2hlY2sg
dGhhdCB0aGUgV2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbiBpcyBpbml0aWFsaXplZC4gV2Ug
dHJhcCBpZiBpdCBpc24ndC4gQW4gImludmFsaWQiIFNpZ25hdHVyZUluZGV4IGluZGljYXRlcyBp
dCdzIG5vdCBpbml0aWFsaXplZC4KICAgICAgICAgLy8gRklYTUU6IHdoZW4gd2UgaGF2ZSB0cmFw
IGhhbmRsZXJzLCB3ZSBjYW4ganVzdCBsZXQgdGhlIGNhbGwgZmFpbCBiZWNhdXNlIFNpZ25hdHVy
ZTo6aW52YWxpZEluZGV4IGlzIDAuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzcyMTAKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoV2FzbVRvV2FzbUltcG9y
dGFibGVGdW5jdGlvbjo6c2lnbmF0dXJlSW5kZXgpID09IHNpemVvZih1aW50MzJfdCksICJMb2Fk
IGNvZGVnZW4gYXNzdW1lcyBpMzIiKTsKLSAgICAgICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlU2ln
bmF0dXJlSW5kZXggPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3By
b2MsIExvYWQsIEludDMyLCBvcmlnaW4oKSwgY2FsbGFibGVGdW5jdGlvbiwgc2FmZUNhc3Q8aW50
MzJfdD4oT0JKRUNUX09GRlNFVE9GKFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb24sIHNpZ25h
dHVyZUluZGV4KSkpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihXYXNtVG9XYXNtSW1w
b3J0YWJsZUZ1bmN0aW9uOjpzaWduYXR1cmVJbmRleCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgIkxv
YWQgY29kZWdlbiBhc3N1bWVzIGk2NCIpOworICAgICAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVT
aWduYXR1cmVJbmRleCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1f
cHJvYywgTG9hZCwgSW50NjQsIG9yaWdpbigpLCBjYWxsYWJsZUZ1bmN0aW9uLCBzYWZlQ2FzdDxp
bnQzMl90PihXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjpvZmZzZXRPZlNpZ25hdHVyZUlu
ZGV4KCkpKTsKICAgICAgICAgewogICAgICAgICAgICAgQ2hlY2tWYWx1ZSogY2hlY2sgPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ssIG9yaWdpbigp
LAogICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJv
YywgRXF1YWwsIG9yaWdpbigpLAogICAgICAgICAgICAgICAgICAgICBjYWxsZWVTaWduYXR1cmVJ
bmRleCwKLSAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIFNpZ25hdHVyZTo6aW52YWxpZEluZGV4KSkpOwor
ICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0NjRWYWx1
ZT4obV9wcm9jLCBvcmlnaW4oKSwgU2lnbmF0dXJlOjppbnZhbGlkSW5kZXgpKSk7CiAKICAgICAg
ICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
QjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgICAgICB0aGlzLT5l
bWl0RXhjZXB0aW9uQ2hlY2soaml0LCBFeGNlcHRpb25UeXBlOjpOdWxsVGFibGVFbnRyeSk7CkBA
IC0xMjQ0LDcgKzEyNDUsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdChj
b25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3NpbwogCiAgICAgICAgIC8v
IENoZWNrIHRoZSBzaWduYXR1cmUgbWF0Y2hlcyB0aGUgdmFsdWUgd2UgZXhwZWN0LgogICAgICAg
ICB7Ci0gICAgICAgICAgICBFeHByZXNzaW9uVHlwZSBleHBlY3RlZFNpZ25hdHVyZUluZGV4ID0g
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCks
IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJlKSk7CisgICAgICAgICAgICBFeHBy
ZXNzaW9uVHlwZSBleHBlY3RlZFNpZ25hdHVyZUluZGV4ID0gbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxDb25zdDY0VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIFNpZ25hdHVyZUluZm9ybWF0aW9u
OjpnZXQoc2lnbmF0dXJlKSk7CiAgICAgICAgICAgICBDaGVja1ZhbHVlKiBjaGVjayA9IG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2luKCks
CiAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9j
LCBOb3RFcXVhbCwgb3JpZ2luKCksIGNhbGxlZVNpZ25hdHVyZUluZGV4LCBleHBlY3RlZFNpZ25h
dHVyZUluZGV4KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CQlFQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNw
cAppbmRleCA0M2M4ZjU2MmFmYTFjMzYzM2E3ZTZjNjFmNDA5MjJlYzBiZTk3MjEzLi4yMmE2NWMz
MTEwY2ZjOGNkYjk0Y2QxMDVmYjZkN2MzZTUzZTc3MGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiV2Fz
bUZhdWx0U2lnbmFsSGFuZGxlci5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKICNpbmNsdWRl
ICJXYXNtTW9kdWxlUGFyc2VyLmgiCisjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIK
ICNpbmNsdWRlICJXYXNtVGllclVwQ291bnQuaCIKICNpbmNsdWRlICJXYXNtVmFsaWRhdGUuaCIK
ICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZv
cm1hdC5oCmluZGV4IGU0M2Y0ZWQ5MzYxNjdmZjI5MzhkODM3YTBjZTA4OGQ0M2QyMGE0ZTYuLjQ2
MzIzOTRkYjJjZTNjMjU4ZmVkZDc2ZWEwMTNlYmE1ZDE3NWI3MzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKQEAgLTI3Niw2ICsyNzYsNyBAQCBzdHJ1Y3QgSW50ZXJu
YWxGdW5jdGlvbiB7CiAvLyBtZWFudCBhcyBmYXN0IGxvb2t1cCB0YWJsZXMgZm9yIHRoZXNlIG9w
Y29kZXMgYW5kIGRvIG5vdCBvd24gY29kZS4KIHN0cnVjdCBXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1
bmN0aW9uIHsKICAgICB1c2luZyBMb2FkTG9jYXRpb24gPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
V2FzbUVudHJ5UHRyVGFnPio7CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNpZ25hdHVy
ZUluZGV4KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFdhc21Ub1dhc21JbXBvcnRhYmxlRnVu
Y3Rpb24sIHNpZ25hdHVyZUluZGV4KTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZF
bnRyeXBvaW50TG9hZExvY2F0aW9uKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFdhc21Ub1dh
c21JbXBvcnRhYmxlRnVuY3Rpb24sIGVudHJ5cG9pbnRMb2FkTG9jYXRpb24pOyB9CiAKICAgICAv
LyBGSVhNRTogUGFjayBzaWduYXR1cmUgaW5kZXggYW5kIGNvZGUgcG9pbnRlciBpbnRvIG9uZSA2
NC1iaXQgdmFsdWUuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NTUxMT4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVu
Y3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBh
cnNlci5oCmluZGV4IDg3MzVjZThlNmFjY2IzOGU4NGM4NGI3YjhlMTFkNTMzNzlhYjhkYmUuLjA4
OGU3MjhjZTRjYzU0Y2UzYzYwNmI0MGYyNTVhNjA5ZDU3YjNiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCiAjaW5jbHVkZSAiV2FzbVBhcnNlci5oIgorI2lu
Y2x1ZGUgIldhc21TaWduYXR1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4K
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21Nb2R1bGUuaAppbmRleCBmYTM2YTY5YjgwMzkxNWQ2MWMzOTZmYzFiM2Y5YmM3NjQy
MDBlNjMyLi42NTJkZGQzN2RiOGU1Nzg4ZDA1ODc1ZDJjMmRmYzdmYWRjOWU3MzY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5oCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVj
dCBDb250ZXh0Owogc3RydWN0IE1vZHVsZUluZm9ybWF0aW9uOwogY2xhc3MgUGxhbjsKIAotdXNp
bmcgU2lnbmF0dXJlSW5kZXggPSB1aW50MzJfdDsKK3VzaW5nIFNpZ25hdHVyZUluZGV4ID0gdWlu
dDY0X3Q7CiAKIGNsYXNzIE1vZHVsZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNb2R1
bGU+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21PTUdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNw
cAppbmRleCA5ZTBjNGE1NjY2ZTQ0ZTBlYWNjMjMxMmFiYmI3NjU0NTNiODc5ZjQ4Li5lMzFiNDcx
Yjc5MjUyZGNlY2U2N2Y2ZmFmZGYwNmI3MTQ4MzMyN2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiV2Fz
bU1hY2hpbmVUaHJlYWRzLmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgogI2luY2x1ZGUgIldh
c21OYW1lU2VjdGlvbi5oIgorI2luY2x1ZGUgIldhc21TaWduYXR1cmVJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiV2FzbVZhbGlkYXRlLmgiCiAjaW5jbHVkZSAiV2FzbVdvcmtsaXN0LmgiCiAjaW5jbHVk
ZSA8d3RmL0RhdGFMb2cuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TZWN0aW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21T
ZWN0aW9uUGFyc2VyLmNwcAppbmRleCA5YTliYWNiNjdkZWQyNTA0NTM1ZDhjMmRlNWM1ZWQ4MzNk
ZWYxNjAyLi5hZTg3MjVkMDc5Y2MzYzljODgyMDA0NzBkYzBiZmY3YmU3NjQ0ZmNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiV2FzbU5hbWVTZWN0aW9uUGFyc2VyLmgiCiAjaW5jbHVk
ZSAiV2FzbU9wcy5oIgogI2luY2x1ZGUgIldhc21TZWN0aW9ucy5oIgorI2luY2x1ZGUgIldhc21T
aWduYXR1cmVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAK
QEAgLTc1LDggKzc2LDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZVR5cGUoKSAtPiBQYXJ0
aWFsUmVzdWx0CiAgICAgICAgICAgICByZXR1cm5UeXBlID0gVHlwZTo6Vm9pZDsKICAgICAgICAg
c2lnbmF0dXJlLT5yZXR1cm5UeXBlKCkgPSByZXR1cm5UeXBlOwogCi0gICAgICAgIHN0ZDo6cGFp
cjxTaWduYXR1cmVJbmRleCwgUmVmPFNpZ25hdHVyZT4+IHJlc3VsdCA9IFNpZ25hdHVyZUluZm9y
bWF0aW9uOjphZG9wdChXVEZNb3ZlKHNpZ25hdHVyZSkpOwotICAgICAgICBtX2luZm8tPnVzZWRT
aWduYXR1cmVzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKHJlc3VsdC5zZWNvbmQpKTsKKyAgICAg
ICAgbV9pbmZvLT51c2VkU2lnbmF0dXJlcy51bmNoZWNrZWRBcHBlbmQoU2lnbmF0dXJlSW5mb3Jt
YXRpb246OmFkb3B0KFdURk1vdmUoc2lnbmF0dXJlKSkpOwogICAgIH0KICAgICByZXR1cm4geyB9
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVy
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAppbmRl
eCA2YTQyZDUxNzE5NWVhNGZiNjFkOTJiMTBjOGNjMzc3MzY3YzJlYjlkLi4yOWNlMjEzNzUyMTNj
MzE0NTVhYTMzYTI5NWU4Zjg2ZTRkOWI0ZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtU2lnbmF0dXJlLmNwcApAQCAtNDEsNiArNDEsOSBAQCBzdGF0aWMgY29uc3QgYm9v
bCB2ZXJib3NlID0gZmFsc2U7CiB9CiB9CiAKK1NpZ25hdHVyZUluZm9ybWF0aW9uKiBTaWduYXR1
cmVJbmZvcm1hdGlvbjo6dGhlT25lIHsgbnVsbHB0ciB9Oworc3RkOjpvbmNlX2ZsYWcgU2lnbmF0
dXJlSW5mb3JtYXRpb246OnNpZ25hdHVyZUluZm9ybWF0aW9uRmxhZzsKKwogU3RyaW5nIFNpZ25h
dHVyZTo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIFN0cmluZyByZXN1bHQobWFrZVN0cmluZyhy
ZXR1cm5UeXBlKCkpKTsKQEAgLTgzLDYwICs4NiwyMiBAQCBTaWduYXR1cmVJbmZvcm1hdGlvbjo6
U2lnbmF0dXJlSW5mb3JtYXRpb24oKQogewogfQogCi1TaWduYXR1cmVJbmZvcm1hdGlvbiYgU2ln
bmF0dXJlSW5mb3JtYXRpb246OnNpbmdsZXRvbigpCi17Ci0gICAgc3RhdGljIFNpZ25hdHVyZUlu
Zm9ybWF0aW9uKiB0aGVPbmU7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIHNpZ25hdHVyZUlu
Zm9ybWF0aW9uRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShzaWduYXR1cmVJbmZvcm1hdGlvbkZs
YWcsIFtdICgpIHsKLSAgICAgICAgdGhlT25lID0gbmV3IFNpZ25hdHVyZUluZm9ybWF0aW9uOwot
ICAgIH0pOwotCi0gICAgcmV0dXJuICp0aGVPbmU7Ci19Ci0KLXN0ZDo6cGFpcjxTaWduYXR1cmVJ
bmRleCwgUmVmPFNpZ25hdHVyZT4+IFNpZ25hdHVyZUluZm9ybWF0aW9uOjphZG9wdChSZWY8U2ln
bmF0dXJlPiYmIHNpZ25hdHVyZSkKK1JlZjxTaWduYXR1cmU+IFNpZ25hdHVyZUluZm9ybWF0aW9u
OjphZG9wdChSZWY8U2lnbmF0dXJlPiYmIHNpZ25hdHVyZSkKIHsKICAgICBTaWduYXR1cmVJbmZv
cm1hdGlvbiYgaW5mbyA9IHNpbmdsZXRvbigpOwogICAgIExvY2tIb2xkZXIgbG9jayhpbmZvLm1f
bG9jayk7CiAKLSAgICBTaWduYXR1cmVJbmRleCBuZXh0VmFsdWUgPSBpbmZvLm1fbmV4dEluZGV4
OwotICAgIGF1dG8gYWRkUmVzdWx0ID0gaW5mby5tX3NpZ25hdHVyZU1hcC5hZGQoU2lnbmF0dXJl
SGFzaCB7IHNpZ25hdHVyZS5wdHIoKSB9LCBuZXh0VmFsdWUpOworICAgIFNpZ25hdHVyZUluZGV4
IG5leHRWYWx1ZSA9IHNpZ25hdHVyZS0+aW5kZXgoKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IGlu
Zm8ubV9zaWduYXR1cmVTZXQuYWRkKFNpZ25hdHVyZUhhc2ggeyBzaWduYXR1cmUuY29weVJlZigp
IH0pOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICArK2luZm8ubV9u
ZXh0SW5kZXg7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZm8ubV9uZXh0SW5kZXggPiBuZXh0
VmFsdWUpOyAvLyBjcmFzaCBvbiBvdmVyZmxvdy4KLSAgICAgICAgQVNTRVJUKG5leHRWYWx1ZSA9
PSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKICAgICAgICAgaWYgKFdhc21TaWduYXR1cmVJ
bnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2dMbigiQWRvcHQgbmV3IHNpZ25h
dHVyZSAiLCBzaWduYXR1cmUuZ2V0KCksICIgd2l0aCBpbmRleCAiLCBhZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlLCAiIGhhc2g6ICIsIHNpZ25hdHVyZS0+aGFzaCgpKTsKLQotICAgICAgICBhdXRv
IGFkZFJlc3VsdCA9IGluZm8ubV9pbmRleE1hcC5hZGQobmV4dFZhbHVlLCBzaWduYXR1cmUuY29w
eVJlZigpKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOwot
ICAgICAgICBBU1NFUlQoaW5mby5tX2luZGV4TWFwLnNpemUoKSA9PSBpbmZvLm1fc2lnbmF0dXJl
TWFwLnNpemUoKSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihuZXh0VmFsdWUsIFdU
Rk1vdmUoc2lnbmF0dXJlKSk7CisgICAgICAgICAgICBkYXRhTG9nTG4oIkFkb3B0IG5ldyBzaWdu
YXR1cmUgIiwgc2lnbmF0dXJlLmdldCgpLCAiIHdpdGggaW5kZXggIiwgbmV4dFZhbHVlLCAiIGhh
c2g6ICIsIHNpZ25hdHVyZS0+aGFzaCgpKTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoc2lnbmF0
dXJlKTsKICAgICB9CisgICAgbmV4dFZhbHVlID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT5rZXktPmlu
ZGV4KCk7CiAgICAgaWYgKFdhc21TaWduYXR1cmVJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAg
ZGF0YUxvZ0xuKCJFeGlzdGluZyBzaWduYXR1cmUgIiwgc2lnbmF0dXJlLmdldCgpLCAiIHdpdGgg
aW5kZXggIiwgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSwgIiBoYXNoOiAiLCBzaWduYXR1cmUt
Pmhhc2goKSk7Ci0gICAgQVNTRVJUKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgIT0gU2lnbmF0
dXJlOjppbnZhbGlkSW5kZXgpOwotICAgIEFTU0VSVChpbmZvLm1faW5kZXhNYXAuY29udGFpbnMo
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSkpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLCBSZWY8U2lnbmF0dXJlPigqaW5mby5tX2luZGV4TWFw
LmdldChhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKSkpOwotfQotCi1jb25zdCBTaWduYXR1cmUm
IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoU2lnbmF0dXJlSW5kZXggaW5kZXgpCi17Ci0gICAg
QVNTRVJUKGluZGV4ICE9IFNpZ25hdHVyZTo6aW52YWxpZEluZGV4KTsKLSAgICBTaWduYXR1cmVJ
bmZvcm1hdGlvbiYgaW5mbyA9IHNpbmdsZXRvbigpOwotICAgIExvY2tIb2xkZXIgbG9jayhpbmZv
Lm1fbG9jayk7Ci0KLSAgICByZXR1cm4gKmluZm8ubV9pbmRleE1hcC5nZXQoaW5kZXgpOwotfQot
Ci1TaWduYXR1cmVJbmRleCBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KGNvbnN0IFNpZ25hdHVy
ZSYgc2lnbmF0dXJlKQotewotICAgIFNpZ25hdHVyZUluZm9ybWF0aW9uJiBpbmZvID0gc2luZ2xl
dG9uKCk7Ci0gICAgTG9ja0hvbGRlciBsb2NrKGluZm8ubV9sb2NrKTsKLQotICAgIGF1dG8gcmVz
dWx0ID0gaW5mby5tX3NpZ25hdHVyZU1hcC5nZXQoU2lnbmF0dXJlSGFzaCB7ICZzaWduYXR1cmUg
fSk7Ci0gICAgQVNTRVJUKHJlc3VsdCAhPSBTaWduYXR1cmU6OmludmFsaWRJbmRleCk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgZGF0YUxvZ0xuKCJFeGlzdGluZyBzaWduYXR1cmUgIiwg
c2lnbmF0dXJlLmdldCgpLCAiIHdpdGggaW5kZXggIiwgbmV4dFZhbHVlLCAiIGhhc2g6ICIsIHNp
Z25hdHVyZS0+aGFzaCgpKTsKKyAgICByZXR1cm4gUmVmPFNpZ25hdHVyZT4oKmFkZFJlc3VsdC5p
dGVyYXRvci0+a2V5KTsKIH0KIAogdm9pZCBTaWduYXR1cmVJbmZvcm1hdGlvbjo6dHJ5Q2xlYW51
cCgpCkBAIC0xNDQsMjQgKzEwOSwxMCBAQCB2b2lkIFNpZ25hdHVyZUluZm9ybWF0aW9uOjp0cnlD
bGVhbnVwKCkKICAgICBTaWduYXR1cmVJbmZvcm1hdGlvbiYgaW5mbyA9IHNpbmdsZXRvbigpOwog
ICAgIExvY2tIb2xkZXIgbG9jayhpbmZvLm1fbG9jayk7CiAKLSAgICBWZWN0b3I8c3RkOjpwYWly
PFNpZ25hdHVyZUluZGV4LCBTaWduYXR1cmUqPj4gdG9SZW1vdmU7Ci0gICAgZm9yIChjb25zdCBh
dXRvJiBwYWlyIDogaW5mby5tX2luZGV4TWFwKSB7Ci0gICAgICAgIGNvbnN0IFJlZjxTaWduYXR1
cmU+JiBzaWduYXR1cmUgPSBwYWlyLnZhbHVlOwotICAgICAgICBpZiAoc2lnbmF0dXJlLT5yZWZD
b3VudCgpID09IDEpIHsKLSAgICAgICAgICAgIC8vIFdlJ3JlIHRoZSBvbmx5IG93bmVyLgotICAg
ICAgICAgICAgdG9SZW1vdmUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHBhaXIua2V5LCBzaWduYXR1
cmUucHRyKCkpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIg
OiB0b1JlbW92ZSkgewotICAgICAgICBib29sIHJlbW92ZWQgPSBpbmZvLm1fc2lnbmF0dXJlTWFw
LnJlbW92ZShTaWduYXR1cmVIYXNoIHsgcGFpci5zZWNvbmQgfSk7Ci0gICAgICAgIEFTU0VSVF9V
TlVTRUQocmVtb3ZlZCwgcmVtb3ZlZCk7Ci0gICAgICAgIHJlbW92ZWQgPSBpbmZvLm1faW5kZXhN
YXAucmVtb3ZlKHBhaXIuZmlyc3QpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWQsIHJl
bW92ZWQpOwotICAgIH0KLSAgICBpZiAoaW5mby5tX3NpZ25hdHVyZU1hcC5pc0VtcHR5KCkpIHsK
LSAgICAgICAgQVNTRVJUKGluZm8ubV9pbmRleE1hcC5pc0VtcHR5KCkpOwotICAgICAgICBpbmZv
Lm1fbmV4dEluZGV4ID0gU2lnbmF0dXJlOjpmaXJzdFZhbGlkSW5kZXg7Ci0gICAgfQorICAgIGlu
Zm8ubV9zaWduYXR1cmVTZXQucmVtb3ZlSWYoWyZdIChhdXRvJiBoYXNoKSB7CisgICAgICAgIGNv
bnN0IGF1dG8mIHNpZ25hdHVyZSA9IGhhc2gua2V5OworICAgICAgICByZXR1cm4gc2lnbmF0dXJl
LT5yZWZDb3VudCgpID09IDE7CisgICAgfSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpX
YXNtCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmgKaW5kZXggOWY0
OWNjYjE0NTY4ZDIwMWYxZjhhZGNlZWZiMGMxMzMxZWI3N2YwYi4uNmRiMjhjM2YxOTQyMmU0YzY4
YTMyODBjMTY1YzcxMzhjNjcyMzVmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVNpZ25hdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21TaWduYXR1cmUuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPGNzdHJpbmc+CiAjaW5j
bHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oPgpAQCAtNDcsNyArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBX
YXNtIHsKIAogdXNpbmcgU2lnbmF0dXJlQXJnQ291bnQgPSB1aW50MzJfdDsKLXVzaW5nIFNpZ25h
dHVyZUluZGV4ID0gdWludDMyX3Q7Cit1c2luZyBTaWduYXR1cmVJbmRleCA9IHVpbnQ2NF90Owog
CiBjbGFzcyBTaWduYXR1cmUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2lnbmF0dXJl
PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC04MSw2ICs4Miw3IEBAIGNsYXNz
IFNpZ25hdHVyZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaWduYXR1cmU+IHsKICAg
ICAgICAgcmV0dXJuICpzdG9yYWdlKHJldHVybkNvdW50KCkgKyBpKTsKICAgICB9CiAgICAgVHlw
ZSBhcmd1bWVudChTaWduYXR1cmVBcmdDb3VudCBpKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0
PFNpZ25hdHVyZSo+KHRoaXMpLT5hcmd1bWVudChpKTsgfQorICAgIFNpZ25hdHVyZUluZGV4IGlu
ZGV4KCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PFNpZ25hdHVyZUluZGV4Pih0aGlzKTsg
fQogCiAgICAgV1RGOjpTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKICAgICB2b2lkIGR1bXAoV1RG
OjpQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKQEAgLTExMSwyOCArMTEzLDIxIEBAIGNsYXNzIFNp
Z25hdHVyZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaWduYXR1cmU+IHsKIH07CiAK
IHN0cnVjdCBTaWduYXR1cmVIYXNoIHsKLSAgICBjb25zdCBTaWduYXR1cmUqIGtleTsKLSAgICBz
dGF0aWMgY29uc3QgU2lnbmF0dXJlKiBlbXB0eSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBz
dGF0aWMgY29uc3QgU2lnbmF0dXJlKiBkZWxldGVkKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBTaWduYXR1cmUqPigxKTsgfQotICAgIFNpZ25hdHVyZUhhc2goKQotICAgICAgICA6
IGtleShlbXB0eSgpKQorICAgIFJlZlB0cjxTaWduYXR1cmU+IGtleSB7IG51bGxwdHIgfTsKKyAg
ICBTaWduYXR1cmVIYXNoKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0IFNpZ25hdHVyZUhhc2go
UmVmPFNpZ25hdHVyZT4mJiBrZXkpCisgICAgICAgIDoga2V5KFdURk1vdmUoa2V5KSkKICAgICB7
CiAgICAgfQotICAgIGV4cGxpY2l0IFNpZ25hdHVyZUhhc2goY29uc3QgU2lnbmF0dXJlKiBrZXkp
Ci0gICAgICAgIDoga2V5KGtleSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChrZXkgIT0gZW1wdHko
KSk7Ci0gICAgICAgIEFTU0VSVChrZXkgIT0gZGVsZXRlZCgpKTsKLSAgICB9CiAgICAgZXhwbGlj
aXQgU2lnbmF0dXJlSGFzaChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCi0gICAgICAg
IDoga2V5KGRlbGV0ZWQoKSkKKyAgICAgICAgOiBrZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWUpCiAgICAgewogICAgIH0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2lnbmF0dXJlSGFz
aCYgcmhzKSBjb25zdCB7IHJldHVybiBlcXVhbCgqdGhpcywgcmhzKTsgfQogICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IFNpZ25hdHVyZUhhc2gmIGxocywgY29uc3QgU2lnbmF0dXJlSGFzaCYg
cmhzKSB7IHJldHVybiBsaHMua2V5ID09IHJocy5rZXkgfHwgKGxocy5rZXkgJiYgcmhzLmtleSAm
JiAqbGhzLmtleSA9PSAqcmhzLmtleSk7IH0KLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25z
dCBTaWduYXR1cmVIYXNoJiBzaWduYXR1cmUpIHsgcmV0dXJuIHNpZ25hdHVyZS5rZXktPmhhc2go
KTsgfQorICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNpZ25hdHVyZUhhc2gmIHNpZ25h
dHVyZSkgeyByZXR1cm4gc2lnbmF0dXJlLmtleSA/IHNpZ25hdHVyZS5rZXktPmhhc2goKSA6IDA7
IH0KICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9
IGZhbHNlOwotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVy
biBrZXkgPT0gZGVsZXRlZCgpOyB9CisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIGtleS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiB9OwogCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQpAQCAtMTY1LDE2ICsxNjAsMTcgQEAgY2xhc3MgU2ln
bmF0dXJlSW5mb3JtYXRpb24gewogcHVibGljOgogICAgIHN0YXRpYyBTaWduYXR1cmVJbmZvcm1h
dGlvbiYgc2luZ2xldG9uKCk7CiAKLSAgICBzdGF0aWMgc3RkOjpwYWlyPFNpZ25hdHVyZUluZGV4
LCBSZWY8U2lnbmF0dXJlPj4gV0FSTl9VTlVTRURfUkVUVVJOIGFkb3B0KFJlZjxTaWduYXR1cmU+
JiYpOworICAgIHN0YXRpYyBSZWY8U2lnbmF0dXJlPiBXQVJOX1VOVVNFRF9SRVRVUk4gYWRvcHQo
UmVmPFNpZ25hdHVyZT4mJik7CiAgICAgc3RhdGljIGNvbnN0IFNpZ25hdHVyZSYgV0FSTl9VTlVT
RURfUkVUVVJOIGdldChTaWduYXR1cmVJbmRleCk7CiAgICAgc3RhdGljIFNpZ25hdHVyZUluZGV4
IFdBUk5fVU5VU0VEX1JFVFVSTiBnZXQoY29uc3QgU2lnbmF0dXJlJik7CiAgICAgc3RhdGljIHZv
aWQgdHJ5Q2xlYW51cCgpOwogCiBwcml2YXRlOgotICAgIEhhc2hNYXA8V2FzbTo6U2lnbmF0dXJl
SGFzaCwgV2FzbTo6U2lnbmF0dXJlSW5kZXg+IG1fc2lnbmF0dXJlTWFwOwotICAgIEhhc2hNYXA8
V2FzbTo6U2lnbmF0dXJlSW5kZXgsIFJlZjxTaWduYXR1cmU+PiBtX2luZGV4TWFwOwotICAgIFNp
Z25hdHVyZUluZGV4IG1fbmV4dEluZGV4IHsgU2lnbmF0dXJlOjpmaXJzdFZhbGlkSW5kZXggfTsK
KyAgICBIYXNoU2V0PFdhc206OlNpZ25hdHVyZUhhc2g+IG1fc2lnbmF0dXJlU2V0OwogICAgIExv
Y2sgbV9sb2NrOworCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFNpZ25hdHVyZUluZm9y
bWF0aW9uKiB0aGVPbmU7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIHNpZ25hdHVyZUluZm9ybWF0aW9uRmxhZzsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpXYXNtCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0
dXJlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZUlu
bGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41MWE1MDE0MDU2YjBkOWQyNWQyMmZjNjRlNDYyZmE2YzUxYzQ4
NzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNp
Z25hdHVyZUlubGluZXMuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE4IFl1c3VrZSBTdXp1a2kgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPi4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJXYXNtU2lnbmF0dXJlLmgiCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKK25h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CisKK2lubGluZSBTaWduYXR1cmVJbmZvcm1h
dGlvbiYgU2lnbmF0dXJlSW5mb3JtYXRpb246OnNpbmdsZXRvbigpCit7CisgICAgc3RkOjpjYWxs
X29uY2Uoc2lnbmF0dXJlSW5mb3JtYXRpb25GbGFnLCBbXSAoKSB7CisgICAgICAgIHRoZU9uZSA9
IG5ldyBTaWduYXR1cmVJbmZvcm1hdGlvbjsKKyAgICB9KTsKKyAgICByZXR1cm4gKnRoZU9uZTsK
K30KKworaW5saW5lIGNvbnN0IFNpZ25hdHVyZSYgU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChT
aWduYXR1cmVJbmRleCBpbmRleCkKK3sKKyAgICBBU1NFUlQoaW5kZXggIT0gU2lnbmF0dXJlOjpp
bnZhbGlkSW5kZXgpOworICAgIHJldHVybiAqYml0d2lzZV9jYXN0PGNvbnN0IFNpZ25hdHVyZSo+
KGluZGV4KTsKK30KKworaW5saW5lIFNpZ25hdHVyZUluZGV4IFNpZ25hdHVyZUluZm9ybWF0aW9u
OjpnZXQoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpCit7CisgICAgaWYgKCFBU1NFUlRfRElT
QUJMRUQpIHsKKyAgICAgICAgU2lnbmF0dXJlSW5mb3JtYXRpb24mIGluZm8gPSBzaW5nbGV0b24o
KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhpbmZvLm1fbG9jayk7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQoaW5mbywgaW5mby5tX3NpZ25hdHVyZVNldC5jb250YWlucyhTaWduYXR1
cmVIYXNoIHsgJnNpZ25hdHVyZSB9KSk7CisgICAgfQorICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
U2lnbmF0dXJlSW5kZXg+KCZzaWduYXR1cmUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
V2FzbQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNUb1dhc20uY3BwCmluZGV4IGZjYjliMGM2MThhZTY5ZTE1MTFhN2ZhNGNm
M2JmMDY1MmQ2YjMxMmQuLjM2NGY3Yzc0YmMxOWZjNTViZjJhZDY5YmFkNDkwZWNlZWVlOTE5ZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UuaCIKICNpbmNsdWRlICJXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCIKKyNpbmNs
dWRlICJXYXNtU2lnbmF0dXJlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IFdhc20gewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5TW9kdWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFz
c2VtYmx5TW9kdWxlLmgKaW5kZXggZDM5MzAwNjkxOWQyN2FkMTc0NjlmZTI2OTVkYjg0Mzg0MjNk
MDgyZS4uNzJhMzA2M2E0YjM3YzU3MGNmOTQwZDc2YjU5ZDFjMGNjYmMwNWU0OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaApA
QCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2FzbSB7CiBjbGFzcyBNb2R1bGU7CiBzdHJ1Y3Qg
TW9kdWxlSW5mb3JtYXRpb247CiBjbGFzcyBQbGFuOwotdXNpbmcgU2lnbmF0dXJlSW5kZXggPSB1
aW50MzJfdDsKK3VzaW5nIFNpZ25hdHVyZUluZGV4ID0gdWludDY0X3Q7CiB9CiAKIGNsYXNzIFN5
bWJvbFRhYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Fz
bVRvSlMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCmlu
ZGV4IDEyNzBjNzliMWM0MzEwY2M1ZmM2MzAyOWFlODNiZmIxOGM1ZTAzYzYuLmVlMDBmYzg4ZTBj
YWYyNTQ0ZDlkNzllY2M5M2Y0ZTEyMzI1MzhiMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XYXNtVG9KUy5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJXYXNtQ29u
dGV4dC5oIgogI2luY2x1ZGUgIldhc21FeGNlcHRpb25UeXBlLmgiCiAjaW5jbHVkZSAiV2FzbUlu
c3RhbmNlLmgiCisjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIKIAogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIApAQCAtMzAxLDcgKzMwMiw4IEBAIEV4cGVjdGVkPE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2Fz
bVRvSlMoVk0qIHZtCiAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KDApLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwogCiAgICAgICAgIHN0YXRpY19hc3NlcnQoR1BS
SW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyA+PSA0LCAiV2UgcmVseSBvbiB0aGlzIHdp
dGggdGhlIGNhbGwgYmVsb3cuIik7Ci0gICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlw
ZShjYWxsRnVuYyk+KEdQUkluZm86OmFyZ3VtZW50R1BSMSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoc2lnbmF0dXJlSW5kZXgpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYnVmZmVy
KSk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFNpZ25hdHVyZUluZGV4KSA9PSBzaXpl
b2YodWludDY0X3QpLCAiRm9sbG93aW5nIGNvZGUgYXNzdW1lcyBTaWduYXR1cmVJbmRleCBpcyA2
NGJpdC4iKTsKKyAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKGNhbGxGdW5jKT4o
R1BSSW5mbzo6YXJndW1lbnRHUFIxLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChzaWduYXR1
cmVJbmRleCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihidWZmZXIpKTsKICAgICAgICAg
YXV0byBjYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKICAgICAgICAgYXV0byBub0V4
Y2VwdGlvbiA9IGppdC5lbWl0RXhjZXB0aW9uQ2hlY2soKnZtLCBBc3NlbWJseUhlbHBlcnM6Oklu
dmVydGVkRXhjZXB0aW9uQ2hlY2spOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCmluZGV4IDAyYjRjMjRjNDJiY2NmMTJm
ODIzYWIwNzk3NTNiMDVlNWEzYWE1NGEuLjVkYjkyNGY4ZWNmYjAzYTdlMGJhNmY1ZDA4NDgyMmIz
NDcxMWJhYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiV2FzbUNv
bnRleHQuaCIKICNpbmNsdWRlICJXYXNtRm9ybWF0LmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5o
IgorI2luY2x1ZGUgIldhc21TaWduYXR1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RU
TFMuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAK
aW5kZXggZDc0NDE3Y2IxYTRjMWNhM2IyZjM4ZWZhMjA3N2E1MzhiMTY1ZWExMi4uZThjYTU4Y2Jm
NjBhYzQ2YWIyMzBlZTNkZjA0YTVmNGEzMDI4ZjJmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcApAQCAt
MzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlMaW5rRXJyb3IuaCIKICNpbmNs
dWRlICJKU1dlYkFzc2VtYmx5TW9kdWxlLmgiCiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIK
LSNpbmNsdWRlICJXYXNtU2lnbmF0dXJlLmgiCisjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGlu
ZXMuaCIKICNpbmNsdWRlICJXZWJBc3NlbWJseUZ1bmN0aW9uLmgiCiAjaW5jbHVkZSA8bGltaXRz
PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eVdyYXBwZXJGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHAKaW5kZXggMzZmMzc4MzA2YmU3MjdjMDI5NTMxZGI0
OTJhOGQwMDkyNzI5MWE2ZS4uNDQ0ZWZiZjhiNGE3YTM1ZjQwZjAxY2ViNGM3OWVjODQzZWIxNjQ2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlX
cmFwcGVyRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgorI2luY2x1ZGUgIldhc21TaWduYXR1cmVJbmxpbmVz
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349138</attachid>
            <date>2018-09-07 05:34:42 -0700</date>
            <delta_ts>2018-09-07 05:35:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189401-20180907213441.patch</filename>
            <type>text/plain</type>
            <size>36308</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1Nzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OTQ2MDg3MWZlNjkwN2QyNzFhNGQwMDg2ZjIzNTRhODU4OTk4YmJkLi5hNWFhZGRkZTcyODZjMWVj
ZDUzZThiYmY4N2NiZjkyNTZiYTliYzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NyBAQAorMjAxOC0wOS0wNyAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtXZWJBc3NlbWJseV0gT3B0aW1pemUgSlMgdG8gV2FzbSBj
YWxsIGJ5IHVzaW5nIHBvaW50ZXIgb2YgU2lnbmF0dXJlIGFzIFNpZ25hdHVyZUluZGV4CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk0MDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaWduYXR1cmVJbmZv
cm1hdGlvbiBpcyBhIGdsb2JhbCByZXBvc2l0b3J5IGZvciBTaWduYXR1cmUgdG8gbWFrZSBTaWdu
YXR1cmUgYXRvbWljLgorICAgICAgICBJdCB0YWtlcyBSZWY8U2lnbmF0dXJlPiYmIGFuZCBnZW5l
cmF0ZXMgU2lnbmF0dXJlSW5kZXguIEFuZCB3ZSBnZXQgY29uc3QgU2lnbmF0dXJlJgorICAgICAg
ICBieSB1c2luZyB0aGlzIFNpZ25hdHVyZUluZGV4LiBIb3dldmVyLCBjb252ZXJ0aW5nIFNpZ25h
dHVyZUluZGV4IHRvIGNvbnN0IFNpZ25hdHVyZSYKKyAgICAgICAgYWx3YXlzIGxvb2tzIHVwIGEg
aGFzaCB0YWJsZS4gVGhpcyBpcyBjb3N0bHkgc2luY2UgSlMgdG8gV2FzbSBjYWxscyBhbHdheXMg
dXNlCisgICAgICAgIFNpZ25hdHVyZSYgdG8gY2hlY2sgdHlwZXMgb2YgYXJndW1lbnRzLgorCisg
ICAgICAgIEluc3RlYWQgb2YgdXNpbmcgdGhpcyBoYXNoIHRhYmxlLCB0aGlzIHBhdGNoIHVzZXMg
YSBwb2ludGVyIG9mIFNpZ25hdHVyZSBhcyBTaWduYXR1cmVJbmRleC4KKyAgICAgICAgVGhpcyBh
bGxvd3MgdXMgdG8gY29udmVydCBTaWduYXR1cmVJbmRleCB0byBTaWduYXR1cmUgYnkganVzdCBj
YXN0aW5nIGl0LgorCisgICAgICAgIFdlIGFsc28gb3B0aW1pemUgU2lnbmF0dXJlSW5mb3JtYXRp
b246OnNpbmdsZXRvbiBieSBtYWtpbmcgYW4gYWNjZXNzb3IgZnVuY3Rpb24gaW5saW5lZC4KKyAg
ICAgICAgQW5kIHdlIG1vdmUgUHJvdG9DYWxsRnJhbWU6OmluaXQgdG8gdGhlIGhlYWRlciBzaW5j
ZSBpdCdzIGp1c3Qgc2V0dGluZyB2YWx1ZXMuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ugc2lnbmlm
aWNhbnRseSBvcHRpbWl6ZXMgSlMgdG8gd2FzbSBjYWxscyAoMWU3IHRpbWVzKSBmcm9tIDYwMG1z
IHRvIDMyMG1zLgorCisgICAgICAgIEluIHRoZSBmdXR1cmUsIHdlIGNhbiByZW1vdmUgU2lnbmF0
dXJlSW5kZXggYnkgZGlyZWN0bHkgaGFuZGxpbmcgUmVmPFNpZ25hdHVyZT46IGFkZGluZworICAg
ICAgICBkZXJlZigpIG9mIFNpZ25hdHVyZSB3aGljaCB1bnJlZ2lzdGVycyBpdHNlbGYgZnJvbSBT
aWduYXR1cmVJbmZvcm1hdGlvbiBjYXJlZnVsbHkuIE9yIHdlIGNhbgorICAgICAgICBtYWtlIFNp
Z25hdHVyZUluZGV4IHVpbnQzMl90IGJ5IGludHJvZHVjaW5nIGEgbWVjaGFuaXNtIHNpbWlsYXIg
dG8gU3RydWN0dXJlSUQuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGludGVycHJl
dGVyL1Byb3RvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvdG9DYWxsRnJhbWU6Omlu
aXQpOiBEZWxldGVkLgorICAgICAgICAqIGludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmg6Cisg
ICAgICAgIChKU0M6OlByb3RvQ2FsbEZyYW1lOjppbml0KToKKyAgICAgICAgKiB3YXNtL1dhc21C
M0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRk
Q2FsbEluZGlyZWN0KToKKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAg
KiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6V2FzbVRvV2FzbUltcG9y
dGFibGVGdW5jdGlvbjo6b2Zmc2V0T2ZTaWduYXR1cmVJbmRleCk6CisgICAgICAgICogd2FzbS9X
YXNtRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAgICAgKiB3YXNtL1dhc21Nb2R1bGUuaDoKKyAgICAg
ICAgKiB3YXNtL1dhc21PTUdQbGFuLmNwcDoKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VUeXBlKToK
KyAgICAgICAgKiB3YXNtL1dhc21TaWduYXR1cmUuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpT
aWduYXR1cmVJbmZvcm1hdGlvbjo6YWRvcHQpOgorICAgICAgICAoSlNDOjpXYXNtOjpTaWduYXR1
cmVJbmZvcm1hdGlvbjo6dHJ5Q2xlYW51cCk6CisgICAgICAgIChKU0M6Oldhc206OlNpZ25hdHVy
ZUluZm9ybWF0aW9uOjpzaW5nbGV0b24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpT
aWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL1dhc21T
aWduYXR1cmUuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2lnbmF0dXJlOjppbmRleCBjb25zdCk6
CisgICAgICAgIChKU0M6Oldhc206OlNpZ25hdHVyZUhhc2g6OlNpZ25hdHVyZUhhc2gpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpTaWduYXR1cmVIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6U2lnbmF0dXJlSGFzaDo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpXYXNtOjpTaWduYXR1cmVIYXNoOjplbXB0eSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Oldhc206OlNpZ25hdHVyZUhhc2g6OmRlbGV0ZWQpOiBEZWxldGVkLgorICAgICAgICAqIHdh
c20vV2FzbVNpZ25hdHVyZUlubGluZXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcC4KKyAgICAgICAgKEpTQzo6V2FzbTo6
U2lnbmF0dXJlSW5mb3JtYXRpb246OnNpbmdsZXRvbik6CisgICAgICAgIChKU0M6Oldhc206OlNp
Z25hdHVyZUluZm9ybWF0aW9uOjpnZXQpOgorICAgICAgICAqIHdhc20vanMvSlNUb1dhc20uY3Bw
OgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5oOgorICAgICAgICAqIHdh
c20vanMvV2FzbVRvSlMuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9KUyk6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKiB3YXNtL2pz
L1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2Vt
Ymx5V3JhcHBlckZ1bmN0aW9uLmNwcDoKKwogMjAxOC0wOS0wNiAgWXVzdWtlIFN1enVraSAgPHl1
c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgogCiAgICAgICAgIFtXZWJBc3NlbWJseV0gT3B0aW1p
emUgSlMgdG8gV2FzbSBjYWxsIGJ5IHJlbW92aW5nIFZlY3RvciBhbGxvY2F0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUwYTAxOWE2NGU2NmM0YzdmNDg3MjRmMWY5OTNmZDY2
ZDhlNDZmOTcuLmY1YmIwNTVmZTZjNmQ4YzBiMjVkZGM2NzNiMmQ2MjM3NmI1MmIwYmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTM2LDYgKzE1MzYsNyBAQAogCQlBRDVDMzZF
QzFGNzVBRDdDMDAwQkNBQUYgLyogV2FzbVRvSlMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFERDA5QUVFMUY1RjYyM0YwMDEzMTNDMiAvKiBXYXNtVG9K
Uy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFE
NUMzNkVGMUY3QTI2M0EwMDBCQ0FBRiAvKiBXYXNtTWVtb3J5TW9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ1QzM2RUUxRjdBMjYyOTAwMEJDQUFG
IC8qIFdhc21NZW1vcnlNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQUQ3NDM4QzAxRTA0NTdBNDAwRkQwQzJBIC8qIFdhc21TaWduYXR1cmUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENzQzOEJG
MUUwNDU3OTIwMEZEMEMyQSAvKiBXYXNtU2lnbmF0dXJlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNEJBQTA3Q0VCODFGNDlBMjk2RTAyMjAzIC8q
IFdhc21TaWduYXR1cmVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMEE1RjQwM0YxMUM0RjU5OUNENTk2RDUgLyogV2FzbVNpZ25hdHVyZUlu
bGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlBRDdCNEIyRTFGQTNFMjk4MDBDOURGNzkgLyogV2FzbU5hbWVTZWN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDdCNEIyRDFGQTNFMjg2MDBD
OURGNzkgLyogV2FzbU5hbWVTZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQUQ4NkE5M0UxQUE0RDg4RDAwMkZFNzdGIC8qIFdlYWtHQ01h
cElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFEODZBOTNEMUFBNEQ4N0MwMDJGRTc3RiAvKiBXZWFrR0NNYXBJbmxpbmVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQUQ4RkYzOTgxRUI1QkRC
MjAwODdGRjgyIC8qIFdhc21JbmRleE9yTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ4RkYzOTUxRUI1QkQ4NTAwODdGRjgyIC8qIFdhc21JbmRl
eE9yTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0zNTk5LDcgKzM2MDAsNiBAQAogCQk2NUVBNzM2MjBCQUUzNUQxMDAxQkI1NjAgLyogQ29t
bW9uSWRlbnRpZmllcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENvbW1vbklkZW50aWZpZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVF
QTczNjMwQkFFMzVEMTAwMUJCNTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25JZGVudGlmaWVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2NUZCNTExNTE4NEVFOEY4MDBDMTJCNzAgLyogUHJvdG9DYWxsRnJh
bWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvdG9DYWxsRnJhbWUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjVGQjUxMTYxODRFRTlCQzAwQzEyQjcwIC8q
IFByb3RvQ2FsbEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFByb3RvQ2FsbEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkEzOENG
QTcxRTMyQjU4QjAwNjAyMDZGIC8qIEFzeW5jU3RhY2tUcmFjZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBc3luY1N0YWNrVHJhY2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2QTM4Q0ZBODFFMzJCNThCMDA2MDIwNkYgLyogQXN5bmNTdGFja1Ry
YWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jU3RhY2tUcmFjZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QUQyQ0I0QzE5QjkxNDAxMDAwNjU3MTkg
LyogRGVidWdnZXJFdmFsRW5hYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEZWJ1Z2dlckV2YWxFbmFibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00
MzY0LDYgKzQzNjQsNyBAQAogCQlBRDVDMzZGMDFGN0EyNkJGMDAwQkNBQUYgLyogV2FzbU1lbW9y
eU1vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbU1lbW9yeU1vZGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBRDc0MzhCRTFFMDQ1NzkyMDBGRDBDMkEgLyogV2FzbVNp
Z25hdHVyZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtU2ln
bmF0dXJlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ3NDM4QkYxRTA0NTc5
MjAwRkQwQzJBIC8qIFdhc21TaWduYXR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2FzbVNpZ25hdHVyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMEE1
RjQwM0YxMUM0RjU5OUNENTk2RDUgLyogV2FzbVNpZ25hdHVyZUlubGluZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbVNpZ25hdHVyZUlubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ3QjRCMkQxRkEzRTI4NjAwQzlERjc5IC8qIFdhc21OYW1l
U2VjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtTmFtZVNlY3Rp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ4NkE5M0QxQUE0RDg3QzAwMkZF
NzdGIC8qIFdlYWtHQ01hcElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2Vha0dDTWFwSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRDhE
RDZDRjFGNjcwODlGMDAwNEVCNTIgLyogSlNUb1dhc20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNUb1dh
c20uaDsgcGF0aCA9IGpzL0pTVG9XYXNtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01NTA4LDggKzU1MDksOCBAQAogCQkJCTc5NkRBQTJBMUU4OUNDRDYwMDVERjI0QSAvKiBDYWxs
ZWVCaXRzLmggKi8sCiAJCQkJMTQyOUQ4REIwRUQyMjA1QjAwQjg5NjE5IC8qIENhbGxGcmFtZS5j
cHAgKi8sCiAJCQkJMTQyOUQ4REMwRUQyMjA1QjAwQjg5NjE5IC8qIENhbGxGcmFtZS5oICovLAot
CQkJCUZFQTNCQkE3MjEyQjY1NTgwMEU5M0FEMSAvKiBDYWxsRnJhbWVJbmxpbmVzLmggKi8sCiAJ
CQkJQTdGODY5RUMwRjk1QzJFQzAwNTU4Njk3IC8qIENhbGxGcmFtZUNsb3N1cmUuaCAqLywKKwkJ
CQlGRUEzQkJBNzIxMkI2NTU4MDBFOTNBRDEgLyogQ2FsbEZyYW1lSW5saW5lcy5oICovLAogCQkJ
CTE0MjlEODVCMEVEMjE4RTkwMEI4OTYxOSAvKiBDTG9vcFN0YWNrLmNwcCAqLywKIAkJCQkxNEQ3
OTI2NDBEQUEwM0ZCMDAxQTlGMDUgLyogQ0xvb3BTdGFjay5oICovLAogCQkJCUE3QzFFQUVCMTc5
ODdBQjYwMDI5OURCMiAvKiBDTG9vcFN0YWNrSW5saW5lcy5oICovLApAQCAtNTUxOCw3ICs1NTE5
LDYgQEAKIAkJCQkxNDI5RDdEMzBFRDIxMjgyMDBCODk2MTkgLyogSW50ZXJwcmV0ZXIuY3BwICov
LAogCQkJCTE0MjlENzdCMEVEMjBENzMwMEI4OTYxOSAvKiBJbnRlcnByZXRlci5oICovLAogCQkJ
CUUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRlcnByZXRlcklubGluZXMuaCAqLywKLQkJ
CQk2NUZCNTExNjE4NEVFOUJDMDBDMTJCNzAgLyogUHJvdG9DYWxsRnJhbWUuY3BwICovLAogCQkJ
CTY1RkI1MTE1MTg0RUU4RjgwMEMxMkI3MCAvKiBQcm90b0NhbGxGcmFtZS5oICovLAogCQkJCTE0
OUIyNEZGMEQ4QUY2RDEwMDlDQjhDNyAvKiBSZWdpc3Rlci5oICovLAogCQkJCURDMTdFODEzMUM5
QzdGRDQwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuLmNwcCAqLywKQEAgLTYzNjIsNiArNjM2Miw3
IEBACiAJCQkJNTNGNDBFODQxRDU4Rjk3NzAwOTlBMUI2IC8qIFdhc21TZWN0aW9ucy5oICovLAog
CQkJCUFENzQzOEJFMUUwNDU3OTIwMEZEMEMyQSAvKiBXYXNtU2lnbmF0dXJlLmNwcCAqLywKIAkJ
CQlBRDc0MzhCRjFFMDQ1NzkyMDBGRDBDMkEgLyogV2FzbVNpZ25hdHVyZS5oICovLAorCQkJCTMw
QTVGNDAzRjExQzRGNTk5Q0Q1OTZENSAvKiBXYXNtU2lnbmF0dXJlSW5saW5lcy5oICovLAogCQkJ
CUUzQTA1MzE5MjEzNDJCNjcwMDIyRUMxNCAvKiBXYXNtU3RyZWFtaW5nUGFyc2VyLmNwcCAqLywK
IAkJCQlFM0EwNTMxNjIxMzQyQjY2MDAyMkVDMTQgLyogV2FzbVN0cmVhbWluZ1BhcnNlci5oICov
LAogCQkJCUFENUMzNkUzMUY2OUVDOEIwMDBCQ0FBRiAvKiBXYXNtVGFibGUuY3BwICovLApAQCAt
ODQ0NCw3ICs4NDQ1LDYgQEAKIAkJCQk5OURBMDBBMzFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRp
bnNfZ2VuZXJhdG9yLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJOTlEQTAwQTQxQkQ1OTkzMTAwRjQ1
NzVDIC8qIGJ1aWx0aW5zX21vZGVsLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJOTlEQTAwQTUxQkQ1
OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX3RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovLAotCQkJ
CUZFQTNCQkE4MjEyQjY1NTkwMEU5M0FEMSAvKiBDYWxsRnJhbWVJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MURFQTEzMjFCOUYzMTYzMDA2RDY1REQgLyogQnVpbHRpblV0aWxzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5RTcyOTQwQjE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTcxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZs
eS5oIGluIEhlYWRlcnMgKi8sCkBAIC04NDY5LDYgKzg0NjksNyBAQAogCQkJCTBGNjRCMjdBMUE3
OTU3QjIwMDZFNEU2NiAvKiBDYWxsRWRnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzk2REFBMkIx
RTg5Q0NENjAwNURGMjRBIC8qIENhbGxlZUJpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MjlE
OERFMEVEMjIwNUIwMEI4OTYxOSAvKiBDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZF
QTNCQkE4MjEyQjY1NTkwMEU5M0FEMSAvKiBDYWxsRnJhbWVJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk2MkVDOUJCNzFCN0VCMDdDMDAzMDNBRDEgLyogQ2FsbEZyYW1lU2h1ZmZsZURhdGEu
aCBpbiBIZWFkZXJzICovLAogCQkJCTYyRDc1NUQ3MUI4NEZCNEEwMDE4MDFGQSAvKiBDYWxsRnJh
bWVTaHVmZmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjExNEJDRjcxODAwODg1QjRG
IC8qIENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC04NzU5LDYgKzg3NjAsNyBAQAog
CQkJCUE3MDQ0N0VFMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkUzMThGRTAxQ0FDOTgyRjAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJu
YWxGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBODM2Mzg2MThEN0QwRUUwMDAwRUJD
QyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTA4NkJD
QTIxMjNERUZCMDAzRjI5MjkgLyogRW50cnlGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFE
MkVERkIxOTc5OUUzODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMzMDQ2MDcwRTFGNDk3RjAwMzIzMkNGIC8qIEVycm9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzAyRTkwRDBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCkBAIC05MDk1LDcgKzkwOTcsNiBAQAogCQkJCTk3ODgwMTQxMTQ3MUFEOTIwMDQx
QjAxNiAvKiBKU0RhdGVNYXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkE3RjY4ODE2MDQzMkQ0
MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
N0RGMTNDMUUyOTcxMTMwMDk1OTUxQiAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkUwODZCQ0EyMTIzREVGQjAwM0YyOTI5IC8qIEVudHJ5
RnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzg0RUU2MUFEREI3QUQwMDU1REUyQyAvKiBK
U0RvbGxhclZNLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkUzQzYxNDE2N0JBQkQ3MDA2RDc2MEEg
LyogSlNFeHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QjRBQ0FGMTQ4NEM5Q0UwMEIzOEEz
NiAvKiBKU0V4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCkBAIC05NjIyLDYgKzk2MjMsNyBA
QAogCQkJCUUzQTA1MzFDMjEzNDJCNjgwMDIyRUMxNCAvKiBXYXNtU2VjdGlvblBhcnNlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTNGNDBFODUxRDU4Rjk3NzAwOTlBMUI2IC8qIFdhc21TZWN0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ3NDM4QzAxRTA0NTdBNDAwRkQwQzJBIC8qIFdhc21T
aWduYXR1cmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTRCQUEwN0NFQjgxRjQ5QTI5NkUwMjIwMyAv
KiBXYXNtU2lnbmF0dXJlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTNBMDUzMUEyMTM0
MkI2ODAwMjJFQzE0IC8qIFdhc21TdHJlYW1pbmdQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUFENUMzNkU2MUY2OUVDOTEwMDBCQ0FBRiAvKiBXYXNtVGFibGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUyNTBEMkQyMUU4REEwNUEwMDI5QTkzMiAvKiBXYXNtVGh1bmtzLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBlMmJhZjFhNTc1NWZjN2U0ZjIzZjlk
MTRkOWRlMzQ5MWYzOTBhMThlLi4zODgzMDc2OGVmYmI2M2E0ZmRjM2ZiMzExYWIwNmViZDYzNmY2
NGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC01ODcsNyArNTg3LDYgQEAgaW50
ZXJwcmV0ZXIvQWJzdHJhY3RQQy5jcHAKIGludGVycHJldGVyL0NMb29wU3RhY2suY3BwCiBpbnRl
cnByZXRlci9DYWxsRnJhbWUuY3BwCiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKLWludGVy
cHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcAogaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAK
IGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAKaW5kZXggNTJiYzk4OGIxNzhi
N2I5NTMwMDhlMjYwNTU3MWNiMzMyYzQ3YThmNi4uZTAwOTQ0OTJmMjM2ZDZhYTg4ZWI3ZDMzYzVj
MDA2NzFkYmZlYzlmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1Byb3RvQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwCkBAIC0zMiwyMiArMzIsNCBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotdm9pZCBQcm90b0NhbGxGcmFtZTo6aW5pdChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
SlNPYmplY3QqIGNhbGxlZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIGludCBhcmdDb3VudEluY2x1ZGlu
Z1RoaXMsIEpTVmFsdWUqIG90aGVyQXJncykKLXsKLSAgICB0aGlzLT5hcmdzID0gb3RoZXJBcmdz
OwotICAgIHRoaXMtPnNldENvZGVCbG9jayhjb2RlQmxvY2spOwotICAgIHRoaXMtPnNldENhbGxl
ZShjYWxsZWUpOwotICAgIHRoaXMtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGFyZ0Nv
dW50SW5jbHVkaW5nVGhpcyk7Ci0gICAgaWYgKGNvZGVCbG9jayAmJiBhcmdDb3VudEluY2x1ZGlu
Z1RoaXMgPCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkKLSAgICAgICAgdGhpcy0+aGFzQXJp
dHlNaXNtYXRjaCA9IHRydWU7Ci0gICAgZWxzZQotICAgICAgICB0aGlzLT5oYXNBcml0eU1pc21h
dGNoID0gZmFsc2U7Ci0KLSAgICAvLyBSb3VuZCB1cCBhcmdDb3VudEluY2x1ZGluZ1RoaXMgdG8g
a2VlcCB0aGUgc3RhY2sgZnJhbWUgc2l6ZSBhbGlnbmVkLgotICAgIHNpemVfdCBwYWRkZWRBcmdz
Q291bnQgPSByb3VuZEFyZ3VtZW50Q291bnRUb0FsaWduRnJhbWUoYXJnQ291bnRJbmNsdWRpbmdU
aGlzKTsKLSAgICB0aGlzLT5zZXRQYWRkZWRBcmdDb3VudChwYWRkZWRBcmdzQ291bnQpOwotICAg
IHRoaXMtPmNsZWFyQ3VycmVudFZQQygpOwotICAgIHRoaXMtPnNldFRoaXNWYWx1ZSh0aGlzVmFs
dWUpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmgKaW5kZXggMTY3YjM5NDk5YzRmN2I4ZTNk
MDQwNzViZTg3OGFmMDM1MTdjMWZjYi4uNDg0ZDEwZjE3Njc4NDMzMjRkMGU2MGNkMDNjMzY1NDNl
YjMwMWJkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1By
b3RvQ2FsbEZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1By
b3RvQ2FsbEZyYW1lLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiUmVnaXN0ZXIuaCIKKyNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3JiaWRIZWFwQWxsb2NhdGlvbi5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTczLDQgKzc0
LDIyIEBAIHN0cnVjdCBKU19FWFBPUlRfUFJJVkFURSBQcm90b0NhbGxGcmFtZSB7CiAgICAgfQog
fTsKIAoraW5saW5lIHZvaWQgUHJvdG9DYWxsRnJhbWU6OmluaXQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEpTT2JqZWN0KiBjYWxsZWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBpbnQgYXJnQ291bnRJbmNs
dWRpbmdUaGlzLCBKU1ZhbHVlKiBvdGhlckFyZ3MpCit7CisgICAgdGhpcy0+YXJncyA9IG90aGVy
QXJnczsKKyAgICB0aGlzLT5zZXRDb2RlQmxvY2soY29kZUJsb2NrKTsKKyAgICB0aGlzLT5zZXRD
YWxsZWUoY2FsbGVlKTsKKyAgICB0aGlzLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhh
cmdDb3VudEluY2x1ZGluZ1RoaXMpOworICAgIGlmIChjb2RlQmxvY2sgJiYgYXJnQ291bnRJbmNs
dWRpbmdUaGlzIDwgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpCisgICAgICAgIHRoaXMtPmhh
c0FyaXR5TWlzbWF0Y2ggPSB0cnVlOworICAgIGVsc2UKKyAgICAgICAgdGhpcy0+aGFzQXJpdHlN
aXNtYXRjaCA9IGZhbHNlOworCisgICAgLy8gUm91bmQgdXAgYXJnQ291bnRJbmNsdWRpbmdUaGlz
IHRvIGtlZXAgdGhlIHN0YWNrIGZyYW1lIHNpemUgYWxpZ25lZC4KKyAgICBzaXplX3QgcGFkZGVk
QXJnc0NvdW50ID0gcm91bmRBcmd1bWVudENvdW50VG9BbGlnbkZyYW1lKGFyZ0NvdW50SW5jbHVk
aW5nVGhpcyk7CisgICAgdGhpcy0+c2V0UGFkZGVkQXJnQ291bnQocGFkZGVkQXJnc0NvdW50KTsK
KyAgICB0aGlzLT5jbGVhckN1cnJlbnRWUEMoKTsKKyAgICB0aGlzLT5zZXRUaGlzVmFsdWUodGhp
c1ZhbHVlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggM2U3Y2U2MGFkNzRiMDAyMDQ3
NGE4Njk5M2RhNzZlNzE4MGRjNmYyNC4uZTBiYzE1OTkzMjBjMGUyNzZkYTY1ODAzZmFkMmU0ZDMy
OThiYzA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKICNp
bmNsdWRlICJXYXNtT01HUGxhbi5oIgogI2luY2x1ZGUgIldhc21PcGNvZGVPcmlnaW4uaCIKKyNp
bmNsdWRlICJXYXNtU2lnbmF0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIldhc21UaHVua3MuaCIK
ICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC0xMjI5LDEz
ICsxMjMwLDEzIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KGNvbnN0IFNp
Z25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvCiAKICAgICAgICAgLy8gQ2hlY2sg
dGhhdCB0aGUgV2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbiBpcyBpbml0aWFsaXplZC4gV2Ug
dHJhcCBpZiBpdCBpc24ndC4gQW4gImludmFsaWQiIFNpZ25hdHVyZUluZGV4IGluZGljYXRlcyBp
dCdzIG5vdCBpbml0aWFsaXplZC4KICAgICAgICAgLy8gRklYTUU6IHdoZW4gd2UgaGF2ZSB0cmFw
IGhhbmRsZXJzLCB3ZSBjYW4ganVzdCBsZXQgdGhlIGNhbGwgZmFpbCBiZWNhdXNlIFNpZ25hdHVy
ZTo6aW52YWxpZEluZGV4IGlzIDAuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzcyMTAKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoV2FzbVRvV2FzbUltcG9y
dGFibGVGdW5jdGlvbjo6c2lnbmF0dXJlSW5kZXgpID09IHNpemVvZih1aW50MzJfdCksICJMb2Fk
IGNvZGVnZW4gYXNzdW1lcyBpMzIiKTsKLSAgICAgICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlU2ln
bmF0dXJlSW5kZXggPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3By
b2MsIExvYWQsIEludDMyLCBvcmlnaW4oKSwgY2FsbGFibGVGdW5jdGlvbiwgc2FmZUNhc3Q8aW50
MzJfdD4oT0JKRUNUX09GRlNFVE9GKFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb24sIHNpZ25h
dHVyZUluZGV4KSkpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihXYXNtVG9XYXNtSW1w
b3J0YWJsZUZ1bmN0aW9uOjpzaWduYXR1cmVJbmRleCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgIkxv
YWQgY29kZWdlbiBhc3N1bWVzIGk2NCIpOworICAgICAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVT
aWduYXR1cmVJbmRleCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1f
cHJvYywgTG9hZCwgSW50NjQsIG9yaWdpbigpLCBjYWxsYWJsZUZ1bmN0aW9uLCBzYWZlQ2FzdDxp
bnQzMl90PihXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjpvZmZzZXRPZlNpZ25hdHVyZUlu
ZGV4KCkpKTsKICAgICAgICAgewogICAgICAgICAgICAgQ2hlY2tWYWx1ZSogY2hlY2sgPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ssIG9yaWdpbigp
LAogICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJv
YywgRXF1YWwsIG9yaWdpbigpLAogICAgICAgICAgICAgICAgICAgICBjYWxsZWVTaWduYXR1cmVJ
bmRleCwKLSAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIFNpZ25hdHVyZTo6aW52YWxpZEluZGV4KSkpOwor
ICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0NjRWYWx1
ZT4obV9wcm9jLCBvcmlnaW4oKSwgU2lnbmF0dXJlOjppbnZhbGlkSW5kZXgpKSk7CiAKICAgICAg
ICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
QjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgICAgICB0aGlzLT5l
bWl0RXhjZXB0aW9uQ2hlY2soaml0LCBFeGNlcHRpb25UeXBlOjpOdWxsVGFibGVFbnRyeSk7CkBA
IC0xMjQ0LDcgKzEyNDUsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdChj
b25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3NpbwogCiAgICAgICAgIC8v
IENoZWNrIHRoZSBzaWduYXR1cmUgbWF0Y2hlcyB0aGUgdmFsdWUgd2UgZXhwZWN0LgogICAgICAg
ICB7Ci0gICAgICAgICAgICBFeHByZXNzaW9uVHlwZSBleHBlY3RlZFNpZ25hdHVyZUluZGV4ID0g
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCks
IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJlKSk7CisgICAgICAgICAgICBFeHBy
ZXNzaW9uVHlwZSBleHBlY3RlZFNpZ25hdHVyZUluZGV4ID0gbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxDb25zdDY0VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIFNpZ25hdHVyZUluZm9ybWF0aW9u
OjpnZXQoc2lnbmF0dXJlKSk7CiAgICAgICAgICAgICBDaGVja1ZhbHVlKiBjaGVjayA9IG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2luKCks
CiAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9j
LCBOb3RFcXVhbCwgb3JpZ2luKCksIGNhbGxlZVNpZ25hdHVyZUluZGV4LCBleHBlY3RlZFNpZ25h
dHVyZUluZGV4KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CQlFQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNw
cAppbmRleCA0M2M4ZjU2MmFmYTFjMzYzM2E3ZTZjNjFmNDA5MjJlYzBiZTk3MjEzLi4yMmE2NWMz
MTEwY2ZjOGNkYjk0Y2QxMDVmYjZkN2MzZTUzZTc3MGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiV2Fz
bUZhdWx0U2lnbmFsSGFuZGxlci5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKICNpbmNsdWRl
ICJXYXNtTW9kdWxlUGFyc2VyLmgiCisjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIK
ICNpbmNsdWRlICJXYXNtVGllclVwQ291bnQuaCIKICNpbmNsdWRlICJXYXNtVmFsaWRhdGUuaCIK
ICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZv
cm1hdC5oCmluZGV4IGU0M2Y0ZWQ5MzYxNjdmZjI5MzhkODM3YTBjZTA4OGQ0M2QyMGE0ZTYuLjQ2
MzIzOTRkYjJjZTNjMjU4ZmVkZDc2ZWEwMTNlYmE1ZDE3NWI3MzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKQEAgLTI3Niw2ICsyNzYsNyBAQCBzdHJ1Y3QgSW50ZXJu
YWxGdW5jdGlvbiB7CiAvLyBtZWFudCBhcyBmYXN0IGxvb2t1cCB0YWJsZXMgZm9yIHRoZXNlIG9w
Y29kZXMgYW5kIGRvIG5vdCBvd24gY29kZS4KIHN0cnVjdCBXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1
bmN0aW9uIHsKICAgICB1c2luZyBMb2FkTG9jYXRpb24gPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
V2FzbUVudHJ5UHRyVGFnPio7CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNpZ25hdHVy
ZUluZGV4KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFdhc21Ub1dhc21JbXBvcnRhYmxlRnVu
Y3Rpb24sIHNpZ25hdHVyZUluZGV4KTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZF
bnRyeXBvaW50TG9hZExvY2F0aW9uKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFdhc21Ub1dh
c21JbXBvcnRhYmxlRnVuY3Rpb24sIGVudHJ5cG9pbnRMb2FkTG9jYXRpb24pOyB9CiAKICAgICAv
LyBGSVhNRTogUGFjayBzaWduYXR1cmUgaW5kZXggYW5kIGNvZGUgcG9pbnRlciBpbnRvIG9uZSA2
NC1iaXQgdmFsdWUuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NTUxMT4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVu
Y3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBh
cnNlci5oCmluZGV4IDg3MzVjZThlNmFjY2IzOGU4NGM4NGI3YjhlMTFkNTMzNzlhYjhkYmUuLjA4
OGU3MjhjZTRjYzU0Y2UzYzYwNmI0MGYyNTVhNjA5ZDU3YjNiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCiAjaW5jbHVkZSAiV2FzbVBhcnNlci5oIgorI2lu
Y2x1ZGUgIldhc21TaWduYXR1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4K
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21Nb2R1bGUuaAppbmRleCBmYTM2YTY5YjgwMzkxNWQ2MWMzOTZmYzFiM2Y5YmM3NjQy
MDBlNjMyLi42NTJkZGQzN2RiOGU1Nzg4ZDA1ODc1ZDJjMmRmYzdmYWRjOWU3MzY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5oCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVj
dCBDb250ZXh0Owogc3RydWN0IE1vZHVsZUluZm9ybWF0aW9uOwogY2xhc3MgUGxhbjsKIAotdXNp
bmcgU2lnbmF0dXJlSW5kZXggPSB1aW50MzJfdDsKK3VzaW5nIFNpZ25hdHVyZUluZGV4ID0gdWlu
dDY0X3Q7CiAKIGNsYXNzIE1vZHVsZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNb2R1
bGU+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21PTUdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNw
cAppbmRleCA5ZTBjNGE1NjY2ZTQ0ZTBlYWNjMjMxMmFiYmI3NjU0NTNiODc5ZjQ4Li5lMzFiNDcx
Yjc5MjUyZGNlY2U2N2Y2ZmFmZGYwNmI3MTQ4MzMyN2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiV2Fz
bU1hY2hpbmVUaHJlYWRzLmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgogI2luY2x1ZGUgIldh
c21OYW1lU2VjdGlvbi5oIgorI2luY2x1ZGUgIldhc21TaWduYXR1cmVJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiV2FzbVZhbGlkYXRlLmgiCiAjaW5jbHVkZSAiV2FzbVdvcmtsaXN0LmgiCiAjaW5jbHVk
ZSA8d3RmL0RhdGFMb2cuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TZWN0aW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21T
ZWN0aW9uUGFyc2VyLmNwcAppbmRleCA5YTliYWNiNjdkZWQyNTA0NTM1ZDhjMmRlNWM1ZWQ4MzNk
ZWYxNjAyLi5hZTg3MjVkMDc5Y2MzYzljODgyMDA0NzBkYzBiZmY3YmU3NjQ0ZmNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiV2FzbU5hbWVTZWN0aW9uUGFyc2VyLmgiCiAjaW5jbHVk
ZSAiV2FzbU9wcy5oIgogI2luY2x1ZGUgIldhc21TZWN0aW9ucy5oIgorI2luY2x1ZGUgIldhc21T
aWduYXR1cmVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAK
QEAgLTc1LDggKzc2LDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZVR5cGUoKSAtPiBQYXJ0
aWFsUmVzdWx0CiAgICAgICAgICAgICByZXR1cm5UeXBlID0gVHlwZTo6Vm9pZDsKICAgICAgICAg
c2lnbmF0dXJlLT5yZXR1cm5UeXBlKCkgPSByZXR1cm5UeXBlOwogCi0gICAgICAgIHN0ZDo6cGFp
cjxTaWduYXR1cmVJbmRleCwgUmVmPFNpZ25hdHVyZT4+IHJlc3VsdCA9IFNpZ25hdHVyZUluZm9y
bWF0aW9uOjphZG9wdChXVEZNb3ZlKHNpZ25hdHVyZSkpOwotICAgICAgICBtX2luZm8tPnVzZWRT
aWduYXR1cmVzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKHJlc3VsdC5zZWNvbmQpKTsKKyAgICAg
ICAgbV9pbmZvLT51c2VkU2lnbmF0dXJlcy51bmNoZWNrZWRBcHBlbmQoU2lnbmF0dXJlSW5mb3Jt
YXRpb246OmFkb3B0KFdURk1vdmUoc2lnbmF0dXJlKSkpOwogICAgIH0KICAgICByZXR1cm4geyB9
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVy
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAppbmRl
eCA2YTQyZDUxNzE5NWVhNGZiNjFkOTJiMTBjOGNjMzc3MzY3YzJlYjlkLi4yOWNlMjEzNzUyMTNj
MzE0NTVhYTMzYTI5NWU4Zjg2ZTRkOWI0ZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtU2lnbmF0dXJlLmNwcApAQCAtNDEsNiArNDEsOSBAQCBzdGF0aWMgY29uc3QgYm9v
bCB2ZXJib3NlID0gZmFsc2U7CiB9CiB9CiAKK1NpZ25hdHVyZUluZm9ybWF0aW9uKiBTaWduYXR1
cmVJbmZvcm1hdGlvbjo6dGhlT25lIHsgbnVsbHB0ciB9Oworc3RkOjpvbmNlX2ZsYWcgU2lnbmF0
dXJlSW5mb3JtYXRpb246OnNpZ25hdHVyZUluZm9ybWF0aW9uRmxhZzsKKwogU3RyaW5nIFNpZ25h
dHVyZTo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIFN0cmluZyByZXN1bHQobWFrZVN0cmluZyhy
ZXR1cm5UeXBlKCkpKTsKQEAgLTgzLDYwICs4NiwyMiBAQCBTaWduYXR1cmVJbmZvcm1hdGlvbjo6
U2lnbmF0dXJlSW5mb3JtYXRpb24oKQogewogfQogCi1TaWduYXR1cmVJbmZvcm1hdGlvbiYgU2ln
bmF0dXJlSW5mb3JtYXRpb246OnNpbmdsZXRvbigpCi17Ci0gICAgc3RhdGljIFNpZ25hdHVyZUlu
Zm9ybWF0aW9uKiB0aGVPbmU7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIHNpZ25hdHVyZUlu
Zm9ybWF0aW9uRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShzaWduYXR1cmVJbmZvcm1hdGlvbkZs
YWcsIFtdICgpIHsKLSAgICAgICAgdGhlT25lID0gbmV3IFNpZ25hdHVyZUluZm9ybWF0aW9uOwot
ICAgIH0pOwotCi0gICAgcmV0dXJuICp0aGVPbmU7Ci19Ci0KLXN0ZDo6cGFpcjxTaWduYXR1cmVJ
bmRleCwgUmVmPFNpZ25hdHVyZT4+IFNpZ25hdHVyZUluZm9ybWF0aW9uOjphZG9wdChSZWY8U2ln
bmF0dXJlPiYmIHNpZ25hdHVyZSkKK1JlZjxTaWduYXR1cmU+IFNpZ25hdHVyZUluZm9ybWF0aW9u
OjphZG9wdChSZWY8U2lnbmF0dXJlPiYmIHNpZ25hdHVyZSkKIHsKICAgICBTaWduYXR1cmVJbmZv
cm1hdGlvbiYgaW5mbyA9IHNpbmdsZXRvbigpOwogICAgIExvY2tIb2xkZXIgbG9jayhpbmZvLm1f
bG9jayk7CiAKLSAgICBTaWduYXR1cmVJbmRleCBuZXh0VmFsdWUgPSBpbmZvLm1fbmV4dEluZGV4
OwotICAgIGF1dG8gYWRkUmVzdWx0ID0gaW5mby5tX3NpZ25hdHVyZU1hcC5hZGQoU2lnbmF0dXJl
SGFzaCB7IHNpZ25hdHVyZS5wdHIoKSB9LCBuZXh0VmFsdWUpOworICAgIFNpZ25hdHVyZUluZGV4
IG5leHRWYWx1ZSA9IHNpZ25hdHVyZS0+aW5kZXgoKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IGlu
Zm8ubV9zaWduYXR1cmVTZXQuYWRkKFNpZ25hdHVyZUhhc2ggeyBzaWduYXR1cmUuY29weVJlZigp
IH0pOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICArK2luZm8ubV9u
ZXh0SW5kZXg7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZm8ubV9uZXh0SW5kZXggPiBuZXh0
VmFsdWUpOyAvLyBjcmFzaCBvbiBvdmVyZmxvdy4KLSAgICAgICAgQVNTRVJUKG5leHRWYWx1ZSA9
PSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKICAgICAgICAgaWYgKFdhc21TaWduYXR1cmVJ
bnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2dMbigiQWRvcHQgbmV3IHNpZ25h
dHVyZSAiLCBzaWduYXR1cmUuZ2V0KCksICIgd2l0aCBpbmRleCAiLCBhZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlLCAiIGhhc2g6ICIsIHNpZ25hdHVyZS0+aGFzaCgpKTsKLQotICAgICAgICBhdXRv
IGFkZFJlc3VsdCA9IGluZm8ubV9pbmRleE1hcC5hZGQobmV4dFZhbHVlLCBzaWduYXR1cmUuY29w
eVJlZigpKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOwot
ICAgICAgICBBU1NFUlQoaW5mby5tX2luZGV4TWFwLnNpemUoKSA9PSBpbmZvLm1fc2lnbmF0dXJl
TWFwLnNpemUoKSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihuZXh0VmFsdWUsIFdU
Rk1vdmUoc2lnbmF0dXJlKSk7CisgICAgICAgICAgICBkYXRhTG9nTG4oIkFkb3B0IG5ldyBzaWdu
YXR1cmUgIiwgc2lnbmF0dXJlLmdldCgpLCAiIHdpdGggaW5kZXggIiwgbmV4dFZhbHVlLCAiIGhh
c2g6ICIsIHNpZ25hdHVyZS0+aGFzaCgpKTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoc2lnbmF0
dXJlKTsKICAgICB9CisgICAgbmV4dFZhbHVlID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT5rZXktPmlu
ZGV4KCk7CiAgICAgaWYgKFdhc21TaWduYXR1cmVJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAg
ZGF0YUxvZ0xuKCJFeGlzdGluZyBzaWduYXR1cmUgIiwgc2lnbmF0dXJlLmdldCgpLCAiIHdpdGgg
aW5kZXggIiwgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSwgIiBoYXNoOiAiLCBzaWduYXR1cmUt
Pmhhc2goKSk7Ci0gICAgQVNTRVJUKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgIT0gU2lnbmF0
dXJlOjppbnZhbGlkSW5kZXgpOwotICAgIEFTU0VSVChpbmZvLm1faW5kZXhNYXAuY29udGFpbnMo
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSkpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLCBSZWY8U2lnbmF0dXJlPigqaW5mby5tX2luZGV4TWFw
LmdldChhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKSkpOwotfQotCi1jb25zdCBTaWduYXR1cmUm
IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoU2lnbmF0dXJlSW5kZXggaW5kZXgpCi17Ci0gICAg
QVNTRVJUKGluZGV4ICE9IFNpZ25hdHVyZTo6aW52YWxpZEluZGV4KTsKLSAgICBTaWduYXR1cmVJ
bmZvcm1hdGlvbiYgaW5mbyA9IHNpbmdsZXRvbigpOwotICAgIExvY2tIb2xkZXIgbG9jayhpbmZv
Lm1fbG9jayk7Ci0KLSAgICByZXR1cm4gKmluZm8ubV9pbmRleE1hcC5nZXQoaW5kZXgpOwotfQot
Ci1TaWduYXR1cmVJbmRleCBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KGNvbnN0IFNpZ25hdHVy
ZSYgc2lnbmF0dXJlKQotewotICAgIFNpZ25hdHVyZUluZm9ybWF0aW9uJiBpbmZvID0gc2luZ2xl
dG9uKCk7Ci0gICAgTG9ja0hvbGRlciBsb2NrKGluZm8ubV9sb2NrKTsKLQotICAgIGF1dG8gcmVz
dWx0ID0gaW5mby5tX3NpZ25hdHVyZU1hcC5nZXQoU2lnbmF0dXJlSGFzaCB7ICZzaWduYXR1cmUg
fSk7Ci0gICAgQVNTRVJUKHJlc3VsdCAhPSBTaWduYXR1cmU6OmludmFsaWRJbmRleCk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgZGF0YUxvZ0xuKCJFeGlzdGluZyBzaWduYXR1cmUgIiwg
c2lnbmF0dXJlLmdldCgpLCAiIHdpdGggaW5kZXggIiwgbmV4dFZhbHVlLCAiIGhhc2g6ICIsIHNp
Z25hdHVyZS0+aGFzaCgpKTsKKyAgICByZXR1cm4gUmVmPFNpZ25hdHVyZT4oKmFkZFJlc3VsdC5p
dGVyYXRvci0+a2V5KTsKIH0KIAogdm9pZCBTaWduYXR1cmVJbmZvcm1hdGlvbjo6dHJ5Q2xlYW51
cCgpCkBAIC0xNDQsMjQgKzEwOSwxMCBAQCB2b2lkIFNpZ25hdHVyZUluZm9ybWF0aW9uOjp0cnlD
bGVhbnVwKCkKICAgICBTaWduYXR1cmVJbmZvcm1hdGlvbiYgaW5mbyA9IHNpbmdsZXRvbigpOwog
ICAgIExvY2tIb2xkZXIgbG9jayhpbmZvLm1fbG9jayk7CiAKLSAgICBWZWN0b3I8c3RkOjpwYWly
PFNpZ25hdHVyZUluZGV4LCBTaWduYXR1cmUqPj4gdG9SZW1vdmU7Ci0gICAgZm9yIChjb25zdCBh
dXRvJiBwYWlyIDogaW5mby5tX2luZGV4TWFwKSB7Ci0gICAgICAgIGNvbnN0IFJlZjxTaWduYXR1
cmU+JiBzaWduYXR1cmUgPSBwYWlyLnZhbHVlOwotICAgICAgICBpZiAoc2lnbmF0dXJlLT5yZWZD
b3VudCgpID09IDEpIHsKLSAgICAgICAgICAgIC8vIFdlJ3JlIHRoZSBvbmx5IG93bmVyLgotICAg
ICAgICAgICAgdG9SZW1vdmUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHBhaXIua2V5LCBzaWduYXR1
cmUucHRyKCkpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIg
OiB0b1JlbW92ZSkgewotICAgICAgICBib29sIHJlbW92ZWQgPSBpbmZvLm1fc2lnbmF0dXJlTWFw
LnJlbW92ZShTaWduYXR1cmVIYXNoIHsgcGFpci5zZWNvbmQgfSk7Ci0gICAgICAgIEFTU0VSVF9V
TlVTRUQocmVtb3ZlZCwgcmVtb3ZlZCk7Ci0gICAgICAgIHJlbW92ZWQgPSBpbmZvLm1faW5kZXhN
YXAucmVtb3ZlKHBhaXIuZmlyc3QpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWQsIHJl
bW92ZWQpOwotICAgIH0KLSAgICBpZiAoaW5mby5tX3NpZ25hdHVyZU1hcC5pc0VtcHR5KCkpIHsK
LSAgICAgICAgQVNTRVJUKGluZm8ubV9pbmRleE1hcC5pc0VtcHR5KCkpOwotICAgICAgICBpbmZv
Lm1fbmV4dEluZGV4ID0gU2lnbmF0dXJlOjpmaXJzdFZhbGlkSW5kZXg7Ci0gICAgfQorICAgIGlu
Zm8ubV9zaWduYXR1cmVTZXQucmVtb3ZlSWYoWyZdIChhdXRvJiBoYXNoKSB7CisgICAgICAgIGNv
bnN0IGF1dG8mIHNpZ25hdHVyZSA9IGhhc2gua2V5OworICAgICAgICByZXR1cm4gc2lnbmF0dXJl
LT5yZWZDb3VudCgpID09IDE7CisgICAgfSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpX
YXNtCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmgKaW5kZXggOWY0
OWNjYjE0NTY4ZDIwMWYxZjhhZGNlZWZiMGMxMzMxZWI3N2YwYi4uNmRiMjhjM2YxOTQyMmU0YzY4
YTMyODBjMTY1YzcxMzhjNjcyMzVmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVNpZ25hdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21TaWduYXR1cmUuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPGNzdHJpbmc+CiAjaW5j
bHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oPgpAQCAtNDcsNyArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBX
YXNtIHsKIAogdXNpbmcgU2lnbmF0dXJlQXJnQ291bnQgPSB1aW50MzJfdDsKLXVzaW5nIFNpZ25h
dHVyZUluZGV4ID0gdWludDMyX3Q7Cit1c2luZyBTaWduYXR1cmVJbmRleCA9IHVpbnQ2NF90Owog
CiBjbGFzcyBTaWduYXR1cmUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2lnbmF0dXJl
PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC04MSw2ICs4Miw3IEBAIGNsYXNz
IFNpZ25hdHVyZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaWduYXR1cmU+IHsKICAg
ICAgICAgcmV0dXJuICpzdG9yYWdlKHJldHVybkNvdW50KCkgKyBpKTsKICAgICB9CiAgICAgVHlw
ZSBhcmd1bWVudChTaWduYXR1cmVBcmdDb3VudCBpKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0
PFNpZ25hdHVyZSo+KHRoaXMpLT5hcmd1bWVudChpKTsgfQorICAgIFNpZ25hdHVyZUluZGV4IGlu
ZGV4KCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PFNpZ25hdHVyZUluZGV4Pih0aGlzKTsg
fQogCiAgICAgV1RGOjpTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKICAgICB2b2lkIGR1bXAoV1RG
OjpQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKQEAgLTExMSwyOCArMTEzLDIxIEBAIGNsYXNzIFNp
Z25hdHVyZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaWduYXR1cmU+IHsKIH07CiAK
IHN0cnVjdCBTaWduYXR1cmVIYXNoIHsKLSAgICBjb25zdCBTaWduYXR1cmUqIGtleTsKLSAgICBz
dGF0aWMgY29uc3QgU2lnbmF0dXJlKiBlbXB0eSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBz
dGF0aWMgY29uc3QgU2lnbmF0dXJlKiBkZWxldGVkKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBTaWduYXR1cmUqPigxKTsgfQotICAgIFNpZ25hdHVyZUhhc2goKQotICAgICAgICA6
IGtleShlbXB0eSgpKQorICAgIFJlZlB0cjxTaWduYXR1cmU+IGtleSB7IG51bGxwdHIgfTsKKyAg
ICBTaWduYXR1cmVIYXNoKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0IFNpZ25hdHVyZUhhc2go
UmVmPFNpZ25hdHVyZT4mJiBrZXkpCisgICAgICAgIDoga2V5KFdURk1vdmUoa2V5KSkKICAgICB7
CiAgICAgfQotICAgIGV4cGxpY2l0IFNpZ25hdHVyZUhhc2goY29uc3QgU2lnbmF0dXJlKiBrZXkp
Ci0gICAgICAgIDoga2V5KGtleSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChrZXkgIT0gZW1wdHko
KSk7Ci0gICAgICAgIEFTU0VSVChrZXkgIT0gZGVsZXRlZCgpKTsKLSAgICB9CiAgICAgZXhwbGlj
aXQgU2lnbmF0dXJlSGFzaChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCi0gICAgICAg
IDoga2V5KGRlbGV0ZWQoKSkKKyAgICAgICAgOiBrZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWUpCiAgICAgewogICAgIH0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2lnbmF0dXJlSGFz
aCYgcmhzKSBjb25zdCB7IHJldHVybiBlcXVhbCgqdGhpcywgcmhzKTsgfQogICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IFNpZ25hdHVyZUhhc2gmIGxocywgY29uc3QgU2lnbmF0dXJlSGFzaCYg
cmhzKSB7IHJldHVybiBsaHMua2V5ID09IHJocy5rZXkgfHwgKGxocy5rZXkgJiYgcmhzLmtleSAm
JiAqbGhzLmtleSA9PSAqcmhzLmtleSk7IH0KLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25z
dCBTaWduYXR1cmVIYXNoJiBzaWduYXR1cmUpIHsgcmV0dXJuIHNpZ25hdHVyZS5rZXktPmhhc2go
KTsgfQorICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNpZ25hdHVyZUhhc2gmIHNpZ25h
dHVyZSkgeyByZXR1cm4gc2lnbmF0dXJlLmtleSA/IHNpZ25hdHVyZS5rZXktPmhhc2goKSA6IDA7
IH0KICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9
IGZhbHNlOwotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVy
biBrZXkgPT0gZGVsZXRlZCgpOyB9CisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIGtleS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiB9OwogCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQpAQCAtMTY1LDE2ICsxNjAsMTcgQEAgY2xhc3MgU2ln
bmF0dXJlSW5mb3JtYXRpb24gewogcHVibGljOgogICAgIHN0YXRpYyBTaWduYXR1cmVJbmZvcm1h
dGlvbiYgc2luZ2xldG9uKCk7CiAKLSAgICBzdGF0aWMgc3RkOjpwYWlyPFNpZ25hdHVyZUluZGV4
LCBSZWY8U2lnbmF0dXJlPj4gV0FSTl9VTlVTRURfUkVUVVJOIGFkb3B0KFJlZjxTaWduYXR1cmU+
JiYpOworICAgIHN0YXRpYyBSZWY8U2lnbmF0dXJlPiBXQVJOX1VOVVNFRF9SRVRVUk4gYWRvcHQo
UmVmPFNpZ25hdHVyZT4mJik7CiAgICAgc3RhdGljIGNvbnN0IFNpZ25hdHVyZSYgV0FSTl9VTlVT
RURfUkVUVVJOIGdldChTaWduYXR1cmVJbmRleCk7CiAgICAgc3RhdGljIFNpZ25hdHVyZUluZGV4
IFdBUk5fVU5VU0VEX1JFVFVSTiBnZXQoY29uc3QgU2lnbmF0dXJlJik7CiAgICAgc3RhdGljIHZv
aWQgdHJ5Q2xlYW51cCgpOwogCiBwcml2YXRlOgotICAgIEhhc2hNYXA8V2FzbTo6U2lnbmF0dXJl
SGFzaCwgV2FzbTo6U2lnbmF0dXJlSW5kZXg+IG1fc2lnbmF0dXJlTWFwOwotICAgIEhhc2hNYXA8
V2FzbTo6U2lnbmF0dXJlSW5kZXgsIFJlZjxTaWduYXR1cmU+PiBtX2luZGV4TWFwOwotICAgIFNp
Z25hdHVyZUluZGV4IG1fbmV4dEluZGV4IHsgU2lnbmF0dXJlOjpmaXJzdFZhbGlkSW5kZXggfTsK
KyAgICBIYXNoU2V0PFdhc206OlNpZ25hdHVyZUhhc2g+IG1fc2lnbmF0dXJlU2V0OwogICAgIExv
Y2sgbV9sb2NrOworCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFNpZ25hdHVyZUluZm9y
bWF0aW9uKiB0aGVPbmU7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIHNpZ25hdHVyZUluZm9ybWF0aW9uRmxhZzsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpXYXNtCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0
dXJlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZUlu
bGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mMDc1MDJmMzU5OTkyZWFlNTNjMjI4MzBiNzdiZTMzMWM3Zjdm
OGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNp
Z25hdHVyZUlubGluZXMuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE4IFl1c3VrZSBTdXp1a2kgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPi4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJXYXNtU2lnbmF0dXJlLmgiCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKK25h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CisKK2lubGluZSBTaWduYXR1cmVJbmZvcm1h
dGlvbiYgU2lnbmF0dXJlSW5mb3JtYXRpb246OnNpbmdsZXRvbigpCit7CisgICAgc3RkOjpjYWxs
X29uY2Uoc2lnbmF0dXJlSW5mb3JtYXRpb25GbGFnLCBbXSAoKSB7CisgICAgICAgIHRoZU9uZSA9
IG5ldyBTaWduYXR1cmVJbmZvcm1hdGlvbjsKKyAgICB9KTsKKyAgICByZXR1cm4gKnRoZU9uZTsK
K30KKworaW5saW5lIGNvbnN0IFNpZ25hdHVyZSYgU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChT
aWduYXR1cmVJbmRleCBpbmRleCkKK3sKKyAgICBBU1NFUlQoaW5kZXggIT0gU2lnbmF0dXJlOjpp
bnZhbGlkSW5kZXgpOworICAgIHJldHVybiAqYml0d2lzZV9jYXN0PGNvbnN0IFNpZ25hdHVyZSo+
KGluZGV4KTsKK30KKworaW5saW5lIFNpZ25hdHVyZUluZGV4IFNpZ25hdHVyZUluZm9ybWF0aW9u
OjpnZXQoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpCit7CisgICAgaWYgKCFBU1NFUlRfRElT
QUJMRUQpIHsKKyAgICAgICAgU2lnbmF0dXJlSW5mb3JtYXRpb24mIGluZm8gPSBzaW5nbGV0b24o
KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhpbmZvLm1fbG9jayk7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQoaW5mbywgaW5mby5tX3NpZ25hdHVyZVNldC5jb250YWlucyhTaWduYXR1
cmVIYXNoIHsgbWFrZVJlZihjb25zdF9jYXN0PFNpZ25hdHVyZSY+KHNpZ25hdHVyZSkgfSkpOwor
ICAgIH0KKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PFNpZ25hdHVyZUluZGV4Pigmc2lnbmF0dXJl
KTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KKworI2VuZGlmIC8vIEVOQUJMRShX
RUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
VG9XYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcApp
bmRleCBmY2I5YjBjNjE4YWU2OWUxNTExYTdmYTRjZjNiZjA2NTJkNmIzMTJkLi4zNjRmN2M3NGJj
MTlmYzU1YmYyYWQ2OWJhZDQ5MGVjZWVlZTkxOWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNUb1dhc20uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ0NhbGxI
ZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCiAjaW5jbHVkZSAi
V2FzbUNhbGxpbmdDb252ZW50aW9uLmgiCisjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMu
aCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5oCmluZGV4IGQzOTMw
MDY5MTlkMjdhZDE3NDY5ZmUyNjk1ZGI4NDM4NDIzZDA4MmUuLjcyYTMwNjNhNGIzN2M1NzBjZjk0
MGQ3NmI1OWQxYzBjY2JjMDVlNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNl
IFdhc20gewogY2xhc3MgTW9kdWxlOwogc3RydWN0IE1vZHVsZUluZm9ybWF0aW9uOwogY2xhc3Mg
UGxhbjsKLXVzaW5nIFNpZ25hdHVyZUluZGV4ID0gdWludDMyX3Q7Cit1c2luZyBTaWduYXR1cmVJ
bmRleCA9IHVpbnQ2NF90OwogfQogCiBjbGFzcyBTeW1ib2xUYWJsZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAppbmRleCAxMjcwYzc5YjFjNDMxMGNjNWZjNjMw
MjlhZTgzYmZiMThjNWUwM2M2Li5lZTAwZmM4OGUwY2FmMjU0NGQ5ZDc5ZWNjOTNmNGUxMjMyNTM4
YjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCkBAIC00
MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKICNpbmNsdWRlICJXYXNtRXhj
ZXB0aW9uVHlwZS5oIgogI2luY2x1ZGUgIldhc21JbnN0YW5jZS5oIgorI2luY2x1ZGUgIldhc21T
aWduYXR1cmVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAK
QEAgLTMwMSw3ICszMDIsOCBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVu
dHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNKiB2bQogICAgICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIz
KTsKIAogICAgICAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdp
c3RlcnMgPj0gNCwgIldlIHJlbHkgb24gdGhpcyB3aXRoIHRoZSBjYWxsIGJlbG93LiIpOwotICAg
ICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUoY2FsbEZ1bmMpPihHUFJJbmZvOjphcmd1
bWVudEdQUjEsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHNpZ25hdHVyZUluZGV4KSwgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJ1ZmZlcikpOworICAgICAgICBzdGF0aWNfYXNzZXJ0
KHNpemVvZihTaWduYXR1cmVJbmRleCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgIkZvbGxvd2luZyBj
b2RlIGFzc3VtZXMgU2lnbmF0dXJlSW5kZXggaXMgNjRiaXQuIik7CisgICAgICAgIGppdC5zZXR1
cEFyZ3VtZW50czxkZWNsdHlwZShjYWxsRnVuYyk+KEdQUkluZm86OmFyZ3VtZW50R1BSMSwgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoc2lnbmF0dXJlSW5kZXgpLCBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoYnVmZmVyKSk7CiAgICAgICAgIGF1dG8gY2FsbCA9IGppdC5jYWxsKE9wZXJh
dGlvblB0clRhZyk7CiAgICAgICAgIGF1dG8gbm9FeGNlcHRpb24gPSBqaXQuZW1pdEV4Y2VwdGlv
bkNoZWNrKCp2bSwgQXNzZW1ibHlIZWxwZXJzOjpJbnZlcnRlZEV4Y2VwdGlvbkNoZWNrKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5j
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0
aW9uLmNwcAppbmRleCAwMmI0YzI0YzQyYmNjZjEyZjgyM2FiMDc5NzUzYjA1ZTVhM2FhNTRhLi41
ZGI5MjRmOGVjZmIwM2E3ZTBiYTZmNWQwODQ4MjJiMzQ3MTFiYWM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcApAQCAt
NDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCiAjaW5jbHVkZSAiV2FzbUZv
cm1hdC5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKKyNpbmNsdWRlICJXYXNtU2lnbmF0dXJl
SW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0VExTLmg+CiAjaW5jbHVkZSA8d3RmL1N5c3Rl
bVRyYWNpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IGQ3NDQxN2NiMWE0YzFjYTNiMmYz
OGVmYTIwNzdhNTM4YjE2NWVhMTIuLmU4Y2E1OGNiZjYwYWM0NmFiMjMwZWUzZGYwNGE1ZjRhMzAy
OGYyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJK
U1dlYkFzc2VtYmx5TGlua0Vycm9yLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1vZHVsZS5o
IgogI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiV2FzbVNpZ25hdHVyZS5o
IgorI2luY2x1ZGUgIldhc21TaWduYXR1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2ViQXNzZW1i
bHlGdW5jdGlvbi5oIgogI2luY2x1ZGUgPGxpbWl0cz4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3Bw
CmluZGV4IDM2ZjM3ODMwNmJlNzI3YzAyOTUzMWRiNDkyYThkMDA5MjcyOTFhNmUuLjQ0NGVmYmY4
YjRhN2EzNWY0MGYwMWNlYjRjNzllYzg0M2ViMTY0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5j
cHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIK
KyNpbmNsdWRlICJXYXNtU2lnbmF0dXJlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349139</attachid>
            <date>2018-09-07 05:35:27 -0700</date>
            <delta_ts>2018-09-07 05:53:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189401-20180907213526.patch</filename>
            <type>text/plain</type>
            <size>36309</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1Nzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OTQ2MDg3MWZlNjkwN2QyNzFhNGQwMDg2ZjIzNTRhODU4OTk4YmJkLi5hNWFhZGRkZTcyODZjMWVj
ZDUzZThiYmY4N2NiZjkyNTZiYTliYzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NyBAQAorMjAxOC0wOS0wNyAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtXZWJBc3NlbWJseV0gT3B0aW1pemUgSlMgdG8gV2FzbSBj
YWxsIGJ5IHVzaW5nIHBvaW50ZXIgb2YgU2lnbmF0dXJlIGFzIFNpZ25hdHVyZUluZGV4CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk0MDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaWduYXR1cmVJbmZv
cm1hdGlvbiBpcyBhIGdsb2JhbCByZXBvc2l0b3J5IGZvciBTaWduYXR1cmUgdG8gbWFrZSBTaWdu
YXR1cmUgYXRvbWljLgorICAgICAgICBJdCB0YWtlcyBSZWY8U2lnbmF0dXJlPiYmIGFuZCBnZW5l
cmF0ZXMgU2lnbmF0dXJlSW5kZXguIEFuZCB3ZSBnZXQgY29uc3QgU2lnbmF0dXJlJgorICAgICAg
ICBieSB1c2luZyB0aGlzIFNpZ25hdHVyZUluZGV4LiBIb3dldmVyLCBjb252ZXJ0aW5nIFNpZ25h
dHVyZUluZGV4IHRvIGNvbnN0IFNpZ25hdHVyZSYKKyAgICAgICAgYWx3YXlzIGxvb2tzIHVwIGEg
aGFzaCB0YWJsZS4gVGhpcyBpcyBjb3N0bHkgc2luY2UgSlMgdG8gV2FzbSBjYWxscyBhbHdheXMg
dXNlCisgICAgICAgIFNpZ25hdHVyZSYgdG8gY2hlY2sgdHlwZXMgb2YgYXJndW1lbnRzLgorCisg
ICAgICAgIEluc3RlYWQgb2YgdXNpbmcgdGhpcyBoYXNoIHRhYmxlLCB0aGlzIHBhdGNoIHVzZXMg
YSBwb2ludGVyIG9mIFNpZ25hdHVyZSBhcyBTaWduYXR1cmVJbmRleC4KKyAgICAgICAgVGhpcyBh
bGxvd3MgdXMgdG8gY29udmVydCBTaWduYXR1cmVJbmRleCB0byBTaWduYXR1cmUgYnkganVzdCBj
YXN0aW5nIGl0LgorCisgICAgICAgIFdlIGFsc28gb3B0aW1pemUgU2lnbmF0dXJlSW5mb3JtYXRp
b246OnNpbmdsZXRvbiBieSBtYWtpbmcgYW4gYWNjZXNzb3IgZnVuY3Rpb24gaW5saW5lZC4KKyAg
ICAgICAgQW5kIHdlIG1vdmUgUHJvdG9DYWxsRnJhbWU6OmluaXQgdG8gdGhlIGhlYWRlciBzaW5j
ZSBpdCdzIGp1c3Qgc2V0dGluZyB2YWx1ZXMuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ugc2lnbmlm
aWNhbnRseSBvcHRpbWl6ZXMgSlMgdG8gd2FzbSBjYWxscyAoMWU3IHRpbWVzKSBmcm9tIDYwMG1z
IHRvIDMyMG1zLgorCisgICAgICAgIEluIHRoZSBmdXR1cmUsIHdlIGNhbiByZW1vdmUgU2lnbmF0
dXJlSW5kZXggYnkgZGlyZWN0bHkgaGFuZGxpbmcgUmVmPFNpZ25hdHVyZT46IGFkZGluZworICAg
ICAgICBkZXJlZigpIG9mIFNpZ25hdHVyZSB3aGljaCB1bnJlZ2lzdGVycyBpdHNlbGYgZnJvbSBT
aWduYXR1cmVJbmZvcm1hdGlvbiBjYXJlZnVsbHkuIE9yIHdlIGNhbgorICAgICAgICBtYWtlIFNp
Z25hdHVyZUluZGV4IHVpbnQzMl90IGJ5IGludHJvZHVjaW5nIGEgbWVjaGFuaXNtIHNpbWlsYXIg
dG8gU3RydWN0dXJlSUQuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGludGVycHJl
dGVyL1Byb3RvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvdG9DYWxsRnJhbWU6Omlu
aXQpOiBEZWxldGVkLgorICAgICAgICAqIGludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmg6Cisg
ICAgICAgIChKU0M6OlByb3RvQ2FsbEZyYW1lOjppbml0KToKKyAgICAgICAgKiB3YXNtL1dhc21C
M0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRk
Q2FsbEluZGlyZWN0KToKKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAg
KiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6V2FzbVRvV2FzbUltcG9y
dGFibGVGdW5jdGlvbjo6b2Zmc2V0T2ZTaWduYXR1cmVJbmRleCk6CisgICAgICAgICogd2FzbS9X
YXNtRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAgICAgKiB3YXNtL1dhc21Nb2R1bGUuaDoKKyAgICAg
ICAgKiB3YXNtL1dhc21PTUdQbGFuLmNwcDoKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VUeXBlKToK
KyAgICAgICAgKiB3YXNtL1dhc21TaWduYXR1cmUuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpT
aWduYXR1cmVJbmZvcm1hdGlvbjo6YWRvcHQpOgorICAgICAgICAoSlNDOjpXYXNtOjpTaWduYXR1
cmVJbmZvcm1hdGlvbjo6dHJ5Q2xlYW51cCk6CisgICAgICAgIChKU0M6Oldhc206OlNpZ25hdHVy
ZUluZm9ybWF0aW9uOjpzaW5nbGV0b24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpT
aWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL1dhc21T
aWduYXR1cmUuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2lnbmF0dXJlOjppbmRleCBjb25zdCk6
CisgICAgICAgIChKU0M6Oldhc206OlNpZ25hdHVyZUhhc2g6OlNpZ25hdHVyZUhhc2gpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpTaWduYXR1cmVIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6U2lnbmF0dXJlSGFzaDo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpXYXNtOjpTaWduYXR1cmVIYXNoOjplbXB0eSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Oldhc206OlNpZ25hdHVyZUhhc2g6OmRlbGV0ZWQpOiBEZWxldGVkLgorICAgICAgICAqIHdh
c20vV2FzbVNpZ25hdHVyZUlubGluZXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcC4KKyAgICAgICAgKEpTQzo6V2FzbTo6
U2lnbmF0dXJlSW5mb3JtYXRpb246OnNpbmdsZXRvbik6CisgICAgICAgIChKU0M6Oldhc206OlNp
Z25hdHVyZUluZm9ybWF0aW9uOjpnZXQpOgorICAgICAgICAqIHdhc20vanMvSlNUb1dhc20uY3Bw
OgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5oOgorICAgICAgICAqIHdh
c20vanMvV2FzbVRvSlMuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9KUyk6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKiB3YXNtL2pz
L1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2Vt
Ymx5V3JhcHBlckZ1bmN0aW9uLmNwcDoKKwogMjAxOC0wOS0wNiAgWXVzdWtlIFN1enVraSAgPHl1
c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgogCiAgICAgICAgIFtXZWJBc3NlbWJseV0gT3B0aW1p
emUgSlMgdG8gV2FzbSBjYWxsIGJ5IHJlbW92aW5nIFZlY3RvciBhbGxvY2F0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUwYTAxOWE2NGU2NmM0YzdmNDg3MjRmMWY5OTNmZDY2
ZDhlNDZmOTcuLmY1YmIwNTVmZTZjNmQ4YzBiMjVkZGM2NzNiMmQ2MjM3NmI1MmIwYmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTM2LDYgKzE1MzYsNyBAQAogCQlBRDVDMzZF
QzFGNzVBRDdDMDAwQkNBQUYgLyogV2FzbVRvSlMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFERDA5QUVFMUY1RjYyM0YwMDEzMTNDMiAvKiBXYXNtVG9K
Uy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFE
NUMzNkVGMUY3QTI2M0EwMDBCQ0FBRiAvKiBXYXNtTWVtb3J5TW9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ1QzM2RUUxRjdBMjYyOTAwMEJDQUFG
IC8qIFdhc21NZW1vcnlNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQUQ3NDM4QzAxRTA0NTdBNDAwRkQwQzJBIC8qIFdhc21TaWduYXR1cmUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENzQzOEJG
MUUwNDU3OTIwMEZEMEMyQSAvKiBXYXNtU2lnbmF0dXJlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNEJBQTA3Q0VCODFGNDlBMjk2RTAyMjAzIC8q
IFdhc21TaWduYXR1cmVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMEE1RjQwM0YxMUM0RjU5OUNENTk2RDUgLyogV2FzbVNpZ25hdHVyZUlu
bGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlBRDdCNEIyRTFGQTNFMjk4MDBDOURGNzkgLyogV2FzbU5hbWVTZWN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDdCNEIyRDFGQTNFMjg2MDBD
OURGNzkgLyogV2FzbU5hbWVTZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQUQ4NkE5M0UxQUE0RDg4RDAwMkZFNzdGIC8qIFdlYWtHQ01h
cElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFEODZBOTNEMUFBNEQ4N0MwMDJGRTc3RiAvKiBXZWFrR0NNYXBJbmxpbmVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQUQ4RkYzOTgxRUI1QkRC
MjAwODdGRjgyIC8qIFdhc21JbmRleE9yTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ4RkYzOTUxRUI1QkQ4NTAwODdGRjgyIC8qIFdhc21JbmRl
eE9yTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0zNTk5LDcgKzM2MDAsNiBAQAogCQk2NUVBNzM2MjBCQUUzNUQxMDAxQkI1NjAgLyogQ29t
bW9uSWRlbnRpZmllcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENvbW1vbklkZW50aWZpZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVF
QTczNjMwQkFFMzVEMTAwMUJCNTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25JZGVudGlmaWVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2NUZCNTExNTE4NEVFOEY4MDBDMTJCNzAgLyogUHJvdG9DYWxsRnJh
bWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvdG9DYWxsRnJhbWUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjVGQjUxMTYxODRFRTlCQzAwQzEyQjcwIC8q
IFByb3RvQ2FsbEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFByb3RvQ2FsbEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkEzOENG
QTcxRTMyQjU4QjAwNjAyMDZGIC8qIEFzeW5jU3RhY2tUcmFjZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBc3luY1N0YWNrVHJhY2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2QTM4Q0ZBODFFMzJCNThCMDA2MDIwNkYgLyogQXN5bmNTdGFja1Ry
YWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jU3RhY2tUcmFjZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QUQyQ0I0QzE5QjkxNDAxMDAwNjU3MTkg
LyogRGVidWdnZXJFdmFsRW5hYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEZWJ1Z2dlckV2YWxFbmFibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00
MzY0LDYgKzQzNjQsNyBAQAogCQlBRDVDMzZGMDFGN0EyNkJGMDAwQkNBQUYgLyogV2FzbU1lbW9y
eU1vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbU1lbW9yeU1vZGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBRDc0MzhCRTFFMDQ1NzkyMDBGRDBDMkEgLyogV2FzbVNp
Z25hdHVyZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtU2ln
bmF0dXJlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ3NDM4QkYxRTA0NTc5
MjAwRkQwQzJBIC8qIFdhc21TaWduYXR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2FzbVNpZ25hdHVyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMEE1
RjQwM0YxMUM0RjU5OUNENTk2RDUgLyogV2FzbVNpZ25hdHVyZUlubGluZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbVNpZ25hdHVyZUlubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ3QjRCMkQxRkEzRTI4NjAwQzlERjc5IC8qIFdhc21OYW1l
U2VjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtTmFtZVNlY3Rp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ4NkE5M0QxQUE0RDg3QzAwMkZF
NzdGIC8qIFdlYWtHQ01hcElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2Vha0dDTWFwSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRDhE
RDZDRjFGNjcwODlGMDAwNEVCNTIgLyogSlNUb1dhc20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNUb1dh
c20uaDsgcGF0aCA9IGpzL0pTVG9XYXNtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01NTA4LDggKzU1MDksOCBAQAogCQkJCTc5NkRBQTJBMUU4OUNDRDYwMDVERjI0QSAvKiBDYWxs
ZWVCaXRzLmggKi8sCiAJCQkJMTQyOUQ4REIwRUQyMjA1QjAwQjg5NjE5IC8qIENhbGxGcmFtZS5j
cHAgKi8sCiAJCQkJMTQyOUQ4REMwRUQyMjA1QjAwQjg5NjE5IC8qIENhbGxGcmFtZS5oICovLAot
CQkJCUZFQTNCQkE3MjEyQjY1NTgwMEU5M0FEMSAvKiBDYWxsRnJhbWVJbmxpbmVzLmggKi8sCiAJ
CQkJQTdGODY5RUMwRjk1QzJFQzAwNTU4Njk3IC8qIENhbGxGcmFtZUNsb3N1cmUuaCAqLywKKwkJ
CQlGRUEzQkJBNzIxMkI2NTU4MDBFOTNBRDEgLyogQ2FsbEZyYW1lSW5saW5lcy5oICovLAogCQkJ
CTE0MjlEODVCMEVEMjE4RTkwMEI4OTYxOSAvKiBDTG9vcFN0YWNrLmNwcCAqLywKIAkJCQkxNEQ3
OTI2NDBEQUEwM0ZCMDAxQTlGMDUgLyogQ0xvb3BTdGFjay5oICovLAogCQkJCUE3QzFFQUVCMTc5
ODdBQjYwMDI5OURCMiAvKiBDTG9vcFN0YWNrSW5saW5lcy5oICovLApAQCAtNTUxOCw3ICs1NTE5
LDYgQEAKIAkJCQkxNDI5RDdEMzBFRDIxMjgyMDBCODk2MTkgLyogSW50ZXJwcmV0ZXIuY3BwICov
LAogCQkJCTE0MjlENzdCMEVEMjBENzMwMEI4OTYxOSAvKiBJbnRlcnByZXRlci5oICovLAogCQkJ
CUUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRlcnByZXRlcklubGluZXMuaCAqLywKLQkJ
CQk2NUZCNTExNjE4NEVFOUJDMDBDMTJCNzAgLyogUHJvdG9DYWxsRnJhbWUuY3BwICovLAogCQkJ
CTY1RkI1MTE1MTg0RUU4RjgwMEMxMkI3MCAvKiBQcm90b0NhbGxGcmFtZS5oICovLAogCQkJCTE0
OUIyNEZGMEQ4QUY2RDEwMDlDQjhDNyAvKiBSZWdpc3Rlci5oICovLAogCQkJCURDMTdFODEzMUM5
QzdGRDQwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuLmNwcCAqLywKQEAgLTYzNjIsNiArNjM2Miw3
IEBACiAJCQkJNTNGNDBFODQxRDU4Rjk3NzAwOTlBMUI2IC8qIFdhc21TZWN0aW9ucy5oICovLAog
CQkJCUFENzQzOEJFMUUwNDU3OTIwMEZEMEMyQSAvKiBXYXNtU2lnbmF0dXJlLmNwcCAqLywKIAkJ
CQlBRDc0MzhCRjFFMDQ1NzkyMDBGRDBDMkEgLyogV2FzbVNpZ25hdHVyZS5oICovLAorCQkJCTMw
QTVGNDAzRjExQzRGNTk5Q0Q1OTZENSAvKiBXYXNtU2lnbmF0dXJlSW5saW5lcy5oICovLAogCQkJ
CUUzQTA1MzE5MjEzNDJCNjcwMDIyRUMxNCAvKiBXYXNtU3RyZWFtaW5nUGFyc2VyLmNwcCAqLywK
IAkJCQlFM0EwNTMxNjIxMzQyQjY2MDAyMkVDMTQgLyogV2FzbVN0cmVhbWluZ1BhcnNlci5oICov
LAogCQkJCUFENUMzNkUzMUY2OUVDOEIwMDBCQ0FBRiAvKiBXYXNtVGFibGUuY3BwICovLApAQCAt
ODQ0NCw3ICs4NDQ1LDYgQEAKIAkJCQk5OURBMDBBMzFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRp
bnNfZ2VuZXJhdG9yLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJOTlEQTAwQTQxQkQ1OTkzMTAwRjQ1
NzVDIC8qIGJ1aWx0aW5zX21vZGVsLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJOTlEQTAwQTUxQkQ1
OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX3RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovLAotCQkJ
CUZFQTNCQkE4MjEyQjY1NTkwMEU5M0FEMSAvKiBDYWxsRnJhbWVJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MURFQTEzMjFCOUYzMTYzMDA2RDY1REQgLyogQnVpbHRpblV0aWxzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5RTcyOTQwQjE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTcxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZs
eS5oIGluIEhlYWRlcnMgKi8sCkBAIC04NDY5LDYgKzg0NjksNyBAQAogCQkJCTBGNjRCMjdBMUE3
OTU3QjIwMDZFNEU2NiAvKiBDYWxsRWRnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzk2REFBMkIx
RTg5Q0NENjAwNURGMjRBIC8qIENhbGxlZUJpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MjlE
OERFMEVEMjIwNUIwMEI4OTYxOSAvKiBDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZF
QTNCQkE4MjEyQjY1NTkwMEU5M0FEMSAvKiBDYWxsRnJhbWVJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk2MkVDOUJCNzFCN0VCMDdDMDAzMDNBRDEgLyogQ2FsbEZyYW1lU2h1ZmZsZURhdGEu
aCBpbiBIZWFkZXJzICovLAogCQkJCTYyRDc1NUQ3MUI4NEZCNEEwMDE4MDFGQSAvKiBDYWxsRnJh
bWVTaHVmZmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjExNEJDRjcxODAwODg1QjRG
IC8qIENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC04NzU5LDYgKzg3NjAsNyBAQAog
CQkJCUE3MDQ0N0VFMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkUzMThGRTAxQ0FDOTgyRjAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJu
YWxGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBODM2Mzg2MThEN0QwRUUwMDAwRUJD
QyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTA4NkJD
QTIxMjNERUZCMDAzRjI5MjkgLyogRW50cnlGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFE
MkVERkIxOTc5OUUzODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMzMDQ2MDcwRTFGNDk3RjAwMzIzMkNGIC8qIEVycm9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzAyRTkwRDBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCkBAIC05MDk1LDcgKzkwOTcsNiBAQAogCQkJCTk3ODgwMTQxMTQ3MUFEOTIwMDQx
QjAxNiAvKiBKU0RhdGVNYXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkE3RjY4ODE2MDQzMkQ0
MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
N0RGMTNDMUUyOTcxMTMwMDk1OTUxQiAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkUwODZCQ0EyMTIzREVGQjAwM0YyOTI5IC8qIEVudHJ5
RnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzg0RUU2MUFEREI3QUQwMDU1REUyQyAvKiBK
U0RvbGxhclZNLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkUzQzYxNDE2N0JBQkQ3MDA2RDc2MEEg
LyogSlNFeHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QjRBQ0FGMTQ4NEM5Q0UwMEIzOEEz
NiAvKiBKU0V4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCkBAIC05NjIyLDYgKzk2MjMsNyBA
QAogCQkJCUUzQTA1MzFDMjEzNDJCNjgwMDIyRUMxNCAvKiBXYXNtU2VjdGlvblBhcnNlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTNGNDBFODUxRDU4Rjk3NzAwOTlBMUI2IC8qIFdhc21TZWN0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ3NDM4QzAxRTA0NTdBNDAwRkQwQzJBIC8qIFdhc21T
aWduYXR1cmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTRCQUEwN0NFQjgxRjQ5QTI5NkUwMjIwMyAv
KiBXYXNtU2lnbmF0dXJlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTNBMDUzMUEyMTM0
MkI2ODAwMjJFQzE0IC8qIFdhc21TdHJlYW1pbmdQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUFENUMzNkU2MUY2OUVDOTEwMDBCQ0FBRiAvKiBXYXNtVGFibGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUyNTBEMkQyMUU4REEwNUEwMDI5QTkzMiAvKiBXYXNtVGh1bmtzLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBlMmJhZjFhNTc1NWZjN2U0ZjIzZjlk
MTRkOWRlMzQ5MWYzOTBhMThlLi4zODgzMDc2OGVmYmI2M2E0ZmRjM2ZiMzExYWIwNmViZDYzNmY2
NGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC01ODcsNyArNTg3LDYgQEAgaW50
ZXJwcmV0ZXIvQWJzdHJhY3RQQy5jcHAKIGludGVycHJldGVyL0NMb29wU3RhY2suY3BwCiBpbnRl
cnByZXRlci9DYWxsRnJhbWUuY3BwCiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKLWludGVy
cHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcAogaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAK
IGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAKaW5kZXggNTJiYzk4OGIxNzhi
N2I5NTMwMDhlMjYwNTU3MWNiMzMyYzQ3YThmNi4uZTAwOTQ0OTJmMjM2ZDZhYTg4ZWI3ZDMzYzVj
MDA2NzFkYmZlYzlmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1Byb3RvQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwCkBAIC0zMiwyMiArMzIsNCBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotdm9pZCBQcm90b0NhbGxGcmFtZTo6aW5pdChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
SlNPYmplY3QqIGNhbGxlZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIGludCBhcmdDb3VudEluY2x1ZGlu
Z1RoaXMsIEpTVmFsdWUqIG90aGVyQXJncykKLXsKLSAgICB0aGlzLT5hcmdzID0gb3RoZXJBcmdz
OwotICAgIHRoaXMtPnNldENvZGVCbG9jayhjb2RlQmxvY2spOwotICAgIHRoaXMtPnNldENhbGxl
ZShjYWxsZWUpOwotICAgIHRoaXMtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGFyZ0Nv
dW50SW5jbHVkaW5nVGhpcyk7Ci0gICAgaWYgKGNvZGVCbG9jayAmJiBhcmdDb3VudEluY2x1ZGlu
Z1RoaXMgPCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkKLSAgICAgICAgdGhpcy0+aGFzQXJp
dHlNaXNtYXRjaCA9IHRydWU7Ci0gICAgZWxzZQotICAgICAgICB0aGlzLT5oYXNBcml0eU1pc21h
dGNoID0gZmFsc2U7Ci0KLSAgICAvLyBSb3VuZCB1cCBhcmdDb3VudEluY2x1ZGluZ1RoaXMgdG8g
a2VlcCB0aGUgc3RhY2sgZnJhbWUgc2l6ZSBhbGlnbmVkLgotICAgIHNpemVfdCBwYWRkZWRBcmdz
Q291bnQgPSByb3VuZEFyZ3VtZW50Q291bnRUb0FsaWduRnJhbWUoYXJnQ291bnRJbmNsdWRpbmdU
aGlzKTsKLSAgICB0aGlzLT5zZXRQYWRkZWRBcmdDb3VudChwYWRkZWRBcmdzQ291bnQpOwotICAg
IHRoaXMtPmNsZWFyQ3VycmVudFZQQygpOwotICAgIHRoaXMtPnNldFRoaXNWYWx1ZSh0aGlzVmFs
dWUpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmgKaW5kZXggMTY3YjM5NDk5YzRmN2I4ZTNk
MDQwNzViZTg3OGFmMDM1MTdjMWZjYi4uNDg0ZDEwZjE3Njc4NDMzMjRkMGU2MGNkMDNjMzY1NDNl
YjMwMWJkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1By
b3RvQ2FsbEZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1By
b3RvQ2FsbEZyYW1lLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiUmVnaXN0ZXIuaCIKKyNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3JiaWRIZWFwQWxsb2NhdGlvbi5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTczLDQgKzc0
LDIyIEBAIHN0cnVjdCBKU19FWFBPUlRfUFJJVkFURSBQcm90b0NhbGxGcmFtZSB7CiAgICAgfQog
fTsKIAoraW5saW5lIHZvaWQgUHJvdG9DYWxsRnJhbWU6OmluaXQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEpTT2JqZWN0KiBjYWxsZWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBpbnQgYXJnQ291bnRJbmNs
dWRpbmdUaGlzLCBKU1ZhbHVlKiBvdGhlckFyZ3MpCit7CisgICAgdGhpcy0+YXJncyA9IG90aGVy
QXJnczsKKyAgICB0aGlzLT5zZXRDb2RlQmxvY2soY29kZUJsb2NrKTsKKyAgICB0aGlzLT5zZXRD
YWxsZWUoY2FsbGVlKTsKKyAgICB0aGlzLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhh
cmdDb3VudEluY2x1ZGluZ1RoaXMpOworICAgIGlmIChjb2RlQmxvY2sgJiYgYXJnQ291bnRJbmNs
dWRpbmdUaGlzIDwgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpCisgICAgICAgIHRoaXMtPmhh
c0FyaXR5TWlzbWF0Y2ggPSB0cnVlOworICAgIGVsc2UKKyAgICAgICAgdGhpcy0+aGFzQXJpdHlN
aXNtYXRjaCA9IGZhbHNlOworCisgICAgLy8gUm91bmQgdXAgYXJnQ291bnRJbmNsdWRpbmdUaGlz
IHRvIGtlZXAgdGhlIHN0YWNrIGZyYW1lIHNpemUgYWxpZ25lZC4KKyAgICBzaXplX3QgcGFkZGVk
QXJnc0NvdW50ID0gcm91bmRBcmd1bWVudENvdW50VG9BbGlnbkZyYW1lKGFyZ0NvdW50SW5jbHVk
aW5nVGhpcyk7CisgICAgdGhpcy0+c2V0UGFkZGVkQXJnQ291bnQocGFkZGVkQXJnc0NvdW50KTsK
KyAgICB0aGlzLT5jbGVhckN1cnJlbnRWUEMoKTsKKyAgICB0aGlzLT5zZXRUaGlzVmFsdWUodGhp
c1ZhbHVlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggM2U3Y2U2MGFkNzRiMDAyMDQ3
NGE4Njk5M2RhNzZlNzE4MGRjNmYyNC4uZTBiYzE1OTkzMjBjMGUyNzZkYTY1ODAzZmFkMmU0ZDMy
OThiYzA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKICNp
bmNsdWRlICJXYXNtT01HUGxhbi5oIgogI2luY2x1ZGUgIldhc21PcGNvZGVPcmlnaW4uaCIKKyNp
bmNsdWRlICJXYXNtU2lnbmF0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIldhc21UaHVua3MuaCIK
ICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC0xMjI5LDEz
ICsxMjMwLDEzIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KGNvbnN0IFNp
Z25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvCiAKICAgICAgICAgLy8gQ2hlY2sg
dGhhdCB0aGUgV2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbiBpcyBpbml0aWFsaXplZC4gV2Ug
dHJhcCBpZiBpdCBpc24ndC4gQW4gImludmFsaWQiIFNpZ25hdHVyZUluZGV4IGluZGljYXRlcyBp
dCdzIG5vdCBpbml0aWFsaXplZC4KICAgICAgICAgLy8gRklYTUU6IHdoZW4gd2UgaGF2ZSB0cmFw
IGhhbmRsZXJzLCB3ZSBjYW4ganVzdCBsZXQgdGhlIGNhbGwgZmFpbCBiZWNhdXNlIFNpZ25hdHVy
ZTo6aW52YWxpZEluZGV4IGlzIDAuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzcyMTAKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoV2FzbVRvV2FzbUltcG9y
dGFibGVGdW5jdGlvbjo6c2lnbmF0dXJlSW5kZXgpID09IHNpemVvZih1aW50MzJfdCksICJMb2Fk
IGNvZGVnZW4gYXNzdW1lcyBpMzIiKTsKLSAgICAgICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlU2ln
bmF0dXJlSW5kZXggPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3By
b2MsIExvYWQsIEludDMyLCBvcmlnaW4oKSwgY2FsbGFibGVGdW5jdGlvbiwgc2FmZUNhc3Q8aW50
MzJfdD4oT0JKRUNUX09GRlNFVE9GKFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb24sIHNpZ25h
dHVyZUluZGV4KSkpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihXYXNtVG9XYXNtSW1w
b3J0YWJsZUZ1bmN0aW9uOjpzaWduYXR1cmVJbmRleCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgIkxv
YWQgY29kZWdlbiBhc3N1bWVzIGk2NCIpOworICAgICAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVT
aWduYXR1cmVJbmRleCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1f
cHJvYywgTG9hZCwgSW50NjQsIG9yaWdpbigpLCBjYWxsYWJsZUZ1bmN0aW9uLCBzYWZlQ2FzdDxp
bnQzMl90PihXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjpvZmZzZXRPZlNpZ25hdHVyZUlu
ZGV4KCkpKTsKICAgICAgICAgewogICAgICAgICAgICAgQ2hlY2tWYWx1ZSogY2hlY2sgPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ssIG9yaWdpbigp
LAogICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJv
YywgRXF1YWwsIG9yaWdpbigpLAogICAgICAgICAgICAgICAgICAgICBjYWxsZWVTaWduYXR1cmVJ
bmRleCwKLSAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIFNpZ25hdHVyZTo6aW52YWxpZEluZGV4KSkpOwor
ICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0NjRWYWx1
ZT4obV9wcm9jLCBvcmlnaW4oKSwgU2lnbmF0dXJlOjppbnZhbGlkSW5kZXgpKSk7CiAKICAgICAg
ICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
QjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgICAgICB0aGlzLT5l
bWl0RXhjZXB0aW9uQ2hlY2soaml0LCBFeGNlcHRpb25UeXBlOjpOdWxsVGFibGVFbnRyeSk7CkBA
IC0xMjQ0LDcgKzEyNDUsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdChj
b25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3NpbwogCiAgICAgICAgIC8v
IENoZWNrIHRoZSBzaWduYXR1cmUgbWF0Y2hlcyB0aGUgdmFsdWUgd2UgZXhwZWN0LgogICAgICAg
ICB7Ci0gICAgICAgICAgICBFeHByZXNzaW9uVHlwZSBleHBlY3RlZFNpZ25hdHVyZUluZGV4ID0g
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCks
IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJlKSk7CisgICAgICAgICAgICBFeHBy
ZXNzaW9uVHlwZSBleHBlY3RlZFNpZ25hdHVyZUluZGV4ID0gbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxDb25zdDY0VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIFNpZ25hdHVyZUluZm9ybWF0aW9u
OjpnZXQoc2lnbmF0dXJlKSk7CiAgICAgICAgICAgICBDaGVja1ZhbHVlKiBjaGVjayA9IG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2luKCks
CiAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9j
LCBOb3RFcXVhbCwgb3JpZ2luKCksIGNhbGxlZVNpZ25hdHVyZUluZGV4LCBleHBlY3RlZFNpZ25h
dHVyZUluZGV4KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CQlFQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNw
cAppbmRleCA0M2M4ZjU2MmFmYTFjMzYzM2E3ZTZjNjFmNDA5MjJlYzBiZTk3MjEzLi4yMmE2NWMz
MTEwY2ZjOGNkYjk0Y2QxMDVmYjZkN2MzZTUzZTc3MGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiV2Fz
bUZhdWx0U2lnbmFsSGFuZGxlci5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKICNpbmNsdWRl
ICJXYXNtTW9kdWxlUGFyc2VyLmgiCisjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIK
ICNpbmNsdWRlICJXYXNtVGllclVwQ291bnQuaCIKICNpbmNsdWRlICJXYXNtVmFsaWRhdGUuaCIK
ICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZv
cm1hdC5oCmluZGV4IGU0M2Y0ZWQ5MzYxNjdmZjI5MzhkODM3YTBjZTA4OGQ0M2QyMGE0ZTYuLjQ2
MzIzOTRkYjJjZTNjMjU4ZmVkZDc2ZWEwMTNlYmE1ZDE3NWI3MzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKQEAgLTI3Niw2ICsyNzYsNyBAQCBzdHJ1Y3QgSW50ZXJu
YWxGdW5jdGlvbiB7CiAvLyBtZWFudCBhcyBmYXN0IGxvb2t1cCB0YWJsZXMgZm9yIHRoZXNlIG9w
Y29kZXMgYW5kIGRvIG5vdCBvd24gY29kZS4KIHN0cnVjdCBXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1
bmN0aW9uIHsKICAgICB1c2luZyBMb2FkTG9jYXRpb24gPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
V2FzbUVudHJ5UHRyVGFnPio7CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNpZ25hdHVy
ZUluZGV4KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFdhc21Ub1dhc21JbXBvcnRhYmxlRnVu
Y3Rpb24sIHNpZ25hdHVyZUluZGV4KTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZF
bnRyeXBvaW50TG9hZExvY2F0aW9uKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFdhc21Ub1dh
c21JbXBvcnRhYmxlRnVuY3Rpb24sIGVudHJ5cG9pbnRMb2FkTG9jYXRpb24pOyB9CiAKICAgICAv
LyBGSVhNRTogUGFjayBzaWduYXR1cmUgaW5kZXggYW5kIGNvZGUgcG9pbnRlciBpbnRvIG9uZSA2
NC1iaXQgdmFsdWUuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NTUxMT4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVu
Y3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBh
cnNlci5oCmluZGV4IDg3MzVjZThlNmFjY2IzOGU4NGM4NGI3YjhlMTFkNTMzNzlhYjhkYmUuLjA4
OGU3MjhjZTRjYzU0Y2UzYzYwNmI0MGYyNTVhNjA5ZDU3YjNiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCiAjaW5jbHVkZSAiV2FzbVBhcnNlci5oIgorI2lu
Y2x1ZGUgIldhc21TaWduYXR1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4K
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21Nb2R1bGUuaAppbmRleCBmYTM2YTY5YjgwMzkxNWQ2MWMzOTZmYzFiM2Y5YmM3NjQy
MDBlNjMyLi42NTJkZGQzN2RiOGU1Nzg4ZDA1ODc1ZDJjMmRmYzdmYWRjOWU3MzY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5oCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVj
dCBDb250ZXh0Owogc3RydWN0IE1vZHVsZUluZm9ybWF0aW9uOwogY2xhc3MgUGxhbjsKIAotdXNp
bmcgU2lnbmF0dXJlSW5kZXggPSB1aW50MzJfdDsKK3VzaW5nIFNpZ25hdHVyZUluZGV4ID0gdWlu
dDY0X3Q7CiAKIGNsYXNzIE1vZHVsZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNb2R1
bGU+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21PTUdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNw
cAppbmRleCA5ZTBjNGE1NjY2ZTQ0ZTBlYWNjMjMxMmFiYmI3NjU0NTNiODc5ZjQ4Li5lMzFiNDcx
Yjc5MjUyZGNlY2U2N2Y2ZmFmZGYwNmI3MTQ4MzMyN2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiV2Fz
bU1hY2hpbmVUaHJlYWRzLmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgogI2luY2x1ZGUgIldh
c21OYW1lU2VjdGlvbi5oIgorI2luY2x1ZGUgIldhc21TaWduYXR1cmVJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiV2FzbVZhbGlkYXRlLmgiCiAjaW5jbHVkZSAiV2FzbVdvcmtsaXN0LmgiCiAjaW5jbHVk
ZSA8d3RmL0RhdGFMb2cuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TZWN0aW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21T
ZWN0aW9uUGFyc2VyLmNwcAppbmRleCA5YTliYWNiNjdkZWQyNTA0NTM1ZDhjMmRlNWM1ZWQ4MzNk
ZWYxNjAyLi5hZTg3MjVkMDc5Y2MzYzljODgyMDA0NzBkYzBiZmY3YmU3NjQ0ZmNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiV2FzbU5hbWVTZWN0aW9uUGFyc2VyLmgiCiAjaW5jbHVk
ZSAiV2FzbU9wcy5oIgogI2luY2x1ZGUgIldhc21TZWN0aW9ucy5oIgorI2luY2x1ZGUgIldhc21T
aWduYXR1cmVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAK
QEAgLTc1LDggKzc2LDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZVR5cGUoKSAtPiBQYXJ0
aWFsUmVzdWx0CiAgICAgICAgICAgICByZXR1cm5UeXBlID0gVHlwZTo6Vm9pZDsKICAgICAgICAg
c2lnbmF0dXJlLT5yZXR1cm5UeXBlKCkgPSByZXR1cm5UeXBlOwogCi0gICAgICAgIHN0ZDo6cGFp
cjxTaWduYXR1cmVJbmRleCwgUmVmPFNpZ25hdHVyZT4+IHJlc3VsdCA9IFNpZ25hdHVyZUluZm9y
bWF0aW9uOjphZG9wdChXVEZNb3ZlKHNpZ25hdHVyZSkpOwotICAgICAgICBtX2luZm8tPnVzZWRT
aWduYXR1cmVzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKHJlc3VsdC5zZWNvbmQpKTsKKyAgICAg
ICAgbV9pbmZvLT51c2VkU2lnbmF0dXJlcy51bmNoZWNrZWRBcHBlbmQoU2lnbmF0dXJlSW5mb3Jt
YXRpb246OmFkb3B0KFdURk1vdmUoc2lnbmF0dXJlKSkpOwogICAgIH0KICAgICByZXR1cm4geyB9
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVy
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAppbmRl
eCA2YTQyZDUxNzE5NWVhNGZiNjFkOTJiMTBjOGNjMzc3MzY3YzJlYjlkLi4yOWNlMjEzNzUyMTNj
MzE0NTVhYTMzYTI5NWU4Zjg2ZTRkOWI0ZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtU2lnbmF0dXJlLmNwcApAQCAtNDEsNiArNDEsOSBAQCBzdGF0aWMgY29uc3QgYm9v
bCB2ZXJib3NlID0gZmFsc2U7CiB9CiB9CiAKK1NpZ25hdHVyZUluZm9ybWF0aW9uKiBTaWduYXR1
cmVJbmZvcm1hdGlvbjo6dGhlT25lIHsgbnVsbHB0ciB9Oworc3RkOjpvbmNlX2ZsYWcgU2lnbmF0
dXJlSW5mb3JtYXRpb246OnNpZ25hdHVyZUluZm9ybWF0aW9uRmxhZzsKKwogU3RyaW5nIFNpZ25h
dHVyZTo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIFN0cmluZyByZXN1bHQobWFrZVN0cmluZyhy
ZXR1cm5UeXBlKCkpKTsKQEAgLTgzLDYwICs4NiwyMiBAQCBTaWduYXR1cmVJbmZvcm1hdGlvbjo6
U2lnbmF0dXJlSW5mb3JtYXRpb24oKQogewogfQogCi1TaWduYXR1cmVJbmZvcm1hdGlvbiYgU2ln
bmF0dXJlSW5mb3JtYXRpb246OnNpbmdsZXRvbigpCi17Ci0gICAgc3RhdGljIFNpZ25hdHVyZUlu
Zm9ybWF0aW9uKiB0aGVPbmU7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIHNpZ25hdHVyZUlu
Zm9ybWF0aW9uRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShzaWduYXR1cmVJbmZvcm1hdGlvbkZs
YWcsIFtdICgpIHsKLSAgICAgICAgdGhlT25lID0gbmV3IFNpZ25hdHVyZUluZm9ybWF0aW9uOwot
ICAgIH0pOwotCi0gICAgcmV0dXJuICp0aGVPbmU7Ci19Ci0KLXN0ZDo6cGFpcjxTaWduYXR1cmVJ
bmRleCwgUmVmPFNpZ25hdHVyZT4+IFNpZ25hdHVyZUluZm9ybWF0aW9uOjphZG9wdChSZWY8U2ln
bmF0dXJlPiYmIHNpZ25hdHVyZSkKK1JlZjxTaWduYXR1cmU+IFNpZ25hdHVyZUluZm9ybWF0aW9u
OjphZG9wdChSZWY8U2lnbmF0dXJlPiYmIHNpZ25hdHVyZSkKIHsKICAgICBTaWduYXR1cmVJbmZv
cm1hdGlvbiYgaW5mbyA9IHNpbmdsZXRvbigpOwogICAgIExvY2tIb2xkZXIgbG9jayhpbmZvLm1f
bG9jayk7CiAKLSAgICBTaWduYXR1cmVJbmRleCBuZXh0VmFsdWUgPSBpbmZvLm1fbmV4dEluZGV4
OwotICAgIGF1dG8gYWRkUmVzdWx0ID0gaW5mby5tX3NpZ25hdHVyZU1hcC5hZGQoU2lnbmF0dXJl
SGFzaCB7IHNpZ25hdHVyZS5wdHIoKSB9LCBuZXh0VmFsdWUpOworICAgIFNpZ25hdHVyZUluZGV4
IG5leHRWYWx1ZSA9IHNpZ25hdHVyZS0+aW5kZXgoKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IGlu
Zm8ubV9zaWduYXR1cmVTZXQuYWRkKFNpZ25hdHVyZUhhc2ggeyBzaWduYXR1cmUuY29weVJlZigp
IH0pOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICArK2luZm8ubV9u
ZXh0SW5kZXg7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZm8ubV9uZXh0SW5kZXggPiBuZXh0
VmFsdWUpOyAvLyBjcmFzaCBvbiBvdmVyZmxvdy4KLSAgICAgICAgQVNTRVJUKG5leHRWYWx1ZSA9
PSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKICAgICAgICAgaWYgKFdhc21TaWduYXR1cmVJ
bnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2dMbigiQWRvcHQgbmV3IHNpZ25h
dHVyZSAiLCBzaWduYXR1cmUuZ2V0KCksICIgd2l0aCBpbmRleCAiLCBhZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlLCAiIGhhc2g6ICIsIHNpZ25hdHVyZS0+aGFzaCgpKTsKLQotICAgICAgICBhdXRv
IGFkZFJlc3VsdCA9IGluZm8ubV9pbmRleE1hcC5hZGQobmV4dFZhbHVlLCBzaWduYXR1cmUuY29w
eVJlZigpKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOwot
ICAgICAgICBBU1NFUlQoaW5mby5tX2luZGV4TWFwLnNpemUoKSA9PSBpbmZvLm1fc2lnbmF0dXJl
TWFwLnNpemUoKSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihuZXh0VmFsdWUsIFdU
Rk1vdmUoc2lnbmF0dXJlKSk7CisgICAgICAgICAgICBkYXRhTG9nTG4oIkFkb3B0IG5ldyBzaWdu
YXR1cmUgIiwgc2lnbmF0dXJlLmdldCgpLCAiIHdpdGggaW5kZXggIiwgbmV4dFZhbHVlLCAiIGhh
c2g6ICIsIHNpZ25hdHVyZS0+aGFzaCgpKTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoc2lnbmF0
dXJlKTsKICAgICB9CisgICAgbmV4dFZhbHVlID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT5rZXktPmlu
ZGV4KCk7CiAgICAgaWYgKFdhc21TaWduYXR1cmVJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAg
ZGF0YUxvZ0xuKCJFeGlzdGluZyBzaWduYXR1cmUgIiwgc2lnbmF0dXJlLmdldCgpLCAiIHdpdGgg
aW5kZXggIiwgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSwgIiBoYXNoOiAiLCBzaWduYXR1cmUt
Pmhhc2goKSk7Ci0gICAgQVNTRVJUKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgIT0gU2lnbmF0
dXJlOjppbnZhbGlkSW5kZXgpOwotICAgIEFTU0VSVChpbmZvLm1faW5kZXhNYXAuY29udGFpbnMo
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSkpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLCBSZWY8U2lnbmF0dXJlPigqaW5mby5tX2luZGV4TWFw
LmdldChhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKSkpOwotfQotCi1jb25zdCBTaWduYXR1cmUm
IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoU2lnbmF0dXJlSW5kZXggaW5kZXgpCi17Ci0gICAg
QVNTRVJUKGluZGV4ICE9IFNpZ25hdHVyZTo6aW52YWxpZEluZGV4KTsKLSAgICBTaWduYXR1cmVJ
bmZvcm1hdGlvbiYgaW5mbyA9IHNpbmdsZXRvbigpOwotICAgIExvY2tIb2xkZXIgbG9jayhpbmZv
Lm1fbG9jayk7Ci0KLSAgICByZXR1cm4gKmluZm8ubV9pbmRleE1hcC5nZXQoaW5kZXgpOwotfQot
Ci1TaWduYXR1cmVJbmRleCBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KGNvbnN0IFNpZ25hdHVy
ZSYgc2lnbmF0dXJlKQotewotICAgIFNpZ25hdHVyZUluZm9ybWF0aW9uJiBpbmZvID0gc2luZ2xl
dG9uKCk7Ci0gICAgTG9ja0hvbGRlciBsb2NrKGluZm8ubV9sb2NrKTsKLQotICAgIGF1dG8gcmVz
dWx0ID0gaW5mby5tX3NpZ25hdHVyZU1hcC5nZXQoU2lnbmF0dXJlSGFzaCB7ICZzaWduYXR1cmUg
fSk7Ci0gICAgQVNTRVJUKHJlc3VsdCAhPSBTaWduYXR1cmU6OmludmFsaWRJbmRleCk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgZGF0YUxvZ0xuKCJFeGlzdGluZyBzaWduYXR1cmUgIiwg
c2lnbmF0dXJlLmdldCgpLCAiIHdpdGggaW5kZXggIiwgbmV4dFZhbHVlLCAiIGhhc2g6ICIsIHNp
Z25hdHVyZS0+aGFzaCgpKTsKKyAgICByZXR1cm4gUmVmPFNpZ25hdHVyZT4oKmFkZFJlc3VsdC5p
dGVyYXRvci0+a2V5KTsKIH0KIAogdm9pZCBTaWduYXR1cmVJbmZvcm1hdGlvbjo6dHJ5Q2xlYW51
cCgpCkBAIC0xNDQsMjQgKzEwOSwxMCBAQCB2b2lkIFNpZ25hdHVyZUluZm9ybWF0aW9uOjp0cnlD
bGVhbnVwKCkKICAgICBTaWduYXR1cmVJbmZvcm1hdGlvbiYgaW5mbyA9IHNpbmdsZXRvbigpOwog
ICAgIExvY2tIb2xkZXIgbG9jayhpbmZvLm1fbG9jayk7CiAKLSAgICBWZWN0b3I8c3RkOjpwYWly
PFNpZ25hdHVyZUluZGV4LCBTaWduYXR1cmUqPj4gdG9SZW1vdmU7Ci0gICAgZm9yIChjb25zdCBh
dXRvJiBwYWlyIDogaW5mby5tX2luZGV4TWFwKSB7Ci0gICAgICAgIGNvbnN0IFJlZjxTaWduYXR1
cmU+JiBzaWduYXR1cmUgPSBwYWlyLnZhbHVlOwotICAgICAgICBpZiAoc2lnbmF0dXJlLT5yZWZD
b3VudCgpID09IDEpIHsKLSAgICAgICAgICAgIC8vIFdlJ3JlIHRoZSBvbmx5IG93bmVyLgotICAg
ICAgICAgICAgdG9SZW1vdmUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHBhaXIua2V5LCBzaWduYXR1
cmUucHRyKCkpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIg
OiB0b1JlbW92ZSkgewotICAgICAgICBib29sIHJlbW92ZWQgPSBpbmZvLm1fc2lnbmF0dXJlTWFw
LnJlbW92ZShTaWduYXR1cmVIYXNoIHsgcGFpci5zZWNvbmQgfSk7Ci0gICAgICAgIEFTU0VSVF9V
TlVTRUQocmVtb3ZlZCwgcmVtb3ZlZCk7Ci0gICAgICAgIHJlbW92ZWQgPSBpbmZvLm1faW5kZXhN
YXAucmVtb3ZlKHBhaXIuZmlyc3QpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWQsIHJl
bW92ZWQpOwotICAgIH0KLSAgICBpZiAoaW5mby5tX3NpZ25hdHVyZU1hcC5pc0VtcHR5KCkpIHsK
LSAgICAgICAgQVNTRVJUKGluZm8ubV9pbmRleE1hcC5pc0VtcHR5KCkpOwotICAgICAgICBpbmZv
Lm1fbmV4dEluZGV4ID0gU2lnbmF0dXJlOjpmaXJzdFZhbGlkSW5kZXg7Ci0gICAgfQorICAgIGlu
Zm8ubV9zaWduYXR1cmVTZXQucmVtb3ZlSWYoWyZdIChhdXRvJiBoYXNoKSB7CisgICAgICAgIGNv
bnN0IGF1dG8mIHNpZ25hdHVyZSA9IGhhc2gua2V5OworICAgICAgICByZXR1cm4gc2lnbmF0dXJl
LT5yZWZDb3VudCgpID09IDE7CisgICAgfSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpX
YXNtCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmgKaW5kZXggOWY0
OWNjYjE0NTY4ZDIwMWYxZjhhZGNlZWZiMGMxMzMxZWI3N2YwYi4uNmRiMjhjM2YxOTQyMmU0YzY4
YTMyODBjMTY1YzcxMzhjNjcyMzVmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVNpZ25hdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21TaWduYXR1cmUuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPGNzdHJpbmc+CiAjaW5j
bHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oPgpAQCAtNDcsNyArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBX
YXNtIHsKIAogdXNpbmcgU2lnbmF0dXJlQXJnQ291bnQgPSB1aW50MzJfdDsKLXVzaW5nIFNpZ25h
dHVyZUluZGV4ID0gdWludDMyX3Q7Cit1c2luZyBTaWduYXR1cmVJbmRleCA9IHVpbnQ2NF90Owog
CiBjbGFzcyBTaWduYXR1cmUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2lnbmF0dXJl
PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC04MSw2ICs4Miw3IEBAIGNsYXNz
IFNpZ25hdHVyZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaWduYXR1cmU+IHsKICAg
ICAgICAgcmV0dXJuICpzdG9yYWdlKHJldHVybkNvdW50KCkgKyBpKTsKICAgICB9CiAgICAgVHlw
ZSBhcmd1bWVudChTaWduYXR1cmVBcmdDb3VudCBpKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0
PFNpZ25hdHVyZSo+KHRoaXMpLT5hcmd1bWVudChpKTsgfQorICAgIFNpZ25hdHVyZUluZGV4IGlu
ZGV4KCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PFNpZ25hdHVyZUluZGV4Pih0aGlzKTsg
fQogCiAgICAgV1RGOjpTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKICAgICB2b2lkIGR1bXAoV1RG
OjpQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKQEAgLTExMSwyOCArMTEzLDIxIEBAIGNsYXNzIFNp
Z25hdHVyZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaWduYXR1cmU+IHsKIH07CiAK
IHN0cnVjdCBTaWduYXR1cmVIYXNoIHsKLSAgICBjb25zdCBTaWduYXR1cmUqIGtleTsKLSAgICBz
dGF0aWMgY29uc3QgU2lnbmF0dXJlKiBlbXB0eSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBz
dGF0aWMgY29uc3QgU2lnbmF0dXJlKiBkZWxldGVkKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBTaWduYXR1cmUqPigxKTsgfQotICAgIFNpZ25hdHVyZUhhc2goKQotICAgICAgICA6
IGtleShlbXB0eSgpKQorICAgIFJlZlB0cjxTaWduYXR1cmU+IGtleSB7IG51bGxwdHIgfTsKKyAg
ICBTaWduYXR1cmVIYXNoKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0IFNpZ25hdHVyZUhhc2go
UmVmPFNpZ25hdHVyZT4mJiBrZXkpCisgICAgICAgIDoga2V5KFdURk1vdmUoa2V5KSkKICAgICB7
CiAgICAgfQotICAgIGV4cGxpY2l0IFNpZ25hdHVyZUhhc2goY29uc3QgU2lnbmF0dXJlKiBrZXkp
Ci0gICAgICAgIDoga2V5KGtleSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChrZXkgIT0gZW1wdHko
KSk7Ci0gICAgICAgIEFTU0VSVChrZXkgIT0gZGVsZXRlZCgpKTsKLSAgICB9CiAgICAgZXhwbGlj
aXQgU2lnbmF0dXJlSGFzaChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCi0gICAgICAg
IDoga2V5KGRlbGV0ZWQoKSkKKyAgICAgICAgOiBrZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWUpCiAgICAgewogICAgIH0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2lnbmF0dXJlSGFz
aCYgcmhzKSBjb25zdCB7IHJldHVybiBlcXVhbCgqdGhpcywgcmhzKTsgfQogICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IFNpZ25hdHVyZUhhc2gmIGxocywgY29uc3QgU2lnbmF0dXJlSGFzaCYg
cmhzKSB7IHJldHVybiBsaHMua2V5ID09IHJocy5rZXkgfHwgKGxocy5rZXkgJiYgcmhzLmtleSAm
JiAqbGhzLmtleSA9PSAqcmhzLmtleSk7IH0KLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25z
dCBTaWduYXR1cmVIYXNoJiBzaWduYXR1cmUpIHsgcmV0dXJuIHNpZ25hdHVyZS5rZXktPmhhc2go
KTsgfQorICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNpZ25hdHVyZUhhc2gmIHNpZ25h
dHVyZSkgeyByZXR1cm4gc2lnbmF0dXJlLmtleSA/IHNpZ25hdHVyZS5rZXktPmhhc2goKSA6IDA7
IH0KICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9
IGZhbHNlOwotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVy
biBrZXkgPT0gZGVsZXRlZCgpOyB9CisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIGtleS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiB9OwogCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQpAQCAtMTY1LDE2ICsxNjAsMTcgQEAgY2xhc3MgU2ln
bmF0dXJlSW5mb3JtYXRpb24gewogcHVibGljOgogICAgIHN0YXRpYyBTaWduYXR1cmVJbmZvcm1h
dGlvbiYgc2luZ2xldG9uKCk7CiAKLSAgICBzdGF0aWMgc3RkOjpwYWlyPFNpZ25hdHVyZUluZGV4
LCBSZWY8U2lnbmF0dXJlPj4gV0FSTl9VTlVTRURfUkVUVVJOIGFkb3B0KFJlZjxTaWduYXR1cmU+
JiYpOworICAgIHN0YXRpYyBSZWY8U2lnbmF0dXJlPiBXQVJOX1VOVVNFRF9SRVRVUk4gYWRvcHQo
UmVmPFNpZ25hdHVyZT4mJik7CiAgICAgc3RhdGljIGNvbnN0IFNpZ25hdHVyZSYgV0FSTl9VTlVT
RURfUkVUVVJOIGdldChTaWduYXR1cmVJbmRleCk7CiAgICAgc3RhdGljIFNpZ25hdHVyZUluZGV4
IFdBUk5fVU5VU0VEX1JFVFVSTiBnZXQoY29uc3QgU2lnbmF0dXJlJik7CiAgICAgc3RhdGljIHZv
aWQgdHJ5Q2xlYW51cCgpOwogCiBwcml2YXRlOgotICAgIEhhc2hNYXA8V2FzbTo6U2lnbmF0dXJl
SGFzaCwgV2FzbTo6U2lnbmF0dXJlSW5kZXg+IG1fc2lnbmF0dXJlTWFwOwotICAgIEhhc2hNYXA8
V2FzbTo6U2lnbmF0dXJlSW5kZXgsIFJlZjxTaWduYXR1cmU+PiBtX2luZGV4TWFwOwotICAgIFNp
Z25hdHVyZUluZGV4IG1fbmV4dEluZGV4IHsgU2lnbmF0dXJlOjpmaXJzdFZhbGlkSW5kZXggfTsK
KyAgICBIYXNoU2V0PFdhc206OlNpZ25hdHVyZUhhc2g+IG1fc2lnbmF0dXJlU2V0OwogICAgIExv
Y2sgbV9sb2NrOworCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFNpZ25hdHVyZUluZm9y
bWF0aW9uKiB0aGVPbmU7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIHNpZ25hdHVyZUluZm9ybWF0aW9uRmxhZzsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpXYXNtCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0
dXJlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZUlu
bGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kMWRiMGE4Y2RhZDFhNjg4OGJlODcwNGI4ODEyZjczZDNhNWZh
MDI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNp
Z25hdHVyZUlubGluZXMuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE4IFl1c3VrZSBTdXp1a2kgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPi4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJXYXNtU2lnbmF0dXJlLmgiCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKK25h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CisKK2lubGluZSBTaWduYXR1cmVJbmZvcm1h
dGlvbiYgU2lnbmF0dXJlSW5mb3JtYXRpb246OnNpbmdsZXRvbigpCit7CisgICAgc3RkOjpjYWxs
X29uY2Uoc2lnbmF0dXJlSW5mb3JtYXRpb25GbGFnLCBbXSAoKSB7CisgICAgICAgIHRoZU9uZSA9
IG5ldyBTaWduYXR1cmVJbmZvcm1hdGlvbjsKKyAgICB9KTsKKyAgICByZXR1cm4gKnRoZU9uZTsK
K30KKworaW5saW5lIGNvbnN0IFNpZ25hdHVyZSYgU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChT
aWduYXR1cmVJbmRleCBpbmRleCkKK3sKKyAgICBBU1NFUlQoaW5kZXggIT0gU2lnbmF0dXJlOjpp
bnZhbGlkSW5kZXgpOworICAgIHJldHVybiAqYml0d2lzZV9jYXN0PGNvbnN0IFNpZ25hdHVyZSo+
KGluZGV4KTsKK30KKworaW5saW5lIFNpZ25hdHVyZUluZGV4IFNpZ25hdHVyZUluZm9ybWF0aW9u
OjpnZXQoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpCit7CisgICAgaWYgKCFBU1NFUlRfRElT
QUJMRUQpIHsKKyAgICAgICAgU2lnbmF0dXJlSW5mb3JtYXRpb24mIGluZm8gPSBzaW5nbGV0b24o
KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhpbmZvLm1fbG9jayk7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQoaW5mbywgaW5mby5tX3NpZ25hdHVyZVNldC5jb250YWlucyhTaWduYXR1
cmVIYXNoIHsgbWFrZVJlZihjb25zdF9jYXN0PFNpZ25hdHVyZSY+KHNpZ25hdHVyZSkpIH0pKTsK
KyAgICB9CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxTaWduYXR1cmVJbmRleD4oJnNpZ25hdHVy
ZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1RvV2FzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAK
aW5kZXggZmNiOWIwYzYxOGFlNjllMTUxMWE3ZmE0Y2YzYmYwNjUyZDZiMzEyZC4uMzY0ZjdjNzRi
YzE5ZmM1NWJmMmFkNjliYWQ0OTBlY2VlZWU5MTlkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTVG9XYXNtLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNDYWxs
SGVscGVycy5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgogI2luY2x1ZGUg
Ildhc21DYWxsaW5nQ29udmVudGlvbi5oIgorI2luY2x1ZGUgIldhc21TaWduYXR1cmVJbmxpbmVz
LmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaAppbmRleCBkMzkz
MDA2OTE5ZDI3YWQxNzQ2OWZlMjY5NWRiODQzODQyM2QwODJlLi43MmEzMDYzYTRiMzdjNTcwY2Y5
NDBkNzZiNTlkMWMwY2NiYzA1ZTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFj
ZSBXYXNtIHsKIGNsYXNzIE1vZHVsZTsKIHN0cnVjdCBNb2R1bGVJbmZvcm1hdGlvbjsKIGNsYXNz
IFBsYW47Ci11c2luZyBTaWduYXR1cmVJbmRleCA9IHVpbnQzMl90OwordXNpbmcgU2lnbmF0dXJl
SW5kZXggPSB1aW50NjRfdDsKIH0KIAogY2xhc3MgU3ltYm9sVGFibGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKaW5kZXggMTI3MGM3OWIxYzQzMTBjYzVmYzYz
MDI5YWU4M2JmYjE4YzVlMDNjNi4uZWUwMGZjODhlMGNhZjI1NDRkOWQ3OWVjYzkzZjRlMTIzMjUz
OGIzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcApAQCAt
NDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCiAjaW5jbHVkZSAiV2FzbUV4
Y2VwdGlvblR5cGUuaCIKICNpbmNsdWRlICJXYXNtSW5zdGFuY2UuaCIKKyNpbmNsdWRlICJXYXNt
U2lnbmF0dXJlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewog
CkBAIC0zMDEsNyArMzAyLDggQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21F
bnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSogdm0KICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCksIEdQUkluZm86OmFyZ3VtZW50R1BS
Myk7CiAKICAgICAgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVn
aXN0ZXJzID49IDQsICJXZSByZWx5IG9uIHRoaXMgd2l0aCB0aGUgY2FsbCBiZWxvdy4iKTsKLSAg
ICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKGNhbGxGdW5jKT4oR1BSSW5mbzo6YXJn
dW1lbnRHUFIxLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzaWduYXR1cmVJbmRleCksIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihidWZmZXIpKTsKKyAgICAgICAgc3RhdGljX2Fzc2Vy
dChzaXplb2YoU2lnbmF0dXJlSW5kZXgpID09IHNpemVvZih1aW50NjRfdCksICJGb2xsb3dpbmcg
Y29kZSBhc3N1bWVzIFNpZ25hdHVyZUluZGV4IGlzIDY0Yml0LiIpOworICAgICAgICBqaXQuc2V0
dXBBcmd1bWVudHM8ZGVjbHR5cGUoY2FsbEZ1bmMpPihHUFJJbmZvOjphcmd1bWVudEdQUjEsIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KHNpZ25hdHVyZUluZGV4KSwgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGJ1ZmZlcikpOwogICAgICAgICBhdXRvIGNhbGwgPSBqaXQuY2FsbChPcGVy
YXRpb25QdHJUYWcpOwogICAgICAgICBhdXRvIG5vRXhjZXB0aW9uID0gaml0LmVtaXRFeGNlcHRp
b25DaGVjaygqdm0sIEFzc2VtYmx5SGVscGVyczo6SW52ZXJ0ZWRFeGNlcHRpb25DaGVjayk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVu
Y3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5j
dGlvbi5jcHAKaW5kZXggMDJiNGMyNGM0MmJjY2YxMmY4MjNhYjA3OTc1M2IwNWU1YTNhYTU0YS4u
NWRiOTI0ZjhlY2ZiMDNhN2UwYmE2ZjVkMDg0ODIyYjM0NzExYmFjNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKQEAg
LTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldhc21G
b3JtYXQuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCisjaW5jbHVkZSAiV2FzbVNpZ25hdHVy
ZUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvRmFzdFRMUy5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0
ZW1UcmFjaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAppbmRleCBkNzQ0MTdjYjFhNGMxY2EzYjJm
MzhlZmEyMDc3YTUzOGIxNjVlYTEyLi5lOGNhNThjYmY2MGFjNDZhYjIzMGVlM2RmMDRhNWY0YTMw
MjhmMmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseU1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAi
SlNXZWJBc3NlbWJseUxpbmtFcnJvci5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUu
aCIKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgotI2luY2x1ZGUgIldhc21TaWduYXR1cmUu
aCIKKyNpbmNsdWRlICJXYXNtU2lnbmF0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIldlYkFzc2Vt
Ymx5RnVuY3Rpb24uaCIKICNpbmNsdWRlIDxsaW1pdHM+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNw
cAppbmRleCAzNmYzNzgzMDZiZTcyN2MwMjk1MzFkYjQ5MmE4ZDAwOTI3MjkxYTZlLi40NDRlZmJm
OGI0YTdhMzVmNDBmMDFjZWI0Yzc5ZWM4NDNlYjE2NDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24u
Y3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgi
CisjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349140</attachid>
            <date>2018-09-07 05:53:28 -0700</date>
            <delta_ts>2018-09-07 06:41:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189401-20180907215327.patch</filename>
            <type>text/plain</type>
            <size>37684</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1Nzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OTQ2MDg3MWZlNjkwN2QyNzFhNGQwMDg2ZjIzNTRhODU4OTk4YmJkLi5jNTdlZWNhZWZmNjU1YWY4
OTdjMzk1M2ViMDA4YjdhZTA0YTU1MWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAxOC0wOS0wNyAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtXZWJBc3NlbWJseV0gT3B0aW1pemUgSlMgdG8gV2FzbSBj
YWxsIGJ5IHVzaW5nIHBvaW50ZXIgb2YgU2lnbmF0dXJlIGFzIFNpZ25hdHVyZUluZGV4CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk0MDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaWduYXR1cmVJbmZv
cm1hdGlvbiBpcyBhIGdsb2JhbCByZXBvc2l0b3J5IGZvciBTaWduYXR1cmUgdG8gbWFrZSBTaWdu
YXR1cmUgYXRvbWljLgorICAgICAgICBJdCB0YWtlcyBSZWY8U2lnbmF0dXJlPiYmIGFuZCBnZW5l
cmF0ZXMgU2lnbmF0dXJlSW5kZXguIEFuZCB3ZSBnZXQgY29uc3QgU2lnbmF0dXJlJgorICAgICAg
ICBieSB1c2luZyB0aGlzIFNpZ25hdHVyZUluZGV4LiBIb3dldmVyLCBjb252ZXJ0aW5nIFNpZ25h
dHVyZUluZGV4IHRvIGNvbnN0IFNpZ25hdHVyZSYKKyAgICAgICAgYWx3YXlzIGxvb2tzIHVwIGEg
aGFzaCB0YWJsZS4gVGhpcyBpcyBjb3N0bHkgc2luY2UgSlMgdG8gV2FzbSBjYWxscyBhbHdheXMg
dXNlCisgICAgICAgIFNpZ25hdHVyZSYgdG8gY2hlY2sgdHlwZXMgb2YgYXJndW1lbnRzLgorCisg
ICAgICAgIEluc3RlYWQgb2YgdXNpbmcgdGhpcyBoYXNoIHRhYmxlLCB0aGlzIHBhdGNoIHVzZXMg
YSBwb2ludGVyIG9mIFNpZ25hdHVyZSBhcyBTaWduYXR1cmVJbmRleC4KKyAgICAgICAgVGhpcyBh
bGxvd3MgdXMgdG8gY29udmVydCBTaWduYXR1cmVJbmRleCB0byBTaWduYXR1cmUgYnkganVzdCBj
YXN0aW5nIGl0LgorCisgICAgICAgIFdlIGFsc28gb3B0aW1pemUgU2lnbmF0dXJlSW5mb3JtYXRp
b246OnNpbmdsZXRvbiBieSBtYWtpbmcgYW4gYWNjZXNzb3IgZnVuY3Rpb24gaW5saW5lZC4KKyAg
ICAgICAgQW5kIHdlIG1vdmUgUHJvdG9DYWxsRnJhbWU6OmluaXQgdG8gdGhlIGhlYWRlciBzaW5j
ZSBpdCdzIGp1c3Qgc2V0dGluZyB2YWx1ZXMuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ugc2lnbmlm
aWNhbnRseSBvcHRpbWl6ZXMgSlMgdG8gd2FzbSBjYWxscyAoMWU3IHRpbWVzKSBmcm9tIDYwMG1z
IHRvIDMyMG1zLgorCisgICAgICAgIEluIHRoZSBmdXR1cmUsIHdlIGNhbiByZW1vdmUgU2lnbmF0
dXJlSW5kZXggYnkgZGlyZWN0bHkgaGFuZGxpbmcgUmVmPFNpZ25hdHVyZT46IGFkZGluZworICAg
ICAgICBkZXJlZigpIG9mIFNpZ25hdHVyZSB3aGljaCB1bnJlZ2lzdGVycyBpdHNlbGYgZnJvbSBT
aWduYXR1cmVJbmZvcm1hdGlvbiBjYXJlZnVsbHkuIE9yIHdlIGNhbgorICAgICAgICBtYWtlIFNp
Z25hdHVyZUluZGV4IHVpbnQzMl90IGJ5IGludHJvZHVjaW5nIGEgbWVjaGFuaXNtIHNpbWlsYXIg
dG8gU3RydWN0dXJlSUQuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGludGVycHJl
dGVyL1Byb3RvQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6OlByb3RvQ2FsbEZyYW1lOjppbml0
KToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KToKKyAgICAgICAgKiB3YXNtL1dh
c21CQlFQbGFuLmNwcDoKKyAgICAgICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAgICAgKEpT
Qzo6V2FzbTo6V2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbjo6b2Zmc2V0T2ZTaWduYXR1cmVJ
bmRleCk6CisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAgICAgKiB3
YXNtL1dhc21Nb2R1bGUuaDoKKyAgICAgICAgKiB3YXNtL1dhc21PTUdQbGFuLmNwcDoKKyAgICAg
ICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2Vj
dGlvblBhcnNlcjo6cGFyc2VUeXBlKToKKyAgICAgICAgKiB3YXNtL1dhc21TaWduYXR1cmUuY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6YWRvcHQpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6dHJ5Q2xlYW51cCk6CisgICAg
ICAgIChKU0M6Oldhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjpzaW5nbGV0b24pOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpXYXNtOjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiB3YXNtL1dhc21TaWduYXR1cmUuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6
U2lnbmF0dXJlOjppbmRleCBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206OlNpZ25hdHVyZUhh
c2g6OlNpZ25hdHVyZUhhc2gpOgorICAgICAgICAoSlNDOjpXYXNtOjpTaWduYXR1cmVIYXNoOjpo
YXNoKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2lnbmF0dXJlSGFzaDo6aXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpTaWduYXR1cmVIYXNoOjplbXB0
eSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206OlNpZ25hdHVyZUhhc2g6OmRlbGV0ZWQp
OiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbVNpZ25hdHVyZUlubGluZXMuaDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5j
cHAuCisgICAgICAgIChKU0M6Oldhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjpzaW5nbGV0b24p
OgorICAgICAgICAoSlNDOjpXYXNtOjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KToKKyAgICAg
ICAgKiB3YXNtL2pzL0pTVG9XYXNtLmNwcDoKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1i
bHlNb2R1bGUuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dhc21Ub0pTLmNwcDoKKyAgICAgICAgKEpT
Qzo6V2FzbTo6d2FzbVRvSlMpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlv
bi5jcHA6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6Cisg
ICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHA6CisKIDIwMTgt
MDktMDYgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KIAogICAg
ICAgICBbV2ViQXNzZW1ibHldIE9wdGltaXplIEpTIHRvIFdhc20gY2FsbCBieSByZW1vdmluZyBW
ZWN0b3IgYWxsb2NhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1MGEwMTlh
NjRlNjZjNGM3ZjQ4NzI0ZjFmOTkzZmQ2NmQ4ZTQ2Zjk3Li5mNWJiMDU1ZmU2YzZkOGMwYjI1ZGRj
NjczYjJkNjIzNzZiNTJiMGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUz
Niw2ICsxNTM2LDcgQEAKIAkJQUQ1QzM2RUMxRjc1QUQ3QzAwMEJDQUFGIC8qIFdhc21Ub0pTLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBREQwOUFFRTFG
NUY2MjNGMDAxMzEzQzIgLyogV2FzbVRvSlMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBRDVDMzZFRjFGN0EyNjNBMDAwQkNBQUYgLyogV2FzbU1l
bW9yeU1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFENUMzNkVFMUY3QTI2MjkwMDBCQ0FBRiAvKiBXYXNtTWVtb3J5TW9kZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFENzQzOEMwMUUwNDU3QTQw
MEZEMEMyQSAvKiBXYXNtU2lnbmF0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBRDc0MzhCRjFFMDQ1NzkyMDBGRDBDMkEgLyogV2FzbVNpZ25hdHVy
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTRC
QUEwN0NFQjgxRjQ5QTI5NkUwMjIwMyAvKiBXYXNtU2lnbmF0dXJlSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzBBNUY0MDNGMTFDNEY1OTlD
RDU5NkQ1IC8qIFdhc21TaWduYXR1cmVJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQUQ3QjRCMkUxRkEzRTI5ODAwQzlERjc5IC8qIFdh
c21OYW1lU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQUQ3QjRCMkQxRkEzRTI4NjAwQzlERjc5IC8qIFdhc21OYW1lU2VjdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFEODZBOTNFMUFB
NEQ4OEQwMDJGRTc3RiAvKiBXZWFrR0NNYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDg2QTkzRDFBQTREODdDMDAyRkU3N0YgLyogV2Vh
a0dDTWFwSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUFEOEZGMzk4MUVCNUJEQjIwMDg3RkY4MiAvKiBXYXNtSW5kZXhPck5hbWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEOEZGMzk1MUVC
NUJEODUwMDg3RkY4MiAvKiBXYXNtSW5kZXhPck5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzU5OSw3ICszNjAwLDYgQEAKIAkJNjVFQTcz
NjIwQkFFMzVEMTAwMUJCNTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21tb25JZGVudGlmaWVycy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1RUE3MzYzMEJBRTM1RDEwMDFCQjU2MCAvKiBDb21tb25J
ZGVudGlmaWVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uSWRl
bnRpZmllcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVGQjUxMTUxODRFRThG
ODAwQzEyQjcwIC8qIFByb3RvQ2FsbEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFByb3RvQ2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTY1
RkI1MTE2MTg0RUU5QkMwMEMxMkI3MCAvKiBQcm90b0NhbGxGcmFtZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm90b0NhbGxGcmFtZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTZBMzhDRkE3MUUzMkI1OEIwMDYwMjA2RiAvKiBBc3luY1N0YWNr
VHJhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXN5bmNTdGFj
a1RyYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkEzOENGQTgxRTMyQjU4
QjAwNjAyMDZGIC8qIEFzeW5jU3RhY2tUcmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBc3luY1N0YWNrVHJhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NkFEMkNCNEMxOUI5MTQwMTAwMDY1NzE5IC8qIERlYnVnZ2VyRXZhbEVuYWJsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVidWdnZXJFdmFsRW5hYmxlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDM2NCw2ICs0MzY0LDcgQEAKIAkJQUQ1QzM2RjAxRjdB
MjZCRjAwMEJDQUFGIC8qIFdhc21NZW1vcnlNb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdh
c21NZW1vcnlNb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ3NDM4QkUx
RTA0NTc5MjAwRkQwQzJBIC8qIFdhc21TaWduYXR1cmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2FzbVNpZ25hdHVyZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUFENzQzOEJGMUUwNDU3OTIwMEZEMEMyQSAvKiBXYXNtU2lnbmF0dXJlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21TaWduYXR1cmUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzBBNUY0MDNGMTFDNEY1OTlDRDU5NkQ1IC8qIFdhc21TaWdu
YXR1cmVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21TaWdu
YXR1cmVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEN0I0QjJEMUZB
M0UyODYwMEM5REY3OSAvKiBXYXNtTmFtZVNlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2FzbU5hbWVTZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUFEODZBOTNEMUFBNEQ4N0MwMDJGRTc3RiAvKiBXZWFrR0NNYXBJbmxpbmVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtHQ01hcElubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ4REQ2Q0YxRjY3MDg5RjAwMDRFQjUyIC8qIEpTVG9XYXNt
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEpTVG9XYXNtLmg7IHBhdGggPSBqcy9KU1RvV2FzbS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTUwOCw4ICs1NTA5LDggQEAKIAkJCQk3OTZEQUEy
QTFFODlDQ0Q2MDA1REYyNEEgLyogQ2FsbGVlQml0cy5oICovLAogCQkJCTE0MjlEOERCMEVEMjIw
NUIwMEI4OTYxOSAvKiBDYWxsRnJhbWUuY3BwICovLAogCQkJCTE0MjlEOERDMEVEMjIwNUIwMEI4
OTYxOSAvKiBDYWxsRnJhbWUuaCAqLywKLQkJCQlGRUEzQkJBNzIxMkI2NTU4MDBFOTNBRDEgLyog
Q2FsbEZyYW1lSW5saW5lcy5oICovLAogCQkJCUE3Rjg2OUVDMEY5NUMyRUMwMDU1ODY5NyAvKiBD
YWxsRnJhbWVDbG9zdXJlLmggKi8sCisJCQkJRkVBM0JCQTcyMTJCNjU1ODAwRTkzQUQxIC8qIENh
bGxGcmFtZUlubGluZXMuaCAqLywKIAkJCQkxNDI5RDg1QjBFRDIxOEU5MDBCODk2MTkgLyogQ0xv
b3BTdGFjay5jcHAgKi8sCiAJCQkJMTRENzkyNjQwREFBMDNGQjAwMUE5RjA1IC8qIENMb29wU3Rh
Y2suaCAqLywKIAkJCQlBN0MxRUFFQjE3OTg3QUI2MDAyOTlEQjIgLyogQ0xvb3BTdGFja0lubGlu
ZXMuaCAqLywKQEAgLTU1MTgsNyArNTUxOSw2IEBACiAJCQkJMTQyOUQ3RDMwRUQyMTI4MjAwQjg5
NjE5IC8qIEludGVycHJldGVyLmNwcCAqLywKIAkJCQkxNDI5RDc3QjBFRDIwRDczMDBCODk2MTkg
LyogSW50ZXJwcmV0ZXIuaCAqLywKIAkJCQlFMzlEOUQ4NDFEMzkwMDA2MDA2NjcyODIgLyogSW50
ZXJwcmV0ZXJJbmxpbmVzLmggKi8sCi0JCQkJNjVGQjUxMTYxODRFRTlCQzAwQzEyQjcwIC8qIFBy
b3RvQ2FsbEZyYW1lLmNwcCAqLywKIAkJCQk2NUZCNTExNTE4NEVFOEY4MDBDMTJCNzAgLyogUHJv
dG9DYWxsRnJhbWUuaCAqLywKIAkJCQkxNDlCMjRGRjBEOEFGNkQxMDA5Q0I4QzcgLyogUmVnaXN0
ZXIuaCAqLywKIAkJCQlEQzE3RTgxMzFDOUM3RkQ0MDA4QTZBQjMgLyogU2hhZG93Q2hpY2tlbi5j
cHAgKi8sCkBAIC02MzYyLDYgKzYzNjIsNyBAQAogCQkJCTUzRjQwRTg0MUQ1OEY5NzcwMDk5QTFC
NiAvKiBXYXNtU2VjdGlvbnMuaCAqLywKIAkJCQlBRDc0MzhCRTFFMDQ1NzkyMDBGRDBDMkEgLyog
V2FzbVNpZ25hdHVyZS5jcHAgKi8sCiAJCQkJQUQ3NDM4QkYxRTA0NTc5MjAwRkQwQzJBIC8qIFdh
c21TaWduYXR1cmUuaCAqLywKKwkJCQkzMEE1RjQwM0YxMUM0RjU5OUNENTk2RDUgLyogV2FzbVNp
Z25hdHVyZUlubGluZXMuaCAqLywKIAkJCQlFM0EwNTMxOTIxMzQyQjY3MDAyMkVDMTQgLyogV2Fz
bVN0cmVhbWluZ1BhcnNlci5jcHAgKi8sCiAJCQkJRTNBMDUzMTYyMTM0MkI2NjAwMjJFQzE0IC8q
IFdhc21TdHJlYW1pbmdQYXJzZXIuaCAqLywKIAkJCQlBRDVDMzZFMzFGNjlFQzhCMDAwQkNBQUYg
LyogV2FzbVRhYmxlLmNwcCAqLywKQEAgLTg0NDQsNyArODQ0NSw2IEBACiAJCQkJOTlEQTAwQTMx
QkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRvci5weSBpbiBIZWFkZXJzICovLAog
CQkJCTk5REEwMEE0MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19tb2RlbC5weSBpbiBIZWFk
ZXJzICovLAogCQkJCTk5REEwMEE1MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc190ZW1wbGF0
ZXMucHkgaW4gSGVhZGVycyAqLywKLQkJCQlGRUEzQkJBODIxMkI2NTU5MDBFOTNBRDEgLyogQ2Fs
bEZyYW1lSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFERUExMzIxQjlGMzE2MzAwNkQ2
NUREIC8qIEJ1aWx0aW5VdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUU3Mjk0MEIxOTBGMDUx
NDAwMUE5MUI1IC8qIEJ1bmRsZVBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk3MTVF
RDhFNDYwMEYxNjdCMiAvKiBCdXR0ZXJmbHkuaCBpbiBIZWFkZXJzICovLApAQCAtODQ2OSw2ICs4
NDY5LDcgQEAKIAkJCQkwRjY0QjI3QTFBNzk1N0IyMDA2RTRFNjYgLyogQ2FsbEVkZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTc5NkRBQTJCMUU4OUNDRDYwMDVERjI0QSAvKiBDYWxsZWVCaXRzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxNDI5RDhERTBFRDIyMDVCMDBCODk2MTkgLyogQ2FsbEZyYW1l
LmggaW4gSGVhZGVycyAqLywKKwkJCQlGRUEzQkJBODIxMkI2NTU5MDBFOTNBRDEgLyogQ2FsbEZy
YW1lSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjJFQzlCQjcxQjdFQjA3QzAwMzAzQUQx
IC8qIENhbGxGcmFtZVNodWZmbGVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk2MkQ3NTVENzFC
ODRGQjRBMDAxODAxRkEgLyogQ2FsbEZyYW1lU2h1ZmZsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMEI4M0IxMTRCQ0Y3MTgwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICov
LApAQCAtODc1OSw2ICs4NzYwLDcgQEAKIAkJCQlBNzA0NDdFRTE3QTBCRDcwMDBGNTg5OEUgLyog
RHVtcENvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzE4RkUwMUNBQzk4MkYwMERGQ0M1
NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyQTgzNjM4NjE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRkUwODZCQ0EyMTIzREVGQjAwM0YyOTI5IC8qIEVudHJ5RnJhbWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJBRDJFREZCMTk3OTlFMzgwMDRENjQ3OCAvKiBFbnVtZXJh
dGlvbk1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMzA0NjA3MEUxRjQ5N0YwMDMyMzJDRiAv
KiBFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMkU5MEQwRTE4MzlEQjAwMEY5Mjk3IC8q
IEVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtOTA5NSw3ICs5MDk3LDYgQEAK
IAkJCQk5Nzg4MDE0MTE0NzFBRDkyMDA0MUIwMTYgLyogSlNEYXRlTWF0aC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQzJBN0Y2ODgxNjA0MzJENDAwRjc2Qjk4IC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdERjEzQzFFMjk3MTEzMDA5NTk1MUIgLyogSlNEZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUZFMDg2QkNB
MjEyM0RFRkIwMDNGMjkyOSAvKiBFbnRyeUZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTM4
NEVFNjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODZFM0M2MTQxNjdCQUJENzAwNkQ3NjBBIC8qIEpTRXhwb3J0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBN0I0QUNBRjE0ODRDOUNFMDBCMzhBMzYgLyogSlNFeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJz
ICovLApAQCAtOTYyMiw2ICs5NjIzLDcgQEAKIAkJCQlFM0EwNTMxQzIxMzQyQjY4MDAyMkVDMTQg
LyogV2FzbVNlY3Rpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzRjQwRTg1MUQ1OEY5
NzcwMDk5QTFCNiAvKiBXYXNtU2VjdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUFENzQzOEMw
MUUwNDU3QTQwMEZEMEMyQSAvKiBXYXNtU2lnbmF0dXJlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0
QkFBMDdDRUI4MUY0OUEyOTZFMDIyMDMgLyogV2FzbVNpZ25hdHVyZUlubGluZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUzQTA1MzFBMjEzNDJCNjgwMDIyRUMxNCAvKiBXYXNtU3RyZWFtaW5nUGFy
c2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDVDMzZFNjFGNjlFQzkxMDAwQkNBQUYgLyogV2Fz
bVRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjUwRDJEMjFFOERBMDVBMDAyOUE5MzIgLyog
V2FzbVRodW5rcy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5k
ZXggZTJiYWYxYTU3NTVmYzdlNGYyM2Y5ZDE0ZDlkZTM0OTFmMzkwYTE4ZS4uMzg4MzA3NjhlZmJi
NjNhNGZkYzNmYjMxMWFiMDZlYmQ2MzZmNjRmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dApAQCAtNTg3LDcgKzU4Nyw2IEBAIGludGVycHJldGVyL0Fic3RyYWN0UEMuY3BwCiBpbnRlcnBy
ZXRlci9DTG9vcFN0YWNrLmNwcAogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCi1pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAKIGludGVy
cHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwCiBpbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxG
cmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJh
bWUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MmJjOTg4YjE3OGI3Yjk1MzAw
OGUyNjA1NTcxY2IzMzJjNDdhOGY2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxG
cmFtZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCi0KLSNpbmNsdWRlICJDb2RlQmxvY2suaCIKLSNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKLQotbmFt
ZXNwYWNlIEpTQyB7Ci0KLXZvaWQgUHJvdG9DYWxsRnJhbWU6OmluaXQoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEpTT2JqZWN0KiBjYWxsZWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBpbnQgYXJnQ291bnRJ
bmNsdWRpbmdUaGlzLCBKU1ZhbHVlKiBvdGhlckFyZ3MpCi17Ci0gICAgdGhpcy0+YXJncyA9IG90
aGVyQXJnczsKLSAgICB0aGlzLT5zZXRDb2RlQmxvY2soY29kZUJsb2NrKTsKLSAgICB0aGlzLT5z
ZXRDYWxsZWUoY2FsbGVlKTsKLSAgICB0aGlzLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyhhcmdDb3VudEluY2x1ZGluZ1RoaXMpOwotICAgIGlmIChjb2RlQmxvY2sgJiYgYXJnQ291bnRJ
bmNsdWRpbmdUaGlzIDwgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpCi0gICAgICAgIHRoaXMt
Pmhhc0FyaXR5TWlzbWF0Y2ggPSB0cnVlOwotICAgIGVsc2UKLSAgICAgICAgdGhpcy0+aGFzQXJp
dHlNaXNtYXRjaCA9IGZhbHNlOwotCi0gICAgLy8gUm91bmQgdXAgYXJnQ291bnRJbmNsdWRpbmdU
aGlzIHRvIGtlZXAgdGhlIHN0YWNrIGZyYW1lIHNpemUgYWxpZ25lZC4KLSAgICBzaXplX3QgcGFk
ZGVkQXJnc0NvdW50ID0gcm91bmRBcmd1bWVudENvdW50VG9BbGlnbkZyYW1lKGFyZ0NvdW50SW5j
bHVkaW5nVGhpcyk7Ci0gICAgdGhpcy0+c2V0UGFkZGVkQXJnQ291bnQocGFkZGVkQXJnc0NvdW50
KTsKLSAgICB0aGlzLT5jbGVhckN1cnJlbnRWUEMoKTsKLSAgICB0aGlzLT5zZXRUaGlzVmFsdWUo
dGhpc1ZhbHVlKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oCmluZGV4IDE2N2IzOTQ5OWM0
ZjdiOGUzZDA0MDc1YmU4NzhhZjAzNTE3YzFmY2IuLjQ4NGQxMGYxNzY3ODQzMzI0ZDBlNjBjZDAz
YzM2NTQzZWIzMDFiZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9Qcm90b0NhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9Qcm90b0NhbGxGcmFtZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIlJlZ2lzdGVyLmgiCisjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNpbmNs
dWRlIDx3dGYvRm9yYmlkSGVhcEFsbG9jYXRpb24uaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC03
Myw0ICs3NCwyMiBAQCBzdHJ1Y3QgSlNfRVhQT1JUX1BSSVZBVEUgUHJvdG9DYWxsRnJhbWUgewog
ICAgIH0KIH07CiAKK2lubGluZSB2b2lkIFByb3RvQ2FsbEZyYW1lOjppbml0KENvZGVCbG9jayog
Y29kZUJsb2NrLCBKU09iamVjdCogY2FsbGVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgaW50IGFyZ0Nv
dW50SW5jbHVkaW5nVGhpcywgSlNWYWx1ZSogb3RoZXJBcmdzKQoreworICAgIHRoaXMtPmFyZ3Mg
PSBvdGhlckFyZ3M7CisgICAgdGhpcy0+c2V0Q29kZUJsb2NrKGNvZGVCbG9jayk7CisgICAgdGhp
cy0+c2V0Q2FsbGVlKGNhbGxlZSk7CisgICAgdGhpcy0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMoYXJnQ291bnRJbmNsdWRpbmdUaGlzKTsKKyAgICBpZiAoY29kZUJsb2NrICYmIGFyZ0Nv
dW50SW5jbHVkaW5nVGhpcyA8IGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKQorICAgICAgICB0
aGlzLT5oYXNBcml0eU1pc21hdGNoID0gdHJ1ZTsKKyAgICBlbHNlCisgICAgICAgIHRoaXMtPmhh
c0FyaXR5TWlzbWF0Y2ggPSBmYWxzZTsKKworICAgIC8vIFJvdW5kIHVwIGFyZ0NvdW50SW5jbHVk
aW5nVGhpcyB0byBrZWVwIHRoZSBzdGFjayBmcmFtZSBzaXplIGFsaWduZWQuCisgICAgc2l6ZV90
IHBhZGRlZEFyZ3NDb3VudCA9IHJvdW5kQXJndW1lbnRDb3VudFRvQWxpZ25GcmFtZShhcmdDb3Vu
dEluY2x1ZGluZ1RoaXMpOworICAgIHRoaXMtPnNldFBhZGRlZEFyZ0NvdW50KHBhZGRlZEFyZ3ND
b3VudCk7CisgICAgdGhpcy0+Y2xlYXJDdXJyZW50VlBDKCk7CisgICAgdGhpcy0+c2V0VGhpc1Zh
bHVlKHRoaXNWYWx1ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IDNlN2NlNjBhZDc0
YjAwMjA0NzRhODY5OTNkYTc2ZTcxODBkYzZmMjQuLmUwYmMxNTk5MzIwYzBlMjc2ZGE2NTgwM2Zh
ZDJlNGQzMjk4YmMwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QjNJUkdlbmVyYXRvci5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJXYXNtTWVtb3J5
LmgiCiAjaW5jbHVkZSAiV2FzbU9NR1BsYW4uaCIKICNpbmNsdWRlICJXYXNtT3Bjb2RlT3JpZ2lu
LmgiCisjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJXYXNtVGh1
bmtzLmgiCiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAt
MTIyOSwxMyArMTIzMCwxMyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdChj
b25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3NpbwogCiAgICAgICAgIC8v
IENoZWNrIHRoYXQgdGhlIFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb24gaXMgaW5pdGlhbGl6
ZWQuIFdlIHRyYXAgaWYgaXQgaXNuJ3QuIEFuICJpbnZhbGlkIiBTaWduYXR1cmVJbmRleCBpbmRp
Y2F0ZXMgaXQncyBub3QgaW5pdGlhbGl6ZWQuCiAgICAgICAgIC8vIEZJWE1FOiB3aGVuIHdlIGhh
dmUgdHJhcCBoYW5kbGVycywgd2UgY2FuIGp1c3QgbGV0IHRoZSBjYWxsIGZhaWwgYmVjYXVzZSBT
aWduYXR1cmU6OmludmFsaWRJbmRleCBpcyAwLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc3MjEwCi0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFdhc21Ub1dh
c21JbXBvcnRhYmxlRnVuY3Rpb246OnNpZ25hdHVyZUluZGV4KSA9PSBzaXplb2YodWludDMyX3Qp
LCAiTG9hZCBjb2RlZ2VuIGFzc3VtZXMgaTMyIik7Ci0gICAgICAgIEV4cHJlc3Npb25UeXBlIGNh
bGxlZVNpZ25hdHVyZUluZGV4ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4obV9wcm9jLCBMb2FkLCBJbnQzMiwgb3JpZ2luKCksIGNhbGxhYmxlRnVuY3Rpb24sIHNhZmVD
YXN0PGludDMyX3Q+KE9CSkVDVF9PRkZTRVRPRihXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9u
LCBzaWduYXR1cmVJbmRleCkpKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoV2FzbVRv
V2FzbUltcG9ydGFibGVGdW5jdGlvbjo6c2lnbmF0dXJlSW5kZXgpID09IHNpemVvZih1aW50NjRf
dCksICJMb2FkIGNvZGVnZW4gYXNzdW1lcyBpNjQiKTsKKyAgICAgICAgRXhwcmVzc2lvblR5cGUg
Y2FsbGVlU2lnbmF0dXJlSW5kZXggPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPihtX3Byb2MsIExvYWQsIEludDY0LCBvcmlnaW4oKSwgY2FsbGFibGVGdW5jdGlvbiwgc2Fm
ZUNhc3Q8aW50MzJfdD4oV2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbjo6b2Zmc2V0T2ZTaWdu
YXR1cmVJbmRleCgpKSk7CiAgICAgICAgIHsKICAgICAgICAgICAgIENoZWNrVmFsdWUqIGNoZWNr
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBv
cmlnaW4oKSwKICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVl
PihtX3Byb2MsIEVxdWFsLCBvcmlnaW4oKSwKICAgICAgICAgICAgICAgICAgICAgY2FsbGVlU2ln
bmF0dXJlSW5kZXgsCi0gICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBTaWduYXR1cmU6OmludmFsaWRJbmRl
eCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25z
dDY0VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIFNpZ25hdHVyZTo6aW52YWxpZEluZGV4KSkpOwog
CiAgICAgICAgICAgICBjaGVjay0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgICAgICAgICAg
dGhpcy0+ZW1pdEV4Y2VwdGlvbkNoZWNrKGppdCwgRXhjZXB0aW9uVHlwZTo6TnVsbFRhYmxlRW50
cnkpOwpAQCAtMTI0NCw3ICsxMjQ1LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5k
aXJlY3QoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW8KIAogICAg
ICAgICAvLyBDaGVjayB0aGUgc2lnbmF0dXJlIG1hdGNoZXMgdGhlIHZhbHVlIHdlIGV4cGVjdC4K
ICAgICAgICAgewotICAgICAgICAgICAgRXhwcmVzc2lvblR5cGUgZXhwZWN0ZWRTaWduYXR1cmVJ
bmRleCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9y
aWdpbigpLCBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZSkpOworICAgICAgICAg
ICAgRXhwcmVzc2lvblR5cGUgZXhwZWN0ZWRTaWduYXR1cmVJbmRleCA9IG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBTaWduYXR1cmVJbmZv
cm1hdGlvbjo6Z2V0KHNpZ25hdHVyZSkpOwogICAgICAgICAgICAgQ2hlY2tWYWx1ZSogY2hlY2sg
PSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ssIG9y
aWdpbigpLAogICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+
KG1fcHJvYywgTm90RXF1YWwsIG9yaWdpbigpLCBjYWxsZWVTaWduYXR1cmVJbmRleCwgZXhwZWN0
ZWRTaWduYXR1cmVJbmRleCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQkJRUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJR
UGxhbi5jcHAKaW5kZXggNDNjOGY1NjJhZmExYzM2MzNhN2U2YzYxZjQwOTIyZWMwYmU5NzIxMy4u
MjJhNjVjMzExMGNmYzhjZGI5NGNkMTA1ZmI2ZDdjM2U1M2U3NzBhOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1
ZGUgIldhc21GYXVsdFNpZ25hbEhhbmRsZXIuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCiAj
aW5jbHVkZSAiV2FzbU1vZHVsZVBhcnNlci5oIgorI2luY2x1ZGUgIldhc21TaWduYXR1cmVJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiV2FzbVRpZXJVcENvdW50LmgiCiAjaW5jbHVkZSAiV2FzbVZhbGlk
YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21Gb3JtYXQuaAppbmRleCBlNDNmNGVkOTM2MTY3ZmYyOTM4ZDgzN2EwY2UwODhkNDNkMjBh
NGU2Li40NjMyMzk0ZGIyY2UzYzI1OGZlZGQ3NmVhMDEzZWJhNWQxNzViNzMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCkBAIC0yNzYsNiArMjc2LDcgQEAgc3RydWN0
IEludGVybmFsRnVuY3Rpb24gewogLy8gbWVhbnQgYXMgZmFzdCBsb29rdXAgdGFibGVzIGZvciB0
aGVzZSBvcGNvZGVzIGFuZCBkbyBub3Qgb3duIGNvZGUuCiBzdHJ1Y3QgV2FzbVRvV2FzbUltcG9y
dGFibGVGdW5jdGlvbiB7CiAgICAgdXNpbmcgTG9hZExvY2F0aW9uID0gTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPFdhc21FbnRyeVB0clRhZz4qOworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZT
aWduYXR1cmVJbmRleCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihXYXNtVG9XYXNtSW1wb3J0
YWJsZUZ1bmN0aW9uLCBzaWduYXR1cmVJbmRleCk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9m
ZnNldE9mRW50cnlwb2ludExvYWRMb2NhdGlvbigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihX
YXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uLCBlbnRyeXBvaW50TG9hZExvY2F0aW9uKTsgfQog
CiAgICAgLy8gRklYTUU6IFBhY2sgc2lnbmF0dXJlIGluZGV4IGFuZCBjb2RlIHBvaW50ZXIgaW50
byBvbmUgNjQtYml0IHZhbHVlLiBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjU1MTE+LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUZ1bmN0aW9uUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVu
Y3Rpb25QYXJzZXIuaAppbmRleCA4NzM1Y2U4ZTZhY2NiMzhlODRjODRiN2I4ZTExZDUzMzc5YWI4
ZGJlLi4wODhlNzI4Y2U0Y2M1NGNlM2M2MDZiNDBmMjU1YTYwOWQ1N2IzYjkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaApAQCAtMjgsNiAr
MjgsNyBAQAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogI2luY2x1ZGUgIldhc21QYXJzZXIu
aCIKKyNpbmNsdWRlICJXYXNtU2lnbmF0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9EYXRh
TG9nLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtTW9kdWxlLmgKaW5kZXggZmEzNmE2OWI4MDM5MTVkNjFjMzk2ZmMxYjNm
OWJjNzY0MjAwZTYzMi4uNjUyZGRkMzdkYjhlNTc4OGQwNTg3NWQyYzJkZmM3ZmFkYzllNzM2NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaApAQCAtNDEsNyArNDEsNyBA
QCBzdHJ1Y3QgQ29udGV4dDsKIHN0cnVjdCBNb2R1bGVJbmZvcm1hdGlvbjsKIGNsYXNzIFBsYW47
CiAKLXVzaW5nIFNpZ25hdHVyZUluZGV4ID0gdWludDMyX3Q7Cit1c2luZyBTaWduYXR1cmVJbmRl
eCA9IHVpbnQ2NF90OwogCiBjbGFzcyBNb2R1bGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8TW9kdWxlPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtT01HUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01H
UGxhbi5jcHAKaW5kZXggOWUwYzRhNTY2NmU0NGUwZWFjYzIzMTJhYmJiNzY1NDUzYjg3OWY0OC4u
ZTMxYjQ3MWI3OTI1MmRjZWNlNjdmNmZhZmRmMDZiNzE0ODMzMjdhNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1
ZGUgIldhc21NYWNoaW5lVGhyZWFkcy5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKICNpbmNs
dWRlICJXYXNtTmFtZVNlY3Rpb24uaCIKKyNpbmNsdWRlICJXYXNtU2lnbmF0dXJlSW5saW5lcy5o
IgogI2luY2x1ZGUgIldhc21WYWxpZGF0ZS5oIgogI2luY2x1ZGUgIldhc21Xb3JrbGlzdC5oIgog
I2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtU2VjdGlvblBhcnNlci5jcHAKaW5kZXggOWE5YmFjYjY3ZGVkMjUwNDUzNWQ4YzJkZTVj
NWVkODMzZGVmMTYwMi4uYWU4NzI1ZDA3OWNjM2M5Yzg4MjAwNDcwZGMwYmZmN2JlNzY0NGZjYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNw
cApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIldhc21OYW1lU2VjdGlvblBhcnNlci5oIgog
I2luY2x1ZGUgIldhc21PcHMuaCIKICNpbmNsdWRlICJXYXNtU2VjdGlvbnMuaCIKKyNpbmNsdWRl
ICJXYXNtU2lnbmF0dXJlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdh
c20gewogCkBAIC03NSw4ICs3Niw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VUeXBlKCkg
LT4gUGFydGlhbFJlc3VsdAogICAgICAgICAgICAgcmV0dXJuVHlwZSA9IFR5cGU6OlZvaWQ7CiAg
ICAgICAgIHNpZ25hdHVyZS0+cmV0dXJuVHlwZSgpID0gcmV0dXJuVHlwZTsKIAotICAgICAgICBz
dGQ6OnBhaXI8U2lnbmF0dXJlSW5kZXgsIFJlZjxTaWduYXR1cmU+PiByZXN1bHQgPSBTaWduYXR1
cmVJbmZvcm1hdGlvbjo6YWRvcHQoV1RGTW92ZShzaWduYXR1cmUpKTsKLSAgICAgICAgbV9pbmZv
LT51c2VkU2lnbmF0dXJlcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShyZXN1bHQuc2Vjb25kKSk7
CisgICAgICAgIG1faW5mby0+dXNlZFNpZ25hdHVyZXMudW5jaGVja2VkQXBwZW5kKFNpZ25hdHVy
ZUluZm9ybWF0aW9uOjphZG9wdChXVEZNb3ZlKHNpZ25hdHVyZSkpKTsKICAgICB9CiAgICAgcmV0
dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21T
aWduYXR1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5j
cHAKaW5kZXggNmE0MmQ1MTcxOTVlYTRmYjYxZDkyYjEwYzhjYzM3NzM2N2MyZWI5ZC4uMjljZTIx
Mzc1MjEzYzMxNDU1YWEzM2EyOTVlOGY4NmU0ZDliNGU5YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5jcHAKQEAgLTQxLDYgKzQxLDkgQEAgc3RhdGljIGNv
bnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogfQogfQogCitTaWduYXR1cmVJbmZvcm1hdGlvbiog
U2lnbmF0dXJlSW5mb3JtYXRpb246OnRoZU9uZSB7IG51bGxwdHIgfTsKK3N0ZDo6b25jZV9mbGFn
IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpzaWduYXR1cmVJbmZvcm1hdGlvbkZsYWc7CisKIFN0cmlu
ZyBTaWduYXR1cmU6OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBTdHJpbmcgcmVzdWx0KG1ha2VT
dHJpbmcocmV0dXJuVHlwZSgpKSk7CkBAIC04Myw2MCArODYsMjIgQEAgU2lnbmF0dXJlSW5mb3Jt
YXRpb246OlNpZ25hdHVyZUluZm9ybWF0aW9uKCkKIHsKIH0KIAotU2lnbmF0dXJlSW5mb3JtYXRp
b24mIFNpZ25hdHVyZUluZm9ybWF0aW9uOjpzaW5nbGV0b24oKQotewotICAgIHN0YXRpYyBTaWdu
YXR1cmVJbmZvcm1hdGlvbiogdGhlT25lOwotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBzaWdu
YXR1cmVJbmZvcm1hdGlvbkZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uoc2lnbmF0dXJlSW5mb3Jt
YXRpb25GbGFnLCBbXSAoKSB7Ci0gICAgICAgIHRoZU9uZSA9IG5ldyBTaWduYXR1cmVJbmZvcm1h
dGlvbjsKLSAgICB9KTsKLQotICAgIHJldHVybiAqdGhlT25lOwotfQotCi1zdGQ6OnBhaXI8U2ln
bmF0dXJlSW5kZXgsIFJlZjxTaWduYXR1cmU+PiBTaWduYXR1cmVJbmZvcm1hdGlvbjo6YWRvcHQo
UmVmPFNpZ25hdHVyZT4mJiBzaWduYXR1cmUpCitSZWY8U2lnbmF0dXJlPiBTaWduYXR1cmVJbmZv
cm1hdGlvbjo6YWRvcHQoUmVmPFNpZ25hdHVyZT4mJiBzaWduYXR1cmUpCiB7CiAgICAgU2lnbmF0
dXJlSW5mb3JtYXRpb24mIGluZm8gPSBzaW5nbGV0b24oKTsKICAgICBMb2NrSG9sZGVyIGxvY2so
aW5mby5tX2xvY2spOwogCi0gICAgU2lnbmF0dXJlSW5kZXggbmV4dFZhbHVlID0gaW5mby5tX25l
eHRJbmRleDsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IGluZm8ubV9zaWduYXR1cmVNYXAuYWRkKFNp
Z25hdHVyZUhhc2ggeyBzaWduYXR1cmUucHRyKCkgfSwgbmV4dFZhbHVlKTsKKyAgICBTaWduYXR1
cmVJbmRleCBuZXh0VmFsdWUgPSBzaWduYXR1cmUtPmluZGV4KCk7CisgICAgYXV0byBhZGRSZXN1
bHQgPSBpbmZvLm1fc2lnbmF0dXJlU2V0LmFkZChTaWduYXR1cmVIYXNoIHsgc2lnbmF0dXJlLmNv
cHlSZWYoKSB9KTsKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgKytp
bmZvLm1fbmV4dEluZGV4OwotICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmZvLm1fbmV4dEluZGV4
ID4gbmV4dFZhbHVlKTsgLy8gY3Jhc2ggb24gb3ZlcmZsb3cuCi0gICAgICAgIEFTU0VSVChuZXh0
VmFsdWUgPT0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiAgICAgICAgIGlmIChXYXNtU2ln
bmF0dXJlSW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9nTG4oIkFkb3B0IG5l
dyBzaWduYXR1cmUgIiwgc2lnbmF0dXJlLmdldCgpLCAiIHdpdGggaW5kZXggIiwgYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSwgIiBoYXNoOiAiLCBzaWduYXR1cmUtPmhhc2goKSk7Ci0KLSAgICAg
ICAgYXV0byBhZGRSZXN1bHQgPSBpbmZvLm1faW5kZXhNYXAuYWRkKG5leHRWYWx1ZSwgc2lnbmF0
dXJlLmNvcHlSZWYoKSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKLSAgICAgICAgQVNTRVJUKGluZm8ubV9pbmRleE1hcC5zaXplKCkgPT0gaW5mby5tX3Np
Z25hdHVyZU1hcC5zaXplKCkpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIobmV4dFZh
bHVlLCBXVEZNb3ZlKHNpZ25hdHVyZSkpOworICAgICAgICAgICAgZGF0YUxvZ0xuKCJBZG9wdCBu
ZXcgc2lnbmF0dXJlICIsIHNpZ25hdHVyZS5nZXQoKSwgIiB3aXRoIGluZGV4ICIsIG5leHRWYWx1
ZSwgIiBoYXNoOiAiLCBzaWduYXR1cmUtPmhhc2goKSk7CisgICAgICAgIHJldHVybiBXVEZNb3Zl
KHNpZ25hdHVyZSk7CiAgICAgfQorICAgIG5leHRWYWx1ZSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+
a2V5LT5pbmRleCgpOwogICAgIGlmIChXYXNtU2lnbmF0dXJlSW50ZXJuYWw6OnZlcmJvc2UpCi0g
ICAgICAgIGRhdGFMb2dMbigiRXhpc3Rpbmcgc2lnbmF0dXJlICIsIHNpZ25hdHVyZS5nZXQoKSwg
IiB3aXRoIGluZGV4ICIsIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUsICIgaGFzaDogIiwgc2ln
bmF0dXJlLT5oYXNoKCkpOwotICAgIEFTU0VSVChhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlICE9
IFNpZ25hdHVyZTo6aW52YWxpZEluZGV4KTsKLSAgICBBU1NFUlQoaW5mby5tX2luZGV4TWFwLmNv
bnRhaW5zKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUpKTsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSwgUmVmPFNpZ25hdHVyZT4oKmluZm8ubV9p
bmRleE1hcC5nZXQoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSkpKTsKLX0KLQotY29uc3QgU2ln
bmF0dXJlJiBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KFNpZ25hdHVyZUluZGV4IGluZGV4KQot
ewotICAgIEFTU0VSVChpbmRleCAhPSBTaWduYXR1cmU6OmludmFsaWRJbmRleCk7Ci0gICAgU2ln
bmF0dXJlSW5mb3JtYXRpb24mIGluZm8gPSBzaW5nbGV0b24oKTsKLSAgICBMb2NrSG9sZGVyIGxv
Y2soaW5mby5tX2xvY2spOwotCi0gICAgcmV0dXJuICppbmZvLm1faW5kZXhNYXAuZ2V0KGluZGV4
KTsKLX0KLQotU2lnbmF0dXJlSW5kZXggU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChjb25zdCBT
aWduYXR1cmUmIHNpZ25hdHVyZSkKLXsKLSAgICBTaWduYXR1cmVJbmZvcm1hdGlvbiYgaW5mbyA9
IHNpbmdsZXRvbigpOwotICAgIExvY2tIb2xkZXIgbG9jayhpbmZvLm1fbG9jayk7Ci0KLSAgICBh
dXRvIHJlc3VsdCA9IGluZm8ubV9zaWduYXR1cmVNYXAuZ2V0KFNpZ25hdHVyZUhhc2ggeyAmc2ln
bmF0dXJlIH0pOwotICAgIEFTU0VSVChyZXN1bHQgIT0gU2lnbmF0dXJlOjppbnZhbGlkSW5kZXgp
OwotICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIGRhdGFMb2dMbigiRXhpc3Rpbmcgc2lnbmF0
dXJlICIsIHNpZ25hdHVyZS5nZXQoKSwgIiB3aXRoIGluZGV4ICIsIG5leHRWYWx1ZSwgIiBoYXNo
OiAiLCBzaWduYXR1cmUtPmhhc2goKSk7CisgICAgcmV0dXJuIFJlZjxTaWduYXR1cmU+KCphZGRS
ZXN1bHQuaXRlcmF0b3ItPmtleSk7CiB9CiAKIHZvaWQgU2lnbmF0dXJlSW5mb3JtYXRpb246OnRy
eUNsZWFudXAoKQpAQCAtMTQ0LDI0ICsxMDksMTAgQEAgdm9pZCBTaWduYXR1cmVJbmZvcm1hdGlv
bjo6dHJ5Q2xlYW51cCgpCiAgICAgU2lnbmF0dXJlSW5mb3JtYXRpb24mIGluZm8gPSBzaW5nbGV0
b24oKTsKICAgICBMb2NrSG9sZGVyIGxvY2soaW5mby5tX2xvY2spOwogCi0gICAgVmVjdG9yPHN0
ZDo6cGFpcjxTaWduYXR1cmVJbmRleCwgU2lnbmF0dXJlKj4+IHRvUmVtb3ZlOwotICAgIGZvciAo
Y29uc3QgYXV0byYgcGFpciA6IGluZm8ubV9pbmRleE1hcCkgewotICAgICAgICBjb25zdCBSZWY8
U2lnbmF0dXJlPiYgc2lnbmF0dXJlID0gcGFpci52YWx1ZTsKLSAgICAgICAgaWYgKHNpZ25hdHVy
ZS0+cmVmQ291bnQoKSA9PSAxKSB7Ci0gICAgICAgICAgICAvLyBXZSdyZSB0aGUgb25seSBvd25l
ci4KLSAgICAgICAgICAgIHRvUmVtb3ZlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihwYWlyLmtleSwg
c2lnbmF0dXJlLnB0cigpKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZm9yIChjb25zdCBhdXRv
JiBwYWlyIDogdG9SZW1vdmUpIHsKLSAgICAgICAgYm9vbCByZW1vdmVkID0gaW5mby5tX3NpZ25h
dHVyZU1hcC5yZW1vdmUoU2lnbmF0dXJlSGFzaCB7IHBhaXIuc2Vjb25kIH0pOwotICAgICAgICBB
U1NFUlRfVU5VU0VEKHJlbW92ZWQsIHJlbW92ZWQpOwotICAgICAgICByZW1vdmVkID0gaW5mby5t
X2luZGV4TWFwLnJlbW92ZShwYWlyLmZpcnN0KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZW1v
dmVkLCByZW1vdmVkKTsKLSAgICB9Ci0gICAgaWYgKGluZm8ubV9zaWduYXR1cmVNYXAuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIEFTU0VSVChpbmZvLm1faW5kZXhNYXAuaXNFbXB0eSgpKTsKLSAgICAg
ICAgaW5mby5tX25leHRJbmRleCA9IFNpZ25hdHVyZTo6Zmlyc3RWYWxpZEluZGV4OwotICAgIH0K
KyAgICBpbmZvLm1fc2lnbmF0dXJlU2V0LnJlbW92ZUlmKFsmXSAoYXV0byYgaGFzaCkgeworICAg
ICAgICBjb25zdCBhdXRvJiBzaWduYXR1cmUgPSBoYXNoLmtleTsKKyAgICAgICAgcmV0dXJuIHNp
Z25hdHVyZS0+cmVmQ291bnQoKSA9PSAxOworICAgIH0pOwogfQogCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6V2FzbQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNp
Z25hdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5oCmlu
ZGV4IDlmNDljY2IxNDU2OGQyMDFmMWY4YWRjZWVmYjBjMTMzMWViNzdmMGIuLjZkYjI4YzNmMTk0
MjJlNGM2OGEzMjgwYzE2NWM3MTM4YzY3MjM1ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtU2lnbmF0dXJlLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxjc3RyaW5n
PgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0
cy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFk
U2FmZVJlZkNvdW50ZWQuaD4KQEAgLTQ3LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBuYW1l
c3BhY2UgV2FzbSB7CiAKIHVzaW5nIFNpZ25hdHVyZUFyZ0NvdW50ID0gdWludDMyX3Q7Ci11c2lu
ZyBTaWduYXR1cmVJbmRleCA9IHVpbnQzMl90OwordXNpbmcgU2lnbmF0dXJlSW5kZXggPSB1aW50
NjRfdDsKIAogY2xhc3MgU2lnbmF0dXJlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNp
Z25hdHVyZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtODEsNiArODIsNyBA
QCBjbGFzcyBTaWduYXR1cmUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2lnbmF0dXJl
PiB7CiAgICAgICAgIHJldHVybiAqc3RvcmFnZShyZXR1cm5Db3VudCgpICsgaSk7CiAgICAgfQog
ICAgIFR5cGUgYXJndW1lbnQoU2lnbmF0dXJlQXJnQ291bnQgaSkgY29uc3QgeyByZXR1cm4gY29u
c3RfY2FzdDxTaWduYXR1cmUqPih0aGlzKS0+YXJndW1lbnQoaSk7IH0KKyAgICBTaWduYXR1cmVJ
bmRleCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxTaWduYXR1cmVJbmRleD4o
dGhpcyk7IH0KIAogICAgIFdURjo6U3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAgICAgdm9pZCBk
dW1wKFdURjo6UHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CkBAIC0xMTEsMjggKzExMywyMSBAQCBj
bGFzcyBTaWduYXR1cmUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2lnbmF0dXJlPiB7
CiB9OwogCiBzdHJ1Y3QgU2lnbmF0dXJlSGFzaCB7Ci0gICAgY29uc3QgU2lnbmF0dXJlKiBrZXk7
Ci0gICAgc3RhdGljIGNvbnN0IFNpZ25hdHVyZSogZW1wdHkoKSB7IHJldHVybiBudWxscHRyOyB9
Ci0gICAgc3RhdGljIGNvbnN0IFNpZ25hdHVyZSogZGVsZXRlZCgpIHsgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgU2lnbmF0dXJlKj4oMSk7IH0KLSAgICBTaWduYXR1cmVIYXNoKCkKLSAg
ICAgICAgOiBrZXkoZW1wdHkoKSkKKyAgICBSZWZQdHI8U2lnbmF0dXJlPiBrZXkgeyBudWxscHRy
IH07CisgICAgU2lnbmF0dXJlSGFzaCgpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBTaWduYXR1
cmVIYXNoKFJlZjxTaWduYXR1cmU+JiYga2V5KQorICAgICAgICA6IGtleShXVEZNb3ZlKGtleSkp
CiAgICAgewogICAgIH0KLSAgICBleHBsaWNpdCBTaWduYXR1cmVIYXNoKGNvbnN0IFNpZ25hdHVy
ZSoga2V5KQotICAgICAgICA6IGtleShrZXkpCi0gICAgewotICAgICAgICBBU1NFUlQoa2V5ICE9
IGVtcHR5KCkpOwotICAgICAgICBBU1NFUlQoa2V5ICE9IGRlbGV0ZWQoKSk7Ci0gICAgfQogICAg
IGV4cGxpY2l0IFNpZ25hdHVyZUhhc2goV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQot
ICAgICAgICA6IGtleShkZWxldGVkKCkpCisgICAgICAgIDoga2V5KFdURjo6SGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKQogICAgIHsKICAgICB9CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNpZ25h
dHVyZUhhc2gmIHJocykgY29uc3QgeyByZXR1cm4gZXF1YWwoKnRoaXMsIHJocyk7IH0KICAgICBz
dGF0aWMgYm9vbCBlcXVhbChjb25zdCBTaWduYXR1cmVIYXNoJiBsaHMsIGNvbnN0IFNpZ25hdHVy
ZUhhc2gmIHJocykgeyByZXR1cm4gbGhzLmtleSA9PSByaHMua2V5IHx8IChsaHMua2V5ICYmIHJo
cy5rZXkgJiYgKmxocy5rZXkgPT0gKnJocy5rZXkpOyB9Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhh
c2goY29uc3QgU2lnbmF0dXJlSGFzaCYgc2lnbmF0dXJlKSB7IHJldHVybiBzaWduYXR1cmUua2V5
LT5oYXNoKCk7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBTaWduYXR1cmVIYXNo
JiBzaWduYXR1cmUpIHsgcmV0dXJuIHNpZ25hdHVyZS5rZXkgPyBzaWduYXR1cmUua2V5LT5oYXNo
KCkgOiAwOyB9CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRl
bGV0ZWQgPSBmYWxzZTsKLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Qg
eyByZXR1cm4ga2V5ID09IGRlbGV0ZWQoKTsgfQorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVk
VmFsdWUoKSBjb25zdCB7IHJldHVybiBrZXkuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQog
fTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KQEAgLTE2NSwxNiArMTYwLDE3IEBAIGNs
YXNzIFNpZ25hdHVyZUluZm9ybWF0aW9uIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgU2lnbmF0dXJl
SW5mb3JtYXRpb24mIHNpbmdsZXRvbigpOwogCi0gICAgc3RhdGljIHN0ZDo6cGFpcjxTaWduYXR1
cmVJbmRleCwgUmVmPFNpZ25hdHVyZT4+IFdBUk5fVU5VU0VEX1JFVFVSTiBhZG9wdChSZWY8U2ln
bmF0dXJlPiYmKTsKKyAgICBzdGF0aWMgUmVmPFNpZ25hdHVyZT4gV0FSTl9VTlVTRURfUkVUVVJO
IGFkb3B0KFJlZjxTaWduYXR1cmU+JiYpOwogICAgIHN0YXRpYyBjb25zdCBTaWduYXR1cmUmIFdB
Uk5fVU5VU0VEX1JFVFVSTiBnZXQoU2lnbmF0dXJlSW5kZXgpOwogICAgIHN0YXRpYyBTaWduYXR1
cmVJbmRleCBXQVJOX1VOVVNFRF9SRVRVUk4gZ2V0KGNvbnN0IFNpZ25hdHVyZSYpOwogICAgIHN0
YXRpYyB2b2lkIHRyeUNsZWFudXAoKTsKIAogcHJpdmF0ZToKLSAgICBIYXNoTWFwPFdhc206OlNp
Z25hdHVyZUhhc2gsIFdhc206OlNpZ25hdHVyZUluZGV4PiBtX3NpZ25hdHVyZU1hcDsKLSAgICBI
YXNoTWFwPFdhc206OlNpZ25hdHVyZUluZGV4LCBSZWY8U2lnbmF0dXJlPj4gbV9pbmRleE1hcDsK
LSAgICBTaWduYXR1cmVJbmRleCBtX25leHRJbmRleCB7IFNpZ25hdHVyZTo6Zmlyc3RWYWxpZElu
ZGV4IH07CisgICAgSGFzaFNldDxXYXNtOjpTaWduYXR1cmVIYXNoPiBtX3NpZ25hdHVyZVNldDsK
ICAgICBMb2NrIG1fbG9jazsKKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTaWduYXR1
cmVJbmZvcm1hdGlvbiogdGhlT25lOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBzaWduYXR1cmVJbmZvcm1hdGlvbkZsYWc7CiB9OwogCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6V2FzbQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVNpZ25hdHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWdu
YXR1cmVJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDFkYjBhOGNkYWQxYTY4ODhiZTg3MDRiODgxMmY3
M2QzYTVmYTAyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TaWduYXR1cmVJbmxpbmVzLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxOCBZdXN1a2UgU3V6dWtpIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4u
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZS5oIgorCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20geworCitpbmxpbmUgU2lnbmF0dXJl
SW5mb3JtYXRpb24mIFNpZ25hdHVyZUluZm9ybWF0aW9uOjpzaW5nbGV0b24oKQoreworICAgIHN0
ZDo6Y2FsbF9vbmNlKHNpZ25hdHVyZUluZm9ybWF0aW9uRmxhZywgW10gKCkgeworICAgICAgICB0
aGVPbmUgPSBuZXcgU2lnbmF0dXJlSW5mb3JtYXRpb247CisgICAgfSk7CisgICAgcmV0dXJuICp0
aGVPbmU7Cit9CisKK2lubGluZSBjb25zdCBTaWduYXR1cmUmIFNpZ25hdHVyZUluZm9ybWF0aW9u
OjpnZXQoU2lnbmF0dXJlSW5kZXggaW5kZXgpCit7CisgICAgQVNTRVJUKGluZGV4ICE9IFNpZ25h
dHVyZTo6aW52YWxpZEluZGV4KTsKKyAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxjb25zdCBTaWdu
YXR1cmUqPihpbmRleCk7Cit9CisKK2lubGluZSBTaWduYXR1cmVJbmRleCBTaWduYXR1cmVJbmZv
cm1hdGlvbjo6Z2V0KGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlKQoreworICAgIGlmICghQVNT
RVJUX0RJU0FCTEVEKSB7CisgICAgICAgIFNpZ25hdHVyZUluZm9ybWF0aW9uJiBpbmZvID0gc2lu
Z2xldG9uKCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soaW5mby5tX2xvY2spOwor
ICAgICAgICBBU1NFUlRfVU5VU0VEKGluZm8sIGluZm8ubV9zaWduYXR1cmVTZXQuY29udGFpbnMo
U2lnbmF0dXJlSGFzaCB7IG1ha2VSZWYoY29uc3RfY2FzdDxTaWduYXR1cmUmPihzaWduYXR1cmUp
KSB9KSk7CisgICAgfQorICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8U2lnbmF0dXJlSW5kZXg+KCZz
aWduYXR1cmUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQorCisjZW5kaWYgLy8g
RU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNUb1dhc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dh
c20uY3BwCmluZGV4IGZjYjliMGM2MThhZTY5ZTE1MTFhN2ZhNGNmM2JmMDY1MmQ2YjMxMmQuLjM2
NGY3Yzc0YmMxOWZjNTViZjJhZDY5YmFkNDkwZWNlZWVlOTE5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKICNp
bmNsdWRlICJXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCIKKyNpbmNsdWRlICJXYXNtU2lnbmF0dXJl
SW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmgKaW5k
ZXggZDM5MzAwNjkxOWQyN2FkMTc0NjlmZTI2OTVkYjg0Mzg0MjNkMDgyZS4uNzJhMzA2M2E0YjM3
YzU3MGNmOTQwZDc2YjU5ZDFjMGNjYmMwNWU0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaApAQCAtNDMsNyArNDMsNyBAQCBu
YW1lc3BhY2UgV2FzbSB7CiBjbGFzcyBNb2R1bGU7CiBzdHJ1Y3QgTW9kdWxlSW5mb3JtYXRpb247
CiBjbGFzcyBQbGFuOwotdXNpbmcgU2lnbmF0dXJlSW5kZXggPSB1aW50MzJfdDsKK3VzaW5nIFNp
Z25hdHVyZUluZGV4ID0gdWludDY0X3Q7CiB9CiAKIGNsYXNzIFN5bWJvbFRhYmxlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCmluZGV4IDEyNzBjNzliMWM0MzEw
Y2M1ZmM2MzAyOWFlODNiZmIxOGM1ZTAzYzYuLmVlMDBmYzg4ZTBjYWYyNTQ0ZDlkNzllY2M5M2Y0
ZTEyMzI1MzhiMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dh
c21Ub0pTLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5j
cHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUg
Ildhc21FeGNlcHRpb25UeXBlLmgiCiAjaW5jbHVkZSAiV2FzbUluc3RhbmNlLmgiCisjaW5jbHVk
ZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBX
YXNtIHsKIApAQCAtMzAxLDcgKzMwMiw4IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0qIHZtCiAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDApLCBHUFJJbmZvOjphcmd1
bWVudEdQUjMpOwogCiAgICAgICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6bnVtYmVyT2ZBcmd1
bWVudFJlZ2lzdGVycyA+PSA0LCAiV2UgcmVseSBvbiB0aGlzIHdpdGggdGhlIGNhbGwgYmVsb3cu
Iik7Ci0gICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShjYWxsRnVuYyk+KEdQUklu
Zm86OmFyZ3VtZW50R1BSMSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2lnbmF0dXJlSW5k
ZXgpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYnVmZmVyKSk7CisgICAgICAgIHN0YXRp
Y19hc3NlcnQoc2l6ZW9mKFNpZ25hdHVyZUluZGV4KSA9PSBzaXplb2YodWludDY0X3QpLCAiRm9s
bG93aW5nIGNvZGUgYXNzdW1lcyBTaWduYXR1cmVJbmRleCBpcyA2NGJpdC4iKTsKKyAgICAgICAg
aml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKGNhbGxGdW5jKT4oR1BSSW5mbzo6YXJndW1lbnRH
UFIxLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChzaWduYXR1cmVJbmRleCksIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihidWZmZXIpKTsKICAgICAgICAgYXV0byBjYWxsID0gaml0LmNh
bGwoT3BlcmF0aW9uUHRyVGFnKTsKICAgICAgICAgYXV0byBub0V4Y2VwdGlvbiA9IGppdC5lbWl0
RXhjZXB0aW9uQ2hlY2soKnZtLCBBc3NlbWJseUhlbHBlcnM6OkludmVydGVkRXhjZXB0aW9uQ2hl
Y2spOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RnVuY3Rpb24uY3BwCmluZGV4IDAyYjRjMjRjNDJiY2NmMTJmODIzYWIwNzk3NTNiMDVlNWEz
YWE1NGEuLjVkYjkyNGY4ZWNmYjAzYTdlMGJhNmY1ZDA4NDgyMmIzNDcxMWJhYzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24u
Y3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKICNpbmNsdWRl
ICJXYXNtRm9ybWF0LmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgorI2luY2x1ZGUgIldhc21T
aWduYXR1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RUTFMuaD4KICNpbmNsdWRlIDx3
dGYvU3lzdGVtVHJhY2luZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKaW5kZXggZDc0NDE3Y2IxYTRj
MWNhM2IyZjM4ZWZhMjA3N2E1MzhiMTY1ZWExMi4uZThjYTU4Y2JmNjBhYzQ2YWIyMzBlZTNkZjA0
YTVmNGEzMDI4ZjJmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2lu
Y2x1ZGUgIkpTV2ViQXNzZW1ibHlMaW5rRXJyb3IuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5
TW9kdWxlLmgiCiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJXYXNtU2ln
bmF0dXJlLmgiCisjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJX
ZWJBc3NlbWJseUZ1bmN0aW9uLmgiCiAjaW5jbHVkZSA8bGltaXRzPgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5j
dGlvbi5jcHAKaW5kZXggMzZmMzc4MzA2YmU3MjdjMDI5NTMxZGI0OTJhOGQwMDkyNzI5MWE2ZS4u
NDQ0ZWZiZjhiNGE3YTM1ZjQwZjAxY2ViNGM3OWVjODQzZWIxNjQ2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1
bmN0aW9uLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBl
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0
YW5jZS5oIgorI2luY2x1ZGUgIldhc21TaWduYXR1cmVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBK
U0MgewogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349143</attachid>
            <date>2018-09-07 06:41:29 -0700</date>
            <delta_ts>2018-09-07 10:19:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189401-20180907224128.patch</filename>
            <type>text/plain</type>
            <size>37710</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1Nzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OTQ2MDg3MWZlNjkwN2QyNzFhNGQwMDg2ZjIzNTRhODU4OTk4YmJkLi5jNTdlZWNhZWZmNjU1YWY4
OTdjMzk1M2ViMDA4YjdhZTA0YTU1MWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAxOC0wOS0wNyAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtXZWJBc3NlbWJseV0gT3B0aW1pemUgSlMgdG8gV2FzbSBj
YWxsIGJ5IHVzaW5nIHBvaW50ZXIgb2YgU2lnbmF0dXJlIGFzIFNpZ25hdHVyZUluZGV4CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk0MDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaWduYXR1cmVJbmZv
cm1hdGlvbiBpcyBhIGdsb2JhbCByZXBvc2l0b3J5IGZvciBTaWduYXR1cmUgdG8gbWFrZSBTaWdu
YXR1cmUgYXRvbWljLgorICAgICAgICBJdCB0YWtlcyBSZWY8U2lnbmF0dXJlPiYmIGFuZCBnZW5l
cmF0ZXMgU2lnbmF0dXJlSW5kZXguIEFuZCB3ZSBnZXQgY29uc3QgU2lnbmF0dXJlJgorICAgICAg
ICBieSB1c2luZyB0aGlzIFNpZ25hdHVyZUluZGV4LiBIb3dldmVyLCBjb252ZXJ0aW5nIFNpZ25h
dHVyZUluZGV4IHRvIGNvbnN0IFNpZ25hdHVyZSYKKyAgICAgICAgYWx3YXlzIGxvb2tzIHVwIGEg
aGFzaCB0YWJsZS4gVGhpcyBpcyBjb3N0bHkgc2luY2UgSlMgdG8gV2FzbSBjYWxscyBhbHdheXMg
dXNlCisgICAgICAgIFNpZ25hdHVyZSYgdG8gY2hlY2sgdHlwZXMgb2YgYXJndW1lbnRzLgorCisg
ICAgICAgIEluc3RlYWQgb2YgdXNpbmcgdGhpcyBoYXNoIHRhYmxlLCB0aGlzIHBhdGNoIHVzZXMg
YSBwb2ludGVyIG9mIFNpZ25hdHVyZSBhcyBTaWduYXR1cmVJbmRleC4KKyAgICAgICAgVGhpcyBh
bGxvd3MgdXMgdG8gY29udmVydCBTaWduYXR1cmVJbmRleCB0byBTaWduYXR1cmUgYnkganVzdCBj
YXN0aW5nIGl0LgorCisgICAgICAgIFdlIGFsc28gb3B0aW1pemUgU2lnbmF0dXJlSW5mb3JtYXRp
b246OnNpbmdsZXRvbiBieSBtYWtpbmcgYW4gYWNjZXNzb3IgZnVuY3Rpb24gaW5saW5lZC4KKyAg
ICAgICAgQW5kIHdlIG1vdmUgUHJvdG9DYWxsRnJhbWU6OmluaXQgdG8gdGhlIGhlYWRlciBzaW5j
ZSBpdCdzIGp1c3Qgc2V0dGluZyB2YWx1ZXMuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ugc2lnbmlm
aWNhbnRseSBvcHRpbWl6ZXMgSlMgdG8gd2FzbSBjYWxscyAoMWU3IHRpbWVzKSBmcm9tIDYwMG1z
IHRvIDMyMG1zLgorCisgICAgICAgIEluIHRoZSBmdXR1cmUsIHdlIGNhbiByZW1vdmUgU2lnbmF0
dXJlSW5kZXggYnkgZGlyZWN0bHkgaGFuZGxpbmcgUmVmPFNpZ25hdHVyZT46IGFkZGluZworICAg
ICAgICBkZXJlZigpIG9mIFNpZ25hdHVyZSB3aGljaCB1bnJlZ2lzdGVycyBpdHNlbGYgZnJvbSBT
aWduYXR1cmVJbmZvcm1hdGlvbiBjYXJlZnVsbHkuIE9yIHdlIGNhbgorICAgICAgICBtYWtlIFNp
Z25hdHVyZUluZGV4IHVpbnQzMl90IGJ5IGludHJvZHVjaW5nIGEgbWVjaGFuaXNtIHNpbWlsYXIg
dG8gU3RydWN0dXJlSUQuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGludGVycHJl
dGVyL1Byb3RvQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6OlByb3RvQ2FsbEZyYW1lOjppbml0
KToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KToKKyAgICAgICAgKiB3YXNtL1dh
c21CQlFQbGFuLmNwcDoKKyAgICAgICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAgICAgKEpT
Qzo6V2FzbTo6V2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbjo6b2Zmc2V0T2ZTaWduYXR1cmVJ
bmRleCk6CisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAgICAgKiB3
YXNtL1dhc21Nb2R1bGUuaDoKKyAgICAgICAgKiB3YXNtL1dhc21PTUdQbGFuLmNwcDoKKyAgICAg
ICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2Vj
dGlvblBhcnNlcjo6cGFyc2VUeXBlKToKKyAgICAgICAgKiB3YXNtL1dhc21TaWduYXR1cmUuY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6YWRvcHQpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6dHJ5Q2xlYW51cCk6CisgICAg
ICAgIChKU0M6Oldhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjpzaW5nbGV0b24pOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpXYXNtOjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiB3YXNtL1dhc21TaWduYXR1cmUuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6
U2lnbmF0dXJlOjppbmRleCBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206OlNpZ25hdHVyZUhh
c2g6OlNpZ25hdHVyZUhhc2gpOgorICAgICAgICAoSlNDOjpXYXNtOjpTaWduYXR1cmVIYXNoOjpo
YXNoKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2lnbmF0dXJlSGFzaDo6aXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpTaWduYXR1cmVIYXNoOjplbXB0
eSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206OlNpZ25hdHVyZUhhc2g6OmRlbGV0ZWQp
OiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbVNpZ25hdHVyZUlubGluZXMuaDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5j
cHAuCisgICAgICAgIChKU0M6Oldhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjpzaW5nbGV0b24p
OgorICAgICAgICAoSlNDOjpXYXNtOjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KToKKyAgICAg
ICAgKiB3YXNtL2pzL0pTVG9XYXNtLmNwcDoKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1i
bHlNb2R1bGUuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dhc21Ub0pTLmNwcDoKKyAgICAgICAgKEpT
Qzo6V2FzbTo6d2FzbVRvSlMpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlv
bi5jcHA6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6Cisg
ICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHA6CisKIDIwMTgt
MDktMDYgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KIAogICAg
ICAgICBbV2ViQXNzZW1ibHldIE9wdGltaXplIEpTIHRvIFdhc20gY2FsbCBieSByZW1vdmluZyBW
ZWN0b3IgYWxsb2NhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1MGEwMTlh
NjRlNjZjNGM3ZjQ4NzI0ZjFmOTkzZmQ2NmQ4ZTQ2Zjk3Li5mNWJiMDU1ZmU2YzZkOGMwYjI1ZGRj
NjczYjJkNjIzNzZiNTJiMGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUz
Niw2ICsxNTM2LDcgQEAKIAkJQUQ1QzM2RUMxRjc1QUQ3QzAwMEJDQUFGIC8qIFdhc21Ub0pTLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBREQwOUFFRTFG
NUY2MjNGMDAxMzEzQzIgLyogV2FzbVRvSlMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBRDVDMzZFRjFGN0EyNjNBMDAwQkNBQUYgLyogV2FzbU1l
bW9yeU1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFENUMzNkVFMUY3QTI2MjkwMDBCQ0FBRiAvKiBXYXNtTWVtb3J5TW9kZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFENzQzOEMwMUUwNDU3QTQw
MEZEMEMyQSAvKiBXYXNtU2lnbmF0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBRDc0MzhCRjFFMDQ1NzkyMDBGRDBDMkEgLyogV2FzbVNpZ25hdHVy
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTRC
QUEwN0NFQjgxRjQ5QTI5NkUwMjIwMyAvKiBXYXNtU2lnbmF0dXJlSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzBBNUY0MDNGMTFDNEY1OTlD
RDU5NkQ1IC8qIFdhc21TaWduYXR1cmVJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQUQ3QjRCMkUxRkEzRTI5ODAwQzlERjc5IC8qIFdh
c21OYW1lU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQUQ3QjRCMkQxRkEzRTI4NjAwQzlERjc5IC8qIFdhc21OYW1lU2VjdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFEODZBOTNFMUFB
NEQ4OEQwMDJGRTc3RiAvKiBXZWFrR0NNYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDg2QTkzRDFBQTREODdDMDAyRkU3N0YgLyogV2Vh
a0dDTWFwSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUFEOEZGMzk4MUVCNUJEQjIwMDg3RkY4MiAvKiBXYXNtSW5kZXhPck5hbWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEOEZGMzk1MUVC
NUJEODUwMDg3RkY4MiAvKiBXYXNtSW5kZXhPck5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzU5OSw3ICszNjAwLDYgQEAKIAkJNjVFQTcz
NjIwQkFFMzVEMTAwMUJCNTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21tb25JZGVudGlmaWVycy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1RUE3MzYzMEJBRTM1RDEwMDFCQjU2MCAvKiBDb21tb25J
ZGVudGlmaWVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uSWRl
bnRpZmllcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVGQjUxMTUxODRFRThG
ODAwQzEyQjcwIC8qIFByb3RvQ2FsbEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFByb3RvQ2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTY1
RkI1MTE2MTg0RUU5QkMwMEMxMkI3MCAvKiBQcm90b0NhbGxGcmFtZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm90b0NhbGxGcmFtZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTZBMzhDRkE3MUUzMkI1OEIwMDYwMjA2RiAvKiBBc3luY1N0YWNr
VHJhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXN5bmNTdGFj
a1RyYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkEzOENGQTgxRTMyQjU4
QjAwNjAyMDZGIC8qIEFzeW5jU3RhY2tUcmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBc3luY1N0YWNrVHJhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NkFEMkNCNEMxOUI5MTQwMTAwMDY1NzE5IC8qIERlYnVnZ2VyRXZhbEVuYWJsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVidWdnZXJFdmFsRW5hYmxlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDM2NCw2ICs0MzY0LDcgQEAKIAkJQUQ1QzM2RjAxRjdB
MjZCRjAwMEJDQUFGIC8qIFdhc21NZW1vcnlNb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdh
c21NZW1vcnlNb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ3NDM4QkUx
RTA0NTc5MjAwRkQwQzJBIC8qIFdhc21TaWduYXR1cmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2FzbVNpZ25hdHVyZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUFENzQzOEJGMUUwNDU3OTIwMEZEMEMyQSAvKiBXYXNtU2lnbmF0dXJlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21TaWduYXR1cmUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzBBNUY0MDNGMTFDNEY1OTlDRDU5NkQ1IC8qIFdhc21TaWdu
YXR1cmVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21TaWdu
YXR1cmVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEN0I0QjJEMUZB
M0UyODYwMEM5REY3OSAvKiBXYXNtTmFtZVNlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2FzbU5hbWVTZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUFEODZBOTNEMUFBNEQ4N0MwMDJGRTc3RiAvKiBXZWFrR0NNYXBJbmxpbmVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtHQ01hcElubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ4REQ2Q0YxRjY3MDg5RjAwMDRFQjUyIC8qIEpTVG9XYXNt
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEpTVG9XYXNtLmg7IHBhdGggPSBqcy9KU1RvV2FzbS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTUwOCw4ICs1NTA5LDggQEAKIAkJCQk3OTZEQUEy
QTFFODlDQ0Q2MDA1REYyNEEgLyogQ2FsbGVlQml0cy5oICovLAogCQkJCTE0MjlEOERCMEVEMjIw
NUIwMEI4OTYxOSAvKiBDYWxsRnJhbWUuY3BwICovLAogCQkJCTE0MjlEOERDMEVEMjIwNUIwMEI4
OTYxOSAvKiBDYWxsRnJhbWUuaCAqLywKLQkJCQlGRUEzQkJBNzIxMkI2NTU4MDBFOTNBRDEgLyog
Q2FsbEZyYW1lSW5saW5lcy5oICovLAogCQkJCUE3Rjg2OUVDMEY5NUMyRUMwMDU1ODY5NyAvKiBD
YWxsRnJhbWVDbG9zdXJlLmggKi8sCisJCQkJRkVBM0JCQTcyMTJCNjU1ODAwRTkzQUQxIC8qIENh
bGxGcmFtZUlubGluZXMuaCAqLywKIAkJCQkxNDI5RDg1QjBFRDIxOEU5MDBCODk2MTkgLyogQ0xv
b3BTdGFjay5jcHAgKi8sCiAJCQkJMTRENzkyNjQwREFBMDNGQjAwMUE5RjA1IC8qIENMb29wU3Rh
Y2suaCAqLywKIAkJCQlBN0MxRUFFQjE3OTg3QUI2MDAyOTlEQjIgLyogQ0xvb3BTdGFja0lubGlu
ZXMuaCAqLywKQEAgLTU1MTgsNyArNTUxOSw2IEBACiAJCQkJMTQyOUQ3RDMwRUQyMTI4MjAwQjg5
NjE5IC8qIEludGVycHJldGVyLmNwcCAqLywKIAkJCQkxNDI5RDc3QjBFRDIwRDczMDBCODk2MTkg
LyogSW50ZXJwcmV0ZXIuaCAqLywKIAkJCQlFMzlEOUQ4NDFEMzkwMDA2MDA2NjcyODIgLyogSW50
ZXJwcmV0ZXJJbmxpbmVzLmggKi8sCi0JCQkJNjVGQjUxMTYxODRFRTlCQzAwQzEyQjcwIC8qIFBy
b3RvQ2FsbEZyYW1lLmNwcCAqLywKIAkJCQk2NUZCNTExNTE4NEVFOEY4MDBDMTJCNzAgLyogUHJv
dG9DYWxsRnJhbWUuaCAqLywKIAkJCQkxNDlCMjRGRjBEOEFGNkQxMDA5Q0I4QzcgLyogUmVnaXN0
ZXIuaCAqLywKIAkJCQlEQzE3RTgxMzFDOUM3RkQ0MDA4QTZBQjMgLyogU2hhZG93Q2hpY2tlbi5j
cHAgKi8sCkBAIC02MzYyLDYgKzYzNjIsNyBAQAogCQkJCTUzRjQwRTg0MUQ1OEY5NzcwMDk5QTFC
NiAvKiBXYXNtU2VjdGlvbnMuaCAqLywKIAkJCQlBRDc0MzhCRTFFMDQ1NzkyMDBGRDBDMkEgLyog
V2FzbVNpZ25hdHVyZS5jcHAgKi8sCiAJCQkJQUQ3NDM4QkYxRTA0NTc5MjAwRkQwQzJBIC8qIFdh
c21TaWduYXR1cmUuaCAqLywKKwkJCQkzMEE1RjQwM0YxMUM0RjU5OUNENTk2RDUgLyogV2FzbVNp
Z25hdHVyZUlubGluZXMuaCAqLywKIAkJCQlFM0EwNTMxOTIxMzQyQjY3MDAyMkVDMTQgLyogV2Fz
bVN0cmVhbWluZ1BhcnNlci5jcHAgKi8sCiAJCQkJRTNBMDUzMTYyMTM0MkI2NjAwMjJFQzE0IC8q
IFdhc21TdHJlYW1pbmdQYXJzZXIuaCAqLywKIAkJCQlBRDVDMzZFMzFGNjlFQzhCMDAwQkNBQUYg
LyogV2FzbVRhYmxlLmNwcCAqLywKQEAgLTg0NDQsNyArODQ0NSw2IEBACiAJCQkJOTlEQTAwQTMx
QkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRvci5weSBpbiBIZWFkZXJzICovLAog
CQkJCTk5REEwMEE0MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19tb2RlbC5weSBpbiBIZWFk
ZXJzICovLAogCQkJCTk5REEwMEE1MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc190ZW1wbGF0
ZXMucHkgaW4gSGVhZGVycyAqLywKLQkJCQlGRUEzQkJBODIxMkI2NTU5MDBFOTNBRDEgLyogQ2Fs
bEZyYW1lSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFERUExMzIxQjlGMzE2MzAwNkQ2
NUREIC8qIEJ1aWx0aW5VdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUU3Mjk0MEIxOTBGMDUx
NDAwMUE5MUI1IC8qIEJ1bmRsZVBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk3MTVF
RDhFNDYwMEYxNjdCMiAvKiBCdXR0ZXJmbHkuaCBpbiBIZWFkZXJzICovLApAQCAtODQ2OSw2ICs4
NDY5LDcgQEAKIAkJCQkwRjY0QjI3QTFBNzk1N0IyMDA2RTRFNjYgLyogQ2FsbEVkZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTc5NkRBQTJCMUU4OUNDRDYwMDVERjI0QSAvKiBDYWxsZWVCaXRzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxNDI5RDhERTBFRDIyMDVCMDBCODk2MTkgLyogQ2FsbEZyYW1l
LmggaW4gSGVhZGVycyAqLywKKwkJCQlGRUEzQkJBODIxMkI2NTU5MDBFOTNBRDEgLyogQ2FsbEZy
YW1lSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjJFQzlCQjcxQjdFQjA3QzAwMzAzQUQx
IC8qIENhbGxGcmFtZVNodWZmbGVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk2MkQ3NTVENzFC
ODRGQjRBMDAxODAxRkEgLyogQ2FsbEZyYW1lU2h1ZmZsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMEI4M0IxMTRCQ0Y3MTgwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICov
LApAQCAtODc1OSw2ICs4NzYwLDcgQEAKIAkJCQlBNzA0NDdFRTE3QTBCRDcwMDBGNTg5OEUgLyog
RHVtcENvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzE4RkUwMUNBQzk4MkYwMERGQ0M1
NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyQTgzNjM4NjE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRkUwODZCQ0EyMTIzREVGQjAwM0YyOTI5IC8qIEVudHJ5RnJhbWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJBRDJFREZCMTk3OTlFMzgwMDRENjQ3OCAvKiBFbnVtZXJh
dGlvbk1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMzA0NjA3MEUxRjQ5N0YwMDMyMzJDRiAv
KiBFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMkU5MEQwRTE4MzlEQjAwMEY5Mjk3IC8q
IEVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtOTA5NSw3ICs5MDk3LDYgQEAK
IAkJCQk5Nzg4MDE0MTE0NzFBRDkyMDA0MUIwMTYgLyogSlNEYXRlTWF0aC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQzJBN0Y2ODgxNjA0MzJENDAwRjc2Qjk4IC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdERjEzQzFFMjk3MTEzMDA5NTk1MUIgLyogSlNEZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUZFMDg2QkNB
MjEyM0RFRkIwMDNGMjkyOSAvKiBFbnRyeUZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTM4
NEVFNjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODZFM0M2MTQxNjdCQUJENzAwNkQ3NjBBIC8qIEpTRXhwb3J0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBN0I0QUNBRjE0ODRDOUNFMDBCMzhBMzYgLyogSlNFeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJz
ICovLApAQCAtOTYyMiw2ICs5NjIzLDcgQEAKIAkJCQlFM0EwNTMxQzIxMzQyQjY4MDAyMkVDMTQg
LyogV2FzbVNlY3Rpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzRjQwRTg1MUQ1OEY5
NzcwMDk5QTFCNiAvKiBXYXNtU2VjdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUFENzQzOEMw
MUUwNDU3QTQwMEZEMEMyQSAvKiBXYXNtU2lnbmF0dXJlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0
QkFBMDdDRUI4MUY0OUEyOTZFMDIyMDMgLyogV2FzbVNpZ25hdHVyZUlubGluZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUzQTA1MzFBMjEzNDJCNjgwMDIyRUMxNCAvKiBXYXNtU3RyZWFtaW5nUGFy
c2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDVDMzZFNjFGNjlFQzkxMDAwQkNBQUYgLyogV2Fz
bVRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjUwRDJEMjFFOERBMDVBMDAyOUE5MzIgLyog
V2FzbVRodW5rcy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5k
ZXggZTJiYWYxYTU3NTVmYzdlNGYyM2Y5ZDE0ZDlkZTM0OTFmMzkwYTE4ZS4uMzg4MzA3NjhlZmJi
NjNhNGZkYzNmYjMxMWFiMDZlYmQ2MzZmNjRmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dApAQCAtNTg3LDcgKzU4Nyw2IEBAIGludGVycHJldGVyL0Fic3RyYWN0UEMuY3BwCiBpbnRlcnBy
ZXRlci9DTG9vcFN0YWNrLmNwcAogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCi1pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAKIGludGVy
cHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwCiBpbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxG
cmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJh
bWUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MmJjOTg4YjE3OGI3Yjk1MzAw
OGUyNjA1NTcxY2IzMzJjNDdhOGY2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxG
cmFtZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCi0KLSNpbmNsdWRlICJDb2RlQmxvY2suaCIKLSNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKLQotbmFt
ZXNwYWNlIEpTQyB7Ci0KLXZvaWQgUHJvdG9DYWxsRnJhbWU6OmluaXQoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEpTT2JqZWN0KiBjYWxsZWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBpbnQgYXJnQ291bnRJ
bmNsdWRpbmdUaGlzLCBKU1ZhbHVlKiBvdGhlckFyZ3MpCi17Ci0gICAgdGhpcy0+YXJncyA9IG90
aGVyQXJnczsKLSAgICB0aGlzLT5zZXRDb2RlQmxvY2soY29kZUJsb2NrKTsKLSAgICB0aGlzLT5z
ZXRDYWxsZWUoY2FsbGVlKTsKLSAgICB0aGlzLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyhhcmdDb3VudEluY2x1ZGluZ1RoaXMpOwotICAgIGlmIChjb2RlQmxvY2sgJiYgYXJnQ291bnRJ
bmNsdWRpbmdUaGlzIDwgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpCi0gICAgICAgIHRoaXMt
Pmhhc0FyaXR5TWlzbWF0Y2ggPSB0cnVlOwotICAgIGVsc2UKLSAgICAgICAgdGhpcy0+aGFzQXJp
dHlNaXNtYXRjaCA9IGZhbHNlOwotCi0gICAgLy8gUm91bmQgdXAgYXJnQ291bnRJbmNsdWRpbmdU
aGlzIHRvIGtlZXAgdGhlIHN0YWNrIGZyYW1lIHNpemUgYWxpZ25lZC4KLSAgICBzaXplX3QgcGFk
ZGVkQXJnc0NvdW50ID0gcm91bmRBcmd1bWVudENvdW50VG9BbGlnbkZyYW1lKGFyZ0NvdW50SW5j
bHVkaW5nVGhpcyk7Ci0gICAgdGhpcy0+c2V0UGFkZGVkQXJnQ291bnQocGFkZGVkQXJnc0NvdW50
KTsKLSAgICB0aGlzLT5jbGVhckN1cnJlbnRWUEMoKTsKLSAgICB0aGlzLT5zZXRUaGlzVmFsdWUo
dGhpc1ZhbHVlKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oCmluZGV4IDE2N2IzOTQ5OWM0
ZjdiOGUzZDA0MDc1YmU4NzhhZjAzNTE3YzFmY2IuLjk5OTQ4MjVmMzdiZDQ1Zjc5OTljYjQ5NjE4
YjgzZjk3ZDBjMzhlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9Qcm90b0NhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9Qcm90b0NhbGxGcmFtZS5oCkBAIC0yNSw3ICsyNSw5IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIuaCIKKyNpbmNsdWRl
ICJTdGFja0FsaWdubWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3JiaWRIZWFwQWxsb2NhdGlvbi5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTczLDQgKzc1LDIyIEBAIHN0cnVjdCBKU19FWFBPUlRf
UFJJVkFURSBQcm90b0NhbGxGcmFtZSB7CiAgICAgfQogfTsKIAoraW5saW5lIHZvaWQgUHJvdG9D
YWxsRnJhbWU6OmluaXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KiBjYWxsZWUsIEpT
VmFsdWUgdGhpc1ZhbHVlLCBpbnQgYXJnQ291bnRJbmNsdWRpbmdUaGlzLCBKU1ZhbHVlKiBvdGhl
ckFyZ3MpCit7CisgICAgdGhpcy0+YXJncyA9IG90aGVyQXJnczsKKyAgICB0aGlzLT5zZXRDb2Rl
QmxvY2soY29kZUJsb2NrKTsKKyAgICB0aGlzLT5zZXRDYWxsZWUoY2FsbGVlKTsKKyAgICB0aGlz
LT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhhcmdDb3VudEluY2x1ZGluZ1RoaXMpOwor
ICAgIGlmIChjb2RlQmxvY2sgJiYgYXJnQ291bnRJbmNsdWRpbmdUaGlzIDwgY29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCkpCisgICAgICAgIHRoaXMtPmhhc0FyaXR5TWlzbWF0Y2ggPSB0cnVlOwor
ICAgIGVsc2UKKyAgICAgICAgdGhpcy0+aGFzQXJpdHlNaXNtYXRjaCA9IGZhbHNlOworCisgICAg
Ly8gUm91bmQgdXAgYXJnQ291bnRJbmNsdWRpbmdUaGlzIHRvIGtlZXAgdGhlIHN0YWNrIGZyYW1l
IHNpemUgYWxpZ25lZC4KKyAgICBzaXplX3QgcGFkZGVkQXJnc0NvdW50ID0gcm91bmRBcmd1bWVu
dENvdW50VG9BbGlnbkZyYW1lKGFyZ0NvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgdGhpcy0+c2V0
UGFkZGVkQXJnQ291bnQocGFkZGVkQXJnc0NvdW50KTsKKyAgICB0aGlzLT5jbGVhckN1cnJlbnRW
UEMoKTsKKyAgICB0aGlzLT5zZXRUaGlzVmFsdWUodGhpc1ZhbHVlKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJ
UkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVy
YXRvci5jcHAKaW5kZXggM2U3Y2U2MGFkNzRiMDAyMDQ3NGE4Njk5M2RhNzZlNzE4MGRjNmYyNC4u
ZTBiYzE1OTkzMjBjMGUyNzZkYTY1ODAzZmFkMmU0ZDMyOThiYzA1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtNTksNiArNTks
NyBAQAogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKICNpbmNsdWRlICJXYXNtT01HUGxhbi5oIgog
I2luY2x1ZGUgIldhc21PcGNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJXYXNtU2lnbmF0dXJlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIldhc21UaHVua3MuaCIKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5j
bHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC0xMjI5LDEzICsxMjMwLDEzIEBAIGF1dG8gQjNJUkdl
bmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0
b3I8RXhwcmVzc2lvCiAKICAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgV2FzbVRvV2FzbUltcG9y
dGFibGVGdW5jdGlvbiBpcyBpbml0aWFsaXplZC4gV2UgdHJhcCBpZiBpdCBpc24ndC4gQW4gImlu
dmFsaWQiIFNpZ25hdHVyZUluZGV4IGluZGljYXRlcyBpdCdzIG5vdCBpbml0aWFsaXplZC4KICAg
ICAgICAgLy8gRklYTUU6IHdoZW4gd2UgaGF2ZSB0cmFwIGhhbmRsZXJzLCB3ZSBjYW4ganVzdCBs
ZXQgdGhlIGNhbGwgZmFpbCBiZWNhdXNlIFNpZ25hdHVyZTo6aW52YWxpZEluZGV4IGlzIDAuIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzcyMTAKLSAgICAgICAgc3Rh
dGljX2Fzc2VydChzaXplb2YoV2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbjo6c2lnbmF0dXJl
SW5kZXgpID09IHNpemVvZih1aW50MzJfdCksICJMb2FkIGNvZGVnZW4gYXNzdW1lcyBpMzIiKTsK
LSAgICAgICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlU2lnbmF0dXJlSW5kZXggPSBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEludDMyLCBvcmlnaW4o
KSwgY2FsbGFibGVGdW5jdGlvbiwgc2FmZUNhc3Q8aW50MzJfdD4oT0JKRUNUX09GRlNFVE9GKFdh
c21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb24sIHNpZ25hdHVyZUluZGV4KSkpOworICAgICAgICBz
dGF0aWNfYXNzZXJ0KHNpemVvZihXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjpzaWduYXR1
cmVJbmRleCkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgIkxvYWQgY29kZWdlbiBhc3N1bWVzIGk2NCIp
OworICAgICAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVTaWduYXR1cmVJbmRleCA9IG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgSW50NjQsIG9yaWdp
bigpLCBjYWxsYWJsZUZ1bmN0aW9uLCBzYWZlQ2FzdDxpbnQzMl90PihXYXNtVG9XYXNtSW1wb3J0
YWJsZUZ1bmN0aW9uOjpvZmZzZXRPZlNpZ25hdHVyZUluZGV4KCkpKTsKICAgICAgICAgewogICAg
ICAgICAgICAgQ2hlY2tWYWx1ZSogY2hlY2sgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENo
ZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ssIG9yaWdpbigpLAogICAgICAgICAgICAgICAgIG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgRXF1YWwsIG9yaWdpbigpLAogICAg
ICAgICAgICAgICAgICAgICBjYWxsZWVTaWduYXR1cmVJbmRleCwKLSAgICAgICAgICAgICAgICAg
ICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2lu
KCksIFNpZ25hdHVyZTo6aW52YWxpZEluZGV4KSkpOworICAgICAgICAgICAgICAgICAgICBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgU2ln
bmF0dXJlOjppbnZhbGlkSW5kZXgpKSk7CiAKICAgICAgICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0
b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYpIHsKICAgICAgICAgICAgICAgICB0aGlzLT5lbWl0RXhjZXB0aW9uQ2hlY2soaml0LCBF
eGNlcHRpb25UeXBlOjpOdWxsVGFibGVFbnRyeSk7CkBAIC0xMjQ0LDcgKzEyNDUsNyBAQCBhdXRv
IEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVy
ZSwgVmVjdG9yPEV4cHJlc3NpbwogCiAgICAgICAgIC8vIENoZWNrIHRoZSBzaWduYXR1cmUgbWF0
Y2hlcyB0aGUgdmFsdWUgd2UgZXhwZWN0LgogICAgICAgICB7Ci0gICAgICAgICAgICBFeHByZXNz
aW9uVHlwZSBleHBlY3RlZFNpZ25hdHVyZUluZGV4ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIFNpZ25hdHVyZUluZm9ybWF0aW9uOjpn
ZXQoc2lnbmF0dXJlKSk7CisgICAgICAgICAgICBFeHByZXNzaW9uVHlwZSBleHBlY3RlZFNpZ25h
dHVyZUluZGV4ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KG1fcHJv
Yywgb3JpZ2luKCksIFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJlKSk7CiAgICAg
ICAgICAgICBDaGVja1ZhbHVlKiBjaGVjayA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q2hl
Y2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2luKCksCiAgICAgICAgICAgICAgICAgbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBOb3RFcXVhbCwgb3JpZ2luKCksIGNh
bGxlZVNpZ25hdHVyZUluZGV4LCBleHBlY3RlZFNpZ25hdHVyZUluZGV4KSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAppbmRleCA0M2M4ZjU2MmFmYTFjMzYz
M2E3ZTZjNjFmNDA5MjJlYzBiZTk3MjEzLi4yMmE2NWMzMTEwY2ZjOGNkYjk0Y2QxMDVmYjZkN2Mz
ZTUzZTc3MGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJR
UGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3Bw
CkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5oIgog
I2luY2x1ZGUgIldhc21NZW1vcnkuaCIKICNpbmNsdWRlICJXYXNtTW9kdWxlUGFyc2VyLmgiCisj
aW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJXYXNtVGllclVwQ291
bnQuaCIKICNpbmNsdWRlICJXYXNtVmFsaWRhdGUuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCmluZGV4IGU0M2Y0ZWQ5MzYx
NjdmZjI5MzhkODM3YTBjZTA4OGQ0M2QyMGE0ZTYuLjQ2MzIzOTRkYjJjZTNjMjU4ZmVkZDc2ZWEw
MTNlYmE1ZDE3NWI3MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Gb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgK
QEAgLTI3Niw2ICsyNzYsNyBAQCBzdHJ1Y3QgSW50ZXJuYWxGdW5jdGlvbiB7CiAvLyBtZWFudCBh
cyBmYXN0IGxvb2t1cCB0YWJsZXMgZm9yIHRoZXNlIG9wY29kZXMgYW5kIGRvIG5vdCBvd24gY29k
ZS4KIHN0cnVjdCBXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uIHsKICAgICB1c2luZyBMb2Fk
TG9jYXRpb24gPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8V2FzbUVudHJ5UHRyVGFnPio7CisgICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNpZ25hdHVyZUluZGV4KCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb24sIHNpZ25hdHVyZUluZGV4KTsg
fQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZFbnRyeXBvaW50TG9hZExvY2F0aW9uKCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb24sIGVu
dHJ5cG9pbnRMb2FkTG9jYXRpb24pOyB9CiAKICAgICAvLyBGSVhNRTogUGFjayBzaWduYXR1cmUg
aW5kZXggYW5kIGNvZGUgcG9pbnRlciBpbnRvIG9uZSA2NC1iaXQgdmFsdWUuIFNlZSA8aHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTUxMT4uCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCmluZGV4IDg3MzVjZThlNmFj
Y2IzOGU4NGM4NGI3YjhlMTFkNTMzNzlhYjhkYmUuLjA4OGU3MjhjZTRjYzU0Y2UzYzYwNmI0MGYy
NTVhNjA5ZDU3YjNiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21GdW5jdGlvblBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21G
dW5jdGlvblBhcnNlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQogCiAjaW5jbHVkZSAiV2FzbVBhcnNlci5oIgorI2luY2x1ZGUgIldhc21TaWduYXR1cmVJbmxp
bmVzLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBXYXNtIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21N
b2R1bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaAppbmRleCBm
YTM2YTY5YjgwMzkxNWQ2MWMzOTZmYzFiM2Y5YmM3NjQyMDBlNjMyLi42NTJkZGQzN2RiOGU1Nzg4
ZDA1ODc1ZDJjMmRmYzdmYWRjOWU3MzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtTW9kdWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bU1vZHVsZS5oCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCBDb250ZXh0Owogc3RydWN0IE1vZHVs
ZUluZm9ybWF0aW9uOwogY2xhc3MgUGxhbjsKIAotdXNpbmcgU2lnbmF0dXJlSW5kZXggPSB1aW50
MzJfdDsKK3VzaW5nIFNpZ25hdHVyZUluZGV4ID0gdWludDY0X3Q7CiAKIGNsYXNzIE1vZHVsZSA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNb2R1bGU+IHsKIHB1YmxpYzoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAppbmRleCA5ZTBjNGE1NjY2ZTQ0ZTBl
YWNjMjMxMmFiYmI3NjU0NTNiODc5ZjQ4Li5lMzFiNDcxYjc5MjUyZGNlY2U2N2Y2ZmFmZGYwNmI3
MTQ4MzMyN2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01H
UGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3Bw
CkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiV2FzbU1hY2hpbmVUaHJlYWRzLmgiCiAjaW5j
bHVkZSAiV2FzbU1lbW9yeS5oIgogI2luY2x1ZGUgIldhc21OYW1lU2VjdGlvbi5oIgorI2luY2x1
ZGUgIldhc21TaWduYXR1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2FzbVZhbGlkYXRlLmgiCiAj
aW5jbHVkZSAiV2FzbVdvcmtsaXN0LmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcAppbmRleCA5
YTliYWNiNjdkZWQyNTA0NTM1ZDhjMmRlNWM1ZWQ4MzNkZWYxNjAyLi5hZTg3MjVkMDc5Y2MzYzlj
ODgyMDA0NzBkYzBiZmY3YmU3NjQ0ZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
V2FzbU5hbWVTZWN0aW9uUGFyc2VyLmgiCiAjaW5jbHVkZSAiV2FzbU9wcy5oIgogI2luY2x1ZGUg
Ildhc21TZWN0aW9ucy5oIgorI2luY2x1ZGUgIldhc21TaWduYXR1cmVJbmxpbmVzLmgiCiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKQEAgLTc1LDggKzc2LDcgQEAgYXV0byBT
ZWN0aW9uUGFyc2VyOjpwYXJzZVR5cGUoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgICAgICBy
ZXR1cm5UeXBlID0gVHlwZTo6Vm9pZDsKICAgICAgICAgc2lnbmF0dXJlLT5yZXR1cm5UeXBlKCkg
PSByZXR1cm5UeXBlOwogCi0gICAgICAgIHN0ZDo6cGFpcjxTaWduYXR1cmVJbmRleCwgUmVmPFNp
Z25hdHVyZT4+IHJlc3VsdCA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjphZG9wdChXVEZNb3ZlKHNp
Z25hdHVyZSkpOwotICAgICAgICBtX2luZm8tPnVzZWRTaWduYXR1cmVzLnVuY2hlY2tlZEFwcGVu
ZChXVEZNb3ZlKHJlc3VsdC5zZWNvbmQpKTsKKyAgICAgICAgbV9pbmZvLT51c2VkU2lnbmF0dXJl
cy51bmNoZWNrZWRBcHBlbmQoU2lnbmF0dXJlSW5mb3JtYXRpb246OmFkb3B0KFdURk1vdmUoc2ln
bmF0dXJlKSkpOwogICAgIH0KICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAppbmRleCA2YTQyZDUxNzE5NWVhNGZiNjFkOTJi
MTBjOGNjMzc3MzY3YzJlYjlkLi4yOWNlMjEzNzUyMTNjMzE0NTVhYTMzYTI5NWU4Zjg2ZTRkOWI0
ZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcApA
QCAtNDEsNiArNDEsOSBAQCBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiB9CiB9
CiAKK1NpZ25hdHVyZUluZm9ybWF0aW9uKiBTaWduYXR1cmVJbmZvcm1hdGlvbjo6dGhlT25lIHsg
bnVsbHB0ciB9Oworc3RkOjpvbmNlX2ZsYWcgU2lnbmF0dXJlSW5mb3JtYXRpb246OnNpZ25hdHVy
ZUluZm9ybWF0aW9uRmxhZzsKKwogU3RyaW5nIFNpZ25hdHVyZTo6dG9TdHJpbmcoKSBjb25zdAog
ewogICAgIFN0cmluZyByZXN1bHQobWFrZVN0cmluZyhyZXR1cm5UeXBlKCkpKTsKQEAgLTgzLDYw
ICs4NiwyMiBAQCBTaWduYXR1cmVJbmZvcm1hdGlvbjo6U2lnbmF0dXJlSW5mb3JtYXRpb24oKQog
ewogfQogCi1TaWduYXR1cmVJbmZvcm1hdGlvbiYgU2lnbmF0dXJlSW5mb3JtYXRpb246OnNpbmds
ZXRvbigpCi17Ci0gICAgc3RhdGljIFNpZ25hdHVyZUluZm9ybWF0aW9uKiB0aGVPbmU7Ci0gICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIHNpZ25hdHVyZUluZm9ybWF0aW9uRmxhZzsKLSAgICBzdGQ6
OmNhbGxfb25jZShzaWduYXR1cmVJbmZvcm1hdGlvbkZsYWcsIFtdICgpIHsKLSAgICAgICAgdGhl
T25lID0gbmV3IFNpZ25hdHVyZUluZm9ybWF0aW9uOwotICAgIH0pOwotCi0gICAgcmV0dXJuICp0
aGVPbmU7Ci19Ci0KLXN0ZDo6cGFpcjxTaWduYXR1cmVJbmRleCwgUmVmPFNpZ25hdHVyZT4+IFNp
Z25hdHVyZUluZm9ybWF0aW9uOjphZG9wdChSZWY8U2lnbmF0dXJlPiYmIHNpZ25hdHVyZSkKK1Jl
ZjxTaWduYXR1cmU+IFNpZ25hdHVyZUluZm9ybWF0aW9uOjphZG9wdChSZWY8U2lnbmF0dXJlPiYm
IHNpZ25hdHVyZSkKIHsKICAgICBTaWduYXR1cmVJbmZvcm1hdGlvbiYgaW5mbyA9IHNpbmdsZXRv
bigpOwogICAgIExvY2tIb2xkZXIgbG9jayhpbmZvLm1fbG9jayk7CiAKLSAgICBTaWduYXR1cmVJ
bmRleCBuZXh0VmFsdWUgPSBpbmZvLm1fbmV4dEluZGV4OwotICAgIGF1dG8gYWRkUmVzdWx0ID0g
aW5mby5tX3NpZ25hdHVyZU1hcC5hZGQoU2lnbmF0dXJlSGFzaCB7IHNpZ25hdHVyZS5wdHIoKSB9
LCBuZXh0VmFsdWUpOworICAgIFNpZ25hdHVyZUluZGV4IG5leHRWYWx1ZSA9IHNpZ25hdHVyZS0+
aW5kZXgoKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IGluZm8ubV9zaWduYXR1cmVTZXQuYWRkKFNp
Z25hdHVyZUhhc2ggeyBzaWduYXR1cmUuY29weVJlZigpIH0pOwogICAgIGlmIChhZGRSZXN1bHQu
aXNOZXdFbnRyeSkgewotICAgICAgICArK2luZm8ubV9uZXh0SW5kZXg7Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUKGluZm8ubV9uZXh0SW5kZXggPiBuZXh0VmFsdWUpOyAvLyBjcmFzaCBvbiBvdmVy
Zmxvdy4KLSAgICAgICAgQVNTRVJUKG5leHRWYWx1ZSA9PSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlKTsKICAgICAgICAgaWYgKFdhc21TaWduYXR1cmVJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAg
ICAgICAgIGRhdGFMb2dMbigiQWRvcHQgbmV3IHNpZ25hdHVyZSAiLCBzaWduYXR1cmUuZ2V0KCks
ICIgd2l0aCBpbmRleCAiLCBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLCAiIGhhc2g6ICIsIHNp
Z25hdHVyZS0+aGFzaCgpKTsKLQotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IGluZm8ubV9pbmRl
eE1hcC5hZGQobmV4dFZhbHVlLCBzaWduYXR1cmUuY29weVJlZigpKTsKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgICAgICBBU1NFUlQoaW5mby5tX2lu
ZGV4TWFwLnNpemUoKSA9PSBpbmZvLm1fc2lnbmF0dXJlTWFwLnNpemUoKSk7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfcGFpcihuZXh0VmFsdWUsIFdURk1vdmUoc2lnbmF0dXJlKSk7CisgICAg
ICAgICAgICBkYXRhTG9nTG4oIkFkb3B0IG5ldyBzaWduYXR1cmUgIiwgc2lnbmF0dXJlLmdldCgp
LCAiIHdpdGggaW5kZXggIiwgbmV4dFZhbHVlLCAiIGhhc2g6ICIsIHNpZ25hdHVyZS0+aGFzaCgp
KTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoc2lnbmF0dXJlKTsKICAgICB9CisgICAgbmV4dFZh
bHVlID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT5rZXktPmluZGV4KCk7CiAgICAgaWYgKFdhc21TaWdu
YXR1cmVJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZ0xuKCJFeGlzdGluZyBzaWdu
YXR1cmUgIiwgc2lnbmF0dXJlLmdldCgpLCAiIHdpdGggaW5kZXggIiwgYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSwgIiBoYXNoOiAiLCBzaWduYXR1cmUtPmhhc2goKSk7Ci0gICAgQVNTRVJUKGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgIT0gU2lnbmF0dXJlOjppbnZhbGlkSW5kZXgpOwotICAg
IEFTU0VSVChpbmZvLm1faW5kZXhNYXAuY29udGFpbnMoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSkpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
LCBSZWY8U2lnbmF0dXJlPigqaW5mby5tX2luZGV4TWFwLmdldChhZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlKSkpOwotfQotCi1jb25zdCBTaWduYXR1cmUmIFNpZ25hdHVyZUluZm9ybWF0aW9uOjpn
ZXQoU2lnbmF0dXJlSW5kZXggaW5kZXgpCi17Ci0gICAgQVNTRVJUKGluZGV4ICE9IFNpZ25hdHVy
ZTo6aW52YWxpZEluZGV4KTsKLSAgICBTaWduYXR1cmVJbmZvcm1hdGlvbiYgaW5mbyA9IHNpbmds
ZXRvbigpOwotICAgIExvY2tIb2xkZXIgbG9jayhpbmZvLm1fbG9jayk7Ci0KLSAgICByZXR1cm4g
KmluZm8ubV9pbmRleE1hcC5nZXQoaW5kZXgpOwotfQotCi1TaWduYXR1cmVJbmRleCBTaWduYXR1
cmVJbmZvcm1hdGlvbjo6Z2V0KGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlKQotewotICAgIFNp
Z25hdHVyZUluZm9ybWF0aW9uJiBpbmZvID0gc2luZ2xldG9uKCk7Ci0gICAgTG9ja0hvbGRlciBs
b2NrKGluZm8ubV9sb2NrKTsKLQotICAgIGF1dG8gcmVzdWx0ID0gaW5mby5tX3NpZ25hdHVyZU1h
cC5nZXQoU2lnbmF0dXJlSGFzaCB7ICZzaWduYXR1cmUgfSk7Ci0gICAgQVNTRVJUKHJlc3VsdCAh
PSBTaWduYXR1cmU6OmludmFsaWRJbmRleCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAg
ZGF0YUxvZ0xuKCJFeGlzdGluZyBzaWduYXR1cmUgIiwgc2lnbmF0dXJlLmdldCgpLCAiIHdpdGgg
aW5kZXggIiwgbmV4dFZhbHVlLCAiIGhhc2g6ICIsIHNpZ25hdHVyZS0+aGFzaCgpKTsKKyAgICBy
ZXR1cm4gUmVmPFNpZ25hdHVyZT4oKmFkZFJlc3VsdC5pdGVyYXRvci0+a2V5KTsKIH0KIAogdm9p
ZCBTaWduYXR1cmVJbmZvcm1hdGlvbjo6dHJ5Q2xlYW51cCgpCkBAIC0xNDQsMjQgKzEwOSwxMCBA
QCB2b2lkIFNpZ25hdHVyZUluZm9ybWF0aW9uOjp0cnlDbGVhbnVwKCkKICAgICBTaWduYXR1cmVJ
bmZvcm1hdGlvbiYgaW5mbyA9IHNpbmdsZXRvbigpOwogICAgIExvY2tIb2xkZXIgbG9jayhpbmZv
Lm1fbG9jayk7CiAKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFNpZ25hdHVyZUluZGV4LCBTaWduYXR1
cmUqPj4gdG9SZW1vdmU7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogaW5mby5tX2luZGV4
TWFwKSB7Ci0gICAgICAgIGNvbnN0IFJlZjxTaWduYXR1cmU+JiBzaWduYXR1cmUgPSBwYWlyLnZh
bHVlOwotICAgICAgICBpZiAoc2lnbmF0dXJlLT5yZWZDb3VudCgpID09IDEpIHsKLSAgICAgICAg
ICAgIC8vIFdlJ3JlIHRoZSBvbmx5IG93bmVyLgotICAgICAgICAgICAgdG9SZW1vdmUuYXBwZW5k
KHN0ZDo6bWFrZV9wYWlyKHBhaXIua2V5LCBzaWduYXR1cmUucHRyKCkpKTsKLSAgICAgICAgfQot
ICAgIH0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiB0b1JlbW92ZSkgewotICAgICAgICBi
b29sIHJlbW92ZWQgPSBpbmZvLm1fc2lnbmF0dXJlTWFwLnJlbW92ZShTaWduYXR1cmVIYXNoIHsg
cGFpci5zZWNvbmQgfSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZCwgcmVtb3ZlZCk7
Ci0gICAgICAgIHJlbW92ZWQgPSBpbmZvLm1faW5kZXhNYXAucmVtb3ZlKHBhaXIuZmlyc3QpOwot
ICAgICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWQsIHJlbW92ZWQpOwotICAgIH0KLSAgICBpZiAo
aW5mby5tX3NpZ25hdHVyZU1hcC5pc0VtcHR5KCkpIHsKLSAgICAgICAgQVNTRVJUKGluZm8ubV9p
bmRleE1hcC5pc0VtcHR5KCkpOwotICAgICAgICBpbmZvLm1fbmV4dEluZGV4ID0gU2lnbmF0dXJl
OjpmaXJzdFZhbGlkSW5kZXg7Ci0gICAgfQorICAgIGluZm8ubV9zaWduYXR1cmVTZXQucmVtb3Zl
SWYoWyZdIChhdXRvJiBoYXNoKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIHNpZ25hdHVyZSA9IGhh
c2gua2V5OworICAgICAgICByZXR1cm4gc2lnbmF0dXJlLT5yZWZDb3VudCgpID09IDE7CisgICAg
fSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU2lnbmF0dXJlLmgKaW5kZXggOWY0OWNjYjE0NTY4ZDIwMWYxZjhhZGNlZWZi
MGMxMzMxZWI3N2YwYi4uNmRiMjhjM2YxOTQyMmU0YzY4YTMyODBjMTY1YzcxMzhjNjcyMzVmZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuaApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgPGNzdHJpbmc+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1l
dGljLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpAQCAtNDcsNyArNDgs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBXYXNtIHsKIAogdXNpbmcgU2lnbmF0dXJl
QXJnQ291bnQgPSB1aW50MzJfdDsKLXVzaW5nIFNpZ25hdHVyZUluZGV4ID0gdWludDMyX3Q7Cit1
c2luZyBTaWduYXR1cmVJbmRleCA9IHVpbnQ2NF90OwogCiBjbGFzcyBTaWduYXR1cmUgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2lnbmF0dXJlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkBAIC04MSw2ICs4Miw3IEBAIGNsYXNzIFNpZ25hdHVyZSA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxTaWduYXR1cmU+IHsKICAgICAgICAgcmV0dXJuICpzdG9yYWdlKHJl
dHVybkNvdW50KCkgKyBpKTsKICAgICB9CiAgICAgVHlwZSBhcmd1bWVudChTaWduYXR1cmVBcmdD
b3VudCBpKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFNpZ25hdHVyZSo+KHRoaXMpLT5hcmd1
bWVudChpKTsgfQorICAgIFNpZ25hdHVyZUluZGV4IGluZGV4KCkgY29uc3QgeyByZXR1cm4gYml0
d2lzZV9jYXN0PFNpZ25hdHVyZUluZGV4Pih0aGlzKTsgfQogCiAgICAgV1RGOjpTdHJpbmcgdG9T
dHJpbmcoKSBjb25zdDsKICAgICB2b2lkIGR1bXAoV1RGOjpQcmludFN0cmVhbSYgb3V0KSBjb25z
dDsKQEAgLTExMSwyOCArMTEzLDIxIEBAIGNsYXNzIFNpZ25hdHVyZSA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxTaWduYXR1cmU+IHsKIH07CiAKIHN0cnVjdCBTaWduYXR1cmVIYXNoIHsK
LSAgICBjb25zdCBTaWduYXR1cmUqIGtleTsKLSAgICBzdGF0aWMgY29uc3QgU2lnbmF0dXJlKiBl
bXB0eSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBzdGF0aWMgY29uc3QgU2lnbmF0dXJlKiBk
ZWxldGVkKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBTaWduYXR1cmUqPigxKTsg
fQotICAgIFNpZ25hdHVyZUhhc2goKQotICAgICAgICA6IGtleShlbXB0eSgpKQorICAgIFJlZlB0
cjxTaWduYXR1cmU+IGtleSB7IG51bGxwdHIgfTsKKyAgICBTaWduYXR1cmVIYXNoKCkgPSBkZWZh
dWx0OworICAgIGV4cGxpY2l0IFNpZ25hdHVyZUhhc2goUmVmPFNpZ25hdHVyZT4mJiBrZXkpCisg
ICAgICAgIDoga2V5KFdURk1vdmUoa2V5KSkKICAgICB7CiAgICAgfQotICAgIGV4cGxpY2l0IFNp
Z25hdHVyZUhhc2goY29uc3QgU2lnbmF0dXJlKiBrZXkpCi0gICAgICAgIDoga2V5KGtleSkKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChrZXkgIT0gZW1wdHkoKSk7Ci0gICAgICAgIEFTU0VSVChrZXkg
IT0gZGVsZXRlZCgpKTsKLSAgICB9CiAgICAgZXhwbGljaXQgU2lnbmF0dXJlSGFzaChXVEY6Okhh
c2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCi0gICAgICAgIDoga2V5KGRlbGV0ZWQoKSkKKyAgICAg
ICAgOiBrZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCiAgICAgewogICAgIH0KICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU2lnbmF0dXJlSGFzaCYgcmhzKSBjb25zdCB7IHJldHVybiBl
cXVhbCgqdGhpcywgcmhzKTsgfQogICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFNpZ25hdHVy
ZUhhc2gmIGxocywgY29uc3QgU2lnbmF0dXJlSGFzaCYgcmhzKSB7IHJldHVybiBsaHMua2V5ID09
IHJocy5rZXkgfHwgKGxocy5rZXkgJiYgcmhzLmtleSAmJiAqbGhzLmtleSA9PSAqcmhzLmtleSk7
IH0KLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBTaWduYXR1cmVIYXNoJiBzaWduYXR1
cmUpIHsgcmV0dXJuIHNpZ25hdHVyZS5rZXktPmhhc2goKTsgfQorICAgIHN0YXRpYyB1bnNpZ25l
ZCBoYXNoKGNvbnN0IFNpZ25hdHVyZUhhc2gmIHNpZ25hdHVyZSkgeyByZXR1cm4gc2lnbmF0dXJl
LmtleSA/IHNpZ25hdHVyZS5rZXktPmhhc2goKSA6IDA7IH0KICAgICBzdGF0aWMgY29uc3QgYm9v
bCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwotICAgIGJvb2wgaXNIYXNo
VGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBrZXkgPT0gZGVsZXRlZCgpOyB9Cisg
ICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGtleS5pc0hh
c2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2Fz
bQpAQCAtMTY1LDE2ICsxNjAsMTcgQEAgY2xhc3MgU2lnbmF0dXJlSW5mb3JtYXRpb24gewogcHVi
bGljOgogICAgIHN0YXRpYyBTaWduYXR1cmVJbmZvcm1hdGlvbiYgc2luZ2xldG9uKCk7CiAKLSAg
ICBzdGF0aWMgc3RkOjpwYWlyPFNpZ25hdHVyZUluZGV4LCBSZWY8U2lnbmF0dXJlPj4gV0FSTl9V
TlVTRURfUkVUVVJOIGFkb3B0KFJlZjxTaWduYXR1cmU+JiYpOworICAgIHN0YXRpYyBSZWY8U2ln
bmF0dXJlPiBXQVJOX1VOVVNFRF9SRVRVUk4gYWRvcHQoUmVmPFNpZ25hdHVyZT4mJik7CiAgICAg
c3RhdGljIGNvbnN0IFNpZ25hdHVyZSYgV0FSTl9VTlVTRURfUkVUVVJOIGdldChTaWduYXR1cmVJ
bmRleCk7CiAgICAgc3RhdGljIFNpZ25hdHVyZUluZGV4IFdBUk5fVU5VU0VEX1JFVFVSTiBnZXQo
Y29uc3QgU2lnbmF0dXJlJik7CiAgICAgc3RhdGljIHZvaWQgdHJ5Q2xlYW51cCgpOwogCiBwcml2
YXRlOgotICAgIEhhc2hNYXA8V2FzbTo6U2lnbmF0dXJlSGFzaCwgV2FzbTo6U2lnbmF0dXJlSW5k
ZXg+IG1fc2lnbmF0dXJlTWFwOwotICAgIEhhc2hNYXA8V2FzbTo6U2lnbmF0dXJlSW5kZXgsIFJl
ZjxTaWduYXR1cmU+PiBtX2luZGV4TWFwOwotICAgIFNpZ25hdHVyZUluZGV4IG1fbmV4dEluZGV4
IHsgU2lnbmF0dXJlOjpmaXJzdFZhbGlkSW5kZXggfTsKKyAgICBIYXNoU2V0PFdhc206OlNpZ25h
dHVyZUhhc2g+IG1fc2lnbmF0dXJlU2V0OwogICAgIExvY2sgbV9sb2NrOworCisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFNpZ25hdHVyZUluZm9ybWF0aW9uKiB0aGVPbmU7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIHN0ZDo6b25jZV9mbGFnIHNpZ25hdHVyZUluZm9ybWF0aW9u
RmxhZzsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlSW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZUlubGluZXMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTBh
YzNlMDdlMTZkYzM3NzUxODI1YzIyYzdjYzgzMThjN2Y0M2Y1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZUlubGluZXMuaApAQCAtMCww
ICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4IFl1c3VrZSBTdXp1a2kgPHl1
c3VrZXN1enVraUBzbG93c3RhcnQub3JnPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisK
KyNpbmNsdWRlICJXYXNtU2lnbmF0dXJlLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
V2FzbSB7CisKK2lubGluZSBTaWduYXR1cmVJbmZvcm1hdGlvbiYgU2lnbmF0dXJlSW5mb3JtYXRp
b246OnNpbmdsZXRvbigpCit7CisgICAgc3RkOjpjYWxsX29uY2Uoc2lnbmF0dXJlSW5mb3JtYXRp
b25GbGFnLCBbXSAoKSB7CisgICAgICAgIHRoZU9uZSA9IG5ldyBTaWduYXR1cmVJbmZvcm1hdGlv
bjsKKyAgICB9KTsKKyAgICByZXR1cm4gKnRoZU9uZTsKK30KKworaW5saW5lIGNvbnN0IFNpZ25h
dHVyZSYgU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChTaWduYXR1cmVJbmRleCBpbmRleCkKK3sK
KyAgICBBU1NFUlQoaW5kZXggIT0gU2lnbmF0dXJlOjppbnZhbGlkSW5kZXgpOworICAgIHJldHVy
biAqYml0d2lzZV9jYXN0PGNvbnN0IFNpZ25hdHVyZSo+KGluZGV4KTsKK30KKworaW5saW5lIFNp
Z25hdHVyZUluZGV4IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoY29uc3QgU2lnbmF0dXJlJiBz
aWduYXR1cmUpCit7CisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgU2lnbmF0
dXJlSW5mb3JtYXRpb24mIGluZm8gPSBzaW5nbGV0b24oKTsKKyAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhpbmZvLm1fbG9jayk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoaW5mbywgaW5m
by5tX3NpZ25hdHVyZVNldC5jb250YWlucyhTaWduYXR1cmVIYXNoIHsgbWFrZVJlZihjb25zdF9j
YXN0PFNpZ25hdHVyZSY+KHNpZ25hdHVyZSkpIH0pKTsKKyAgICB9CisgICAgcmV0dXJuIGJpdHdp
c2VfY2FzdDxTaWduYXR1cmVJbmRleD4oJnNpZ25hdHVyZSk7Cit9CisKK30gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpXYXNtCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKaW5kZXggZmNiOWIwYzYxOGFlNjllMTUx
MWE3ZmE0Y2YzYmYwNjUyZDZiMzEyZC4uMzY0ZjdjNzRiYzE5ZmM1NWJmMmFkNjliYWQ0OTBlY2Vl
ZWU5MTlkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dh
c20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUgIkpT
V2ViQXNzZW1ibHlJbnN0YW5jZS5oIgogI2luY2x1ZGUgIldhc21DYWxsaW5nQ29udmVudGlvbi5o
IgorI2luY2x1ZGUgIldhc21TaWduYXR1cmVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgV2FzbSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlNb2R1bGUuaAppbmRleCBkMzkzMDA2OTE5ZDI3YWQxNzQ2OWZlMjY5NWRi
ODQzODQyM2QwODJlLi43MmEzMDYzYTRiMzdjNTcwY2Y5NDBkNzZiNTlkMWMwY2NiYzA1ZTQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9k
dWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1v
ZHVsZS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXYXNtIHsKIGNsYXNzIE1vZHVsZTsK
IHN0cnVjdCBNb2R1bGVJbmZvcm1hdGlvbjsKIGNsYXNzIFBsYW47Ci11c2luZyBTaWduYXR1cmVJ
bmRleCA9IHVpbnQzMl90OwordXNpbmcgU2lnbmF0dXJlSW5kZXggPSB1aW50NjRfdDsKIH0KIAog
Y2xhc3MgU3ltYm9sVGFibGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XYXNtVG9KUy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9K
Uy5jcHAKaW5kZXggMTI3MGM3OWIxYzQzMTBjYzVmYzYzMDI5YWU4M2JmYjE4YzVlMDNjNi4uZWUw
MGZjODhlMGNhZjI1NDRkOWQ3OWVjYzkzZjRlMTIzMjUzOGIzMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUg
Ildhc21Db250ZXh0LmgiCiAjaW5jbHVkZSAiV2FzbUV4Y2VwdGlvblR5cGUuaCIKICNpbmNsdWRl
ICJXYXNtSW5zdGFuY2UuaCIKKyNpbmNsdWRlICJXYXNtU2lnbmF0dXJlSW5saW5lcy5oIgogCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCkBAIC0zMDEsNyArMzAyLDggQEAgRXhw
ZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWls
dXJlPiB3YXNtVG9KUyhWTSogdm0KICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoMCksIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CiAKICAgICAgICAgc3RhdGljX2Fz
c2VydChHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzID49IDQsICJXZSByZWx5IG9u
IHRoaXMgd2l0aCB0aGUgY2FsbCBiZWxvdy4iKTsKLSAgICAgICAgaml0LnNldHVwQXJndW1lbnRz
PGRlY2x0eXBlKGNhbGxGdW5jKT4oR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihzaWduYXR1cmVJbmRleCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihidWZmZXIpKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoU2lnbmF0dXJlSW5kZXgp
ID09IHNpemVvZih1aW50NjRfdCksICJGb2xsb3dpbmcgY29kZSBhc3N1bWVzIFNpZ25hdHVyZUlu
ZGV4IGlzIDY0Yml0LiIpOworICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUoY2Fs
bEZ1bmMpPihHUFJJbmZvOjphcmd1bWVudEdQUjEsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0
KHNpZ25hdHVyZUluZGV4KSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJ1ZmZlcikpOwog
ICAgICAgICBhdXRvIGNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwogICAgICAgICBh
dXRvIG5vRXhjZXB0aW9uID0gaml0LmVtaXRFeGNlcHRpb25DaGVjaygqdm0sIEFzc2VtYmx5SGVs
cGVyczo6SW52ZXJ0ZWRFeGNlcHRpb25DaGVjayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKaW5kZXggMDJiNGMyNGM0
MmJjY2YxMmY4MjNhYjA3OTc1M2IwNWU1YTNhYTU0YS4uNWRiOTI0ZjhlY2ZiMDNhN2UwYmE2ZjVk
MDg0ODIyYjM0NzExYmFjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRl
ICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldhc21Gb3JtYXQuaCIKICNpbmNsdWRlICJXYXNt
TWVtb3J5LmgiCisjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIKICNpbmNsdWRlIDx3
dGYvRmFzdFRMUy5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkLmNwcAppbmRleCBkNzQ0MTdjYjFhNGMxY2EzYjJmMzhlZmEyMDc3YTUzOGIxNjVlYTEyLi5l
OGNhNThjYmY2MGFjNDZhYjIzMGVlM2RmMDRhNWY0YTMwMjhmMmYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQu
Y3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUxpbmtFcnJvci5o
IgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKICNpbmNsdWRlICJQcm90b0NhbGxG
cmFtZS5oIgotI2luY2x1ZGUgIldhc21TaWduYXR1cmUuaCIKKyNpbmNsdWRlICJXYXNtU2lnbmF0
dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIldlYkFzc2VtYmx5RnVuY3Rpb24uaCIKICNpbmNsdWRl
IDxsaW1pdHM+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcAppbmRleCAzNmYzNzgzMDZiZTcyN2Mw
Mjk1MzFkYjQ5MmE4ZDAwOTI3MjkxYTZlLi40NDRlZmJmOGI0YTdhMzVmNDBmMDFjZWI0Yzc5ZWM4
NDNlYjE2NDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCisjaW5jbHVkZSAiV2FzbVNpZ25hdHVy
ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAK
</data>
<flag name="review"
          id="366735"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>