<?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>176980</bug_id>
          
          <creation_ts>2017-09-14 23:06:13 -0700</creation_ts>
          <short_desc>On iOS, getData can&apos;t get text set by setData during copy event</short_desc>
          <delta_ts>2017-11-09 16:09:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</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="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kaspern</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1349190</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-14 23:06:13 -0700</bug_when>
    <thetext>On iOS, calling getData(&apos;text/plain&apos;) after calling setData(&apos;text/plain&apos;, &apos;foo&apos;) doesn&apos;t return &apos;foo&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349193</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-14 23:20:36 -0700</bug_when>
    <thetext>&lt;rdar://problem/34453915&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349202</commentid>
    <comment_count>2</comment_count>
      <attachid>320872</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-15 00:10:13 -0700</bug_when>
    <thetext>Created attachment 320872
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349234</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-15 02:22:40 -0700</bug_when>
    <thetext>Let me fix this myself. I need to apply one more fix to dataTransfer.types, which always returns the list of all supported types at the moment :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350253</commentid>
    <comment_count>4</comment_count>
      <attachid>321183</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-18 22:55:06 -0700</bug_when>
    <thetext>Created attachment 321183
Fixes the bug by refactoring</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350341</commentid>
    <comment_count>5</comment_count>
      <attachid>321183</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-09-19 09:29:50 -0700</bug_when>
    <thetext>Comment on attachment 321183
Fixes the bug by refactoring

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

&gt; Source/WebCore/platform/Pasteboard.h:189
&gt; +    virtual void commitToPasteboard(Pasteboard&amp;) { ASSERT_NOT_REACHED(); }

Can we make this pure virtual instead? I’m sure there is some reason we can’t, but failing at runtime instead of compile time is not a good pattern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350450</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-19 12:14:49 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Comment on attachment 321183 [details]
&gt; Fixes the bug by refactoring
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=321183&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/Pasteboard.h:189
&gt; &gt; +    virtual void commitToPasteboard(Pasteboard&amp;) { ASSERT_NOT_REACHED(); }
&gt; 
&gt; Can we make this pure virtual instead? I’m sure there is some reason we
&gt; can’t, but failing at runtime instead of compile time is not a good pattern.

So Pasteboard is the &quot;real&quot; pasteboard we use to write to pasteboard so we can&apos;t quite do that. I think the cleaner approach is to only add this to StaticPasteboard and just dynamic_cast dataTransfer-&gt;pasteboard(). I was debating that and just adding a virtual function but I&apos;d just add a dynamic_cast instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350451</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-19 12:17:53 -0700</bug_when>
    <thetext>Well, an even cleaner approach is if there was a local variable referencing to a StaticPasteboard in dispatchClipboardEvent itself but that&apos;s a bit tricky because StaticPasteboard is not ref-counted (uses unique_ptr).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350454</commentid>
    <comment_count>8</comment_count>
      <attachid>321232</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-19 12:34:28 -0700</bug_when>
    <thetext>Created attachment 321232
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350456</commentid>
    <comment_count>9</comment_count>
      <attachid>321232</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-19 12:38:08 -0700</bug_when>
    <thetext>Comment on attachment 321232
Patch for landing

Wait for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350519</commentid>
    <comment_count>10</comment_count>
      <attachid>321232</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-19 14:50:07 -0700</bug_when>
    <thetext>Comment on attachment 321232
Patch for landing

Clearing flags on attachment: 321232

Committed r222228: &lt;http://trac.webkit.org/changeset/222228&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350520</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-19 14:50:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370092</commentid>
    <comment_count>12</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-11-09 16:09:26 -0800</bug_when>
    <thetext>*** Bug 179439 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320872</attachid>
            <date>2017-09-15 00:10:13 -0700</date>
            <delta_ts>2017-09-18 22:55:04 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>wip176980.patch</filename>
            <type>text/plain</type>
            <size>5596</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggYjQ4
ZDFhMDI4MDkuLjg5YWMyMjI3OGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGFzdGVib2FyZElPUy5tbQpAQCAtMTM1LDEyICsxMzUsMTQgQEAgc3RkOjp1bmlxdWVfcHRyPFBh
c3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCiAKIHN0ZDo6dW5p
cXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVQcml2YXRlKCkKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihjaGFuZ2VDb3VudEZvclBhc3RlYm9h
cmQoKSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4ocGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT51bmlxdWVOYW1lKCkpOwogfQogCiB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50
KQogewogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3Jp
dGVUb1Bhc3RlYm9hcmQoY29udGVudCwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgLy8gRklYTUU6
IENoYW5nZSBDb3VudCBzaG91bGQgYmUgdXBkYXRlZCBhdG9tYXRpY2FsbHkgaW4gd3JpdGVUb1Bh
c3RlYm9hcmQuCisgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0
ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQobV9wYXN0ZWJvYXJkTmFtZSk7CiB9CiAKIFN0
cmluZyBQYXN0ZWJvYXJkOjpyZXNvdXJjZU1JTUVUeXBlKE5TU3RyaW5nICptaW1lVHlwZSkKQEAg
LTE1MSw2ICsxNTMsOCBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVzb3VyY2VNSU1FVHlwZShOU1N0
cmluZyAqbWltZVR5cGUpCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJ
bWFnZSYgcGFzdGVib2FyZEltYWdlKQogewogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0
ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQocGFzdGVib2FyZEltYWdlLCBtX3Bh
c3RlYm9hcmROYW1lKTsKKyAgICAvLyBGSVhNRTogQ2hhbmdlIENvdW50IHNob3VsZCBiZSB1cGRh
dGVkIGF0b21hdGljYWxseSBpbiB3cml0ZVRvUGFzdGVib2FyZC4KKyAgICBtX2NoYW5nZUNvdW50
ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3Vu
dChtX3Bhc3RlYm9hcmROYW1lKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4
dChjb25zdCBTdHJpbmcmIHRleHQsIFNtYXJ0UmVwbGFjZU9wdGlvbikKQEAgLTE1OCwxMSArMTYy
LDE1IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0
LCBTbWFydFJlcGxhY2VPcHRpb24pCiAgICAgLy8gRklYTUU6IFdlIHZlbmQgInB1YmxpYy50ZXh0
IiBoZXJlIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIHByZS1pT1MgMTEgYXBwcy4g
SW4gdGhlIGZ1dHVyZSwgd2Ugc2hvdWxkIHN0b3AgdmVuZGluZyB0aGlzIFVUSSwKICAgICAvLyBh
bmQgaW5zdGVhZCBzZXQgZGF0YSBmb3IgY29uY3JldGUgcGxhaW4gdGV4dCB0eXBlcy4gU2VlIDxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczMzE3Pi4KICAgICBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJk
KGtVVFR5cGVUZXh0LCB0ZXh0LCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAvLyBGSVhNRTogQ2hh
bmdlIENvdW50IHNob3VsZCBiZSB1cGRhdGVkIGF0b21hdGljYWxseSBpbiB3cml0ZVRvUGFzdGVi
b2FyZC4KKyAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudChtX3Bhc3RlYm9hcmROYW1lKTsKIH0KIAogdm9pZCBQ
YXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJMKQogewog
ICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVUb1Bh
c3RlYm9hcmQocGFzdGVib2FyZFVSTCwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgLy8gRklYTUU6
IENoYW5nZSBDb3VudCBzaG91bGQgYmUgdXBkYXRlZCBhdG9tYXRpY2FsbHkgaW4gd3JpdGVUb1Bh
c3RlYm9hcmQuCisgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0
ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQobV9wYXN0ZWJvYXJkTmFtZSk7CiB9CiAKIHZv
aWQgUGFzdGVib2FyZDo6d3JpdGVUcnVzdHdvcnRoeVdlYlVSTHNQYm9hcmRUeXBlKGNvbnN0IFBh
c3RlYm9hcmRVUkwmKQpAQCAtMzgwLDcgKzM4OCw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFk
U3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICAgICAgVVJMIHVybCA9IHN0cmF0ZWd5LnJl
YWRVUkxGcm9tUGFzdGVib2FyZCgwLCBrVVRUeXBlVVJMLCBtX3Bhc3RlYm9hcmROYW1lLCB0aXRs
ZSk7CiAgICAgICAgIGlmICghdXJsLmlzTnVsbCgpKQogICAgICAgICAgICAgY29jb2FWYWx1ZSA9
IFsoTlNVUkwgKil1cmwgYWJzb2x1dGVTdHJpbmddOwotICAgIH0gZWxzZSBpZiAoW2NvY29hVHlw
ZSBpc0VxdWFsVG9TdHJpbmc6KE5TU3RyaW5nICopa1VUVHlwZVRleHRdKSB7CisgICAgfSBlbHNl
IGlmIChbY29jb2FUeXBlIGlzRXF1YWxUb1N0cmluZzooTlNTdHJpbmcgKilrVVRUeXBlUGxhaW5U
ZXh0XSkgewogICAgICAgICBTdHJpbmcgdmFsdWUgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBh
c3RlYm9hcmQoMCwga1VUVHlwZVRleHQsIG1fcGFzdGVib2FyZE5hbWUpOwogICAgICAgICBpZiAo
IXZhbHVlLmlzTnVsbCgpKQogICAgICAgICAgICAgY29jb2FWYWx1ZSA9IFsoTlNTdHJpbmcgKil2
YWx1ZSBwcmVjb21wb3NlZFN0cmluZ1dpdGhDYW5vbmljYWxNYXBwaW5nXTsKQEAgLTQyMiw4ICs0
MzAsOSBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgU3RyaW5nJiBkYXRhKQogICAgIFJldGFpblB0cjxOU1N0cmluZz4gY29jb2FUeXBlID0g
Y29jb2FUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKHR5cGUpOwogICAgIGlmICghY29jb2FUeXBl
KQogICAgICAgICByZXR1cm47Ci0KICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKGNvY29hVHlwZS5nZXQoKSwgZGF0YSwgbV9w
YXN0ZWJvYXJkTmFtZSk7CisgICAgLy8gRklYTUU6IENoYW5nZSBDb3VudCBzaG91bGQgYmUgdXBk
YXRlZCBhdG9tYXRpY2FsbHkgaW4gd3JpdGVUb1Bhc3RlYm9hcmQuCisgICAgbV9jaGFuZ2VDb3Vu
dCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291
bnQobV9wYXN0ZWJvYXJkTmFtZSk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5
cGVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBh
c3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0
ZWJvYXJkSU9TLm1tCmluZGV4IGFiOWYxYTAwNjA2Li4xNzE2YzY1YTE1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBA
IC0xNzAsNyArMTcwLDcgQEAgbG9uZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNoYW5nZUNvdW50KCkg
Y29uc3QKIAogU3RyaW5nIFBsYXRmb3JtUGFzdGVib2FyZDo6dW5pcXVlTmFtZSgpCiB7Ci0gICAg
cmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBbW2dldFVJUGFzdGVib2FyZENsYXNzKCkgcGFz
dGVib2FyZFdpdGhVbmlxdWVOYW1lXSBuYW1lXTsKIH0KIAogc3RhdGljIE5TU3RyaW5nICp3ZWJJ
T1NQYXN0ZVBib2FyZFR5cGUgPSBAImlPUyByaWNoIGNvbnRlbnQgcGFzdGUgcGFzdGVib2FyZCB0
eXBlIjsKQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUo
Y29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiAgICAgW3JlcHJlc2VudGF0aW9u
cyBzZXRWYWx1ZTpbdGV4dEFzU3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGMTZTdHJpbmdF
bmNvZGluZ10gZm9yS2V5OihOU1N0cmluZyAqKWtVVFR5cGVVVEYxNlBsYWluVGV4dF07CiAgICAg
Ly8gRklYTUU6IFdlIHZlbmQgInB1YmxpYy50ZXh0IiBoZXJlIGZvciBiYWNrd2FyZHMgY29tcGF0
aWJpbGl0eSB3aXRoIHByZS1pT1MgMTEgYXBwcy4gSW4gdGhlIGZ1dHVyZSwgd2Ugc2hvdWxkIHN0
b3AgdmVuZGluZyB0aGlzIFVUSSwKICAgICAvLyBhbmQgaW5zdGVhZCBzZXQgZGF0YSBmb3IgY29u
Y3JldGUgcGxhaW4gdGV4dCB0eXBlcy4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTczMzE3Pi4KLSAgICBbcmVwcmVzZW50YXRpb25zIHNldFZhbHVlOnRleHRB
c1N0cmluZyBmb3JLZXk6KE5TU3RyaW5nICopa1VUVHlwZVRleHRdOworICAgIFtyZXByZXNlbnRh
dGlvbnMgc2V0VmFsdWU6dGV4dEFzU3RyaW5nIGZvcktleTooTlNTdHJpbmcgKilrVVRUeXBlUGxh
aW5UZXh0XTsKIAogICAgIC8vIEV4cGxpY2l0bHkgY2FzdCBtX3Bhc3RlYm9hcmQgdG8gVUlQYXN0
ZWJvYXJkICogdG8gd29yayBhcm91bmQgcmRhcjovL3Byb2JsZW0vMzMzODMzNTQuCiAgICAgQVNT
RVJUKFttX3Bhc3RlYm9hcmQgaXNLaW5kT2ZDbGFzczpnZXRVSVBhc3RlYm9hcmRDbGFzcygpXSk7
CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBOU1N0cmlu
ZyAqdGV4dEFzU3RyaW5nID0gdGV4dDsKICAgICBpZiAocGFzdGVib2FyZFR5cGUgPT0gU3RyaW5n
KGtVVFR5cGVVUkwpKSB7CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnMgc2V0VmFsdWU6YWRvcHRO
UyhbW05TVVJMIGFsbG9jXSBpbml0V2l0aFN0cmluZzp0ZXh0XSkuZ2V0KCkgZm9yS2V5OnBhc3Rl
Ym9hcmRUeXBlXTsKLSAgICAgICAgW3JlcHJlc2VudGF0aW9ucyBzZXRWYWx1ZTp0ZXh0QXNTdHJp
bmcgZm9yS2V5OihOU1N0cmluZyAqKWtVVFR5cGVUZXh0XTsKKyAgICAgICAgW3JlcHJlc2VudGF0
aW9ucyBzZXRWYWx1ZTp0ZXh0QXNTdHJpbmcgZm9yS2V5OihOU1N0cmluZyAqKWtVVFR5cGVQbGFp
blRleHRdOwogICAgIH0gZWxzZSBpZiAoIXBhc3RlYm9hcmRUeXBlLmlzTnVsbCgpKQogICAgICAg
ICBbcmVwcmVzZW50YXRpb25zIHNldFZhbHVlOnRleHRBc1N0cmluZyBmb3JLZXk6cGFzdGVib2Fy
ZFR5cGVdOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321183</attachid>
            <date>2017-09-18 22:55:06 -0700</date>
            <delta_ts>2017-09-19 12:34:26 -0700</delta_ts>
            <desc>Fixes the bug by refactoring</desc>
            <filename>bug-176980-20170918225505.patch</filename>
            <type>text/plain</type>
            <size>33291</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzRhMjYzZjAwMzhiYTA0
OWQxMTcyMmIwNzE4NzZiY2Q4YjQzNDlmMi4uNTA5NzBlNWFkNWU1M2JjNTUzNTA5YjUwZGQ3NWQw
NThjZjk4YzJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE3LTA5LTE4ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE9uIGlPUywgZ2V0RGF0YSBj
YW4ndCBnZXQgdGV4dCBzZXQgYnkgc2V0RGF0YSBkdXJpbmcgY29weSBldmVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2OTgwCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8zNDQ1MzkxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGUgYnVnIHdhcyBjYXVzZWQgYnkgaU9TIHBvcnQgbm90IGltcGxl
bWVudGluZyBQYXN0ZWJvYXJkOjpjcmVhdGVQcml2YXRlKCkuIFJhdGhlciB0aGFuIGltcGxlbWVu
dGluZyB0aGlzIGluIGlPUywKKyAgICAgICAgcmVwbGFjZSBpdHMgdXNlIGZvciBjb3B5ICYgcGFz
dGUgZXZlbnRzIGJ5IFN0YXRpY1Bhc3RlYm9hcmQgV2Vuc29uIGFkZGVkIGZvciBpbnB1dCBldmVu
dHMuIFRoaXMgbWFrZXMgcmVhZC13cml0ZQorICAgICAgICBwYXN0ZWJvYXJkIHBsYXRmb3JtIGFn
bm9zdGljIGFuZCBwYXZlcyB0aGUgd2F5IHRvIG1ha2Ugd3JpdGluZyB0byBwYXN0ZWJvYXJkIGlu
IGEgc2luZ2xlIElQQyBpbiBXZWJLaXQyLgorCisgICAgICAgIEFsc28gZml4ZWQgYSBidWcgdGhh
dCBpT1MgcG9ydCdzIFBhc3RlYm9hcmQ6OnR5cGVzIHJldHVybmVkIHRoZSBsaXN0IG9mIGFsbCBz
dXBwb3J0ZWQgdHlwZXMgaW5zdGVhZCBvZiBvbmVzCisgICAgICAgIGFjdHVhbGx5IHByZXNlbnQg
aW4gdGhlIHBhc3RlYm9hcmQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGFkZHMgYSB2ZWN0
b3Igb2YgdHlwZXMgdG8gU3RhdGljUGFzdGVib2FyZCB0byBtYWludGFpbiB0aGUgdHlwZSBvcmRl
ci4KKworICAgICAgICBUZXN0czogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGFUcmFuc2Zlci10eXBl
cy1pcy1pbml0aWFsbHktZW1wdHktb24tY29weS5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5n
L3Bhc3RlYm9hcmQvZGF0YVRyYW5zZmVyLXR5cGVzLXBhc3RpbmctcGxhaW50ZXh0Lmh0bWwKKwor
ICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRy
YW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUpOiBNYWtlIFN0YXRpY1Bhc3RlYm9hcmQgaW5z
dGVhZCBvZiBhIHByaXZhdGUgcGFzdGVib2FyZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFu
c2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hDbGlwYm9hcmRFdmVudCk6IENhbGwgbmV3bHkg
YWRkZWQgY29tbWl0VG9QYXN0ZWJvYXJkIG9uIFN0YXRpY1Bhc3RlYm9hcmQuCisgICAgICAgICog
cGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y29t
bWl0VG9QYXN0ZWJvYXJkKTogVGhpcyBmdW5jdGlvbiBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIG9u
IGEgcmVndWxhciBwYXN0ZWJvYXJkLgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJh
dGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3RhdGljUGFzdGVib2FyZDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlN0YXRpY1Bhc3RlYm9hcmQ6OlN0YXRpY1Bhc3RlYm9hcmQpOgorICAgICAgICAo
V2ViQ29yZTo6U3RhdGljUGFzdGVib2FyZDo6aGFzRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpT
dGF0aWNQYXN0ZWJvYXJkOjp0eXBlcyk6IERlbGV0ZWQuIE5vdyBzaW1wbHkgcmV0dXJucyBtX3R5
cGUuCisgICAgICAgIChXZWJDb3JlOjpTdGF0aWNQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKTogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RhdGljUGFzdGVib2FyZDo6Y2xlYXIpOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY1Bhc3RlYm9hcmQ6OmNvbW1pdFRvUGFzdGVib2FyZCk6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpjcmVhdGVQcml2YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OndyaXRlUGFzdGVib2FyZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9z
L1Bhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVQ
cml2YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlUGFz
dGVib2FyZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphZGRIVE1MQ2xpcGJvYXJkVHlw
ZXNGb3JDb2NvYVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6dHlwZXMpOiBS
ZXR1cm4gdGhlIGFjdHVhbCBsaXN0IG9mIHR5cGVzIGluIHRoZSBwYXN0ZWJvYXJkLgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6Y3JlYXRlUHJpdmF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjp3cml0ZVBhc3RlYm9hcmQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0
ZVByaXZhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVQ
YXN0ZWJvYXJkKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93cGUvUGFzdGVib2FyZFdQ
RS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVQcml2YXRlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlUGFzdGVib2FyZCk6IERl
bGV0ZWQuCisKIDIwMTctMDktMTggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgU3VwcG9ydCBtaW4oKSBhbmQgbWF4KCkgaW4gY2FsYygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDRhZTE3NzkzZDMzNTM2NzYzNDE1YmIxOGNjYjY1NmFlNjU0ZTA5MGYuLmJmODExYzczOWZj
MzUyMDA0ZGE4YmQyZjczY2UzMWNmMzg4MGJiYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTctMDktMTggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
T24gaU9TLCBnZXREYXRhIGNhbid0IGdldCB0ZXh0IHNldCBieSBzZXREYXRhIGR1cmluZyBjb3B5
IGV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzY5ODAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0NDUzOTE1PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvcHkpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisKIDIwMTctMDktMTggIEFuZHkg
RXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gVXBzdHJlYW0gc2Fu
ZGJveC1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwppbmRleCA1MzkyZDkxZDQwMDI2OTZlZjQxZjIwYmM3NTVhYWVjZTlhMzcx
OTFkLi45OWQ1MTJkMmRjY2Q5YmM2ZjBlODAzMjAzMzgzMGU4NzQ3MGU3NDBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDktMTggIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgT24gaU9TLCBnZXREYXRhIGNhbid0
IGdldCB0ZXh0IHNldCBieSBzZXREYXRhIGR1cmluZyBjb3B5IGV2ZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY5ODAKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM0NDUzOTE1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAg
ICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb3B5KTogRGVsZXRlZC4KKwogMjAxNy0wOS0xOCAg
QW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gVXBzdHJlYW0g
bWlzY2VsbGFuZW91cyBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IDNkMzEzZTE5NzVlNjZhNDBkOWIyNDhlMTRiMjRhMWI3
YjhhOWY2ZjEuLjU3YmU3Yzg0MzEzODMxMjc0MTI0MzUxYzk3YmQ2MDZmMWJiMmE1MmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC03NCw3ICs3NCw3IEBAIERhdGFUcmFuc2Zl
cjo6RGF0YVRyYW5zZmVyKFN0b3JlTW9kZSBtb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2Fy
ZD4gcGFzdGVib2FyCiAKIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9y
Q29weUFuZFBhc3RlKFN0b3JlTW9kZSBtb2RlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IERhdGFUcmFuc2Zlcihtb2RlLCBtb2RlID09IFN0b3JlTW9kZTo6UmVhZFdyaXRlID8gUGFzdGVi
b2FyZDo6Y3JlYXRlUHJpdmF0ZSgpIDogUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3Rl
KCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIobW9kZSwgbW9kZSA9
PSBTdG9yZU1vZGU6OlJlYWRXcml0ZSA/IHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2Fy
ZD4oKSA6IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpKSk7CiB9CiAKIERhdGFU
cmFuc2Zlcjo6fkRhdGFUcmFuc2ZlcigpCkBAIC0yMjAsOCArMjIwLDEwIEBAIGJvb2wgRGF0YVRy
YW5zZmVyOjpoYXNTdHJpbmdPZlR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogCiBSZWY8RGF0YVRy
YW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQoY29uc3QgU3RyaW5nJiBw
bGFpblRleHQsIGNvbnN0IFN0cmluZyYgaHRtbFRleHQpCiB7Ci0gICAgVHlwZVRvU3RyaW5nTWFw
IHR5cGVUb1N0cmluZ01hcCB7IHsgQVNDSUlMaXRlcmFsKCJ0ZXh0L3BsYWluIiksIHBsYWluVGV4
dCB9LCB7IEFTQ0lJTGl0ZXJhbCgidGV4dC9odG1sIiksIGh0bWxUZXh0IH0gfTsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoU3RvcmVNb2RlOjpSZWFkb25seSwgU3RhdGlj
UGFzdGVib2FyZDo6Y3JlYXRlKFdURk1vdmUodHlwZVRvU3RyaW5nTWFwKSksIFR5cGU6OklucHV0
RXZlbnQpKTsKKyAgICBhdXRvIHBhc3RlYm9hcmQgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bh
c3RlYm9hcmQ+KCk7CisgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoQVNDSUlMaXRlcmFsKCJ0
ZXh0L3BsYWluIiksIHBsYWluVGV4dCk7CisgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoQVND
SUlMaXRlcmFsKCJ0ZXh0L2h0bWwiKSwgaHRtbFRleHQpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFUcmFuc2ZlcihTdG9yZU1vZGU6OlJlYWRvbmx5LCBXVEZNb3ZlKHBhc3RlYm9hcmQp
LCBUeXBlOjpJbnB1dEV2ZW50KSk7CiB9CiAKICNpZiAhRU5BQkxFKERSQUdfU1VQUE9SVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBlZmNmNzY3MzMxMmVjNDhmZThjZDA4OTkzODgw
MjAxYzRjYmYyZjIyLi5kYzI0MTNmNWU3OGM2ZWJiMWIyMWU4MGFmZDdlYTBkZjA3NDIyYjZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zNDUsNyArMzQ1LDcgQEAgc3RhdGljIGJv
b2wgZGlzcGF0Y2hDbGlwYm9hcmRFdmVudChSZWZQdHI8RWxlbWVudD4mJiB0YXJnZXQsIGNvbnN0
IEF0b21pY1N0cmluZyYKICAgICBpZiAobm9EZWZhdWx0UHJvY2Vzc2luZyAmJiBzdG9yZU1vZGUg
PT0gRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJlYWRXcml0ZSkgewogICAgICAgICBhdXRvIHBh
c3RlYm9hcmQgPSBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKTsKICAgICAgICAg
cGFzdGVib2FyZC0+Y2xlYXIoKTsKLSAgICAgICAgcGFzdGVib2FyZC0+d3JpdGVQYXN0ZWJvYXJk
KGRhdGFUcmFuc2Zlci0+cGFzdGVib2FyZCgpKTsKKyAgICAgICAgZGF0YVRyYW5zZmVyLT5wYXN0
ZWJvYXJkKCkuY29tbWl0VG9QYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKTsKICAgICB9CiAKICAgICBk
YXRhVHJhbnNmZXItPm1ha2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmQuaAppbmRleCA2ZWUwODc2ZjBiODIxOGMxMjQzYjBjMjgxMWVjNjE1NzdmOWU2
ZWY5Li4yMjVhYWZmYzcyMGM4NzA3NmJjZWNkYmYwNDJhNzI1MmMxM2FmOTg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC0xNjMsNyArMTYzLDYgQEAgcHVibGljOgogI2Vu
ZGlmCiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmQ+IGNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZD4gY3JlYXRlUHJpdmF0ZSgpOyAvLyBUZW1wb3JhcnkgcGFzdGVib2FyZC4gQ2Fu
IHB1dCBkYXRhIG9uIHRoaXMgYW5kIHRoZW4gd3JpdGUgdG8gYW5vdGhlciBwYXN0ZWJvYXJkIHdp
dGggd3JpdGVQYXN0ZWJvYXJkLgogCiAgICAgdmlydHVhbCBib29sIGhhc0RhdGEoKTsKICAgICB2
aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHR5cGVzKCk7CkBAIC0xODcsNyArMTg2LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCB3cml0ZU1hcmt1cChjb25zdCBTdHJpbmcmIG1hcmt1cCk7CiAg
ICAgZW51bSBTbWFydFJlcGxhY2VPcHRpb24geyBDYW5TbWFydFJlcGxhY2UsIENhbm5vdFNtYXJ0
UmVwbGFjZSB9OwogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZVBsYWluVGV4
dChjb25zdCBTdHJpbmcmLCBTbWFydFJlcGxhY2VPcHRpb24pOyAvLyBGSVhNRTogVHdvIHNlcGFy
YXRlIGZ1bmN0aW9ucyB3b3VsZCBiZSBjbGVhcmVyIHRoYW4gb25lIGZ1bmN0aW9uIHdpdGggYW4g
YXJndW1lbnQuCi0gICAgdmlydHVhbCB2b2lkIHdyaXRlUGFzdGVib2FyZChjb25zdCBQYXN0ZWJv
YXJkJiBzb3VyY2VQYXN0ZWJvYXJkKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0VG9QYXN0ZWJv
YXJkKFBhc3RlYm9hcmQmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICNpZiBFTkFCTEUo
RFJBR19TVVBQT1JUKQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZD4gY3JlYXRlRm9yRHJhZ0FuZERyb3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggZDdhYjlhNmZjOTQ3MTc3ZWM1YzdjZmI5
MDNlMjU4NWFlMDdjMmUxMi4uZDBhMzVjZGJjY2RkN2NhN2EzYjZiN2VjNWI2MzhlYWRmZGQ3MDJk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAg
LTY2LDcgKzY2LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBsb25nIGFkZFR5cGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIGxvbmcgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwot
ICAgIHZpcnR1YWwgbG9uZyBjb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQsIGNvbnN0
IFN0cmluZyYgdG9QYXN0ZWJvYXJkKSA9IDA7CiAgICAgdmlydHVhbCBsb25nIHNldEJ1ZmZlckZv
clR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgbG9uZyBzZXRQYXRobmFt
ZXNGb3JUeXBlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgbG9u
ZyBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKaW5kZXggZGMzNGFlZWU4ZGU0MjdmMWM5
YjVhM2Y0Yjk5MzlhMDIyZWJlMWJmMC4uZTBhMjM1M2Y4MzA1ODJkNzQ3Y2Y2OTc2NTYwYTM3N2I0
YjkwMTBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVi
b2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5j
cHAKQEAgLTI4LDM0ICsyOCw1MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0ZDo6dW5p
cXVlX3B0cjxTdGF0aWNQYXN0ZWJvYXJkPiBTdGF0aWNQYXN0ZWJvYXJkOjpjcmVhdGUoVHlwZVRv
U3RyaW5nTWFwJiYgdHlwZVRvU3RyaW5nTWFwKQorU3RhdGljUGFzdGVib2FyZDo6U3RhdGljUGFz
dGVib2FyZCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2Fy
ZD4oV1RGTW92ZSh0eXBlVG9TdHJpbmdNYXApKTsKIH0KIAotU3RhdGljUGFzdGVib2FyZDo6U3Rh
dGljUGFzdGVib2FyZChUeXBlVG9TdHJpbmdNYXAmJiB0eXBlVG9TdHJpbmdNYXApCi0gICAgOiBt
X3R5cGVUb1N0cmluZ01hcCh0eXBlVG9TdHJpbmdNYXApCitib29sIFN0YXRpY1Bhc3RlYm9hcmQ6
Omhhc0RhdGEoKQogeworICAgIHJldHVybiAhbV9zdHJpbmdDb250ZW50cy5pc0VtcHR5KCk7CiB9
CiAKLWJvb2wgU3RhdGljUGFzdGVib2FyZDo6aGFzRGF0YSgpCitTdHJpbmcgU3RhdGljUGFzdGVi
b2FyZDo6cmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpCiB7Ci0gICAgcmV0dXJuICFtX3R5
cGVUb1N0cmluZ01hcC5pc0VtcHR5KCk7CisgICAgaWYgKCFtX3N0cmluZ0NvbnRlbnRzLmNvbnRh
aW5zKHR5cGUpKQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBtX3N0cmluZ0NvbnRl
bnRzLmdldCh0eXBlKTsKIH0KIAotVmVjdG9yPFN0cmluZz4gU3RhdGljUGFzdGVib2FyZDo6dHlw
ZXMoKQordm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gYWxsVHlwZXMo
bV90eXBlVG9TdHJpbmdNYXAuc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIHR5cGUgOiBtX3R5cGVU
b1N0cmluZ01hcC5rZXlzKCkpCi0gICAgICAgIGFsbFR5cGVzLmFwcGVuZCh0eXBlKTsKLSAgICBy
ZXR1cm4gYWxsVHlwZXM7CisgICAgYXV0byByZXN1bHQgPSBtX3N0cmluZ0NvbnRlbnRzLnNldCh0
eXBlLCB2YWx1ZSk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBtX3R5cGVz
LmFwcGVuZCh0eXBlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgbV90eXBlcy5yZW1vdmVGaXJzdCh0
eXBlKTsKKyAgICAgICAgQVNTRVJUKCFtX3R5cGVzLmNvbnRhaW5zKHR5cGUpKTsKKyAgICAgICAg
bV90eXBlcy5hcHBlbmQodHlwZSk7CisgICAgfQogfQogCi1TdHJpbmcgU3RhdGljUGFzdGVib2Fy
ZDo6cmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpCit2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6
OmNsZWFyKCkKIHsKLSAgICBpZiAoIW1fdHlwZVRvU3RyaW5nTWFwLmNvbnRhaW5zKHR5cGUpKQot
ICAgICAgICByZXR1cm4geyB9OwotICAgIHJldHVybiBtX3R5cGVUb1N0cmluZ01hcC5nZXQodHlw
ZSk7CisgICAgbV9zdHJpbmdDb250ZW50cy5jbGVhcigpOworICAgIG1fdHlwZXMuY2xlYXIoKTsK
K30KKwordm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjpjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUpCit7
CisgICAgaWYgKCFtX3N0cmluZ0NvbnRlbnRzLnJlbW92ZSh0eXBlKSkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fdHlwZXMucmVtb3ZlRmlyc3QodHlwZSk7CisgICAgQVNTRVJUKCFtX3R5cGVzLmNv
bnRhaW5zKHR5cGUpKTsKK30KKworLy8gRklYTUU6IENvcHkgdGhlIGVudGlyZSBTdGF0aWNQYXN0
ZWJvYXJkIHRvIFVJUHJvY2VzcyBpbnN0ZWFkIG9mIHdyaXRpbmcgZWFjaCBzdHJpbmcuCit2b2lk
IFN0YXRpY1Bhc3RlYm9hcmQ6OmNvbW1pdFRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJv
YXJkKQoreworICAgIGZvciAoYXV0byYgdHlwZSA6IG1fdHlwZXMpCisgICAgICAgIHBhc3RlYm9h
cmQud3JpdGVTdHJpbmcodHlwZSwgbV9zdHJpbmdDb250ZW50cy5nZXQodHlwZSkpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKaW5kZXggZGU3MmMw
NDgyZWY4ZGEwNTQxYzUxMmE4MWEzZmIxM2NjMWJmYjMxNi4uMzE4NTU1MmJmYjE5MTIzYjU0Yjdk
NjRlMjdiNWU3NzI0ZjM5ZjFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U3RhdGljUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bh
c3RlYm9hcmQuaApAQCAtMjcsMjUgKzI3LDI0IEBACiAKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgi
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5
cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gVHlwZVRvU3RyaW5nTWFwOwotCiBjbGFzcyBT
dGF0aWNQYXN0ZWJvYXJkIGZpbmFsIDogcHVibGljIFBhc3RlYm9hcmQgewogcHVibGljOgotICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U3RhdGljUGFzdGVib2FyZD4gY3JlYXRlKFR5cGVUb1N0
cmluZ01hcCYmKTsKKyAgICBTdGF0aWNQYXN0ZWJvYXJkKCk7CiAKLSAgICBTdGF0aWNQYXN0ZWJv
YXJkKFR5cGVUb1N0cmluZ01hcCYmKTsKKyAgICB2b2lkIGNvbW1pdFRvUGFzdGVib2FyZChQYXN0
ZWJvYXJkJik7CiAKICAgICBib29sIGhhc0RhdGEoKSBmaW5hbDsKLSAgICBWZWN0b3I8U3RyaW5n
PiB0eXBlcygpIGZpbmFsOworICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzKCkgZmluYWwgeyByZXR1
cm4gbV90eXBlczsgfQogICAgIFN0cmluZyByZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkg
ZmluYWw7CiAKLSAgICB2b2lkIHdyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYpIGZpbmFsIHsgfQotICAgIHZvaWQgY2xlYXIoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGNsZWFy
KGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgfQorICAgIHZvaWQgd3JpdGVTdHJpbmcoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpIGZpbmFsOworICAgIHZvaWQgY2xlYXIoKSBm
aW5hbDsKKyAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7CiAKICAgICB2
b2lkIHJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYpIGZpbmFsIHsgfQogICAgIHZvaWQgcmVhZChQ
YXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYpIGZpbmFsIHsgfQpAQCAtNTksMTQgKzU4LDE0IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgd3JpdGVNYXJrdXAoY29uc3QgU3RyaW5nJikgZmluYWwgeyB9
CiAgICAgdm9pZCB3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmLCBTbWFydFJlcGxhY2VPcHRp
b24pIGZpbmFsIHsgfQotICAgIHZvaWQgd3JpdGVQYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmQm
KSBmaW5hbCB7IH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgdm9pZCBzZXREcmFn
SW1hZ2UoRHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpIGZpbmFsIHsgfQogI2VuZGlmCiAKIHBy
aXZhdGU6Ci0gICAgVHlwZVRvU3RyaW5nTWFwIG1fdHlwZVRvU3RyaW5nTWFwOworICAgIFZlY3Rv
cjxTdHJpbmc+IG1fdHlwZXM7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9zdHJpbmdD
b250ZW50czsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJv
YXJkR3RrLmNwcAppbmRleCA3MzdkOGQ0MTRkMmQ1NDkxMDZjYTJhMTk4ZDMzZDUzNGUyM2VkODkw
Li5iZDkyYTI3MTE0OGVmZmRhOGQxMDRlOWMyZWQ2N2E4YzNiMmE3ZmRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCkBAIC01MCwxMSArNTAsNiBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yR2xvYmFs
U2VsZWN0aW9uKCkKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPigiUFJJ
TUFSWSIpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3Jl
YXRlUHJpdmF0ZSgpCi17Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4o
U2VsZWN0aW9uRGF0YTo6Y3JlYXRlKCkpOwotfQotCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
IHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5k
RHJvcCgpCiB7CkBAIC0xOTksMjkgKzE5NCw2IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29u
c3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIHBhc3RlYm9hcmRDb250ZW50KQogICAgIHdyaXRlVG9D
bGlwYm9hcmQoKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVBhc3RlYm9hcmQoY29uc3Qg
UGFzdGVib2FyZCYgc291cmNlUGFzdGVib2FyZCkKLXsKLSAgICBjb25zdCBhdXRvJiBzb3VyY2VE
YXRhT2JqZWN0ID0gc291cmNlUGFzdGVib2FyZC5zZWxlY3Rpb25EYXRhKCk7Ci0gICAgbV9zZWxl
Y3Rpb25EYXRhLT5jbGVhckFsbCgpOwotCi0gICAgaWYgKHNvdXJjZURhdGFPYmplY3QuaGFzVGV4
dCgpKQotICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldFRleHQoc291cmNlRGF0YU9iamVjdC50
ZXh0KCkpOwotICAgIGlmIChzb3VyY2VEYXRhT2JqZWN0Lmhhc01hcmt1cCgpKQotICAgICAgICBt
X3NlbGVjdGlvbkRhdGEtPnNldE1hcmt1cChzb3VyY2VEYXRhT2JqZWN0Lm1hcmt1cCgpKTsKLSAg
ICBpZiAoc291cmNlRGF0YU9iamVjdC5oYXNVUkwoKSkKLSAgICAgICAgbV9zZWxlY3Rpb25EYXRh
LT5zZXRVUkwoc291cmNlRGF0YU9iamVjdC51cmwoKSwgc291cmNlRGF0YU9iamVjdC51cmxMYWJl
bCgpKTsKLSAgICBpZiAoc291cmNlRGF0YU9iamVjdC5oYXNVUklMaXN0KCkpCi0gICAgICAgIG1f
c2VsZWN0aW9uRGF0YS0+c2V0VVJJTGlzdChzb3VyY2VEYXRhT2JqZWN0LnVyaUxpc3QoKSk7Ci0g
ICAgaWYgKHNvdXJjZURhdGFPYmplY3QuaGFzSW1hZ2UoKSkKLSAgICAgICAgbV9zZWxlY3Rpb25E
YXRhLT5zZXRJbWFnZShzb3VyY2VEYXRhT2JqZWN0LmltYWdlKCkpOwotICAgIGlmIChzb3VyY2VE
YXRhT2JqZWN0Lmhhc1Vua25vd25UeXBlRGF0YSgpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgaXQg
OiBzb3VyY2VEYXRhT2JqZWN0LnVua25vd25UeXBlcygpKQotICAgICAgICAgICAgbV9zZWxlY3Rp
b25EYXRhLT5zZXRVbmtub3duVHlwZURhdGEoaXQua2V5LCBpdC52YWx1ZSk7Ci0gICAgfQotCi0g
ICAgd3JpdGVUb0NsaXBib2FyZCgpOwotfQotCiB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKCkKIHsK
ICAgICAvLyBXZSBkbyBub3QgY2xlYXIgZmlsZW5hbWVzLiBBY2NvcmRpbmcgdG8gdGhlIHNwZWM6
ICJUaGUgY2xlYXJEYXRhKCkgbWV0aG9kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
YXN0ZWJvYXJkSU9TLm1tCmluZGV4IDQxN2UyOTM1ODExM2M0MGEzY2FlZTQyNjEwNjg1MDFjMDMz
YzdkNTkuLjc2ZjQzOTdlMzgzN2UwNzRiYjFhODMyZjAwMGUzYTVlZDkwNTY2ZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC0xMzMsMTEgKzEz
Myw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JD
b3B5QW5kUGFzdGUoKQogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KGNo
YW5nZUNvdW50Rm9yUGFzdGVib2FyZCgpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZVByaXZhdGUoKQotewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFBhc3RlYm9hcmQ+KGNoYW5nZUNvdW50Rm9yUGFzdGVib2FyZCgpKTsKLX0KLQogdm9p
ZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkK
IHsKICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRl
VG9QYXN0ZWJvYXJkKGNvbnRlbnQsIG1fcGFzdGVib2FyZE5hbWUpOwpAQCAtMTc0LDEwICsxNjks
NiBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJvYXJkVHlwZShj
b25zdCBQYXN0ZWJvYXJkVVJMJikKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9p
ZCBQYXN0ZWJvYXJkOjp3cml0ZVBhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZCYpCi17Ci19Ci0K
IGJvb2wgUGFzdGVib2FyZDo6Y2FuU21hcnRSZXBsYWNlKCkKIHsKICAgICByZXR1cm4gZmFsc2U7
CkBAIC00MDQsNyArMzk1LDkgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29uc3Qg
U3RyaW5nJiB0eXBlKQogc3RhdGljIHZvaWQgYWRkSFRNTENsaXBib2FyZFR5cGVzRm9yQ29jb2FU
eXBlKExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdFR5cGVzLCBOU1N0cmluZyAqY29jb2FUeXBl
KQogewogICAgIC8vIFVUSSBtYXkgbm90IGRvIHRoZXNlIHJpZ2h0LCBzbyBtYWtlIHN1cmUgd2Ug
Z2V0IHRoZSByaWdodCwgcHJlZGljdGFibGUgcmVzdWx0LgotICAgIGlmIChbY29jb2FUeXBlIGlz
RXF1YWxUb1N0cmluZzooTlNTdHJpbmcgKilrVVRUeXBlVGV4dF0pIHsKKyAgICBpZiAoW2NvY29h
VHlwZSBpc0VxdWFsVG9TdHJpbmc6KE5TU3RyaW5nICopa1VUVHlwZVBsYWluVGV4dF0KKyAgICAg
ICAgfHwgW2NvY29hVHlwZSBpc0VxdWFsVG9TdHJpbmc6KE5TU3RyaW5nICopa1VUVHlwZVVURjhQ
bGFpblRleHRdCisgICAgICAgIHx8IFtjb2NvYVR5cGUgaXNFcXVhbFRvU3RyaW5nOihOU1N0cmlu
ZyAqKWtVVFR5cGVVVEYxNlBsYWluVGV4dF0pIHsKICAgICAgICAgcmVzdWx0VHlwZXMuYWRkKEFT
Q0lJTGl0ZXJhbCgidGV4dC9wbGFpbiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQz
Miw3ICs0MjUsOCBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogCiBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0
eXBlcygpCiB7Ci0gICAgTlNBcnJheSAqdHlwZXMgPSBzdXBwb3J0ZWRXZWJDb250ZW50UGFzdGVi
b2FyZFR5cGVzKCk7CisgICAgVmVjdG9yPFN0cmluZz4gY29jb2FUeXBlczsKKyAgICBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKGNvY29hVHlwZXMs
IG1fcGFzdGVib2FyZE5hbWUpOwogCiAgICAgLy8gRW5mb3JjZSBjaGFuZ2VDb3VudCBvdXJzZWx2
ZXMgZm9yIHNlY3VyaXR5LiBXZSBjaGVjayBhZnRlciByZWFkaW5nIGluc3RlYWQgb2YgYmVmb3Jl
IHRvIGJlCiAgICAgLy8gc3VyZSBpdCBkb2Vzbid0IGNoYW5nZSBiZXR3ZWVuIG91ciB0ZXN0aW5n
IHRoZSBjaGFuZ2UgY291bnQgYW5kIGFjY2Vzc2luZyB0aGUgZGF0YS4KQEAgLTQ0MCwxMSArNDM0
LDggQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlwZXMoKQogICAgICAgICByZXR1cm4g
VmVjdG9yPFN0cmluZz4oKTsKIAogICAgIExpc3RIYXNoU2V0PFN0cmluZz4gcmVzdWx0OwotICAg
IE5TVUludGVnZXIgY291bnQgPSBbdHlwZXMgY291bnRdOwotICAgIGZvciAoTlNVSW50ZWdlciBp
ID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLSAgICAgICAgTlNTdHJpbmcgKnR5cGUgPSBbdHlwZXMg
b2JqZWN0QXRJbmRleDppXTsKLSAgICAgICAgYWRkSFRNTENsaXBib2FyZFR5cGVzRm9yQ29jb2FU
eXBlKHJlc3VsdCwgdHlwZSk7Ci0gICAgfQorICAgIGZvciAoYXV0byBjb2NvYVR5cGUgOiBjb2Nv
YVR5cGVzKQorICAgICAgICBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUocmVzdWx0
LCBjb2NvYVR5cGUpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gdmVjdG9yOwogICAgIGNvcHlUb1Zl
Y3RvcihyZXN1bHQsIHZlY3Rvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tCmluZGV4IGE4OGM1ZDk4YjQ0ZmI5MzNmZjBhNmUzNTE0Njc2ZjBkYTE4Yzhj
ODMuLmRhYTlmNmFjMzIyYzJhNjNlNDZhM2ZiNTkzY2ZmNzBhMWU4OWYwZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0xMzgsMTEgKzEzOCw2
IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5
QW5kUGFzdGUoKQogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlUHJpdmF0ZSgpCi17Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4ocGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT51bmlxdWVOYW1lKCkpOwotfQotCiAjaWYgRU5BQkxFKERSQUdf
U1VQUE9SVCkKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVG
b3JEcmFnQW5kRHJvcCgpCiB7CkBAIC0yOTgsMTEgKzI5Myw2IEBAIHZvaWQgUGFzdGVib2FyZDo6
d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiAgICAgd3JpdGVG
aWxlV3JhcHBlckFzUlRGREF0dGFjaG1lbnQoZmlsZVdyYXBwZXIocGFzdGVib2FyZEltYWdlKSwg
bV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6
d3JpdGVQYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQpCi17Ci0gICAgbV9j
aGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+
Y29weShwYXN0ZWJvYXJkLm1fcGFzdGVib2FyZE5hbWUsIG1fcGFzdGVib2FyZE5hbWUpOwotfQot
CiBib29sIFBhc3RlYm9hcmQ6OmNhblNtYXJ0UmVwbGFjZSgpCiB7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gdHlwZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAKaW5kZXggNzJlYmI2ZmNiY2UyMjk1MzAwMjc3ZGY2MjI5NzJhZWUwY2JmOTA0Yi4uNzJhZWNm
NjdiMTlkNTU5MjM4OGMwODc0ZDg2ZTM2ZWI5NmM2MmI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtOTksMTIgKzk5LDYgQEAgc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgp
CiAgICAgcmV0dXJuIHBhc3RlYm9hcmQ7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJk
PiBQYXN0ZWJvYXJkOjpjcmVhdGVQcml2YXRlKCkKLXsKLSAgICAvLyBXaW5kb3dzIGhhcyBubyAi
UHJpdmF0ZSBwYXN0ZWJvYXJkIiBjb25jZXB0LgotICAgIHJldHVybiBjcmVhdGVGb3JDb3B5QW5k
UGFzdGUoKTsKLX0KLQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiBzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoKQogewpAQCAtNzYw
LDExICs3NTQsNiBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJikKICAgICB9CiB9CiAKLXZvaWQgUGFzdGVib2Fy
ZDo6d3JpdGVQYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmQmIHNvdXJjZVBhc3RlYm9hcmQpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogYm9vbCBQYXN0ZWJvYXJkOjpjYW5TbWFydFJl
cGxhY2UoKQogeyAKICAgICByZXR1cm4gOjpJc0NsaXBib2FyZEZvcm1hdEF2YWlsYWJsZShXZWJT
bWFydFBhc3RlRm9ybWF0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dw
ZS9QYXN0ZWJvYXJkV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9QYXN0ZWJv
YXJkV1BFLmNwcAppbmRleCAyYzc4MDA4M2ZkMDk1ZmQ3NGQ5MDlkZWY5MzMzNTQ0MDc3NTIzN2I2
Li5kYTQ3NmE2OTQxNjU3NWY0OGYzMDY4YTUzMDg4N2FiNjNiNTVlN2QxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvUGFzdGVib2FyZFdQRS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd3BlL1Bhc3RlYm9hcmRXUEUuY3BwCkBAIC0zNywxMSArMzcsNiBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFu
ZFBhc3RlKCkKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPigpOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlUHJpdmF0ZSgp
Ci17Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oKTsKLX0KLQogUGFz
dGVib2FyZDo6UGFzdGVib2FyZCgpCiB7CiB9CkBAIC0xMjcsOCArMTIyLDQgQEAgdm9pZCBQYXN0
ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIFNtYXJ0UmVwbGFjZU9w
dGlvbikKICAgICB3cml0ZVN0cmluZygidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IiwgdGV4dCk7
CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVQYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmQm
KQotewotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCmluZGV4IDY5YjdmOTQ3OTFiNzdhNzZjNTM1YTBkOWQ2Y2M3ZmExYTAwYmM4MGIu
LmRlZjM1NWQ0ZjJlODhiYTMyNDU5OWYxYjg2MjE4MTZlMGY1N2IwZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0yMDIsMTMgKzIwMiw2IEBAIFN0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLWxvbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQsIGNvbnN0IFN0cmluZyYgdG9Q
YXN0ZWJvYXJkKQotewotICAgIHVpbnQ2NF90IG5ld0NoYW5nZUNvdW50OwotICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlBhc3RlYm9hcmRDb3B5KGZyb21QYXN0ZWJvYXJkLCB0
b1Bhc3RlYm9hcmQpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpQYXN0ZWJvYXJkQ29w
eTo6UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAwKTsKLSAgICByZXR1cm4gbmV3Q2hhbmdlQ291bnQ7
Ci19Ci0KIGxvbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjaGFuZ2VDb3VudChjb25zdCBXVEY6
OlN0cmluZyAmcGFzdGVib2FyZE5hbWUpCiB7CiAgICAgdWludDY0X3QgY2hhbmdlQ291bnQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggZDQ4ZGJjMzI3MWU1MjVlNjZhMTE5MjRl
MzAwOWRlNmQ3OGE0YjkzNC4uOGJjOTM4MWJkNjExOGMxMWUxYjA3YzMzM2NiYzFlYmQxZTMxYTA3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtODIsNyArODIsNiBAQCBwcml2
YXRlOgogCiAgICAgbG9uZyBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBsb25n
IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIGxvbmcgY29weShjb25zdCBTdHJp
bmcmIGZyb21QYXN0ZWJvYXJkLCBjb25zdCBTdHJpbmcmIHRvUGFzdGVib2FyZCkgb3ZlcnJpZGU7
CiAgICAgbG9uZyBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOwogICAgIGxvbmcgc2V0UGF0aG5hbWVzRm9yVHlwZShjb25zdCBWZWN0b3I8U3RyaW5n
PiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwogICAgIGxvbmcgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggZGUxN2RmYzM1
YTVmNzFiZDVjMmJjMTlkMTcyNWM3Mzc0NmRhYjU1Yi4uYjViNTIyYjFlMTY4YzQwMTMxM2NkYmZh
YmJlNzFmZGUxY2E3MWNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTgxLDcg
KzgxLDYgQEAgcHJpdmF0ZToKIAogICAgIGxvbmcgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJp
ZGU7CiAgICAgbG9uZyBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBsb25nIGNv
cHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCwgY29uc3QgU3RyaW5nJiB0b1Bhc3RlYm9h
cmQpIG92ZXJyaWRlOwogICAgIGxvbmcgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpTaGFyZWRC
dWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKICAgICBsb25nIHNldFBhdGhuYW1lc0ZvclR5cGUoY29uc3Qg
VmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBsb25nIHNldFN0cmluZ0ZvclR5cGUo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0K
aW5kZXggODQ5ZGRiNjUzYzg2MTVkZTdhMjdiZTk1NDU3NmRlOTQxZmEyZTJkYi4uYTY2NTUxODEx
MWQ1YjUwODU3ZDgxNWJlMmI1NzhhNGM3YzlkZThjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5tbQpAQCAtMTI5LDExICsxMjksNiBAQCBTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0CiAgICAg
cmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc3RyaW5nRm9yVHlwZShw
YXN0ZWJvYXJkVHlwZSk7CiB9CiAKLWxvbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb3B5KGNv
bnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQsIGNvbnN0IFN0cmluZyYgdG9QYXN0ZWJvYXJkKQot
ewotICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQodG9QYXN0ZWJvYXJkKS5jb3B5KGZyb21Q
YXN0ZWJvYXJkKTsKLX0KLQogbG9uZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNoYW5nZUNvdW50
KGNvbnN0IFN0cmluZyAmcGFzdGVib2FyZE5hbWUpCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFz
dGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY2hhbmdlQ291bnQoKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiZjVhMDU4ZDIx
YzE3YzkzM2Q0MmMwYTZkOTlkY2I4YzU3ODUzMjk5Li45NTE5MTAwMmE1NGNlZGE4ZjI5YzlmNmRl
ZGQ4MDM5OTAyYWQ4Y2UyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTctMDktMTggIFJ5b3N1
a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgT24gaU9TLCBnZXREYXRhIGNh
bid0IGdldCB0ZXh0IHNldCBieSBzZXREYXRhIGR1cmluZyBjb3B5IGV2ZW50CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY5ODAKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzM0NDUzOTE1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZGVkIHJlZ3Jlc3Npb24gdGVzdHMgdG8gbWFrZSBzdXJlIGRhdGFU
cmFuc2Zlci50eXBlcyByZXR1cm5zIGFuIGVtcHR5IGxpc3Qgd2hlbiB3cml0aW5nIHRvIGEgcGFz
dGVib2FyZCAoY29weSksCisgICAgICAgIGFuZCBkb2Vzbid0IGNvbnRhaW4gaW1hZ2UgdHlwZXMg
d2hlbiBwYXN0aW5nIHBsYWluIHRleHQuIFVuZm9ydHVuYXRlbHksIHBhc3RpbmcgaW1hZ2UgZG9l
cyByZXN1bHQgaW4gcGxhaW4gdGV4dAorICAgICAgICBjb250ZW50IGJlaW5nIHByZXNlbnQgaW4g
dGhlIHBhc3RlYm9hcmQgaW4gdGhlIGZvcm0gb2YgVVJMIHNvIHdlIGNhbid0IHRlc3QgdGhhdCBz
Y2VuYXJpby4KKworICAgICAgICBBbHNvIHJlbW92ZWQgZmFpbGluZyBleHBlY3RhdGlvbnMgZnJv
bSBhIG51bWJlciBvZiB0ZXN0cyB0aGF0IGFyZSBub3cgcGFzc2luZyBvbiBpT1MuCisKKyAgICAg
ICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YVRyYW5zZmVyLXR5cGVzLWlzLWluaXRpYWxseS1l
bXB0eS1vbi1jb3B5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0
ZWJvYXJkL2RhdGFUcmFuc2Zlci10eXBlcy1pcy1pbml0aWFsbHktZW1wdHktb24tY29weS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YVRyYW5zZmVyLXR5cGVz
LXBhc3RpbmctcGxhaW50ZXh0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGlu
Zy9wYXN0ZWJvYXJkL2RhdGFUcmFuc2Zlci10eXBlcy1wYXN0aW5nLXBsYWludGV4dC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxNy0w
OS0xOCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFy
ayBmYXN0L2Nzcy9kaXNwbGF5LWNvbnRlbnRzLXN0eWxlLXVwZGF0ZS5odG1sIGFzIGEgZmFpbHVy
ZSBvbiBXaW5kb3dzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
L2RhdGFUcmFuc2Zlci10eXBlcy1pcy1pbml0aWFsbHktZW1wdHktb24tY29weS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YVRyYW5zZmVyLXR5cGVzLWlz
LWluaXRpYWxseS1lbXB0eS1vbi1jb3B5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmIwZjYw
ZGUwMTY0ZmY5N2MwZjVmOGUxZTdkM2Y3OTFhZTU3MThiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGFUcmFuc2Zlci10eXBlcy1pcy1pbml0aWFs
bHktZW1wdHktb24tY29weS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgdGhh
dCBEYXRhVHJhbnNmZXIncyB0eXBlcyBpcyBpbml0aWFsbHkgZW1wdHkgb24gY29weS4gVG8gbWFu
dWFsbHkgdGVzdCwgcHJlc3MgdGhlIGJ1dHRvbiBiZWxvdy4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgSlNPTi5zdHJpbmdpZnkoZXZlbnQuY2xpcGJvYXJkRGF0YS50eXBl
cykgaXMgIltdIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhVHJh
bnNmZXItdHlwZXMtaXMtaW5pdGlhbGx5LWVtcHR5LW9uLWNvcHkuaHRtbCBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXItdHlwZXMtaXMtaW5pdGlhbGx5LWVtcHR5
LW9uLWNvcHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTZiMjljMjY3ODA2ZjE3Mzc2YWZiNDQwMzY5ZDc4
MjMxNThkNmExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL2RhdGFUcmFuc2Zlci10eXBlcy1pcy1pbml0aWFsbHktZW1wdHktb24tY29weS5odG1sCkBA
IC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPGRpdiBpZD0i
Y29udGFpbmVyIj4KKzxkaXYgaWQ9InNvdXJjZSIgY29udGVudGVkaXRhYmxlPSJ0cnVlIiBvbmNv
cHk9ImNoZWNrKGV2ZW50KSI+aGVsbG88L2Rpdj4KKzxidXR0b24gb25jbGljaz0icnVuVGVzdCgp
Ij5TdGFydCB0aGUgdGVzdDwvYnV0dG9uPgorPC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24o
IlRlc3RzIHRoYXQgRGF0YVRyYW5zZmVyJ3MgdHlwZXMgaXMgaW5pdGlhbGx5IGVtcHR5IG9uIGNv
cHkuIFRvIG1hbnVhbGx5IHRlc3QsIHByZXNzIHRoZSBidXR0b24gYmVsb3cuIik7Citqc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gY2hlY2soZXZlbnQpIHsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ0pTT04uc3RyaW5naWZ5KGV2ZW50LmNsaXBib2FyZERhdGEudHlwZXMpJywg
J1tdJyk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGNvbnN0IHNvdXJjZSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdzb3VyY2UnKTsKKyAgICBzb3VyY2UuZm9jdXMoKTsKKyAg
ICBkb2N1bWVudC5leGVjQ29tbWFuZCgnU2VsZWN0QWxsJywgZmFsc2UsIG51bGwpOworICAgIGRv
Y3VtZW50LmV4ZWNDb21tYW5kKCdDb3B5JywgZmFsc2UsIG51bGwpOworICAgIHNvdXJjZS5wYXJl
bnROb2RlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICBydW5UZXN0KCk7CisKK3N1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGFUcmFuc2Zlci10eXBlcy1wYXN0aW5n
LXBsYWludGV4dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
ZGF0YVRyYW5zZmVyLXR5cGVzLXBhc3RpbmctcGxhaW50ZXh0LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iZTliMzQwYjRlMWE0Y2U1YmY5MzE2MDQ1YmI5MGNkNmNlZWNlOWI4Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGFUcmFuc2Zlci10eXBl
cy1wYXN0aW5nLXBsYWludGV4dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGVzdHMg
dGhhdCBEYXRhVHJhbnNmZXIncyB0eXBlcyBjb250YWlucyB0ZXh0L3BsYWluIGJ1dCBub3Qgbm8g
aW1hZ2UgdHlwZXMgd2hlbiBwYXN0aW5nIGEgcGxhaW4gdGV4dC4gVG8gbWFudWFsbHkgdGVzdCwg
Y2xpY2sgb24gdGhlIGJ1dHRvbiBiZWxvdyB0aGVuIHRyaWdnZXIgcGFzdGUgKENvbW1hbmQrViBv
ciBDb250cm9sK1YpLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0eXBl
cy5pbmNsdWRlcygidGV4dC9wbGFpbiIpIGlzIHRydWUKK1BBU1MgdHlwZXMuZmluZCgodHlwZSkg
PT4gdHlwZS5pbmNsdWRlcygicG5nIikpIGlzIHVuZGVmaW5lZC4KK1BBU1MgdHlwZXMuZmluZCgo
dHlwZSkgPT4gdHlwZS5pbmNsdWRlcygianBlZyIpKSBpcyB1bmRlZmluZWQuCitQQVNTIHR5cGVz
LmZpbmQoKHR5cGUpID0+IHR5cGUuaW5jbHVkZXMoInRpZmYiKSkgaXMgdW5kZWZpbmVkLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXItdHlwZXMtcGFz
dGluZy1wbGFpbnRleHQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRh
VHJhbnNmZXItdHlwZXMtcGFzdGluZy1wbGFpbnRleHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjAzYTZk
OTY3YTllYjliYThjMWY4MDg2YjEzZGM1YTA4ZDgxYjg2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGFUcmFuc2Zlci10eXBlcy1wYXN0aW5nLXBs
YWludGV4dC5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IERhdGFUcmFuc2ZlcidzIHR5
cGVzIGNvbnRhaW5zIHRleHQvcGxhaW4gYnV0IG5vdCBubyBpbWFnZSB0eXBlcyB3aGVuIHBhc3Rp
bmcgYSBwbGFpbiB0ZXh0LiBUbyBtYW51YWxseSB0ZXN0LCBjbGljayBvbiB0aGUgYnV0dG9uIGJl
bG93IHRoZW4gdHJpZ2dlciBwYXN0ZSAoQ29tbWFuZCtWIG9yIENvbnRyb2wrVikuIik7Citqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gY2hlY2soZXZlbnQpIHsKKyAgICB0eXBlcyA9
IGV2ZW50LmNsaXBib2FyZERhdGEudHlwZXM7CisgICAgc2hvdWxkQmVUcnVlKCd0eXBlcy5pbmNs
dWRlcygidGV4dC9wbGFpbiIpJyk7CisgICAgc2hvdWxkQmVVbmRlZmluZWQoJ3R5cGVzLmZpbmQo
KHR5cGUpID0+IHR5cGUuaW5jbHVkZXMoInBuZyIpKScpOworICAgIHNob3VsZEJlVW5kZWZpbmVk
KCd0eXBlcy5maW5kKCh0eXBlKSA9PiB0eXBlLmluY2x1ZGVzKCJqcGVnIikpJyk7CisgICAgc2hv
dWxkQmVVbmRlZmluZWQoJ3R5cGVzLmZpbmQoKHR5cGUpID0+IHR5cGUuaW5jbHVkZXMoInRpZmYi
KSknKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykuc3R5bGUuZGlz
cGxheSA9ICdub25lJzsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gcnVuVGVz
dCgpCit7CisgICAgY29uc3Qgc291cmNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NvdXJj
ZScpOworICAgIHNvdXJjZS5mb2N1cygpOworICAgIHNvdXJjZS5jb250ZW50RG9jdW1lbnQuZXhl
Y0NvbW1hbmQoJ3NlbGVjdEFsbCcsIGZhbHNlLCBudWxsKTsKKyAgICBzb3VyY2UuY29udGVudERv
Y3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5JywgZmFsc2UsIG51bGwpOworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdkZXN0aW5hdGlvbicpLmZvY3VzKCk7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2Rlc3RpbmF0aW9uJykudGV4dENvbnRlbnQgPSAnTm93LCBwYXN0ZSBoZXJlJzsK
KyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnc2VsZWN0QWxsJywgZmFsc2UsIG51bGwpOworCisg
ICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYnV0dG9uJykuc3R5bGUuZGlzcGxheSA9ICdub25l
JzsKKyAgICBzb3VyY2Uuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKKworICAgIGRvY3VtZW50LmV4
ZWNDb21tYW5kKCdwYXN0ZScsIGZhbHNlLCBudWxsKTsKK30KKworc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorPGJ1dHRvbiBvbmNs
aWNrPSJydW5UZXN0KCkiPkNvcHk8L2J1dHRvbj48YnI+Cis8aWZyYW1lIGlkPSJzb3VyY2UiIG9u
bG9hZD0id2luZG93LnRlc3RSdW5uZXIgJiYgcnVuVGVzdCgpIiBzcmM9Ii4uL3Jlc291cmNlcy90
ZXh0LXBhc3RlYm9hcmQtZGF0YS50eHQiPjwvaWZyYW1lPgorPGRpdiBpZD0iZGVzdGluYXRpb24i
IGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgb25wYXN0ZT0iY2hlY2soZXZlbnQpIj48L2Rpdj4KKzwv
ZGl2PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IDJmZjNmNzNhZmEzZmU3ODcyNDQ4YWIyNTlkOTkyNjIxZThiN2YzMjcu
Ljc2NzlhZGQ2ZmMxNzQ2Mjc4NGVhZmMyNmQ5YmFlMWMzYWRjYjJhMmQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0yMjI1LDE4ICsyMjI1LDE0IEBAIGVk
aXRpbmcvcGFzdGVib2FyZC9wYXN0ZS13cmFwcGVkLWJsb2NrcXVvdGUtaW50by1ub25ibG9ja3F1
b3RlLmh0bWwgWyBGYWlsdXJlIF0KICMgRmFpbGluZyBwYXN0ZWJvYXJkIHRvIHRyaWFnZQogZWRp
dGluZy9wYXN0ZWJvYXJkLzQyNDIyOTMtMS5odG1sIFsgRmFpbHVyZSBdCiBlZGl0aW5nL3Bhc3Rl
Ym9hcmQvNTc4MDY5Ny0yLmh0bWwgWyBGYWlsdXJlIF0KLWVkaXRpbmcvcGFzdGVib2FyZC9jYW4t
cmVhZC1pbi1jb3B5LWFuZC1jdXQtZXZlbnRzLmh0bWwgWyBGYWlsdXJlIF0KIGVkaXRpbmcvcGFz
dGVib2FyZC9jbGlwYm9hcmQtY3VzdG9tRGF0YS5odG1sIFsgRmFpbHVyZSBdCiBlZGl0aW5nL3Bh
c3RlYm9hcmQvY29weS1iYWNrc2xhc2gtd2l0aC1ldWMuaHRtbCBbIEZhaWx1cmUgXQogZWRpdGlu
Zy9wYXN0ZWJvYXJkL2NvcHktaW4tcGFzc3dvcmQtZmllbGQuaHRtbCBbIEZhaWx1cmUgXQogZWRp
dGluZy9wYXN0ZWJvYXJkL2NvcHktaW5zaWRlLWgxLXByZXNlcnZlcy1oMS5odG1sIFsgRmFpbHVy
ZSBdCiBlZGl0aW5nL3Bhc3RlYm9hcmQvY29weS10ZXh0LXdpdGgtYmFja2dyb3VuZGNvbG9yLmh0
bWwgWyBGYWlsdXJlIF0KIGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXR3by1wYXN0ZWJvYXJkLXR5
cGVzLWJvdGgtd29yay5odG1sIFsgRmFpbHVyZSBdCi1lZGl0aW5nL3Bhc3RlYm9hcmQvY29weS13
aXRob3V0LXNlbGVjdGlvbi5odG1sIFsgRmFpbHVyZSBdCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0
YS10cmFuc2Zlci1pdGVtcy5odG1sIFsgRmFpbHVyZSBdCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0
YVRyYW5zZmVyLXNldERhdGEtZ2V0RGF0YS5odG1sIFsgRmFpbHVyZSBdCi1lZGl0aW5nL3Bhc3Rl
Ym9hcmQvZGF0YXRyYW5zZmVyLWdldGRhdGEtcGxhaW50ZXh0Lmh0bWwgWyBGYWlsdXJlIF0KLWVk
aXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtY29weS1wbGFpbnRleHQuaHRtbCBb
IEZhaWx1cmUgXQogZWRpdGluZy9wYXN0ZWJvYXJkL2Rpc3BsYXktYmxvY2stb24tc3BhbnMuaHRt
bCBbIEZhaWx1cmUgXQogZWRpdGluZy9wYXN0ZWJvYXJkL2VtYWNzLWN0cmwtay13aXRoLW1vdmUu
aHRtbCBbIEZhaWx1cmUgXQogZWRpdGluZy9wYXN0ZWJvYXJkL2VtYWNzLWN0cmwtay15LTAwMS5o
dG1sIFsgRmFpbHVyZSBdCkBAIC0yMjYxLDcgKzIyNTcsNiBAQCBlZGl0aW5nL3Bhc3RlYm9hcmQv
cGFzdGUtcGxhaW50ZXh0LXVzZXItc2VsZWN0LW5vbmUuaHRtbCBbIEZhaWx1cmUgXQogZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXNhbml0aXplLWNyYXNoLTEuaHRtbCBbIEZhaWx1cmUgXQogZWRp
dGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXNhbml0aXplLWNyYXNoLTIuaHRtbCBbIEZhaWx1cmUgXQog
ZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtZXZlbnRzLmh0bWwgWyBGYWlsdXJlIF0KLWVk
aXRpbmcvcGFzdGVib2FyZC9wYXN0aW5nLWVtcHR5LWh0bWwtZmFsbHMtYmFjay10by10ZXh0Lmh0
bWwgWyBGYWlsdXJlIF0KIGVkaXRpbmcvcGFzdGVib2FyZC9zbWFydC1wYXN0ZS0wMDEuaHRtbCBb
IEZhaWx1cmUgXQogZWRpdGluZy9wYXN0ZWJvYXJkL3NtYXJ0LXBhc3RlLTAwMi5odG1sIFsgRmFp
bHVyZSBdCiBlZGl0aW5nL3Bhc3RlYm9hcmQvc21hcnQtcGFzdGUtMDAzLmh0bWwgWyBGYWlsdXJl
IF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321232</attachid>
            <date>2017-09-19 12:34:28 -0700</date>
            <delta_ts>2017-09-19 14:50:07 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-176980-20170919123426.patch</filename>
            <type>text/plain</type>
            <size>33778</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzRhMjYzZjAwMzhiYTA0
OWQxMTcyMmIwNzE4NzZiY2Q4YjQzNDlmMi4uMzM2ZTUzOWFiNTQ5NTU4ZDFkMjc5MTRhY2I3NWRm
OTAxYTAyNjMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE3LTA5LTE4ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE9uIGlPUywgZ2V0RGF0YSBj
YW4ndCBnZXQgdGV4dCBzZXQgYnkgc2V0RGF0YSBkdXJpbmcgY29weSBldmVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2OTgwCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8zNDQ1MzkxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICBUaGUgYnVnIHdhcyBjYXVzZWQgYnkgaU9TIHBvcnQgbm90IGltcGxlbWVu
dGluZyBQYXN0ZWJvYXJkOjpjcmVhdGVQcml2YXRlKCkuIFJhdGhlciB0aGFuIGltcGxlbWVudGlu
ZyB0aGlzIGluIGlPUywKKyAgICAgICAgcmVwbGFjZSBpdHMgdXNlIGZvciBjb3B5ICYgcGFzdGUg
ZXZlbnRzIGJ5IFN0YXRpY1Bhc3RlYm9hcmQgV2Vuc29uIGFkZGVkIGZvciBpbnB1dCBldmVudHMu
IFRoaXMgbWFrZXMgcmVhZC13cml0ZQorICAgICAgICBwYXN0ZWJvYXJkIHBsYXRmb3JtIGFnbm9z
dGljIGFuZCBwYXZlcyB0aGUgd2F5IHRvIG1ha2Ugd3JpdGluZyB0byBwYXN0ZWJvYXJkIGluIGEg
c2luZ2xlIElQQyBpbiBXZWJLaXQyLgorCisgICAgICAgIEFsc28gZml4ZWQgYSBidWcgdGhhdCBp
T1MgcG9ydCdzIFBhc3RlYm9hcmQ6OnR5cGVzIHJldHVybmVkIHRoZSBsaXN0IG9mIGFsbCBzdXBw
b3J0ZWQgdHlwZXMgaW5zdGVhZCBvZiBvbmVzCisgICAgICAgIGFjdHVhbGx5IHByZXNlbnQgaW4g
dGhlIHBhc3RlYm9hcmQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGFkZHMgYSB2ZWN0b3Ig
b2YgdHlwZXMgdG8gU3RhdGljUGFzdGVib2FyZCB0byBtYWludGFpbiB0aGUgdHlwZSBvcmRlci4K
KworICAgICAgICBUZXN0czogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGFUcmFuc2Zlci10eXBlcy1p
cy1pbml0aWFsbHktZW1wdHktb24tY29weS5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YVRyYW5zZmVyLXR5cGVzLXBhc3RpbmctcGxhaW50ZXh0Lmh0bWwKKworICAg
ICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5z
ZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUpOiBNYWtlIFN0YXRpY1Bhc3RlYm9hcmQgaW5zdGVh
ZCBvZiBhIHByaXZhdGUgcGFzdGVib2FyZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zl
cjo6Y3JlYXRlRm9ySW5wdXRFdmVudCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hDbGlwYm9hcmRFdmVudCk6IENhbGwgbmV3bHkgYWRk
ZWQgY29tbWl0VG9QYXN0ZWJvYXJkIG9uIFN0YXRpY1Bhc3RlYm9hcmQuCisgICAgICAgICogcGxh
dGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6aXNTdGF0
aWMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3RhdGljUGFzdGVib2FyZDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0
YXRpY1Bhc3RlYm9hcmQ6OlN0YXRpY1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6U3Rh
dGljUGFzdGVib2FyZDo6aGFzRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTdGF0aWNQYXN0ZWJv
YXJkOjp0eXBlcyk6IERlbGV0ZWQuIE5vdyBzaW1wbHkgcmV0dXJucyBtX3R5cGUuCisgICAgICAg
IChXZWJDb3JlOjpTdGF0aWNQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyk6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U3RhdGljUGFzdGVib2FyZDo6Y2xlYXIpOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlN0YXRpY1Bhc3RlYm9hcmQ6OmNvbW1pdFRvUGFzdGVib2FyZCk6IEFkZGVkLgorICAg
ICAgICAoaXNUeXBlKTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vU3RhdGljUGFzdGVib2Fy
ZC5oOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6aXNTdGF0aWMgY29uc3QpOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVQcml2YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlUGFzdGVib2FyZCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJv
YXJkOjpjcmVhdGVQcml2YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmQ6OndyaXRlUGFzdGVib2FyZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphZGRIVE1M
Q2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6dHlwZXMpOiBSZXR1cm4gdGhlIGFjdHVhbCBsaXN0IG9mIHR5cGVzIGluIHRoZSBwYXN0ZWJv
YXJkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlUHJpdmF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVBhc3RlYm9hcmQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OmNyZWF0ZVByaXZhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZDo6d3JpdGVQYXN0ZWJvYXJkKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93cGUv
UGFzdGVib2FyZFdQRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVQ
cml2YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlUGFz
dGVib2FyZCk6IERlbGV0ZWQuCisKIDIwMTctMDktMTggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hv
cnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBtaW4oKSBhbmQgbWF4KCkgaW4gY2Fs
YygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDRhZTE3NzkzZDMzNTM2NzYzNDE1YmIxOGNjYjY1NmFlNjU0ZTA5MGYu
Ljg2ZTY5NmNlOWFhNmU3NWRlNDQ4NjE0N2UzNjk2YWJlN2QxNzI4ODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTctMDktMTggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgT24gaU9TLCBnZXREYXRhIGNhbid0IGdldCB0ZXh0IHNldCBieSBzZXREYXRh
IGR1cmluZyBjb3B5IGV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzY5ODAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0NDUzOTE1PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvcHkpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisKIDIwMTctMDkt
MTggIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gVXBz
dHJlYW0gc2FuZGJveC1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA1MzkyZDkxZDQwMDI2OTZlZjQxZjIwYmM3NTVh
YWVjZTlhMzcxOTFkLi5kYzQ1N2ZiYmI1MjNlY2RkY2NkYWFhYWQ5OGE0ZjQwODMzOGFkNjYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDktMTgg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgT24gaU9TLCBnZXRE
YXRhIGNhbid0IGdldCB0ZXh0IHNldCBieSBzZXREYXRhIGR1cmluZyBjb3B5IGV2ZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY5ODAKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM0NDUzOTE1PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgor
ICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb3B5KTogRGVsZXRlZC4KKwogMjAxNy0w
OS0xOCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gVXBz
dHJlYW0gbWlzY2VsbGFuZW91cyBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IDNkMzEzZTE5NzVlNjZhNDBkOWIyNDhlMTRi
MjRhMWI3YjhhOWY2ZjEuLjU3YmU3Yzg0MzEzODMxMjc0MTI0MzUxYzk3YmQ2MDZmMWJiMmE1MmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC03NCw3ICs3NCw3IEBAIERhdGFU
cmFuc2Zlcjo6RGF0YVRyYW5zZmVyKFN0b3JlTW9kZSBtb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4gcGFzdGVib2FyCiAKIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3Jl
YXRlRm9yQ29weUFuZFBhc3RlKFN0b3JlTW9kZSBtb2RlKQogewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFUcmFuc2Zlcihtb2RlLCBtb2RlID09IFN0b3JlTW9kZTo6UmVhZFdyaXRlID8g
UGFzdGVib2FyZDo6Y3JlYXRlUHJpdmF0ZSgpIDogUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFu
ZFBhc3RlKCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIobW9kZSwg
bW9kZSA9PSBTdG9yZU1vZGU6OlJlYWRXcml0ZSA/IHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFz
dGVib2FyZD4oKSA6IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpKSk7CiB9CiAK
IERhdGFUcmFuc2Zlcjo6fkRhdGFUcmFuc2ZlcigpCkBAIC0yMjAsOCArMjIwLDEwIEBAIGJvb2wg
RGF0YVRyYW5zZmVyOjpoYXNTdHJpbmdPZlR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogCiBSZWY8
RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQoY29uc3QgU3Ry
aW5nJiBwbGFpblRleHQsIGNvbnN0IFN0cmluZyYgaHRtbFRleHQpCiB7Ci0gICAgVHlwZVRvU3Ry
aW5nTWFwIHR5cGVUb1N0cmluZ01hcCB7IHsgQVNDSUlMaXRlcmFsKCJ0ZXh0L3BsYWluIiksIHBs
YWluVGV4dCB9LCB7IEFTQ0lJTGl0ZXJhbCgidGV4dC9odG1sIiksIGh0bWxUZXh0IH0gfTsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoU3RvcmVNb2RlOjpSZWFkb25seSwg
U3RhdGljUGFzdGVib2FyZDo6Y3JlYXRlKFdURk1vdmUodHlwZVRvU3RyaW5nTWFwKSksIFR5cGU6
OklucHV0RXZlbnQpKTsKKyAgICBhdXRvIHBhc3RlYm9hcmQgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0
YXRpY1Bhc3RlYm9hcmQ+KCk7CisgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoQVNDSUlMaXRl
cmFsKCJ0ZXh0L3BsYWluIiksIHBsYWluVGV4dCk7CisgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJp
bmcoQVNDSUlMaXRlcmFsKCJ0ZXh0L2h0bWwiKSwgaHRtbFRleHQpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IERhdGFUcmFuc2ZlcihTdG9yZU1vZGU6OlJlYWRvbmx5LCBXVEZNb3ZlKHBhc3Rl
Ym9hcmQpLCBUeXBlOjpJbnB1dEV2ZW50KSk7CiB9CiAKICNpZiAhRU5BQkxFKERSQUdfU1VQUE9S
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBlZmNmNzY3MzMxMmVjNDhmZThjZDA4
OTkzODgwMjAxYzRjYmYyZjIyLi4zNjhjMjQ0YzNiNzhjMGFjZDE5ZDNlMWMwZmM3YzM2ZjBjNDc0
ZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC04NSw2ICs4NSw3IEBACiAjaW5j
bHVkZSAiU2ltcGxpZnlNYXJrdXBDb21tYW5kLmgiCiAjaW5jbHVkZSAiU3BlbGxDaGVja2VyLmgi
CiAjaW5jbHVkZSAiU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oIgorI2luY2x1ZGUgIlN0YXRp
Y1Bhc3RlYm9hcmQuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlICJU
ZWxlcGhvbmVOdW1iZXJEZXRlY3Rvci5oIgogI2luY2x1ZGUgIlRleHQuaCIKQEAgLTM0NSw3ICsz
NDYsNyBAQCBzdGF0aWMgYm9vbCBkaXNwYXRjaENsaXBib2FyZEV2ZW50KFJlZlB0cjxFbGVtZW50
PiYmIHRhcmdldCwgY29uc3QgQXRvbWljU3RyaW5nJgogICAgIGlmIChub0RlZmF1bHRQcm9jZXNz
aW5nICYmIHN0b3JlTW9kZSA9PSBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZFdyaXRlKSB7
CiAgICAgICAgIGF1dG8gcGFzdGVib2FyZCA9IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQ
YXN0ZSgpOwogICAgICAgICBwYXN0ZWJvYXJkLT5jbGVhcigpOwotICAgICAgICBwYXN0ZWJvYXJk
LT53cml0ZVBhc3RlYm9hcmQoZGF0YVRyYW5zZmVyLT5wYXN0ZWJvYXJkKCkpOworICAgICAgICBk
b3duY2FzdDxTdGF0aWNQYXN0ZWJvYXJkPihkYXRhVHJhbnNmZXItPnBhc3RlYm9hcmQoKSkuY29t
bWl0VG9QYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKTsKICAgICB9CiAKICAgICBkYXRhVHJhbnNmZXIt
Pm1ha2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQu
aAppbmRleCA2ZWUwODc2ZjBiODIxOGMxMjQzYjBjMjgxMWVjNjE1NzdmOWU2ZWY5Li5mNGRhZDJi
ZjE5ODZjOTNlYTBmYWQ0MTgzOWVmN2M0OWE5M2QxMmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZC5oCkBAIC0xNjMsNyArMTYzLDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IGNyZWF0ZUZv
ckNvcHlBbmRQYXN0ZSgpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4g
Y3JlYXRlUHJpdmF0ZSgpOyAvLyBUZW1wb3JhcnkgcGFzdGVib2FyZC4gQ2FuIHB1dCBkYXRhIG9u
IHRoaXMgYW5kIHRoZW4gd3JpdGUgdG8gYW5vdGhlciBwYXN0ZWJvYXJkIHdpdGggd3JpdGVQYXN0
ZWJvYXJkLgorCisgICAgdmlydHVhbCBib29sIGlzU3RhdGljKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBoYXNEYXRhKCk7CiAgICAgdmlydHVhbCBWZWN0b3I8
U3RyaW5nPiB0eXBlcygpOwpAQCAtMTg3LDcgKzE4OCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgd3JpdGVNYXJrdXAoY29uc3QgU3RyaW5nJiBtYXJrdXApOwogICAgIGVudW0gU21hcnRS
ZXBsYWNlT3B0aW9uIHsgQ2FuU21hcnRSZXBsYWNlLCBDYW5ub3RTbWFydFJlcGxhY2UgfTsKICAg
ICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5n
JiwgU21hcnRSZXBsYWNlT3B0aW9uKTsgLy8gRklYTUU6IFR3byBzZXBhcmF0ZSBmdW5jdGlvbnMg
d291bGQgYmUgY2xlYXJlciB0aGFuIG9uZSBmdW5jdGlvbiB3aXRoIGFuIGFyZ3VtZW50LgotICAg
IHZpcnR1YWwgdm9pZCB3cml0ZVBhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZCYgc291cmNlUGFz
dGVib2FyZCk7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gY3JlYXRlRm9yRHJhZ0FuZERyb3Ao
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVn
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXgg
ZDdhYjlhNmZjOTQ3MTc3ZWM1YzdjZmI5MDNlMjU4NWFlMDdjMmUxMi4uZDBhMzVjZGJjY2RkN2Nh
N2EzYjZiN2VjNWI2MzhlYWRmZGQ3MDJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTY2LDcgKzY2LDYgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBsb25nIGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIGxvbmcgc2V0
VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgbG9uZyBjb3B5KGNvbnN0IFN0cmlu
ZyYgZnJvbVBhc3RlYm9hcmQsIGNvbnN0IFN0cmluZyYgdG9QYXN0ZWJvYXJkKSA9IDA7CiAgICAg
dmlydHVhbCBsb25nIHNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAg
IHZpcnR1YWwgbG9uZyBzZXRQYXRobmFtZXNGb3JUeXBlKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgPSAwOwogICAgIHZpcnR1YWwgbG9uZyBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3Rl
Ym9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAK
aW5kZXggZGMzNGFlZWU4ZGU0MjdmMWM5YjVhM2Y0Yjk5MzlhMDIyZWJlMWJmMC4uZTBhMjM1M2Y4
MzA1ODJkNzQ3Y2Y2OTc2NTYwYTM3N2I0YjkwMTBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKQEAgLTI4LDM0ICsyOCw1MyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0ZDo6dW5pcXVlX3B0cjxTdGF0aWNQYXN0ZWJvYXJkPiBTdGF0aWNQ
YXN0ZWJvYXJkOjpjcmVhdGUoVHlwZVRvU3RyaW5nTWFwJiYgdHlwZVRvU3RyaW5nTWFwKQorU3Rh
dGljUGFzdGVib2FyZDo6U3RhdGljUGFzdGVib2FyZCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4oV1RGTW92ZSh0eXBlVG9TdHJpbmdNYXApKTsKIH0K
IAotU3RhdGljUGFzdGVib2FyZDo6U3RhdGljUGFzdGVib2FyZChUeXBlVG9TdHJpbmdNYXAmJiB0
eXBlVG9TdHJpbmdNYXApCi0gICAgOiBtX3R5cGVUb1N0cmluZ01hcCh0eXBlVG9TdHJpbmdNYXAp
Citib29sIFN0YXRpY1Bhc3RlYm9hcmQ6Omhhc0RhdGEoKQogeworICAgIHJldHVybiAhbV9zdHJp
bmdDb250ZW50cy5pc0VtcHR5KCk7CiB9CiAKLWJvb2wgU3RhdGljUGFzdGVib2FyZDo6aGFzRGF0
YSgpCitTdHJpbmcgU3RhdGljUGFzdGVib2FyZDo6cmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5
cGUpCiB7Ci0gICAgcmV0dXJuICFtX3R5cGVUb1N0cmluZ01hcC5pc0VtcHR5KCk7CisgICAgaWYg
KCFtX3N0cmluZ0NvbnRlbnRzLmNvbnRhaW5zKHR5cGUpKQorICAgICAgICByZXR1cm4geyB9Owor
ICAgIHJldHVybiBtX3N0cmluZ0NvbnRlbnRzLmdldCh0eXBlKTsKIH0KIAotVmVjdG9yPFN0cmlu
Zz4gU3RhdGljUGFzdGVib2FyZDo6dHlwZXMoKQordm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0
ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAg
VmVjdG9yPFN0cmluZz4gYWxsVHlwZXMobV90eXBlVG9TdHJpbmdNYXAuc2l6ZSgpKTsKLSAgICBm
b3IgKGF1dG8mIHR5cGUgOiBtX3R5cGVUb1N0cmluZ01hcC5rZXlzKCkpCi0gICAgICAgIGFsbFR5
cGVzLmFwcGVuZCh0eXBlKTsKLSAgICByZXR1cm4gYWxsVHlwZXM7CisgICAgYXV0byByZXN1bHQg
PSBtX3N0cmluZ0NvbnRlbnRzLnNldCh0eXBlLCB2YWx1ZSk7CisgICAgaWYgKHJlc3VsdC5pc05l
d0VudHJ5KQorICAgICAgICBtX3R5cGVzLmFwcGVuZCh0eXBlKTsKKyAgICBlbHNlIHsKKyAgICAg
ICAgbV90eXBlcy5yZW1vdmVGaXJzdCh0eXBlKTsKKyAgICAgICAgQVNTRVJUKCFtX3R5cGVzLmNv
bnRhaW5zKHR5cGUpKTsKKyAgICAgICAgbV90eXBlcy5hcHBlbmQodHlwZSk7CisgICAgfQogfQog
Ci1TdHJpbmcgU3RhdGljUGFzdGVib2FyZDo6cmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUp
Cit2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OmNsZWFyKCkKIHsKLSAgICBpZiAoIW1fdHlwZVRvU3Ry
aW5nTWFwLmNvbnRhaW5zKHR5cGUpKQotICAgICAgICByZXR1cm4geyB9OwotICAgIHJldHVybiBt
X3R5cGVUb1N0cmluZ01hcC5nZXQodHlwZSk7CisgICAgbV9zdHJpbmdDb250ZW50cy5jbGVhcigp
OworICAgIG1fdHlwZXMuY2xlYXIoKTsKK30KKwordm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjpjbGVh
cihjb25zdCBTdHJpbmcmIHR5cGUpCit7CisgICAgaWYgKCFtX3N0cmluZ0NvbnRlbnRzLnJlbW92
ZSh0eXBlKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fdHlwZXMucmVtb3ZlRmlyc3QodHlwZSk7
CisgICAgQVNTRVJUKCFtX3R5cGVzLmNvbnRhaW5zKHR5cGUpKTsKK30KKworLy8gRklYTUU6IENv
cHkgdGhlIGVudGlyZSBTdGF0aWNQYXN0ZWJvYXJkIHRvIFVJUHJvY2VzcyBpbnN0ZWFkIG9mIHdy
aXRpbmcgZWFjaCBzdHJpbmcuCit2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OmNvbW1pdFRvUGFzdGVi
b2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkKQoreworICAgIGZvciAoYXV0byYgdHlwZSA6IG1f
dHlwZXMpCisgICAgICAgIHBhc3RlYm9hcmQud3JpdGVTdHJpbmcodHlwZSwgbV9zdHJpbmdDb250
ZW50cy5nZXQodHlwZSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQ
YXN0ZWJvYXJkLmgKaW5kZXggZGU3MmMwNDgyZWY4ZGEwNTQxYzUxMmE4MWEzZmIxM2NjMWJmYjMx
Ni4uM2ExYzAzOTY0NjIyMzI1N2QwMDg1OTIxMzFiOWI3MDY3MjQ0MjkzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaApAQCAtMjcsMjUgKzI3LDI2IEBACiAK
ICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gVHlw
ZVRvU3RyaW5nTWFwOwotCiBjbGFzcyBTdGF0aWNQYXN0ZWJvYXJkIGZpbmFsIDogcHVibGljIFBh
c3RlYm9hcmQgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U3RhdGljUGFz
dGVib2FyZD4gY3JlYXRlKFR5cGVUb1N0cmluZ01hcCYmKTsKKyAgICBTdGF0aWNQYXN0ZWJvYXJk
KCk7CisKKyAgICB2b2lkIGNvbW1pdFRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJik7CiAKLSAgICBT
dGF0aWNQYXN0ZWJvYXJkKFR5cGVUb1N0cmluZ01hcCYmKTsKKyAgICBib29sIGlzU3RhdGljKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCBoYXNEYXRhKCkgZmluYWw7
Ci0gICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoKSBmaW5hbDsKKyAgICBWZWN0b3I8U3RyaW5nPiB0
eXBlcygpIGZpbmFsIHsgcmV0dXJuIG1fdHlwZXM7IH0KICAgICBTdHJpbmcgcmVhZFN0cmluZyhj
b25zdCBTdHJpbmcmIHR5cGUpIGZpbmFsOwogCi0gICAgdm9pZCB3cml0ZVN0cmluZyhjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KLSAgICB2b2lkIGNsZWFyKCkgZmluYWwg
eyB9Ci0gICAgdm9pZCBjbGVhcihjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KKyAgICB2b2lkIHdy
aXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKSBmaW5hbDsK
KyAgICB2b2lkIGNsZWFyKCkgZmluYWw7CisgICAgdm9pZCBjbGVhcihjb25zdCBTdHJpbmcmIHR5
cGUpIGZpbmFsOwogCiAgICAgdm9pZCByZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmKSBmaW5hbCB7
IH0KICAgICB2b2lkIHJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImKSBmaW5hbCB7IH0K
QEAgLTU5LDE0ICs2MCwxOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdyaXRlTWFya3VwKGNvbnN0
IFN0cmluZyYpIGZpbmFsIHsgfQogICAgIHZvaWQgd3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5n
JiwgU21hcnRSZXBsYWNlT3B0aW9uKSBmaW5hbCB7IH0KLSAgICB2b2lkIHdyaXRlUGFzdGVib2Fy
ZChjb25zdCBQYXN0ZWJvYXJkJikgZmluYWwgeyB9CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JU
KQogICAgIHZvaWQgc2V0RHJhZ0ltYWdlKERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQmKSBmaW5h
bCB7IH0KICNlbmRpZgogCiBwcml2YXRlOgotICAgIFR5cGVUb1N0cmluZ01hcCBtX3R5cGVUb1N0
cmluZ01hcDsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX3R5cGVzOworICAgIEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+IG1fc3RyaW5nQ29udGVudHM7CiB9OwogCiB9CisKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViQ29yZTo6U3RhdGljUGFzdGVib2FyZCkKKyAgICBzdGF0aWMgYm9vbCBp
c1R5cGUoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZCYgcGFzdGVib2FyZCkgeyByZXR1cm4gcGFz
dGVib2FyZC5pc1N0YXRpYygpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKaW5kZXggNzM3ZDhk
NDE0ZDJkNTQ5MTA2Y2EyYTE5OGQzM2Q1MzRlMjNlZDg5MC4uYmQ5MmEyNzExNDhlZmZkYThkMTA0
ZTljMmVkNjdhOGMzYjJhN2ZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkR3RrLmNwcApAQCAtNTAsMTEgKzUwLDYgQEAgc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckdsb2JhbFNlbGVjdGlvbigpCiAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oIlBSSU1BUlkiKTsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZVByaXZhdGUoKQotewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KFNlbGVjdGlvbkRhdGE6OmNyZWF0ZSgp
KTsKLX0KLQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVi
b2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoKQogewpAQCAtMTk5LDI5ICsx
OTQsNiBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50
JiBwYXN0ZWJvYXJkQ29udGVudCkKICAgICB3cml0ZVRvQ2xpcGJvYXJkKCk7CiB9CiAKLXZvaWQg
UGFzdGVib2FyZDo6d3JpdGVQYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmQmIHNvdXJjZVBhc3Rl
Ym9hcmQpCi17Ci0gICAgY29uc3QgYXV0byYgc291cmNlRGF0YU9iamVjdCA9IHNvdXJjZVBhc3Rl
Ym9hcmQuc2VsZWN0aW9uRGF0YSgpOwotICAgIG1fc2VsZWN0aW9uRGF0YS0+Y2xlYXJBbGwoKTsK
LQotICAgIGlmIChzb3VyY2VEYXRhT2JqZWN0Lmhhc1RleHQoKSkKLSAgICAgICAgbV9zZWxlY3Rp
b25EYXRhLT5zZXRUZXh0KHNvdXJjZURhdGFPYmplY3QudGV4dCgpKTsKLSAgICBpZiAoc291cmNl
RGF0YU9iamVjdC5oYXNNYXJrdXAoKSkKLSAgICAgICAgbV9zZWxlY3Rpb25EYXRhLT5zZXRNYXJr
dXAoc291cmNlRGF0YU9iamVjdC5tYXJrdXAoKSk7Ci0gICAgaWYgKHNvdXJjZURhdGFPYmplY3Qu
aGFzVVJMKCkpCi0gICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0VVJMKHNvdXJjZURhdGFPYmpl
Y3QudXJsKCksIHNvdXJjZURhdGFPYmplY3QudXJsTGFiZWwoKSk7Ci0gICAgaWYgKHNvdXJjZURh
dGFPYmplY3QuaGFzVVJJTGlzdCgpKQotICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldFVSSUxp
c3Qoc291cmNlRGF0YU9iamVjdC51cmlMaXN0KCkpOwotICAgIGlmIChzb3VyY2VEYXRhT2JqZWN0
Lmhhc0ltYWdlKCkpCi0gICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0SW1hZ2Uoc291cmNlRGF0
YU9iamVjdC5pbWFnZSgpKTsKLSAgICBpZiAoc291cmNlRGF0YU9iamVjdC5oYXNVbmtub3duVHlw
ZURhdGEoKSkgewotICAgICAgICBmb3IgKGF1dG8mIGl0IDogc291cmNlRGF0YU9iamVjdC51bmtu
b3duVHlwZXMoKSkKLSAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0VW5rbm93blR5cGVE
YXRhKGl0LmtleSwgaXQudmFsdWUpOwotICAgIH0KLQotICAgIHdyaXRlVG9DbGlwYm9hcmQoKTsK
LX0KLQogdm9pZCBQYXN0ZWJvYXJkOjpjbGVhcigpCiB7CiAgICAgLy8gV2UgZG8gbm90IGNsZWFy
IGZpbGVuYW1lcy4gQWNjb3JkaW5nIHRvIHRoZSBzcGVjOiAiVGhlIGNsZWFyRGF0YSgpIG1ldGhv
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1Mu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCA0
MTdlMjkzNTgxMTNjNDBhM2NhZWU0MjYxMDY4NTAxYzAzM2M3ZDU5Li43NmY0Mzk3ZTM4MzdlMDc0
YmIxYTgzMmYwMDBlM2E1ZWQ5MDU2NmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGFzdGVib2FyZElPUy5tbQpAQCAtMTMzLDExICsxMzMsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihjaGFuZ2VDb3VudEZvclBhc3RlYm9hcmQo
KSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVQ
cml2YXRlKCkKLXsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihjaGFu
Z2VDb3VudEZvclBhc3RlYm9hcmQoKSk7Ci19Ci0KIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29u
c3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiB7CiAgICAgcGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFzdGVib2FyZChjb250ZW50LCBt
X3Bhc3RlYm9hcmROYW1lKTsKQEAgLTE3NCwxMCArMTY5LDYgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZVRydXN0d29ydGh5V2ViVVJMc1Bib2FyZFR5cGUoY29uc3QgUGFzdGVib2FyZFVSTCYpCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVQYXN0
ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmQmKQotewotfQotCiBib29sIFBhc3RlYm9hcmQ6OmNhblNt
YXJ0UmVwbGFjZSgpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDA0LDcgKzM5NSw5IEBAIFN0
cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkKIHN0YXRpYyB2
b2lkIGFkZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShMaXN0SGFzaFNldDxTdHJpbmc+
JiByZXN1bHRUeXBlcywgTlNTdHJpbmcgKmNvY29hVHlwZSkKIHsKICAgICAvLyBVVEkgbWF5IG5v
dCBkbyB0aGVzZSByaWdodCwgc28gbWFrZSBzdXJlIHdlIGdldCB0aGUgcmlnaHQsIHByZWRpY3Rh
YmxlIHJlc3VsdC4KLSAgICBpZiAoW2NvY29hVHlwZSBpc0VxdWFsVG9TdHJpbmc6KE5TU3RyaW5n
ICopa1VUVHlwZVRleHRdKSB7CisgICAgaWYgKFtjb2NvYVR5cGUgaXNFcXVhbFRvU3RyaW5nOihO
U1N0cmluZyAqKWtVVFR5cGVQbGFpblRleHRdCisgICAgICAgIHx8IFtjb2NvYVR5cGUgaXNFcXVh
bFRvU3RyaW5nOihOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0XQorICAgICAgICB8fCBb
Y29jb2FUeXBlIGlzRXF1YWxUb1N0cmluZzooTlNTdHJpbmcgKilrVVRUeXBlVVRGMTZQbGFpblRl
eHRdKSB7CiAgICAgICAgIHJlc3VsdFR5cGVzLmFkZChBU0NJSUxpdGVyYWwoInRleHQvcGxhaW4i
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MzIsNyArNDI1LDggQEAgdm9pZCBQYXN0
ZWJvYXJkOjp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0
YSkKIAogVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlwZXMoKQogewotICAgIE5TQXJyYXkg
KnR5cGVzID0gc3VwcG9ydGVkV2ViQ29udGVudFBhc3RlYm9hcmRUeXBlcygpOworICAgIFZlY3Rv
cjxTdHJpbmc+IGNvY29hVHlwZXM7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpLT5nZXRUeXBlcyhjb2NvYVR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lKTsKIAog
ICAgIC8vIEVuZm9yY2UgY2hhbmdlQ291bnQgb3Vyc2VsdmVzIGZvciBzZWN1cml0eS4gV2UgY2hl
Y2sgYWZ0ZXIgcmVhZGluZyBpbnN0ZWFkIG9mIGJlZm9yZSB0byBiZQogICAgIC8vIHN1cmUgaXQg
ZG9lc24ndCBjaGFuZ2UgYmV0d2VlbiBvdXIgdGVzdGluZyB0aGUgY2hhbmdlIGNvdW50IGFuZCBh
Y2Nlc3NpbmcgdGhlIGRhdGEuCkBAIC00NDAsMTEgKzQzNCw4IEBAIFZlY3RvcjxTdHJpbmc+IFBh
c3RlYm9hcmQ6OnR5cGVzKCkKICAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CiAKICAg
ICBMaXN0SGFzaFNldDxTdHJpbmc+IHJlc3VsdDsKLSAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW3R5
cGVzIGNvdW50XTsKLSAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7
Ci0gICAgICAgIE5TU3RyaW5nICp0eXBlID0gW3R5cGVzIG9iamVjdEF0SW5kZXg6aV07Ci0gICAg
ICAgIGFkZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShyZXN1bHQsIHR5cGUpOwotICAg
IH0KKyAgICBmb3IgKGF1dG8gY29jb2FUeXBlIDogY29jb2FUeXBlcykKKyAgICAgICAgYWRkSFRN
TENsaXBib2FyZFR5cGVzRm9yQ29jb2FUeXBlKHJlc3VsdCwgY29jb2FUeXBlKTsKIAogICAgIFZl
Y3RvcjxTdHJpbmc+IHZlY3RvcjsKICAgICBjb3B5VG9WZWN0b3IocmVzdWx0LCB2ZWN0b3IpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCBhODhj
NWQ5OGI0NGZiOTMzZmYwYTZlMzUxNDY3NmYwZGExOGM4YzgzLi5kYWE5ZjZhYzMyMmMyYTYzZTQ2
YTNmYjU5M2NmZjcwYTFlODlmMGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGFzdGVib2FyZE1hYy5tbQpAQCAtMTM4LDExICsxMzgsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKICNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwb3AKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3Rl
Ym9hcmQ6OmNyZWF0ZVByaXZhdGUoKQotewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBh
c3RlYm9hcmQ+KHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+dW5p
cXVlTmFtZSgpKTsKLX0KLQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiBzdGQ6OnVuaXF1ZV9w
dHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoKQogewpAQCAt
Mjk4LDExICsyOTMsNiBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJ
bWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgIHdyaXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2ht
ZW50KGZpbGVXcmFwcGVyKHBhc3RlYm9hcmRJbWFnZSksIG1fcGFzdGVib2FyZE5hbWUsIG1fY2hh
bmdlQ291bnQpOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OndyaXRlUGFzdGVib2FyZChjb25zdCBQ
YXN0ZWJvYXJkJiBwYXN0ZWJvYXJkKQotewotICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNvcHkocGFzdGVib2FyZC5tX3Bhc3Rl
Ym9hcmROYW1lLCBtX3Bhc3RlYm9hcmROYW1lKTsKLX0KLQogYm9vbCBQYXN0ZWJvYXJkOjpjYW5T
bWFydFJlcGxhY2UoKQogewogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IDcyZWJiNmZjYmNlMjI5
NTMwMDI3N2RmNjIyOTcyYWVlMGNiZjkwNGIuLjcyYWVjZjY3YjE5ZDU1OTIzODhjMDg3NGQ4NmUz
NmViOTZjNjJiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHAKQEAgLTk5LDEyICs5OSw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogICAgIHJldHVybiBwYXN0ZWJvYXJk
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlUHJp
dmF0ZSgpCi17Ci0gICAgLy8gV2luZG93cyBoYXMgbm8gIlByaXZhdGUgcGFzdGVib2FyZCIgY29u
Y2VwdC4KLSAgICByZXR1cm4gY3JlYXRlRm9yQ29weUFuZFBhc3RlKCk7Ci19Ci0KICNpZiBFTkFC
TEUoRFJBR19TVVBQT1JUKQogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6
OmNyZWF0ZUZvckRyYWdBbmREcm9wKCkKIHsKQEAgLTc2MCwxMSArNzU0LDYgQEAgdm9pZCBQYXN0
ZWJvYXJkOjp3cml0ZUltYWdlKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYpCiAgICAgfQogfQogCi12b2lkIFBhc3RlYm9hcmQ6OndyaXRlUGFzdGVib2FyZChjb25z
dCBQYXN0ZWJvYXJkJiBzb3VyY2VQYXN0ZWJvYXJkKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KIGJvb2wgUGFzdGVib2FyZDo6Y2FuU21hcnRSZXBsYWNlKCkKIHsgCiAgICAgcmV0dXJu
IDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoV2ViU21hcnRQYXN0ZUZvcm1hdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvUGFzdGVib2FyZFdQRS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvUGFzdGVib2FyZFdQRS5jcHAKaW5kZXggMmM3ODAw
ODNmZDA5NWZkNzRkOTA5ZGVmOTMzMzU0NDA3NzUyMzdiNi4uZGE0NzZhNjk0MTY1NzVmNDhmMzA2
OGE1MzA4ODdhYjYzYjU1ZTdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d3BlL1Bhc3RlYm9hcmRXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9Q
YXN0ZWJvYXJkV1BFLmNwcApAQCAtMzcsMTEgKzM3LDYgQEAgc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCiAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZVByaXZhdGUoKQotewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCk7Ci19Ci0KIFBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoKQog
ewogfQpAQCAtMTI3LDggKzEyMiw0IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRleHQo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24pCiAgICAgd3JpdGVTdHJpbmco
InRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIHRleHQpOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6
OndyaXRlUGFzdGVib2FyZChjb25zdCBQYXN0ZWJvYXJkJikKLXsKLX0KLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCA2OWI3Zjk0
NzkxYjc3YTc2YzUzNWEwZDlkNmNjN2ZhMWEwMGJjODBiLi5kZWYzNTVkNGYyZTg4YmEzMjQ1OTlm
MWI4NjIxODE2ZTBmNTdiMGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApA
QCAtMjAyLDEzICsyMDIsNiBAQCBTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzdHJpbmdG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0CiAgICAgcmV0dXJuIHZh
bHVlOwogfQogCi1sb25nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29weShjb25zdCBTdHJpbmcm
IGZyb21QYXN0ZWJvYXJkLCBjb25zdCBTdHJpbmcmIHRvUGFzdGVib2FyZCkKLXsKLSAgICB1aW50
NjRfdCBuZXdDaGFuZ2VDb3VudDsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpQYXN0ZWJvYXJkQ29weShmcm9tUGFzdGVib2FyZCwgdG9QYXN0ZWJvYXJkKSwgTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6UGFzdGVib2FyZENvcHk6OlJlcGx5KG5ld0NoYW5nZUNvdW50
KSwgMCk7Ci0gICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50OwotfQotCiBsb25nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y2hhbmdlQ291bnQoY29uc3QgV1RGOjpTdHJpbmcgJnBhc3RlYm9hcmROYW1l
KQogewogICAgIHVpbnQ2NF90IGNoYW5nZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCmluZGV4IGQ0OGRiYzMyNzFlNTI1ZTY2YTExOTI0ZTMwMDlkZTZkNzhhNGI5MzQuLjhiYzkz
ODFiZDYxMThjMTFlMWIwN2MzMzNjYmMxZWJkMWUzMWEwNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKQEAgLTgyLDcgKzgyLDYgQEAgcHJpdmF0ZToKIAogICAgIGxvbmcgYWRkVHlw
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgbG9uZyBzZXRUeXBlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKLSAgICBsb25nIGNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCwgY29u
c3QgU3RyaW5nJiB0b1Bhc3RlYm9hcmQpIG92ZXJyaWRlOwogICAgIGxvbmcgc2V0QnVmZmVyRm9y
VHlwZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBsb25nIHNldFBh
dGhuYW1lc0ZvclR5cGUoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBs
b25nIHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGRlMTdkZmMzNWE1ZjcxYmQ1YzJiYzE5ZDE3MjVjNzM3
NDZkYWI1NWIuLmI1YjUyMmIxZTE2OGM0MDEzMTNjZGJmYWJiZTcxZmRlMWNhNzFjYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC04MSw3ICs4MSw2IEBAIHByaXZhdGU6CiAKICAg
ICBsb25nIGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIGxvbmcgc2V0VHlwZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgbG9uZyBjb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBh
c3RlYm9hcmQsIGNvbnN0IFN0cmluZyYgdG9QYXN0ZWJvYXJkKSBvdmVycmlkZTsKICAgICBsb25n
IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAg
ICAgbG9uZyBzZXRQYXRobmFtZXNGb3JUeXBlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3Zl
cnJpZGU7CiAgICAgbG9uZyBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IDg0OWRkYjY1M2M4NjE1ZGU3
YTI3YmU5NTQ1NzZkZTk0MWZhMmUyZGIuLmE2NjU1MTgxMTFkNWI1MDg1N2Q4MTViZTJiNTc4YTRj
N2M5ZGU4YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTEyOSwxMSArMTI5
LDYgQEAgU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c3RyaW5nRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdAogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9h
cmQocGFzdGVib2FyZE5hbWUpLnN0cmluZ0ZvclR5cGUocGFzdGVib2FyZFR5cGUpOwogfQogCi1s
b25nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJv
YXJkLCBjb25zdCBTdHJpbmcmIHRvUGFzdGVib2FyZCkKLXsKLSAgICByZXR1cm4gUGxhdGZvcm1Q
YXN0ZWJvYXJkKHRvUGFzdGVib2FyZCkuY29weShmcm9tUGFzdGVib2FyZCk7Ci19Ci0KIGxvbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcgJnBhc3RlYm9h
cmROYW1lKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUp
LmNoYW5nZUNvdW50KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYmY1YTA1OGQyMWMxN2M5MzNkNDJjMGE2ZDk5ZGNiOGM1
Nzg1MzI5OS4uMmNmNzZiNTc5NWM1MDA2YWQ2NDE1ZDBkYTIzZjhlYjU5NGZjNjAwMyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIzIEBACisyMDE3LTA5LTE4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgorCisgICAgICAgIE9uIGlPUywgZ2V0RGF0YSBjYW4ndCBnZXQgdGV4dCBzZXQgYnkgc2V0
RGF0YSBkdXJpbmcgY29weSBldmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc2OTgwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDQ1MzkxNT4K
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBZGRlZCByZWdy
ZXNzaW9uIHRlc3RzIHRvIG1ha2Ugc3VyZSBkYXRhVHJhbnNmZXIudHlwZXMgcmV0dXJucyBhbiBl
bXB0eSBsaXN0IHdoZW4gd3JpdGluZyB0byBhIHBhc3RlYm9hcmQgKGNvcHkpLAorICAgICAgICBh
bmQgZG9lc24ndCBjb250YWluIGltYWdlIHR5cGVzIHdoZW4gcGFzdGluZyBwbGFpbiB0ZXh0LiBV
bmZvcnR1bmF0ZWx5LCBwYXN0aW5nIGltYWdlIGRvZXMgcmVzdWx0IGluIHBsYWluIHRleHQKKyAg
ICAgICAgY29udGVudCBiZWluZyBwcmVzZW50IGluIHRoZSBwYXN0ZWJvYXJkIGluIHRoZSBmb3Jt
IG9mIFVSTCBzbyB3ZSBjYW4ndCB0ZXN0IHRoYXQgc2NlbmFyaW8uCisKKyAgICAgICAgQWxzbyBy
ZW1vdmVkIGZhaWxpbmcgZXhwZWN0YXRpb25zIGZyb20gYSBudW1iZXIgb2YgdGVzdHMgdGhhdCBh
cmUgbm93IHBhc3Npbmcgb24gaU9TLgorCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2Rh
dGFUcmFuc2Zlci10eXBlcy1pcy1pbml0aWFsbHktZW1wdHktb24tY29weS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXItdHlwZXMt
aXMtaW5pdGlhbGx5LWVtcHR5LW9uLWNvcHkuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGlu
Zy9wYXN0ZWJvYXJkL2RhdGFUcmFuc2Zlci10eXBlcy1wYXN0aW5nLXBsYWludGV4dC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXIt
dHlwZXMtcGFzdGluZy1wbGFpbnRleHQuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
aW9zL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTctMDktMTggIFBlciBBcm5lIFZvbGxhbiAgPHB2
b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1hcmsgZmFzdC9jc3MvZGlzcGxheS1jb250ZW50
cy1zdHlsZS11cGRhdGUuaHRtbCBhcyBhIGZhaWx1cmUgb24gV2luZG93cy4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXItdHlwZXMtaXMtaW5p
dGlhbGx5LWVtcHR5LW9uLWNvcHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkL2RhdGFUcmFuc2Zlci10eXBlcy1pcy1pbml0aWFsbHktZW1wdHktb24tY29weS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJiMGY2MGRlMDE2NGZmOTdjMGY1ZjhlMWU3ZDNmNzkx
YWU1NzE4YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9kYXRhVHJhbnNmZXItdHlwZXMtaXMtaW5pdGlhbGx5LWVtcHR5LW9uLWNvcHktZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIHRoYXQgRGF0YVRyYW5zZmVyJ3MgdHlwZXMgaXMg
aW5pdGlhbGx5IGVtcHR5IG9uIGNvcHkuIFRvIG1hbnVhbGx5IHRlc3QsIHByZXNzIHRoZSBidXR0
b24gYmVsb3cuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIEpTT04uc3Ry
aW5naWZ5KGV2ZW50LmNsaXBib2FyZERhdGEudHlwZXMpIGlzICJbXSIKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YVRyYW5zZmVyLXR5cGVzLWlzLWluaXRpYWxseS1l
bXB0eS1vbi1jb3B5Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YVRy
YW5zZmVyLXR5cGVzLWlzLWluaXRpYWxseS1lbXB0eS1vbi1jb3B5Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWU2YjI5YzI2NzgwNmYxNzM3NmFmYjQ0MDM2OWQ3ODIzMTU4ZDZhMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXItdHlwZXMtaXMt
aW5pdGlhbGx5LWVtcHR5LW9uLWNvcHkuaHRtbApAQCAtMCwwICsxLDM1IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+Cis8ZGl2IGlkPSJzb3Vy
Y2UiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgb25jb3B5PSJjaGVjayhldmVudCkiPmhlbGxvPC9k
aXY+Cis8YnV0dG9uIG9uY2xpY2s9InJ1blRlc3QoKSI+U3RhcnQgdGhlIHRlc3Q8L2J1dHRvbj4K
KzwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IERhdGFUcmFuc2Zlcidz
IHR5cGVzIGlzIGluaXRpYWxseSBlbXB0eSBvbiBjb3B5LiBUbyBtYW51YWxseSB0ZXN0LCBwcmVz
cyB0aGUgYnV0dG9uIGJlbG93LiIpOworanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9u
IGNoZWNrKGV2ZW50KSB7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdKU09OLnN0cmluZ2lm
eShldmVudC5jbGlwYm9hcmREYXRhLnR5cGVzKScsICdbXScpOworfQorCitmdW5jdGlvbiBydW5U
ZXN0KCkKK3sKKyAgICBjb25zdCBzb3VyY2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc291
cmNlJyk7CisgICAgc291cmNlLmZvY3VzKCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ1Nl
bGVjdEFsbCcsIGZhbHNlLCBudWxsKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnQ29weScs
IGZhbHNlLCBudWxsKTsKKyAgICBzb3VyY2UucGFyZW50Tm9kZS5zdHlsZS5kaXNwbGF5ID0gJ25v
bmUnOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgcnVuVGVzdCgpOworCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVi
b2FyZC9kYXRhVHJhbnNmZXItdHlwZXMtcGFzdGluZy1wbGFpbnRleHQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGFUcmFuc2Zlci10eXBlcy1wYXN0aW5n
LXBsYWludGV4dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmU5YjM0MGI0ZTFhNGNlNWJmOTMx
NjA0NWJiOTBjZDZjZWVjZTliOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRp
bmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXItdHlwZXMtcGFzdGluZy1wbGFpbnRleHQtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3RzIHRoYXQgRGF0YVRyYW5zZmVyJ3MgdHlwZXMg
Y29udGFpbnMgdGV4dC9wbGFpbiBidXQgbm90IG5vIGltYWdlIHR5cGVzIHdoZW4gcGFzdGluZyBh
IHBsYWluIHRleHQuIFRvIG1hbnVhbGx5IHRlc3QsIGNsaWNrIG9uIHRoZSBidXR0b24gYmVsb3cg
dGhlbiB0cmlnZ2VyIHBhc3RlIChDb21tYW5kK1Ygb3IgQ29udHJvbCtWKS4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgdHlwZXMuaW5jbHVkZXMoInRleHQvcGxhaW4iKSBp
cyB0cnVlCitQQVNTIHR5cGVzLmZpbmQoKHR5cGUpID0+IHR5cGUuaW5jbHVkZXMoInBuZyIpKSBp
cyB1bmRlZmluZWQuCitQQVNTIHR5cGVzLmZpbmQoKHR5cGUpID0+IHR5cGUuaW5jbHVkZXMoImpw
ZWciKSkgaXMgdW5kZWZpbmVkLgorUEFTUyB0eXBlcy5maW5kKCh0eXBlKSA9PiB0eXBlLmluY2x1
ZGVzKCJ0aWZmIikpIGlzIHVuZGVmaW5lZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YVRyYW5zZmVyLXR5cGVzLXBhc3RpbmctcGxhaW50ZXh0Lmh0bWwgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YVRyYW5zZmVyLXR5cGVzLXBhc3RpbmctcGxh
aW50ZXh0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTYwM2E2ZDk2N2E5ZWI5YmE4YzFmODA4NmIxM2RjNWEw
OGQ4MWI4NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9kYXRhVHJhbnNmZXItdHlwZXMtcGFzdGluZy1wbGFpbnRleHQuaHRtbApAQCAtMCwwICsxLDQ2
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlv
bigiVGVzdHMgdGhhdCBEYXRhVHJhbnNmZXIncyB0eXBlcyBjb250YWlucyB0ZXh0L3BsYWluIGJ1
dCBub3Qgbm8gaW1hZ2UgdHlwZXMgd2hlbiBwYXN0aW5nIGEgcGxhaW4gdGV4dC4gVG8gbWFudWFs
bHkgdGVzdCwgY2xpY2sgb24gdGhlIGJ1dHRvbiBiZWxvdyB0aGVuIHRyaWdnZXIgcGFzdGUgKENv
bW1hbmQrViBvciBDb250cm9sK1YpLiIpOworanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0
aW9uIGNoZWNrKGV2ZW50KSB7CisgICAgdHlwZXMgPSBldmVudC5jbGlwYm9hcmREYXRhLnR5cGVz
OworICAgIHNob3VsZEJlVHJ1ZSgndHlwZXMuaW5jbHVkZXMoInRleHQvcGxhaW4iKScpOworICAg
IHNob3VsZEJlVW5kZWZpbmVkKCd0eXBlcy5maW5kKCh0eXBlKSA9PiB0eXBlLmluY2x1ZGVzKCJw
bmciKSknKTsKKyAgICBzaG91bGRCZVVuZGVmaW5lZCgndHlwZXMuZmluZCgodHlwZSkgPT4gdHlw
ZS5pbmNsdWRlcygianBlZyIpKScpOworICAgIHNob3VsZEJlVW5kZWZpbmVkKCd0eXBlcy5maW5k
KCh0eXBlKSA9PiB0eXBlLmluY2x1ZGVzKCJ0aWZmIikpJyk7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NvbnRhaW5lcicpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CisgICAgZmluaXNo
SlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGNvbnN0IHNvdXJjZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzb3VyY2UnKTsKKyAgICBzb3VyY2UuZm9jdXMoKTsK
KyAgICBzb3VyY2UuY29udGVudERvY3VtZW50LmV4ZWNDb21tYW5kKCdzZWxlY3RBbGwnLCBmYWxz
ZSwgbnVsbCk7CisgICAgc291cmNlLmNvbnRlbnREb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScs
IGZhbHNlLCBudWxsKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGVzdGluYXRpb24n
KS5mb2N1cygpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZXN0aW5hdGlvbicpLnRl
eHRDb250ZW50ID0gJ05vdywgcGFzdGUgaGVyZSc7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQo
J3NlbGVjdEFsbCcsIGZhbHNlLCBudWxsKTsKKworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
J2J1dHRvbicpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CisgICAgc291cmNlLnN0eWxlLmRpc3Bs
YXkgPSAnbm9uZSc7CisKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgncGFzdGUnLCBmYWxzZSwg
bnVsbCk7Cit9CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPGRp
diBpZD0iY29udGFpbmVyIj4KKzxidXR0b24gb25jbGljaz0icnVuVGVzdCgpIj5Db3B5PC9idXR0
b24+PGJyPgorPGlmcmFtZSBpZD0ic291cmNlIiBvbmxvYWQ9IndpbmRvdy50ZXN0UnVubmVyICYm
IHJ1blRlc3QoKSIgc3JjPSIuLi9yZXNvdXJjZXMvdGV4dC1wYXN0ZWJvYXJkLWRhdGEudHh0Ij48
L2lmcmFtZT4KKzxkaXYgaWQ9ImRlc3RpbmF0aW9uIiBjb250ZW50ZWRpdGFibGU9InRydWUiIG9u
cGFzdGU9ImNoZWNrKGV2ZW50KSI+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAyZmYzZjczYWZh
M2ZlNzg3MjQ0OGFiMjU5ZDk5MjYyMWU4YjdmMzI3Li43Njc5YWRkNmZjMTc0NjI3ODRlYWZjMjZk
OWJhZTFjM2FkY2IyYTJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtMjIyNSwxOCArMjIyNSwxNCBAQCBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtd3Jh
cHBlZC1ibG9ja3F1b3RlLWludG8tbm9uYmxvY2txdW90ZS5odG1sIFsgRmFpbHVyZSBdCiAjIEZh
aWxpbmcgcGFzdGVib2FyZCB0byB0cmlhZ2UKIGVkaXRpbmcvcGFzdGVib2FyZC80MjQyMjkzLTEu
aHRtbCBbIEZhaWx1cmUgXQogZWRpdGluZy9wYXN0ZWJvYXJkLzU3ODA2OTctMi5odG1sIFsgRmFp
bHVyZSBdCi1lZGl0aW5nL3Bhc3RlYm9hcmQvY2FuLXJlYWQtaW4tY29weS1hbmQtY3V0LWV2ZW50
cy5odG1sIFsgRmFpbHVyZSBdCiBlZGl0aW5nL3Bhc3RlYm9hcmQvY2xpcGJvYXJkLWN1c3RvbURh
dGEuaHRtbCBbIEZhaWx1cmUgXQogZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktYmFja3NsYXNoLXdp
dGgtZXVjLmh0bWwgWyBGYWlsdXJlIF0KIGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LWluLXBhc3N3
b3JkLWZpZWxkLmh0bWwgWyBGYWlsdXJlIF0KIGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LWluc2lk
ZS1oMS1wcmVzZXJ2ZXMtaDEuaHRtbCBbIEZhaWx1cmUgXQogZWRpdGluZy9wYXN0ZWJvYXJkL2Nv
cHktdGV4dC13aXRoLWJhY2tncm91bmRjb2xvci5odG1sIFsgRmFpbHVyZSBdCiBlZGl0aW5nL3Bh
c3RlYm9hcmQvY29weS10d28tcGFzdGVib2FyZC10eXBlcy1ib3RoLXdvcmsuaHRtbCBbIEZhaWx1
cmUgXQotZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktd2l0aG91dC1zZWxlY3Rpb24uaHRtbCBbIEZh
aWx1cmUgXQogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMuaHRtbCBbIEZh
aWx1cmUgXQogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGFUcmFuc2Zlci1zZXREYXRhLWdldERhdGEu
aHRtbCBbIEZhaWx1cmUgXQotZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1nZXRkYXRh
LXBsYWludGV4dC5odG1sIFsgRmFpbHVyZSBdCi1lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5z
ZmVyLWl0ZW1zLWNvcHktcGxhaW50ZXh0Lmh0bWwgWyBGYWlsdXJlIF0KIGVkaXRpbmcvcGFzdGVi
b2FyZC9kaXNwbGF5LWJsb2NrLW9uLXNwYW5zLmh0bWwgWyBGYWlsdXJlIF0KIGVkaXRpbmcvcGFz
dGVib2FyZC9lbWFjcy1jdHJsLWstd2l0aC1tb3ZlLmh0bWwgWyBGYWlsdXJlIF0KIGVkaXRpbmcv
cGFzdGVib2FyZC9lbWFjcy1jdHJsLWsteS0wMDEuaHRtbCBbIEZhaWx1cmUgXQpAQCAtMjI2MSw3
ICsyMjU3LDYgQEAgZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXBsYWludGV4dC11c2VyLXNlbGVj
dC1ub25lLmh0bWwgWyBGYWlsdXJlIF0KIGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1zYW5pdGl6
ZS1jcmFzaC0xLmh0bWwgWyBGYWlsdXJlIF0KIGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1zYW5p
dGl6ZS1jcmFzaC0yLmh0bWwgWyBGYWlsdXJlIF0KIGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10
ZXh0LWV2ZW50cy5odG1sIFsgRmFpbHVyZSBdCi1lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGluZy1l
bXB0eS1odG1sLWZhbGxzLWJhY2stdG8tdGV4dC5odG1sIFsgRmFpbHVyZSBdCiBlZGl0aW5nL3Bh
c3RlYm9hcmQvc21hcnQtcGFzdGUtMDAxLmh0bWwgWyBGYWlsdXJlIF0KIGVkaXRpbmcvcGFzdGVi
b2FyZC9zbWFydC1wYXN0ZS0wMDIuaHRtbCBbIEZhaWx1cmUgXQogZWRpdGluZy9wYXN0ZWJvYXJk
L3NtYXJ0LXBhc3RlLTAwMy5odG1sIFsgRmFpbHVyZSBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>