<?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>188250</bug_id>
          
          <creation_ts>2018-08-01 21:43:56 -0700</creation_ts>
          <short_desc>Use WTF::Variant for WebPreferencesStore::Value</short_desc>
          <delta_ts>2018-08-03 08:09:09 -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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1447170</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-01 21:43:56 -0700</bug_when>
    <thetext>Use WTF::Variant for WebPreferencesStore::Value</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447175</commentid>
    <comment_count>1</comment_count>
      <attachid>346358</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-01 21:55:47 -0700</bug_when>
    <thetext>Created attachment 346358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447290</commentid>
    <comment_count>2</comment_count>
      <attachid>346393</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-02 11:06:28 -0700</bug_when>
    <thetext>Created attachment 346393
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447291</commentid>
    <comment_count>3</comment_count>
      <attachid>346394</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-02 11:09:59 -0700</bug_when>
    <thetext>Created attachment 346394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447293</commentid>
    <comment_count>4</comment_count>
      <attachid>346395</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-02 11:11:57 -0700</bug_when>
    <thetext>Created attachment 346395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447321</commentid>
    <comment_count>5</comment_count>
      <attachid>346395</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-08-02 12:06:04 -0700</bug_when>
    <thetext>Comment on attachment 346395
Patch

Looks good. I think this would be a great opportunity to add tests to TestWebKitAPI for ArgumentCoder.  As you will see, the name TestWebKitAPI is a bit misleading, as we have many tests for WTF and WebCore types that aren&apos;t actually exposed as API, and are really just good old unit tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447323</commentid>
    <comment_count>6</comment_count>
      <attachid>346395</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-08-02 12:07:08 -0700</bug_when>
    <thetext>Comment on attachment 346395
Patch

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

&gt; Source/WebKit/ChangeLog:8
&gt; +        It&apos;s basically a Variant now. This just uses templates.

This is not a very clear commit message. Please actually state what you did. Also, per-function information would be appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447364</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-02 13:25:21 -0700</bug_when>
    <thetext>I committed the WTF part in http://trac.webkit.org/r234514</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447383</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-02 14:26:27 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #5)
&gt; Comment on attachment 346395 [details]
&gt; Patch
&gt; 
&gt; Looks good. I think this would be a great opportunity to add tests to
&gt; TestWebKitAPI for ArgumentCoder.  As you will see, the name TestWebKitAPI is
&gt; a bit misleading, as we have many tests for WTF and WebCore types that
&gt; aren&apos;t actually exposed as API, and are really just good old unit tests.

This requires significant refactoring because we have checks that HAVE and PLATFORM macros aren&apos;t exported in WebKit.framework&apos;s headers, and Encoder/Decoder and dependencies use those macros.  I filed https://bugs.webkit.org/show_bug.cgi?id=188278</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447384</commentid>
    <comment_count>9</comment_count>
      <attachid>346418</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-02 14:26:43 -0700</bug_when>
    <thetext>Created attachment 346418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447393</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-02 14:48:34 -0700</bug_when>
    <thetext>http://trac.webkit.org/r234516</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447394</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-02 14:49:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/42874231&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447413</commentid>
    <comment_count>12</comment_count>
      <attachid>346418</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-02 15:32:17 -0700</bug_when>
    <thetext>Comment on attachment 346418
Patch

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

&gt; Source/WebKit/Platform/IPC/ArgumentCoders.h:564
&gt; +        ASSERT(static_cast&lt;unsigned&gt;(variant.index()) == variant.index());

I removed this assertion in http://trac.webkit.org/r234519 because it broke some builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447621</commentid>
    <comment_count>13</comment_count>
      <attachid>346418</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-08-03 08:09:09 -0700</bug_when>
    <thetext>Comment on attachment 346418
Patch

Not new to the patch: this code seems to misspell &quot;overridden&quot; repeatedly.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346358</attachid>
            <date>2018-08-01 21:55:47 -0700</date>
            <delta_ts>2018-08-02 11:06:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188250-20180801215546.patch</filename>
            <type>text/plain</type>
            <size>18863</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQ0OTMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDE4LTA4LTAxICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIFdURjo6VmFy
aWFudCBmb3IgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODI1MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0J3MgYmFzaWNhbGx5IGEgVmFyaWFudCBub3cu
IFRoaXMganVzdCB1c2VzIHRlbXBsYXRlcy4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9WYXJp
YW50Q29kZXJzLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpWYXJpYW50Q29kZXI6OmVuY29kZUhl
bHBlcik6CisgICAgICAgIChJUEM6OlZhcmlhbnRDb2Rlcjo6ZGVjb2RlSGVscGVyKToKKyAgICAg
ICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzU3RvcmVEZWZh
dWx0c01hcC5jcHAuZXJiOgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6ZGVjb2RlKToKKyAgICAg
ICAgKFdlYktpdDo6VHlwZVZpc2l0b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0Ojp2YWx1ZUZvcktleSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6
OlZhbHVlOjplbmNvZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVm
ZXJlbmNlc1N0b3JlOjpWYWx1ZTo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
YXM8U3RyaW5nPik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OmFzPGJvb2w+KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6YXM8dWludDMyX3Q+KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6YXM8ZG91YmxlPik6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVu
Y2VzU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWU6
OlZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6
VmFsdWU6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzU3RvcmU6OlZhbHVlOjp+VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc1N0b3JlOjpWYWx1ZTo6dHlwZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlOjphc1N0cmluZyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlOjphc0Jvb2wg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpW
YWx1ZTo6YXNVSW50MzIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVm
ZXJlbmNlc1N0b3JlOjpWYWx1ZTo6YXNEb3VibGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZTo6ZGVzdHJveSk6IERlbGV0ZWQuCisg
ICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorCiAyMDE4LTA4LTAxICBUb21hcyBQb3BlbGEgIDx0cG9wZWxhQHJlZGhhdC5jb20+
CiAKICAgICAgICAgW1dURl0gUmVuYW1lIFN0cmluZzo6Zm9ybWF0IHRvIFN0cmluZzo6ZGVwcmVj
YXRlZEZvcm1hdApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvVmFyaWFudENvZGVy
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1ZhcmlhbnRDb2Rl
cnMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9WYXJpYW50
Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDx3dGYv
VmFyaWFudC5oPgorCituYW1lc3BhY2UgSVBDIHsKKwordGVtcGxhdGU8c2l6ZV90IGluZGV4LCB0
eXBlbmFtZS4uLiBUeXBlcz4KK3N0cnVjdCBWYXJpYW50Q29kZXIgeworICAgIHN0YXRpYyB2b2lk
IGVuY29kZUhlbHBlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXVEY6OlZhcmlhbnQ8VHlwZXMu
Li4+JiB2YXJpYW50LCB1bnNpZ25lZCBpKQorICAgIHsKKyAgICAgICAgaWYgKGkgPT0gaW5kZXgp
IHsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgV1RGOjpnZXQ8aW5kZXg+KHZhcmlhbnQpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFZhcmlhbnRDb2RlcjxpbmRleCAt
IDEsIFR5cGVzLi4uPjo6ZW5jb2RlSGVscGVyKGVuY29kZXIsIHZhcmlhbnQsIGkpOworICAgIH0K
KyAgICAKKyAgICBzdGF0aWMgYXV0byBkZWNvZGVIZWxwZXIoRGVjb2RlciYgZGVjb2RlciwgdW5z
aWduZWQgaSkgLT4gc3RkOjpvcHRpb25hbDxXVEY6OlZhcmlhbnQ8VHlwZXMuLi4+PgorICAgIHsK
KyAgICAgICAgaWYgKGkgPT0gaW5kZXgpIHsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8V1RG
Ojp2YXJpYW50X2FsdGVybmF0aXZlX3Q8aW5kZXgsIFdURjo6VmFyaWFudDxUeXBlcy4uLj4+PiBv
cHRpb25hbDsKKyAgICAgICAgICAgIGRlY29kZXIgPj4gb3B0aW9uYWw7CisgICAgICAgICAgICBp
ZiAoIW9wdGlvbmFsKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4geyBXVEZNb3ZlKCpvcHRpb25hbCkgfTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gVmFyaWFudENvZGVyPGluZGV4IC0gMSwgVHlwZXMuLi4+OjpkZWNvZGVIZWxwZXIo
ZGVjb2RlciwgaSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUuLi4gVHlwZXM+Citz
dHJ1Y3QgVmFyaWFudENvZGVyPDAsIFR5cGVzLi4uPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2Rl
SGVscGVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdURjo6VmFyaWFudDxUeXBlcy4uLj4mIHZh
cmlhbnQsIHVuc2lnbmVkIGkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGksICFpKTsK
KyAgICAgICAgZW5jb2RlciA8PCBXVEY6OmdldDwwPih2YXJpYW50KTsKKyAgICB9CisgICAgCisg
ICAgc3RhdGljIGF1dG8gZGVjb2RlSGVscGVyKERlY29kZXImIGRlY29kZXIsIHVuc2lnbmVkIGkp
IC0+IHN0ZDo6b3B0aW9uYWw8V1RGOjpWYXJpYW50PFR5cGVzLi4uPj4KKyAgICB7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQoaSwgIWkpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFdURjo6dmFyaWFu
dF9hbHRlcm5hdGl2ZV90PDAsIFdURjo6VmFyaWFudDxUeXBlcy4uLj4+PiBvcHRpb25hbDsKKyAg
ICAgICAgZGVjb2RlciA+PiBvcHRpb25hbDsKKyAgICAgICAgaWYgKCFvcHRpb25hbCkKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiB7IFdURk1vdmUoKm9w
dGlvbmFsKSB9OworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIFR5cGVzPiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXVEY6OlZhcmlhbnQ8VHlwZXMuLi4+PiB7CisgICAgc3RhdGljIHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdURjo6VmFyaWFudDxUeXBlcy4uLj4m
IHZhcmlhbnQpCisgICAgeworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZh
cmlhbnQuaW5kZXgoKSkgPT0gdmFyaWFudC5pbmRleCgpKTsKKyAgICAgICAgdW5zaWduZWQgaSA9
IHZhcmlhbnQuaW5kZXgoKTsKKyAgICAgICAgZW5jb2RlciA8PCBpOworICAgICAgICBWYXJpYW50
Q29kZXI8c2l6ZW9mLi4uKFR5cGVzKSAtIDEsIFR5cGVzLi4uPjo6ZW5jb2RlSGVscGVyKGVuY29k
ZXIsIHZhcmlhbnQsIGkpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgYXV0byBkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikgLT4gc3RkOjpvcHRpb25hbDxXVEY6OlZhcmlhbnQ8VHlwZXMuLi4+Pgor
ICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaTsKKyAgICAgICAgZGVjb2Rl
ciA+PiBpOworICAgICAgICBpZiAoIWkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gVmFyaWFudENvZGVyPHNpemVvZi4uLihUeXBlcykgLSAxLCBUeXBl
cy4uLj46OmRlY29kZUhlbHBlcihkZWNvZGVyLCAqaSk7CisgICAgfQorfTsKKworfQpJbmRleDog
U291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2Vz
U3RvcmVEZWZhdWx0c01hcC5jcHAuZXJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAu
Y3BwLmVyYgkocmV2aXNpb24gMjM0NDY2KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZl
cmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzU3RvcmVEZWZhdWx0c01hcC5jcHAuZXJiCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNE
ZWZhdWx0VmFsdWVzLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCiAjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogLy8g
RklYTUU6IFRoZXNlIHNob3VsZCBhZGRlZCB2aWEgb3B0aW9ucyBpbiBXZWJQcmVmZXJlbmNlcy55
YW1sLCByYXRoZXIgdGhhbiBoYXJkY29kZWQuCiAjaW5jbHVkZSAiRm9udFNtb290aGluZ0xldmVs
LmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmNw
cAkocmV2aXNpb24gMjM0NDY2KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5j
ZXNTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAKKyNpbmNsdWRlICJW
YXJpYW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5j
bHVkZSAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CkBAIC00Miw3MiArNDMsNiBAQCBzdGF0aWMgQm9vbE92ZXJyaWRlc01hcCYgYm9vbFRlc3RS
dW5uZXJPCiAgICAgcmV0dXJuIG1hcDsKIH0KIAotdm9pZCBXZWJQcmVmZXJlbmNlc1N0b3JlOjpW
YWx1ZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVy
LmVuY29kZUVudW0obV90eXBlKTsKLSAgICAKLSAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgIGNh
c2UgVHlwZTo6Tm9uZToKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUeXBlOjpTdHJpbmc6Ci0g
ICAgICAgIGVuY29kZXIgPDwgbV9zdHJpbmc7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVHlw
ZTo6Qm9vbDoKLSAgICAgICAgZW5jb2RlciA8PCBtX2Jvb2w7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgVHlwZTo6VUludDMyOgotICAgICAgICBlbmNvZGVyIDw8IG1fdWludDMyOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFR5cGU6OkRvdWJsZToKLSAgICAgICAgZW5jb2RlciA8PCBtX2Rv
dWJsZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1ib29sIFdlYlByZWZlcmVuY2VzU3Rv
cmU6OlZhbHVlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBWYWx1ZSYgcmVzdWx0KQot
ewotICAgIFZhbHVlOjpUeXBlIHR5cGU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0odHlw
ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAg
ICBjYXNlIFR5cGU6Ok5vbmU6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVHlwZTo6U3RyaW5n
OiB7Ci0gICAgICAgIFN0cmluZyB2YWx1ZTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh2
YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdCA9IFZhbHVl
KHZhbHVlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgVHlwZTo6Qm9vbDogewot
ICAgICAgICBib29sIHZhbHVlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZhbHVlKSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzdWx0ID0gVmFsdWUodmFsdWUp
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBUeXBlOjpVSW50MzI6IHsKLSAgICAg
ICAgdWludDMyX3QgdmFsdWU7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodmFsdWUpKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQgPSBWYWx1ZSh2YWx1ZSk7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIFR5cGU6OkRvdWJsZTogewotICAgICAg
ICBkb3VibGUgdmFsdWU7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodmFsdWUpKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQgPSBWYWx1ZSh2YWx1ZSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIFdlYlByZWZlcmVuY2VzU3RvcmU6Oldl
YlByZWZlcmVuY2VzU3RvcmUoKQogewogfQpAQCAtMTIwLDEwICs1NSwxNyBAQCB2b2lkIFdlYlBy
ZWZlcmVuY2VzU3RvcmU6OmVuY29kZShJUEM6OkVuCiAKIGJvb2wgV2ViUHJlZmVyZW5jZXNTdG9y
ZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUHJlZmVyZW5jZXNTdG9yZSYgcmVz
dWx0KQogewotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fdmFsdWVzKSkKKyAgICBz
dGQ6Om9wdGlvbmFsPEhhc2hNYXA8U3RyaW5nLCBWYWx1ZT4+IHZhbHVlczsKKyAgICBkZWNvZGVy
ID4+IHZhbHVlczsKKyAgICBpZiAoIXZhbHVlcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fb3ZlcnJpZGVuRGVmYXVsdHMpKQorICAgIHJl
c3VsdC5tX3ZhbHVlcyA9IFdURk1vdmUoKnZhbHVlcyk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPEhh
c2hNYXA8U3RyaW5nLCBWYWx1ZT4+IG92ZXJyaWRlbkRlZmF1bHRzOworICAgIGRlY29kZXIgPj4g
b3ZlcnJpZGVuRGVmYXVsdHM7CisgICAgaWYgKCFvdmVycmlkZW5EZWZhdWx0cykKICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHJlc3VsdC5tX292ZXJyaWRlbkRlZmF1bHRzID0gV1RGTW92ZSgq
b3ZlcnJpZGVuRGVmYXVsdHMpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMzcsMzcgKzc5
LDIxIEBAIHZvaWQgV2ViUHJlZmVyZW5jZXNTdG9yZTo6cmVtb3ZlVGVzdFJ1bm4KICAgICBib29s
VGVzdFJ1bm5lck92ZXJyaWRlc01hcCgpLmNsZWFyKCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgVG9UeXBlIHsgfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgVG9UeXBlPFN0cmlu
Zz4geyBzdGF0aWMgY29uc3QgYXV0byB2YWx1ZSA9IFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVl
OjpUeXBlOjpTdHJpbmc7IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBUb1R5cGU8Ym9vbD4geyBzdGF0
aWMgY29uc3QgYXV0byB2YWx1ZSA9IFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlOjpUeXBlOjpC
b29sOyB9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgVG9UeXBlPHVpbnQzMl90PiB7IHN0YXRpYyBjb25z
dCBhdXRvIHZhbHVlID0gV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWU6OlR5cGU6OlVJbnQzMjsg
fTsKLXRlbXBsYXRlPD4gc3RydWN0IFRvVHlwZTxkb3VibGU+IHsgc3RhdGljIGNvbnN0IGF1dG8g
dmFsdWUgPSBXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZTo6VHlwZTo6RG91YmxlOyB9OwotCi0K
LXRlbXBsYXRlPHR5cGVuYW1lIE1hcHBlZFR5cGU+IE1hcHBlZFR5cGUgYXMoY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZTo6VmFsdWUmKTsKLQotdGVtcGxhdGU8PiBTdHJpbmcgYXM8U3RyaW5nPihj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmFz
U3RyaW5nKCk7IH0KLXRlbXBsYXRlPD4gYm9vbCBhczxib29sPihjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlOjpWYWx1ZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmFzQm9vbCgpOyB9Ci10ZW1wbGF0
ZTw+IHVpbnQzMl90IGFzPHVpbnQzMl90Pihjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1
ZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmFzVUludDMyKCk7IH0KLXRlbXBsYXRlPD4gZG91Ymxl
IGFzPGRvdWJsZT4oY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUmIHZhbHVlKSB7IHJl
dHVybiB2YWx1ZS5hc0RvdWJsZSgpOyB9Ci0KLQogdGVtcGxhdGU8dHlwZW5hbWUgTWFwcGVkVHlw
ZT4KIHN0YXRpYyBNYXBwZWRUeXBlIHZhbHVlRm9yS2V5KGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmU6OlZhbHVlTWFwJiB2YWx1ZXMsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlTWFw
JiBvdmVycmlkZW5EZWZhdWx0cywgY29uc3QgU3RyaW5nJiBrZXkpCiB7CiAgICAgYXV0byB2YWx1
ZXNJdCA9IHZhbHVlcy5maW5kKGtleSk7Ci0gICAgaWYgKHZhbHVlc0l0ICE9IHZhbHVlcy5lbmQo
KSAmJiB2YWx1ZXNJdC0+dmFsdWUudHlwZSgpID09IFRvVHlwZTxNYXBwZWRUeXBlPjo6dmFsdWUp
Ci0gICAgICAgIHJldHVybiBhczxNYXBwZWRUeXBlPih2YWx1ZXNJdC0+dmFsdWUpOworICAgIGlm
ICh2YWx1ZXNJdCAhPSB2YWx1ZXMuZW5kKCkgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxNYXBw
ZWRUeXBlPih2YWx1ZXNJdC0+dmFsdWUpKQorICAgICAgICByZXR1cm4gV1RGOjpnZXQ8TWFwcGVk
VHlwZT4odmFsdWVzSXQtPnZhbHVlKTsKIAogICAgIGF1dG8gb3ZlcnJpZGVuRGVmYXVsdHNJdCA9
IG92ZXJyaWRlbkRlZmF1bHRzLmZpbmQoa2V5KTsKLSAgICBpZiAob3ZlcnJpZGVuRGVmYXVsdHNJ
dCAhPSBvdmVycmlkZW5EZWZhdWx0cy5lbmQoKSAmJiBvdmVycmlkZW5EZWZhdWx0c0l0LT52YWx1
ZS50eXBlKCkgPT0gVG9UeXBlPE1hcHBlZFR5cGU+Ojp2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGFz
PE1hcHBlZFR5cGU+KG92ZXJyaWRlbkRlZmF1bHRzSXQtPnZhbHVlKTsKKyAgICBpZiAob3ZlcnJp
ZGVuRGVmYXVsdHNJdCAhPSBvdmVycmlkZW5EZWZhdWx0cy5lbmQoKSAmJiBXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPE1hcHBlZFR5cGU+KG92ZXJyaWRlbkRlZmF1bHRzSXQtPnZhbHVlKSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6Z2V0PE1hcHBlZFR5cGU+KG92ZXJyaWRlbkRlZmF1bHRzSXQtPnZhbHVl
KTsKIAogICAgIGF1dG8mIGRlZmF1bHRzTWFwID0gV2ViUHJlZmVyZW5jZXNTdG9yZTo6ZGVmYXVs
dHMoKTsKICAgICBhdXRvIGRlZmF1bHRzSXQgPSBkZWZhdWx0c01hcC5maW5kKGtleSk7Ci0gICAg
aWYgKGRlZmF1bHRzSXQgIT0gZGVmYXVsdHNNYXAuZW5kKCkgJiYgZGVmYXVsdHNJdC0+dmFsdWUu
dHlwZSgpID09IFRvVHlwZTxNYXBwZWRUeXBlPjo6dmFsdWUpCi0gICAgICAgIHJldHVybiBhczxN
YXBwZWRUeXBlPihkZWZhdWx0c0l0LT52YWx1ZSk7CisgICAgaWYgKGRlZmF1bHRzSXQgIT0gZGVm
YXVsdHNNYXAuZW5kKCkgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxNYXBwZWRUeXBlPihkZWZh
dWx0c0l0LT52YWx1ZSkpCisgICAgICAgIHJldHVybiBXVEY6OmdldDxNYXBwZWRUeXBlPihkZWZh
dWx0c0l0LT52YWx1ZSk7CiAKICAgICByZXR1cm4gTWFwcGVkVHlwZSgpOwogfQpJbmRleDogU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAkocmV2aXNpb24gMjM0NDY2
KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC02MiwxMTkgKzYyLDcgQEAgc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmUgewog
ICAgIHN0YXRpYyB2b2lkIG92ZXJyaWRlQm9vbFZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5
LCBib29sIHZhbHVlKTsKICAgICBzdGF0aWMgdm9pZCByZW1vdmVUZXN0UnVubmVyT3ZlcnJpZGVz
KCk7CiAKLSAgICBzdHJ1Y3QgVmFsdWUgewotICAgICAgICBlbnVtIGNsYXNzIFR5cGUgewotICAg
ICAgICAgICAgTm9uZSwKLSAgICAgICAgICAgIFN0cmluZywKLSAgICAgICAgICAgIEJvb2wsCi0g
ICAgICAgICAgICBVSW50MzIsCi0gICAgICAgICAgICBEb3VibGUsCi0gICAgICAgIH07Ci0KLSAg
ICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHN0YXRpYyBi
b29sIGRlY29kZShJUEM6OkRlY29kZXImLCBWYWx1ZSYpOwotCi0gICAgICAgIGV4cGxpY2l0IFZh
bHVlKCkgOiBtX3R5cGUoVHlwZTo6Tm9uZSkgeyB9Ci0gICAgICAgIGV4cGxpY2l0IFZhbHVlKGNv
bnN0IFN0cmluZyYgdmFsdWUpIDogbV90eXBlKFR5cGU6OlN0cmluZyksIG1fc3RyaW5nKHZhbHVl
KSB7IH0KLSAgICAgICAgZXhwbGljaXQgVmFsdWUoYm9vbCB2YWx1ZSkgOiBtX3R5cGUoVHlwZTo6
Qm9vbCksIG1fYm9vbCh2YWx1ZSkgeyB9Ci0gICAgICAgIGV4cGxpY2l0IFZhbHVlKHVpbnQzMl90
IHZhbHVlKSA6IG1fdHlwZShUeXBlOjpVSW50MzIpLCBtX3VpbnQzMih2YWx1ZSkgeyB9Ci0gICAg
ICAgIGV4cGxpY2l0IFZhbHVlKGRvdWJsZSB2YWx1ZSkgOiBtX3R5cGUoVHlwZTo6RG91YmxlKSwg
bV9kb3VibGUodmFsdWUpIHsgfQotCi0gICAgICAgIFZhbHVlKFZhbHVlJiYgdmFsdWUpCi0gICAg
ICAgICAgICA6IG1fdHlwZSh2YWx1ZS5tX3R5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN3
aXRjaCAobV90eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIFR5cGU6Ok5vbmU6Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFR5cGU6OlN0cmluZzoKLSAgICAgICAgICAg
ICAgICBuZXcgKCZtX3N0cmluZykgU3RyaW5nKFdURk1vdmUodmFsdWUubV9zdHJpbmcpKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVHlwZTo6Qm9vbDoKLSAgICAg
ICAgICAgICAgICBtX2Jvb2wgPSB2YWx1ZS5tX2Jvb2w7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIFR5cGU6OlVJbnQzMjoKLSAgICAgICAgICAgICAgICBtX3VpbnQz
MiA9IHZhbHVlLm1fdWludDMyOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBUeXBlOjpEb3VibGU6Ci0gICAgICAgICAgICAgICAgbV9kb3VibGUgPSB2YWx1ZS5tX2Rv
dWJsZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIFZhbHVlJiBvcGVyYXRvcj0oY29uc3QgVmFsdWUmIG90aGVyKQotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJu
ICp0aGlzOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgZGVzdHJveSgpOwotCi0gICAg
ICAgICAgICBtX3R5cGUgPSBvdGhlci5tX3R5cGU7Ci0gICAgICAgICAgICBzd2l0Y2ggKG1fdHlw
ZSkgewotICAgICAgICAgICAgY2FzZSBUeXBlOjpOb25lOgotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBUeXBlOjpTdHJpbmc6Ci0gICAgICAgICAgICAgICAgbmV3ICgm
bV9zdHJpbmcpIFN0cmluZyhvdGhlci5tX3N0cmluZyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIFR5cGU6OkJvb2w6Ci0gICAgICAgICAgICAgICAgbV9ib29sID0g
b3RoZXIubV9ib29sOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBU
eXBlOjpVSW50MzI6Ci0gICAgICAgICAgICAgICAgbV91aW50MzIgPSBvdGhlci5tX3VpbnQzMjsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVHlwZTo6RG91YmxlOgot
ICAgICAgICAgICAgICAgIG1fZG91YmxlID0gb3RoZXIubV9kb3VibGU7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgCi0gICAgICAgICAgICByZXR1cm4gKnRoaXM7
Ci0gICAgICAgIH0KLQotICAgICAgICB+VmFsdWUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBk
ZXN0cm95KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3R5cGU7IH0KLQotICAgICAgICBTdHJpbmcgYXNTdHJpbmcoKSBjb25zdAotICAgICAgICB7
Ci0gICAgICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OlN0cmluZyk7Ci0gICAgICAgICAg
ICByZXR1cm4gbV9zdHJpbmc7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGFzQm9vbCgpIGNv
bnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6Qm9vbCk7
Ci0gICAgICAgICAgICByZXR1cm4gbV9ib29sOwotICAgICAgICB9Ci0KLSAgICAgICAgdWludDMy
X3QgYXNVSW50MzIoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQobV90eXBl
ID09IFR5cGU6OlVJbnQzMik7Ci0gICAgICAgICAgICByZXR1cm4gbV91aW50MzI7Ci0gICAgICAg
IH0KLQotICAgICAgICBkb3VibGUgYXNEb3VibGUoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAg
ICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OkRvdWJsZSk7Ci0gICAgICAgICAgICByZXR1cm4g
bV9kb3VibGU7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgZGVzdHJv
eSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6U3RyaW5nKQot
ICAgICAgICAgICAgICAgIG1fc3RyaW5nLn5TdHJpbmcoKTsKLSAgICAgICAgfQotCi0gICAgICAg
IFR5cGUgbV90eXBlOwotICAgICAgICB1bmlvbiB7Ci0gICAgICAgICAgICBTdHJpbmcgbV9zdHJp
bmc7Ci0gICAgICAgICAgICBib29sIG1fYm9vbDsKLSAgICAgICAgICAgIHVpbnQzMl90IG1fdWlu
dDMyOwotICAgICAgICAgICAgZG91YmxlIG1fZG91YmxlOwotICAgICAgICB9OwotICAgIH07Cisg
ICAgdXNpbmcgVmFsdWUgPSBWYXJpYW50PFN0cmluZywgYm9vbCwgdWludDMyX3QsIGRvdWJsZT47
CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWYWx1ZT4gVmFsdWVNYXA7CiAgICAgVmFs
dWVNYXAgbV92YWx1ZXM7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIzNDQ2NikKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEyODcsNiAr
MTI4Nyw3IEBACiAJCTVDOEREMzgwMUZFNDUyMTYwMEYyQTU1NiAvKiBXZWJzaXRlQXV0b3BsYXlQ
b2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
OEREMzdGMUZFNDUxOTIwMEYyQTU1NiAvKiBXZWJzaXRlQXV0b3BsYXlQb2xpY3kuaCAqLzsgfTsK
IAkJNUM5RTU2ODIxREY3RjFBQjAwQzlFRTMzIC8qIFdLV2Vic2l0ZVBvbGljaWVzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOUU1NjgwMURGN0Yw
NTUwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2llcy5jcHAgKi87IH07CiAJCTVDOUU1NjgzMURG
N0YxQjMwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2llcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM5RTU2ODExREY3RjA1NTAwQzlFRTMzIC8qIFdL
V2Vic2l0ZVBvbGljaWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNUNBOTg1NEYyMTEyODk0MzAwNTdFQjZCIC8qIFZhcmlhbnRDb2RlcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQTk4NTRFMjEx
Mjg4RkMwMDU3RUI2QiAvKiBWYXJpYW50Q29kZXJzLmggKi87IH07CiAJCTVDQjIzNzhCMURGMERF
NTMwMDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IyMzc4QTFERjBERDQzMDAxMTdBQTMgLyogX1dL
V2Vic2l0ZVBvbGljaWVzLm1tICovOyB9OwogCQk1Q0IyMzc4QzFERjBERTZFMDAxMTdBQTMgLyog
X1dLV2Vic2l0ZVBvbGljaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1Q0IyMzc4OTFERjBERDQzMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUNC
MjM3OEUxREYwRTBEMzAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2llc0ludGVybmFsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IyMzc4RDFERjBF
MEMyMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJuYWwuaCAqLzsgfTsKQEAgLTM4
NTAsNiArMzg1MSw3IEBACiAJCTVDOEREMzgxMUZFNDU1Q0EwMEYyQTU1NiAvKiBXZWJzaXRlQXV0
b3BsYXlRdWlyay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJzaXRlQXV0
b3BsYXlRdWlyay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzlFNTY4MDFERjdG
MDU1MDBDOUVFMzMgLyogV0tXZWJzaXRlUG9saWNpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV0tXZWJzaXRlUG9saWNpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1QzlFNTY4MTFERjdGMDU1MDBDOUVFMzMgLyogV0tXZWJzaXRlUG9saWNp
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJzaXRlUG9saWNpZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNBOTg1NEUyMTEyODhGQzAwNTdFQjZC
IC8qIFZhcmlhbnRDb2RlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFy
aWFudENvZGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0IyMzc4OTFERjBE
RDQzMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IF9XS1dlYnNpdGVQb2xpY2llcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1Q0IyMzc4QTFERjBERDQzMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLV2Vic2l0ZVBvbGlj
aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0IyMzc4RDFERjBFMEMyMDAx
MTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gX1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTU3MzIsNiArNTczNCw3IEBACiAJCQkJMUFBQjAzNzgxODVBN0M2
QTAwRURGNTAxIC8qIE1lc3NhZ2VTZW5kZXIuaCAqLywKIAkJCQkxQUUwMEQ2OTE4MzI3QzEyMDAw
ODdERDcgLyogU3RyaW5nUmVmZXJlbmNlLmNwcCAqLywKIAkJCQkxQUUwMEQ2QTE4MzI3QzEyMDAw
ODdERDcgLyogU3RyaW5nUmVmZXJlbmNlLmggKi8sCisJCQkJNUNBOTg1NEUyMTEyODhGQzAwNTdF
QjZCIC8qIFZhcmlhbnRDb2RlcnMuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gSVBDOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTk0MDksNiArOTQxMiw3IEBACiAJCQkJNEEzQ0MxOEIx
OUIwNjQwRjAwRDE0QUVGIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTNDQzE4RDE5QjA2NDE5MDBEMTRBRUYgLyogVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc0RTc1RkUx
REYyMjExOTAwRDMxOEVDIC8qIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1Q0E5ODU0RjIxMTI4OTQzMDA1N0VCNkIgLyogVmFyaWFudENvZGVycy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTRFODY0OTMxQjE2NzUwNzAwQzgyRjQwIC8qIFZlcnNpb25DaGVja3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUyRDVBMUIwMUM1NzQ5NUEwMERFMzRBMyAvKiBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEMTI1QzVFMTg1N0VB
MDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346393</attachid>
            <date>2018-08-02 11:06:28 -0700</date>
            <delta_ts>2018-08-02 11:09:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188250-20180802110627.patch</filename>
            <type>text/plain</type>
            <size>15185</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMzQ1MDMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE4LTA4LTAyICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIFdURjo6VmFyaWFudCBmb3Ig
V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4ODI1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL0ZvcndhcmQuaDoKKyAgICAgICAgQWRkIGEgZmV3IG1v
cmUgdGhpbmdzIHNvIHdlIGRvbid0IG5lZWQgdG8gaW5jbHVkZSBWYXJpYW50IGV2ZXJ5d2hlcmUu
CisKIDIwMTgtMDgtMDIgIERhdmlkIEZlbnRvbiAgPGRhdmlkX2ZlbnRvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzNDQ4OS4KSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL0ZvcndhcmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgJ
KHJldmlzaW9uIDIzNDQ2NikKKysrIFNvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAkod29ya2luZyBj
b3B5KQpAQCAtNjgsNiArNjgsMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1l
ID0gdHlwZQogdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5
cGVuYW1lID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8S2V5QXJnPjo6SGFzaCwgdHlwZW5hbWUgPSBI
YXNoVHJhaXRzPEtleUFyZz4sIHR5cGVuYW1lID0gSGFzaFRyYWl0czxNYXBwZWRBcmc+PiBjbGFz
cyBIYXNoTWFwOwogdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lID0gdHlwZW5h
bWUgRGVmYXVsdEhhc2g8VmFsdWVBcmc+OjpIYXNoLCB0eXBlbmFtZSA9IEhhc2hUcmFpdHM8VmFs
dWVBcmc+PiBjbGFzcyBIYXNoU2V0OwogCit0ZW1wbGF0ZTxzaXplX3QsIHR5cGVuYW1lPiBzdHJ1
Y3QgdmFyaWFudF9hbHRlcm5hdGl2ZTsKK3RlbXBsYXRlPHB0cmRpZmZfdCwgdHlwZW5hbWUuLi4+
IHN0cnVjdCBfX2luZGV4ZWRfdHlwZTsKK3RlbXBsYXRlPHB0cmRpZmZfdCBfSW5kZXgsIHR5cGVu
YW1lLi4uIF9UeXBlcz4gY29uc3RleHByIHR5cGVuYW1lIF9faW5kZXhlZF90eXBlPF9JbmRleCwg
X1R5cGVzLi4uPjo6X190eXBlIGNvbnN0JiBnZXQoVmFyaWFudDxfVHlwZXMuLi4+IGNvbnN0Jik7
CisKIH0KIAogbmFtZXNwYWNlIHN0ZCB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjM0NDkzKQor
KysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzOSBA
QAorMjAxOC0wOC0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIFVzZSBXVEY6OlZhcmlhbnQgZm9yIFdlYlByZWZlcmVuY2VzU3RvcmU6OlZh
bHVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgy
NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCdz
IGJhc2ljYWxseSBhIFZhcmlhbnQgbm93LiBUaGlzIGp1c3QgdXNlcyB0ZW1wbGF0ZXMuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvVmFyaWFudENvZGVycy5oOiBBZGRlZC4KKyAgICAgICAgKElQ
Qzo6VmFyaWFudENvZGVyOjplbmNvZGVIZWxwZXIpOgorICAgICAgICAoSVBDOjpWYXJpYW50Q29k
ZXI6OmRlY29kZUhlbHBlcik6CisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRl
cy9XZWJQcmVmZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAuY3BwLmVyYjoKKyAgICAgICAgKiBTaGFy
ZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzU3RvcmU6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlR5cGVWaXNpdG9yOjpvcGVyYXRv
cigpIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6dmFsdWVGb3JLZXkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZTo6ZW5jb2RlIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWU6OmRlY29kZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OmFzPFN0cmluZz4pOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0Ojphczxib29sPik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OmFzPHVpbnQzMl90
Pik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OmFzPGRvdWJsZT4pOiBEZWxldGVkLgorICAg
ICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlOjpWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlOjpvcGVyYXRvcj0pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZTo6flZhbHVlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWU6OnR5cGUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1
ZTo6YXNTdHJpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJl
bmNlc1N0b3JlOjpWYWx1ZTo6YXNCb29sIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWU6OmFzVUludDMyIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWU6OmFzRG91YmxlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFs
dWU6OmRlc3Ryb3kpOiBEZWxldGVkLgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0wOC0wMSAgVG9tYXMgUG9w
ZWxhICA8dHBvcGVsYUByZWRoYXQuY29tPgogCiAgICAgICAgIFtXVEZdIFJlbmFtZSBTdHJpbmc6
OmZvcm1hdCB0byBTdHJpbmc6OmRlcHJlY2F0ZWRGb3JtYXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAkocmV2aXNpb24gMjM0NDY2KQorKysgU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtNTE1LDYgKzUxNSw2OCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1l
IEVyCiAgICAgfQogfTsKIAordGVtcGxhdGU8c2l6ZV90IGluZGV4LCB0eXBlbmFtZS4uLiBUeXBl
cz4KK3N0cnVjdCBWYXJpYW50Q29kZXIgeworICAgIHN0YXRpYyB2b2lkIGVuY29kZUhlbHBlcihF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXVEY6OlZhcmlhbnQ8VHlwZXMuLi4+JiB2YXJpYW50LCB1
bnNpZ25lZCBpKQorICAgIHsKKyAgICAgICAgaWYgKGkgPT0gaW5kZXgpIHsKKyAgICAgICAgICAg
IGVuY29kZXIgPDwgV1RGOjpnZXQ8aW5kZXg+KHZhcmlhbnQpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIFZhcmlhbnRDb2RlcjxpbmRleCAtIDEsIFR5cGVzLi4uPjo6
ZW5jb2RlSGVscGVyKGVuY29kZXIsIHZhcmlhbnQsIGkpOworICAgIH0KKyAgICAKKyAgICBzdGF0
aWMgYXV0byBkZWNvZGVIZWxwZXIoRGVjb2RlciYgZGVjb2RlciwgdW5zaWduZWQgaSkgLT4gc3Rk
OjpvcHRpb25hbDxXVEY6OlZhcmlhbnQ8VHlwZXMuLi4+PgorICAgIHsKKyAgICAgICAgaWYgKGkg
PT0gaW5kZXgpIHsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgV1RGOjp2YXJp
YW50X2FsdGVybmF0aXZlPGluZGV4LCBXVEY6OlZhcmlhbnQ8VHlwZXMuLi4+Pjo6dHlwZT4gb3B0
aW9uYWw7CisgICAgICAgICAgICBkZWNvZGVyID4+IG9wdGlvbmFsOworICAgICAgICAgICAgaWYg
KCFvcHRpb25hbCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHsgV1RGTW92ZSgqb3B0aW9uYWwpIH07CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIFZhcmlhbnRDb2RlcjxpbmRleCAtIDEsIFR5cGVzLi4uPjo6ZGVjb2RlSGVscGVyKGRl
Y29kZXIsIGkpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIFR5cGVzPgorc3Ry
dWN0IFZhcmlhbnRDb2RlcjwwLCBUeXBlcy4uLj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZUhl
bHBlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXVEY6OlZhcmlhbnQ8VHlwZXMuLi4+JiB2YXJp
YW50LCB1bnNpZ25lZCBpKQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpLCAhaSk7Cisg
ICAgICAgIGVuY29kZXIgPDwgV1RGOjpnZXQ8MD4odmFyaWFudCk7CisgICAgfQorICAgIAorICAg
IHN0YXRpYyBhdXRvIGRlY29kZUhlbHBlcihEZWNvZGVyJiBkZWNvZGVyLCB1bnNpZ25lZCBpKSAt
PiBzdGQ6Om9wdGlvbmFsPFdURjo6VmFyaWFudDxUeXBlcy4uLj4+CisgICAgeworICAgICAgICBB
U1NFUlRfVU5VU0VEKGksICFpKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx0eXBlbmFtZSBXVEY6
OnZhcmlhbnRfYWx0ZXJuYXRpdmU8MCwgV1RGOjpWYXJpYW50PFR5cGVzLi4uPj46OnR5cGU+IG9w
dGlvbmFsOworICAgICAgICBkZWNvZGVyID4+IG9wdGlvbmFsOworICAgICAgICBpZiAoIW9wdGlv
bmFsKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHsg
V1RGTW92ZSgqb3B0aW9uYWwpIH07CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUuLi4g
VHlwZXM+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdURjo6VmFyaWFudDxUeXBlcy4uLj4+IHsKKyAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV1RGOjpWYXJpYW50
PFR5cGVzLi4uPiYgdmFyaWFudCkKKyAgICB7CisgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4odmFyaWFudC5pbmRleCgpKSA9PSB2YXJpYW50LmluZGV4KCkpOworICAgICAgICB1
bnNpZ25lZCBpID0gdmFyaWFudC5pbmRleCgpOworICAgICAgICBlbmNvZGVyIDw8IGk7CisgICAg
ICAgIFZhcmlhbnRDb2RlcjxzaXplb2YuLi4oVHlwZXMpIC0gMSwgVHlwZXMuLi4+OjplbmNvZGVI
ZWxwZXIoZW5jb2RlciwgdmFyaWFudCwgaSk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBhdXRv
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSAtPiBzdGQ6Om9wdGlvbmFsPFdURjo6VmFyaWFudDxU
eXBlcy4uLj4+CisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBpOworICAg
ICAgICBkZWNvZGVyID4+IGk7CisgICAgICAgIGlmICghaSkKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBWYXJpYW50Q29kZXI8c2l6ZW9mLi4uKFR5cGVz
KSAtIDEsIFR5cGVzLi4uPjo6ZGVjb2RlSGVscGVyKGRlY29kZXIsICppKTsKKyAgICB9Cit9Owor
ICAgIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXYWxsVGltZT4gewogICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2FsbFRpbWUmKTsKICAgICBzdGF0aWMg
Ym9vbCBkZWNvZGUoRGVjb2RlciYsIFdhbGxUaW1lJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNTdG9yZURlZmF1bHRzTWFw
LmNwcC5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2Vz
VGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzU3RvcmVEZWZhdWx0c01hcC5jcHAuZXJiCShyZXZpc2lv
biAyMzQ0NjYpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
V2ViUHJlZmVyZW5jZXNTdG9yZURlZmF1bHRzTWFwLmNwcC5lcmIJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaCIK
ICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc0tleXMuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiAvLyBGSVhNRTogVGhlc2Ugc2hv
dWxkIGFkZGVkIHZpYSBvcHRpb25zIGluIFdlYlByZWZlcmVuY2VzLnlhbWwsIHJhdGhlciB0aGFu
IGhhcmRjb2RlZC4KICNpbmNsdWRlICJGb250U21vb3RoaW5nTGV2ZWwuaCIKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwCShyZXZpc2lvbiAyMzQ0
NjYpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDIsNzIgKzQyLDYgQEAgc3RhdGljIEJvb2xPdmVycmlkZXNNYXAmIGJv
b2xUZXN0UnVubmVyTwogICAgIHJldHVybiBtYXA7CiB9CiAKLXZvaWQgV2ViUHJlZmVyZW5jZXNT
dG9yZTo6VmFsdWU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAg
ZW5jb2Rlci5lbmNvZGVFbnVtKG1fdHlwZSk7Ci0gICAgCi0gICAgc3dpdGNoIChtX3R5cGUpIHsK
LSAgICBjYXNlIFR5cGU6Ok5vbmU6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVHlwZTo6U3Ry
aW5nOgotICAgICAgICBlbmNvZGVyIDw8IG1fc3RyaW5nOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIFR5cGU6OkJvb2w6Ci0gICAgICAgIGVuY29kZXIgPDwgbV9ib29sOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIFR5cGU6OlVJbnQzMjoKLSAgICAgICAgZW5jb2RlciA8PCBtX3VpbnQzMjsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUeXBlOjpEb3VibGU6Ci0gICAgICAgIGVuY29kZXIg
PDwgbV9kb3VibGU7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotYm9vbCBXZWJQcmVmZXJl
bmNlc1N0b3JlOjpWYWx1ZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgVmFsdWUmIHJl
c3VsdCkKLXsKLSAgICBWYWx1ZTo6VHlwZSB0eXBlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVF
bnVtKHR5cGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgc3dpdGNoICh0eXBl
KSB7Ci0gICAgY2FzZSBUeXBlOjpOb25lOgotICAgICAgICBicmVhazsKLSAgICBjYXNlIFR5cGU6
OlN0cmluZzogewotICAgICAgICBTdHJpbmcgdmFsdWU7Ci0gICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUodmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQg
PSBWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIFR5cGU6OkJv
b2w6IHsKLSAgICAgICAgYm9vbCB2YWx1ZTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh2
YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdCA9IFZhbHVl
KHZhbHVlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgVHlwZTo6VUludDMyOiB7
Ci0gICAgICAgIHVpbnQzMl90IHZhbHVlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZh
bHVlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzdWx0ID0gVmFsdWUo
dmFsdWUpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBUeXBlOjpEb3VibGU6IHsK
LSAgICAgICAgZG91YmxlIHZhbHVlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZhbHVl
KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzdWx0ID0gVmFsdWUodmFs
dWUpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCiBXZWJQcmVmZXJlbmNlc1N0
b3JlOjpXZWJQcmVmZXJlbmNlc1N0b3JlKCkKIHsKIH0KQEAgLTEyMCwxMCArNTQsMTcgQEAgdm9p
ZCBXZWJQcmVmZXJlbmNlc1N0b3JlOjplbmNvZGUoSVBDOjpFbgogCiBib29sIFdlYlByZWZlcmVu
Y2VzU3RvcmU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYlByZWZlcmVuY2VzU3Rv
cmUmIHJlc3VsdCkKIHsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3ZhbHVlcykp
CisgICAgc3RkOjpvcHRpb25hbDxIYXNoTWFwPFN0cmluZywgVmFsdWU+PiB2YWx1ZXM7CisgICAg
ZGVjb2RlciA+PiB2YWx1ZXM7CisgICAgaWYgKCF2YWx1ZXMpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX292ZXJyaWRlbkRlZmF1bHRzKSkK
KyAgICByZXN1bHQubV92YWx1ZXMgPSBXVEZNb3ZlKCp2YWx1ZXMpOworCisgICAgc3RkOjpvcHRp
b25hbDxIYXNoTWFwPFN0cmluZywgVmFsdWU+PiBvdmVycmlkZW5EZWZhdWx0czsKKyAgICBkZWNv
ZGVyID4+IG92ZXJyaWRlbkRlZmF1bHRzOworICAgIGlmICghb3ZlcnJpZGVuRGVmYXVsdHMpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXN1bHQubV9vdmVycmlkZW5EZWZhdWx0cyA9IFdU
Rk1vdmUoKm92ZXJyaWRlbkRlZmF1bHRzKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTM3
LDM3ICs3OCwyMSBAQCB2b2lkIFdlYlByZWZlcmVuY2VzU3RvcmU6OnJlbW92ZVRlc3RSdW5uCiAg
ICAgYm9vbFRlc3RSdW5uZXJPdmVycmlkZXNNYXAoKS5jbGVhcigpOwogfQogCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gc3RydWN0IFRvVHlwZSB7IH07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IFRvVHlw
ZTxTdHJpbmc+IHsgc3RhdGljIGNvbnN0IGF1dG8gdmFsdWUgPSBXZWJQcmVmZXJlbmNlc1N0b3Jl
OjpWYWx1ZTo6VHlwZTo6U3RyaW5nOyB9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgVG9UeXBlPGJvb2w+
IHsgc3RhdGljIGNvbnN0IGF1dG8gdmFsdWUgPSBXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZTo6
VHlwZTo6Qm9vbDsgfTsKLXRlbXBsYXRlPD4gc3RydWN0IFRvVHlwZTx1aW50MzJfdD4geyBzdGF0
aWMgY29uc3QgYXV0byB2YWx1ZSA9IFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlOjpUeXBlOjpV
SW50MzI7IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBUb1R5cGU8ZG91YmxlPiB7IHN0YXRpYyBjb25z
dCBhdXRvIHZhbHVlID0gV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWU6OlR5cGU6OkRvdWJsZTsg
fTsKLQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNYXBwZWRUeXBlPiBNYXBwZWRUeXBlIGFzKGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlJik7Ci0KLXRlbXBsYXRlPD4gU3RyaW5nIGFzPFN0
cmluZz4oY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUmIHZhbHVlKSB7IHJldHVybiB2
YWx1ZS5hc1N0cmluZygpOyB9Ci10ZW1wbGF0ZTw+IGJvb2wgYXM8Ym9vbD4oY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZTo6VmFsdWUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5hc0Jvb2woKTsgfQot
dGVtcGxhdGU8PiB1aW50MzJfdCBhczx1aW50MzJfdD4oY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZTo6VmFsdWUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5hc1VJbnQzMigpOyB9Ci10ZW1wbGF0ZTw+
IGRvdWJsZSBhczxkb3VibGU+KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlJiB2YWx1
ZSkgeyByZXR1cm4gdmFsdWUuYXNEb3VibGUoKTsgfQotCi0KIHRlbXBsYXRlPHR5cGVuYW1lIE1h
cHBlZFR5cGU+CiBzdGF0aWMgTWFwcGVkVHlwZSB2YWx1ZUZvcktleShjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlOjpWYWx1ZU1hcCYgdmFsdWVzLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlOjpW
YWx1ZU1hcCYgb3ZlcnJpZGVuRGVmYXVsdHMsIGNvbnN0IFN0cmluZyYga2V5KQogewogICAgIGF1
dG8gdmFsdWVzSXQgPSB2YWx1ZXMuZmluZChrZXkpOwotICAgIGlmICh2YWx1ZXNJdCAhPSB2YWx1
ZXMuZW5kKCkgJiYgdmFsdWVzSXQtPnZhbHVlLnR5cGUoKSA9PSBUb1R5cGU8TWFwcGVkVHlwZT46
OnZhbHVlKQotICAgICAgICByZXR1cm4gYXM8TWFwcGVkVHlwZT4odmFsdWVzSXQtPnZhbHVlKTsK
KyAgICBpZiAodmFsdWVzSXQgIT0gdmFsdWVzLmVuZCgpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8TWFwcGVkVHlwZT4odmFsdWVzSXQtPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6Z2V0
PE1hcHBlZFR5cGU+KHZhbHVlc0l0LT52YWx1ZSk7CiAKICAgICBhdXRvIG92ZXJyaWRlbkRlZmF1
bHRzSXQgPSBvdmVycmlkZW5EZWZhdWx0cy5maW5kKGtleSk7Ci0gICAgaWYgKG92ZXJyaWRlbkRl
ZmF1bHRzSXQgIT0gb3ZlcnJpZGVuRGVmYXVsdHMuZW5kKCkgJiYgb3ZlcnJpZGVuRGVmYXVsdHNJ
dC0+dmFsdWUudHlwZSgpID09IFRvVHlwZTxNYXBwZWRUeXBlPjo6dmFsdWUpCi0gICAgICAgIHJl
dHVybiBhczxNYXBwZWRUeXBlPihvdmVycmlkZW5EZWZhdWx0c0l0LT52YWx1ZSk7CisgICAgaWYg
KG92ZXJyaWRlbkRlZmF1bHRzSXQgIT0gb3ZlcnJpZGVuRGVmYXVsdHMuZW5kKCkgJiYgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxNYXBwZWRUeXBlPihvdmVycmlkZW5EZWZhdWx0c0l0LT52YWx1ZSkp
CisgICAgICAgIHJldHVybiBXVEY6OmdldDxNYXBwZWRUeXBlPihvdmVycmlkZW5EZWZhdWx0c0l0
LT52YWx1ZSk7CiAKICAgICBhdXRvJiBkZWZhdWx0c01hcCA9IFdlYlByZWZlcmVuY2VzU3RvcmU6
OmRlZmF1bHRzKCk7CiAgICAgYXV0byBkZWZhdWx0c0l0ID0gZGVmYXVsdHNNYXAuZmluZChrZXkp
OwotICAgIGlmIChkZWZhdWx0c0l0ICE9IGRlZmF1bHRzTWFwLmVuZCgpICYmIGRlZmF1bHRzSXQt
PnZhbHVlLnR5cGUoKSA9PSBUb1R5cGU8TWFwcGVkVHlwZT46OnZhbHVlKQotICAgICAgICByZXR1
cm4gYXM8TWFwcGVkVHlwZT4oZGVmYXVsdHNJdC0+dmFsdWUpOworICAgIGlmIChkZWZhdWx0c0l0
ICE9IGRlZmF1bHRzTWFwLmVuZCgpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TWFwcGVkVHlw
ZT4oZGVmYXVsdHNJdC0+dmFsdWUpKQorICAgICAgICByZXR1cm4gV1RGOjpnZXQ8TWFwcGVkVHlw
ZT4oZGVmYXVsdHNJdC0+dmFsdWUpOwogCiAgICAgcmV0dXJuIE1hcHBlZFR5cGUoKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgJKHJldmlzaW9u
IDIzNDQ2NikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAko
d29ya2luZyBjb3B5KQpAQCAtNjIsMTE5ICs2Miw3IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0
b3JlIHsKICAgICBzdGF0aWMgdm9pZCBvdmVycmlkZUJvb2xWYWx1ZUZvcktleShjb25zdCBTdHJp
bmcmIGtleSwgYm9vbCB2YWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlVGVzdFJ1bm5lck92
ZXJyaWRlcygpOwogCi0gICAgc3RydWN0IFZhbHVlIHsKLSAgICAgICAgZW51bSBjbGFzcyBUeXBl
IHsKLSAgICAgICAgICAgIE5vbmUsCi0gICAgICAgICAgICBTdHJpbmcsCi0gICAgICAgICAgICBC
b29sLAotICAgICAgICAgICAgVUludDMyLAotICAgICAgICAgICAgRG91YmxlLAotICAgICAgICB9
OwotCi0gICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgICAgICBz
dGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgVmFsdWUmKTsKLQotICAgICAgICBleHBs
aWNpdCBWYWx1ZSgpIDogbV90eXBlKFR5cGU6Ok5vbmUpIHsgfQotICAgICAgICBleHBsaWNpdCBW
YWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKSA6IG1fdHlwZShUeXBlOjpTdHJpbmcpLCBtX3N0cmlu
Zyh2YWx1ZSkgeyB9Ci0gICAgICAgIGV4cGxpY2l0IFZhbHVlKGJvb2wgdmFsdWUpIDogbV90eXBl
KFR5cGU6OkJvb2wpLCBtX2Jvb2wodmFsdWUpIHsgfQotICAgICAgICBleHBsaWNpdCBWYWx1ZSh1
aW50MzJfdCB2YWx1ZSkgOiBtX3R5cGUoVHlwZTo6VUludDMyKSwgbV91aW50MzIodmFsdWUpIHsg
fQotICAgICAgICBleHBsaWNpdCBWYWx1ZShkb3VibGUgdmFsdWUpIDogbV90eXBlKFR5cGU6OkRv
dWJsZSksIG1fZG91YmxlKHZhbHVlKSB7IH0KLQotICAgICAgICBWYWx1ZShWYWx1ZSYmIHZhbHVl
KQotICAgICAgICAgICAgOiBtX3R5cGUodmFsdWUubV90eXBlKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgICAgICAgICAgY2FzZSBUeXBlOjpOb25lOgotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBUeXBlOjpTdHJpbmc6Ci0gICAg
ICAgICAgICAgICAgbmV3ICgmbV9zdHJpbmcpIFN0cmluZyhXVEZNb3ZlKHZhbHVlLm1fc3RyaW5n
KSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFR5cGU6OkJvb2w6
Ci0gICAgICAgICAgICAgICAgbV9ib29sID0gdmFsdWUubV9ib29sOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBUeXBlOjpVSW50MzI6Ci0gICAgICAgICAgICAgICAg
bV91aW50MzIgPSB2YWx1ZS5tX3VpbnQzMjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgVHlwZTo6RG91YmxlOgotICAgICAgICAgICAgICAgIG1fZG91YmxlID0gdmFs
dWUubV9kb3VibGU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLQotICAgICAgICBWYWx1ZSYgb3BlcmF0b3I9KGNvbnN0IFZhbHVlJiBvdGhlcikKLSAg
ICAgICAgewotICAgICAgICAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQotICAgICAgICAgICAgICAg
IHJldHVybiAqdGhpczsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGRlc3Ryb3koKTsK
LQotICAgICAgICAgICAgbV90eXBlID0gb3RoZXIubV90eXBlOwotICAgICAgICAgICAgc3dpdGNo
IChtX3R5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgVHlwZTo6Tm9uZToKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVHlwZTo6U3RyaW5nOgotICAgICAgICAgICAgICAg
IG5ldyAoJm1fc3RyaW5nKSBTdHJpbmcob3RoZXIubV9zdHJpbmcpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBUeXBlOjpCb29sOgotICAgICAgICAgICAgICAgIG1f
Ym9vbCA9IG90aGVyLm1fYm9vbDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgVHlwZTo6VUludDMyOgotICAgICAgICAgICAgICAgIG1fdWludDMyID0gb3RoZXIubV91
aW50MzI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFR5cGU6OkRv
dWJsZToKLSAgICAgICAgICAgICAgICBtX2RvdWJsZSA9IG90aGVyLm1fZG91YmxlOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgIAotICAgICAgICAgICAgcmV0dXJu
ICp0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgflZhbHVlKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgZGVzdHJveSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlOyB9Ci0KLSAgICAgICAgU3RyaW5nIGFzU3RyaW5nKCkgY29uc3QKLSAg
ICAgICAgewotICAgICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpTdHJpbmcpOwotICAg
ICAgICAgICAgcmV0dXJuIG1fc3RyaW5nOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBhc0Jv
b2woKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6
OkJvb2wpOwotICAgICAgICAgICAgcmV0dXJuIG1fYm9vbDsKLSAgICAgICAgfQotCi0gICAgICAg
IHVpbnQzMl90IGFzVUludDMyKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBUeXBlOjpVSW50MzIpOwotICAgICAgICAgICAgcmV0dXJuIG1fdWludDMyOwot
ICAgICAgICB9Ci0KLSAgICAgICAgZG91YmxlIGFzRG91YmxlKCkgY29uc3QKLSAgICAgICAgewot
ICAgICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpEb3VibGUpOwotICAgICAgICAgICAg
cmV0dXJuIG1fZG91YmxlOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lk
IGRlc3Ryb3koKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV90eXBlID09IFR5cGU6OlN0
cmluZykKLSAgICAgICAgICAgICAgICBtX3N0cmluZy5+U3RyaW5nKCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBUeXBlIG1fdHlwZTsKLSAgICAgICAgdW5pb24gewotICAgICAgICAgICAgU3RyaW5n
IG1fc3RyaW5nOwotICAgICAgICAgICAgYm9vbCBtX2Jvb2w7Ci0gICAgICAgICAgICB1aW50MzJf
dCBtX3VpbnQzMjsKLSAgICAgICAgICAgIGRvdWJsZSBtX2RvdWJsZTsKLSAgICAgICAgfTsKLSAg
ICB9OworICAgIHVzaW5nIFZhbHVlID0gVmFyaWFudDxTdHJpbmcsIGJvb2wsIHVpbnQzMl90LCBk
b3VibGU+OwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmFsdWU+IFZhbHVlTWFwOwog
ICAgIFZhbHVlTWFwIG1fdmFsdWVzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346394</attachid>
            <date>2018-08-02 11:09:59 -0700</date>
            <delta_ts>2018-08-02 11:11:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188250-20180802110958.patch</filename>
            <type>text/plain</type>
            <size>15121</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMzQ1MDMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE4LTA4LTAyICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIFdURjo6VmFyaWFudCBmb3Ig
V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4ODI1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL0ZvcndhcmQuaDoKKyAgICAgICAgQWRkIGEgZmV3IG1v
cmUgdGhpbmdzIHNvIHdlIGRvbid0IG5lZWQgdG8gaW5jbHVkZSBWYXJpYW50IGV2ZXJ5d2hlcmUu
CisKIDIwMTgtMDgtMDIgIERhdmlkIEZlbnRvbiAgPGRhdmlkX2ZlbnRvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzNDQ4OS4KSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL0ZvcndhcmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgJ
KHJldmlzaW9uIDIzNDQ2NikKKysrIFNvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAkod29ya2luZyBj
b3B5KQpAQCAtNjgsNiArNjgsMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1l
ID0gdHlwZQogdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5
cGVuYW1lID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8S2V5QXJnPjo6SGFzaCwgdHlwZW5hbWUgPSBI
YXNoVHJhaXRzPEtleUFyZz4sIHR5cGVuYW1lID0gSGFzaFRyYWl0czxNYXBwZWRBcmc+PiBjbGFz
cyBIYXNoTWFwOwogdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lID0gdHlwZW5h
bWUgRGVmYXVsdEhhc2g8VmFsdWVBcmc+OjpIYXNoLCB0eXBlbmFtZSA9IEhhc2hUcmFpdHM8VmFs
dWVBcmc+PiBjbGFzcyBIYXNoU2V0OwogCit0ZW1wbGF0ZTxzaXplX3QsIHR5cGVuYW1lPiBzdHJ1
Y3QgdmFyaWFudF9hbHRlcm5hdGl2ZTsKK3RlbXBsYXRlPHB0cmRpZmZfdCwgdHlwZW5hbWUuLi4+
IHN0cnVjdCBfX2luZGV4ZWRfdHlwZTsKK3RlbXBsYXRlPHB0cmRpZmZfdCBfSW5kZXgsIHR5cGVu
YW1lLi4uIF9UeXBlcz4gY29uc3RleHByIHR5cGVuYW1lIF9faW5kZXhlZF90eXBlPF9JbmRleCwg
X1R5cGVzLi4uPjo6X190eXBlIGNvbnN0JiBnZXQoVmFyaWFudDxfVHlwZXMuLi4+IGNvbnN0Jik7
CisKIH0KIAogbmFtZXNwYWNlIHN0ZCB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjM0NDkzKQor
KysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzOSBA
QAorMjAxOC0wOC0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIFVzZSBXVEY6OlZhcmlhbnQgZm9yIFdlYlByZWZlcmVuY2VzU3RvcmU6OlZh
bHVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgy
NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCdz
IGJhc2ljYWxseSBhIFZhcmlhbnQgbm93LiBUaGlzIGp1c3QgdXNlcyB0ZW1wbGF0ZXMuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvVmFyaWFudENvZGVycy5oOiBBZGRlZC4KKyAgICAgICAgKElQ
Qzo6VmFyaWFudENvZGVyOjplbmNvZGVIZWxwZXIpOgorICAgICAgICAoSVBDOjpWYXJpYW50Q29k
ZXI6OmRlY29kZUhlbHBlcik6CisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRl
cy9XZWJQcmVmZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAuY3BwLmVyYjoKKyAgICAgICAgKiBTaGFy
ZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzU3RvcmU6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlR5cGVWaXNpdG9yOjpvcGVyYXRv
cigpIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6dmFsdWVGb3JLZXkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZTo6ZW5jb2RlIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWU6OmRlY29kZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OmFzPFN0cmluZz4pOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0Ojphczxib29sPik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OmFzPHVpbnQzMl90
Pik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OmFzPGRvdWJsZT4pOiBEZWxldGVkLgorICAg
ICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlOjpWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlOjpvcGVyYXRvcj0pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZTo6flZhbHVlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWU6OnR5cGUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1
ZTo6YXNTdHJpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJl
bmNlc1N0b3JlOjpWYWx1ZTo6YXNCb29sIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWU6OmFzVUludDMyIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWU6OmFzRG91YmxlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFs
dWU6OmRlc3Ryb3kpOiBEZWxldGVkLgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0wOC0wMSAgVG9tYXMgUG9w
ZWxhICA8dHBvcGVsYUByZWRoYXQuY29tPgogCiAgICAgICAgIFtXVEZdIFJlbmFtZSBTdHJpbmc6
OmZvcm1hdCB0byBTdHJpbmc6OmRlcHJlY2F0ZWRGb3JtYXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAkocmV2aXNpb24gMjM0NDY2KQorKysgU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtNTE1LDYgKzUxNSw2OCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1l
IEVyCiAgICAgfQogfTsKIAordGVtcGxhdGU8c2l6ZV90IGluZGV4LCB0eXBlbmFtZS4uLiBUeXBl
cz4KK3N0cnVjdCBWYXJpYW50Q29kZXIgeworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBXVEY6OlZhcmlhbnQ8VHlwZXMuLi4+JiB2YXJpYW50LCB1bnNpZ25l
ZCBpKQorICAgIHsKKyAgICAgICAgaWYgKGkgPT0gaW5kZXgpIHsKKyAgICAgICAgICAgIGVuY29k
ZXIgPDwgV1RGOjpnZXQ8aW5kZXg+KHZhcmlhbnQpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIFZhcmlhbnRDb2RlcjxpbmRleCAtIDEsIFR5cGVzLi4uPjo6ZW5jb2Rl
KGVuY29kZXIsIHZhcmlhbnQsIGkpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgYXV0byBkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgdW5zaWduZWQgaSkgLT4gc3RkOjpvcHRpb25hbDxXVEY6OlZh
cmlhbnQ8VHlwZXMuLi4+PgorICAgIHsKKyAgICAgICAgaWYgKGkgPT0gaW5kZXgpIHsKKyAgICAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgV1RGOjp2YXJpYW50X2FsdGVybmF0aXZlPGlu
ZGV4LCBXVEY6OlZhcmlhbnQ8VHlwZXMuLi4+Pjo6dHlwZT4gb3B0aW9uYWw7CisgICAgICAgICAg
ICBkZWNvZGVyID4+IG9wdGlvbmFsOworICAgICAgICAgICAgaWYgKCFvcHRpb25hbCkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHsgV1RG
TW92ZSgqb3B0aW9uYWwpIH07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFZhcmlhbnRDb2Rl
cjxpbmRleCAtIDEsIFR5cGVzLi4uPjo6ZGVjb2RlKGRlY29kZXIsIGkpOworICAgIH0KK307CisK
K3RlbXBsYXRlPHR5cGVuYW1lLi4uIFR5cGVzPgorc3RydWN0IFZhcmlhbnRDb2RlcjwwLCBUeXBl
cy4uLj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBX
VEY6OlZhcmlhbnQ8VHlwZXMuLi4+JiB2YXJpYW50LCB1bnNpZ25lZCBpKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUX1VOVVNFRChpLCAhaSk7CisgICAgICAgIGVuY29kZXIgPDwgV1RGOjpnZXQ8MD4o
dmFyaWFudCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdURjo6VmFy
aWFudDxUeXBlcy4uLj4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCB1bnNpZ25lZCBpKQorICAg
IHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpLCAhaSk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
dHlwZW5hbWUgV1RGOjp2YXJpYW50X2FsdGVybmF0aXZlPDAsIFdURjo6VmFyaWFudDxUeXBlcy4u
Lj4+Ojp0eXBlPiBvcHRpb25hbDsKKyAgICAgICAgZGVjb2RlciA+PiBvcHRpb25hbDsKKyAgICAg
ICAgaWYgKCFvcHRpb25hbCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiB7IFdURk1vdmUoKm9wdGlvbmFsKSB9OworICAgIH0KK307CisKK3RlbXBsYXRl
PHR5cGVuYW1lLi4uIFR5cGVzPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXVEY6OlZhcmlhbnQ8VHlw
ZXMuLi4+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFdURjo6VmFyaWFudDxUeXBlcy4uLj4mIHZhcmlhbnQpCisgICAgeworICAgICAgICBBU1NFUlQo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhcmlhbnQuaW5kZXgoKSkgPT0gdmFyaWFudC5pbmRleCgp
KTsKKyAgICAgICAgdW5zaWduZWQgaSA9IHZhcmlhbnQuaW5kZXgoKTsKKyAgICAgICAgZW5jb2Rl
ciA8PCBpOworICAgICAgICBWYXJpYW50Q29kZXI8c2l6ZW9mLi4uKFR5cGVzKSAtIDEsIFR5cGVz
Li4uPjo6ZW5jb2RlKGVuY29kZXIsIHZhcmlhbnQsIGkpOworICAgIH0KKyAgICAKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxXVEY6OlZhcmlhbnQ8VHlwZXMuLi4+PiBkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGk7CisgICAg
ICAgIGRlY29kZXIgPj4gaTsKKyAgICAgICAgaWYgKCFpKQorICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIFZhcmlhbnRDb2RlcjxzaXplb2YuLi4oVHlwZXMp
IC0gMSwgVHlwZXMuLi4+OjpkZWNvZGUoZGVjb2RlciwgKmkpOworICAgIH0KK307CisgICAgCiB0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdhbGxUaW1lPiB7CiAgICAgc3RhdGljIHZv
aWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXYWxsVGltZSYpOwogICAgIHN0YXRpYyBib29sIGRl
Y29kZShEZWNvZGVyJiwgV2FsbFRpbWUmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9Q
cmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAuY3BwLmVy
Ygo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0
ZXMvV2ViUHJlZmVyZW5jZXNTdG9yZURlZmF1bHRzTWFwLmNwcC5lcmIJKHJldmlzaW9uIDIzNDQ2
NikKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVm
ZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAuY3BwLmVyYgkod29ya2luZyBjb3B5KQpAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oIgogI2luY2x1
ZGUgIldlYlByZWZlcmVuY2VzS2V5cy5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgYWRk
ZWQgdmlhIG9wdGlvbnMgaW4gV2ViUHJlZmVyZW5jZXMueWFtbCwgcmF0aGVyIHRoYW4gaGFyZGNv
ZGVkLgogI2luY2x1ZGUgIkZvbnRTbW9vdGhpbmdMZXZlbC5oIgpJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAJKHJldmlzaW9uIDIzNDQ2NikKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw3MiArNDIsNiBAQCBzdGF0aWMgQm9vbE92ZXJyaWRlc01hcCYgYm9vbFRlc3RS
dW5uZXJPCiAgICAgcmV0dXJuIG1hcDsKIH0KIAotdm9pZCBXZWJQcmVmZXJlbmNlc1N0b3JlOjpW
YWx1ZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVy
LmVuY29kZUVudW0obV90eXBlKTsKLSAgICAKLSAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgIGNh
c2UgVHlwZTo6Tm9uZToKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUeXBlOjpTdHJpbmc6Ci0g
ICAgICAgIGVuY29kZXIgPDwgbV9zdHJpbmc7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVHlw
ZTo6Qm9vbDoKLSAgICAgICAgZW5jb2RlciA8PCBtX2Jvb2w7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgVHlwZTo6VUludDMyOgotICAgICAgICBlbmNvZGVyIDw8IG1fdWludDMyOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFR5cGU6OkRvdWJsZToKLSAgICAgICAgZW5jb2RlciA8PCBtX2Rv
dWJsZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1ib29sIFdlYlByZWZlcmVuY2VzU3Rv
cmU6OlZhbHVlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBWYWx1ZSYgcmVzdWx0KQot
ewotICAgIFZhbHVlOjpUeXBlIHR5cGU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0odHlw
ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAg
ICBjYXNlIFR5cGU6Ok5vbmU6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVHlwZTo6U3RyaW5n
OiB7Ci0gICAgICAgIFN0cmluZyB2YWx1ZTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh2
YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdCA9IFZhbHVl
KHZhbHVlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgVHlwZTo6Qm9vbDogewot
ICAgICAgICBib29sIHZhbHVlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZhbHVlKSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzdWx0ID0gVmFsdWUodmFsdWUp
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBUeXBlOjpVSW50MzI6IHsKLSAgICAg
ICAgdWludDMyX3QgdmFsdWU7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodmFsdWUpKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQgPSBWYWx1ZSh2YWx1ZSk7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIFR5cGU6OkRvdWJsZTogewotICAgICAg
ICBkb3VibGUgdmFsdWU7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodmFsdWUpKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQgPSBWYWx1ZSh2YWx1ZSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIFdlYlByZWZlcmVuY2VzU3RvcmU6Oldl
YlByZWZlcmVuY2VzU3RvcmUoKQogewogfQpAQCAtMTIwLDEwICs1NCwxNyBAQCB2b2lkIFdlYlBy
ZWZlcmVuY2VzU3RvcmU6OmVuY29kZShJUEM6OkVuCiAKIGJvb2wgV2ViUHJlZmVyZW5jZXNTdG9y
ZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUHJlZmVyZW5jZXNTdG9yZSYgcmVz
dWx0KQogewotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fdmFsdWVzKSkKKyAgICBz
dGQ6Om9wdGlvbmFsPEhhc2hNYXA8U3RyaW5nLCBWYWx1ZT4+IHZhbHVlczsKKyAgICBkZWNvZGVy
ID4+IHZhbHVlczsKKyAgICBpZiAoIXZhbHVlcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fb3ZlcnJpZGVuRGVmYXVsdHMpKQorICAgIHJl
c3VsdC5tX3ZhbHVlcyA9IFdURk1vdmUoKnZhbHVlcyk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPEhh
c2hNYXA8U3RyaW5nLCBWYWx1ZT4+IG92ZXJyaWRlbkRlZmF1bHRzOworICAgIGRlY29kZXIgPj4g
b3ZlcnJpZGVuRGVmYXVsdHM7CisgICAgaWYgKCFvdmVycmlkZW5EZWZhdWx0cykKICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHJlc3VsdC5tX292ZXJyaWRlbkRlZmF1bHRzID0gV1RGTW92ZSgq
b3ZlcnJpZGVuRGVmYXVsdHMpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMzcsMzcgKzc4
LDIxIEBAIHZvaWQgV2ViUHJlZmVyZW5jZXNTdG9yZTo6cmVtb3ZlVGVzdFJ1bm4KICAgICBib29s
VGVzdFJ1bm5lck92ZXJyaWRlc01hcCgpLmNsZWFyKCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgVG9UeXBlIHsgfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgVG9UeXBlPFN0cmlu
Zz4geyBzdGF0aWMgY29uc3QgYXV0byB2YWx1ZSA9IFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVl
OjpUeXBlOjpTdHJpbmc7IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBUb1R5cGU8Ym9vbD4geyBzdGF0
aWMgY29uc3QgYXV0byB2YWx1ZSA9IFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlOjpUeXBlOjpC
b29sOyB9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgVG9UeXBlPHVpbnQzMl90PiB7IHN0YXRpYyBjb25z
dCBhdXRvIHZhbHVlID0gV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWU6OlR5cGU6OlVJbnQzMjsg
fTsKLXRlbXBsYXRlPD4gc3RydWN0IFRvVHlwZTxkb3VibGU+IHsgc3RhdGljIGNvbnN0IGF1dG8g
dmFsdWUgPSBXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZTo6VHlwZTo6RG91YmxlOyB9OwotCi0K
LXRlbXBsYXRlPHR5cGVuYW1lIE1hcHBlZFR5cGU+IE1hcHBlZFR5cGUgYXMoY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZTo6VmFsdWUmKTsKLQotdGVtcGxhdGU8PiBTdHJpbmcgYXM8U3RyaW5nPihj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmFz
U3RyaW5nKCk7IH0KLXRlbXBsYXRlPD4gYm9vbCBhczxib29sPihjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlOjpWYWx1ZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmFzQm9vbCgpOyB9Ci10ZW1wbGF0
ZTw+IHVpbnQzMl90IGFzPHVpbnQzMl90Pihjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1
ZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmFzVUludDMyKCk7IH0KLXRlbXBsYXRlPD4gZG91Ymxl
IGFzPGRvdWJsZT4oY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUmIHZhbHVlKSB7IHJl
dHVybiB2YWx1ZS5hc0RvdWJsZSgpOyB9Ci0KLQogdGVtcGxhdGU8dHlwZW5hbWUgTWFwcGVkVHlw
ZT4KIHN0YXRpYyBNYXBwZWRUeXBlIHZhbHVlRm9yS2V5KGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmU6OlZhbHVlTWFwJiB2YWx1ZXMsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlTWFw
JiBvdmVycmlkZW5EZWZhdWx0cywgY29uc3QgU3RyaW5nJiBrZXkpCiB7CiAgICAgYXV0byB2YWx1
ZXNJdCA9IHZhbHVlcy5maW5kKGtleSk7Ci0gICAgaWYgKHZhbHVlc0l0ICE9IHZhbHVlcy5lbmQo
KSAmJiB2YWx1ZXNJdC0+dmFsdWUudHlwZSgpID09IFRvVHlwZTxNYXBwZWRUeXBlPjo6dmFsdWUp
Ci0gICAgICAgIHJldHVybiBhczxNYXBwZWRUeXBlPih2YWx1ZXNJdC0+dmFsdWUpOworICAgIGlm
ICh2YWx1ZXNJdCAhPSB2YWx1ZXMuZW5kKCkgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxNYXBw
ZWRUeXBlPih2YWx1ZXNJdC0+dmFsdWUpKQorICAgICAgICByZXR1cm4gV1RGOjpnZXQ8TWFwcGVk
VHlwZT4odmFsdWVzSXQtPnZhbHVlKTsKIAogICAgIGF1dG8gb3ZlcnJpZGVuRGVmYXVsdHNJdCA9
IG92ZXJyaWRlbkRlZmF1bHRzLmZpbmQoa2V5KTsKLSAgICBpZiAob3ZlcnJpZGVuRGVmYXVsdHNJ
dCAhPSBvdmVycmlkZW5EZWZhdWx0cy5lbmQoKSAmJiBvdmVycmlkZW5EZWZhdWx0c0l0LT52YWx1
ZS50eXBlKCkgPT0gVG9UeXBlPE1hcHBlZFR5cGU+Ojp2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGFz
PE1hcHBlZFR5cGU+KG92ZXJyaWRlbkRlZmF1bHRzSXQtPnZhbHVlKTsKKyAgICBpZiAob3ZlcnJp
ZGVuRGVmYXVsdHNJdCAhPSBvdmVycmlkZW5EZWZhdWx0cy5lbmQoKSAmJiBXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPE1hcHBlZFR5cGU+KG92ZXJyaWRlbkRlZmF1bHRzSXQtPnZhbHVlKSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6Z2V0PE1hcHBlZFR5cGU+KG92ZXJyaWRlbkRlZmF1bHRzSXQtPnZhbHVl
KTsKIAogICAgIGF1dG8mIGRlZmF1bHRzTWFwID0gV2ViUHJlZmVyZW5jZXNTdG9yZTo6ZGVmYXVs
dHMoKTsKICAgICBhdXRvIGRlZmF1bHRzSXQgPSBkZWZhdWx0c01hcC5maW5kKGtleSk7Ci0gICAg
aWYgKGRlZmF1bHRzSXQgIT0gZGVmYXVsdHNNYXAuZW5kKCkgJiYgZGVmYXVsdHNJdC0+dmFsdWUu
dHlwZSgpID09IFRvVHlwZTxNYXBwZWRUeXBlPjo6dmFsdWUpCi0gICAgICAgIHJldHVybiBhczxN
YXBwZWRUeXBlPihkZWZhdWx0c0l0LT52YWx1ZSk7CisgICAgaWYgKGRlZmF1bHRzSXQgIT0gZGVm
YXVsdHNNYXAuZW5kKCkgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxNYXBwZWRUeXBlPihkZWZh
dWx0c0l0LT52YWx1ZSkpCisgICAgICAgIHJldHVybiBXVEY6OmdldDxNYXBwZWRUeXBlPihkZWZh
dWx0c0l0LT52YWx1ZSk7CiAKICAgICByZXR1cm4gTWFwcGVkVHlwZSgpOwogfQpJbmRleDogU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAkocmV2aXNpb24gMjM0NDY2
KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC02MiwxMTkgKzYyLDcgQEAgc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmUgewog
ICAgIHN0YXRpYyB2b2lkIG92ZXJyaWRlQm9vbFZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5
LCBib29sIHZhbHVlKTsKICAgICBzdGF0aWMgdm9pZCByZW1vdmVUZXN0UnVubmVyT3ZlcnJpZGVz
KCk7CiAKLSAgICBzdHJ1Y3QgVmFsdWUgewotICAgICAgICBlbnVtIGNsYXNzIFR5cGUgewotICAg
ICAgICAgICAgTm9uZSwKLSAgICAgICAgICAgIFN0cmluZywKLSAgICAgICAgICAgIEJvb2wsCi0g
ICAgICAgICAgICBVSW50MzIsCi0gICAgICAgICAgICBEb3VibGUsCi0gICAgICAgIH07Ci0KLSAg
ICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHN0YXRpYyBi
b29sIGRlY29kZShJUEM6OkRlY29kZXImLCBWYWx1ZSYpOwotCi0gICAgICAgIGV4cGxpY2l0IFZh
bHVlKCkgOiBtX3R5cGUoVHlwZTo6Tm9uZSkgeyB9Ci0gICAgICAgIGV4cGxpY2l0IFZhbHVlKGNv
bnN0IFN0cmluZyYgdmFsdWUpIDogbV90eXBlKFR5cGU6OlN0cmluZyksIG1fc3RyaW5nKHZhbHVl
KSB7IH0KLSAgICAgICAgZXhwbGljaXQgVmFsdWUoYm9vbCB2YWx1ZSkgOiBtX3R5cGUoVHlwZTo6
Qm9vbCksIG1fYm9vbCh2YWx1ZSkgeyB9Ci0gICAgICAgIGV4cGxpY2l0IFZhbHVlKHVpbnQzMl90
IHZhbHVlKSA6IG1fdHlwZShUeXBlOjpVSW50MzIpLCBtX3VpbnQzMih2YWx1ZSkgeyB9Ci0gICAg
ICAgIGV4cGxpY2l0IFZhbHVlKGRvdWJsZSB2YWx1ZSkgOiBtX3R5cGUoVHlwZTo6RG91YmxlKSwg
bV9kb3VibGUodmFsdWUpIHsgfQotCi0gICAgICAgIFZhbHVlKFZhbHVlJiYgdmFsdWUpCi0gICAg
ICAgICAgICA6IG1fdHlwZSh2YWx1ZS5tX3R5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN3
aXRjaCAobV90eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIFR5cGU6Ok5vbmU6Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFR5cGU6OlN0cmluZzoKLSAgICAgICAgICAg
ICAgICBuZXcgKCZtX3N0cmluZykgU3RyaW5nKFdURk1vdmUodmFsdWUubV9zdHJpbmcpKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVHlwZTo6Qm9vbDoKLSAgICAg
ICAgICAgICAgICBtX2Jvb2wgPSB2YWx1ZS5tX2Jvb2w7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIFR5cGU6OlVJbnQzMjoKLSAgICAgICAgICAgICAgICBtX3VpbnQz
MiA9IHZhbHVlLm1fdWludDMyOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBUeXBlOjpEb3VibGU6Ci0gICAgICAgICAgICAgICAgbV9kb3VibGUgPSB2YWx1ZS5tX2Rv
dWJsZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIFZhbHVlJiBvcGVyYXRvcj0oY29uc3QgVmFsdWUmIG90aGVyKQotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJu
ICp0aGlzOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgZGVzdHJveSgpOwotCi0gICAg
ICAgICAgICBtX3R5cGUgPSBvdGhlci5tX3R5cGU7Ci0gICAgICAgICAgICBzd2l0Y2ggKG1fdHlw
ZSkgewotICAgICAgICAgICAgY2FzZSBUeXBlOjpOb25lOgotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBUeXBlOjpTdHJpbmc6Ci0gICAgICAgICAgICAgICAgbmV3ICgm
bV9zdHJpbmcpIFN0cmluZyhvdGhlci5tX3N0cmluZyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIFR5cGU6OkJvb2w6Ci0gICAgICAgICAgICAgICAgbV9ib29sID0g
b3RoZXIubV9ib29sOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBU
eXBlOjpVSW50MzI6Ci0gICAgICAgICAgICAgICAgbV91aW50MzIgPSBvdGhlci5tX3VpbnQzMjsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVHlwZTo6RG91YmxlOgot
ICAgICAgICAgICAgICAgIG1fZG91YmxlID0gb3RoZXIubV9kb3VibGU7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgCi0gICAgICAgICAgICByZXR1cm4gKnRoaXM7
Ci0gICAgICAgIH0KLQotICAgICAgICB+VmFsdWUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBk
ZXN0cm95KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3R5cGU7IH0KLQotICAgICAgICBTdHJpbmcgYXNTdHJpbmcoKSBjb25zdAotICAgICAgICB7
Ci0gICAgICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OlN0cmluZyk7Ci0gICAgICAgICAg
ICByZXR1cm4gbV9zdHJpbmc7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGFzQm9vbCgpIGNv
bnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6Qm9vbCk7
Ci0gICAgICAgICAgICByZXR1cm4gbV9ib29sOwotICAgICAgICB9Ci0KLSAgICAgICAgdWludDMy
X3QgYXNVSW50MzIoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQobV90eXBl
ID09IFR5cGU6OlVJbnQzMik7Ci0gICAgICAgICAgICByZXR1cm4gbV91aW50MzI7Ci0gICAgICAg
IH0KLQotICAgICAgICBkb3VibGUgYXNEb3VibGUoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAg
ICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OkRvdWJsZSk7Ci0gICAgICAgICAgICByZXR1cm4g
bV9kb3VibGU7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgZGVzdHJv
eSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6U3RyaW5nKQot
ICAgICAgICAgICAgICAgIG1fc3RyaW5nLn5TdHJpbmcoKTsKLSAgICAgICAgfQotCi0gICAgICAg
IFR5cGUgbV90eXBlOwotICAgICAgICB1bmlvbiB7Ci0gICAgICAgICAgICBTdHJpbmcgbV9zdHJp
bmc7Ci0gICAgICAgICAgICBib29sIG1fYm9vbDsKLSAgICAgICAgICAgIHVpbnQzMl90IG1fdWlu
dDMyOwotICAgICAgICAgICAgZG91YmxlIG1fZG91YmxlOwotICAgICAgICB9OwotICAgIH07Cisg
ICAgdXNpbmcgVmFsdWUgPSBWYXJpYW50PFN0cmluZywgYm9vbCwgdWludDMyX3QsIGRvdWJsZT47
CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWYWx1ZT4gVmFsdWVNYXA7CiAgICAgVmFs
dWVNYXAgbV92YWx1ZXM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346395</attachid>
            <date>2018-08-02 11:11:57 -0700</date>
            <delta_ts>2018-08-02 14:26:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188250-20180802111156.patch</filename>
            <type>text/plain</type>
            <size>15113</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMzQ1MDMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE4LTA4LTAyICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIFdURjo6VmFyaWFudCBmb3Ig
V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4ODI1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL0ZvcndhcmQuaDoKKyAgICAgICAgQWRkIGEgZmV3IG1v
cmUgdGhpbmdzIHNvIHdlIGRvbid0IG5lZWQgdG8gaW5jbHVkZSBWYXJpYW50IGV2ZXJ5d2hlcmUu
CisKIDIwMTgtMDgtMDIgIERhdmlkIEZlbnRvbiAgPGRhdmlkX2ZlbnRvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzNDQ4OS4KSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL0ZvcndhcmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgJ
KHJldmlzaW9uIDIzNDQ2NikKKysrIFNvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAkod29ya2luZyBj
b3B5KQpAQCAtNjgsNiArNjgsMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1l
ID0gdHlwZQogdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5
cGVuYW1lID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8S2V5QXJnPjo6SGFzaCwgdHlwZW5hbWUgPSBI
YXNoVHJhaXRzPEtleUFyZz4sIHR5cGVuYW1lID0gSGFzaFRyYWl0czxNYXBwZWRBcmc+PiBjbGFz
cyBIYXNoTWFwOwogdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lID0gdHlwZW5h
bWUgRGVmYXVsdEhhc2g8VmFsdWVBcmc+OjpIYXNoLCB0eXBlbmFtZSA9IEhhc2hUcmFpdHM8VmFs
dWVBcmc+PiBjbGFzcyBIYXNoU2V0OwogCit0ZW1wbGF0ZTxzaXplX3QsIHR5cGVuYW1lPiBzdHJ1
Y3QgdmFyaWFudF9hbHRlcm5hdGl2ZTsKK3RlbXBsYXRlPHB0cmRpZmZfdCwgdHlwZW5hbWUuLi4+
IHN0cnVjdCBfX2luZGV4ZWRfdHlwZTsKK3RlbXBsYXRlPHB0cmRpZmZfdCBfSW5kZXgsIHR5cGVu
YW1lLi4uIF9UeXBlcz4gY29uc3RleHByIHR5cGVuYW1lIF9faW5kZXhlZF90eXBlPF9JbmRleCwg
X1R5cGVzLi4uPjo6X190eXBlIGNvbnN0JiBnZXQoVmFyaWFudDxfVHlwZXMuLi4+IGNvbnN0Jik7
CisKIH0KIAogbmFtZXNwYWNlIHN0ZCB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjM0NDkzKQor
KysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzOSBA
QAorMjAxOC0wOC0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIFVzZSBXVEY6OlZhcmlhbnQgZm9yIFdlYlByZWZlcmVuY2VzU3RvcmU6OlZh
bHVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgy
NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCdz
IGJhc2ljYWxseSBhIFZhcmlhbnQgbm93LiBUaGlzIGp1c3QgdXNlcyB0ZW1wbGF0ZXMuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvVmFyaWFudENvZGVycy5oOiBBZGRlZC4KKyAgICAgICAgKElQ
Qzo6VmFyaWFudENvZGVyOjplbmNvZGVIZWxwZXIpOgorICAgICAgICAoSVBDOjpWYXJpYW50Q29k
ZXI6OmRlY29kZUhlbHBlcik6CisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRl
cy9XZWJQcmVmZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAuY3BwLmVyYjoKKyAgICAgICAgKiBTaGFy
ZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzU3RvcmU6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlR5cGVWaXNpdG9yOjpvcGVyYXRv
cigpIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6dmFsdWVGb3JLZXkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZTo6ZW5jb2RlIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWU6OmRlY29kZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OmFzPFN0cmluZz4pOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0Ojphczxib29sPik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OmFzPHVpbnQzMl90
Pik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OmFzPGRvdWJsZT4pOiBEZWxldGVkLgorICAg
ICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlOjpWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlOjpvcGVyYXRvcj0pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZTo6flZhbHVlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWU6OnR5cGUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1
ZTo6YXNTdHJpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJl
bmNlc1N0b3JlOjpWYWx1ZTo6YXNCb29sIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWU6OmFzVUludDMyIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWU6OmFzRG91YmxlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFs
dWU6OmRlc3Ryb3kpOiBEZWxldGVkLgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0wOC0wMSAgVG9tYXMgUG9w
ZWxhICA8dHBvcGVsYUByZWRoYXQuY29tPgogCiAgICAgICAgIFtXVEZdIFJlbmFtZSBTdHJpbmc6
OmZvcm1hdCB0byBTdHJpbmc6OmRlcHJlY2F0ZWRGb3JtYXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAkocmV2aXNpb24gMjM0NDY2KQorKysgU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtNTE1LDYgKzUxNSw2OCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1l
IEVyCiAgICAgfQogfTsKIAordGVtcGxhdGU8c2l6ZV90IGluZGV4LCB0eXBlbmFtZS4uLiBUeXBl
cz4KK3N0cnVjdCBWYXJpYW50Q29kZXIgeworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBXVEY6OlZhcmlhbnQ8VHlwZXMuLi4+JiB2YXJpYW50LCB1bnNpZ25l
ZCBpKQorICAgIHsKKyAgICAgICAgaWYgKGkgPT0gaW5kZXgpIHsKKyAgICAgICAgICAgIGVuY29k
ZXIgPDwgV1RGOjpnZXQ8aW5kZXg+KHZhcmlhbnQpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIFZhcmlhbnRDb2RlcjxpbmRleCAtIDEsIFR5cGVzLi4uPjo6ZW5jb2Rl
KGVuY29kZXIsIHZhcmlhbnQsIGkpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxXVEY6OlZhcmlhbnQ8VHlwZXMuLi4+PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgdW5z
aWduZWQgaSkKKyAgICB7CisgICAgICAgIGlmIChpID09IGluZGV4KSB7CisgICAgICAgICAgICBz
dGQ6Om9wdGlvbmFsPHR5cGVuYW1lIFdURjo6dmFyaWFudF9hbHRlcm5hdGl2ZTxpbmRleCwgV1RG
OjpWYXJpYW50PFR5cGVzLi4uPj46OnR5cGU+IG9wdGlvbmFsOworICAgICAgICAgICAgZGVjb2Rl
ciA+PiBvcHRpb25hbDsKKyAgICAgICAgICAgIGlmICghb3B0aW9uYWwpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiB7IFdURk1vdmUoKm9w
dGlvbmFsKSB9OworICAgICAgICB9CisgICAgICAgIHJldHVybiBWYXJpYW50Q29kZXI8aW5kZXgg
LSAxLCBUeXBlcy4uLj46OmRlY29kZShkZWNvZGVyLCBpKTsKKyAgICB9Cit9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBUeXBlcz4KK3N0cnVjdCBWYXJpYW50Q29kZXI8MCwgVHlwZXMuLi4+IHsK
KyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV1RGOjpWYXJp
YW50PFR5cGVzLi4uPiYgdmFyaWFudCwgdW5zaWduZWQgaSkKKyAgICB7CisgICAgICAgIEFTU0VS
VF9VTlVTRUQoaSwgIWkpOworICAgICAgICBlbmNvZGVyIDw8IFdURjo6Z2V0PDA+KHZhcmlhbnQp
OworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXVEY6OlZhcmlhbnQ8VHlw
ZXMuLi4+PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgdW5zaWduZWQgaSkKKyAgICB7CisgICAg
ICAgIEFTU0VSVF9VTlVTRUQoaSwgIWkpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHR5cGVuYW1l
IFdURjo6dmFyaWFudF9hbHRlcm5hdGl2ZTwwLCBXVEY6OlZhcmlhbnQ8VHlwZXMuLi4+Pjo6dHlw
ZT4gb3B0aW9uYWw7CisgICAgICAgIGRlY29kZXIgPj4gb3B0aW9uYWw7CisgICAgICAgIGlmICgh
b3B0aW9uYWwpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1
cm4geyBXVEZNb3ZlKCpvcHRpb25hbCkgfTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBUeXBlcz4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V1RGOjpWYXJpYW50PFR5cGVzLi4uPj4g
eworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXVEY6OlZh
cmlhbnQ8VHlwZXMuLi4+JiB2YXJpYW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19j
YXN0PHVuc2lnbmVkPih2YXJpYW50LmluZGV4KCkpID09IHZhcmlhbnQuaW5kZXgoKSk7CisgICAg
ICAgIHVuc2lnbmVkIGkgPSB2YXJpYW50LmluZGV4KCk7CisgICAgICAgIGVuY29kZXIgPDwgaTsK
KyAgICAgICAgVmFyaWFudENvZGVyPHNpemVvZi4uLihUeXBlcykgLSAxLCBUeXBlcy4uLj46OmVu
Y29kZShlbmNvZGVyLCB2YXJpYW50LCBpKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8V1RGOjpWYXJpYW50PFR5cGVzLi4uPj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBpOworICAgICAgICBkZWNv
ZGVyID4+IGk7CisgICAgICAgIGlmICghaSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBWYXJpYW50Q29kZXI8c2l6ZW9mLi4uKFR5cGVzKSAtIDEsIFR5
cGVzLi4uPjo6ZGVjb2RlKGRlY29kZXIsICppKTsKKyAgICB9Cit9OworICAgIAogdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXYWxsVGltZT4gewogICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiwgY29uc3QgV2FsbFRpbWUmKTsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVj
b2RlciYsIFdhbGxUaW1lJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5j
ZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNTdG9yZURlZmF1bHRzTWFwLmNwcC5lcmIKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlBy
ZWZlcmVuY2VzU3RvcmVEZWZhdWx0c01hcC5jcHAuZXJiCShyZXZpc2lvbiAyMzQ0NjYpCisrKyBT
b3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNT
dG9yZURlZmF1bHRzTWFwLmNwcC5lcmIJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaCIKICNpbmNsdWRlICJXZWJQ
cmVmZXJlbmNlc0tleXMuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvVmFyaWFudC5oPgogCiAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGFkZGVkIHZpYSBv
cHRpb25zIGluIFdlYlByZWZlcmVuY2VzLnlhbWwsIHJhdGhlciB0aGFuIGhhcmRjb2RlZC4KICNp
bmNsdWRlICJGb250U21vb3RoaW5nTGV2ZWwuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwCShyZXZpc2lvbiAyMzQ0NjYpCisrKyBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDIsNzIgKzQyLDYgQEAgc3RhdGljIEJvb2xPdmVycmlkZXNNYXAmIGJvb2xUZXN0UnVubmVyTwog
ICAgIHJldHVybiBtYXA7CiB9CiAKLXZvaWQgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWU6OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2Rlci5lbmNvZGVF
bnVtKG1fdHlwZSk7Ci0gICAgCi0gICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICBjYXNlIFR5cGU6
Ok5vbmU6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVHlwZTo6U3RyaW5nOgotICAgICAgICBl
bmNvZGVyIDw8IG1fc3RyaW5nOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFR5cGU6OkJvb2w6
Ci0gICAgICAgIGVuY29kZXIgPDwgbV9ib29sOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFR5
cGU6OlVJbnQzMjoKLSAgICAgICAgZW5jb2RlciA8PCBtX3VpbnQzMjsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBUeXBlOjpEb3VibGU6Ci0gICAgICAgIGVuY29kZXIgPDwgbV9kb3VibGU7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotYm9vbCBXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1
ZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgVmFsdWUmIHJlc3VsdCkKLXsKLSAgICBW
YWx1ZTo6VHlwZSB0eXBlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHR5cGUpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBU
eXBlOjpOb25lOgotICAgICAgICBicmVhazsKLSAgICBjYXNlIFR5cGU6OlN0cmluZzogewotICAg
ICAgICBTdHJpbmcgdmFsdWU7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodmFsdWUpKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQgPSBWYWx1ZSh2YWx1ZSk7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIFR5cGU6OkJvb2w6IHsKLSAgICAgICAg
Ym9vbCB2YWx1ZTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh2YWx1ZSkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdCA9IFZhbHVlKHZhbHVlKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgVHlwZTo6VUludDMyOiB7Ci0gICAgICAgIHVpbnQz
Ml90IHZhbHVlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZhbHVlKSkKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzdWx0ID0gVmFsdWUodmFsdWUpOwotICAgICAg
ICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBUeXBlOjpEb3VibGU6IHsKLSAgICAgICAgZG91Ymxl
IHZhbHVlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZhbHVlKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzdWx0ID0gVmFsdWUodmFsdWUpOwotICAgICAgICBi
cmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIHJldHVybiB0cnVlOwotfQotCiBXZWJQcmVmZXJlbmNlc1N0b3JlOjpXZWJQcmVmZXJl
bmNlc1N0b3JlKCkKIHsKIH0KQEAgLTEyMCwxMCArNTQsMTcgQEAgdm9pZCBXZWJQcmVmZXJlbmNl
c1N0b3JlOjplbmNvZGUoSVBDOjpFbgogCiBib29sIFdlYlByZWZlcmVuY2VzU3RvcmU6OmRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYlByZWZlcmVuY2VzU3RvcmUmIHJlc3VsdCkKIHsK
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3ZhbHVlcykpCisgICAgc3RkOjpvcHRp
b25hbDxIYXNoTWFwPFN0cmluZywgVmFsdWU+PiB2YWx1ZXM7CisgICAgZGVjb2RlciA+PiB2YWx1
ZXM7CisgICAgaWYgKCF2YWx1ZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5tX292ZXJyaWRlbkRlZmF1bHRzKSkKKyAgICByZXN1bHQubV92
YWx1ZXMgPSBXVEZNb3ZlKCp2YWx1ZXMpOworCisgICAgc3RkOjpvcHRpb25hbDxIYXNoTWFwPFN0
cmluZywgVmFsdWU+PiBvdmVycmlkZW5EZWZhdWx0czsKKyAgICBkZWNvZGVyID4+IG92ZXJyaWRl
bkRlZmF1bHRzOworICAgIGlmICghb3ZlcnJpZGVuRGVmYXVsdHMpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXN1bHQubV9vdmVycmlkZW5EZWZhdWx0cyA9IFdURk1vdmUoKm92ZXJyaWRl
bkRlZmF1bHRzKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTM3LDM3ICs3OCwyMSBAQCB2
b2lkIFdlYlByZWZlcmVuY2VzU3RvcmU6OnJlbW92ZVRlc3RSdW5uCiAgICAgYm9vbFRlc3RSdW5u
ZXJPdmVycmlkZXNNYXAoKS5jbGVhcigpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3Ry
dWN0IFRvVHlwZSB7IH07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IFRvVHlwZTxTdHJpbmc+IHsgc3Rh
dGljIGNvbnN0IGF1dG8gdmFsdWUgPSBXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZTo6VHlwZTo6
U3RyaW5nOyB9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgVG9UeXBlPGJvb2w+IHsgc3RhdGljIGNvbnN0
IGF1dG8gdmFsdWUgPSBXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZTo6VHlwZTo6Qm9vbDsgfTsK
LXRlbXBsYXRlPD4gc3RydWN0IFRvVHlwZTx1aW50MzJfdD4geyBzdGF0aWMgY29uc3QgYXV0byB2
YWx1ZSA9IFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlOjpUeXBlOjpVSW50MzI7IH07Ci10ZW1w
bGF0ZTw+IHN0cnVjdCBUb1R5cGU8ZG91YmxlPiB7IHN0YXRpYyBjb25zdCBhdXRvIHZhbHVlID0g
V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWU6OlR5cGU6OkRvdWJsZTsgfTsKLQotCi10ZW1wbGF0
ZTx0eXBlbmFtZSBNYXBwZWRUeXBlPiBNYXBwZWRUeXBlIGFzKGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmU6OlZhbHVlJik7Ci0KLXRlbXBsYXRlPD4gU3RyaW5nIGFzPFN0cmluZz4oY29uc3QgV2Vi
UHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5hc1N0cmluZygp
OyB9Ci10ZW1wbGF0ZTw+IGJvb2wgYXM8Ym9vbD4oY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZTo6
VmFsdWUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5hc0Jvb2woKTsgfQotdGVtcGxhdGU8PiB1aW50
MzJfdCBhczx1aW50MzJfdD4oY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUmIHZhbHVl
KSB7IHJldHVybiB2YWx1ZS5hc1VJbnQzMigpOyB9Ci10ZW1wbGF0ZTw+IGRvdWJsZSBhczxkb3Vi
bGU+KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlJiB2YWx1ZSkgeyByZXR1cm4gdmFs
dWUuYXNEb3VibGUoKTsgfQotCi0KIHRlbXBsYXRlPHR5cGVuYW1lIE1hcHBlZFR5cGU+CiBzdGF0
aWMgTWFwcGVkVHlwZSB2YWx1ZUZvcktleShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1
ZU1hcCYgdmFsdWVzLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZU1hcCYgb3ZlcnJp
ZGVuRGVmYXVsdHMsIGNvbnN0IFN0cmluZyYga2V5KQogewogICAgIGF1dG8gdmFsdWVzSXQgPSB2
YWx1ZXMuZmluZChrZXkpOwotICAgIGlmICh2YWx1ZXNJdCAhPSB2YWx1ZXMuZW5kKCkgJiYgdmFs
dWVzSXQtPnZhbHVlLnR5cGUoKSA9PSBUb1R5cGU8TWFwcGVkVHlwZT46OnZhbHVlKQotICAgICAg
ICByZXR1cm4gYXM8TWFwcGVkVHlwZT4odmFsdWVzSXQtPnZhbHVlKTsKKyAgICBpZiAodmFsdWVz
SXQgIT0gdmFsdWVzLmVuZCgpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TWFwcGVkVHlwZT4o
dmFsdWVzSXQtPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6Z2V0PE1hcHBlZFR5cGU+KHZh
bHVlc0l0LT52YWx1ZSk7CiAKICAgICBhdXRvIG92ZXJyaWRlbkRlZmF1bHRzSXQgPSBvdmVycmlk
ZW5EZWZhdWx0cy5maW5kKGtleSk7Ci0gICAgaWYgKG92ZXJyaWRlbkRlZmF1bHRzSXQgIT0gb3Zl
cnJpZGVuRGVmYXVsdHMuZW5kKCkgJiYgb3ZlcnJpZGVuRGVmYXVsdHNJdC0+dmFsdWUudHlwZSgp
ID09IFRvVHlwZTxNYXBwZWRUeXBlPjo6dmFsdWUpCi0gICAgICAgIHJldHVybiBhczxNYXBwZWRU
eXBlPihvdmVycmlkZW5EZWZhdWx0c0l0LT52YWx1ZSk7CisgICAgaWYgKG92ZXJyaWRlbkRlZmF1
bHRzSXQgIT0gb3ZlcnJpZGVuRGVmYXVsdHMuZW5kKCkgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxNYXBwZWRUeXBlPihvdmVycmlkZW5EZWZhdWx0c0l0LT52YWx1ZSkpCisgICAgICAgIHJldHVy
biBXVEY6OmdldDxNYXBwZWRUeXBlPihvdmVycmlkZW5EZWZhdWx0c0l0LT52YWx1ZSk7CiAKICAg
ICBhdXRvJiBkZWZhdWx0c01hcCA9IFdlYlByZWZlcmVuY2VzU3RvcmU6OmRlZmF1bHRzKCk7CiAg
ICAgYXV0byBkZWZhdWx0c0l0ID0gZGVmYXVsdHNNYXAuZmluZChrZXkpOwotICAgIGlmIChkZWZh
dWx0c0l0ICE9IGRlZmF1bHRzTWFwLmVuZCgpICYmIGRlZmF1bHRzSXQtPnZhbHVlLnR5cGUoKSA9
PSBUb1R5cGU8TWFwcGVkVHlwZT46OnZhbHVlKQotICAgICAgICByZXR1cm4gYXM8TWFwcGVkVHlw
ZT4oZGVmYXVsdHNJdC0+dmFsdWUpOworICAgIGlmIChkZWZhdWx0c0l0ICE9IGRlZmF1bHRzTWFw
LmVuZCgpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TWFwcGVkVHlwZT4oZGVmYXVsdHNJdC0+
dmFsdWUpKQorICAgICAgICByZXR1cm4gV1RGOjpnZXQ8TWFwcGVkVHlwZT4oZGVmYXVsdHNJdC0+
dmFsdWUpOwogCiAgICAgcmV0dXJuIE1hcHBlZFR5cGUoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgJKHJldmlzaW9uIDIzNDQ2NikKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAkod29ya2luZyBjb3B5KQpA
QCAtNjIsMTE5ICs2Miw3IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlIHsKICAgICBzdGF0
aWMgdm9pZCBvdmVycmlkZUJvb2xWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgYm9vbCB2
YWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlVGVzdFJ1bm5lck92ZXJyaWRlcygpOwogCi0g
ICAgc3RydWN0IFZhbHVlIHsKLSAgICAgICAgZW51bSBjbGFzcyBUeXBlIHsKLSAgICAgICAgICAg
IE5vbmUsCi0gICAgICAgICAgICBTdHJpbmcsCi0gICAgICAgICAgICBCb29sLAotICAgICAgICAg
ICAgVUludDMyLAotICAgICAgICAgICAgRG91YmxlLAotICAgICAgICB9OwotCi0gICAgICAgIHZv
aWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgICAgICBzdGF0aWMgYm9vbCBkZWNv
ZGUoSVBDOjpEZWNvZGVyJiwgVmFsdWUmKTsKLQotICAgICAgICBleHBsaWNpdCBWYWx1ZSgpIDog
bV90eXBlKFR5cGU6Ok5vbmUpIHsgfQotICAgICAgICBleHBsaWNpdCBWYWx1ZShjb25zdCBTdHJp
bmcmIHZhbHVlKSA6IG1fdHlwZShUeXBlOjpTdHJpbmcpLCBtX3N0cmluZyh2YWx1ZSkgeyB9Ci0g
ICAgICAgIGV4cGxpY2l0IFZhbHVlKGJvb2wgdmFsdWUpIDogbV90eXBlKFR5cGU6OkJvb2wpLCBt
X2Jvb2wodmFsdWUpIHsgfQotICAgICAgICBleHBsaWNpdCBWYWx1ZSh1aW50MzJfdCB2YWx1ZSkg
OiBtX3R5cGUoVHlwZTo6VUludDMyKSwgbV91aW50MzIodmFsdWUpIHsgfQotICAgICAgICBleHBs
aWNpdCBWYWx1ZShkb3VibGUgdmFsdWUpIDogbV90eXBlKFR5cGU6OkRvdWJsZSksIG1fZG91Ymxl
KHZhbHVlKSB7IH0KLQotICAgICAgICBWYWx1ZShWYWx1ZSYmIHZhbHVlKQotICAgICAgICAgICAg
OiBtX3R5cGUodmFsdWUubV90eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKG1f
dHlwZSkgewotICAgICAgICAgICAgY2FzZSBUeXBlOjpOb25lOgotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgY2FzZSBUeXBlOjpTdHJpbmc6Ci0gICAgICAgICAgICAgICAgbmV3
ICgmbV9zdHJpbmcpIFN0cmluZyhXVEZNb3ZlKHZhbHVlLm1fc3RyaW5nKSk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFR5cGU6OkJvb2w6Ci0gICAgICAgICAgICAg
ICAgbV9ib29sID0gdmFsdWUubV9ib29sOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBUeXBlOjpVSW50MzI6Ci0gICAgICAgICAgICAgICAgbV91aW50MzIgPSB2YWx1
ZS5tX3VpbnQzMjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVHlw
ZTo6RG91YmxlOgotICAgICAgICAgICAgICAgIG1fZG91YmxlID0gdmFsdWUubV9kb3VibGU7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAg
ICBWYWx1ZSYgb3BlcmF0b3I9KGNvbnN0IFZhbHVlJiBvdGhlcikKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQotICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGRlc3Ryb3koKTsKLQotICAgICAgICAgICAg
bV90eXBlID0gb3RoZXIubV90eXBlOwotICAgICAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAg
ICAgICAgICAgIGNhc2UgVHlwZTo6Tm9uZToKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgVHlwZTo6U3RyaW5nOgotICAgICAgICAgICAgICAgIG5ldyAoJm1fc3RyaW5n
KSBTdHJpbmcob3RoZXIubV9zdHJpbmcpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBUeXBlOjpCb29sOgotICAgICAgICAgICAgICAgIG1fYm9vbCA9IG90aGVyLm1f
Ym9vbDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVHlwZTo6VUlu
dDMyOgotICAgICAgICAgICAgICAgIG1fdWludDMyID0gb3RoZXIubV91aW50MzI7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFR5cGU6OkRvdWJsZToKLSAgICAgICAg
ICAgICAgICBtX2RvdWJsZSA9IG90aGVyLm1fZG91YmxlOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotICAgIAotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAg
ICB9Ci0KLSAgICAgICAgflZhbHVlKCkKLSAgICAgICAgewotICAgICAgICAgICAgZGVzdHJveSgp
OwotICAgICAgICB9Ci0KLSAgICAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
OyB9Ci0KLSAgICAgICAgU3RyaW5nIGFzU3RyaW5nKCkgY29uc3QKLSAgICAgICAgewotICAgICAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpTdHJpbmcpOwotICAgICAgICAgICAgcmV0dXJu
IG1fc3RyaW5nOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBhc0Jvb2woKSBjb25zdAotICAg
ICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OkJvb2wpOwotICAgICAg
ICAgICAgcmV0dXJuIG1fYm9vbDsKLSAgICAgICAgfQotCi0gICAgICAgIHVpbnQzMl90IGFzVUlu
dDMyKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBl
OjpVSW50MzIpOwotICAgICAgICAgICAgcmV0dXJuIG1fdWludDMyOwotICAgICAgICB9Ci0KLSAg
ICAgICAgZG91YmxlIGFzRG91YmxlKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBUeXBlOjpEb3VibGUpOwotICAgICAgICAgICAgcmV0dXJuIG1fZG91Ymxl
OwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGRlc3Ryb3koKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAobV90eXBlID09IFR5cGU6OlN0cmluZykKLSAgICAgICAg
ICAgICAgICBtX3N0cmluZy5+U3RyaW5nKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUeXBlIG1f
dHlwZTsKLSAgICAgICAgdW5pb24gewotICAgICAgICAgICAgU3RyaW5nIG1fc3RyaW5nOwotICAg
ICAgICAgICAgYm9vbCBtX2Jvb2w7Ci0gICAgICAgICAgICB1aW50MzJfdCBtX3VpbnQzMjsKLSAg
ICAgICAgICAgIGRvdWJsZSBtX2RvdWJsZTsKLSAgICAgICAgfTsKLSAgICB9OworICAgIHVzaW5n
IFZhbHVlID0gVmFyaWFudDxTdHJpbmcsIGJvb2wsIHVpbnQzMl90LCBkb3VibGU+OwogCiAgICAg
dHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmFsdWU+IFZhbHVlTWFwOwogICAgIFZhbHVlTWFwIG1f
dmFsdWVzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346418</attachid>
            <date>2018-08-02 14:26:43 -0700</date>
            <delta_ts>2018-08-02 14:28:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188250-20180802142643.patch</filename>
            <type>text/plain</type>
            <size>16547</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE4LTA4LTAyICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIFdURjo6VmFy
aWFudCBmb3IgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODI1MAorCisgICAgICAgIFJldmlld2VkIGJ5
IFNhbSBXZWluaWcuCisKKyAgICAgICAgSXQgd2FzIGNvbmNlcHR1YWxseSBhIHZhcmlhbnQuIFRo
aXMganVzdCB1c2VzIGFuIGFjdHVhbCBXVEY6OlZhcmlhbnQuCisgICAgICAgIFNpbmNlIGl0J3Mg
ZW5jb2RlZCBhbmQgZGVjb2RlZCwgSSB3cm90ZSB2YXJpYWRpYyB0ZW1wbGF0ZSBlbmNvZGVycyBh
bmQgZGVjb2RlcnMKKyAgICAgICAgbGlrZSB3ZSBoYXZlIGZvciBvdGhlciB0eXBlcyAoRXhwZWN0
ZWQsIHN0ZDo6dHVwbGUsIEtleVZhbHVlUGFpciwgZXRjLikKKworICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICAoSVBDOjpWYXJpYW50Q29kZXI6OmVuY29k
ZSk6CisgICAgICAgIChJUEM6OlZhcmlhbnRDb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgSW50cm9k
dWNlIEFyZ3VtZW50Q29kZXI8VmFyaWFudD4sIHdoaWNoIGVuY29kZXMgd2hpY2ggdHlwZSB0aGUg
VmFyaWFudCBjdXJyZW50bHkKKyAgICAgICAgaG9sZHMgZm9sbG93ZWQgYnkgdGhlIGVuY29kaW5n
IG9mIHRoZSBjdXJyZW50IHR5cGUuCisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3Bw
OgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpEZWNvZGVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9J
UEMvRGVjb2Rlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5t
bToKKyAgICAgICAgKElQQzo6Y3JlYXRlTWVzc2FnZURlY29kZXIpOgorICAgICAgICBVc2UgbW92
ZSBzZW1hbnRpY3MgdG8gcHJldmVudCBhbiB1bm5lY2Vzc2FyeSBjb3B5IG9mIHRoZSBWZWN0b3I8
QXR0YWNobWVudD4KKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlBy
ZWZlcmVuY2VzU3RvcmVEZWZhdWx0c01hcC5jcHAuZXJiOgorICAgICAgICAqIFNoYXJlZC9XZWJQ
cmVmZXJlbmNlc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9y
ZTo6ZGVjb2RlKToKKyAgICAgICAgVXNlIG1vZGVybiBzdGQ6Om9wdGlvbmFsLWJhc2VkIGRlY29k
aW5nIHN1cHBvcnRlZCBieSB0aGUgbmV3IFZhcmlhbnQgZGVjb2RpbmcuCisgICAgICAgIChXZWJL
aXQ6OnZhbHVlRm9yS2V5KToKKyAgICAgICAgVXNlIFdURjo6Z2V0IGFuZCBXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlIGluc3RlYWQgb2YgY3VzdG9tIHR5cGUgY2hlY2tzLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZTo6ZW5jb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWU6OmRlY29kZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OmFzPFN0cmluZz4pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0Ojphczxib29sPik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OmFzPHVpbnQzMl90Pik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OmFzPGRvdWJsZT4pOiBEZWxldGVkLgorICAgICAg
ICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzU3RvcmU6OlZhbHVlOjpWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlOjpvcGVyYXRvcj0pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZTo6flZhbHVlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWU6OnR5cGUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZTo6
YXNTdHJpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c1N0b3JlOjpWYWx1ZTo6YXNCb29sIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWU6OmFzVUludDMyIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWU6OmFzRG91YmxlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWU6
OmRlc3Ryb3kpOiBEZWxldGVkLgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgVXNlIFdU
Rjo6VmFyaWFudCBpbnN0ZWFkIG9mIGEgY3VzdG9tIHR5cGUvdW5pb24gcGFpci4KKwogMjAxOC0w
OC0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIENoZWNrIHdpdGggU2FmZUJyb3dzaW5nIGR1cmluZyBuYXZpZ2F0aW9uIGluIFdLV2ViVmll
dwpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCShy
ZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MTUsNiArNTE1LDY4IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgRXIKICAgICB9CiB9OwogCit0ZW1wbGF0ZTxzaXplX3Qg
aW5kZXgsIHR5cGVuYW1lLi4uIFR5cGVzPgorc3RydWN0IFZhcmlhbnRDb2RlciB7CisgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdURjo6VmFyaWFudDxUeXBl
cy4uLj4mIHZhcmlhbnQsIHVuc2lnbmVkIGkpCisgICAgeworICAgICAgICBpZiAoaSA9PSBpbmRl
eCkgeworICAgICAgICAgICAgZW5jb2RlciA8PCBXVEY6OmdldDxpbmRleD4odmFyaWFudCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgVmFyaWFudENvZGVyPGluZGV4
IC0gMSwgVHlwZXMuLi4+OjplbmNvZGUoZW5jb2RlciwgdmFyaWFudCwgaSk7CisgICAgfQorICAg
IAorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdURjo6VmFyaWFudDxUeXBlcy4uLj4+IGRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCB1bnNpZ25lZCBpKQorICAgIHsKKyAgICAgICAgaWYgKGkgPT0g
aW5kZXgpIHsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgV1RGOjp2YXJpYW50
X2FsdGVybmF0aXZlPGluZGV4LCBXVEY6OlZhcmlhbnQ8VHlwZXMuLi4+Pjo6dHlwZT4gb3B0aW9u
YWw7CisgICAgICAgICAgICBkZWNvZGVyID4+IG9wdGlvbmFsOworICAgICAgICAgICAgaWYgKCFv
cHRpb25hbCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHsgV1RGTW92ZSgqb3B0aW9uYWwpIH07CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIFZhcmlhbnRDb2RlcjxpbmRleCAtIDEsIFR5cGVzLi4uPjo6ZGVjb2RlKGRlY29kZXIsIGkp
OworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIFR5cGVzPgorc3RydWN0IFZhcmlh
bnRDb2RlcjwwLCBUeXBlcy4uLj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBXVEY6OlZhcmlhbnQ8VHlwZXMuLi4+JiB2YXJpYW50LCB1bnNpZ25lZCBp
KQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpLCAhaSk7CisgICAgICAgIGVuY29kZXIg
PDwgV1RGOjpnZXQ8MD4odmFyaWFudCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFdURjo6VmFyaWFudDxUeXBlcy4uLj4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCB1
bnNpZ25lZCBpKQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpLCAhaSk7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgV1RGOjp2YXJpYW50X2FsdGVybmF0aXZlPDAsIFdURjo6
VmFyaWFudDxUeXBlcy4uLj4+Ojp0eXBlPiBvcHRpb25hbDsKKyAgICAgICAgZGVjb2RlciA+PiBv
cHRpb25hbDsKKyAgICAgICAgaWYgKCFvcHRpb25hbCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiB7IFdURk1vdmUoKm9wdGlvbmFsKSB9OworICAgIH0K
K307CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIFR5cGVzPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
VEY6OlZhcmlhbnQ8VHlwZXMuLi4+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFdURjo6VmFyaWFudDxUeXBlcy4uLj4mIHZhcmlhbnQpCisgICAgewor
ICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhcmlhbnQuaW5kZXgoKSkgPT0g
dmFyaWFudC5pbmRleCgpKTsKKyAgICAgICAgdW5zaWduZWQgaSA9IHZhcmlhbnQuaW5kZXgoKTsK
KyAgICAgICAgZW5jb2RlciA8PCBpOworICAgICAgICBWYXJpYW50Q29kZXI8c2l6ZW9mLi4uKFR5
cGVzKSAtIDEsIFR5cGVzLi4uPjo6ZW5jb2RlKGVuY29kZXIsIHZhcmlhbnQsIGkpOworICAgIH0K
KyAgICAKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXVEY6OlZhcmlhbnQ8VHlwZXMuLi4+PiBk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+IGk7CisgICAgICAgIGRlY29kZXIgPj4gaTsKKyAgICAgICAgaWYgKCFpKQorICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIFZhcmlhbnRDb2Rlcjxz
aXplb2YuLi4oVHlwZXMpIC0gMSwgVHlwZXMuLi4+OjpkZWNvZGUoZGVjb2RlciwgKmkpOworICAg
IH0KK307CisgICAgCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdhbGxUaW1lPiB7
CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXYWxsVGltZSYpOwogICAg
IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2FsbFRpbWUmKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyAr
NDQsNyBAQCBzdGF0aWMgY29uc3QgdWludDhfdCogY29weUJ1ZmZlcihjb25zdCB1CiAgICAgcmV0
dXJuIGJ1ZmZlckNvcHk7CiB9CiAKLURlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhfdCogYnVm
ZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgdm9pZCAoKmJ1ZmZlckRlYWxsb2NhdG9yKShjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSwgVmVjdG9yPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzKQorRGVjb2Rl
cjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCB2b2lk
ICgqYnVmZmVyRGVhbGxvY2F0b3IpKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpLCBWZWN0b3I8QXR0
YWNobWVudD4mJiBhdHRhY2htZW50cykKICAgICA6IG1fYnVmZmVyIHsgYnVmZmVyRGVhbGxvY2F0
b3IgPyBidWZmZXIgOiBjb3B5QnVmZmVyKGJ1ZmZlciwgYnVmZmVyU2l6ZSkgfQogICAgICwgbV9i
dWZmZXJQb3MgeyBtX2J1ZmZlciB9CiAgICAgLCBtX2J1ZmZlckVuZCB7IG1fYnVmZmVyICsgYnVm
ZmVyU2l6ZSB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCShyZXZpc2lv
biAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgSW1wb3J0YW5jZUFzc2VydGlvbjsKIGNs
YXNzIERlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IERlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgdm9pZCAo
KmJ1ZmZlckRlYWxsb2NhdG9yKShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSwgVmVjdG9yPEF0dGFj
aG1lbnQ+KTsKKyAgICBEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZl
clNpemUsIHZvaWQgKCpidWZmZXJEZWFsbG9jYXRvcikoY29uc3QgdWludDhfdCosIHNpemVfdCks
IFZlY3RvcjxBdHRhY2htZW50PiYmKTsKICAgICB+RGVjb2RlcigpOwogCiAgICAgRGVjb2Rlcihj
b25zdCBEZWNvZGVyJikgPSBkZWxldGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9tYWMvQ29ubmVjdGlvbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5tbQkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvbWFjL0Nvbm5lY3Rpb25NYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTQ3Miw3ICs0NzIsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGNyZWF0
ZU1lCiAgICAgdWludDhfdCogbWVzc2FnZUJvZHkgPSBkZXNjcmlwdG9yRGF0YTsKICAgICBzaXpl
X3QgbWVzc2FnZUJvZHlTaXplID0gaGVhZGVyLT5tc2doX3NpemUgLSAoZGVzY3JpcHRvckRhdGEg
LSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihoZWFkZXIpKTsKIAotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPERlY29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIG51bGxw
dHIsIGF0dGFjaG1lbnRzKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPiht
ZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlTaXplLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRz
KSk7CiB9CiAKIC8vIFRoZSByZWNlaXZlIGJ1ZmZlciBzaXplIHNob3VsZCBhbHdheXMgaW5jbHVk
ZSB0aGUgbWF4aW11bSB0cmFpbGVyIHNpemUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNTdG9yZURlZmF1bHRzTWFwLmNwcC5l
cmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxh
dGVzL1dlYlByZWZlcmVuY2VzU3RvcmVEZWZhdWx0c01hcC5jcHAuZXJiCShyZXZpc2lvbiAyMzQ1
MTQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJl
ZmVyZW5jZXNTdG9yZURlZmF1bHRzTWFwLmNwcC5lcmIJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaCIKICNpbmNs
dWRlICJXZWJQcmVmZXJlbmNlc0tleXMuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGFk
ZGVkIHZpYSBvcHRpb25zIGluIFdlYlByZWZlcmVuY2VzLnlhbWwsIHJhdGhlciB0aGFuIGhhcmRj
b2RlZC4KICNpbmNsdWRlICJGb250U21vb3RoaW5nTGV2ZWwuaCIKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDIsNzIgKzQyLDYgQEAgc3RhdGljIEJvb2xPdmVycmlkZXNNYXAmIGJvb2xUZXN0
UnVubmVyTwogICAgIHJldHVybiBtYXA7CiB9CiAKLXZvaWQgV2ViUHJlZmVyZW5jZXNTdG9yZTo6
VmFsdWU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2Rl
ci5lbmNvZGVFbnVtKG1fdHlwZSk7Ci0gICAgCi0gICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICBj
YXNlIFR5cGU6Ok5vbmU6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVHlwZTo6U3RyaW5nOgot
ICAgICAgICBlbmNvZGVyIDw8IG1fc3RyaW5nOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFR5
cGU6OkJvb2w6Ci0gICAgICAgIGVuY29kZXIgPDwgbV9ib29sOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFR5cGU6OlVJbnQzMjoKLSAgICAgICAgZW5jb2RlciA8PCBtX3VpbnQzMjsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBUeXBlOjpEb3VibGU6Ci0gICAgICAgIGVuY29kZXIgPDwgbV9k
b3VibGU7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotYm9vbCBXZWJQcmVmZXJlbmNlc1N0
b3JlOjpWYWx1ZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgVmFsdWUmIHJlc3VsdCkK
LXsKLSAgICBWYWx1ZTo6VHlwZSB0eXBlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHR5
cGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgc3dpdGNoICh0eXBlKSB7Ci0g
ICAgY2FzZSBUeXBlOjpOb25lOgotICAgICAgICBicmVhazsKLSAgICBjYXNlIFR5cGU6OlN0cmlu
ZzogewotICAgICAgICBTdHJpbmcgdmFsdWU7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
dmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQgPSBWYWx1
ZSh2YWx1ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIFR5cGU6OkJvb2w6IHsK
LSAgICAgICAgYm9vbCB2YWx1ZTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh2YWx1ZSkp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdCA9IFZhbHVlKHZhbHVl
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgVHlwZTo6VUludDMyOiB7Ci0gICAg
ICAgIHVpbnQzMl90IHZhbHVlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZhbHVlKSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzdWx0ID0gVmFsdWUodmFsdWUp
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBUeXBlOjpEb3VibGU6IHsKLSAgICAg
ICAgZG91YmxlIHZhbHVlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZhbHVlKSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzdWx0ID0gVmFsdWUodmFsdWUpOwot
ICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCiBXZWJQcmVmZXJlbmNlc1N0b3JlOjpX
ZWJQcmVmZXJlbmNlc1N0b3JlKCkKIHsKIH0KQEAgLTEyMCwxMCArNTQsMTcgQEAgdm9pZCBXZWJQ
cmVmZXJlbmNlc1N0b3JlOjplbmNvZGUoSVBDOjpFbgogCiBib29sIFdlYlByZWZlcmVuY2VzU3Rv
cmU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYlByZWZlcmVuY2VzU3RvcmUmIHJl
c3VsdCkKIHsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3ZhbHVlcykpCisgICAg
c3RkOjpvcHRpb25hbDxIYXNoTWFwPFN0cmluZywgVmFsdWU+PiB2YWx1ZXM7CisgICAgZGVjb2Rl
ciA+PiB2YWx1ZXM7CisgICAgaWYgKCF2YWx1ZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX292ZXJyaWRlbkRlZmF1bHRzKSkKKyAgICBy
ZXN1bHQubV92YWx1ZXMgPSBXVEZNb3ZlKCp2YWx1ZXMpOworCisgICAgc3RkOjpvcHRpb25hbDxI
YXNoTWFwPFN0cmluZywgVmFsdWU+PiBvdmVycmlkZW5EZWZhdWx0czsKKyAgICBkZWNvZGVyID4+
IG92ZXJyaWRlbkRlZmF1bHRzOworICAgIGlmICghb3ZlcnJpZGVuRGVmYXVsdHMpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXN1bHQubV9vdmVycmlkZW5EZWZhdWx0cyA9IFdURk1vdmUo
Km92ZXJyaWRlbkRlZmF1bHRzKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTM3LDM3ICs3
OCwyMSBAQCB2b2lkIFdlYlByZWZlcmVuY2VzU3RvcmU6OnJlbW92ZVRlc3RSdW5uCiAgICAgYm9v
bFRlc3RSdW5uZXJPdmVycmlkZXNNYXAoKS5jbGVhcigpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gc3RydWN0IFRvVHlwZSB7IH07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IFRvVHlwZTxTdHJp
bmc+IHsgc3RhdGljIGNvbnN0IGF1dG8gdmFsdWUgPSBXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1
ZTo6VHlwZTo6U3RyaW5nOyB9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgVG9UeXBlPGJvb2w+IHsgc3Rh
dGljIGNvbnN0IGF1dG8gdmFsdWUgPSBXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZTo6VHlwZTo6
Qm9vbDsgfTsKLXRlbXBsYXRlPD4gc3RydWN0IFRvVHlwZTx1aW50MzJfdD4geyBzdGF0aWMgY29u
c3QgYXV0byB2YWx1ZSA9IFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlOjpUeXBlOjpVSW50MzI7
IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBUb1R5cGU8ZG91YmxlPiB7IHN0YXRpYyBjb25zdCBhdXRv
IHZhbHVlID0gV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWU6OlR5cGU6OkRvdWJsZTsgfTsKLQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBNYXBwZWRUeXBlPiBNYXBwZWRUeXBlIGFzKGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmU6OlZhbHVlJik7Ci0KLXRlbXBsYXRlPD4gU3RyaW5nIGFzPFN0cmluZz4o
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5h
c1N0cmluZygpOyB9Ci10ZW1wbGF0ZTw+IGJvb2wgYXM8Ym9vbD4oY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZTo6VmFsdWUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5hc0Jvb2woKTsgfQotdGVtcGxh
dGU8PiB1aW50MzJfdCBhczx1aW50MzJfdD4oY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFs
dWUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5hc1VJbnQzMigpOyB9Ci10ZW1wbGF0ZTw+IGRvdWJs
ZSBhczxkb3VibGU+KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlJiB2YWx1ZSkgeyBy
ZXR1cm4gdmFsdWUuYXNEb3VibGUoKTsgfQotCi0KIHRlbXBsYXRlPHR5cGVuYW1lIE1hcHBlZFR5
cGU+CiBzdGF0aWMgTWFwcGVkVHlwZSB2YWx1ZUZvcktleShjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlOjpWYWx1ZU1hcCYgdmFsdWVzLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZU1h
cCYgb3ZlcnJpZGVuRGVmYXVsdHMsIGNvbnN0IFN0cmluZyYga2V5KQogewogICAgIGF1dG8gdmFs
dWVzSXQgPSB2YWx1ZXMuZmluZChrZXkpOwotICAgIGlmICh2YWx1ZXNJdCAhPSB2YWx1ZXMuZW5k
KCkgJiYgdmFsdWVzSXQtPnZhbHVlLnR5cGUoKSA9PSBUb1R5cGU8TWFwcGVkVHlwZT46OnZhbHVl
KQotICAgICAgICByZXR1cm4gYXM8TWFwcGVkVHlwZT4odmFsdWVzSXQtPnZhbHVlKTsKKyAgICBp
ZiAodmFsdWVzSXQgIT0gdmFsdWVzLmVuZCgpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TWFw
cGVkVHlwZT4odmFsdWVzSXQtPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6Z2V0PE1hcHBl
ZFR5cGU+KHZhbHVlc0l0LT52YWx1ZSk7CiAKICAgICBhdXRvIG92ZXJyaWRlbkRlZmF1bHRzSXQg
PSBvdmVycmlkZW5EZWZhdWx0cy5maW5kKGtleSk7Ci0gICAgaWYgKG92ZXJyaWRlbkRlZmF1bHRz
SXQgIT0gb3ZlcnJpZGVuRGVmYXVsdHMuZW5kKCkgJiYgb3ZlcnJpZGVuRGVmYXVsdHNJdC0+dmFs
dWUudHlwZSgpID09IFRvVHlwZTxNYXBwZWRUeXBlPjo6dmFsdWUpCi0gICAgICAgIHJldHVybiBh
czxNYXBwZWRUeXBlPihvdmVycmlkZW5EZWZhdWx0c0l0LT52YWx1ZSk7CisgICAgaWYgKG92ZXJy
aWRlbkRlZmF1bHRzSXQgIT0gb3ZlcnJpZGVuRGVmYXVsdHMuZW5kKCkgJiYgV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxNYXBwZWRUeXBlPihvdmVycmlkZW5EZWZhdWx0c0l0LT52YWx1ZSkpCisgICAg
ICAgIHJldHVybiBXVEY6OmdldDxNYXBwZWRUeXBlPihvdmVycmlkZW5EZWZhdWx0c0l0LT52YWx1
ZSk7CiAKICAgICBhdXRvJiBkZWZhdWx0c01hcCA9IFdlYlByZWZlcmVuY2VzU3RvcmU6OmRlZmF1
bHRzKCk7CiAgICAgYXV0byBkZWZhdWx0c0l0ID0gZGVmYXVsdHNNYXAuZmluZChrZXkpOwotICAg
IGlmIChkZWZhdWx0c0l0ICE9IGRlZmF1bHRzTWFwLmVuZCgpICYmIGRlZmF1bHRzSXQtPnZhbHVl
LnR5cGUoKSA9PSBUb1R5cGU8TWFwcGVkVHlwZT46OnZhbHVlKQotICAgICAgICByZXR1cm4gYXM8
TWFwcGVkVHlwZT4oZGVmYXVsdHNJdC0+dmFsdWUpOworICAgIGlmIChkZWZhdWx0c0l0ICE9IGRl
ZmF1bHRzTWFwLmVuZCgpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TWFwcGVkVHlwZT4oZGVm
YXVsdHNJdC0+dmFsdWUpKQorICAgICAgICByZXR1cm4gV1RGOjpnZXQ8TWFwcGVkVHlwZT4oZGVm
YXVsdHNJdC0+dmFsdWUpOwogCiAgICAgcmV0dXJuIE1hcHBlZFR5cGUoKTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgJKHJldmlzaW9uIDIzNDUx
NCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjIsMTE5ICs2Miw3IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlIHsK
ICAgICBzdGF0aWMgdm9pZCBvdmVycmlkZUJvb2xWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtl
eSwgYm9vbCB2YWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlVGVzdFJ1bm5lck92ZXJyaWRl
cygpOwogCi0gICAgc3RydWN0IFZhbHVlIHsKLSAgICAgICAgZW51bSBjbGFzcyBUeXBlIHsKLSAg
ICAgICAgICAgIE5vbmUsCi0gICAgICAgICAgICBTdHJpbmcsCi0gICAgICAgICAgICBCb29sLAot
ICAgICAgICAgICAgVUludDMyLAotICAgICAgICAgICAgRG91YmxlLAotICAgICAgICB9OwotCi0g
ICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgICAgICBzdGF0aWMg
Ym9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgVmFsdWUmKTsKLQotICAgICAgICBleHBsaWNpdCBW
YWx1ZSgpIDogbV90eXBlKFR5cGU6Ok5vbmUpIHsgfQotICAgICAgICBleHBsaWNpdCBWYWx1ZShj
b25zdCBTdHJpbmcmIHZhbHVlKSA6IG1fdHlwZShUeXBlOjpTdHJpbmcpLCBtX3N0cmluZyh2YWx1
ZSkgeyB9Ci0gICAgICAgIGV4cGxpY2l0IFZhbHVlKGJvb2wgdmFsdWUpIDogbV90eXBlKFR5cGU6
OkJvb2wpLCBtX2Jvb2wodmFsdWUpIHsgfQotICAgICAgICBleHBsaWNpdCBWYWx1ZSh1aW50MzJf
dCB2YWx1ZSkgOiBtX3R5cGUoVHlwZTo6VUludDMyKSwgbV91aW50MzIodmFsdWUpIHsgfQotICAg
ICAgICBleHBsaWNpdCBWYWx1ZShkb3VibGUgdmFsdWUpIDogbV90eXBlKFR5cGU6OkRvdWJsZSks
IG1fZG91YmxlKHZhbHVlKSB7IH0KLQotICAgICAgICBWYWx1ZShWYWx1ZSYmIHZhbHVlKQotICAg
ICAgICAgICAgOiBtX3R5cGUodmFsdWUubV90eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgICBz
d2l0Y2ggKG1fdHlwZSkgewotICAgICAgICAgICAgY2FzZSBUeXBlOjpOb25lOgotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBUeXBlOjpTdHJpbmc6Ci0gICAgICAgICAg
ICAgICAgbmV3ICgmbV9zdHJpbmcpIFN0cmluZyhXVEZNb3ZlKHZhbHVlLm1fc3RyaW5nKSk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFR5cGU6OkJvb2w6Ci0gICAg
ICAgICAgICAgICAgbV9ib29sID0gdmFsdWUubV9ib29sOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBUeXBlOjpVSW50MzI6Ci0gICAgICAgICAgICAgICAgbV91aW50
MzIgPSB2YWx1ZS5tX3VpbnQzMjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgVHlwZTo6RG91YmxlOgotICAgICAgICAgICAgICAgIG1fZG91YmxlID0gdmFsdWUubV9k
b3VibGU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICBWYWx1ZSYgb3BlcmF0b3I9KGNvbnN0IFZhbHVlJiBvdGhlcikKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQotICAgICAgICAgICAgICAgIHJldHVy
biAqdGhpczsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGRlc3Ryb3koKTsKLQotICAg
ICAgICAgICAgbV90eXBlID0gb3RoZXIubV90eXBlOwotICAgICAgICAgICAgc3dpdGNoIChtX3R5
cGUpIHsKLSAgICAgICAgICAgIGNhc2UgVHlwZTo6Tm9uZToKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgVHlwZTo6U3RyaW5nOgotICAgICAgICAgICAgICAgIG5ldyAo
Jm1fc3RyaW5nKSBTdHJpbmcob3RoZXIubV9zdHJpbmcpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBUeXBlOjpCb29sOgotICAgICAgICAgICAgICAgIG1fYm9vbCA9
IG90aGVyLm1fYm9vbDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
VHlwZTo6VUludDMyOgotICAgICAgICAgICAgICAgIG1fdWludDMyID0gb3RoZXIubV91aW50MzI7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFR5cGU6OkRvdWJsZToK
LSAgICAgICAgICAgICAgICBtX2RvdWJsZSA9IG90aGVyLm1fZG91YmxlOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgIAotICAgICAgICAgICAgcmV0dXJuICp0aGlz
OwotICAgICAgICB9Ci0KLSAgICAgICAgflZhbHVlKCkKLSAgICAgICAgewotICAgICAgICAgICAg
ZGVzdHJveSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9Ci0KLSAgICAgICAgU3RyaW5nIGFzU3RyaW5nKCkgY29uc3QKLSAgICAgICAg
ewotICAgICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpTdHJpbmcpOwotICAgICAgICAg
ICAgcmV0dXJuIG1fc3RyaW5nOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBhc0Jvb2woKSBj
b25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OkJvb2wp
OwotICAgICAgICAgICAgcmV0dXJuIG1fYm9vbDsKLSAgICAgICAgfQotCi0gICAgICAgIHVpbnQz
Ml90IGFzVUludDMyKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBUeXBlOjpVSW50MzIpOwotICAgICAgICAgICAgcmV0dXJuIG1fdWludDMyOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZG91YmxlIGFzRG91YmxlKCkgY29uc3QKLSAgICAgICAgewotICAgICAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpEb3VibGUpOwotICAgICAgICAgICAgcmV0dXJu
IG1fZG91YmxlOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGRlc3Ry
b3koKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV90eXBlID09IFR5cGU6OlN0cmluZykK
LSAgICAgICAgICAgICAgICBtX3N0cmluZy5+U3RyaW5nKCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBUeXBlIG1fdHlwZTsKLSAgICAgICAgdW5pb24gewotICAgICAgICAgICAgU3RyaW5nIG1fc3Ry
aW5nOwotICAgICAgICAgICAgYm9vbCBtX2Jvb2w7Ci0gICAgICAgICAgICB1aW50MzJfdCBtX3Vp
bnQzMjsKLSAgICAgICAgICAgIGRvdWJsZSBtX2RvdWJsZTsKLSAgICAgICAgfTsKLSAgICB9Owor
ICAgIHVzaW5nIFZhbHVlID0gVmFyaWFudDxTdHJpbmcsIGJvb2wsIHVpbnQzMl90LCBkb3VibGU+
OwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmFsdWU+IFZhbHVlTWFwOwogICAgIFZh
bHVlTWFwIG1fdmFsdWVzOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>